From cd81d09478b9af7c5878fe6c7426a84dc308e118 Mon Sep 17 00:00:00 2001 From: LennarX Date: Thu, 23 Jul 2026 16:27:52 +0200 Subject: [PATCH 1/4] feat: update the home page to flashtrace 0.12.0 The landing page still described flashtrace as of v0.7.0. Re-captured every shown report with a real v0.12.0 run (the summary's items line now counts "from specs" instead of "from markdown") and refreshed the copy: - feature grid: add SemVer revision matching, short-form references and the JSON report; split forwarding into its own card; extend the language list; CI card now names both report formats - wildcard blurb reworded to the 0.12.0 semantics (2.x accepts anything within revision 2) - report colorizer: handle the deep/shallow breakdown on the ok summary line and drop the retired "of the ok items" note Co-Authored-By: Claude Fable 5 --- src/examples.mjs | 19 +++++++++++-------- src/landing.mjs | 11 +++++++---- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/examples.mjs b/src/examples.mjs index d6b1548..9969a31 100644 --- a/src/examples.mjs +++ b/src/examples.mjs @@ -1,5 +1,5 @@ // Curated interactive examples: real inputs and terminal output captured from -// actual `flashtrace` runs (v0.7.0). No in-browser execution - the CLI needs +// actual `flashtrace` runs (v0.12.0). No in-browser execution - the CLI needs // node:fs and git, so v1 ships pre-computed, trustworthy captures. import { esc } from './layout.mjs'; @@ -27,9 +27,12 @@ export function colorizeReport(text) { s = s.replace(/^( )(needs|covers|wanted by)( )/gm, '$1$2$3'); s = s.replace(/^Summary$/m, 'Summary'); s = s.replace(/^( items +\d+ )(\(.*\))$/m, '$1$2'); - s = s.replace(/^( ok +)(\d+)$/m, '$1$2'); + s = s.replace( + /^( ok +)(\d+)( \(.*\))?$/m, + (m, pre, n, breakdown) => + `${pre}${n}${breakdown ? `${breakdown}` : ''}`, + ); s = s.replace(/^( defective +)([1-9]\d*)$/m, '$1$2'); - s = s.replace(/^( )(of the ok items.*)$/m, '$1$2'); s = s.replace(/^ok$/m, 'ok'); s = s.replace(/^not ok$/m, 'not ok'); return s; @@ -38,7 +41,7 @@ export function colorizeReport(text) { export const heroTerminal = { command: 'npx flashtrace', output: `Summary - items 2 (1 from markdown, 1 from code) + items 2 (1 from specs, 1 from code) ok 2 defective 0 @@ -50,7 +53,7 @@ export const examples = [ id: 'clean', title: 'A clean, deep-covered trace', blurb: - 'A requirement needs an implementation at any 2.x revision; the wildcard resolves to impl:login#2.4 and the whole chain is deep-covered.', + 'A requirement accepts anything within revision 2 - the 2.x wildcard resolves to impl:login#2.4 and the whole chain is deep-covered.', command: 'flashtrace -v', files: [ { @@ -78,7 +81,7 @@ export function login(token: SessionToken) { needs impl:login#2.x (→ impl:login#2.4) ✔ login.ts:1 Summary - items 2 (1 from markdown, 1 from code) + items 2 (1 from specs, 1 from code) ok 2 defective 0 @@ -119,7 +122,7 @@ test('login opens a session', () => { ... });`, • uncovered: needs test:auth/login#2, which does not exist (revision mismatch: existing revision(s) of test:auth/login: 1) Summary - items 3 (1 from markdown, 2 from code) + items 3 (1 from specs, 2 from code) ok 1 defective 2 @@ -165,7 +168,7 @@ export function openSession(token: SessionToken) { ... }`, needs impl:auth#1 ✔ auth.ts:1 Summary - items 3 (2 from markdown, 1 from code) + items 3 (2 from specs, 1 from code) ok 3 defective 0 diff --git a/src/landing.mjs b/src/landing.mjs index 358dc4d..b9fff2d 100644 --- a/src/landing.mjs +++ b/src/landing.mjs @@ -83,7 +83,7 @@ export function login(token) { snippet: `$ npx flashtrace Summary - items 3 (1 from markdown, 2 from code) + items 3 (1 from specs, 2 from code) ok 3 defective 0 @@ -124,11 +124,14 @@ const highlightSnippet = (text) => highlightTokens(esc(text)); const features = [ ['Zero runtime dependencies', 'One self-contained script. Vendor it or install it - nothing else comes along.', null], ['Runs anywhere', 'Everything Node.js ≥ 18 runs on: your laptop, your CI, your air-gapped build box.', null], - ['Many languages', 'Tags live in ordinary comments - C-family, Python, Ruby, shell, SQL, Lua, HTML, Vue and more.', '/docs/code-tags/'], + ['Many languages', 'Tags live in ordinary comments - C-family, Python, Ruby, shell, SQL, Lua, HTML, Vue, Julia, Solidity, CMake and dozens more.', '/docs/code-tags/'], ['Deep, transitive coverage', 'An item is only deep-covered when its whole tracing chain is. Broken links show up wherever they hide.', '/docs/coverage-rules/'], - ['Wildcards & forwarding', 'Accept any 2.x revision, or delegate a requirement’s obligation to another item with a forwarding tag.', '/docs/forwarding/'], + ['SemVer revisions & wildcards', 'Revisions match as SemVer versions - 2.4 equals 2.4.0 - and a 2.x wildcard accepts anything within revision 2.', '/docs/revisions/'], + ['Short-form references', 'A reference may drop what its item already fixes: inside req:auth/login#1, Needs: impl reads as impl:auth/login#1.', '/docs/markdown-items/'], + ['Forwarding', 'Delegate a requirement’s obligation to another item with a forwarding tag - coverage follows the chain.', '/docs/forwarding/'], + ['JSON report', 'One --json flag emits the whole run as a deterministic, schema-backed JSON document - ready for jq.', '/docs/json-report/'], ['Git-aware scanning', 'Files ignored by git are excluded automatically - no config to keep in sync.', '/docs/usage/'], - ['CI-friendly', 'Plain-text report, meaningful exit codes: 0 clean, 1 defects found, 2 usage error.', '/docs/command-line/'], + ['CI-friendly', 'Text or JSON report on stdout, meaningful exit codes: 0 clean, 1 defects found, 2 usage error.', '/docs/command-line/'], ]; function featureGrid() { From 5fffa1704f44a09813876efbdd9586570934af31 Mon Sep 17 00:00:00 2001 From: LennarX Date: Thu, 23 Jul 2026 16:38:36 +0200 Subject: [PATCH 2/4] feat: rewrite "Many languages" card around comment families Group by comment style with the highest-audience representatives (C-style: JS/TS, Java, C#, Go, Rust; hash: Python, Ruby, shell; SQL, Lua, HTML/Vue) instead of an ad-hoc list, leading with the insight that a tag is just a comment. Co-Authored-By: Claude Opus 4.8 (1M context) --- src/landing.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/landing.mjs b/src/landing.mjs index b9fff2d..d603182 100644 --- a/src/landing.mjs +++ b/src/landing.mjs @@ -124,7 +124,7 @@ const highlightSnippet = (text) => highlightTokens(esc(text)); const features = [ ['Zero runtime dependencies', 'One self-contained script. Vendor it or install it - nothing else comes along.', null], ['Runs anywhere', 'Everything Node.js ≥ 18 runs on: your laptop, your CI, your air-gapped build box.', null], - ['Many languages', 'Tags live in ordinary comments - C-family, Python, Ruby, shell, SQL, Lua, HTML, Vue, Julia, Solidity, CMake and dozens more.', '/docs/code-tags/'], + ['Many languages', 'A tag is just a comment, so one syntax spans them all: C-style (JS/TS, Java, C#, Go, Rust), hash (Python, Ruby, shell), SQL, Lua, HTML/Vue - and dozens more.', '/docs/code-tags/'], ['Deep, transitive coverage', 'An item is only deep-covered when its whole tracing chain is. Broken links show up wherever they hide.', '/docs/coverage-rules/'], ['SemVer revisions & wildcards', 'Revisions match as SemVer versions - 2.4 equals 2.4.0 - and a 2.x wildcard accepts anything within revision 2.', '/docs/revisions/'], ['Short-form references', 'A reference may drop what its item already fixes: inside req:auth/login#1, Needs: impl reads as impl:auth/login#1.', '/docs/markdown-items/'], From ef392fa4e99eb09184b602a39c1cbf0730694b33 Mon Sep 17 00:00:00 2001 From: LennarX Date: Thu, 23 Jul 2026 16:39:30 +0200 Subject: [PATCH 3/4] refactor: trim the feature grid back to eight cards Short-form references are too specific for the grid, and the JSON report folds into the CI card as "Rich, CI-friendly reports" - a clean 4x2 on desktop again. Co-Authored-By: Claude Fable 5 --- src/landing.mjs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/landing.mjs b/src/landing.mjs index d603182..7b2fcb8 100644 --- a/src/landing.mjs +++ b/src/landing.mjs @@ -127,11 +127,9 @@ const features = [ ['Many languages', 'A tag is just a comment, so one syntax spans them all: C-style (JS/TS, Java, C#, Go, Rust), hash (Python, Ruby, shell), SQL, Lua, HTML/Vue - and dozens more.', '/docs/code-tags/'], ['Deep, transitive coverage', 'An item is only deep-covered when its whole tracing chain is. Broken links show up wherever they hide.', '/docs/coverage-rules/'], ['SemVer revisions & wildcards', 'Revisions match as SemVer versions - 2.4 equals 2.4.0 - and a 2.x wildcard accepts anything within revision 2.', '/docs/revisions/'], - ['Short-form references', 'A reference may drop what its item already fixes: inside req:auth/login#1, Needs: impl reads as impl:auth/login#1.', '/docs/markdown-items/'], ['Forwarding', 'Delegate a requirement’s obligation to another item with a forwarding tag - coverage follows the chain.', '/docs/forwarding/'], - ['JSON report', 'One --json flag emits the whole run as a deterministic, schema-backed JSON document - ready for jq.', '/docs/json-report/'], ['Git-aware scanning', 'Files ignored by git are excluded automatically - no config to keep in sync.', '/docs/usage/'], - ['CI-friendly', 'Text or JSON report on stdout, meaningful exit codes: 0 clean, 1 defects found, 2 usage error.', '/docs/command-line/'], + ['Rich, CI-friendly reports', 'A readable text report or deterministic, schema-backed JSON on stdout - and meaningful exit codes: 0 clean, 1 defects found, 2 usage error.', '/docs/json-report/'], ]; function featureGrid() { From aea36effd59a17376150accd29c3a16e89d8a4d3 Mon Sep 17 00:00:00 2001 From: LennarX Date: Thu, 23 Jul 2026 16:47:57 +0200 Subject: [PATCH 4/4] feat: reword many language and specify a rough number (from ~97 extensions) --- src/landing.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/landing.mjs b/src/landing.mjs index 7b2fcb8..302f289 100644 --- a/src/landing.mjs +++ b/src/landing.mjs @@ -124,7 +124,7 @@ const highlightSnippet = (text) => highlightTokens(esc(text)); const features = [ ['Zero runtime dependencies', 'One self-contained script. Vendor it or install it - nothing else comes along.', null], ['Runs anywhere', 'Everything Node.js ≥ 18 runs on: your laptop, your CI, your air-gapped build box.', null], - ['Many languages', 'A tag is just a comment, so one syntax spans them all: C-style (JS/TS, Java, C#, Go, Rust), hash (Python, Ruby, shell), SQL, Lua, HTML/Vue - and dozens more.', '/docs/code-tags/'], + ['Many languages (40+)', 'A tag is just a comment, so one syntax spans them all: C-family, hash (Python, shell, ..), SQL, Lua, HTML, ...', '/docs/code-tags/'], ['Deep, transitive coverage', 'An item is only deep-covered when its whole tracing chain is. Broken links show up wherever they hide.', '/docs/coverage-rules/'], ['SemVer revisions & wildcards', 'Revisions match as SemVer versions - 2.4 equals 2.4.0 - and a 2.x wildcard accepts anything within revision 2.', '/docs/revisions/'], ['Forwarding', 'Delegate a requirement’s obligation to another item with a forwarding tag - coverage follows the chain.', '/docs/forwarding/'],