Commit Graph
8309 Commits
Author SHA1 Message Date
Stefan Haller eb341e5a76 fixup! Record PR 11's first round 2026-09-17 20:15:55 +02:00
Stefan HallerandClaude Opus 5 893358211f Record PR 11's first round
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-17 20:09:18 +02:00
Stefan HallerandClaude Opus 5 8786b2295a Record the copy PR being split out, and its first round
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-13 21:06:49 +02:00
Stefan HallerandClaude Opus 5 bb580a03de Record that the scroll refinement moved down to PR 5
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-13 17:26:56 +02:00
Stefan HallerandClaude Opus 5 4a67efe1d1 Record PR 12's first round
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-13 15:59:01 +02:00
Stefan HallerandClaude Opus 5 540911d04d Record PRs 11 and 12
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-13 14:02:28 +02:00
Stefan HallerandClaude Opus 5 ccc48bdb46 Record the assertion that keeps the conflict-hint click on the record
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-12 12:15:29 +02:00
Stefan HallerandClaude Opus 5 8b5c6ce29e Record that the modified click may open a conflict hint after all
The click names its own line, so it needs none of the gate the edit
keybinding needs, and for a modify/delete conflict the file it opens is
in the working tree.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-12 12:02:18 +02:00
Stefan HallerandClaude Opus 5 a509f46311 Record the first review round of the modified-click branch
The branch's opening commit belongs in PR 5, and moving it there proved
much cheaper than the note in the plan had assumed. Four more findings
needed code, two of them in gocui.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-10 20:55:52 +02:00
Stefan HallerandClaude Opus 5 e6e7d910da Record why the conflict-hint fix is a commit and not a fixup
A fixup on "Show git's own diff when the renderer's can't be acted on"
would have folded two decisions into one commit: which diff to render,
and whether the content can be pointed at.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-10 18:06:06 +02:00
Stefan HallerandClaude Opus 5 c53b72a3fa Record the round that came of testing the wrap option
Two problems from testing PR 9: wrapLinesInDiffView governed everything
the two main panes showed, and the hint for a conflict that has to be
resolved by picking a side had a selection over it. Both are answered by
having a render say whether it holds the panel's diff.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-10 13:08:00 +02:00
Stefan HallerandClaude Opus 5 6c720558a6 Record the three rounds that came of testing the focused main view
Two bugs reported from using the stack and a third found while reproducing the
first (PR 2 round 1, PR 5 round 5, PR 8 round 1), then two more rounds as each
fix in turn was tested and found short: the pane answered "is there anything to
select here?" one screenful too early (round 6), and then took the answer over
from the commit before while it still couldn't tell (round 7).

Round 6 carries the measurements from the reported commit, which say what each
fix is worth. §8 gains the diffstat row the user has since decided to keep, and
loses the row round 7 closes.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-06 14:59:08 +02:00
Stefan HallerandClaude Opus 5 10ae7e4c20 Record the searched-main-view branch at the foot of the stack
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-05 14:57:19 +02:00
Stefan HallerandClaude Opus 5 f5de72780a Record the refresh race the Edit hunk test uncovered
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-01 21:47:41 +02:00
Stefan HallerandClaude Opus 5 6dbcd28f0e Record that the Edit hunk port belongs to PR 7
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-01 20:01:21 +02:00
Stefan HallerandClaude Opus 5 bb0297be1c Record PR 9, its review round, and the branch below the stack
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-01 10:30:19 +02:00
Stefan HallerandGitHub Copilot cf24d5cf3d Record the modified-click implementation
PR 10 landed independently of the explorer removal and gained visible feedback for non-suspending editors. Capture its actual dependency, six-commit shape, pending terminal matrix, and the separately deferred click-selection behavior.

