Skip to content

Domain language: History tree, File history, Line history, Rewrite history, Local Changes - #96

Open
baol wants to merge 9 commits into
mainfrom
repo-and-branch-ux
Open

baol wants to merge 9 commits into
mainfrom
repo-and-branch-ux

Conversation

@baol

@baol baol commented Nov 8, 2026

Copy link
Copy Markdown
Owner

"History" named five things in the app. docs/domain.md now defines the domain language, and the app, specs, docs site and CLI follow it.

Terms (decided with the user)

  • History tree: the commit list and graph (tab, ‹ History tree, View › History tree, Preferences section).
  • File history: one file's versions (the reader's File history button, H, FILE HISTORY 7).
  • Line history: versions of a line or range (from Blame).
  • Rewrite history: the category of operations that replace commits (interactive rebase, rebase onto, amend, reword, reset).
  • These four are always spelled in full. "History" never appears alone.
  • Local Changes is the working-tree view everywhere, including its tab (formerly "Changes"), Go to Local Changes and "reopens staged in Local Changes".
  • Interactive rebase keeps Git's name.
  • CLI: command words follow the terms, and the old word stays as a hidden alias. git good --cli history-tree is the command; history still works but isn't listed in --help. JSON is unchanged.

The glossary also covers Review, Commit details, Refs sidebar, Reader, Recovery, Version, Absent version, Rename (25 %), Blame, Backup, Stash and Worktree, with the Git concept behind each term and words to avoid. AGENTS.md points to it. It also records the bug-fix rule: reproduce on the reported case, add an acceptance scenario whose tests fail first, then validate on the reported case again.

Guarded (acceptance XCT-35)

  • the_word_history_is_always_part_of_a_full_domain_term renders the History tree, its menus, search, Review with File history, Local Changes, and every Preferences section.
  • no_shown_string_uses_history_outside_the_full_domain_terms reads every non-test string in the app's sources. It listed 54 offenders before this change and 0 after, so disabled reasons and error messages are covered too.
  • history_is_a_hidden_alias_of_history_tree checks the alias (CLI).

Docs

  • The specs use the terms: acceptance, architecture, regression, user flows, final design, UI coherence, CLI, development and design. Links to renamed headings are updated.
  • The docs site and README follow, and the site builds clean.
  • Dated records (verification.md history, plan.md entries, implementation-prompts.md) keep their original wording.

Checks

fmt, clippy -D warnings, all workspace tests (including the acceptance-citation check), the docs site build, and the README screenshot --check pass. The branch also carries a no-op merge of the old #95 tip, so it could be pushed without force.


Generated by Claude Code

FRM-05 is now a GWT acceptance scenario: given Git Good was just
opened, when the folder is not a Git repository and not inside one,
then it opens on the welcome view. The Reopen the last repository
preference, which opened the most recent repository instead and was on
by default, is removed with its launch fallback; an old "reopen_last"
key in settings.json is ignored. FRM-06 covers a launch in a
repository's subfolder, which opens that repository.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WX3sFiNbkTC6gZUVCPGT3o
Reported on baol/recipes: after renaming Focaccia.md, Review of the
rename commit listed the old path as deleted and the new one as added
with every line new, so the file's history looked cut at the rename.

Review now pairs renames as git diff -M does (exact moves and moves
with edits, 50 % similarity), with gix's tree diff in process, read only
when a comparison adds or deletes a file. A rename is one change at the
new path with the old side and old_path/old_path_bytes, marked R in the
file list; File history on it crosses the rename. The CLI's show lists
kind "renamed" with old_path, and --file accepts either path.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WX3sFiNbkTC6gZUVCPGT3o
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WX3sFiNbkTC6gZUVCPGT3o
Reported on baol/recipes: File history of "Focaccia con il Bimby.md"
stopped at 935e221, where Focaccia.md was renamed and mostly rewritten
(27 % alike, below Git's 50 % rename threshold; git log --follow stops
there too). The earlier rename fix was checked on a pure git mv only.

An added file now continues the most similar file the same commit
deleted, down to 25 % similarity (RENAME_SIMILARITY_PERCENT), in File
history (git diff-tree -M25%) and in Review (gix rewrites at 0.25).
Acceptance REV-78; its four tests fail at 50 % and pass at 25 %. On the
recipes clone File history now lists 7 versions across the rename.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WX3sFiNbkTC6gZUVCPGT3o
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WX3sFiNbkTC6gZUVCPGT3o
File history of baol/recipes' Focaccia ended with an absent row at the
repository's first commit (6f2795d Initial commit) instead of the commit
just before the file was added (d46c131 Update pancakes., parent of
d7fb0bb): an absent state took the commit where the absence began.

Before a file first appears its absent version is now the commit just
before the add; after a deletion it stays the deleting commit.
Acceptance REV-79; its tests fail without the change.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WX3sFiNbkTC6gZUVCPGT3o
… full

"History" named five things. docs/domain.md now defines the domain
language: History tree (the commit list and graph), File history,
Line history and Rewrite history, always in full; Local Changes for the
working-tree view, its tab included; Interactive rebase keeps Git's name.

Every shown string follows it ("History tree" tab and "‹ History tree",
the reader's "File history" button and "H: File history", messages and
key hints). The CLI's history command is history-tree; history stays a
hidden alias. Two tests guard the rule: one renders the main screens,
menus, search and every Preferences section, the other reads every
non-test string in the app's sources.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WX3sFiNbkTC6gZUVCPGT3o
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WX3sFiNbkTC6gZUVCPGT3o
The specifications (acceptance, architecture, regression, user flows,
final design, UI coherence, CLI, development, design) use History tree,
File history, Line history, Rewrite history and Local Changes as
docs/domain.md defines them; dated records keep their wording. The last
"Changes" labels for the view become "Go to Local Changes", "reopens
staged in Local Changes" and "Local Changes list". Acceptance XCT-35
names the guard tests; links to renamed architecture headings follow.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WX3sFiNbkTC6gZUVCPGT3o

This branch has not been deployed

No deployments
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.

2 participants