Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
2e91498
Add git-spice stack integration to lazygit
claude Jan 18, 2026
a25883d
Optimize git-spice integration to avoid startup overhead
josephschmitt Jan 18, 2026
8992a42
Update Stacks tab keybindings to match branches pane
josephschmitt Jan 18, 2026
bd9c5a3
Fix Stacks tab not refreshing after operations
josephschmitt Jan 18, 2026
c2e7f23
Add short/long log format toggle for git-spice stacks
josephschmitt Jan 18, 2026
f14ea87
Refresh spice stacks when commits or branches change
josephschmitt Jan 18, 2026
d1c1183
Fix k key navigation in spice stacks long mode
josephschmitt Jan 18, 2026
ada27c7
Show only branch count in spice stacks footer
josephschmitt Jan 19, 2026
0023b28
Fix stack rendering order to match gs log output
josephschmitt Jan 18, 2026
f98b7d7
Fix missing hasRefreshed field in SpiceStacksController
josephschmitt Jan 19, 2026
9240136
Use corner character for stack branch connectors
josephschmitt Jan 18, 2026
5ba4964
Align commit SHAs with branch names in stack view
josephschmitt Jan 18, 2026
1d76a09
Fix spice long log not having vertical pipes or alignment
josephschmitt Jan 19, 2026
c7ee922
Fix stack rendering order to match gs log output
josephschmitt Jan 18, 2026
2b00be5
Implement git-spice fliptree algorithm for stack rendering
josephschmitt Jan 19, 2026
1346eb3
Fix sibling branches showing incorrect has-children indicator in long…
josephschmitt Jan 20, 2026
69e0f25
Fix commit SHA alignment when parent branch has children
josephschmitt Jan 20, 2026
4331900
Fix sibling branches incorrectly showing has-children indicator
josephschmitt Jan 20, 2026
2967652
Fix branch decoration positioning in stacks panel
josephschmitt Jan 21, 2026
fe1bb31
Refactor git-spice integration: cleanup and add feature flag
josephschmitt Jan 19, 2026
bba8d59
Add SPICE_STACKS to default refresh scope
josephschmitt Jan 20, 2026
2511f16
Enable commit selection in spice stacks view with fixup support
josephschmitt Jan 20, 2026
9f8cbda
Fix commit commands in spice stacks view
josephschmitt Jan 20, 2026
1f671d3
Add Enter navigation to spice stacks view
josephschmitt Jan 20, 2026
c6fedc4
Fix space key checkout on branches in spice stacks view
josephschmitt Jan 20, 2026
ff766de
Add main window updates to spice stacks view
josephschmitt Jan 20, 2026
7476e05
Move spice stack operations behind menus to avoid keybinding conflicts
josephschmitt Jan 20, 2026
3e1f2d5
Add context-sensitive ctrl-j/k for moving items in spice stacks view
josephschmitt Jan 20, 2026
677e38b
Make ctrl-j/k descriptions context-sensitive in spice stacks view
josephschmitt Jan 20, 2026
8e403b0
Add submit options (no-publish, update-only) to spice stacks menu
josephschmitt Jan 20, 2026
2da7a18
Add copy menu (y) for commits in spice stacks view
josephschmitt Jan 20, 2026
2a0f9e2
Add n/N keybindings for branch/commit creation in spice stacks view
josephschmitt Jan 20, 2026
da91584
Add git-spice initialization flow when stacks pane is empty
josephschmitt Jan 21, 2026
8720fa0
Add persistent log format config for spice stacks pane
josephschmitt Jan 21, 2026
d9641e6
Remove unused functions from spice_stacks_controller
josephschmitt Jan 21, 2026
c501822
Remove unused TrackBranch, UntrackBranch, CommitFixup from spice.go
josephschmitt Jan 21, 2026
501af64
Remove unused SpiceCommitFixup translation strings
josephschmitt Jan 21, 2026
57c923d
Remove unused IsLast and PRURL fields from SpiceStackItem
josephschmitt Jan 21, 2026
7a94743
Remove unused continuing map parameter from spice_stacks.go
josephschmitt Jan 21, 2026
7116bbd
Remove redundant comments from spice files
josephschmitt Jan 21, 2026
b9b5046
Add i18n translation keys for spice stacks feature
josephschmitt Jan 21, 2026
79ea0ea
Extract helper methods to reduce code duplication
josephschmitt Jan 21, 2026
91a034b
Display Ahead count in stacks status
josephschmitt Jan 21, 2026
ddee0a2
Add integration tests framework for spice stacks feature
josephschmitt Jan 21, 2026
7d3d0a0
Fix test and lint issues from code cleanup
josephschmitt Jan 21, 2026
6c3e4f1
Fix tree prefix alignment for sibling branches in spice stacks
josephschmitt Jan 21, 2026
b74200f
Add repo sync command to spice stacks
josephschmitt Jan 21, 2026
e16741f
Fix Sync command to use gs directly instead of git gs
josephschmitt Jan 21, 2026
a6cafbc
Add CR status flag to gs log command for PR status-based coloring
josephschmitt Jan 21, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions docs-master/Config.md
Original file line number Diff line number Diff line change
Expand Up @@ -465,6 +465,16 @@ git:
# passing the `--all` argument to `git log`)
showWholeGraph: false

