Repository navigation
queen: a WIDGETS tab of shareable recordings and players, from specs/widgets/gallery.t27 - #1374
Merged
Merged
Conversation
…widgets/gallery.t27 The board gets a twenty-first view on v. specs/widgets/gallery.t27 names 18 widgets on three shelves (FPGA bench, compiler, agent game): 13 terminal recordings, 4 X-player backends and the WARS tab. It also lists 7 widgets FPGA engineers use elsewhere and t27.ai does not draw yet, shown only as ideas with the data each would read. scripts/widgets-from-spec.mjs compiles the spec with the vendored compiler and runs its test blocks. It reads every widget's own page for og:title, og:description and og:image, so the gallery cannot claim what the page does not. A missing page, a missing card file or a cast with a non-zero exit code fails the build. Each card gives a lazy iframe preview on click, iframe and Markdown embed code, and X and Telegram links that open the reader's own composer. Nothing is posted. Gates: check:widgets and test:widgets-spec in website-checks. The rail key strings move to 1234567890tprbwmlxkgv. QueenWidgets.css is grounded in the contrast gate, and .queen-widgets is declared as a scroll owner in the viewport gate. Closes #1373 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
X Brain Health CheckScore: 100.0/100 X Brain is above merge threshold |
The WIDGETS view put the last command 22 px under COLLAPSE at 1272x806 and 10 px under it at 1280x600 (viewport contract, CI). Tighter rows and gaps in the two short-height rules give the space back. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
🧪 Brain Stress Test ResultsTests: 261/261 passed, 0 leaked |
github-actions Bot
added a commit
that referenced
this pull request
Oct 4, 2026
queen: a WIDGETS tab of shareable recordings and players, from specs/widgets/gallery.t27 (#1374) * queen: a WIDGETS tab of shareable recordings and players, from specs/widgets/gallery.t27 The board gets a twenty-first view on v. specs/widgets/gallery.t27 names 18 widgets on three shelves (FPGA bench, compiler, agent game): 13 terminal recordings, 4 X-player backends and the WARS tab. It also lists 7 widgets FPGA engineers use elsewhere and t27.ai does not draw yet, shown only as ideas with the data each would read. scripts/widgets-from-spec.mjs compiles the spec with the vendored compiler and runs its test blocks. It reads every widget's own page for og:title, og:description and og:image, so the gallery cannot claim what the page does not. A missing page, a missing card file or a cast with a non-zero exit code fails the build. Each card gives a lazy iframe preview on click, iframe and Markdown embed code, and X and Telegram links that open the reader's own composer. Nothing is posted. Gates: check:widgets and test:widgets-spec in website-checks. The rail key strings move to 1234567890tprbwmlxkgv. QueenWidgets.css is grounded in the contrast gate, and .queen-widgets is declared as a scroll owner in the viewport gate. Closes #1373 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * queen: twenty rail commands fit above COLLAPSE at 1272x806 and 1280x600 The WIDGETS view put the last command 22 px under COLLAPSE at 1272x806 and 10 px under it at 1280x600 (viewport contract, CI). Tighter rows and gaps in the two short-height rules give the space back. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #1373.
The Queen board gains a twenty-first view, WIDGETS, on key
v. It gathers what of t27 a person can lift out and share: 13 terminal recordings of real bench and compiler commands, 4 X-player backends, and the WARS tab. Each card has a preview on click, iframe and Markdown embed code, and X and Telegram links.One source.
specs/widgets/gallery.t27names the widgets, shelves and hooks.scripts/widgets-from-spec.mjscompiles it with the vendored compiler and runs its 6 test blocks. It reads each widget's own page forog:title,og:descriptionandog:image, so the gallery cannot say what the page does not. A missing page, a missing card file, or a cast with a non-zero exit code fails the build.Shelves:
Ideas, not built: placement map, LUT/FF/BRAM bars, slack waterfall, bitstream diff, test waveforms, GF16 and ternary calculator, race the bee. Each is shown with the data it would read, never as a working widget.
Posts nothing. Share links open the reader's own composer.
Previews name
index.htmlexplicitly. In the dev server, a directory URL answered with the app shell, so the first preview showed the landing page.{ "version": 1, "head_sha": "4ebecd79e9ff42734ed163e4026bbd330ee4b713", "summary": "The Queen board gains a WIDGETS view on key v: 18 shareable recordings, players and a tab, each with a preview, embed code and share links, generated from specs/widgets/gallery.t27. Every title and card is read from the widget's own page.", "changes": [ "specs/widgets/gallery.t27 (new) names 18 widgets on three shelves, why each is worth sharing, and 7 ideas not built, with 6 test blocks.", "scripts/widgets-from-spec.mjs (new) compiles the spec, runs its tests and reads og:title, og:description and og:image from each page; a missing page or a cast with a non-zero exit code fails.", "src/components/QueenWidgets.tsx and .css (new) draw the gallery: shelf filter, lazy iframe preview on click, iframe and Markdown embed code, X and Telegram links that open the reader's own composer.", "queenHud.ts, queenModules.ts and Queen.tsx add the twenty-first view on v with EN and RU copy and its own rail door.", "Contracts: rail keys move to 1234567890tprbwmlxkgv; QueenWidgets.css is grounded in the contrast gate; .queen-widgets is a declared scroll owner and a probed view in the viewport gate.", "package.json gets check:widgets and test:widgets-spec, the generator joins prebuild, and website-checks runs both." ], "tests": [ { "command": "npm --prefix apps/website run check:widgets", "result": "18 widgets in 3 categories, 7 ideas not built; spec tests 6, asserts 16, all hold; generated files up to date", "status": "passed", "evidence": "Local run on this branch before the commit." }, { "command": "npm --prefix apps/website run test:widgets-spec", "result": "5 tests, 5 pass, 0 fail", "status": "passed", "evidence": "node --test output, local run on this branch." }, { "command": "npm --prefix apps/website run check:agents && npm --prefix apps/website run check:tri", "result": "Queen views 21, modules 21, keys 1234567890tprbwmlxkgv; TRI screens contract PASS", "status": "passed", "evidence": "Local run on this branch." }, { "command": "npm --prefix apps/website run check:queen-contrast && npm --prefix apps/website run check:queen-spec-sync && npm --prefix apps/website run check:subpath-urls", "result": "contrast worst 5.39:1 over 109 grounds; spec sync PASS (26 checks); subpath-safe URLs ok", "status": "passed", "evidence": "Local run on this branch." }, { "command": "npm --prefix apps/website run typecheck:ratchet", "result": "179 errors across 26 files, equal to the baseline, no file gained errors", "status": "passed", "evidence": "Local run after the tab widget shape was fixed." }, { "command": "Browser check of #/queen?tab=widgets in EN and RU at desktop width and at 390x844", "result": "18 cards, no horizontal overflow at 390px; previews of term/x7-board and the hello_world player load their own pages; the shelf filter works", "status": "passed", "evidence": "Vite dev server on localhost, DOM and screenshots read in the browser pane." }, { "command": "npm --prefix apps/website run check:queen-viewport", "result": "skipped locally: no Chrome on this machine; CI runs it", "status": "not_run", "evidence": "The gate printed 'no Chrome found'; the widgets view was added to its probed VIEWS." } ], "limitations": [ "The seven ideas are not widgets: placement map, resource bars, slack waterfall, bitstream diff, test waveforms, GF16 calculator and race the bee are listed with the data each would read, and none is drawn.", "The words of the view itself (EN and RU labels) live in QueenWidgets.tsx, because specs are English-only; every widget's title and line come from its page.", "The WARS tab embed points at the board with embed=1; whether a third-party site may frame app.t27.ai depends on its headers, which this PR does not change.", "Nothing is posted anywhere. Share links open the reader's own X or Telegram composer." ], "tags": [ "t27", "FPGA", "Widgets", "QueenBoard" ], "blog": { "title": "A widget gallery for FPGA engineers, generated from a t27 spec", "summary": "The Queen board has a WIDGETS tab: real bench recordings and the in-browser compiler, each with a preview, an iframe and a README embed, read from the widget's own page so the gallery cannot claim more than the page does.", "outline": [ "Why a gallery: fifteen recordings and four player pages existed on t27.ai, each with a share page, and nobody could find them in one place or copy embed code for a README.", "The spec specs/widgets/gallery.t27 names each widget, its shelf and the reason to share it, and the generator reads the title, line and card from the widget's own page.", "A widget whose page is missing, whose card file is gone, or whose recorded command exited non-zero fails the build, so the gallery only shows things that worked.", "Each card gives a live preview on a click, iframe and Markdown embed code and share links that open the reader's own composer; the tab itself posts nothing.", "What FPGA engineers draw in the browser elsewhere (EDA Playground, Makerchip, DigitalJS, Surfer, WaveDrom) and t27.ai does not yet, listed as seven ideas with the data each would read." ] } }🤖 Generated with Claude Code