- commit
- 405cc8922e99bb7b3d7cd79223e4b5820c965d5a
- parent
- 18f36c258544798926347c1bfabdae0b979a76ea
- author
- cat <admin@dev.site>
- ci
- ✓ passed in 75s, signed by cat
- kind
- chore risk score 1.3 of 3, Jev's estimate
- review
- #13 A design system: tokens, three fonts, no caps, real controls
ci attestation
forge-attestation 1 type ci commit 405cc8922e99bb7b3d7cd79223e4b5820c965d5a tree 40e482b4837b5903f930b653ffe44e5469eeff0b script .forge/ci 38df37c0d5a6382f60569079a0dd821094e37e4a result pass exit 0 started 2026-10-19T02:55:22Z duration 75s runner (not shown here; refs/notes/ci has it) system Darwin 25.5.0 arm64 env host log sha256:25a792fd406b863213bd2ef581ba77a44ae2b0cc717c266868d35c67ba078737 253 lines |remote: review #4: /dami/greet/reviews/4/ |pushed wip/i18n |9ad6211 running .forge/ci: greet.sh: say what it is | | sh: /bin/sh | | ok greet |9ad6211 pass in 0s, signed |pushed main |remote: review #4: /dami/greet/reviews/4/ |pushed wip/i18n |c91d5ad running .forge/ci: wave at the world | | sh: /bin/sh | | FAIL greet : got 'hello, world o/', want 'hello, world' |c91d5ad fail in 1s, signed |forge: 1 commit(s) did not pass |remote: review #6: /dami/greet/reviews/6/ |pushed ana/wave |faf335e running .forge/ci: update the test for the wave | | sh: /bin/sh | | ok greet |faf335e 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 e51edc7 -> /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 |39c017b running .forge/ci: web, server and Python versions of greet | | sh: /bin/sh | | ok greet |39c017b pass in 0s, signed |pushed main |109a293 running .forge/ci: messages: notes for the later regions | | sh: /bin/sh | | ok greet |109a293 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: deployed 683d359 -> /sites/dami/forge/guide/ |(node:68463) 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.LimtiJ/wt/demo/root/.forge/www |(node:68587) 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.LimtiJ/wt/demo/root/.forge/www |(node:68724) 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.LimtiJ/wt/demo/root/.forge/www |(node:68854) 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 1s -> /var/folders/b4/mv8w4c8j0zj0_mldppxdbdw00000gn/T/forge-ci.LimtiJ/wt/demo/root/.forge/www |(node:69538) 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.LimtiJ/wt/demo/root/.forge/www |226 of 226 pages render the same without 11ty |guide: 4 files, links ok |ok
Signature: good, cat
| M | lib/ | 11 | +++++------ |
| D | site/ | bin | |
| D | site/ | bin | |
| M | site/ | 16 | ++-------------- |
@@ -1,7 +1,6 @@
11 // Assets under content-hashed names, /assets/style.<hash>.css, so browsers2-// can cache them forever: the stylesheet, the logo, the page textures, the3-// vendored scripts, our4-// TypeScript with its types stripped, mermaid, sqlite-wasm (its script and2+// can cache them forever: the stylesheet, the logo, the vendored scripts,3+// our TypeScript with its types stripped, mermaid, sqlite-wasm (its script and54 // its .wasm, for code search), and @simplewebauthn/browser (passkeys, on65 // the sign-in page). 11ty's bundle plugin76 // writes the templates' own CSS next to them, also named by a hash.@@ -43,7 +42,7 @@ export interface Asset {
4342 data: Buffer;4443 }4544 46-// By short name: style, logo, paper, paper-dark, fixi, ssexi, diffs, keys, live,45+// By short name: style, logo, fixi, ssexi, diffs, keys, live,4746 // search, query, codesearch, login, ui, mermaid, sqlite3, sqlite3wasm, webauthn.4847 export type Assets = Record<string, Asset>;4948 @@ -59,8 +58,8 @@ export function assets(): Assets {
5958 if (memo?.key === key) return memo.assets;6059 // Our scripts import each other as './query.ts', which Node and tsc read6160 // as it is; shipped, that is the other file's hashed name, so a script's62- // name changes with what it imports. The stylesheet's url(./paper.webp)63- // becomes the image's hashed name the same way.61+ // name changes with what it imports. A url(./x.webp) in the stylesheet62+ // becomes that file's hashed name the same way.6463 const local = (base: string, dep: string): Asset => {6564 const d = files.find(([, b, p]) => b === dep && path.dirname(p) === src);6665 if (!d) throw new Error(`${base} links ./${dep}, which is not in site/assets`);Binary file.
Binary file.
@@ -3,8 +3,7 @@
33 template or include ({% css %}), and reaches only the pages that use it. */44 /* The look: square corners, content on the page between 1px rules, labels55 in small uppercase monospace, one accent (#3148F6) for links, the current6- tab's bar, focus and primary actions, and a faint paper texture behind it7- all, the same paper in dark mode. */6+ tab's bar, focus and primary actions, on a plain page. */87 :root {98 --bg: #e9e9e9;109 --fg: #1c2127;@@ -31,10 +30,6 @@
3130 --fail: #c7162b;3231 --warn: #b46a00;3332 --merged: #3148f6;34- --texture: url(./paper.webp);35- --texture-size: 448px 300px;36- --texture-blend: multiply;37- --texture-opacity: 0.35;3833 --sans: "Ubuntu", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;3934 --mono: ui-monospace, SFMono-Regular, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;4035 color-scheme: light dark;@@ -63,19 +58,12 @@
6358 --fail: #f0606e;6459 --warn: #e3a33b;6560 --merged: #8e9bff;66- --texture: url(./paper-dark.webp);67- --texture-blend: screen;68- --texture-opacity: 0.32;69- }61+ }7062 }7163 7264 *, ::before, ::after { box-sizing: border-box; border-radius: 0; }7365 html { -webkit-text-size-adjust: 100%; }7466 body { margin: 0; background: var(--bg); color: var(--fg); font: 15px/1.5 var(--sans); }75-/* The texture: CC0 scans (ambientCG), fixed to the window behind the76- content, so scrolling never repaints it. */77-body::before { content: ''; position: fixed; inset: 0; z-index: -1; pointer-events: none; background: var(--texture) 0 0 / var(--texture-size) repeat; mix-blend-mode: var(--texture-blend); opacity: var(--texture-opacity); }78-@media (prefers-reduced-transparency: reduce) { body::before { display: none; } }7967 a { color: var(--link); text-decoration: none; }8068 a:hover { color: var(--deep); text-decoration: underline; }8169 :focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }