You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Checkpoint (Spacec, experimental). Reset a bloated session in one
gesture: saikai has the session write its own handoff, shows you the
extracted NEW SESSION PROMPT to vet/edit, and only on your confirm sends /clear and reseeds a fresh, lean session — with child→parent lineage
(Shift+F6 jumps back). The whole pipeline is verified end-to-end against a
real claude: injection settling, transcript freshness, child detection,
and a reseed that confirms the turn actually started (a silently-swallowed
Enter can no longer fake success). Each pane shows its real context
fill (ctx 662K/1.0M (66%), the numbers Claude records — not a chars/4
guess); Shift+F11 still sends a plain /compact, now verified the same way.
Attention-first list. One accent colour (cyan) is reserved for "needs
you right now": the list opens grouped by state with Needs input first,
the cursor lands on the first session waiting on a human, and Shift+F3
hops to the next one. Everything else stays calm greyscale.
Web mirror: phone-first control. Drag-to-select as a block/rectangle
(pane-respecting, like a desktop terminal emulator over an alt-screen) with
edge auto-scroll and an http-safe Copy; a ⌨ composer tray (visible
textarea) so the OS paste bubble and IME finally work on phones; an ergonomic key bar laid out by measured reach (loop keys ☰ List / ! Next on a shoulder row, d-pad + tall Enter in the thumb arc, Esc
isolated on the far side) with hold-to-repeat arrows and a ⇄ Hand
toggle that mirrors everything for left-handed use; Checkpoint and Compact
ride the More row.
Web mirror: opt-in TLS (SAIKAI_MIRROR_TLS=1) with a cached self-signed
EC certificate, plus SAIKAI_MIRROR_TLS_CERT/KEY for your own.
memory_safety one-knob presets (on / off / strict) for the
live-pane RAM gate, replacing per-variable tuning for the common cases.
A permanent claude-seam probe (scripts/probe_claude_seams.py): one
command re-audits every assumption saikai makes about the installed claude
binary (transcript persistence, /clear child minting, /compact
injection, --resume, the sessions registry, all transcript readers) —
run it after claude updates.
Changed
Marker vocabulary rebuilt around one attention accent and dim tiers,
with ASCII-safe glyphs (? waiting · ! reply due · ~ working · =
idle · . recent) so widths never garble on CJK terminals; a contextual
marker legend explains each row's glyphs in the preview.
Preview leads with recognition: your first/last message first, then
details; the Summary pane is selectable text.
The mirror's inline page script is CSP-pinned by hash (script-src 'self' 'sha256-…', no unsafe-inline), refused inputs answer 429 instead of a
silent 204, and client disconnects no longer spam tracebacks.
CLI: saikai --table | head exits cleanly on a closed pipe; --preview
re-renders when the cache is older than the transcript.
Fixed
40+ defects from a five-round audit campaign (real-claude E2E probes,
hostile-input batteries, and an external cross-review), including: the
checkpoint reseed being silently swallowed after /clear; the mirror page
rendering nothing since the CSP hardening (inline script blocked); user
content ([wip]-style titles, folder names) being eaten as markup — or
crashing the app — in toasts, tabs, table cells, modals, and the folder
picker; a duplicated event handler disabling header-skip; chronological
sorts comparing mixed-offset ISO strings lexically; same-mtime cache
staleness across preview/prefs/titles/lineage; non-dict JSONL lines
aborting scanners (including b2 child detection); corrupt pref/config
shapes crashing startup; a future mtime reading as "active"; Windows
watchdog missing modern shells (nu/fish/xonsh); and venv PATH stripping
missing trailing separators. Regression nets (AST sweeps, CSP-hash and
markup-safety contracts) now guard each class.