Skip to content

feat: reset, remotes, signing, fixup, diff export, in-diff search, image previews, review feedback#6

Merged
danielss-dev merged 2 commits into
mainfrom
fable-features
Jun 11, 2026
Merged

feat: reset, remotes, signing, fixup, diff export, in-diff search, image previews, review feedback#6
danielss-dev merged 2 commits into
mainfrom
fable-features

Conversation

@danielss-dev

Copy link
Copy Markdown
Owner

Adds ten developer-requested git-client features plus the fixes from a multi-lens adversarial review and two rounds of UI feedback. Build gates pass throughout (cargo test, cargo clippy -D warnings, tsc --noEmit, vitest).

Features

  • git reset (soft/mixed/hard) from the graph context menu, with an automatic safety-snapshot stash before a hard reset of a dirty tree; reflog recovery menu (checkout / branch here / reset here); palette Undo last commit.
  • Remotes management — add / rename / edit URL / remove, plus a per-remote Fetch — and branch rename. Every configured remote is visible and manageable even before its first fetch.
  • Commit signing: when commit.gpgSign=true, commits route through the user's git (real GPG/SSH signature) instead of silently producing unsigned commits.
  • Add to .gitignore for untracked files — exact (metacharacter-escaped), by extension, or a custom-pattern dialog — under an Ignore > submenu.
  • fixup! commit creation + autosquash in the interactive-rebase editor.
  • Copy diff as patch / Markdown from tree menus and the palette.
  • In-diff text search (Ctrl/Cmd+F) across Local Changes and Review.
  • Image diff previews (Before/After on a checkerboard) in Local Changes, Review, commit detail, and the File view's Content / History / Compare tabs.
  • Review annotations + feedback export — annotate files/hunks during review, then copy every note as one Markdown prompt to hand back to the coding agent.

Quality

  • Multi-lens review (correctness / frontend / conventions / security) with two-skeptic adversarial verification of each finding; all confirmed findings fixed (remote visibility, ext::/fd:: URL guard, gitignore glob escaping, signing parity, review-export data loss, image binary detection, in-diff search side-jump, dialog focus).
  • New tests: Rust binary-detection + reset/remote/commit/ignore/file-blob coverage; frontend autosquash, diff-search, patch-export, review-export, ignore, image helpers.

Still deliberately open

Line-level staging, rebase edit, multi-repo-tab architecture, full-history/-G content search, and a GitHub/GitLab PR surface — tracked in docs/improvements.md.

🤖 Generated with Claude Code

danielss-dev and others added 2 commits June 11, 2026 02:15
Follow-up to the ten-feature pass: adversarial-review fixes plus two rounds
of UI feedback.

Review findings:
- Sidebar: every configured remote now renders even with no remote-tracking
  branches, so Add/Rename/Edit URL/Remove + a new per-remote Fetch are
  reachable; add_remote/set_remote_url reject ext::/fd:: URLs and option-like
  names; rename_remote surfaces libgit2 "problems" as a warning, not an error.
- Commit signing parity: --cleanup=verbatim; amend keeps the original author;
  temp message file uses create_new (no symlink clobber).
- Hard reset skips the safety snapshot when only untracked files are dirty.
- gitignore quick-add escapes glob metacharacters in literal paths.
- In-diff search tags matches with their staging side so a jump lands on the
  copy that holds the match; Esc closes from any focused child of the bar.
- ResetDialog moves focus into the modal on open.
- Review feedback exports the union of pool + orphaned noted files; notes on
  deletion-only blocks anchor old-side; image preview refetches on diff churn.

Image previews:
- Fix binary detection in diff collect(): is_binary() is unset until the print
  pass runs, so binary files came back as empty diffs. Flag binary on the 'B'
  marker line instead.
- Before/After (or single) image previews in Local Changes, Review, commit
  detail, and the File view Content / History / Compare tabs.

Ignore menu:
- "Add ignore pattern..." dialog for arbitrary globs; the three ignore actions
  now sit under an "Ignore >" submenu (ContextMenu gained submenu support).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@danielss-dev danielss-dev merged commit 369ea03 into main Jun 11, 2026
2 checks passed
@danielss-dev danielss-dev deleted the fable-features branch June 11, 2026 19:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant