Repository navigation
Conversation
… and self-host builds A shared build stamp (scripts/build-stamp.mjs, replacing generate-dor-version.mjs) records version, commit, commits past the tag, dirty, and whether release.yml built it from its tag; a release run that would be unofficial fails. Every webview bundle carries it, and Settings → About shows it with the host, the self-host Relay, links, and a Copy details button. The website playground names itself as such and offers the download. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
About was always the dialog's last topic; its stories rendered the panel alone on a modal card. They now open the dialog on About, priming the build stamp through the Storybook preview. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…otifications Appearance (paint brush) keeps the Theme and Shell rows. Notifications now holds speech and push first, then the animation watcher and inactivity timeout, each under its own rule. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Shell row is not appearance; General stays, with the Activity → Notifications merge kept. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Bake the host into the stamp instead of a PlatformAdapter field. - dor and About share one buildTag; dor keeps an unknown tag count as +? rather than 0, and the playground's dor version reads the same stamp. - One CopyButton (with Couldn't copy) for About, Copy link, and the theme debugger's Copy report. - Drop the stamp shape check, installKind, --print, and the second git rev-parse; compute the stamp once per process and skip it under vitest. - Share the About stories' parameters; classify About's links in the outbound lint. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Deploying mouseterm with
|
| Latest commit: |
22e46eb
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://9ed231bd.mouseterm.pages.dev |
| Branch Preview URL: | https://about.mouseterm.pages.dev |
dormouse-bot
left a comment
There was a problem hiding this comment.
In a real build, searching Settings for "version" finds nothing, though the new SettingsDialog test says it finds About alone. The test renders unstamped: vitest sets VITEST, so buildStampVitePlugin skips the define and About shows Dormouse, version unknown, which is the only place the word appears. A stamped bundle shows Dormouse 1.2.0+14, a kind line, an explanation, and link labels, none of which contain "version". About doesn't match version by its group id or topic label either, so in the Standalone, VS Code, and website bundles About is hidden for what is probably its most likely search. About needs searchable text with the word in it, for example a rendered Version 1.2.0+14. The suggestion inline makes the test render a stamp, so it covers what ships.
A stamped build's About read "Dormouse 1.2.0+14", with no "version" to match; it now reads "Dormouse version 1.2.0+14", and the search test renders a stamped build as every shipped bundle is. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
dormouse-bot
left a comment
There was a problem hiding this comment.
Build & Test fails on this head because of the new import in standalone/vite.config.ts. The standalone dev-runner tests (standalone/scripts/dev-standalone.test.mjs and its siblings) build a throwaway tree in devWorkspace in standalone/scripts/dev-fixture.mjs. That function copies vite.config.ts and scripts/relay-origin.mjs, but not scripts/build-stamp.mjs, so Vite can't load the config (run):
[UNRESOLVED_IMPORT] Could not resolve '../scripts/build-stamp.mjs' in vite.config.ts
Every test in that file fails as a result. The website suite only shows "Failed" because pnpm's fail-first run stopped it, and its own tests were passing.
Copying the module won't be enough. These tests run under node --test, so VITEST is unset and the plugin's config() calls buildStamp(). That reads CHANGELOG.md from the copied module's parent (the temp root), so the fixture also needs a CHANGELOG.md there: a copy of the real one or a one-line ## [0.0.0] stub. git fails outside a repo, and runGit already treats that as null. Because dev-fixture.mjs is outside this diff, I can't post an inline suggestion. I can push the two copyFile lines if you'd like.
CI failed — standalone dev-runner tests can't resolve scripts/build-stamp.mjs in their fixture tree.
The dev-runner tests copy vite.config.ts into a temp tree, which now imports scripts/build-stamp.mjs. The fixture copies it, and a tree with no CHANGELOG.md (or git) stamps as an unofficial 0.0.0 rather than throwing. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Fixed in 22e46eb: |
|
Confirmed: |
Adds an About topic at the end of Settings that says which build this is, and folds the Activity topic into Notifications.
What About shows
release.ymlindiffplug/dormousefrom tagvX.Y.Z, at that tag's commit, from a clean tree.X.Y.Z+N, the commit, and "with uncommitted changes" when dirty.Every kind shows version, commit, and host, with changelog/source/license/security links and a Copy details button (diagnostics including the user agent, built only on click so the settings search never indexes it).
Build stamp
scripts/build-stamp.mjsreplacesgenerate-dor-version.mjs. A Vite plugin defines the stamp (version, commit, commits past the tag, dirty, official, host) in the Standalone, VS Code, and website bundles, and failsvite buildif the define does not land.dor versionand About share onebuildTag; an unresolvable tag (shallow clone) now prints+?instead of reading as zero. The playground'sdor versionreads the same stamp.Release behavior change: a
release.ymltag run whose stamp would not be official (CHANGELOG/tag mismatch, tag ≠ HEAD, dirty tree) fails the build rather than shipping a build labelled Development forever. Simulated against a cleanv1.2.0checkout (official) and HEAD (throws); a fullpnpm buildplus the standalone build leave the tree clean. The first real tag push is the live test.Spec:
docs/specs/deploy.md→ "Build stamp" (with rationale); the stamp never decides trust, updates, or features.Also
CopyButton(with "Couldn't copy") for About, the one-time Copy link, and the theme debugger's Copy report.Testing
scripts/build-stamp.test.mjs, lib (build-info,AboutSettings,SettingsDialog), dorversionwith an unknown count, and the website, standalone, and vscode-ext suites.Modals/SettingsDialog→About*stories cover each kind inline in the dialog; existing dialog snapshots will diff since the nav changed.🤖 Generated with Claude Code