With the steps in panels, a dead invite link left the "join forge" head strip with nothing under it and the refusal below the panel, which read as a broken box. The refusal now takes the form's place in the panel.
- commit
- f5a25f8a943708dc2fb436e252f2bb31c2625d16
- parent
- 81106ae94f4e75d932621ed91f53a611282893e3
- author
- cat <admin@dev.site>
- ci
- ✓ passed in 98s, signed by cat
- kind
- fix risk score 1.8 of 3, Jev's estimate
- review
- #22 A dead invite's refusal in its panel
ci attestation
forge-attestation 1 type ci commit f5a25f8a943708dc2fb436e252f2bb31c2625d16 tree d8a5bd95b9bbdb9999c220b6c84a040ca4d0eec2 script .forge/ci 2dbcda6e044dc4b05503abde8369e2528413d3c7 result pass exit 0 started 2026-10-19T04:50:09Z duration 98s runner (not shown here; refs/notes/ci has it) system Darwin 25.5.0 arm64 env host log sha256:14fed7420d099f34a01c0122148609b9bc49056dc58fc95445fd0cbfc61c56ef 283 lines |pushed wip/i18n |8a038ab running .forge/ci: greet.sh: say what it is | | sh: /bin/sh | | ok greet |8a038ab pass in 0s, signed |pushed main |remote: review #4: /dami/greet/reviews/4/ |pushed wip/i18n |364efaf running .forge/ci: wave at the world | | sh: /bin/sh | | FAIL greet : got 'hello, world o/', want 'hello, world' |364efaf fail in 0s, signed |forge: 1 commit(s) did not pass |remote: review #6: /dami/greet/reviews/6/ |pushed ana/wave |0b79fdc running .forge/ci: update the test for the wave | | sh: /bin/sh | | ok greet |0b79fdc pass in 0s, signed |remote: review #6: /dami/greet/reviews/6/ |pushed ana/wave |warning: You appear to have cloned an empty repository. |site home: deployed c16ac6c -> /sites/ana/dotfiles/home/ |created ana/notes |remote: review #1: /ana/notes/reviews/1/ |pushed ana/todo |landing #1 A todo list: ana/todo -> main |eb212ea running .forge/ci: web, server and Python versions of greet | | sh: /bin/sh | | ok greet |eb212ea pass in 0s, signed |pushed main |d3556cc running .forge/ci: messages: notes for the later regions | | sh: /bin/sh | | ok greet |d3556cc pass in 0s, signed |remote: review #7: /dami/greet/reviews/7/ |pushed dami/regions |created dami/forge |warning: You appear to have cloned an empty repository. |site guide: mkdir -p guide/fonts && cp site/assets/fonts/*.woff2 guide/fonts/ |site guide: deployed ff5d122 -> /sites/dami/forge/guide/ |(node:89501) ExperimentalWarning: stripTypeScriptTypes is an experimental feature and might change at any time |(Use `node --trace-warnings ...` to show where the warning was created) |built ana/dotfiles in 0s -> /var/folders/b4/mv8w4c8j0zj0_mldppxdbdw00000gn/T/forge-ci.rgYZYv/wt/demo/root/.forge/www |(node:89656) ExperimentalWarning: stripTypeScriptTypes is an experimental feature and might change at any time |(Use `node --trace-warnings ...` to show where the warning was created) |built ana/notes in 1s -> /var/folders/b4/mv8w4c8j0zj0_mldppxdbdw00000gn/T/forge-ci.rgYZYv/wt/demo/root/.forge/www |(node:89832) ExperimentalWarning: stripTypeScriptTypes is an experimental feature and might change at any time |(Use `node --trace-warnings ...` to show where the warning was created) |built dami/forge in 1s -> /var/folders/b4/mv8w4c8j0zj0_mldppxdbdw00000gn/T/forge-ci.rgYZYv/wt/demo/root/.forge/www |(node:89997) ExperimentalWarning: stripTypeScriptTypes is an experimental feature and might change at any time |(Use `node --trace-warnings ...` to show where the warning was created) |built dami/greet in 2s -> /var/folders/b4/mv8w4c8j0zj0_mldppxdbdw00000gn/T/forge-ci.rgYZYv/wt/demo/root/.forge/www |(node:90700) ExperimentalWarning: stripTypeScriptTypes is an experimental feature and might change at any time |(Use `node --trace-warnings ...` to show where the warning was created) |built - in 0s -> /var/folders/b4/mv8w4c8j0zj0_mldppxdbdw00000gn/T/forge-ci.rgYZYv/wt/demo/root/.forge/www |235 of 235 pages render the same without 11ty |guide: 8 files, links ok |ok
Signature: good, cat
| M | site/ | 5 | +++-- |
@@ -129,8 +129,9 @@ interface WebAuthn {
129129 join.disabled = false;130130 key.focus();131131 }, (e: Error) => {132- // A dead link: nothing to fill in.133- document.getElementById('invite-form')!.hidden = true;132+ // A dead link: nothing to fill in, and the refusal in its panel.133+ const form = document.getElementById('invite-form')!;134+ if (status) form.replaceChildren(status);134135 say(e.message, true);135136 });136137 join.addEventListener('click', async () => {