Quieter top for the review pane

headway:headway/seat-earth-stand, which follows headway:headway/print-wisdom-average. Below are three ways to quiet the band between the card title and the diff. Each one is drawn on the same commit as the screenshot. All three also get two fixes: the peek pill sits on a solid band, and a ba fence draws as a Before | After pair. Pick one. Point 4 (the same point made three times) is a separate question at the end.

Now

The review pane today: three near-identical titles, a byline with branch and path, src line, fact pills, a raw ba fence and a peek pill over code
Three titles, the sha twice, four fact pills, a raw ba fence, and the pill sitting on top of code.

A — Trim the recommended set

← Back › In Review › headway:headway/cry-puppy-refuse

headway: review pane — keys to jump through a commit's code-walk notes

Paren keys through a walk

A commit's code walk is a reading order through its diff: an intro, then one violet note above each hunk it cites. The review pane already had keys for every other list: n/p for cards, ]/[ for files, }/{ for commits. Walking the notes still meant scrolling and hunting for the next violet card. Now ) scrolls the diff so the next walk note is the first row under the pinned file header, and ( goes back. Back from the first note goes to the top, where the intro is. At either end a notice says so ("No later walk note", "No earlier walk note") instead of doing nothing.

Before
) and ( are unbound. Reaching the next walk note means scrolling with j/k/Space until a violet card shows up somewhere in the view.
After
) lands the next walk note on the same row every time, just under the pinned file header. ( goes back, and from the first note goes to the top.

A code walk is a reading order through its diff, but reaching the next walk note meant scrolling until a violet card showed up. `)` now scrolls the review diff so the next walk note is the first row under the pinned file header, and `(` goes back; back from the first note goes to the top, where the walk's intro is drawn. At either end a notice says so ("No later walk note", "No earlier walk note").

notedeck_ui's patch view gains PatchScroll::StickyNote(NoteStep), landing a note's first row the way File(n) lands a header. It steps only notes that pin (PatchNote::pins: sticky and AboveHunk), so line comments are passed over.

Show the whole explainer and message E

The change adds a generic scroll to the patch widget in crates/notedeck_ui/src/diff/patch_view.rs that lands the next or previous pinning note, then wires Headway's )/( to it. Read the widget first (the variant, the row math, the search, the resolve), then the keymap syntax that makes (/) bindable, then Headway's tool, pane state and notice, and the tests last.

The hover on "local checkout" is drawn open here to show what moved into it.

B — Each column owns its header

← Back › In Review › headway:headway/cry-puppy-refuse

headway: review pane — keys to jump through a commit's code-walk notes

Explainer

Paren keys through a walk

A commit's code walk is a reading order through its diff: an intro, then one violet note above each hunk it cites. The review pane already had keys for every other list: n/p for cards, ]/[ for files, }/{ for commits. Walking the notes still meant scrolling and hunting for the next violet card. Now ) scrolls the diff so the next walk note is the first row under the pinned file header, and ( goes back. Back from the first note goes to the top, where the intro is. At either end a notice says so ("No later walk note", "No earlier walk note") instead of doing nothing.

Before
) and ( are unbound. Reaching the next walk note means scrolling with j/k/Space until a violet card shows up somewhere in the view.
After
) lands the next walk note on the same row every time, just under the pinned file header. ( goes back, and from the first note goes to the top.

Commit

headway: review pane — ) and ( step through a commit's code-walk notes

A code walk is a reading order through its diff, but reaching the next walk note meant scrolling until a violet card showed up. `)` now scrolls the review diff so the next walk note is the first row under the pinned file header, and `(` goes back; back from the first note goes to the top, where the walk's intro is drawn.

notedeck_ui's patch view gains PatchScroll::StickyNote(NoteStep), landing a note's first row the way File(n) lands a header.

Show the whole explainer and message E

The change adds a generic scroll to the patch widget in crates/notedeck_ui/src/diff/patch_view.rs that lands the next or previous pinning note, then wires Headway's )/( to it. Read the widget first (the variant, the row math, the search, the resolve), then the keymap syntax that makes (/) bindable, then Headway's tool, pane state and notice, and the tests last.

C — One meta line

← Back › In Review › headway:headway/cry-puppy-refuse

headway: review pane — keys to jump through a commit's code-walk notes

A commit's code walk is a reading order through its diff: an intro, then one violet note above each hunk it cites. The review pane already had keys for every other list: n/p for cards, ]/[ for files, }/{ for commits. Walking the notes still meant scrolling and hunting for the next violet card. Now ) scrolls the diff so the next walk note is the first row under the pinned file header, and ( goes back. Back from the first note goes to the top, where the intro is. At either end a notice says so ("No later walk note", "No earlier walk note") instead of doing nothing.

Before
) and ( are unbound. Reaching the next walk note means scrolling with j/k/Space until a violet card shows up somewhere in the view.
After
) lands the next walk note on the same row every time, just under the pinned file header. ( goes back, and from the first note goes to the top, where the intro is.

A code walk is a reading order through its diff, but reaching the next walk note meant scrolling until a violet card showed up. `)` now scrolls the review diff so the next walk note is the first row under the pinned file header, and `(` goes back; back from the first note goes to the top, where the walk's intro is drawn. At either end a notice says so ("No later walk note", "No earlier walk note").

notedeck_ui's patch view gains PatchScroll::StickyNote(NoteStep), landing a note's first row the way File(n) lands a header. It steps only notes that pin (PatchNote::pins: sticky and AboveHunk), so line comments are passed over.

Show the whole explainer and message E

The change adds a generic scroll to the patch widget in crates/notedeck_ui/src/diff/patch_view.rs that lands the next or previous pinning note, then wires Headway's )/( to it. Read the widget first (the variant, the row math, the search, the resolve), then the keymap syntax that makes (/) bindable, then Headway's tool, pane state and notice, and the tests last.

In all three: the peek band and the ba pair

Point 4: the same thing said three times

The explainer's intro, the message's first paragraph, and the walk intro under the split all describe the change. Should the pane do anything about it?
  1. Leave it. Each one is written for a different reader (the page, the git log, the walk), and the peek already cuts most of it.
  2. Fold the message's first paragraph in the split when an explainer sits beside it, behind a "…" that opens it (m shows it as written).
  3. Hide the walk intro while the split is clamped, and show it once E expands it or ( walks back to the top.