Release history
Changelog
0.12.3
Rendered Markdown reviews now keep tiny edits visible and highlight punctuation-only changes, such as replacing an em dash with a colon.
Live agent file-change cards now preview changed code, offer fingerprint-checked staging, collapse when idle, and show conversation timestamps. Branch labels sharing a commit expose their hidden count and retain distinct branch colors. Agent sessions also retry stale writer ownership after reconnecting.
Generated commit messages now appear as completed cards without streaming raw response text. File review adds shortcuts for hunk/full scope, split/unified layout, and cycling Markdown views.
Checked-out branch menus now open an interactive-rebase mode with draggable commits down to the branch point, keyboard and context-menu reordering, and squash. Plans are previewed and revalidated, with Cmd/Ctrl+R to undo the latest rewrite and Cancel to restore the original tip.
Interactive rebase plans now include a base-to-HEAD todo editor and support pick, edit, reword, squash, fixup, and drop actions. They discover branch points, allow explicit base selection, and preserve reworded messages through conflict recovery.
Graph-based commit reordering now describes the live rewrite session, offers Undo last, Restore original, and Done controls, and protects the original tip with a durable recovery ref.
Interactive rebase recovery now validates clean worktrees and stale history, shows the safety reference, and removes stale plan state after external completion or abort.
Agent tabs can now be reordered by dragging, and repository and agent tab shortcuts follow the same left-to-right order shown on screen.
Pressing Backspace while viewing rendered Markdown no longer navigates the app webview to a blank page.
Agent transcript selections now remain bounded to the agent panel and clear their visual highlight reliably when selection moves elsewhere.
Long branch labels now expand within the graph column on hover and expose their full name as a tooltip when the column remains too narrow.
Hidden unpinned agent sessions now survive visible-tab refreshes, and their tabs remain visible across repositories while a turn is running, waiting for input, or completed and unread.
Agent file-change previews now mark added and removed rows clearly and let each hunk collapse independently without hiding its review actions.
Claude model discovery now uses the same GUI-safe executable path as Claude sessions, restoring model choices after native or Homebrew CLI updates.
Claude agent panels now show session, weekly, and model-specific usage limits.
AI settings can disable Claude Code or Codex detection and select their executables explicitly.
Branch merge menus now choose whether to merge into the checked-out or selected branch before offering merge strategies; merging into another local branch keeps the current checkout in place.
Commit messages in review can be resized from the divider above the author, and their temporary height resets when viewing another commit.
Double-clicking a branch in the remote-branches sidebar now checks out the correct remote branch without repeating the remote name.
Switching from a diff to the full repository tree now reveals the selected file, interactive rebase plans open in the center workspace with draggable commits, and agent sessions show available compaction and context information.
Branch menus now group both rebase directions, interactive plans, and graph recomposition under Rebase, while long plans scroll above the repository console.
Split rendered Markdown now starts at a zoom that fits both A4 pages across the available review width, while preserving manual zoom controls.
Empty recent-agent-conversation lists now show a centered, styled status in both Codex and Claude panels.
Timed-out and cancelled Git operations now stop their SSH child processes, so inherited output pipes cannot leave the operation stuck.
Claude model selection now uses the local named model catalog when available and filters out models that require a newer Claude Code version.
Claude session tabs now use the Claude logo instead of the generic shell icon.
Agent context-menu comments now focus the question field when opened and identify the destination as Comment to Codex or Claude.
0.12.2 (2026-09-21)
- Automatic Git operations now time out after five minutes and refresh repository state afterward, preventing a stalled background command from leaving repository actions locked.
- Conflict resolutions chosen in the inline review now write and stage immediately, so selecting the current branch can remove a zero-diff conflict and Continue reliably finishes the Git operation.
0.12.1 (2026-09-19)
Commit-message drafts now persist per repository while switching tabs, and queued AI-generated messages return to the repository that requested them.
Unreachable reflog commits are now available below Stashes in the repository sidebar, where they can be recovered through review and the existing commit actions.
Agent change summaries now offer draggable hunk-level revision comments and fingerprint-checked revert actions that stop stale changes from discarding newer work.
Agent turns now show live working-tree hunks in an updating activity card, separate new edits from changes that were already present, and retain a final summary linking back to the normal review.
AI commit-message generation now warns when the selected agent session is read-only, and its spinner can be clicked to cancel a queued or active request.
Agent inline file references with line numbers are now clickable: click to open in ItsyGitsy, or Cmd/Ctrl-click to open the repository and file in the external editor. Referenced lines briefly highlight in the full-file viewer, and configured VS Code editors receive the line number.
Split diffs now keep each source line on one visual row, so a wrapped long line on one side does not add blank space before lines on the other.
Compare-diff context now appears with the center panel’s repository warnings instead of as a full-width bar at the bottom of the window.
Multi-question agent prompts now offer a free-form “Do this instead” answer for each question and submit it together with the other answers.
0.12.0 (2026-09-12)
- Merge-conflict resolution no longer triggers background history refreshes that rerender the active conflict view.
- File diffs now support
@agent-contextannotations across Java, C#, Kotlin, Python, and HTML comments. Context can be collapsed for review, inspected on demand, filtered by type, and shown in light or dark appearance without changing Git patches. - Agent image attachments now open in a full-window preview from either the composer or sent message cards.
- Branch creation and rename editors now align with the graph's right-aligned branch labels.
- Agent conversation search now scrolls each selected match into the unobscured conversation viewport.
- Agent rate-limit errors now identify the exhausted quota and show the remaining percentage and reset time for every reported window. Active Codex tabs refresh quotas every minute and whenever the app regains focus, including after unexpected provider-side quota resets.
- macOS window controls now use a roomier native inset, with matching title-bar spacing that keeps repository tabs comfortably separated.
- Command-F now opens only conversation search while focus is in an agent panel or its clicked conversation, without also opening the diff search bar.
- Find bars and the shortcuts panel now follow the light theme, Escape closes file search without leaving the file view, Command-B toggles the blame preview, and the wider four-column shortcuts panel remains scrollable within a bounded window.
- Light appearance now uses consistent surfaces for the reference filter and its Enter/Tab hint, and hovered graph reference groups no longer open on a dark overflow background.
- Blame preview now continues loading through files with collapsed agent-context annotations by calculating its viewport from the rows that remain visible.
0.11.2 (2026-09-10)
- Mermaid Gantt diagrams now render at a measurable width in Markdown previews instead of appearing as blank whitespace, and PDF export lays out a script-free page stack off-screen and captures it in one dedicated hidden-webview operation without repurposing or restyling the main application window.
- AI-generated commit descriptions now stay concise and use a short bullet list instead of verbose prose.
- Cloudflare R2 release cleanup now runs daily and safely retains the newest three stable releases plus the newest three experimental or candidate releases, while preserving unclassifiable legacy data.
- Scoped bottom-console terminal tabs to their repository, preserving each repository's open shells while switching between repositories, and removed AI commit generation from the commit editor's keyboard tab order.
- Text file and diff views now offer a persisted, resizable Blame preview that lazily loads the last committed edit for visible lines, identifies uncommitted additions, opens the responsible commit from the blame gutter, and shows an explicit action to return to the original file position.
- Agent input and approval cards now present one question at a time, retain submitted choices in the transcript, allow a corrective instruction to steer the agent instead of following a rejected path, and let queued messages be edited with a double-click before they are requeued or sent. Ask Agent review cards show the complete source line and line number while highlighting the selected text.
- Terminal Escape input once again reaches Vim, Codex rate-limit state survives UI reloads until reset, Claude reliably relaunches with pending approval-mode changes after a turn, and Ask Agent can target a specific open agent tab with same-repository tabs listed first.
- Commit composers now offer a hover-revealed AI action that asks the active repository agent to inspect staged changes and populate a commit subject and description, opening a new agent session when needed, refusing empty staged sets, warning when unstaged files were excluded, and presenting both the request and generated message as compact cards without exposing the internal prompt or response protocol. Generation uses low effort, prefers explicitly advertised economy models, caches each repository's commit conventions after the first inspection, and persists the model and effort applied to every new request in its prompt card across app restarts.
- Early-release update checks now fall back to the stable channel when the newest experimental build was published for a different platform, instead of showing a missing-platform error.
- Theme changes now avoid rerendering unrelated workspaces, defer graph repainting until the CSS theme is visible, and leave hidden terminal sessions dormant until selected, reducing UI stalls especially on Windows.
- Binary image previews now fill the available review area and offer fit, actual-size, and step zoom controls; PNGs keep an image-specific loading or error state while the preview is fetched.
0.11.1 (2026-09-08)
- Background refreshes now retain the current diff and rendered-document viewport when the selected file has not changed, preserving scroll position and document zoom.
- Markdown PDF exports now place automatic page boundaries between rendered text lines instead of cutting through a line mid-page.
- Completed Markdown PDF exports now open in the operating system's default viewer.
- Claude plugin background-review findings now appear as durable conversation cards without being mistaken for delegated agents in the roster.
- Commit context menus now state that the checked-out branch is rebased onto the selected branch, matching the action that Git performs.
- Stashes remain visible beside the rebased branch tip when Git preserves their original, pre-rebase base commit.
- Added a persisted Light, Dark, or System appearance setting; Dark remains the default, while rendered Markdown, Mermaid, graph, and terminal surfaces follow the active app theme.
0.11.0 (2026-09-07)
- Full-file diffs now open with the first change one-third down the viewport, agent file links and hunk cards retain their target location, and the diff overview ruler supports click-to-scroll navigation.
- Absolute local file links in agent responses now open in the operating system's default application, while repository file links continue to open in ItsyGitsy's review view.
- Active-turn agent tabs now show provider-colored spinners that keep animating through hover and tab switches until the turn needs input or completes.
- Claude model choices now follow the installed Claude Code CLI, and both agent composers accept safe dropped file attachments alongside pasted images.
- Agent rate-limit indicators now show every named window exposed by Claude Code or Codex, including model-specific quotas when providers return them.
- Agent response typing now only runs in the visible tab and immediately pauses when selecting its text.
- Exact agent session ID searches now find Codex sessions beyond the recent window, including oversized transcripts that content search intentionally skips.
- Resumed Codex sessions now restore structured File change cards from current transcripts.
- Agent sessions owned by another writer now open as efficient live read-alongs, restore structured Codex commands, output, file changes, and shared images, survive app restarts, and replace the composer with their write-access notice and retry action.
- Codex Stop and Steer now reliably target the active turn; Steer adds information without cancelling it, while Stop pauses queued prompts so they remain available to send manually.
- Cmd+W now closes the active repository tab, or the focused agent tab when it is unpinned; pinned agent tabs remain locked and the app window stays open.
- Cmd+Shift+A opens the active agent composer, while Cmd+A focuses it from non-editable app surfaces without overriding normal Select All inside inputs and textareas.
- Completed agent tabs retain their purple state through hover, and pinned-tab controls match it.
- Agent Markdown code blocks now soft-wrap on screen without adding visual wraps to copied text.
- HTTPS Git credential failures now identify the affected remote, explain that Git could not retrieve a non-interactive credential, and provide a terminal command to refresh or verify it; general Git failures no longer incorrectly claim that repository inspection failed.
- Agent response code blocks now pause progressive rendering during manual text selection so one-line selections remain stable, and copying a rendered table from cell to cell preserves its Markdown table structure.
- Commits now detect pre-commit-generated hooks whose recorded Python environment has disappeared and surface the actionable
pre-commit/virtualenv error before a later Git index-lock failure can obscure it, including forprepare-commit-msghooks that--no-verifycannot skip. - Fixed Escape input in the built-in terminal so terminal applications such as Vim can reliably leave insert mode.
- Claude and Codex delegated tasks now retain their invocation, actual task, and response in the conversation timeline, including after restore, with provider-colored identity pills and cards.
- Codex delegated activity no longer splits the parent response into unreadable fragments; delegated output identifies its originating agent, while encrypted intermediary messages remain hidden.
- Completed command cards now collapse after five seconds while they remain the newest activity, even as the agent continues its response; inspected cards stay expanded.
- Changed visible-agent tab rotation to Cmd/Ctrl+[ and Cmd/Ctrl+] so Cmd/Ctrl+Arrow remains available for native text selection and navigation.
- Follow-only agent sessions now tail newly written transcript lines and reuse cached root messages during Codex subagent refreshes, reducing memory and CPU pressure on long conversations.
- Selected agent roster pills now use a contained color glow instead of opening over the conversation, and delegated messages receive a subtle tint matching their agent.
- Restored and reopened agent conversations now settle at their latest message, with a fixed scroll-to-bottom shortcut whenever the reader is more than two viewport heights from the end.
- Restored background agent tabs now defer transcript loading until first opened instead of retaining every restored conversation in memory during startup.
- Claude streaming, finalized responses, restored history, and transcript polling now share Claude's provider message identity, preventing delayed reconciliation from rewriting an unrelated earlier response card.
- Restored SSH-authenticated Git fetch, pull, and push actions for macOS apps launched outside a terminal by recovering the user's launchd SSH agent socket when it is absent from the app environment.
- Fixed current Claude versions failing to register or reconnect to ItsyGitsy's permission prompt server by supporting MCP discovery fallback, protocol negotiation, and repeated bridge connections.
- Claude agent tabs now default to Auto approval mode, expose it in the Approval menu, and clarify that the edit-specific mode only auto-approves edits.
- Codex sub-agent lifecycle events now name and update their task cards, while Claude and Codex sessions show a compact roster of working and completed agents above the conversation.
- Repository-tree files without Git diffs now always use the complete unified view, with split and hunk layouts unavailable.
- Claude session approvals now cover further edits or writes to the approved file, while command approvals remain constrained to the exact command text.
- Pinned agent tabs now hide their close control until they are unpinned.
- Markdown PDF exports now keep split table rows contiguous, remove only the actual page-break source line, and use a PDF document export icon.
- When a branch-HEAD graph selection becomes dirty, the review automatically moves to Uncommitted changes and refreshes an open file against the working tree.
- Open working-tree diffs now refresh when agent or external edits arrive in a later status snapshot.
- Claude permission responses now retain each tool's required input fields when answering an input prompt.
- Diverged-branch banners now offer pull/rebase first and a separately confirmed force push with lease; pushing remains a separate follow-up action.
- Added direct resolution controls for delete/modify merge conflicts: keep the existing target file or accept the incoming removal.
- Fixed unpinning an agent session creating duplicate tabs for the same restored provider session.
- Added Enter-applied sidebar filters for branch and tag trees, opened from hover-revealed search controls; Escape clears and closes them.
- Reclaimed repository-header space while its hover actions are hidden, moved the active branch beside its worktree, and added the folder, IDE, and worktree actions to the native File menu.
- Added matching Collapse all controls to branch and tag trees, with each section's filter action on the right.
- Branch and tag sidebar filters now support the same text and regular-expression matching as reference filters.
- Sidebar Branches, Remotes, Stashes, and Tags now have independently scrollable panes with draggable height dividers.
- Claude now automatically reads images explicitly attached by the user, keeps Approval and Recap settings editable during active turns, and presents Recap as a toggle.
- Queued agent messages now stay anchored above the composer while the active response continues scrolling independently.
- Mermaid sequence-note, control-label, and step-number text now derives its contrast from each element's own background in both document themes.
- Returning to an agent tab after it received output in the background now restores the conversation to its latest message.
- Open working-tree diffs now remain open while fetches and background status refreshes update repository data.
- Built-in terminal applications such as Vim no longer stop accepting input after their terminal-mode handshake in production builds.
- Git hooks launched by the macOS app now inherit the user's cached login-shell toolchain environment, supporting Homebrew, Java, Node, Python, and version managers without requiring system symlinks.
- Repository tabs now carry attention signals from their unpinned agent tabs, showing amber when any agent needs input and purple when a completed turn is unread.
- Release workflows now build every platform by default while allowing a single macOS, Linux, or Windows target to be selected for faster test releases.
- Each repository tab now remembers its own changed-file Tree, List, or Repository-tree browser mode.
- Claude agent tabs now keep their working spinner active for the full turn, including while permission responses are being processed.
- Escape now returns an open file diff to the graph before a second Escape hides the graph's file panel.
- Selected text in an agent response can now be referenced through the compact Ask-agent menu and its own question popover, producing a persistent quote card in live, restored, and read-along conversations without replacing the main composer draft.
- Large agent transcripts now open in read-along mode using a bounded recent window instead of appearing empty after crossing the transcript-size limit.
- Absolute and home-relative local file paths written as inline code in agent responses are now clickable and open in the configured editor.
- Release hardening now makes dependency audits fail closed, limits recovered shell state to toolchain paths, authenticates Claude permission bridges, and stores agent attachments in a validated private cache directory.
- Selecting the checked-out commit now remains stable while uncommitted changes are present instead of jumping back to the working-tree row.
0.10.4 (2026-08-26)
- Prevented hidden restored agent tabs from eagerly starting providers and loading transcripts at application startup; a tab starts on first selection and remains alive thereafter.
- Recent agent sessions again use their filesystem modified time for ordering, avoiding transcript-wide timestamp scans during picker loading.
- Restored Claude and Codex tabs now verify that their stored provider session still exists before attempting to resume it, avoiding invalid-session startup failures.
- Agent session discovery and resume now work across repositories for both providers; Claude conversations launch at their own repository origin so project-scoped sessions can be located.
- Claude “Steer” now sends added information into its live stream-json turn; Stop remains the explicit action that ends and resumes a Claude session.
- Recent Claude and Codex sessions now show their provider session ID and no longer repeatedly rescan local history while the picker is idle.
- Improved frontend responsiveness by isolating live history scrolling, reducing diff-line measurements, batching streamed agent text, and lowering terminal scrollback to 10,000 lines.
- Improved agent command cards: keep the newest command open during a turn, collapse superseded or completed-turn commands after five seconds, and preserve cards being inspected.
- Improved Claude recent conversation names by excluding internal transcript, interruption, mode-switch, and observer-helper messages while retaining genuine user prompts.
- Improved agent recent conversations by showing each session's origin and subtly highlighting sessions from the active repository.
- Improved agent recent conversations to sort by the latest recorded transcript activity.
- Added a repository-only toggle to agent recent conversations, while keeping active-repository sessions visibly outlined in the all-repositories view.
- Improved resumed agent conversations by loading a bounded recent history instead of rendering entire transcripts at startup.
0.10.3 (2026-08-24)
- Completed Codex command approvals that used “Always allow” now offer “Only once”, which removes that exact saved command rule for future requests without affecting the running command.
- Fixed Claude ordinary responses and tool output mentioning rate limits being mistaken for an API rate-limit failure.
- Claude agent responses that arrive as a complete stream event now render reliably, even when the CLI does not emit text deltas first.
- Migrated the Claude agent tab to Claude Code's supported
--printJSONL stream protocol, removing legacy control frames that could leave turns stuck without a response. - Fixed Claude interruption with current stream-json CLI versions: stopping a turn now ends the active CLI process and resumes the conversation, instead of sending a diagnostic control request.
- Claude OAuth/authentication failures now offer a system-terminal
claude /loginrecovery action and an explicit retry, without storing credentials in ItsyGitsy. - Historical file diffs can now open the path from the current checkout in an external editor; deleted paths clearly explain that the file no longer exists there.
- Fixed agent File changes hunk links to wait for the selected patch before scrolling to the requested hunk, and split the application stylesheet into ordered foundation, workspace, review, rendered-content, and agent files.
- Fixed agent code-block copy to preserve the exact selected terminal text, restored Codex command cards from resumed history, packaged terminal selection highlighting, and resume-to-bottom scrolling for both agent providers.
0.10.0 (2026-08-23)
- Improved collapsed agent command cards with a left-side expand caret, utility/subcommand summaries, compact right-aligned result icons, and the full command retained when expanded.
- Fixed review Steer agent and Ask agent actions to hide when no provider is available; Steer agent now uses the agent-purple accent.
- Agent File changes links now use reviewable repository paths, expose hunk targets that open and highlight the canonical ReviewPanel diff, and remain expanded after completion.
- Added local content search across the last 7 days of Codex and Claude sessions, with recent conversations filling the available start-surface space.
- Added native agent-process lifecycle fixtures covering normal and delayed output, crash/EOF, stop, restart, and startup cleanup without requiring provider credentials.
- Added Codex and Claude manager cleanup coverage for abandoned sessions, plus pinned-agent restoration coverage across repository origins.
- Added local coding-agent lifecycle regression coverage for provider selection, session closure, recent-session resume, and Codex/Claude event normalization.
- Added browser visual regression coverage for the ReviewPanel commit/file views and rendered Markdown split, unified, Result, theme, and full-screen Mermaid flows.
- Added Markdown qualification coverage for malformed input, safe/unsafe HTML, data and remote images, local anchors, external links, and rejected JavaScript URLs.
- Branch pushes now keep cached remote tag metadata, avoiding unnecessary remote tag discovery while reference badges refresh.
- Agent sessions blocked by another active writer now show the friendly session name, retain the session ID as technical context, and offer a retry action.
- Committing now keeps Uncommitted changes selected while the graph and working tree refresh, avoiding a distracting temporary jump to the new commit.
- Analytics install-ID tags now migrate from browser-only storage to a shared, Access-protected Cloudflare D1 store.
- Codex and Claude now report rate-limit failures explicitly, and rate-limit meters below 5% remaining receive a red border for visibility.
- Fixed stash rows created on non-leading branch commits temporarily breaking vertical commit-graph lanes.
- Added a remote-branch context action to pull that branch without switching the current checkout, safely fast-forwarding or creating its local tracking branch.
- Added New file to repository-tree folder and empty-space context menus, with an inline filename placeholder and Enter-to-create worktree files.
- Added New folder to the same repository-tree flow, retaining newly created empty folders in the browser.
- Added Rename to repository-tree file and folder context menus, with safe inline path updates.
- Added Delete to repository-tree file and folder context menus with confirmation and safe empty-folder handling.
- Repository-tree file counts now exclude files ignored by Git while keeping them browsable.
- Moved the working-tree commit/stash message editor to the top of the review panel alongside existing commit message editing, retaining snippet parsing and submit shortcuts.
0.9.15 (2026-08-21)
- Deleting a stash is now undoable and redoable.
- Serialized repository Git mutations per worktree, kept new commits visible while status refreshes, and kept commit graph actions available while work is queued.
- Fixed inline graph tag-editor placement with flexible commit columns and made newly created tags appear immediately, rolling them back if Git rejects creation.
- Made local branch creation, renaming, and deletion update graph labels immediately, with failure rollback.
- Creating a branch at the current commit checks it out without disturbing dirty changes; creating one at another commit leaves the checkout untouched.
- Added responsive compact commit-graph mode: branches, graph, and message/tags remain visible in narrow panes, with delayed hover details for hidden metadata.
- Reworked commit graph columns so Author, Date, SHA, and +/- stay right-aligned at their adjustable widths while Commit message/Tags absorb the remaining space.
- Made right-anchored column resize handles follow the visible boundary direction, including the SHA/+/- divider.
- Added subtle column separators to the commit graph header.
- Tightened the default SHA column by overlaying its copy icon, and right-aligned Author and Date values.
- Made resizing the Commit message/Tags column proportionally redistribute width across the right-hand metadata columns.
- Added a close button to the movable review panel; closing it gives the graph the space back, and selecting another commit or Uncommitted changes restores it on its last side.
- Pressing Escape while viewing commit or Uncommitted changes details now hides the review panel and returns the space to the graph; clicking a commit or working-tree row reopens it.
- Improved external opening for extensionless and hidden text files such as
.env: macOS now falls back to a text editor and reports a clear recovery message when no opener is available. - Improved terminal selection visibility with an opaque highlight and contrasting selected text while preserving terminal copying.
- Replaced the diff toolbar's Edit file control with the context-menu action “Open in external editor”, available throughout eligible file views.
- Added staged-file context menus with Open file and Open folder actions, and enabled Open in external editor from staged diffs and rendered Markdown previews.
- Added unread completion attention to background agent tabs, made the agent-origin repository name activate its tab, and fixed inactive repositories selecting Uncommitted changes after their checked-out HEAD becomes dirty.
- Fixed agent command cards to stay within narrow agent tabs, enabled copying selected terminal output with Cmd/Ctrl+C, and repaired Claude structured-question replies.
- Fixed Mermaid SVG sanitization output so visible label fallback styles and explicit text paint remain intact without reintroducing unsafe inline styles.
- Repository-tree files without Git diffs, including ignored or never-tracked files such as
.env, now open as their current worktree contents. - Dimmed ignored folders in the full repository tree and added the existing native “Open file” action to repository-file context menus, including empty files.
- Fixed ignored directories such as
.claudebeing presented as selectable files; their contents are now listed as folder children in the full repository tree. - Improved full repository tree readability: ignored files are dimmed, normal files have stronger contrast, and hidden directory entries such as
.clauderetain their names. - Fixed remote-only branch context menus so remote branches can be deleted through the normal confirmation flow; full repository file trees now include ignored files.
- Added a worktree indicator to branch pills in the graph and repository sidebar when multiple worktrees exist, including branches checked out in another worktree.
- Added Cmd/Ctrl+F search for the focused agent panel, with a purple right-docked find bar, match navigation, and selection scrolling.
- Reduced agent conversation noise by making completed command and file-change cards collapse after five seconds with a manual expand/collapse caret; Codex file-change cards now list changed files with available additions and deletions.
- Replaced ItsyGitsy-owned remembered agent approvals with provider-native choices: Codex now surfaces its proposed persistent command and network rules, while session-wide selections no longer silently survive an app restart.
- Improved Claude and Codex recent-session cards with concise age labels and useful conversation topics by filtering Claude-Mem observer, IDE, and continuation messages.
- Fixed pinned agent tabs being replaced by the first-visit agent chooser on repositories without a saved provider; that chooser now opens from
+instead. - Improved agent attention handling: background conversations scroll to their pending permission, while bottom terminal tabs are now shared across repository switches without restarting their shells.
- Simplified agent session selection: an empty tab's full placeholder is now the single place to reopen a recent Claude or Codex conversation; typing starts a new session without a duplicate tab-level picker.
- Changed agent tab names so a single click activates the tab and a double-click enters rename mode; the separate caret control is removed.
- Improved Markdown PDF export with atomic table-row pagination and explicit page breaks;
<pagebreak/>now aliases the existing page-break div syntax, adjacent automatic heading breaks are coalesced, and breaks can be inserted or removed from the editable rendered preview.
0.9.12 (2026-08-20)
- Added: Agent tabs now gain an amber attention accent and a periodic nudge when the agent is waiting for a question or confirmation.
0.9.11 (2026-08-18)
- Added Markdown-aware copying for selected Codex and Claude conversation content, preserving headings, lists, links, emphasis, quotes, tables, and code blocks.
- Added: Agent conversations recognize clearly ranked terminal column output and render it as a scrollable Markdown table.
0.9.7 (2026-08-17)
- Fixed opening a repository-tree file so its first source character is retained, including in the inline line editor; the repository browser now remains visible while that editable file is open.
- Improved new repositories with uncommitted files: the working-tree row now replaces the redundant empty-history message.
- Fixed custom-named pinned agent tabs being lost before their first message; their name now keeps the pin across restarts.
- Improved file-tree scrolling by keeping per-row horizontal scrollbars invisible in release builds.
- Kept binary, submodule, and permission details inline for spacious diff rows while repository-tree rows remain compact.
- Added a compact Uncommitted changes context strip when browsing the full repository from the working tree instead of showing the last commit summary.
- Fixed Markdown PDF export diagrams being clipped: Mermaid diagrams now receive the printable A4 height constraint inside their sandboxed render frame before page planning.
- Improved repository-tree performance by caching the full tree and filtered projections, indexing file/folder status metadata once per tree payload, and allowing offscreen rows to skip browser layout and paint work.
- Added a contextual file browser to the movable review-files panel: the current checkout can switch from commit changes to the full repository tree, filter paths, remember its mode and open folders per repository, and open files for the existing inline-edit workflow. Its inventory no longer waits for expensive line-stat calculations. Modified files are italic amber, new files green, ignored files muted grey, and deleted files muted with strikethrough; changed and newly-created folders use amber and green tones.
- Fixed repository startup selection to prefer Uncommitted changes, or the checked-out branch tip when clean, instead of the newest commit across all references.
0.9.3 (2026-08-16)
- Improved agent copy feedback with a temporary green checkmark and constrained recent-session menus to their owning panel.
- Added visible shared-image thumbnails in agent messages with click-to-expand viewing, and corrected session-row grid alignment.
- Persisted Codex session image references so shared-image thumbnails can be restored after reopening a session.
- Changed diverged push recovery to propose pulling remote updates, rebasing local commits, and pushing instead of immediately offering force-with-lease.
- Added a scroll-to-bottom control for agent conversations without interrupting a manually scrolled-up view during live output.
- Added local-branch context-menu actions for normal Push and explicit Force push with lease.
- Matched double-click rename typography to the compact agent tab label and made recent-session menus close when clicking outside.
0.9.2 (2026-08-15)
- Improved: Pasted agent images now show as removable thumbnail attachments above both Codex and Claude composers instead of exposing long temporary-file paths.
- Improved: Queued agent messages use a smaller preview and can be sent immediately by interrupting the active Codex or Claude turn.
- Improved: Agent composer settings are grouped behind a compact model-and-effort control, with Codex plan, rate-limit, and context indicators in the bottom bar.
- Improved: Agent composer settings now open from the left, show Claude's reported model, and use a compact red stop-icon control beside Send while a turn is running.
- Improved: Composer menus close when clicking outside; Codex meters show colored thresholds, remaining rate-limit percentages, reset times on hover, percentage of context used relative to the selected model window, and secondary limits only when Codex provides them.
- Improved: Agent composers now place Stop in the textarea's top-right corner; Escape stops the active turn and Cmd/Ctrl+Shift+Enter interrupts to send the next queued message.
- Added: Agent-specific shortcuts now appear in the hotkeys panel when agents are available, and composer text uses conversation typography with inline-code and fenced-code highlighting.
- Fixed: Resolved agent approval cards now retain the original question, command, and details while replacing action buttons with the selected outcome.
- Added: Frontend test runs now have a
test:coveragecommand with a percentage report, and CI publishes the Vitest coverage summary alongside expanded native clipboard validation tests. - Added: Rust test runs now have a
test:rust:coveragecommand using cargo-llvm-cov, with CI reporting line, function, and region percentages for the Tauri backend.
0.9.1 (2026-08-15)
- Changed: Opening a repository now selects its Uncommitted changes by default when present; clean repositories still select the checked-out branch tip.
- Added: Rendered Markdown Result view can now export directly to an A4 PDF with a timestamped Markdown filename and an ItsyGitsy watermark on every page.
- Fixed: Approval cards now support Cmd/Ctrl+number shortcuts without stealing focus from the agent composer; the next number focuses the composer for a custom response.
- Fixed: Messages sent while Codex or Claude is busy now appear in a removable queued-message preview and run automatically after the active turn completes.
0.9.0 (2026-08-13)
- Fixed: Newly arrived Claude approvals and questions now scroll the rendered conversation fully to the composer instead of leaving their controls clipped.
- Added: Sync now fast-forwards clean local tracking branches in the background after fetching their remotes, while leaving dirty or linked-worktree checkouts untouched.
- Improved: Rendered Claude Bash activity now keeps the provider's stated reason immediately before the command card, including after session restore.
- Improved: Rendered agent conversations now use text one point larger across messages, code, activity, approvals, and start-session guidance.
- Added: Claude sessions can now opt into native idle session recaps from the composer settings; the preference is retained for future Claude sessions.
- Improved: Unified diffs now rely on their existing green/red line treatment instead of rendering
+and-prefixes inside changed source lines. - Improved: Exiting a shell now automatically closes its terminal tab and returns the bottom console to Logs.
- Improved: Pinned agent sessions now survive application restarts and resume their exact Claude or Codex conversation when their origin repository opens.
- Improved: Agent tab controls now stay compact until hover or keyboard focus; pinned-session indicators remain visible.
- Fixed: Pinned agent sessions now stay visible when opening or switching to a different repository, without starting a destination-repository agent.
- Fixed: Clicking an inactive agent tab now always switches to it; recent sessions open only from the tab's explicit dropdown control.
- Improved: Terminal scrollback now retains up to 50,000 lines; the bottom console can expand across the full workspace and toggles with Cmd/Ctrl+Shift+`.
- Improved: Approved agent commands appear immediately, then receive a clearly labelled result once execution completes.
- Improved: Repository tab changes no longer keep hidden rendered-agent panels polling native terminal state or restart the background tab warmer for unrelated filter-state updates.
- Fixed: Agent panels no longer repeatedly reload recent sessions whenever conversation state changes; hidden repository panels also skip that work.
- Fixed: Rendered agent tabs now retain their own native session ID without restarting the running process, so multiple Claude or Codex tabs run in parallel instead of replacing one another.
- Added: Agent-session tabs can now be pinned across repository switches; the rendered panel keeps its conversation open and labels its origin repository.
- Changed: Claude approval cards now identify the requested tool and show its target path or URL, making file-operation decisions understandable.
- Fixed: Agent composer keystrokes no longer reparse and sanitize the full rendered conversation; unchanged Markdown responses are memoized per message.
- Added: Rendered Claude conversations now show every Bash tool execution with its command, working directory, live/final output, and result after approval.
- Changed: Approval-gated Claude Bash activity now appears only after approval; rejected requests render as declined without implying that they ran.
- Fixed: Restored Claude sessions now retain their completed Bash activity cards and command output instead of discarding them from transcript history.
- Fixed: Claude stream-JSON turns now carry the tracked native conversation ID, keeping follow-up history in the same session for IDE clients to resume.
- Added: Inline code in rendered Codex and Claude responses now has a compact copy action beside it, matching fenced code blocks.
- Fixed: Rendered agent code blocks now opt into direct text selection and horizontal-only scrolling for more predictable targeted copies.
- Fixed: Rendered agent code-block copy controls now sit outside the selectable code element, preventing them from becoming a drag-selection boundary.
- Fixed: Agent response blocks now remain stable during live timers and unrelated streaming updates; conversation auto-scroll pauses during selection.
- Fixed: Rendered Codex and Claude responses now preserve normal browser text selection; only links and code-copy controls intercept their clicks.
- Fixed: Terminal sessions now leave a small bottom inset and show a visible blinking bar cursor in the packaged WebView.
- Added: Rendered Codex and Claude code blocks now have a copy-to-clipboard action with immediate copied feedback.
- Changed: Code-block copying now removes common shell prompt glyphs from the copied commands.
- Fixed: Terminal sizing now fits xterm inside a dedicated inset viewport, so its lowest row respects the bottom clearance instead of painting into it.
- Fixed: The terminal inset now shares the terminal panel background instead of exposing xterm's default black viewport stripe.
- Fixed: Terminal drag selection now bypasses the refreshed DOM text rows so targeted copies do not expand into unpredictable blocks.
- Added: Codex approval requests now appear as interactive cards with bidirectional app-server responses.
- Changed: Codex approval cards now distinguish rejecting, approving once, and approving for the session.
- Added: Codex structured user-input requests now render as answer cards with choices or free-text fields.
- Fixed: Commit-message typing no longer synchronizes the full review workspace on every keystroke.
- Added: Codex command and file-change lifecycle events now render as compact activity cards with live output and final status.
- Fixed: Links in Codex Markdown no longer navigate the Tauri webview; external links open safely and repository-relative links route through the worktree review view.
- Changed: Codex repository-relative Markdown links now open the file in the worktree review view.
- Fixed: Claude now uses the CLI-supported
manualpermission mode by default, avoiding rejected turns, and its rendered Markdown links use the same safe repository navigation as Codex. - Changed: Claude rendered sessions now use the persistent Claude Code stream-JSON control protocol, keeping the native session alive and exposing structured permission requests for interactive approval cards.
- Added: Claude
AskUserQuestionrequests now render as structured input cards, including single- and multi-select answers. - Added: Claude permission cards can now apply the CLI-provided permission suggestions for the current session.
- Added: The review/files panel defaults to the right of the graph, or left while the agent panel is open. Its dotted top handle moves it per repository and per mode for the current app session; keyboard resizing follows its visual side.
- Added: Empty Codex sessions now show the five most recent conversations and current rate-limit headroom; typing starts a new session, while selecting a recent conversation resumes it. The existing tab dropdown remains available.
- Changed: The agent panel header no longer shows the redundant Agent label.
- Fixed: Hiding the AI panel now preserves active Codex and Claude sessions; reopening the panel no longer restarts their native processes.
- Added: The rendered Codex composer now shows live turn duration and token usage when available, keeps the send action inside the input, and exposes model, reasoning-effort, and approval controls for subsequent turns.
- Added: Rendered Claude and Codex conversations now expose a lower-right Stop action that interrupts the active turn without closing the agent session.
- Added: Claude agent sessions now have an experimental rendered conversation surface backed by Claude Code stream-JSON output, with Markdown responses, session resume, recent-session selection, and a structured composer.
- Changed: Codex model and reasoning-effort choices now come from the app-server
model/listresponse instead of a maintained hardcoded list. - Added: Codex agent sessions now have an experimental rendered conversation surface backed by Codex app-server events, with Markdown responses and structured local image inputs; the terminal path remains available for Claude and fallback compatibility.
- Changed: The repository Logs/Terminal console now spans the review and graph workspace columns, and the agent composer has a taller resizable input.
- Added: Agent panels now provide a separate multiline composer; Enter sends, Shift+Enter inserts a new line, and pasted images become private local agent attachments.
- Fixed: Resuming an agent session now uses a fresh terminal process ID, preventing the previous process teardown from closing the agent panel or killing the resumed session.
- Fixed: Choosing a recent Claude or Codex session no longer closes the agent panel when the previous terminal instance is torn down.
- Fixed: Repository tabs now span the review and graph columns instead of stopping at the review pane.
- Fixed: The uncommitted-changes history row no longer renders underneath the initial commit-history loading state when opening a repository with a dirty worktree.
- Fixed: Result-mode Markdown for newly added files now renders only the clean final document instead of carrying addition/deletion strikethrough annotations.
- Fixed: Staging a marker-free conflict now performs the real Git stage operation immediately instead of leaving a virtual staged state blocked behind recovery Continue.
- Fixed: External conflict-file edits now refresh the worktree and conflict-resolution payload when ItsyGitsy regains focus; compact sidebars also show an orange merge-resolution label.
- Fixed: Repositories with a markerless unmerged Git index now remain in an explicit conflict-resolution state instead of appearing clean and blocking fast-forward with an opaque stash error.
- Fixed: Packaged terminal and agent panes now use a bundled ANSI palette, restoring shell and CLI colors under the hardened desktop CSP.
- Fixed: Packaged releases again render Markdown previews. Their sandbox script now has a narrow CSP hash, allowing only the fixed height-and-interaction bridge while keeping the rendered document opaque.
- Fixed: Terminal and agent panels now ship a full Nerd Font asset instead of relying on macOS font discovery, restoring prompt and agent glyphs while using a more compact terminal type size.
- Changed: The bottom repository console is now named RepositoryConsole to reflect that it hosts both Git operation logs and terminal sessions; its CSS, persisted height key, and focus event use the new repository-console naming.
- Fixed: Bottom terminals no longer expose Claude/Codex actions, and packaged xterm sessions refresh after the Powerline font becomes available instead of retaining fallback glyphs.
- Fixed: Packaged terminal sessions now prefer the Powerline-compatible Meslo font so Powerlevel10k prompt separators render correctly; hardened update-notes close-button sizing.
- Fixed: Packaged builds now discover Claude and Codex from the same augmented PATH used by the app's terminal processes, restoring the AI control and agent launches when installed outside a shell.
- Added: Cmd+Shift+A toggles and focuses the agent panel; Cmd+Shift+T opens a terminal; Cmd+Shift+G opens the Git log.
- Fixed: Inline diff edits now retain the current review while the refreshed patch loads. This prevents a distracting screen refresh after each edit.
- Fixed: Mermaid diagrams now retain their sanitized theme stylesheet, restoring node fills, strokes, labels, and diagram colors in rendered Markdown review.
- Fixed: Saving a filter preset now shows an in-progress spinner and a transient confirmation checkmark.
- Agent sessions now require a per-repository acknowledgement that their native CLI has live terminal access before the first launch.
- Added CI dependency audits for production JavaScript and Rust dependencies.
- Security: Agent attachment images are private, expire after 24 hours, and agent transcript history is bounded to reduce long-lived local data.
- Security: Agent session indexing skips symlinks and has bounded depth, file size, and candidate limits; tightened the desktop content-security policy.
- Changed: Agent tabs now launch Claude and Codex directly in their PTYs, without typing a shell command or retrying failed launches in a loop.
- Security: Updated
quick-xml, DOMPurify, and Mermaid; rendered Mermaid SVG now receives an explicit restrictive sanitization pass before insertion. - Added: The title-bar agent control now sits beside Settings and lets you choose the default Claude or Codex agent for the current repository.
- Changed: The agent title-bar control now uses the same split-button layout as Pull and Push, with a purple repository-default menu.
- Fixed: Closing an agent's final tab, including after exiting it with Ctrl+C, closes agent mode instead of leaving a stalled Retry screen.
- Fixed: Fresh Codex session discovery now ignores pre-existing global Codex sessions, preventing ItsyGitsy from resuming another terminal's session.
- Added: Agent tabs can now choose recent Claude or Codex sessions by their short summary and last-updated time, with external sessions clearly marked.
- Fixed: Claude session validation now checks the current repository's transcript directly, avoiding a startup scan of every local Claude session.
- Fixed: Detecting a newly-created agent session no longer restarts its active PTY, preventing Claude from entering a launch loop.
- Fixed: The title-bar action controls remain anchored to the outer window's top-right corner while resizing the review and agent panes.
- Changed: Agent tabs now open their recent-session list when clicked while active; switching to another tab simply activates it.
- Changed: Recent sessions load newest-first and inspect only the first ten repository matches, with cleaner user-request titles for Codex sessions.
- Changed: Recent-session entries now use a stable session topic plus a left-trimmed preview of the latest meaningful user message.
- Changed: The recent-session menu now shows a loading indicator while agent sessions are being read, and ignores transcript-boundary records.
- Changed: Pull and Push now sit beside AI in the fixed title-bar action group, freeing space for repository tabs and keeping all actions layout-independent.
- Fixed: Embedded transcript history records are excluded from recent sessions.
- Changed: Available updates now appear beside Pull in the fixed title-bar action group, returning their former grid space to repository tabs.
- Changed: Agent terminals use the installed Meslo Nerd Font with roomier line spacing; stalled launches now show a Retry action rather than waiting forever.
- Added: Ask agent keeps the source line highlighted, identifies added or removed diff context, supports a resizable question field, and accepts pasted image attachments as local agent-readable files.
- Fixed: Fresh Claude agent tabs now start with a new session ID instead of incorrectly trying to resume that newly generated ID.
- Fixed: Agent startup now retries process detection and recovers after failed startup checks instead of leaving the panel on “Starting agent…”.
- Changed: The agent panel toggle and context-menu Bot action now use fixed centered icon spacing.
- Changed: Agent review menus now show the repository-default agent, mark it with a checkmark, and allow switching Claude/Codex before sending.
- Changed: The side panel hides its PTY terminal while it is not inside an active Claude or Codex process.
- Changed: Diff line agent actions now adapt to installed agents: “Ask AI” offers Claude/Codex switching, while single-agent setups name their agent.
- Changed: The Ask agent popover can now be dragged by its title so it can be moved away from the code under review.
- Fixed: Agent prompt delivery now recovers a shell-backed agent tab, waits for the agent process, and submits pasted prompts with a separate Enter.
- Fixed: Questions sent from the diff now include the final Enter keystroke, so the agent actually receives the prompt instead of leaving it in its input buffer.
- Fixed: Claude sessions that report a missing conversation now recover from the explicit CLI error, create a fresh session, and safely retry prompts.
- Fixed: Agent prompts now wait for the agent process to be ready before writing to the PTY, preventing stale-session errors from sending text to the shell.
- Added: Agent questions are retained per repository and file, with terminal output captured as the associated reply for later review.
- Fixed: A missing stored Claude or Codex session now falls back to a new session instead of sending the question into the shell.
- Changed: The agent question popover is anchored to the reviewed line, uses Enter to send and Shift+Enter for a new line, and keeps the last question visible beneath the agent terminal.
- Fixed: Clicking Ask agent now opens the question popover even without a selected text range.
- Changed: Agent review actions now open a question popover and resume only ItsyGitsy-owned Claude/Codex sessions per repository.
- Added: “Ask agent” is available from a diff line context menu, carrying selected text or the current line to the repository’s selected agent.
- Changed: The agent panel now uses an agent icon, hides completely when no agent CLI is installed, and remembers the default Claude/Codex choice per repository.
- Changed: The right panel is now an agent-only Claude/Codex panel with startup detection and overlaid agent tabs; the bottom panel remains a general terminal.
- Added: Terminal bridge actions for resuming Claude or Codex sessions and sending selected diff context as a safe, unsent prompt.
- Changed: Hiding the side terminal now preserves its open tabs and PTY sessions for quick restoration.
- Changed: Background auto-fetches now refresh the graph without invalidating an open code or Markdown review.
- Added: Removed diff lines now show a compact blame summary on hover, including the author, relative and exact date, and commit subject.
- Added: Bottom and side terminal panels with multiple tabs, repository-scoped terminal state, persistent PTY shell sessions, and ANSI-colored output.
- Added: Local branches can now be pushed from their context menu without checking them out, with explicit remote selection or an All remotes action.
- Added: Cmd/Ctrl+Shift+F searches all files in the selected commit or working tree and shows match counts beside matching files.
- Added: Cmd/Ctrl+F find with match highlighting and navigation for the open diff.
- Changed: Markdown rendering now uses Code and Rendered modes; Rendered offers Unified, Split, and annotation-free Result layouts with an independent dark or light document theme.
- Added: The Markdown Review and Result views now expose hover-only gutter controls for staging, discarding, and unstaging, while clicking editable rendered content opens a source-line edit popover without leaving the review view.
- Added: Review settings now control whether Markdown files open in rendered Review mode by default.
- Added: Mermaid diagrams in Markdown review now offer a click-activated full-size viewer with zoom, pan, Escape, and close controls.
- Added: Markdown Review mode now supports Combined and Split layouts, with word-level red strikethroughs for removals and green underlined insertions in the combined document.
- Added: Markdown files can now be reviewed in sanitized rendered, split, and result views, including local Mermaid diagram rendering and source-line edit/move actions.
- Added: Filter combinations can now be saved as per-repository presets, shared as definitions, imported, and managed from the filter bar.
- Added: Push options now include recent local tags when pushing the current branch.
- Fixed: Applying or popping a stash now works with existing non-conflicting working tree changes instead of requiring a clean tree.
- Added: Undo and redo now include successful stash apply and pop actions.
- Added: Unstaged changes now have a Stash unchanged action that preserves staged files and supports undo/redo.
- Added: Branch merge menus now offer Merge (try fast-forward), Merge commit, Rebase and merge, Squash merge, and Into working tree strategies.
- Added: Repository tabs for linked worktrees now render as grouped binder tabs and move together when reordered.
- Changed: Repository tabs with uncommitted changes now show their title in italic.
- Added: Rendered Markdown links now show their URI on hover, scroll to local anchors, and open external HTTP(S) links in the system browser.
- Changed: Markdown Result and Unified views now share the same block and heading spacing.
- Fixed: Opening Markdown Result view no longer crashes the renderer into a blank screen.
- Added: Rendered Markdown now expands [TOC] into links to document headings, and full-screen Mermaid comparisons label Before and After panels.
- Fixed: Switching from Unified to Split Markdown rendering now populates both sides immediately.
- Fixed: Branch Push counts now follow first-parent history instead of counting every commit brought in through merged branches.
- Fixed: Jumping to an older branch reference now keeps the complete newer history available for following the graph forward.
- Changed: Older branch jumps now show the first loaded history page immediately while the remaining pages load in the background.
- Fixed:
~+tag shorthand now increments numeric prerelease suffixes such asbeta.3tobeta.4instead of dropping to the stable version. - Added: Conflict resolution now supports Hunk/Full context and a three-pane Split layout with Current and Incoming sources above the editable Result.
- Added: The repeatable conflict smoke fixture now covers rename, binary, and submodule conflicts alongside text, add/add, and delete/modify cases.
- Added: Playwright startup recovery checks now reload the app and verify merge, rebase, cherry-pick, and revert state is reconstructed with fresh bootstrap and recovery-plan calls.
- Fixed: Opening conflicted files no longer asks the ordinary working-tree patch loader to inspect an unmerged path, avoiding stale “selected file is no longer changed” errors.
- Fixed: Selecting a different conflict file now clears the previous file’s patch and resolution cache before loading the new path.
- Changed: Split conflict review now gives the Current and Incoming panes independent scrolling and highlights changed words within corresponding long lines.
- Changed: Split conflict source panes now synchronize vertical and horizontal scrolling while inspecting corresponding changes.
- Changed: Conflict resolution side picks now stay visibly active until a mixed or edited result is started, with a subtle active-pill hover glow.
- Added: Conflict recovery now reports enabled rerere settings and configured per-path merge drivers without exposing driver commands in the UI.
- Security: Hardened local terminal and agent IPC with bounded identifiers, input, dimensions, session counts, agent-history inputs, and child-process cleanup on application exit.
- Security: External links now use parsed HTTP(S) URLs, reject embedded credentials, and open through native Windows APIs instead of
cmd.exe. - Security: Markdown sanitization now fails closed outside a browser and its tests execute against DOMPurify in a real DOM environment.
- Security: Release publishing now verifies the exact source SHA, scopes write permissions to the publishing job, supports a protected release environment, and optionally signs and verifies Windows packages with Authenticode.
- Maintenance: Added weekly CI security runs and grouped Dependabot updates for npm, Cargo, and GitHub Actions dependencies.
- Security: GitHub Actions now use immutable commit SHAs, and Rust auditing denies new unsound advisories while documenting the single unused Linux GTK3
glib::VariantStrIterexception. - Security: Release publication now includes signed CycloneDX frontend and Rust SBOMs, package checksums, and an in-toto SLSA provenance statement.
- Added: The uncommitted-changes history row now shows its staged and unstaged line totals in the
+/-column as the working tree refreshes. - Added: Cmd+Shift+D toggles the left repository sidebar and appears in the shortcuts popover.
- Fixed: Packaged releases again execute the rendered-Markdown sandbox bridge, restoring preview content rather than showing only change gutters.
- Fixed: Packaged rendered-Markdown previews reapply their trusted stylesheet through the sandbox bridge when WKWebView rejects the inline style element.
- Fixed: Rendered-Markdown line actions remain visible and usable in packaged builds by using the sandbox hover bridge rather than iframe-bound CSS hover.
- Fixed: Packaged Mermaid diagrams preserve their sanitized shape and label styles in both document and full-screen previews.
- Fixed: Mermaid database and other custom shapes retain their safe SVG presentation attributes, rather than falling back to black fills.
- Fixed: Mermaid cylinder labels keep each text row together while restoring their centered SVG origin.
- Added: Terminal shell selection in Settings. Windows defaults to WSL, Git Bash, PowerShell, then cmd.exe; macOS and Linux retain their existing shell defaults.
- Changed: Settings now use one roomier fixed dialog size, with independently scrollable section content.
- Added: Working-tree file menus can add a selected staged or unstaged path to .gitignore.
- Added: The navigation sidebar can collapse into a compact identity and action rail to make room for repository content.
- Improved: Strict, rendered Mermaid labels now preserve HTML entities and harmless emphasis without enabling HTML labels or embedded foreign objects.
- Added: Diff questions handed to Claude or Codex now render as purple review context cards with a link back to the originating review file and the exact selected diff preserved on demand.
- Improved: Rendered Markdown tables preserve a readable first column in split review instead of collapsing short labels character by character.
- Added: Shift+Enter in a rendered Markdown source-line editor now splits the actual working-tree line, matching source-diff editing instead of inserting a visual-only line break.
- Fixed: Rendered Mermaid labels now use contrasting text for class-defined light nodes and dark database cylinders in both document themes.
- Fixed: The full-screen Mermaid viewer now follows the selected light or dark document theme instead of always using a dark canvas.
- Fixed: Light-theme Mermaid flowchart nodes now ignore Mermaid's generic dark default class when choosing readable label contrast.
- Improved: Rendered Codex and Claude composers now start two lines taller and can be resized from their top edge.
- Added: Agent tabs can be renamed with persistent aliases, shown consistently in their provider-colored tabs and recent-conversation lists.
- Fixed an issue where precommit hooks would not run due to paths missing in PATH
- First version
0.8.0 (2026-07-31)
- Changed: Clean checked-out branches now automatically fast-forward when the existing fast-forward prompt is safe to run.
- Changed: Tag version shorthand now also accepts
˜+and scopesfeat(package):bumps to matching slash-prefixed tag families. - Fixed: Recent-tag pushes now include newly created lightweight tags even when they point at older commits.
- Added: Cmd/Ctrl+Shift+Plus and Cmd/Ctrl+Shift+Minus now increase and decrease the interface text size.
- Added: Inactive repository tabs now warm their history, references, working tree, stashes, review details, and selected diffs so tab switches can restore cached content immediately.
- Changed: Active worktree labels now use a more visible colored pill in the repository header.
- Added: Worktrees can now be created from the worktree dropdown, with a remembered isolated-branch toggle that creates
worktree/branches and offers merge-back from the worktree indicator. - Added: Commit history now includes separate branch, tag, and line-change columns so labels are easier to scan and large commits are easier to spot.
- Added: Right-clicking uncommitted changes can now create a branch at the current HEAD.
- Added: Creating tags now supports
~+and~nextshorthand for resolving the next conventional-commit version in a tag family. - Added: Applied filter pills can now be clicked and edited inline while the
xbutton still removes them. - Added: Text size settings now include XL and scale the repository tabs and sidebar branch, tag, remote, and stash lists.
- Fixed: Cmd/Ctrl+Shift+[ and Cmd/Ctrl+Shift+] now rotate across repository tabs again and appear in the shortcuts popover.
- Fixed: Worktree creation now prefers existing local branches over recreating same-name remote tracking branches, and default folders include the repository name.
- Changed: Commit tag pills now overlap in compact rows and expand horizontally on hover when there is enough message-column space, falling back to the vertical tag panel when needed.
- Fixed: The fast-forward banner now stays hidden while an automatic safe fast-forward is already running.
- Added: Commit context menus can fast-forward the current branch to a selected descendant commit without using reset.
0.7.0 (2026-07-28)
- Added: Branch context menus now group rebase actions into a submenu with explicit options for rebasing the current branch onto the selected branch or the selected branch onto the current branch.
- Fixed: Tag sidebar folders now avoid avoidable color collisions between visible top-level categories and use a larger category palette.
- Added: Rejected pushes now offer an update-and-push banner when the remote moved ahead and the current branch can be rebased onto upstream before pushing.
- Changed: Diverged branch pushes now require an in-app force-push-with-lease confirmation before rewriting the remote branch.
- Fixed: Fast-forward updates now temporarily stash uncommitted changes and reapply them after the branch advances.
- Added: Support switching between and creating worktrees.
- Added: Creating a branch with an existing local name now offers to reset that branch to the selected commit instead of only showing an error.
- Added: SSH authentication failures now include a diagnostic hint for loading keys into ssh-agent and the macOS keychain.
- Added: Repository headers now offer hover actions to open the worktree folder or launch it in a configured IDE.
- Added: Cmd/Ctrl+Z and Cmd/Ctrl+Shift+Z now undo and redo supported local actions, including branch and tag creation/deletion, local rebases and merges, stage/unstage actions, and inline diff edits.
- Fixed: Applying or popping a stash now retries without restoring staged state when Git reports index conflicts from
--index.
0.6.1 (2026-07-24)
- Added: Commit history search now finds matches across the full filtered history, including commits not yet loaded into the graph.
0.6.0 (2026-07-24)
- Added: Commit history search now uses Cmd/Ctrl+F to find loaded commit messages and hashes, with Cmd/Ctrl+Shift+F reserved for ref filters and Cmd/Ctrl+Shift+S for branch sync.
- Added: Commit history search can optionally include commit descriptions from the search bar.
0.5.5 (2026-07-23)
- Changed: Update buttons now install immediately, and release notes are shown once after the app restarts into the installed version.
- Fixed: Editing an older local commit message now keeps the current branch attached after rewriting descendant commits.
- Fixed: Branch context menus now offer an explicit switch action and no longer present reset as a detached-HEAD recovery path.
- Fixed: Installing an available app update now re-checks first so a newer release supersedes an older undownloaded update.
- Added: Commit history filters now support
author:andmsg:terms for matching or excluding commits by author identity or commit message. - Fixed: Long commit histories now reuse expired graph lanes instead of drifting branch tips farther to the right.
0.5.4 (2026-07-23)
- Added: Similar changed lines now highlight the specific changed words inside the diff row.
- Fixed: Root-level semver tag badges in history now use the same series color as the sidebar tag group.
0.5.3 (2026-07-23)
- Fixed: Inline diff edits now trim trailing whitespace when saving a line.
0.5.2 (2026-07-23)
- Changed: Fast-forward prompts can now be dismissed and pinned branches remain visible as roots while smart-history filters are active.
- Fixed: Remote sidebar controls now stay hidden until hover or keyboard focus.
- Fixed: Inline diff edits now preserve the diff scroll position after editing a line.
0.5.0 (2026-07-22)
- Changed: Applied filter chips now use distinct colors for include, exclude, and smart-history filters, and invalid filter attempts stay editable in the filter input.
- Added: Related history filters using
~, such as~branch:feature/work, now show only commits reachable from matching branch, remote, or tag refs. - Fixed: Reference filters now support plural selectors and wildcard exclusions, so filters like
-tag:*and-tags:.*can hide all tags.
0.4.0 (2026-07-22)
- Added: Tabs can now be re-ordered
- Added: Branches can now be pinned so they stay in a dedicated lane
- Fixed: Performance issues from drawing the history graph
- Fixed: Several rendering glitches on the history graph
- Added: Branch labels can now be pinned from their context menu to reserve fixed left graph lanes
- Added: Checked-out branches that can fast-forward now show a banner with a one-click Fast-forward action
- Changed: Commit graph column widths are now remembered per repository tab instead of globally
- Fixed: Beta update checks now fall forward to newer stable releases instead of staying pinned to an older experimental manifest
0.3.0 (2026-07-21)
- Added: Drag handles for moving editable diff lines up or down from the gutter
- Added: Repository tabs can now be reordered by dragging them in the titlebar
- Added: Branch labels can now be pinned from their context menu to reserve fixed left graph lanes
- Added: Checked-out branches that can fast-forward now show a banner with a one-click Fast-forward action
- Changed: Commit graph column widths are now remembered per repository tab instead of globally
- Added: Opening a non-Git folder now offers to initialize it with
git initinstead of only showing an error - Added: Sidebar tag labels now show tag creation metadata in their hover text, preferring remote tag dates when available
- Added: Sidebar branch labels now show head commit date and author metadata in their hover text
- Added: Per-file line counts for staged and unstaged working-tree changes
- Added: Vim-style diff commands for jumping to a file line with
:40and entering inline edit mode withi. - Changed: Sidebar stash labels now show a compact stash date instead of the raw stash reference, with the exact reference kept in hover text
- Changed: Arrow keys and Vim-style h/j/k/l/q shortcuts in staged, unstaged, commit, stash, branch, tag, and remote trees now move across visible items, move between file lists and diffs or collapse folders, Tab moves between history and review, and working files support keyboard stage, unstage, and commit-message focus shortcuts
- Changed: Windows now uses the in-app titlebar and window controls instead of the default native titlebar and menu strip
- Changed: Update availability no longer opens the update dialog automatically on startup
- Changed: Titlebar controls now reserve space for native window buttons and collapse remote/update actions to icons before they overlap
- Changed: Reduced background working-tree refresh churn by spacing out idle scans and preventing overlapping status requests
- Changed: Merge conflict resolution now embeds its controls into the interactive diff surface instead of replacing the file review.
- Fixed: Windows repository opening now preserves Git-reported drive paths instead of canonicalizing them into UNC/WebDAV paths before Git inspection
- Fixed: Windows update manifests now include signed Windows updater platform entries when publishing release artifacts
- Fixed: Beta update checks now fall forward to newer stable releases instead of staying pinned to an older experimental manifest
- Fixed: Checking out a remote-only branch now refreshes references immediately so it appears as a local tracking branch without waiting for a later cache refresh.
- Fixed: Windows shared-drive repositories now pass a per-command Git trust override so user-selected repos are not rejected as dubious ownership.
- Fixed: Git operation logs now collapse carriage-return progress updates instead of storing every intermediate percentage
- Added: Merge planning now classifies fast-forward, no-op, merge-commit, and conflict outcomes before any merge mutates the repository
- Added: Branch and branch-head commit context menus can now show a read-only merge preview before running merge actions
- Added: Merge previews and branch context menus can now execute guarded fast-forward and merge-commit actions after re-checking HEAD and target commits
- Added: Expected-conflict merge previews can now start the merge and hand off to the in-app conflicted-path recovery flow
- Added: Rebase planning and execution now have a guarded native contract that previews replayed commits and preserves conflicted rebases for recovery
- Added: Branch context menus can now start a guarded rebase after confirming the replay count and pre-rebase recovery tip
- Added: Merge conflict recovery now has a right-panel review view with selectable conflicted files and a center-panel conflict resolver with per-block and all-from-side resolution actions
- Added: Conflicted files can now be opened from the file context menu, with destructive discard actions disabled while conflicts are unresolved
- Changed: Merge conflict recovery now reuses the working-tree file sections, shows incoming operation commits, and keeps related changed files clickable during resolution
- Changed: Staging an unresolved conflict file now writes the chosen result first, removing the separate Apply result step
- Fixed: Resolved conflict files stay visible in the recovery Staged section even when choosing the current side produces no normal staged diff
- Fixed: Conflicted files can no longer be staged while Git conflict marker headers remain in the worktree file
- Added: Conflict recovery now distinguishes inline, ready-to-stage, manual, and external-tool resolution states for binary, submodule, and delete/modify conflicts
- Added: Conflicted files can now launch the repository's configured Git merge tool from the conflict review
- Changed: Conflict recovery now separates files that still need resolution from files that are ready to stage after external edits or merge tools
- Fixed: Planned inline conflict resolutions now refuse to write when the conflicted file changed outside the app after the resolution was planned
- Fixed: Recovery conflict draft state now resets when Git advances to the next rebase, cherry-pick, or revert step
0.2.3 (2026-07-04)
- Added: Jumping to off-page commits now loads a bounded graph context around the target instead of walking every history page
- Added: Remotes can now be added, edited, and removed from the repository sidebar
- Added: Push now offers an explicit force-with-lease path when the current branch intentionally rewrites its remote history
- Changed: Fetch and Pull are now combined into a single remote-to-local Sync action while Push stays explicit
- Changed: Remote fetch now has explicit prune and tag-mode options in the native API so Sync can grow advanced fetch controls without changing the backend contract
- Added: Sync now exposes tag-fetch options from a compact toolbar menu while keeping the main Sync action one click and pruning stale remote refs by default
- Changed: Manual fetch, pull, sync, and push operations now appear in the Git operation log while they are still running
- Added: Running remote operations can now be cancelled from the Git operation log
- Added: Repository clones now use the cancellable Git runner, so a clone can be stopped from the clone dialog
- Changed: Cancellable Git operations now stream partial stdout and stderr into their pending Git operation log entries
- Added: Branch and graph reference badges now call out pending Sync and Push counts instead of hiding divergence behind hover text
- Added: Long-running Git operations now show a temporary toast that can open the Git log panel
- Changed: Clone, Sync, Pull, and Push now ask Git to emit progress while the app captures output for the Git log
- Changed: Clone repository now pre-fills the parent folder from the last clone location, current repository, or a real documents fallback
- Fixed: Repository tabs now keep the full center-header width and branch graph colors switch on the branch-start segment instead of one row late
- Added: Commit message shortcuts now support Cmd/Ctrl+Enter to commit, Cmd/Ctrl+Shift+Enter to amend, and Cmd+Ctrl+Enter or Ctrl+Alt+Enter to stash
- Changed: HTTPS Git credential failures now explain that credentials stay in Git and point users to SSH remotes or Git Credential Manager
- Added: Made editable diff lines enter inline edit mode on click
- Added: Copyable commit SHAs in history rows and commit details
- Added: S/M/L text size setting in Settings
- Added: Local branch upstream editing from branch context menus
- Changed: Replacement diff gutters now match the orange minimap marker
- Added: Detached HEAD checkout from the commit context menu with automatic dirty-worktree stashing
- Added: Merge-commit cherry-pick and revert with mainline parent selection
- Added: Upstream-ahead branch hover hints, automatic fast-forward Pull, and reset-local-to-upstream branch action
- Changed: Prioritized root branch lanes in the graph and made Pull operations appear in the Git log while running
- Changed: Graph and active-sidebar branch labels now share the same styling, including pull/push busy indicators
- Added: Remote branch deletion from branch context menus
- Fixed: Local branch deletion now uses an in-app confirmation dialog from every branch context-menu entry point
- Added: Add repository dialog with recent repositories and clone support for HTTPS, SSH, and local Git URLs
- Fixed: Kept branch colors consistent between the graph, sidebar tree, and active branch header
- Changed: Tag labels now use filled category colors that also match tag tree folders and tag dots
- Added: Expand and collapse-all controls for tag folders in the sidebar
- Added: Anonymous first-start and completed-update telemetry events
- Fixed: Made copied diff text omit line numbers and visual diff markers
- Fixed: tag tree ordering so version folders and single tags sort together
- Changed: Cached Git executable resolution, added opt-in rotating slow diagnostics logs, suppressed Windows console windows, and reduced repeated repository metadata and remote tag calls
- Changed: Checking out a remote branch now asks before fast-forwarding an existing local branch
- Changed: Developer settings now show and open the Git diagnostics log path, and Pull refreshes remotes before planning
- Added: Terminal shell selection in Settings. Windows defaults to WSL, Git Bash, PowerShell, then cmd.exe; macOS and Linux retain their existing shell defaults.
- Changed: Settings now use one roomier fixed dialog size, with independently scrollable section content.
- Added: Working-tree file menus can add a selected staged or unstaged path to .gitignore.
- Added: The navigation sidebar can collapse into a compact identity and action rail to make room for repository content.
- Codex persistent-permission approvals now show the exact native command pattern and only report that the rule was sent to Codex, rather than claiming persistence without an acknowledgment.
- Claude and Codex agent responses now reveal progressively as they arrive, while sent prompts and restored conversation history remain immediate.
- Unpinned cross-repository agent tabs now remain visible until they are closed or another repository is selected, and Command+Left/Right cycles through visible agent tabs.
- Branch labels now share the full-width graph canvas, with Graph and Branch headings, a 140–1600 px responsive resize range, and opaque pills right-aligned in a transparent overlay above left-aligned graph lanes and commit dots; Message/Tags can shrink to 200 px while expanding the wider Author column, Author/Date and the tighter Date (110 px), SHA (60 px), and +/− (80 px) defaults remain independently resizable, the table does not scroll horizontally, and compact history keeps Tags fixed to the panel edge. Repository tabs now expand to reveal their close button on hover, matching agent tabs without covering their label.
- Agent rate limits now show reset details and a live humanized countdown in accessible popovers, report the reset when a limit is hit, and refresh automatically while Codex is rate-limited.
- Codex plans now remain beside the composer only while active, then settle into their original place in the conversation when the turn completes.
0.1.0 (2026-07-01)
- Added: inline editor and line based stage/unstage/discard options
- Added: Shift+Enter line splitting while editing diff lines inline
- Added: Backspace line joining and cursor-aware entry for inline diff editing
- Fixed: Delete at the end of an inline-edited diff line can join the next line
0.0.4 (2026-06-30)
- Added in-app feedback reporting and a recurring support prompt
- Kept uncommitted changes at the top of the commit graph on the active branch lane
- Kept local-only repositories quiet when fetch runs with no remotes configured
- Stopped mouse selection in the commit graph from unnecessarily shifting the visible list
0.0.3 (2026-06-30)
- Added a default log filter for periodic auto-fetch operations
- Added an opt-in setting for experimental update versions
- Reduced working-tree row clutter and made the update prompt roomier
- SemVer tags are now grouped by major/minor/patch/prerelease in the tag tree
- Fixed an issue where precommit hooks would not run due to paths missing in PATH
0.0.1 (2026-06-12)
- First version