clone

tiny dependency-free nostr libraries for plain html, each under 5kb and named for an element. public domain

Build the site under a path when forge deploys it

cat committed d251df5
forge site deploy sets FORGE_SITE_URL, and the absolute links in llms.txt now
use it; without it they still point at GitHub Pages. Every other link on the
site is relative, so it works under any path. .forge/sites declares the site
so it deploys to https://pages.src.rest/sites/cat/nobel/site/.
commit
d251df52d0f4244fbd3392d51f65abe5d4f3fbd7
parent
8d46caab10a71467aa4618edbe0ab09c7652352d
author
cat <admin@dev.site>
ci
✓ passed in 35s, signed by cat
ci attestation
forge-attestation 1
type ci
commit d251df52d0f4244fbd3392d51f65abe5d4f3fbd7
tree 344fdc3f958edda31d08107dcd37f3a2aa3fce0f
script .forge/ci 636eb49ec97b86ff6e331b1f4543b958519cc728
result pass
exit 0
started 2026-10-17T22:57:13Z
duration 35s
runner (not shown here; refs/notes/ci has it)
system Darwin 25.5.0 arm64
env host
log sha256:70dc5ef02f985848db9ee953f4f84e0d6e2e6aed63b1bbbc3a3801ae01f73e4b 195 lines
|running 1 test from ./test/lanthanides.test.js
|lanthanides: praseodymium presets, cerium styles ...
|------- post-test output -------
|nobel: http://localhost:57865/demo/
|----- post-test output end -----
|  an empty npr-card gets exactly the documented markup ... ok (4ms)
|  hand-writing markup() gives the same result as the preset ... ok (52ms)
|  a card with hand-written children is left alone ... ok (11ms)
|  npr-avatar shows the identicon before a picture ... ok (5ms)
|  a published kind 0 fills cards, chips and avatars ... ok (43ms)
|  after reload radon loads the profile from the relay ... ok (74ms)
|  a broken picture falls back to the identicon ... ok (304ms)
|  npr-copy copies and toggles npr-copied ... ok (1s)
|  cerium injects one layered, zero-specificity style ... ok (3ms)
|  page CSS overrides a themed property ... ok (1ms)
|  nce-bare skips the style but keeps cerium.css ... ok (56ms)
|lanthanides: praseodymium presets, cerium styles ... ok (2s)
|running 1 test from ./test/lithium.test.js
|lithium reconciles with bindws negentropy ... ignored (0ms)
|running 0 tests from ./test/live.test.js
|running 3 tests from ./test/mercury.test.js
|mercury: NIP-98 requests validate with nostr-tools ...
|  post JSON: u, method, payload match; nostr-tools' JSON payload check passes ... ok (33ms)
|  get puts the body in the signed query string and has no payload ... ok (28ms)
|  string, Blob, bytes, URLSearchParams and FormData bodies hash the bytes sent ... ok (72ms)
|  fetch returns the Response; verbs throw on errors with status ... ok (28ms)
|  nhy:config can swap the signer; cancelling nhg:sign aborts and fires nhg:error ... ok (18ms)
|  Blossom upload, media, list and remove ... ok (75ms)
|mercury: NIP-98 requests validate with nostr-tools ... ok (257ms)
|mercury: fixi requests under nhg-sign carry NIP-98 ...
|  a POST button signs its multipart body ... ok (104ms)
|  a PUT form signs, with UTF-8 fields ... ok (432ms)
|  nhg-sign on an ancestor signs a GET with the query in u ... ok (416ms)
|  without nhg-sign the request is not signed ... ok (417ms)
|  Blossom upload from the page ... ok (14ms)
|mercury: fixi requests under nhg-sign carry NIP-98 ... ok (1s)
|mercury: tinyrelay NIP-86 and Blossom ... ignored (0ms)
|running 4 tests from ./test/neon.test.js
|npub, nsec and note match nostr-tools ... ok (1ms)
|nprofile, nevent and naddr cross-decode with nostr-tools ... ok (1ms)
|decode rejects bad checksums ... ok (427µs)
|rich escapes and links ... ok (449µs)
|running 1 test from ./test/oganesson.test.js
|oganesson: presence, typing, cursors, nothing stored ...
|------- post-test output -------
|nobel: http://localhost:57912/demo/
|----- post-test output end -----
|  each sees the other present at once, not themselves ... ok (928ms)
|  a status change replaces the entry and fills {status} ... ok (71ms)
|  typing shows, refreshes in place, and stops when emptied ... ok (3s)
|  typing expires after its 5s ttl ... ok (7s)
|  cursors carry {x} and {y} on the custom kind ... ok (133ms)
|  a hidden page goes offline at once and returns when visible ... ok (70ms)
|  argon stores none of it ... ok (17ms)
|oganesson: presence, typing, cursors, nothing stored ... ok (12s)
|
|ok | 34 passed (61 steps) | 0 failed | 3 ignored (34s)
|
|Task bundle deno run -A scripts/bundle.ts
|dist/nobel.js 56866 raw | dist/nobel.min.js 41791 min, 15495 br

Signature: good, cat

2 files changed, +5 -1
A.forge/sites2++
Mscripts/site.ts4+++-
A .forge/sites +2 -0
M scripts/site.ts +3 -1