docs(voyage): bump v4.3.0 + update CLAUDE.md + README.md + CHANGELOG.md
Step 33 of v4.3 plan — Wave 8 docs (3-doc-niv mandate): - package.json: version 4.2.0 -> 4.3.0 - CHANGELOG.md: v4.3.0 entry dated 2026-05-10 with Added/Changed/Fixed/ Deferred-to-v4.4/Notes covering Wave 0-8 leveranser (dashboard-sentrisk layout, file://-loader 3 entry points, anchor-rendering modent, A11Y panel fra DS-primitives, screenshots-spor convention, DOMPurify ven- doring, voyage-scope DS-tokens, test pyramid Groups A-D, Playwright devDeps). - CLAUDE.md: nytt 'Playground (v4.3)' avsnitt under Architecture som beskriver dashboard-modell, file-loader, anchor-rendering, A11Y panel, screenshots-spor, security hardening, og test pyramid. - README.md: version badge 3.4.1 -> 4.3.0; '/trekrevise — Annotation playground' avsnitt utvidet med v4.3 rebuild-detaljer og pekere til playground/README.md + sc1-checklist-verification.md. Test count: 705 pass / 0 fail / 2 skipped (npm test). doc-consistency.test.mjs: 42/42 pass.
This commit is contained in:
parent
12637f3dbd
commit
ea4005960c
4 changed files with 77 additions and 9 deletions
|
|
@ -4,6 +4,56 @@ All notable changes to this project will be documented in this file.
|
|||
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
||||
|
||||
## 4.3.0 — 2026-05-10 — Playground rebuild: dashboard-centric + visual parity + anchor-rendering matures
|
||||
|
||||
**Additive. No breaking changes. Forward-compat with every brief / plan / review / playground export written before v4.3.**
|
||||
|
||||
The v4.2 playground proved the annotation loop. v4.3 rebuilds it from the ground up against the design-system reference (`plugins/llm-security/playground/llm-security-playground.html`) and brings anchor-rendering to maturity. Dashboard-centric layout, file://-loader (webkitdirectory + drag-drop + URL-parameter), block-boundary anchor placement, screenshots-spor convention, and a hardened test pyramid (Groups A-D).
|
||||
|
||||
### Added
|
||||
|
||||
- **Dashboard-centric layout** — `fleet-grid` of `fleet-tile` per artifact (brief / plan / research / review) with status badges; click drills into artifact-detail surface. Two-overflate-modell matches voyage's domain (one plugin, no onboarding) — alternative 4-overflate-router rejected per Alternatives Considered.
|
||||
- **File://-loader with three entry points** — `webkitdirectory` directory-picker (Chromium primary, Firefox 150+ secondary with Windows-bug guard), drag-drop with `webkitGetAsEntry` recursive walk, and URL-parameter `?project=/abs/path` ergonomic shortcut. Path-traversal + symlink/dotfile filter (`isProjectPathSafe`) blocks `..` / `node_modules/` / `dist/` / `build/` / hidden-paths with `aria-live` announces.
|
||||
- **Anchor-rendering matures** — block-boundary placement with code-fence/table/list-item fallback (Prettier #18066 workaround); browser-side `parseAnchor` mirrors Node-side `lib/parsers/anchor-parser.mjs` regex; numbered-badge gutter + yellow-tint highlight replaces v4.2's pencil-icon; hidden-by-default sidebar-rail with ordered list, filter, and jumplist count; J/K keyboard navigation + Esc dismiss + aria-live announces; two-opacity pattern (active 100% / inactive 40% / resolved 30% strikethrough).
|
||||
- **A11Y panel built from DS-primitives** (Wave 5 Step 22) — `guide-panel--info` container with `key-stats` severity-grid + `findings__items` ordered list; `wireA11yToggle` couples topbar-button to panel; `window.__voyage.scheduleRender({ a11yViolations })` hook lets Playwright spec populate severities.
|
||||
- **Screenshots-spor convention** (Wave 5 Step 23) — `window.__voyage` namespace with `navigate(target)`, `scheduleRender({ a11yViolations })`, and `getProjectArtifacts()` methods; `docs/screenshots/README.md` documents manual + Playwright-driven screenshot procedure (defers inline gallery to v4.4).
|
||||
- **DOMPurify ≥ 3.1.1 vendored** (Wave 5 Step 24) — `playground/lib/dompurify.min.js` (22 KB UMD bundle); `sanitizeAnnotation` wraps user-comment markdown rendering; total bundle 388 KB / 460 KB HALT-gate (72 KB margin). HTML-comment indirect prompt-injection mitigation (Wave 5 Step 25) gates `stripUnsafeComments` via `parseAnchor` allowlist before `md.render`.
|
||||
- **Voyage-scope DS-tokens** (Wave 0 Step 1) — `--color-scope-voyage` + `badge--scope-voyage` added additively to `shared/playground-design-system/dist/base.css` and re-synced into the playground vendor copy. Other plugins (architect / okr / llm-security / config-audit) re-sync on next playground touch (additive-only change).
|
||||
- **Test pyramid Groups A-D** (Wave 7) — Group A 17 static-HTML grep tests (SC1 10-element checklist + SC3 webkitdirectory/drag-drop + SC6 export markers + SC7 tag-level no-CDN), Group B 9 structure tests (DS-tokens + theme-toggle + sidebar-tab + keyboard pattern), Group C 7 export-bundle schema + `annotation_digest` SHA-256 validity tests (SC-GAP-3), Group D 4 Playwright e2e tests (light/dark axe-core + pixel-diff baseline + zero-external-network authoritative gate).
|
||||
- **Playwright + @axe-core/playwright devDeps** + `playwright.config.mjs` — `testDir: 'tests/e2e'`, `snapshotPathTemplate: '{testDir}/snapshots/{arg}{ext}'`, `npm run test:e2e` script. Chromium browser binary installed locally.
|
||||
- **`tests/fixtures/playground/`** — `v43-export-bundle.json` (canonical export shape) + `v43-plan-pre-annotate.md` (revision: 0 seed with ANN-0001/ANN-0002 anchors).
|
||||
- **`tests/e2e/snapshots/a11y-baseline.json`** — WCAG-violations delta-baseline (`aria-hidden-focus`, `color-contrast` per `.key-stat--critical__label`); a11y spec compares current against baseline, fails only on NEW or GROWN violations. Actual fix deferred to v4.4 (HTML FROZEN in Sesjon 6).
|
||||
- **`docs/sc1-checklist-verification.md`** — per-element pass/fail with evidence (Group A test references + manual side-by-side); 8/10 PASS literal + 2/10 PASS-redef (Element 4 onboarding-grid → fleet-grid, Element 6 screenshots-spor → hooks + docs convention) per scope-guardian Assumptions 21+22.
|
||||
- **`playground/README.md`** — v4.3 architecture, three entry-point usage, `.claude/projects/` discoverability, annotation flow, `window.__voyage` hooks, known limitations (FF150-Win, no FSA, baseline'd WCAG), bundle-size breakdown, test-suite overview.
|
||||
|
||||
### Changed
|
||||
|
||||
- **Test count: 672 → 705 pass / 0 fail / 2 skipped** (+33 new node-test tests across Groups A/B/C; +4 Playwright tests run via `npm run test:e2e`).
|
||||
- **Theme bootstrap IIFE** (Wave 2 Step 6) sets `data-theme="dark"` as default; respects `localStorage('voyage-theme')` → `prefers-color-scheme: dark` matchMedia → fallback `dark`. Theme-toggle button in topbar (Wave 2 Step 7) persists user choice.
|
||||
- **Page-shell pattern** (Wave 2 Step 9) — `page__eyebrow` + `page__title` + `page__lede` + `page__meta` matches DS reference.
|
||||
- **Annotation export filename** — `annotated-{target}.md` where target = brief|plan|review|artifact (derived from frontmatter).
|
||||
|
||||
### Fixed
|
||||
|
||||
- **Browser-side anchor regex** synced with Node-side allowlist (Wave 4 Step 16) — `VOYAGE_ANCHOR_RE` / `VOYAGE_ANCHOR_ID_RE` mirror `lib/parsers/anchor-parser.mjs:20-25`; `parseAnchor` validates ID + intent + line-number per attribute regex.
|
||||
- **Hard-coded WIP token strings** (Wave 1 Step 4) — voyage tokens normalized to canonical `--color-scope-voyage` + `--ds-color-*` tokens; literal pixel font-sizes replaced with DS scale.
|
||||
- **Plan-determinism test reference path** (Wave 0 Step 3) — `tests/synthetic/plan-determinism.test.mjs:115` updated to `plan-run-C.md` (alphabetic convention matching A/B).
|
||||
|
||||
### Deferred to v4.4
|
||||
|
||||
- WCAG-violations fix (HTML FROZEN in Sesjon 6 per Wave 7 verification-only scope).
|
||||
- Inline screenshots-gallery component (Element 6 redefinition risk).
|
||||
- File System Access API (FSA) write-back (currently `Blob`-download only).
|
||||
- `<project>/design/`-folder traversal.
|
||||
- `IndexedDB` primary persistence (localStorage stays primary for v4.3).
|
||||
- Hybrid claude-design-skill → canvas → frontend-design workflow (research/02 deferred to v4.4+).
|
||||
|
||||
### Notes
|
||||
|
||||
- Brief, research (4 briefs), plan, and execute (6 sessions) all produced from the v4.3 pipeline itself. SC11 pipeline-self-eat gate continues to hold.
|
||||
- Path A/B/C decision (cache-first / sequential `--no-ff` waves / hybrid identical-tool) unchanged from v3.4.0 — Path B remains in production.
|
||||
- Plan quality score 86/100 Grade A APPROVE_WITH_NOTES (adversarial review Phase 9, 22 revisions documented in plan.md Revisions table).
|
||||
|
||||
## v4.2.0 — 2026-05-09 — Annotation pipeline + first voyage playground
|
||||
|
||||
**Additive. No breaking changes. Forward-compat with every brief / plan / review written before v4.2.**
|
||||
|
|
|
|||
|
|
@ -235,6 +235,8 @@ Local Docker Compose stack: `examples/observability/`. Operator docs: `docs/obse
|
|||
|
||||
**Revise (v4.2):** `/trekrevise --project <dir>` consumes a batch exported from `playground/voyage-playground.html` and folds operator annotations back into the source artifact (`brief.md` / `plan.md` / `review.md`). Phase 1 parse + validate, Phase 2 read source + rollback hygiene (`*.local.bak` via `lib/util/revision-guard.mjs`), Phase 3 parse anchors + validate placement (`lib/parsers/anchor-parser.mjs` — block-boundary discipline), Phase 4 compute revision diff + deterministic SHA-256 digest (`lib/parsers/annotation-digest.mjs`), Phase 5 atomic apply via `lib/util/markdown-write.mjs`, Phase 6 round-trip integrity (`stripAnchors`-of-written equals pre-write body), Phase 7 optional review-gate when target is plan and review.md exists, Phase 8 stats + report. Single-iteration MVP — each batch produces one `revision:` increment with `source_annotations:` audit trail. **Handover 8** (`docs/HANDOVER-CONTRACTS.md`) — additive frontmatter; no `*_version` bump; artifacts written before v4.2 validate as `revision: 0`.
|
||||
|
||||
**Playground (v4.3):** `playground/voyage-playground.html` is the operator-facing surface for browsing voyage projects and editing annotations. v4.3 rebuilds the v4.2 playground from the ground up — dashboard-centric layout (`fleet-grid` of `fleet-tile` per artifact), file://-loader with three entry points (`webkitdirectory` directory-picker / drag-drop with `webkitGetAsEntry` recursive walk / URL-parameter `?project=/abs/path`), block-boundary anchor placement matching browser-side `parseAnchor` to Node-side `lib/parsers/anchor-parser.mjs` regex, hidden-by-default sidebar-rail with J/K keyboard navigation, two-opacity pattern (active 100% / inactive 40% / resolved 30% strikethrough), A11Y panel built from DS-primitives, screenshots-spor convention via `window.__voyage` hooks (`navigate` / `scheduleRender` / `getProjectArtifacts`) + `docs/screenshots/`. Path-traversal + symlink/dotfile filter (`isProjectPathSafe`) blocks `..` / `node_modules/` / `dist/` / `build/` / hidden-paths with `aria-live` announces. DOMPurify ≥ 3.1.1 vendored for `sanitizeAnnotation`; HTML-comment indirect prompt-injection mitigation via `parseAnchor`-allowlist gate before `md.render`. Total bundle 388 KB / 460 KB HALT-gate. Test pyramid Groups A-D — Group A 17 static-HTML tests (SC1 10-element checklist + SC3 + SC6 + SC7 tag-level no-CDN), Group B 9 DS-token + theme-toggle + sidebar-tab + keyboard-pattern tests, Group C 7 export-bundle schema + `annotation_digest` SHA-256 validity tests, Group D 4 Playwright e2e (light/dark axe-core delta-baseline + pixel-diff smoke + zero-external-network authoritative gate). See `playground/README.md` + `docs/sc1-checklist-verification.md`.
|
||||
|
||||
**Security:** 4-layer defense-in-depth: plugin hooks (pre-bash-executor, pre-write-executor), prompt-level denylist (works in headless sessions), pre-execution plan scan (Phase 2.4), scoped `--allowedTools` replacing `--dangerously-skip-permissions`. Hard Rules 14-16 enforce verify command security, repo-boundary writes, and sensitive path protection.
|
||||
|
||||
**Pipeline:** `/trekbrief` produces the task brief. `/trekresearch --project <dir>` fills in `{dir}/research/`. `/trekplan --project <dir>` reads brief + research to produce `{dir}/plan.md` (and auto-discovers `{dir}/architecture/overview.md` if an opt-in upstream architect plugin produced one). `/trekexecute --project <dir>` executes and writes `{dir}/progress.json`. `/trekreview --project <dir>` produces `{dir}/review.md`. `/trekrevise --project <dir>` (v4.2) folds operator annotations back into any of the three artifacts in-place, with audit trail in frontmatter. All artifacts live in one project directory.
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# trekplan — Brief, Research, Plan, Execute, Review, Continue
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
|
|
@ -503,13 +503,29 @@ Both arguments are required. No interactive prompt — headless-safe.
|
|||
|
||||
---
|
||||
|
||||
## `/trekrevise` — Annotation playground (v4.2)
|
||||
## `/trekrevise` — Annotation playground (v4.2 + v4.3 rebuild)
|
||||
|
||||
Voyage's first interactive playground. Open `playground/voyage-playground.html`
|
||||
in any modern browser, paste your `brief.md`, `plan.md`, or `review.md`, and
|
||||
annotate the rendered artifact directly. The playground is a single
|
||||
self-contained HTML file with vendored `markdown-it` + `highlight.js` —
|
||||
no build step, no network calls, no telemetry.
|
||||
Voyage's interactive playground. Open `playground/voyage-playground.html` in
|
||||
any modern browser, point it at a `.claude/projects/<slug>/`-mappe, and
|
||||
browse + annotate every artifact (brief / plan / research / review) directly.
|
||||
The playground is a single self-contained HTML file with vendored
|
||||
`markdown-it` + `highlight.js` + `DOMPurify` ≥ 3.1.1 — no build step, no
|
||||
network calls, no telemetry.
|
||||
|
||||
**v4.3 rebuild** (2026-05-10) — dashboard-centric layout with `fleet-grid` of
|
||||
`fleet-tile` per artifact and drill-down detail surface. Three file://-loader
|
||||
entry points: `webkitdirectory` directory-picker (Chromium primary, FF150+
|
||||
secondary), drag-drop with `webkitGetAsEntry` recursive walk, and URL-parameter
|
||||
`?project=/abs/path` ergonomic shortcut. Hidden-by-default sidebar-rail with
|
||||
J/K keyboard navigation + Esc dismiss; two-opacity pattern (active 100% /
|
||||
inactive 40% / resolved 30% strikethrough). A11Y panel built from DS-primitives.
|
||||
Path-traversal + symlink/dotfile filter (`isProjectPathSafe`) blocks
|
||||
`..` / `node_modules/` / `dist/` / `build/` / hidden-paths. Total bundle 388 KB
|
||||
under 460 KB HALT-gate. Test pyramid Groups A-D — 17 static-HTML + 9 structure +
|
||||
7 schema/digest tests (`npm test`) plus 4 Playwright e2e (light/dark axe-core
|
||||
delta-baseline + pixel-diff smoke + zero-external-network gate via
|
||||
`npm run test:e2e`). See [`playground/README.md`](playground/README.md) +
|
||||
[`docs/sc1-checklist-verification.md`](docs/sc1-checklist-verification.md).
|
||||
|
||||
The annotation lifecycle is **Handover 8 — annotation → revision** (see
|
||||
`docs/HANDOVER-CONTRACTS.md`). Three stages:
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "voyage",
|
||||
"version": "4.2.0",
|
||||
"version": "4.3.0",
|
||||
"description": "Voyage — brief, research, plan, execute, review, revise, continue. Contract-driven Claude Code pipeline + first marketplace playground.",
|
||||
"type": "module",
|
||||
"engines": {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue