Repository navigation
Releases: kzheart/ferry
Releases · kzheart/ferry
Release list
Ferry 0.9.2
Added
- Native session forks — branch after a completed answer in Claude Code,
Codex, OpenCode, Pi Agent and Grok Build, then continue in the new native
session. Forked sessions can be branched again, with a link back to their origin. - Resume from a selected answer — copy a Ferry Resume command that includes
only history through the selected completed turn, including its tool results.
Fork and resume actions appear as icons beside copy and edit.
Ferry 0.9.1
Added
- AI session titles — generate titles for one session or a selected batch,
preview and edit the suggestions before applying them, and customize the
language, length, type prefixes and examples in Settings. Manual titles,
including Ferry-local names, are protected by default in batch mode. - Native session renaming — rename sessions in Claude Code, Codex, OpenCode,
Pi Agent and Grok Build from Ferry, the CLI or Ask Ferry. Cursor names remain
local to Ferry. - Title tools for agents — the CLI and Ask Ferry can collect naming evidence
and use your saved title style;ferry titlealso supports generation previews
and batch application. - Repository ranking — switch the overview ranking between session count
and token usage.
Changed
- Ask Ferry conversations — clearer run status, approval and choice cards,
model menus and message composition, with more reliable session persistence
and tool cancellation. - History workflows — improved history audit pagination and streamlined
skills for finding, inspecting and resuming earlier sessions.
Fixed
- Native title display — Claude Code, Codex and Pi Agent now show their saved
session names correctly. Cursor no longer uses an assistant status subtitle
as the session title, and segmented Codex sessions rename the correct thread. - Batch title reliability — large title batches have enough time to finish;
stalled CLI runtimes time out cleanly, and failed reads or writes are reported
accurately instead of being counted as successful renames. - Custom model providers — Base URLs without a protocol are completed with
HTTPS and saved automatically; invalid inputs show a validation hint.
Ferry 0.9.0
Added
- Windows desktop support — Ferry now ships as a native x64 NSIS installer
for Windows 10 and 11, including the desktop app, engine, runtime, CLI setup,
skill installation, terminal launch, and platform-native process handling. - Global session search — the search palette now searches the complete
library independently of the current sidebar scope and shows a clear loading
state while full-text results are pending.
Changed
- Cross-platform boundaries — shell execution, filesystem detection, path
handling, sockets, and process cleanup now use explicit Windows and macOS
implementations so platform behavior can evolve independently.
Fixed
- Windows engine sharing — CLI commands reuse the desktop app's engine
without spawning a competing daemon, consuming named-pipe listeners, or
hanging behind long-running background requests. - Duplicate project folders — equivalent Windows path spellings are
normalized before grouping, while genuinely different folders with the same
name show enough parent path to remain distinguishable.
Ferry 0.8.6
Fixed
- macOS fullscreen crash — entering fullscreen or revealing the titlebar
no longer stack-overflows from fighting AppKit over the traffic-light
buttons. - Traffic-light jitter on zoom — maximizing the window no longer makes the
traffic lights jump vertically or horizontally; Ferry leaves their layout to
the system.
Changed
- Default window width — the default desktop window is a bit wider (1280).
- Settings copy — trimmed a few settings explanations for clearer reading.
Ferry 0.8.5
Added
- First-run wizard — onboarding is now a full-window six-station flow that
ends at the library scan and content-index progress. - Index progress in the toolbar — finalize progress stays visible, coverage
can self-heal, and completion gets a short animation. - Auto-sync for CLI & skills — after the first manual install, later app
launches quietly refresh an already-installedferrycommand and skill group;
uninstall still sticks until you install again.
Changed
- Independent CLI & skill versions — the app,
ferryCLI package, and skill
version:fields no longer have to share one number; only what actually
changed needs a bump. - Session library default — the library groups by time instead of project.
Fixed
- Cursor resume — Cursor sessions no longer offer a terminal resume command
that cannot work for that agent. - Post-onboarding index hint — the silent indexing tip after first run no
longer misfires.
Performance
- Content index builds — full-library indexing is substantially faster
through read/write separation, batched commits, and related engine work.
Ferry 0.8.4
Added
- Usage trend & agent comparison — the overview's habit section now charts
30-day usage (tokens or cost) stacked by agent, alongside a per-agent
comparison, replacing the model-shift and migration-flow charts. - Git branch in sessions — session rows and the detail header show the
git branch a session ran on. - Resume buttons in detail — the session detail offers a split button that
copies a resume command for the same agent or hands the session off to
another one, and onboarding now points to it.
Changed
- Rhythm card redesign — the session start-time rose chart is now a
clock-aligned tick dial: tick length encodes session count, a day arc and an
active-window arc frame the dial, and the peak hour is labeled in the
center. A stats line below shows the peak hour and active window, which is
no longer hidden for schedules wider than 10 hours. - Usage accounting — token statistics and pricing now follow the same
rules as Tokscale, so numbers match across tools. - Cursor is browse & migrate-out only — Cursor sessions can be read and
migrated to other agents, but Cursor is no longer offered as a migration
target.
Removed
- Migration history page — migrated sessions are instead annotated with
their origin in the session detail. - Manual refresh button — the detail header refreshes on its own.
Fixed
- Codex session activity — a session's last-active time now follows its
messages and usage events instead of file modification times, which kept
idle sessions from looking active. - Ferry skill for Claude — the desktop integration installs the Ferry
skill entry for Claude Code again.
Ferry 0.8.3
Added
- Sidebar update button — when an update is available, a download icon
appears at the end of the sidebar's Settings row. One click downloads,
installs, and restarts Ferry. - Post-update announcement — after restarting into a new version, Ferry
shows what changed in that release.
Changed
- Settings update page — simplified to version, auto-check toggle, status,
and retry. Download progress and release notes now live on the sidebar button
and the post-restart announcement instead.
Ferry 0.8.2
Removed
- Runtime probes — removed the optional probe workflow from contracts,
engine execution, and the migration UI. Structure validation, write guards,
and reading older migration history that references probes still work.
Fixed
- Loading spinner speed — session parsing and rescan spinners no longer
spin abnormally fast afterhtml[data-reduce]was applied unconditionally
and shortened every animation to 0.001s.
Ferry 0.8.1
Changed
- Session handoff always on — copy-resume and
ferry-resumeare no longer
behind an experimental toggle; the session context menu and migration fallback
are available by default. - Handoff moved to Agent integration — handoff settings now live under
Settings → Agent integration instead of Experimental. - System UI fonts — replaced bundled Geist variable fonts with system fonts
(SF Pro and PingFang on macOS) so mixed Chinese/Latin text reads more evenly
and the app bundle is smaller. - Reduced motion by default — reduced motion is always enabled at startup;
the toggle was removed. - Skills page actions — skill import and delete use the StateButton
pattern; delete goes through a confirmation dialog like session and migration
record deletion. - Onboarding button style — "Re-view onboarding" now matches the other
buttons in its section.
Removed
- Session optimization — removed the session optimization feature entirely,
including its UI, runtime roles, and purpose.
Fixed
- macOS window controls — traffic light buttons no longer jump during live
window resize. - CI — rustfmt alignment and a Windows build fix for an unused-import gate
onsame_targettests.
Ferry 0.8.0
Added
- Migrate into Cursor — Cursor is now a migration target, not just a
source. Ferry writes a native Cursor chat that the model can actually read:
both the visible conversation and the model-facing context are written, so
Cursor picks up where the other agent left off instead of starting cold.
Plain messages and terminal/shell tool calls migrate natively; every other
tool call becomes history narration, exactly like the other targets.
Subagent conversations keep their parent/child topology. Two prerequisites:
quit Cursor completely before migrating (a running Cursor overwrites its
database from memory, and Ferry refuses to write while it is up), and open
the destination folder in Cursor at least once so the chat is filed under
the right workspace. Failed migrations roll back the chat and its subagents
and touch nothing else in Cursor's database. ferrycommand-line tool — aferrycommand for coding agents and
scripts: search sessions, read them page by page, usage statistics, resume
commands, migration plan/apply/status, migration history, and index
refresh — all as JSON with the engine's error envelopes passed through.
While the desktop app is running the CLI shares its engine; otherwise it
starts a background daemon that exits on its own when idle. Install it from
Settings → Agent integration (a symlink in~/.local/bin, no sudo).- Ferry skill for coding agents — a bundled
ferryskill teaches Claude
Code, Codex, OpenCode, and any other agent that reads~/.agents/skillsto
use the CLI well: find how something was solved before, audit what another
agent actually did, migrate a session with an impact summary you must
confirm before anything is written, and report token usage. One-click
install from Settings → Agent integration. - Resume a session in another agent (experimental) — right-click a
session and choose "Copy resume instruction", then paste
/ferry-resume <agent> <session id>into any coding agent that has the new
ferry-resumeskill. That agent reads the history through Ferry with the
other agent's system prompts and instruction wrappers stripped, writes a
short takeover summary, checks the repository state, and continues in its
own session — nothing is written to any agent's store, so it works even
when a native migration is refused (for example while Cursor is running).
The skill also accepts a plain-language description of the session. Turn it
on in Settings → Experimental. - Experimental features — Settings gains an Experimental section where
optional features can be switched on per machine; switches only control
visibility and never delete data.
Changed
- Workspace layout — the navigation rail and resource pane were rebuilt.
One toggle (⌘⇧S, or ⌘B from the menu) hides both at once; the icon-only
collapsed rail is gone, the rail gets its own background, and migration
history rows now match session rows. - Ask Ferry is now an experimental feature — the built-in assistant is off
by default. Turn it on in Settings → Experimental; when off, the assistant,
its provider / model / role / skill settings, and the floating chat are
hidden and its runtime is not started. - Engine methods renamed for all callers — the engine's API no longer
names a specific caller (for exampleagent_session_readis now
session_read); the desktop app, the built-in assistant, and the CLI share
one method set. No user-visible change.
Fixed
- Session titles survive migration — a Claude Code session that never got
an AI-generated title now carries the same title everywhere. Ferry's session
list already fell back to the opening question, but migration did not, so
such sessions arrived at the destination unnamed. - Honest migration reports — the migration impact report no longer lists
input fields as dropped for tool calls that get rewritten as history text.
Those calls keep their name, input, and result inside the text that is
written; only calls dropped outright list their fields now. - Migration failures say why — the result card now shows the engine's
actual reason (such as "Cursor is running: quit it before migrating")
instead of an error class name, and distinguishes a migration that was
rolled back after validation, one kept despite a failed probe, and one
stopped before anything was written. Cursor's "must be quit" check now runs
when the plan is made, so you no longer walk through every step before
being told. - Fewer spurious "session reference is no longer valid" errors — when a
session changes underneath an operation, the engine re-resolves it and
retries briefly instead of failing the action; when the error does surface
it now says whether the session was deleted or modified.
Performance
- Lower idle footprint — the engine does much less work while nothing is
happening, and reading sessions (notably OpenCode and Codex) is faster.