-
Notifications
You must be signed in to change notification settings - Fork 2
Development Workflow
Back to Home. Related: Project-Skills, Operations-Memory.
- Read
CLAUDE.md, the relevant issue, and its position in roadmap issue #68. - Put pure logic in
src/core, transport insrc/net, rendering insrc/ui, editor integration behindEditorPort, and environment wiring inmain.js. - Add or update the matching
tests/unit/<module>.test.jsin the same change. - Run
npm test, thennpm run build. - For UI-visible work, rely on CI for the full three-engine Playwright gate when local engines cannot launch; use a local browser harness for visual checks.
- Reconcile
CHANGELOG.md, the affected issue, roadmap #68, and ADR addenda when a substantive decision or behavior changes.
Vitest uses happy-dom and V8 coverage. Thresholds are per-file: statements and
lines 100%, functions at least 95%, branches at least 90%. Most pure/network/state/
DOM/render modules are expected to remain 100/100/100/100; ui/app.js is the
documented glue exception. Do not hide weak files behind aggregate coverage.
npm test
npm run build
npm run test:e2e
npm run localCI uses Node 22 and npm install --no-audit --no-fund because esbuild has
platform-specific optional binaries. Playwright imports /src as raw ESM, so a
new bare dependency also needs import-map coverage in every affected E2E harness.
Fresh worktrees have no node_modules and cannot use npm ci: the repository
intentionally ignores and does not track package-lock.json. Use npm install
(matching CI) before the test/build loop. On older macOS hosts, all locally
installed Playwright engines may exit with SIGTRAP before test code runs even
after npx playwright install chromium firefox webkit; distinguish that launch
failure from an application test failure and rely on the three-engine CI gate.
When CI is the only executable browser gate, do not report the ship cycle as
complete until that E2E job has finished successfully; a pending check is not
verification.
- Preserve user-owned dirty-tree changes.
- Track planned work in GitHub issues, not internal files under published
docs/. - File high-signal out-of-scope bugs with the
inboxlabel. - Do not merge at the end of a ship workflow; PR merge is a human gate.
- Save genuinely surprising environment/test friction as project memory.
Canonical source: CLAUDE.md,
tests/vitest.config.ts, and
CONTRIBUTING.md.
Rules source of truth: CLAUDE.md. Deep-detail archive: Claude native memory (indexed in Operations-Memory). Re-verify anything with a date, version, or cluster ID before acting. Distilled 2026-07-12.
Orientation
Working here
Operations
Meta