# Config for git-spice integration
spice:
# If true, enable git-spice integration when the gs binary is available
enabled: true

# LogFormat for displaying git-spice stacks: 'short' | 'long'
# 'short' shows basic branch hierarchy
# 'long' shows additional PR info, sync status, and commits
logFormat: short

# How branches are sorted in the local branches view.
# One of: 'date' (default) | 'recency' | 'alphabetical'
# Can be changed from within Lazygit with the Sort Order menu (`s`) in the
Expand Down
26 changes: 26 additions & 0 deletions docs-master/keybindings/Keybindings_en.md
Original file line number Diff line number Diff line change
Expand Up @@ -328,6 +328,32 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
| `` <esc> `` | Exit back to side panel | |
| `` / `` | Search the current view by text | |

## Stacks

| Key | Action | Info |
|-----|--------|-------------|
| `` <enter> `` | View commits | |
| `` s `` | Squash | |
| `` f `` | Fixup | |
| `` r `` | Reword | |
| `` d `` | Drop | |
| `` e `` | Edit | |
| `` A `` | Amend | |
| `` g `` | Reset | |
| `` C `` | Copy (cherry-pick) | |
| `` y `` | Copy commit attribute to clipboard | |
| `` <space> `` | Checkout | |
| `` <c-j> `` | Move commit down one | |
| `` <c-k> `` | Move commit up one | |
| `` S `` | Stack operations | |
| `` G `` | Stack navigation | |
| `` V `` | Toggle log format | Toggle between short and long format. Short shows basic hierarchy, long shows PR info and sync status. |
| `` n `` | Create branch (on selected) | |
| `` N `` | Create commit | |
| `` 0 `` | Focus main view | |
| `` w `` | View worktree options | |
| `` / `` | Filter the current view by text | |

## Stash

| Key | Action | Info |
Expand Down
26 changes: 26 additions & 0 deletions docs-master/keybindings/Keybindings_ja.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,32 @@ _凡例:`<c-b>` はctrl+b、`<a-b>` はalt+b、`B` はshift+bを意味
| `` <enter> `` | 確認 | |
| `` <esc> `` | 閉じる/キャンセル | |

## Stacks

| Key | Action | Info |
|-----|--------|-------------|
| `` <enter> `` | コミットを表示 | |
| `` s `` | スカッシュ | |
| `` f `` | フィックスアップ | |
| `` r `` | メッセージ変更 | |
| `` d `` | 削除 | |
| `` e `` | 編集 | |
| `` A `` | 修正 | |
| `` g `` | リセット | |
| `` C `` | コピー(チェリーピック) | |
| `` y `` | コミット属性をクリップボードにコピー | |
| `` <space> `` | チェックアウト(ブランチの切り替え) | |
| `` <c-j> `` | コミットを1つ下に移動 | |
| `` <c-k> `` | コミットを1つ上に移動 | |
| `` S `` | Stack operations | |
| `` G `` | Stack navigation | |
| `` V `` | Toggle log format | Toggle between short and long format. Short shows basic hierarchy, long shows PR info and sync status. |
| `` n `` | Create branch (on selected) | |
| `` N `` | Create commit | |
| `` 0 `` | メインビューにフォーカス | |
| `` w `` | ワークツリーオプションを表示 | |
| `` / `` | 現在のビューをテキストでフィルタリング | |

## コミット

| Key | Action | Info |
Expand Down
26 changes: 26 additions & 0 deletions docs-master/keybindings/Keybindings_ko.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,32 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
| `` <esc> `` | Exit back to side panel | |
| `` / `` | 검색 시작 | |

