Skip to content

Commit 314e9ae

Browse files
committed
Git browser: M1 foundation
- Add `file_system/git/` module: `discover_repo` via `gix::discover` (follows gitlinks), `repo_info` (branch, ahead/behind, dirty), `list_status` (porcelain v2 shell-out), notify-rs watcher, and friendly errors - Wire IPC commands `get_git_repo_info`, `subscribe_git_state`, `unsubscribe_git_state`, `get_git_status_for_paths` with `blocking_with_timeout` and `git-state-changed` event - Schema additions inert until M2/M3: `FileEntry.redirectToPath`, four `git:*` icon IDs, `--color-git-portal` CSS token - Frontend `file-explorer/git/` module: `RepoChip.svelte` (six visual states) + `git-store.svelte.ts` (refcounted per-repo subscriptions) + `status-column.ts` helpers - `FilePane.svelte` drives the chip via `lookupRepoInfo` + `subscribeToRepo`; refresh on `git-state-changed`, no polling - `FullList.svelte` adds an optional Git column right after Name, gated by `fileExplorer.git.showStatusColumn` and only rendered inside a worktree; refreshes from `fetchStatusMap` on `git-state-changed` - Settings: `fileExplorer.git.showRepoChip`, `showStatusColumn`, `showVirtualGitPortal` - Bench: discover + repo_info p95 ~66 ms, list_status p95 ~75 ms on a 50k-file synth fixture (under the 100 ms hard cap) - Decision documented: shell out to `git status --porcelain=v2 -z` because gix's status iter missed staged adds in our fixtures - Docs: new CLAUDE.md in `file_system/git/` and `file-explorer/git/`; updates to `file-explorer/CLAUDE.md`, `views/CLAUDE.md`, `volume/CLAUDE.md`, `docs/architecture.md`; CHANGELOG entry under [Unreleased]
1 parent 10b220a commit 314e9ae

35 files changed

Lines changed: 4372 additions & 108 deletions

CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,18 @@ All notable changes to Cmdr will be documented in this file.
55
The format is based on [keep a changelog](https://keepachangelog.com/en/1.1.0/), and we use
66
[Semantic Versioning 2.0.0](https://semver.org/spec/v2.0.0.html).
77

8+
## [Unreleased]
9+
10+
### Added
11+
12+
- **Git repo chip in the breadcrumb.** Open a folder inside a git clone and the breadcrumb shows a chip with the current
13+
branch, ahead/behind counts vs the upstream, and a "dirty" indicator when the worktree has uncommitted changes.
14+
Detached HEAD shows the short SHA; freshly-initialized repos show "no commits yet". Updates live as you commit, fetch,
15+
or branch from the terminal — no polling, no refresh button. Toggle via **Settings > General > Git > Show repo chip**.
16+
Foundation for the upcoming `.git` virtual portal (next milestone).
17+
- **Optional Git status column in Full mode.** Adds a single-glyph column (`M`, `A`, `D`, `?`, `!`) showing each file's
18+
git status. Hidden by default; enable in **Settings > General > Git > Show git status column**.
19+
820
## [0.14.0] - 2026-04-26
921

1022
### Added

0 commit comments

Comments
 (0)