From d3738824a1a5f7db392ba1d50004e50f750d65a2 Mon Sep 17 00:00:00 2001 From: Robert Blust Date: Sat, 24 Oct 2026 18:42:43 +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:og, npm run og:check, npm run sitemap:check, npm run model:check, npm run pages:check, npm run api:check, npm run pin:check, talks/intro/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) --- api/og.sha | 2 +- billing/og.sha | 2 +- chat.css | 4 +- chat.js | 433 +++++++++++++++++++++++-- model/og.sha | 2 +- og.sha | 2 +- package-lock.json | 6 +- package.json | 2 +- principles/og.sha | 2 +- privacy/og.sha | 2 +- problems/og.sha | 2 +- processes/og.sha | 2 +- processes/pictures/answering.sha | 2 +- processes/pictures/contribution.sha | 2 +- processes/pictures/deciding.sha | 2 +- processes/pictures/delivery.sha | 2 +- processes/pictures/feature-request.sha | 2 +- processes/pictures/narrating.sha | 2 +- surfaces/og.sha | 2 +- talks/intro/og.sha | 2 +- talks/og.sha | 2 +- 21 files changed, 430 insertions(+), 49 deletions(-) diff --git a/api/og.sha b/api/og.sha index 50d955d..f8378eb 100644 --- a/api/og.sha +++ b/api/og.sha @@ -1 +1 @@ -7f89701236e9f0dd971c0d4918f4fe8147cdaaf6d41f150ddffba01b168e8c57 +aa92a701a2a5275ab72d26f86d51752097b8a99dff54133dbdac5d08fb2df74e diff --git a/billing/og.sha b/billing/og.sha index a03d077..bc7b11a 100644 --- a/billing/og.sha +++ b/billing/og.sha @@ -1 +1 @@ -1250801f73db9fda8d674e1db6b61b021aa5bc4d1fd75b2048aaa1c792e05415 +3c3795fd14111de07c07addf48e7794a5407f62cfef6ad2092cacb75b2c97530 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: +// +//