Git It 0.2.0
✨ New features
GitHub
- Client-side filter fields for PRs/Issues/Releases (⌘F)
- PR Commits tab (count, copyable SHAs) + solid timeline dots
- PR checkout + branch↔PR menus + current-branch PR chip
- Create-PR wizard dialog + prefill + open-in-app on success
- Pr_create backend (auto-push + gh pr create) + subjects prefill
- Reaction pills + edit/delete own comments across PR/issue detail
- Reactions + comment edit/delete backend, ids/reactions in detail payloads
- Review-thread reply + resolve/unresolve
- Review authoring — draft store, inline line comments, review bar
- One-shot review submission (verdict + inline comments)
- PR Files tab — per-file diff rendered in DiffView
- Pr_diff backend (gh pr diff) + review.rs module
- Inline comment composer at the bottom of PR/issue detail
- PR timeline oldest/newest sort toggle + persisted default setting
- Render the repo README on the Overview tab (relative URLs absolutized)
- PR detail as a chronological timeline with inline review comments + CI runs
- Pr_detail fetches commits, review threads (isResolved) and CI run history
- GitHub-style state coloring + badge for PR/issue rows
- Accent-glow loading skeletons across the GitHub screen
- Open the in-app detail when a PR/issue row is clicked
- GithubDetail (description, checks, reviews, files, comments)
- Detail types/api + selectedItem & detail-panel state
- Sanitized markdown (marked + dompurify) + Markdown component
- Pr/issue detail commands + statusCheckRollup normalization
- Holistic download metrics in the Releases tab
- Download aggregation helpers (inferPlatform, aggregateDownloads)
- Action modal + row triggers (comment/merge/close-reopen/create)
- MergeMethod type, write api wrappers, githubActions controller
- Write commands — comment, close/reopen, merge, create
- Insights tab (traffic · activity · contributors · milestones/labels)
- Insight types/api + sparkline helper + githubState panels
- Insight commands — traffic, contributors, activity, milestones, labels
- Pull Requests / Issues / Releases / Actions tab components
- TS types/api + per-panel cache for read panels
- Read-panel commands — pulls, issues, releases, runs
- Svelte UI — header + stat tiles + Overview + setup cards + wiring
- TS types, api wrappers, activeView 'github', githubState controller
- Pure TS helpers — remote parser mirror + formatCompact
- Rust backend — parser, error model, run_gh, availability, stats
Commit Graph
- Timeline reveal grows as one continuous bottom-to-top wipe
- Enlarge angular stub so the step reads clearly
- Add NERV timeline reveal (armed on repo identity, one-shot)
- 3-state line style (auto) + theme-aware effectiveGraphLineStyle
- Angular fork edge stubs out of the node before angling
- Merge-in style + curviness settings (persisted, curved-only)
- Directional merge-in curve (hooked default) via edge.kind + curve opts
- ⌘F commit search — match subject/author/SHA, jump + highlight
- Rounder curved edges (tension 0.8, option C)
- Resizable commits area + columns, lane line into uncommitted row
- Manual per-branch colour override (palette + custom hex)
- Match sidebar branch swatches to graph lane colors
- Virtualize commit history + gutter (windowed render)
- Mount GraphHistory, load via load_graph, drop CommitTable
- Add GraphHistory graph rows + line-style toggle
- Add GraphGutter SVG lane renderer
- Add graph commits + line-style state to store
- Expose load_graph/list_refs/repo_status commands + TS bindings
- Add repo_status (counts, head, in-progress op)
- Add list_refs with upstream ahead/behind
- Add load_graph with ref decorations + fixture tests
- Add Rust graph/ref/status types
- Export lane engine barrel
- Add curved and angular SVG path builders
- Implement two-pass lane assignment engine
- Add engine types and lane color resolver
Theme
- Open the materialize fill from the centre out into the outline
- Add NERV materialize boot, fix loading-bar jank
- Theme and animate the context menu and settings dialog
- Boot reveal cascades panels in and draws brackets on
- Add pulsing live dot to the NERV status bar
- Style NERV toolbar buttons as website-style console buttons
- Collapse extends NERV brackets into a full panel outline
- Register @Property --b and make panel-hover brackets grow and brighten
- Add NERV boot reveal on activation (gated)
- Add NERV motion setting + ambient drift + interaction (gated)
- Route NERV decoration through --accent + 6 scheme presets + Shiki variants
- Scheme setting + per-scheme NERV lane palettes (pure)
- Add NERV HUD mono status readout, live dot, header sigils, hazard dividers (B2/B4)
- Add NERV HUD scanline overlay + corner brackets on .panel/.dialog (B1/B3)
- Apply Anton display face to NERV chrome headers/labels
- Route on-accent button text + fix stuck-in-Classic colors for NERV
- Add NERV Shiki diff theme + app-theme-aware selection
- Theme-aware commit-graph lane palette (NERV) via pure laneColor
- Add NERV token block + tokenize font/radius/on-accent/diff
- Add Classic/NERV toggle to Settings → Appearance
- Add persisted theme state (classic/nerv) to the store
- Global nerv.css (@font-face) + no-FOUC themeMode wired via +layout.ts
- Bundle NERV woff2 fonts (Anton, IBM Plex Sans 400/500/600, Mono 400/500)
Ux
- Commit-body in details + screen/repo swap animation + blur perf
- Animate the commit graph + details panels' collapse (measured)
- Details pane fills when graph collapsed + animate collapsible panels
- Timeline layout — graph fills; commit details slide up, resizable + collapsible
- Realtime Local Changes, timeline/scroll layout, status colors, commit fields, merged edit panel, restore last repo
- Round-6 feedback — dedup file-count, jump-to-unloaded-ref, per-branch ahead/behind, full-height Local Changes, push-immediately, sticky-header fix
- Whole-diff scroll, hide Output behind a setting, file tree-view
- Round-4 feedback — staging UX, amend, flicker, graph polish, eager tags
- Window-centered title, lane-colored ref chips + icons, no switch flicker
- Resize fixes, full-context staging, sectioned manage modal
- Collapsible commit-details panel + auto-show edit tools
- Unify sidebar ref panels + Manage Repository modal
- Local Changes view — hide timeline + fix double-selection
- "Edit commit(s)" — modal + single-commit message editing (C3)
- Dedicated local-changes screen + sidebar Working Copy entry (C1)
- Commit details as file-list + diff master-detail (C2)
- Drag-resizable left sidebar (B2)
- Folderize slashed branch/remote/tag names (B1)
- Phase A shell polish — fullscreen width, header, tabs, output
Redesign
- App naming pass (R4)
- On-demand time-edit drawer; drop New date column (R3)
- Time-edit drawer controller + component (R3)
- App-shell layout — pinned header/tabs/status bar, scrolling content (R2)
- Group recovery panels + guard BackupsPanel (R2)
- Bottom status bar + slimmer header (R2)
- Infinite-scroll commit loading (R2)
- Mount repo tabs/list, reload-on-switch, retire RepoLoader (R1)
- RepoTabs + RepoList components (R1)
- Multi-repo store state (open/recent/active + switcher mode) (R1)
Updates
- Set the minisign public key for update verification
- Add Settings/Updates section + startup check + macOS menu listeners
- Frontend flow module + api invokes + types
- Persisted updateChannel + autoUpdateCheck store settings
- Check_update_on_channel + install_pending_update + menu wiring
- Plugin deps, capabilities, updater/bundle config, entitlements
Remotes
- Delete a remote branch from the sidebar (push --delete)
- Create-on-GitHub wizard (gh repo create --source --push) in Manage Repository
- GIT_ASKPASS credentials helper + retry (Phase 6)
- Streamed pull/push + cancel backend (Phase 6)
- Remote management (list/add/remove/set-url) backend (Phase 6)
Settings
- Add NERV color-scheme selector (Appearance tab)
- Tabbed sections + Auto graph-line segment
- Open Settings from the gear; move graph-line + repo-switcher toggles in; relative commit dates (S3)
- SettingsPanel modal + controller (S2)
- RelativeDates store setting + Today/Yesterday date formatting (S1)
Agent
- ListRepos — report registered repos with git status
- Handle repoStatus over typed Convex envelope (dispatch + dedup + ack)
- Walking-skeleton Convex relay subcommand
- Headless status CLI over git-core (no Tauri runtime)
Diffs
- Toolbar (+/- totals, context, whole-file) + unified-unstaged setting
- Select individual lines to stage/unstage within a hunk (LL2)
- DiffView component — Shiki highlight, unified/split, per-hunk staging (Phase 5)
- Unified-diff parser (TDD) + Shiki highlighter + worktree action layer (Phase 5)
Ops-ui
- Merge/cherry-pick/revert context-menu entries (Phase 3b)
- ConflictView panel for in-progress merge/pick/revert (Phase 3b)
- OpOutcome-aware action wrappers + status refresh (Phase 3b)
- Right-click context menus + dialogs for nav/ref ops (Phase 2b)
Rewrite-ui
- Reflog browser panel (Phase 4)
- Interactive rebase todo editor + rebase menus (Phase 4)
- Amend dialog, undo bar, safety toggle, reset/amend menus (Phase 4)
- Safety setting, undo state, destructive action layer + confirm dialog (Phase 4)
General
- Add git-it.app marketing landing site in website/
- Actionable prereq banner for bundled git-filter-repo
- New Git It app icon (Graph tick+)
Ops
- Classify conflicts + add keep/remove/skip resolutions (Phase 3b)
- Add merge/cherry-pick/revert + conflict handling (Phase 3a)
- Add nav/ref git operations + bindings
Rewrite
- Parameterize git-filter-repo invocation via argv prefix
- Rebase (onto + interactive) + reflog backend (Phase 4)
- Safety layer + reset/amend backend (Phase 4)
Worktree
- Line-level staging — partial-hunk builder + stage_lines/unstage_lines (LL1)
- Diff + hunk staging + stash backend (Phase 5)
- File list + stage/unstage/discard/commit backend (Phase 5)
Agent/2b-S5
- Live e2e relay — encrypted command stream, fail-closed
- Roster resolution + TOFU recovery-pin (relay foundation)
Branches
- Delete dialog with force + also-delete-remote toggles
- Double-click to checkout + right-click fast-forward to origin
Desktop App
- Resolve + bundle git-filter-repo and add install-CLT command
- Apps_for_file command (NSWorkspace handlers for Open With)
Remote-ui
- Pull/push buttons, ahead-behind, RemotePanel, progress, credentials (Phase 6)
- Store + actions + credentials/progress for pull/push (Phase 6)
Repository Tabs
- High-fidelity drag — floating clone + neighbors reflow (flip)
- Drag to reorder repo tabs
Shell
- 3-pane layout (sidebar + graph + bottom detail) + branch chip
- Focused-commit + ref-tree state, Sidebar + CommitDetail
Sidebar
- Detached HEAD as an explained, pinned Local entry with escape hatches
- Selected-ref highlight + stronger hover in branch/remote/tag lists
Worktree-ui
- Stash panel + commit diff in CommitDetail (Phase 5)
- Working-copy view, commit composer, uncommitted-changes row (Phase 5)
Agent/2b-S1
- HPKE+Ed25519 crypto envelope core
Agent/2b-S2
- Signed device roster verifier + roster KAT
Agent/2b-S3a
- Device keypairs (keys.rs) + persisted anti-replay (replay.rs)
Agent/2b-S3b
- Enrollment proof-of-possession at pairing
Agent/2b-S3c
- Authenticated message layer (wire format + process_inbound)
Icon
- Redesign the app icon for the NERV theme (hexagon + tri-color graph)
Loading
- Top accent sweep + commit-graph skeleton during repo/branch load
Menus
- Optional submenu flyout in the shared context menu
Merge
- Squash-merge flow — stage then commit via composer (prefilled)
Rebase
- In-place amend + 'paused' messaging for the edit pause
Store
- Add repoStatus state for in-progress operations (Phase 3b)
Ui
- Reclaim the macOS title-bar strip for project + branch + actions (H1)
Website
- Add OP // THEME panel showcasing the Classic ↔ NERV theme
Working Copy
- Open / Open With / Show in Finder on Local Changes rows
🐛 Fixes
GitHub
- ⌘F respects the action modal + Caps Lock; filter a11y/test polish
- Readable GithubError in run() + survive ensure() when opening the new PR
- Reactions/edit on unresolved thread comments + visible action errors
- Clear an unbound draft store after a summary-only review submit
- Bind review-draft lookups and summary/verdict to their PR
- Count body lines starting with ++/-- in splitPatchByFile
- Use GithubError::NoRemote in pr_diff (codebase-standard variant)
- Spin the Refresh button while any fetch is in flight
- Wizard now reliably pushes (gh-as-credential-helper, not gh --push)
- Re-fetch README on Refresh; idiomatic $derived; normalize ../ in readme URLs
- Surface inline review threads with no parent review; CI duration hour rollover
- Show the skeleton when switching between PR/issue details
- Show the loading skeleton when switching PR/issue filters
- Keep stale data on Refresh + skeleton review polish
- Run all gh commands off the main thread
- Harden markdown links + drop data: image sources
- Filter zero-download releases + dedupe tags + safe asset key
- Don't offer Merge on draft PRs
- Surface partial milestones/labels errors + flag bot contributors
- Show a "first 50" hint on the PR/issue lists (no silent truncation)
- Reject path-traversal/leading-dash segments + robustify availability
Theme
- Address Codex review — pre-paint scheme mirror + portable checkout in test
- Reveal the window from on_page_load, not a throttled webview timer
- Launch the window hidden until the webview paints to kill the glass flash
- Resolve theme in to kill the launch background flash
- Address PR review — static-NERV spinner + hydrate mirror refresh
- Stop the timeline flashing at rest before the reveal draws
- Hold panel box + content hidden until the materialize frame lands
- Repair NERV right-click, boot cascade, and timeline reveal
- Widen boot window to 1100ms so the full panel cascade completes
- Gate NERV drift layer on data-motion + freeze NERV lane palette
- Drop Svelte-only :global() from plain-CSS nerv.css (rules were dropped)
- Route danger:hover text through --on-accent (NERV AA on orange --err)
Ux
- Animate the whole file tree on stage/unstage (no end-jump)
- Smooth staging + details-pane animations and edge cases
- Round-6 review minors — cap composer textarea height + restore narrow-mode master-detail floor
- Correct the file tree-view toggle's aria-pressed (round-5 review)
- Address adversarial review of the round-4 batch
- Address adversarial review of the round-3 batch
- Address C3 review — reject reword across a merge; staged hint
Commit Graph
- Size the timeline reveal wipe to the content extent (no empty-space dwell)
- Search review minors — kill pending debounce on Esc; Caps-Lock-safe ⌘F
- Keep a reused fork lane's through-line connected
- Address review — guard stale jump nonce + spacer robustness
- Keep description visible + dates single-line on narrow windows
- Detect in-progress operations inside linked worktrees
General
- Read current branch from full ref so a same-named tag can't shadow it
- Prevent nav overflow at narrow widths (hide github link <=400px, keep cta one line)
- Add html5 doctype + full document structure to pages (exits quirks mode, adds lang)
- Scope sticky nav styles to the primary nav so the footer nav doesn't stick
- Make live/focus graph refresh non-destructive (review fixes)
- Live-refresh the commit timeline on external git changes
Redesign
- Unclippable left-bar accent for queued-edit rows (R3 review)
- Drop StatusBar negative-margin hack for the app-shell (R2)
- Clear loaded graph on repo change (R1 review)
- Keep empty-state from hiding the sample graph in preview (R1)
Ops
- Async fetch/ff/delete-branch (UI freeze) + visible busyOp indicator
- Recover from empty cherry-pick/revert instead of stranding the repo
- Block git option-injection via user-supplied names (security)
Worktree
- List new-directory files individually (-uall) so unstaged new files aren't blank
- Mirror partial-hunk transform for unstage (--reverse); add reverse tests (LL review)
- Parse porcelain paths with spaces correctly (Phase 5 review)
Ci
- Guard ai changelog by size, bump ai-inference to v2, pin macos-26
- Use workspace-root target dir for macos release artifacts
Ops-ui
- Drop squash-merge menu item + contract-d/CSS polish (3b review)
- Settle pending dialog on replace; refresh-fail no longer masks op success; clamp menu Y
Remotes
- Guard concurrent remote ops in UI; SSH-key != HTTPS-auth; focus creds field (Phase 6 review)
- Reap cancelled child; reject concurrent ops; drop stray cancel arg (Phase 6 review)
Ui
- Status-bar spinner during git actions + repo load (no more frozen look)
- Don't select UI-chrome text on click/right-click (native-app feel)
Agent
- Normalize repo paths + fsync the rename for config durability
Agent/2b-S1
- Review hardening — fail-closed encode/aad + kind-header KAT
Agent/2b-S2
- Review hardening — roster KAT coverage + live-set order doc
Agent/2b-S3
- Review hardening — clearer errors + fail-closed docs
Branches
- Only offer 'also delete remote' when the remote branch exists
Code Review
- Grant opener:allow-open-path; async apps_for_file + seq guard; correct deleted-file handling; submenu dead-zone/overflow
Diffs
- Show untracked file contents + stop split-view deletions clipping
Fast-Forward
- Fully-qualify fast-forward refspec so a same-named tag can't shadow the branch
Layout
- Stretch shell children in column mode to stop narrow-width overflow
Loading
- Show graph skeleton on repo switch, not just first open
Merge
- FirstLine() on squash error + clear suggested msg on repo switch (review)
Modal
- Dialog layer z-index above other modals (Add-remote/Create-on-GitHub no longer open behind Manage Repository)
Rebase
- Preserve scratch msg files across an edit pause (rebase_in_progress)
Rewrite
- Keep reword msg files through conflicts; real committer-date preserve; quoting + tests (Phase 4 review)
Rewrite-ui
- Invalidate undo on repo/branch switch; accurate reset consequence (Phase 4 review)
Search
- Final-review minors — ⌘F guarded behind ALL overlays; ✕ kills pending debounce
Shell
- Surface detached HEAD, unique ref keys, extract RefEntry
Updates
- Register process plugin + notify-only poll + beta-seed + manual-check ack
Website
- Replace the dead theme toggle with a swap mark, drop non-functional swatches
Worktree-ui
- Re-fetch diff after hunk ops; wire sign-off; parse rename/mode-only paths (Phase 5 review)
⚡ Improvements
Ux
- WAAPI collapse for graph/details + freeze graph windowing → reliable, smoother
- Drop panel backdrop-blur during collapse → smooth animation
What's Changed
Other Changes
- feat(cicd): GitHub CI/CD pipeline + in-app auto-updater (macOS, two-channel) by @ashproto in #1
- docs: README polish — badges, download callout, and screenshots gallery by @ashproto in #2
- chore: sync next up to main (README polish) by @ashproto in #3
- feat: bundle git-filter-repo + one-click prerequisite install by @ashproto in #4
- fix(ci): use workspace-root target dir for macos release artifacts by @ashproto in #5
- fix(ci): clean up release-run annotations (changelog 413, node20, macos-latest) by @ashproto in #6
- feat: git-it.app marketing landing site by @ashproto in #7
- fix: current-branch detection when a same-named tag shadows the branch by @ashproto in #8
- feat(theme): NERV app theme — Classic ↔ NERV toggle (full HUD) by @ashproto in #9
- docs: archive git-it landing-page plan, spec, and hero mockup by @ashproto in #10
- feat(website): add OP // THEME panel (Classic ↔ NERV showcase) by @ashproto in #11
- docs: refresh docs for the shipped NERV theme, icon, and release pipeline by @ashproto in #12
- chore(deps-dev): bump vite to 8, plugin-svelte to 7, vitest to 4 by @ashproto in #15
- Promote next → main — v0.2.0 stable (NERV theme, marketing site, new icon, docs) by @ashproto in #14
New Contributors
Full Changelog: https://github.com/ashproto/git-it/commits/v0.2.0