Co-authored-by: GitHub Copilot <noreply@github.com>
2026-08-20 17:07:29 +02:00
Stefan HallerandClaude Opus 5 7dce049eae Correct PR 8's commit counts
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-19 18:46:45 +02:00
Stefan HallerandClaude Opus 5 a87aa06611 Record PR 8 as implemented, with its deviations
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-19 18:45:20 +02:00
Stefan HallerandClaude Opus 5 2b5975375d Record round 5's sign-off and its two further fixes
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-19 12:26:16 +02:00
Stefan HallerandClaude Opus 5 0a01a1792d Record the round on the main section changing hands
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-19 11:35:26 +02:00
Stefan HallerandClaude Opus 5 1f334e1d4d Record the round on scroll preservation and focus handling
Four problems, the one root cause behind three of them, the prep refactor the
focus rule needed, and the two gaps left open. Also corrects a claim made
while the round was being scoped, that a diff renderer is re-laid-out
whenever the view width changes.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-19 08:03:08 +02:00
Stefan HallerandClaude Opus 5 c65733ab22 Record the review round on non-conforming diff renderers
Two defects and their fixes, the testing setup that reproduces them, and
the rebase traps the round turned up.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-17 19:51:24 +02:00
Stefan HallerandClaude Opus 5 47ad0f029d Sign off PR 7 in the plan
Record the four review comments the interactive pass came with, what was
decided for each, and where their fixups landed — three of them belong to
PRs 5 and 6 rather than to PR 7.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-16 20:24:20 +02:00
Stefan HallerandClaude Opus 5 e4d462eab8 Record PR 7's first review round
The staged-side branch grew out of it, PR 7 was rebuilt on top, and the
selection-visibility rule became a question about content rather than about
which kind of task rendered it.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-16 15:06:22 +02:00
Stefan HallerandClaude Opus 5 ad852cdb22 Record the branch that moved the staged side to the lower pane
It sits below PR 7, which is rebased onto it and simpler for it: which side a
pane shows is now a property of the pane, and the focus-follow rule is
symmetric.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-16 10:51:34 +02:00
Stefan HallerandClaude Opus 5 b000dc3a81 Record PR 7 in the plan
Seventeen deviations, of which the ones that bind later work are the split
seam (PR 8's panels satisfy the extension interface), the stale timing fact
about what a refresh has done by the time it returns, and the restore's new
Done hook.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-16 08:30:28 +02:00
Stefan Haller cad2e9be9d Sign off PR 6 in the plan 2026-08-15 22:56:57 +02:00
Stefan Haller d7ae6c12ca Record PR 6 in the plan
Two things bind later work: a restore keeps the task reading to the end of
its input, because a rendering that has to be parsed as a diff can only be
parsed whole, and identities match through a key in which every kind of
content line collapses together - which is what lets a change that becomes
a context line still count as the same place, and a hunk header not.
2026-08-15 22:08:58 +02:00
Stefan Haller a19f7705ce Sign off PR 5 and give PR 6 a whitespace-toggle consumer
The interactive pass on PR 5 found nothing to fix; refining the behaviour
of a few special cases can wait until the remaining PRs are written.

Toggling "ignore whitespace" re-renders the diff just like a context-size
change or a renderer switch does, so it belongs in PR 6 as a third
consumer. It is the first one whose anchor can vanish along with its hunk
or its whole file, which invalidates the candidate walk's reason for
stopping at the first change line; the walk goes unbounded instead, so the
restore lands on the nearest surviving line wherever in the diff that is.
And once staging happens in the main view, master's refusal to ignore
whitespace while staging no longer catches it - parked as an open question
for PR 7.
2026-08-15 20:52:55 +02:00
Stefan Haller 87f652b7e6 Reorder sections so that they are in chronological order 2026-08-15 20:27:27 +02:00
Stefan Haller 6017a38098 Note PR 5's diff-line file split in the plan 2026-08-15 19:45:54 +02:00
Stefan Haller 26e069637a Record PR 5's third review round in the plan
The selection commit is split in four, comments no longer point at the
staging view, and the selection commands are described and enabled only
where they apply.
2026-08-15 18:59:29 +02:00
Stefan Haller 0385c85f52 Record PR 5's second review round in the plan
The narrowSelectionHighlight config is dropped in favour of an unconditional
narrow bar, and the selection is clamped to the content at end of input.
2026-08-11 16:27:47 +02:00
Stefan Haller a172026728 Record PR 5's first review round in the plan
Four bugs from the user's pass plus one found while fixing them; also the
open question of whether narrowSelectionHighlight should be a config option.
2026-08-11 07:47:52 +02:00
Stefan Haller 488f742431 Record PR 5 in the productionization plan
Nine commits landed; the jump-to-file menu is skipped and copy moves to
PR 7, where the interface it belongs on gets built.
2026-08-10 07:34:34 +02:00
Stefan Haller 0acbaadcd6 Correct the spec's location and the real-renderer test conditions 2026-08-09 18:10:40 +02:00
Stefan Haller bfb4a4f621 Record PR 4's sign-off and the real-renderer test question 2026-08-09 17:40:21 +02:00
Stefan Haller 9d8e9f6929 Record PR 4 as implemented, with its deviations 2026-08-09 15:53:31 +02:00
Stefan Haller 40bf5fb399 Record PR 2 as implemented, with its deviations 2026-08-09 13:54:45 +02:00
Stefan Haller 81ee437f3a Say newContentPending rather than resetOriginPending
resetOriginPending was the old name that we initially used, it has been
renamed to newContentPending meanwhile.
2026-08-09 12:01:53 +02:00
Stefan HallerandClaude Opus 5 db1734d0ff Record PR 1's final history: no commit repairs an earlier one
The two findings from the interactive pass were folded back, which took the
loading-indicator gate to before the off-screen render — where the blanking
would otherwise arrive — and made the amend! for the origin reset
unnecessary, since the flag it needs now already exists by then.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-09 11:43:52 +02:00
Stefan HallerandClaude Opus 5 7c136c5755 Sign PR 1 off, and say one thing about the reset flag rather than two
Deviation 6 still described the TaskOpts field as the shape PR 6 should
build on while deviation 8 said it was gone, so a reader hitting 6 first
would follow a design that no longer exists. Deviation 6 now describes the
final shape and what it means for PR 6, and PR 6's own commit 1 says the
same.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-09 11:09:49 +02:00
Stefan HallerandClaude Opus 5 8e27ed2ff4 Record PR 1's first interactive pass and the branch below the stack
The regression it found retires the PR 6 note from deviation 6, and the
race fix establishes where unrelated bugs found during this work go.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-09 08:20:19 +02:00
Stefan HallerandClaude Opus 5 8283e997f5 Record PR 1 as implemented, with its deviations
Two of them constrain later work: TaskOpts.ResetOrigin replaces the planned
LinesToRead.ResetOrigin that PR 6 was going to extend, and the screenColMax
gap PR 1 had to fix is still live on the prototype branch that later PRs
transcribe from.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-08 22:57:01 +02:00
Stefan Haller 4ca47482ec Plan for git being able to emit the metadata itself
The plan assumed git would never emit the records, so PR 4 skipped the
advertisement for rawGit renderers and PR 7 listed "how should rawGit
entries decide the raw fallback" as undecided, with a static args-present
rule or a well-formedness gate as the candidates. git can emit them now,
which answers that question better than either candidate: probe a rawGit
entry like any other renderer and the fallback collapses to a single rule
for every renderer type.

Record the two traps as well, since neither is visible from the outside --
the advertisement has to precede newPtyTask's no-pty early return, and the
probe's cache signature has to include the args.

Say explicitly that none of this waits on git upstream. The probe asks the
installed git what it can do, so a stock git degrades to exactly the
behaviour of a non-conforming renderer, and a fork covers the users who
want the feature if the patch is never accepted.
2026-08-08 12:59:00 +02:00
Stefan Haller 001d85153a fixup! Support git's own word diff as a metadata-emitting diff renderer
Probe git for the handshake like the other renderers, not for a record.

git announces itself for exactly the formats it describes, so asked with
the renderer's own arguments the handshake already answers the question,
and on empty input at that. Looking for a record was over-specified and
made git the one renderer probed differently for no reason.

The two probes that now both stand a diff up from two empty temp files
share that setup.
2026-08-08 12:59:00 +02:00
Stefan HallerandClaude Opus 5 07ec8a72b6 Advertise the metadata protocol to git as well, not only to a pager
A rawGit diff renderer needs no pty -- git renders the diff itself, and
only a pager needs a terminal to be spawned at all -- so newPtyTask hands
that case straight to newCmdTask. But the OSC1717 advertisement was set
forty lines further down, past that early return, so git was never asked
to annotate its output and the word-diff renderer we just started
trusting emitted no records.

Set it before the branch, next to LAZYGIT_COLUMNS, which is there for the
same reason. Nothing else changes: a renderer that doesn't know the
variable ignores it, and git says nothing for the formats it doesn't
annotate, which is every format a rawGit renderer without word-diff
arguments produces.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-08 12:59:00 +02:00
Stefan HallerandClaude Opus 5 473f83ec49 Support git's own word diff as a metadata-emitting diff renderer
git now emits the diff line metadata records itself, for the word-diff
formats -- the ones whose output can't be read back from its own text,
which is the same reason we need records out of delta and difftastic. So
a rawGit renderer configured with --color-words is no longer a diff we
have to give up on: it names every row it shows, as a patched pager does.

Two things stood in the way. The probe only knew how to ask a stdin
filter or an external diff driver and reported false for anything else,
so git's own records were never looked for; and the focused main view
treated a rawGit renderer with arguments as unresolvable by definition,
re-rendering it raw whatever the probe said.

So probe git the way we will run it, with the renderer's own arguments,
and look for an actual record rather than the handshake the other probes
settle for. git annotates only some of its formats, so an installed git
that doesn't speak the protocol and arguments that select no word diff
both leave us without records, and looking for a record answers both at
once. Arguments that aren't a word diff (-U10, --stat) therefore keep
rendering raw when focused, as they did before.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-08 12:59:00 +02:00
Stefan HallerandClaude Opus 5 450e295ec3 Correct the diff-metadata notes where they contradict the spec
We stopped updating these notes once the real work moved to
focused-main-view-notes.md and the production plan, but two things in them
have since become actively misleading rather than merely stale: they say in
five places that the protocol is content-lines-only, and they use the env
var name from two renames ago.

Mark the document historical, name the spec as the authority, and correct
§11's outcome banner in place rather than rewriting it, so the reasoning
that led to dropping `f`/`h` is still on record next to the reason it was
reversed -- which is the very cost that banner judged acceptable.

Don't touch the `EMIT_OSC1717_METADATA` spellings further down: they are
what those prototypes were built with, and the status block now says so.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-08 12:59:00 +02:00