Skip to content

v0.7.0-prerelease — Phase 6: Session-Replay + Component-Lib-Awareness

Pre-release
Pre-release

Choose a tag to compare

@Samuel0101010 Samuel0101010 released this 23 May 09:39

Session replay, component-library awareness, and four more synthesis-
listed Improvements over Impeccable land in v0.7.0.

Built by a 4-agent team (architect / coder-foundation / coder-features /
tester) with two parallel coder agents writing disjoint files.

5 Improvements landed

# Improvement Module
2 Per-session edit-stack with undo src/session/logger.ts + replay.ts + agent/history.ts
3 Morph-mode interpolation between variants src/agent/morph.ts
5 In-session policy-proposal flow src/agent/policy.ts
6 Structure-variant-mode (JSX-subtree alternatives) src/source/structure-variant-mode.ts
11 Component-library-aware edit-strategy hints src/agent/component-detect.ts

Plus the highest-value Phase-5 deferred fix

round-number-whitespace was firing per-occurrence on every Tailwind
padding:16px. Now does file-level aggregation: emits ONE violation iff
totalCount >= 4 AND roundCount/totalCount > 0.7. Verified on 3 fixtures
(1-decl: 0 hits / 4-decl-1.0-ratio: 1 hit / 4-decl-0.5-ratio: 0 hits).

What landed

Contracts (architect)

  • src/contracts/session.ts (332) - SessionEventEntry union extending
    Phase-3 UndoEntry via z.enum([...UndoEntryKindSchema.options, ...]),
    SessionReplayTimeline, PolicyProposal, MorphSource/Config,
    StructureVariantSpec with 8 kinds, 4 module interfaces
  • src/contracts/component.ts (254) - ComponentLib (7 values), Edit
    Strategy (4 values), ComponentDetectionResult, COMPONENT_DETECTION_
    RULES table per-lib
  • docs/session-replay.md (188) + docs/component-detection.md (141)

Session foundation (coder-foundation)

  • src/session/logger.ts (443) - SessionLoggerModule with 11
    convenience helpers; Phase-3 file-op kinds route via undoAppend,
    Phase-6 kinds via direct atomic-append; schema-validates every entry
  • src/session/replay.ts (419) - buildTimeline + listSessions +
    internal helpers; malformed JSONL warn-skip; idempotent fold;
    forward-join accept-variant to variants-emitted for primaryAxis
  • src/agent/history.ts (385) - runHistory CLI with
    --task/--list/--replay/--format text|json|markdown
  • src/agent/policy.ts (493) - 3-consecutive-same-axis trigger,
    frontmatter merge, declined-axes block re-trigger same session

Feature modules (coder-features)

  • src/agent/component-detect.ts (~360) - cap-then-average aggregation,
    6 libs + vanilla fallback, vanilla never wins by score, quick vs
    deep sampling
  • src/source/structure-variant-mode.ts (~330) - 8 kinds via
    template router, balanced-tag walker for splitJsxIntoHalves
  • src/agent/morph.ts (~265) - deterministic via sorted variable
    names, t clamped, interpolatable iff parsed + matching unit,
    non-interpolatable snap at t<0.5

Tests (tester, 130 new in 8 files)

  • session/logger.test.ts (18), session/replay.test.ts (18)
  • agent/history-cli.test.ts (12), agent/policy-proposal.test.ts (18)
  • agent/component-detect.test.ts (18), agent/morph-mode.test.ts (21)
  • source/structure-variant-mode.test.ts (18)
  • verify/anti-slop-fp-rate.test.ts (UPDATED) - flipped it.fails
    to it() after FPR fix

Cumulative: 626/626 tests green (40 test files, ~6s).

FPR fix - what worked, what's still outstanding

round-number-whitespace: per-occurrence -> file-level aggregation ->
0 hits on Tailwind defaults ✓

Soft-warn FPR delta: 45.71% -> 42.86%. The fix specifically targeted
round-number-whitespace, which now contributes 0 hits. The remaining
FPR is split between two OTHER soft rules:

  • single-weight-typography - 30 hits across realGood (legit
    single-weight CSS blocks)
  • default-tailwind-blue - 20 hits across borderline (color: #3b82f6)

These are the audit-recommended tightenings 2/4 from Phase 5. Test asserts
< 0.45 (calibrated to current state) with comment naming outstanding
rules. Phase 7 launch prep picks them up.

CLI surface

wisp-design history [--task ID] [--list] [--replay] [--format text|json|markdown]
wisp-design policy --propose | --apply <axis>=<value> | --show
wisp-design morph --variant-a-id ID --variant-b-id ID --t 0..1

Quality gates

typecheck:  clean
test:       626/626 in ~6s (40 files)
build:      19+ dist bundles
doctor:     14 checks (12 OK + 1 WARN policy.md + 1 OK sessions lazy)

Phase-6 deferred to Phase 7 launch prep

  • Anti-slop tightenings 2-4 (single-weight-typography scoping,
    default-tailwind-blue extension with brand-color whitelist, oklch
    branch for purple-blue-gradient, brace-anchoring for selector
    windows)
  • Multi-viewport baseline-comparison + visual regression
  • Reduced-motion pixelmatch-based two-render diff
  • history --replay implementation
  • Three more variant-anchor .md files plus full Huashu /
    UI-UX-Pro-Max content forks

Next

Phase 7 - Public Launch. README with GIF (Pick -> 3 variants -> Tune ->
Accept -> AA-block-demo), docs/architecture.md, docs/comparison.md table
(Impeccable / Stagewise / Onlook / v0 / Lovable / Claude Design), CI
matrix (Linux/Windows/macOS x Node 20+22), gh repo edit --visibility
public, gh release create v1.0.0 (NO --prerelease), HN-Post + X-Thread.
Plus the Phase-6-deferred polish items above.