## Stacks

| Key | Action | Info |
|-----|--------|-------------|
| `` <enter> `` | 커밋 보기 | |
| `` s `` | 스쿼시 | |
| `` f `` | Fixup | |
| `` r `` | 커밋메시지 변경 | |
| `` d `` | Drop | |
| `` e `` | Edit | |
| `` A `` | Amend | |
| `` g `` | View reset options | |
| `` C `` | 커밋을 복사 (cherry-pick) | |
| `` y `` | 커밋 attribute 복사 | |
| `` <space> `` | 체크아웃 | |
| `` <c-j> `` | 커밋을 1개 아래로 이동 | |
| `` <c-k> `` | 커밋을 1개 위로 이동 | |
| `` S `` | Stack operations | |
| `` G `` | Stack navigation | |
| `` V `` | Toggle log format | Toggle between short and long format. Short shows basic hierarchy, long shows PR info and sync status. |
| `` n `` | Create branch (on selected) | |
| `` N `` | Create commit | |
| `` 0 `` | Focus main view | |
| `` w `` | View worktree options | |
| `` / `` | Filter the current view by text | |

## Stash

| Key | Action | Info |
Expand Down
26 changes: 26 additions & 0 deletions docs-master/keybindings/Keybindings_nl.md
Original file line number Diff line number Diff line change
Expand Up @@ -306,6 +306,32 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
| `` <esc> `` | Exit back to side panel | |
| `` / `` | Start met zoeken | |

## Stacks

| Key | Action | Info |
|-----|--------|-------------|
| `` <enter> `` | Bekijk commits | |
| `` s `` | Squash | |
| `` f `` | Fixup | |
| `` r `` | Hernoem commit | |
| `` d `` | Laten vallen | |
| `` e `` | Edit | |
| `` A `` | Amend | |
| `` g `` | Bekijk reset opties | |
| `` C `` | Kopieer commit (cherry-pick) | |
| `` y `` | Copy commit attribute to clipboard | |
| `` <space> `` | Uitchecken | |
| `` <c-j> `` | Verplaats commit 1 naar beneden | |
| `` <c-k> `` | Verplaats commit 1 naar boven | |
| `` S `` | Stack operations | |
| `` G `` | Stack navigation | |
| `` V `` | Toggle log format | Toggle between short and long format. Short shows basic hierarchy, long shows PR info and sync status. |
| `` n `` | Create branch (on selected) | |
| `` N `` | Create commit | |
| `` 0 `` | Focus main view | |
| `` w `` | View worktree options | |
| `` / `` | Filter the current view by text | |

## Staging

| Key | Action | Info |
Expand Down
26 changes: 26 additions & 0 deletions docs-master/keybindings/Keybindings_pl.md
Original file line number Diff line number Diff line change
Expand Up @@ -321,6 +321,32 @@ _Legenda: `<c-b>` oznacza ctrl+b, `<a-b>` oznacza alt+b, `B` oznacza shift+b_
| `` w `` | Zobacz opcje drzewa pracy | |
| `` / `` | Filtruj bieżący widok po tekście | |

## Stacks

| Key | Action | Info |
|-----|--------|-------------|
| `` <enter> `` | Pokaż commity | |
| `` s `` | Scal | |
| `` f `` | Poprawka | |
| `` r `` | Przeformułuj | |
| `` d `` | Usuń | |
| `` e `` | Edytuj | |
| `` A `` | Popraw | |
| `` g `` | Reset | |
| `` C `` | Kopiuj (cherry-pick) | |
| `` y `` | Kopiuj atrybut commita do schowka | |
| `` <space> `` | Przełącz | |
| `` <c-j> `` | Przesuń commit w dół | |
| `` <c-k> `` | Przesuń commit w górę | |
| `` S `` | Stack operations | |
| `` G `` | Stack navigation | |
| `` V `` | Toggle log format | Toggle between short and long format. Short shows basic hierarchy, long shows PR info and sync status. |
| `` n `` | Create branch (on selected) | |
| `` N `` | Create commit | |
| `` 0 `` | Focus main view | |
| `` w `` | Zobacz opcje drzewa pracy | |
| `` / `` | Filtruj bieżący widok po tekście | |

## Status

