jesseduffield.lazygit/pkg/gui
Stefan Haller c1eeacdfe8 Snapshot refs state before refs-touching refreshes
Add the storage and snapshot-update half of the external-change-detection
mechanism. RefreshHelper now keeps a mutex-protected snapshot string and exposes
accessors for it; Refresh captures a fresh snapshot at the start of any refresh
whose scope set includes COMMITS or BRANCHES.

We capture before reading the git state, not after. Capturing after would let an
external change that lands between the git state read and the snapshot (say, the
next step of a rebase running in another terminal) leave the stored snapshot
newer than what we actually rendered; the poller would then see no difference
and never refresh again, stranding the UI on the intermediate state. Capturing
first keeps the snapshot from running ahead of the render, so if disk moves
during the refresh the next poll catches it.

No reader of the snapshot exists yet — the polling goroutine that consumes it
comes in a later commit. Keeping the snapshot hook in its own commit isolates
the invariant that the snapshot stays in sync with what the UI has observed,
which is what makes the poller's change-detection predicate work across in-app
commands and focus-in refreshes.
2026-06-19 18:07:48 +02:00
..
context Convert keybinding fields to Keybinding 2026-05-25 15:32:47 +02:00
controllers Snapshot refs state before refs-touching refreshes 2026-06-19 18:07:48 +02:00
filetree Make file sort order and case sensitivity configurable 2026-03-30 17:53:25 +02:00
mergeconflicts Fix linter warnings about ignoring errors from bufio.Scanner 2026-05-03 16:57:24 +02:00
modes Make Commit.Hash a getter for an unexported hash field 2025-04-29 14:57:15 +02:00
patch_exploring Copy gocui files into lazygit repo under pkg/gocui 2026-04-30 14:29:08 +02:00
popup Copy gocui files into lazygit repo under pkg/gocui 2026-04-30 14:29:08 +02:00
presentation Use more widely-supported Unicode symbols for the commit graph 2026-05-04 13:06:29 +02:00
services/custom_commands Convert custom command Key fields to Keybinding 2026-05-25 15:32:47 +02:00
status Copy gocui files into lazygit repo under pkg/gocui 2026-04-30 14:29:08 +02:00
style Modernize all codes 2025-11-15 10:46:23 +01:00
types Pause background refreshes while driving a git operation 2026-06-19 17:56:48 +02:00
background.go Make background-refresh pausing reentrant 2026-06-19 17:56:48 +02:00
command_log_panel.go Fold remaining alt bindings into their main fields 2026-05-25 15:32:47 +02:00
context.go Bump gocui (and tcell) 2025-12-23 16:49:16 +01:00
context_config.go Remove some unused code 2025-07-08 15:14:45 +02:00
controllers.go Copy gocui files into lazygit repo under pkg/gocui 2026-04-30 14:29:08 +02:00
dummies.go Move NewDummyCommon to pkg/common 2025-05-06 09:43:26 +02:00
editors.go Move modifiers into Key 2026-04-30 22:22:53 +02:00
extras_panel.go Rename Key to Keys in Binding, KeybindingsOpts, and MenuItem 2026-05-25 15:18:18 +02:00
global_handlers.go Copy gocui files into lazygit repo under pkg/gocui 2026-04-30 14:29:08 +02:00
gui.go Convert keybinding fields to Keybinding 2026-05-25 15:32:47 +02:00
gui_common.go Pause background refreshes while driving a git operation 2026-06-19 17:56:48 +02:00
gui_driver.go Move modifiers into Key 2026-04-30 22:22:53 +02:00
information_panel.go Rename ModeStatus.Description to InfoLabel 2025-08-14 17:59:38 +02:00
keybindings.go Fold remaining alt bindings into their main fields 2026-05-25 15:32:47 +02:00
layout.go Fix visual glitch with status bar spinner at very slow spinner rates 2026-05-08 22:42:23 +02:00
main_panels.go Copy gocui files into lazygit repo under pkg/gocui 2026-04-30 14:29:08 +02:00
menu_panel.go Fold remaining alt bindings into their main fields 2026-05-25 15:32:47 +02:00
options_map.go Cleanup: filter out empty keybindings earlier 2026-05-28 19:26:43 +02:00
pty.go Copy gocui files into lazygit repo under pkg/gocui 2026-04-30 14:29:08 +02:00
pty_windows.go Copy gocui files into lazygit repo under pkg/gocui 2026-04-30 14:29:08 +02:00
recent_repos_panel.go Remove unused field gui.IsNewRepo 2024-12-01 10:44:26 +01:00
tasks_adapter.go Copy gocui files into lazygit repo under pkg/gocui 2026-04-30 14:29:08 +02:00
test_mode.go Copy gocui files into lazygit repo under pkg/gocui 2026-04-30 14:29:08 +02:00
view_helpers.go Copy gocui files into lazygit repo under pkg/gocui 2026-04-30 14:29:08 +02:00
views.go Convert JumpToBlock to a list of multi-key bindings 2026-05-25 15:32:47 +02:00