Skip to content

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 21 Sep 04:22
· 20 commits to main since this release

What's new

A real home for every session

Percho's navigation has moved into a permanent, collapsible sidebar. Recent
conversations, project sessions and drafts now live in one searchable place;
projects and the Daily group can be folded independently, and the sidebar can
collapse all the way to zero when you want the canvas back.

The title bar has a simpler job now: it is a pinboard. Only sessions you pin
appear there, in the order you choose, whether or not they are currently loaded.
Session rows share the same right-click actions for rename, pin, diagnostics and
delete, while project rows can be pinned or removed without leaving the current
conversation.

This also changes startup behavior: Percho now opens on a clean new-conversation
screen instead of restoring every previously open tab. History is always in the
sidebar and loads on demand. Behind that UI, Percho keeps the active session plus
up to three recently used idle sessions warm; running work, approvals, queued
follow-ups, unread completions, drafts and channel subscriptions are protected
from unloading. Reopening an unloaded session restores its messages, todos,
queue and permission mode.

New-session state is now one renderer-owned draft instead of a collection of
special-case tabs. The draft appears in the sidebar, survives navigation inside
the running app, and becomes the real session when the first message is sent.
Rapid clicks, duplicate opens and a session being unloaded while you navigate
are all resolved with latest-selection-wins semantics, so stale requests can no
longer steal focus or leave a ghost active session behind.

Worth knowing after the update: the old tabs.json open-tab list is no
longer restored. No conversation data is removed — select any previous session
from the sidebar. Per-session permission modes are now persisted, while new and
forked sessions still start in Default mode.

Mermaid diagrams and math, rendered in the conversation

Mermaid blocks are no longer source-only cards. Flowcharts, sequence diagrams,
state diagrams and the rest of Mermaid 11 render inline, load lazily, and come
with a restrained preview/source switch, copy action and full-screen view.
Multi-line labels render correctly, and invalid syntax becomes a visible,
expandable error card instead of an unexplained blank rectangle.

KaTeX is included explicitly as well, so math renders once, with the right fonts
and styles, instead of falling back to source or appearing doubled. Regular code
blocks are unchanged.

Session work is easier to control

Several small requests around sessions now have first-class UI:

  • Search models by model name, provider name or id; use arrow keys and Enter
    without leaving the picker.
  • Rename and pin sessions from their context menu, including historical
    sessions that are not currently loaded.
  • Open, reveal or copy changed-file paths from both the end-of-turn file row
    and the diff drawer. Relative paths, file:// URLs and line anchors are
    normalized against the session's project.
  • Close means hide on macOS: the red window button and Cmd+W keep the app and
    running sessions alive; clicking the Dock icon restores the same window.
  • Sidebar groups now remember an intentional “everything collapsed” state, new
    drafts appear where sessions live, and the model picker no longer pushes the
    whole window sideways on narrow layouts.

Channel collaboration survives unloading and restarts

Channel-watch subscriptions now have real lifecycle semantics. A subscribed
session is protected from automatic memory cleanup, and its topics and per-file
cursors are persisted. If another agent writes while Percho is closed or the
session is not loaded, reopening reconciles the cursor and delivers the missed
change exactly once.

The watcher also closes several race windows around startup, unsubscribe,
shutdown and self-writes. User-requested close/delete still wins; the protection
only prevents automatic cleanup from silently dropping a live subscription.

The diff drawer no longer reshapes a long conversation

Opening file changes used to animate the drawer's width inside the same flex row
as the chat. Every frame changed the Markdown column width, reflowed long
messages and triggered bottom-pinning work — the more content a session had, the
worse the animation felt.

The drawer is now a fixed-width overlay animated only with transform and opacity.
In a measured 25-file / 1269-line session, the chat width stayed fixed and the
animation triggered zero follow-to-bottom scrolls (down from 42–50). Click the
conversation to keep comparing it with the diff; close from the title bar, the
drawer button or Escape.

A new Percho identity

The app and LAN observer now use the new monochrome, three-dimensional pyramid
mark with golden-ratio construction lines. The empty conversation screen uses
the same mark, and both READMEs have a newly designed banner plus a cleaned-up,
matching set of product screenshots and demos. Old unused icon and capture assets
are gone.

Changes

Faster, safer session plumbing

  • Session state, event forwarding and cleanup now converge on one registry entry
    instead of parallel maps.
  • The 87 invoke channels have one typed source of truth, from which shared types,
    preload bindings and main-process handlers are derived.
  • LAN projection runs the same transcript reducer as the desktop renderer, and
    plugin manifests are validated from one shared definition.
  • Opening a session now applies the same tool whitelist as creating it; optimistic
    model, thinking and permission changes share rollback behavior.

This is mostly invisible, but it removes several places where create/open paths,
working directories, IPC signatures or projected transcript behavior could drift
apart.

Smaller fixes and polish

  • Mermaid controls use the same quiet, monochrome interaction language as the
    rest of Percho.
  • Date-group tests are anchored to local midnight and no longer fail depending
    on the CI runner's hour or timezone.
  • README feature descriptions, screenshots and Chinese/English image order are
    synchronized with the current product.

Download: macOS (Apple Silicon / Intel) · Windows x64 · Linux x64 (AppImage)
— see assets below. Existing installs will offer the update from the title bar
or Settings → About (on adhoc-signed macOS builds the button opens this page
instead). On Linux, chmod +x the AppImage before first launch.

Full Changelog: v0.5.8...v0.6.0