Skip to content

v0.14.0

Choose a tag to compare

@github-actions github-actions released this 23 Jul 17:06

Changed

  • A project may now sit with no session at all. Closing the last one no
    longer spawns a replacement, and opening a project no longer seeds a first
    session — both land on an empty screen, the same shape as the no-project-open
    landing screen, with a button that opens a session when you want one. The
    sidebar's "+" still picks the kind. An empty project stays empty across a
    restart, Home included.
  • The stored Claude session id is now a provider session id. lich runs four
    provider CLIs, but the column, the struct field, the store method and the
    hook payload were all still named after Claude alone. The sessions table's
    claude_session_id is renamed to provider_session_id on open (existing ids
    carry over — the rename is the migration, nothing is stranded);
    store.Session.ClaudeSessionID becomes ProviderSessionID
    (providerSessionId over the wire), and SetClaudeSession becomes
    SetProviderSession. The /session-start hook now takes
    provider_session_id and still accepts the old claude_session_id so plugin
    releases before v0.3.0 keep working — see docs/hooks/session-start.md.
    Resume itself stays Claude-only: --resume is a Claude Code flag.

Fixed

  • Dragging a tab or session card no longer scrolls its strip. Reorder drags
    are clamped to the strip's own axis, so pulling a project tab downward (or a
    session card sideways) can't overflow the container and trigger dnd-kit's
    auto-scroll on the cross axis. The dragged tab and session card also stay
    solid instead of turning into a see-through ghost — the old opacity fade is
    gone, and the card no longer sits in its translucent hover state (the pointer
    rides it for the whole drag) while sliding across its neighbours.
  • Zoom now works on layouts with a dedicated "+" key (German, for one).
    The chords matched only the physical Equal/Minus keys, so on those layouts
    nothing claimed the press and Chromium's own zoom ran instead — the exact
    double-zoom the physical-key matching was built to prevent. The typed
    character is now checked as a fallback.
  • Stale results can no longer outrace fresh ones in the footer badges. A
    slow git-status poll resolving late could overwrite the newer status the
    session hooks had just fetched, and the pull-request badge kept showing the
    previous directory's PR while the new lookup was in flight.
  • The command palette reopens clean. Toggling it closed with the hotkey
    kept the previous filter and cursor for the next open; and Ctrl+F no longer
    opens the terminal search box hidden beneath an open palette.
  • A failing file picker now says so with an error toast instead of
    failing silently.
  • The self-update download no longer dies on a normal connection. The
    binary download shared the 5-second timeout meant for small metadata reads,
    and that timeout covers the whole transfer — so on anything but a very fast
    link the download was cut mid-stream and self-apply (Windows/macOS) failed
    every time. The download now gets its own generous ceiling.
  • A renamed worktree session keeps its name across keep/resume. Resuming a
    kept worktree re-created the session with the "automatic title" flag reset,
    so the next AI-generated title overwrote the name you chose. The flag now
    survives the park/resume cycle.
  • Holding a hotkey no longer fires it repeatedly. Key auto-repeat on
    Ctrl+Shift+T could spawn a stack of sessions from one held chord (and
    Ctrl+K would flap the palette); hotkeys now fire once per press.
  • A failed in-place restart can be retried. If launching the successor
    process failed (say, the binary mid-swap by the package manager), the
    restart coordinator latched anyway and every later /restart silently did
    nothing until the app was relaunched by hand.
  • Sessions that exit on their own no longer leak their PTY handle, and
    closing a session during its spawn round-trip no longer strands the PTY or
    drops a queued update command.