From 655fef3c6f11f2321c2e6e030b8e919de99e8e5d Mon Sep 17 00:00:00 2001 From: Robert Blust Date: Sat, 24 Oct 2026 18:32:05 +0200 Subject: [PATCH] The site takes design 0.158.0 The release adds sign-in commands to the chat panel for a tag naming an identity service. This site's chat tag names none yet, so nothing changes for its visitors; chat.js and chat.css are what the sync rewrites, and the derived picture and card hashes follow them. Verified: npm run design, npm run pages, npm run pictures, npm run og, npm run sitemap, npm run design:check, npm run test:dupes, npm run test:cost, npm run test:build, npm run test:og, npm run pages:check, npm run pin:check, npm run sitemap:check, npm run og:check, npm run model:check, python3 -m unittest discover -s talks/deciding-well, ./tts/generate.py --dry-run, design serve with npm run verify and design links, sh conventions/conventions-check Process: Delivery Phase: Implement Track: Code Co-Authored-By: Claude Opus 5.5 (1M context) --- blog/deciding-well-solved/og.sha | 2 +- blog/og.sha | 2 +- blog/one-question-answered/og.sha | 2 +- chat.css | 4 +- chat.js | 433 ++++++++++++++++++++++++++++-- ideas/og.sha | 2 +- model/og.sha | 2 +- og.sha | 2 +- package-lock.json | 6 +- package.json | 2 +- principles/og.sha | 2 +- privacy/og.sha | 2 +- processes/og.sha | 2 +- processes/pictures/answering.sha | 2 +- processes/pictures/deciding.sha | 2 +- processes/pictures/delivery.sha | 2 +- processes/pictures/narrating.sha | 2 +- surfaces/og.sha | 2 +- talks/deciding-well/cost/og.sha | 2 +- talks/deciding-well/og.sha | 2 +- talks/essential-complexity/og.sha | 2 +- talks/mental-model/og.sha | 2 +- talks/og.sha | 2 +- timeline/og.sha | 2 +- 24 files changed, 433 insertions(+), 52 deletions(-) diff --git a/blog/deciding-well-solved/og.sha b/blog/deciding-well-solved/og.sha index c33016c..99f7f7b 100644 --- a/blog/deciding-well-solved/og.sha +++ b/blog/deciding-well-solved/og.sha @@ -1 +1 @@ -3274f855772bd4fcf795724a133bd0d12b2b2b4556527921387f8e7605796e79 +52ac0d8203cedf468e593984c32c71433235a131bc1d28f7673db961e4bf24d7 diff --git a/blog/og.sha b/blog/og.sha index d1ddfae..7b51d4b 100644 --- a/blog/og.sha +++ b/blog/og.sha @@ -1 +1 @@ -fce80270adc14503fff77ff3140a56d4424a989109ba53c5629e536a19157a34 +d8d2d0236d1e96fd2d60a17d1cec7b5f67d23278b2f1d263f3853fe36704d72c diff --git a/blog/one-question-answered/og.sha b/blog/one-question-answered/og.sha index 06060c9..d3eda9a 100644 --- a/blog/one-question-answered/og.sha +++ b/blog/one-question-answered/og.sha @@ -1 +1 @@ -4a6701b8391793f15187417f7bc9ce80cdcf5e222cf1fba5c2ca7b25d24da434 +257e18bf075482157c293ea9b3a6db58e70dc05c1e64cb27c6d3d73f2a2183c3 diff --git a/chat.css b/chat.css index d941736..29d0689 100644 --- a/chat.css +++ b/chat.css @@ -153,6 +153,8 @@ html[data-chat-waiting]::after{content:"ask \00b7 " attr(data-chat-waiting);pos .rbchat-cites a.rbchat-cite{color:var(--c-mid);text-decoration:none;border-bottom:1px solid transparent} .rbchat-cites a.rbchat-cite:hover,.rbchat-cites a.rbchat-cite:focus-visible{border-bottom-color:var(--c-mid)} .rbchat-cites{margin:.5rem 0 0;font-size:.78rem;line-height:1.7;color:var(--t-dim)} +/* The model and effort that answered, at the end of that line, kept whole. */ +.rbchat-by{white-space:nowrap} /* The site's icon at the head of the line, once, and GitHub's mark after each title: quiet until pointed at, and both sized so the line stays one line on a phone. */ .rbchat-from{width:16px;height:16px;vertical-align:-3px;margin-right:.4rem} @@ -306,7 +308,7 @@ figure.rbchat-diagram[data-diagram]{border-top:0;padding-top:0;margin:1.1rem 0 1 .rbchat-cur{display:inline-block;width:.6em;height:1.1em;vertical-align:-.2em;background:var(--t-ink);animation:rbchat-blink 1.1s steps(1) infinite} @keyframes rbchat-blink{50%{opacity:0}} @media (prefers-reduced-motion:reduce){.rbchat-cur{animation:none}} -.rbchat-help{margin:.4rem 0 0;color:var(--t-dim)} +.rbchat-help,.rbchat-hint{margin:.4rem 0 0;color:var(--t-dim)} .rbchat-help p{margin:0;display:grid;grid-template-columns:7ch 1fr} .rbchat-help-k{color:var(--t-accent)} /* Heard, not seen: the finished answer, said once to a screen reader. */ diff --git a/chat.js b/chat.js index 2ea2913..8fa98bc 100644 --- a/chat.js +++ b/chat.js @@ -60,7 +60,13 @@ // rbChat.diagramCaption(d, lang) a picture's caption in the page's language // rbChat.oriented(source, width) a flow turned top to bottom in a panel narrower than a phone's // rbChat.lockupOf(doc) the header's mark and name, split as the page splits it, or null -// rbChat.command(text) "new", "help" or null, for the command line's own words +// rbChat.command(text) "new", "help", "login", "logout", "model", "effort" or null, for the command line's own words +// rbChat.CHAT_MODELS, CHAT_EFFORTS the models a signed-in reader may pick and the efforts, chat-server's table +// rbChat.grantedModels(claims, org, prefix) the model ids the sign-in's roles grant in this org, Sonnet 5 first +// rbChat.authorizeUrl(site, challenge, state, redirect) where the sign-in at ZITADEL begins, with PKCE +// rbChat.returnOf(href) the { code, state } a sign-in returns to the page with, or null +// rbChat.lapsed(token, now) whether the token's exp has passed (now in ms), or it cannot be read +// rbChat.claimsOf(token) a JWT's payload, read as UTF-8 JSON, or null // rbChat.picked(text, rows) the row a bare number picks, or the text as typed // rbChat.tryPick(facts, random) what an opening offers after the meta-model, two of what the model holds // rbChat.connected(entities, edges) the systems a landscape row may name @@ -89,12 +95,37 @@ // // On a desk the panel is sized by its top left corner and the size is kept in the tab beside // the conversation, under `chat-size`; on a phone it is the whole screen and has no corner. +// +// A tag that names the site's identity service lets a reader sign in from the command line: +// +//