Skip to content

v0.3.0 — Web mirror

Choose a tag to compare

@m-morino m-morino released this 17 Jun 15:28

Added

  • Web mirror (opt-in). saikai can mirror its live UI to a phone or another

    browser over the LAN — off by default and token-authenticated. It is

    read-only until you arm browser control at the terminal with Shift+F12;

    then the browser drives saikai by tap (select a row, sort a column), a

    single-finger swipe to scroll, an on-screen key bar, and a

    terminal-equivalent physical keyboard (arrows, Home/End, F-keys, Ctrl/Alt

    combos, Ctrl+] to leave a pane, Ctrl+C to interrupt claude). Launch shows a

    scannable QR code; press F12 to bring it back.

  • The mirror is safe by construction: only the local Shift+F12 can enable

    control (a browser can never arm itself), control auto-disables after

    inactivity, a LAN bind stays read-only unless you also set

    SAIKAI_MIRROR_ALLOW_LAN_INPUT=1, the per-run write-key for input travels only

    over the authenticated stream (never the URL, QR, or logs), and the status bar

    shows a live connected-browser count with a toast on each connect. New env

    vars: SAIKAI_MIRROR, SAIKAI_MIRROR_HOST, SAIKAI_MIRROR_PORT,

    SAIKAI_MIRROR_ALLOW_LAN_INPUT.

  • A shared fictional demo fixture now generates the public screenshots,

    deterministic headless GIF, and recording workspace without reading the

    caller's real HOME or Claude history.

  • An isolated real-Claude recording guide and asciinema cast auditor reject

    private paths, credentials, identities, and unapproved demo projects before

    conversion.

  • docs/ARCHITECTURE.md is now the canonical contributor reference for module

    boundaries, history semantics, PTY lifecycle, and concurrency invariants.

Changed

  • **The live-pane memory gate now reasons per-OS instead of projecting

    Windows' commit-charge model onto Linux/macOS.** Linux: commit headroom

    (CommitLimit − Committed_AS) is consulted only under strict overcommit

    (vm.overcommit_memory=2) — under the default heuristic mode the limit is

    not enforced and Committed_AS routinely exceeds it on a healthy machine,

    which read as negative headroom and falsely closed the gate. A new

    pressure check (SAIKAI_MAX_MEM_PRESSURE, default 10) reads Linux PSI

    (/proc/pressure/memory some avg10, the stall-time metric systemd-oomd

    acts on) and macOS's kernel pressure level (gates on critical), refusing

    a new pane when tasks are measurably stalling regardless of occupancy

    numbers. The memory-load high-water default is now 95 on Linux/macOS

    (85 stays on Windows): the POSIX load % is derived from the same

    availability figure as the physical floor, so the old shared default

    closed the gate while ~15% of RAM was still genuinely available.

  • The public story now leads with a one-line "Mission control for Claude Code"

    value statement and the hero demo — which opens on the cross-project session

    list — with the claude --resume rationale moved just below.

  • Help, Settings, and the READMEs explain the visual grammar consistently:

    title color groups context and ASCII symbols report state.

  • Contributor-facing agent files are concise entrypoints instead of duplicate

    copies of the concurrency manual.

Removed

  • The incomplete global LLM cluster mode and its dangling UI/CLI controls.

  • Internal launch-marketing notes and completed implementation plans from the

    public repository surface.

Fixed

  • The filter bar no longer mis-sizes: the Sort/Status/Age dropdowns are wide

    enough that long labels (e.g. "Alphabetically", "All time") no longer wrap,

    and the search box is capped so it does not expand to dwarf them.

  • Claude Desktop session sync (--sync-desktop) derives its store location

    per-OS (macOS ~/Library/Application Support, Linux XDG) instead of only the

    Windows path, so it no longer reports "not found" on macOS where Desktop runs.

  • The mirror-URL host-clipboard copy on Linux tries wl-copy (Wayland), then

    xclip, then xsel, instead of assuming xclip is installed.

  • Public docs, in-app marker help, contributor test commands, and CI now agree

    with the current marker semantics, terminal-support boundaries, and complete

    tests/test_*.py suite.

  • **Tree mode no longer chains unrelated same-repo sessions into one long

    list.** Parent assignment treated "same cwd + recent" as kinship and scored

    a mainmain branch match as strong evidence, so in a single-repository

    history every session linked to its nearest predecessor. A parent now

    requires continuation evidence — a shared feature branch (main/master/

    detached HEAD count as no-information), or title/topic overlap — and

    sessions without such evidence stay roots. Genuine continuation chains

    (e.g. a series of sessions iterating on the same prompt) still nest.

  • Help no longer claims that the Textual Last column is color-coded when it is

    rendered as plain text.