initial flashtrace public + documentation website - #1
Merged
Conversation
Static site generated by a plain Node script (build.mjs) with marked as the only dependency, in line with flashtrace's zero-dependency ethos: - Landing page with a CSS-built IDE hero mock, how-it-works steps, feature grid, curated examples captured from real flashtrace runs, and install snippets. - Docs rendered from the tool repo's docs/ at its latest release tag; nav order derived from docs/index.md, inter-doc links rewritten to clean URLs, right-rail TOC with scrollspy, light/dark theme. - deploy.yml publishes to GitHub Pages on push, manual dispatch, and the repository_dispatch (flashtrace-release) fired by the tool repo. - serve.mjs: stdlib-only dev server with watch + rebuild. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Member
Author
Configured to "GitHub Actions". |
The blob URL opened GitHub's HTML viewer instead of the file, and was the only tool-repo link hardcoded to main while the rest of the site pins to the release ref. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The terminal is a docked panel inside the IDE mock, not its own window, so it should not carry close/minimize/zoom buttons. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The dashed accent line between the spec.md and login.ts panes read as noise rather than a link - the shared highlight on req:auth/login#1 and [impl:auth/login#1] already conveys the trace. The panes now sit flush with a gray divider, which also removes the misaligned border seam the connector column created next to the tabs. Also highlight the Needs reference impl:auth/login#1 in the spec pane the same way as the other traced IDs. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The static [data-copy] buttons called navigator.clipboard.writeText unguarded, throwing on click in non-secure contexts. Guard once in wireCopy and hide the control, covering both button paths. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Mirrors deploy.yml's build job (release-tag resolution, pinned action versions, Pages artifact packaging) so a green PR check means the subsequent deploy build runs identically on the same inputs. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The status-line pass already wraps a leading ✔; the global pass then nested a second identical span around it. Mirror the lookbehind the ✘ pass already uses. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
An empty tag made the tool-repo checkout silently fall back to its default branch - the opposite of building from released docs. The resolve step now errors out instead. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
pageShell takes the page's site-absolute path and renders <link rel="canonical"> against https://flashtrace.github.io, so trailing-slash and index.html variants resolve to one URL. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Plain <url><loc> entries for the landing page and every docs page, using the same canonical URLs pageShell emits. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Inline ${{ github.event.client_payload.tag }} inside a run: block is
template-substituted before the shell parses it, so a crafted tag could
execute as script. Exposing it as an env var makes it plain data.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ci.yml promises to mirror the deploy build job, but missed the guard added in 1779196: with an empty resolved tag the flashtrace checkout silently falls back to the default branch instead of a release, making a green CI check meaningless for the deploy. Fail loudly instead. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The reveal-on-hover treatment left the button at opacity 0 with no way to discover it on devices without a hover state. Gate it behind @media (hover: hover) so touch users always see it. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Without FLASHTRACE_REF and without a version in the tool clone's package.json, the empty string rendered an empty header badge (a link with no accessible name) and 'Docs built from flashtrace .' in the footer. Label that case 'dev'; repo links keep their separate 'main' fallback since 'dev' is not a real ref. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
9aaf8d9 made the display version always truthy ('dev' fallback), which silently defeated the 'version || main' ref fallback in the landing page's raw-script URL - in the no-ref case the download link pointed at the nonexistent 'dev' ref. Thread gitRef (release tag or 'main') through renderLanding to installSection, keeping the display label and the git ref as the separate concepts they already are in build.mjs. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Adds a fully static /impressum/ page rendered through the shared page shell, a footer link so it is reachable from every page (required under §5 DDG), and its sitemap entry. Co-Authored-By: Claude Opus 4.8 <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.
Summary
Builds the complete flashtrace website from scratch: a landing page plus documentation rendered from the tool repository's
docs/, served by GitHub Pages at the org roothttps://flashtrace.github.io/. Follows flashtrace's ethos — no runtime framework, plain static HTML/CSS/JS, and exactly one build-time dependency (marked, zero transitive deps).What's inside
build.mjs— the static site generator (plain Node ESM). Locates the tool repo's docs (FLASHTRACE_DOCS→./flashtrace/docsCI checkout →../flashtrace/docssibling), derives the sidebar order fromdocs/index.md(single source of truth), renders every page throughmarkedwith slugged heading anchors and a per-page TOC, rewrites both link forms (docs/<name>.mdand bare<name>.md, anchors preserved) to clean URLs, and points other repo-relative links (LICENSE, CONTRIBUTING.md) at github.com. A tiny build-time highlighter colors flashtrace's own tokens (req:...#1,[impl:...],[>>...],-->) — no highlight.js.src/landing.mjs) — hero with a hand-built CSS IDE mock (spec pane + code pane joined by a trace connector, terminal below), how-it-works steps, feature grid, curated interactive examples, install snippets with copy buttons, footer showing the docs version.src/examples.mjs) were captured from realflashtracev0.7.0 runs (clean deep-covered trace, anuncovered/unwanteddefect with revision-mismatch hint, and a-->forwarding chain), then colored to matchsrc/report.mjssemantics.prefers-color-schemeplus a persisted toggle; semantic landmarks, skip-link,prefers-reduced-motionrespected.deploy.yml— builds and deploys viaactions/deploy-pageson push tomain,workflow_dispatch, andrepository_dispatchtypeflashtrace-release(fired by the tool repo after every release). Docs are always checked out at the release tag fromclient_payload.tag, falling back to the latest release. All actions pinned to commit SHAs, matching the tool repo's convention.serve.mjs— stdlib-only dev server with watch + rebuild (pnpm dev).Verification done locally
pnpm buildrenders 11 pages from flashtrace v0.7.0 docs.href/srcindist/resolves to an emitted file; both.mdlink forms rewritten (zero.mdhrefs remain except github.com ones);revisions/#wildcard-revisionsanchor exists and is targeted correctly; nofile:///localhost URLs.Settings → Pages → Build and deployment → Source → "GitHub Actions". The repo currently serves via the legacy "Deploy from a branch" path;
actions/deploy-pagesrequires the source to be "GitHub Actions" — deploys will fail until this is flipped.After the first green deploy, the tool-repo companion PR (flashtrace/flashtrace#32) can be merged so future releases redeploy the site automatically.
🤖 Generated with Claude Code