Skip to content

v3.8.0 — crash recovery, cancel, line editors, coffee/sleep breaks, Name→Details#25

Merged
aedneth merged 4 commits into
mainfrom
feat/v3.8.0-editing-recovery-breaks
Jun 15, 2026
Merged

v3.8.0 — crash recovery, cancel, line editors, coffee/sleep breaks, Name→Details#25
aedneth merged 4 commits into
mainfrom
feat/v3.8.0-editing-recovery-breaks

Conversation

@aedneth

@aedneth aedneth commented Jun 15, 2026

Copy link
Copy Markdown
Owner

Five dogfooding-driven features for the live dashboard session. All from real workflow friction. Ships as a MINOR (--name/--label kept as hidden aliases — no breaks).

Features

  • Crash recovery (top priority). Live sessions are journaled to ~/.local/share/flowclock/active-session.json (start + each control change + 5s heartbeat). After a freeze/hard-reset the next launch offers a Resume previous session? overlay. Timer.fromResume rebuilds focus/break to the last heartbeat and discards the frozen gap — never invents focus time. Cleared on clean stop/cancel.
  • [x] cancel — discard a test session without saving (confirm first); [q] still saves.
  • coffee + sleep break categories, reachable via a [m] picker overlay so the 16 footer stays short.
  • Real line editors in every text field — cursor (← → Home End), insert/delete at cursor, and paste (bracketed-paste; multi-line flattened). Previously a paste kept only its first char.
  • "Name" → "Details" across UI + CLI (--details); --name/--label kept as hidden deprecated aliases.

Engineering

  • Pure engines proven before UI: lineedit (code-point-aware, emoji-safe), journal + Timer.fromResume (gap-discard, window-consistent breaks).
  • Two pure overlays (breakpicker, resume) built by scoped parallel workers; verified in-scope.
  • Self-audit caught 2 integration bugs: bracketed paste wasn't enabled (reader missing process.stdout); recovered breaks predated their start (delta-shift fix).

Gates

715 tests · lint · typecheck · build all green locally. No data-schema version bump (v3 additive). Default behavior unchanged for headless/agent/--json.

🤖 Generated with Claude Code

aedneth and others added 4 commits June 15, 2026 03:43
…e/sleep breaks, picker+resume overlays

Pure engines proven before UI wiring (SOP step 3):
- lineedit.ts: code-point-aware single-line editor (insert-at-cursor, paste,
  ←/→/Home/End, delete) + bracketed-paste in input.ts (tokenize fixes the
  one-char-per-chunk truncation; DEC 2004 wrap so multi-line paste != Enter).
- journal.ts + Timer.fromResume: live-session snapshot for crash recovery;
  conservative gap-discard reconstruction (never invents focus time).
- coffee/sleep break categories (schema single source of truth: ALL_/QUICK_).
- breakpicker.ts + resume.ts pure overlays (parallel Sonnet workers, in-scope).

711 tests green, typecheck clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…cker, crash recovery

- Name → Details everywhere: forms, detail view, help, and CLI (start/log/edit
  now take --details; --name/--label kept as hidden deprecated aliases — no
  workflow break). Manifest updated.
- All text fields are real line editors (cursor + paste) via the lineedit model.
- Live session: [x] cancel (confirm → discard, no save), [m] break-category
  picker (unlocks coffee/sleep without cluttering the 1-6 row), [c] cycle now
  spans all categories.
- Crash recovery: journal written on start + each transition + 5s heartbeat,
  cleared on stop/cancel; on launch an orphaned journal opens the Resume overlay
  → Timer.fromResume rebuilds the session (gap discarded, never invents focus).

712 tests + 3 new buildFrame overlay tests green; lint + typecheck clean.
Smoke-verified --details/--name alias end-to-end.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…red breaks in-window

Two bugs found auditing the full diff:
1. startNavReader was called without the output stream, so DEC 2004 bracketed
   paste was never enabled in the dashboard — multi-line pastes could submit
   mid-text. Pass process.stdout.
2. Timer.fromResume kept breaks' original timestamps while shifting the start,
   producing recovered records with breaks before their own start. Shift breaks
   by the same delta so they keep spacing and stay within [start, now].

715 tests + lint + typecheck + build green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…er, details, editors)

- version.ts + package.json → 3.8.0
- CHANGELOG: Added (crash recovery, [x] cancel, coffee/sleep, [m] picker) +
  Changed (Name→Details with hidden aliases, line editors + paste)
- README: live-controls table, new-session form (Details), Cancel + Crash
  recovery sections, line-editor note, schema category set, agent examples,
  roadmap v3.8.0 row.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@aedneth aedneth merged commit d058006 into main Jun 15, 2026
6 checks passed
@aedneth aedneth deleted the feat/v3.8.0-editing-recovery-breaks branch June 15, 2026 11:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant