Show Git attribution in the editor#18
Conversation
There was a problem hiding this comment.
Code Review
This pull request transitions the Git attribution service from shell-backed git commands to embedded gitoxide/gix APIs, and updates the frontend to display unsaved or uncommitted changes inline while keeping the last commit attribution visible. The review feedback focuses on performance and memory optimizations: replacing synchronous file I/O with asynchronous reads to prevent blocking the async executor thread, utilizing the Rust Entry API and reference mapping to eliminate redundant clones of GitCommitInfo, and flattening the nested dynamic programming tables in both Rust and TypeScript into contiguous 1D arrays to minimize heap allocations.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
There was a problem hiding this comment.
Pull request overview
This PR implements GitLens-style Git attribution in the IDE, including file-level “last commit” status bar info and line-level editor attribution that stays visible during edits (with special handling for unsaved and saved-but-uncommitted changes). It also migrates backend attribution to embedded gix and tightens dependency/version management with exact pins plus Dependabot scheduling.
Changes:
- Add
uncommittedLinesto the Git attribution API contract and normalize it in the frontend. - Enhance the editor attribution UI to keep commit attribution during dirty edits and show local “unsaved/uncommitted” ghost attribution for affected lines.
- Replace shell-
gitattribution withgixblame/commit plumbing; add exact dependency pins and Dependabot config.
Reviewed changes
Copilot reviewed 11 out of 13 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| src/tauri.ts | Extends Git attribution normalization to include uncommittedLines. |
| src/tauri.test.ts | Adds coverage for uncommittedLines normalization defaults/validation. |
| src/styles.css | Refines status bar layout and styles “dirty” attribution ghost text. |
| src/EditorPane.tsx | Adds dirty-aware attribution behavior and line mapping logic for edits. |
| src/EditorPane.test.tsx | Adds tests for dirty attribution behavior and uncommitted line rendering. |
| src/App.tsx | Keeps attribution active while editing and passes isDirty into the editor pane. |
| src/App.test.tsx | Adds test asserting status bar attribution remains visible while dirty. |
| src-tauri/src/git_attribution.rs | Switches attribution implementation to embedded gix, adds uncommitted line detection, updates tests. |
| src-tauri/Cargo.toml | Pins Rust deps exactly; adds gix + jiff constraints. |
| src-tauri/Cargo.lock | Updates lockfile for gix/jiff and pinned dependency graph. |
| package.json | Pins npm dependencies to exact versions (and bumps esbuild). |
| package-lock.json | Updates lockfile to match exact npm pins. |
| .github/dependabot.yml | Adds Dependabot config with weekly schedules and cooldown windows. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8edce3d52f
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Address reviewer comments: - Avoid blocking attribution reads and cache commit lookups - Use path history for file-level commit attribution - Normalize worktree line endings and map saved lines to current coordinates - Cache editor attribution line state and flatten mapping tables Co-authored-by: Codex <noreply@openai.com>
Summary
Test plan
Closes #8