| Key | Action | Info |
Expand Down
26 changes: 26 additions & 0 deletions docs-master/keybindings/Keybindings_pt.md
Original file line number Diff line number Diff line change
Expand Up @@ -337,6 +337,32 @@ _Legend: `<c-b>` means ctrl+b, `<a-b>` means alt+b, `B` means shift+b_
| `` <esc> `` | Exit back to side panel | |
| `` / `` | Search the current view by text | |

## Stacks

| Key | Action | Info |
|-----|--------|-------------|
| `` <enter> `` | View commits | |
| `` s `` | Squash | |
| `` f `` | Fixup | |
| `` r `` | Reword | |
| `` d `` | Descartar | |
| `` e `` | Editar | |
| `` A `` | Modificar | |
| `` g `` | Restaurar | |
| `` C `` | Copiar (cherry-pick) | |
| `` y `` | Copy commit attribute to clipboard | |
| `` <space> `` | Verificar | |
| `` <c-j> `` | Mover commit um para baixo | |
| `` <c-k> `` | Mover o commit um para cima | |
| `` S `` | Stack operations | |
| `` G `` | Stack navigation | |
| `` V `` | Toggle log format | Toggle between short and long format. Short shows basic hierarchy, long shows PR info and sync status. |
| `` n `` | Create branch (on selected) | |
| `` N `` | Create commit | |
| `` 0 `` | Focus main view | |
| `` w `` | View worktree options | |
| `` / `` | Filter the current view by text | |

## Stash

| Key | Action | Info |
Expand Down
26 changes: 26 additions & 0 deletions docs-master/keybindings/Keybindings_ru.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,32 @@ _Связки клавиш_
| `` <enter> `` | Подтвердить | |
| `` <esc> `` | Закрыть/отменить | |

## Stacks

| Key | Action | Info |
|-----|--------|-------------|
| `` <enter> `` | Просмотреть коммиты | |
| `` s `` | Объединить коммиты (Squash) | |
| `` f `` | Объединить несколько коммитов в один отбросив сообщение коммита (Fixup) | |
| `` r `` | Перефразировать коммит | |
| `` d `` | Удалить припрятанные изменения из хранилища | |
| `` e `` | Edit | |
| `` A `` | Amend | |
| `` g `` | Просмотреть параметры сброса | |
| `` C `` | Скопировать отобранные коммит (cherry-pick) | |
| `` y `` | Скопировать атрибут коммита | |
| `` <space> `` | Переключить | |
| `` <c-j> `` | Переместить коммит вниз на один | |
| `` <c-k> `` | Переместить коммит вверх на один | |
| `` S `` | Stack operations | |
| `` G `` | Stack navigation | |
| `` V `` | Toggle log format | Toggle between short and long format. Short shows basic hierarchy, long shows PR info and sync status. |
| `` n `` | Create branch (on selected) | |
| `` N `` | Create commit | |
| `` 0 `` | Focus main view | |
| `` w `` | View worktree options | |
| `` / `` | Filter the current view by text | |

## Worktrees

| Key | Action | Info |
Expand Down
26 changes: 26 additions & 0 deletions docs-master/keybindings/Keybindings_zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,32 @@ _图例:`<c-b>` 意味着ctrl+b, `<a-b>意味着Alt+b, `B` 意味着shift+b_
| `` ] `` | 下一个标签 | |
| `` [ `` | 上一个标签 | |

## Stacks

| Key | Action | Info |
|-----|--------|-------------|
| `` <enter> `` | 查看提交 | |
| `` s `` | 压缩(Squash) | |
| `` f `` | 修正 (fixup) | |
| `` r `` | 改写提交 | |
| `` d `` | 删除 | |
| `` e `` | 编辑(Edit) | |
| `` A `` | 修补(Amend) | |
| `` g `` | 查看重置选项 | |
| `` C `` | 复制提交(拣选) | |
| `` y `` | 复制提交属性到剪贴板 | |
| `` <space> `` | 检出 | |
| `` <c-j> `` | 下移提交 | |
| `` <c-k> `` | 上移提交 | |
| `` S `` | Stack operations | |
| `` G `` | Stack navigation | |
| `` V `` | Toggle log format | Toggle between short and long format. Short shows basic hierarchy, long shows PR info and sync status. |
| `` n `` | Create branch (on selected) | |
| `` N `` | Create commit | |
| `` 0 `` | 聚焦主视图 | |
| `` w `` | 查看工作区选项 | |
| `` / `` | 通过文本过滤当前视图 | |

## 子提交

| Key | Action | Info |
Expand Down
26 changes: 26 additions & 0 deletions docs-master/keybindings/Keybindings_zh-TW.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,32 @@ _說明:`<c-b>` 表示 Ctrl+B、`<a-b>` 表示 Alt+B,`B`表示 Shift+B
| `` <enter> `` | 確認 | |
| `` <esc> `` | 關閉/取消 | |

## Stacks

| Key | Action | Info |
|-----|--------|-------------|
| `` <enter> `` | 檢視提交 | |
| `` s `` | 壓縮 (Squash) | |
| `` f `` | 修復 (Fixup) | |
| `` r `` | 改寫提交 | |
| `` d `` | 捨棄 | |
| `` e `` | 編輯 | |
| `` A `` | 修改 | |
| `` g `` | 檢視重設選項 | |
| `` C `` | 複製提交 (揀選) | |
| `` y `` | 複製提交屬性 | |
| `` <space> `` | 檢出 | |
| `` <c-j> `` | 向下移動提交 | |
| `` <c-k> `` | 向上移動提交 | |
| `` S `` | Stack operations | |
| `` G `` | Stack navigation | |
| `` V `` | Toggle log format | Toggle between short and long format. Short shows basic hierarchy, long shows PR info and sync status. |
| `` n `` | Create branch (on selected) | |
| `` N `` | Create commit | |
| `` 0 `` | Focus main view | |
| `` w `` | 檢視工作目錄選項 | |
| `` / `` | 搜尋 | |

## 主面板 (補丁生成)

| Key | Action | Info |
Expand Down
1 change: 1 addition & 0 deletions pkg/cheatsheet/generate.go
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@ func localisedTitle(tr *i18n.TranslationSet, str string) string {
"suggestions": tr.SuggestionsCheatsheetTitle,
"extras": tr.ExtrasTitle,
"worktrees": tr.WorktreesTitle,
"spiceStacks": tr.SpiceStacksTitle,
}

title, ok := contextTitleMap[str]
Expand Down
6 changes: 6 additions & 0 deletions pkg/commands/git.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ type GitCommand struct {
WorkingTree *git_commands.WorkingTreeCommands
Bisect *git_commands.BisectCommands
Worktree *git_commands.WorktreeCommands
Spice *git_commands.SpiceCommands
Version *git_commands.GitVersion
RepoPaths *git_commands.RepoPaths

Expand All @@ -52,6 +53,7 @@ type Loaders struct {
RemoteLoader *git_commands.RemoteLoader
StashLoader *git_commands.StashLoader
TagLoader *git_commands.TagLoader
SpiceStackLoader *git_commands.SpiceStackLoader
Worktrees *git_commands.WorktreeLoader
}

Expand Down Expand Up @@ -137,6 +139,7 @@ func NewGitCommandAux(
bisectCommands := git_commands.NewBisectCommands(gitCommon)
worktreeCommands := git_commands.NewWorktreeCommands(gitCommon)
blameCommands := git_commands.NewBlameCommands(gitCommon)
spiceCommands := git_commands.NewSpiceCommands(gitCommon)

branchLoader := git_commands.NewBranchLoader(cmn, gitCommon, cmd, branchCommands.CurrentBranchInfo, configCommands)
commitFileLoader := git_commands.NewCommitFileLoader(cmn, cmd)
Expand All @@ -146,6 +149,7 @@ func NewGitCommandAux(
worktreeLoader := git_commands.NewWorktreeLoader(gitCommon)
stashLoader := git_commands.NewStashLoader(cmn, cmd)
tagLoader := git_commands.NewTagLoader(cmn, cmd)
spiceStackLoader := git_commands.NewSpiceStackLoader(cmn, spiceCommands)

return &GitCommand{
Blame: blameCommands,
Expand All @@ -167,6 +171,7 @@ func NewGitCommandAux(
Bisect: bisectCommands,
WorkingTree: workingTreeCommands,
Worktree: worktreeCommands,
Spice: spiceCommands,
Version: version,
Loaders: Loaders{
BranchLoader: branchLoader,
Expand All @@ -178,6 +183,7 @@ func NewGitCommandAux(
Worktrees: worktreeLoader,
StashLoader: stashLoader,
TagLoader: tagLoader,
SpiceStackLoader: spiceStackLoader,
},
RepoPaths: repoPaths,
}
Expand Down
Loading