the TUI needs to have a panel "7" that opens a sidebar for git changes and in the main content area it shows a scrollable diff of the current folder. this is to allow to manage the content sync, so it also needs to be able to pull and push and of course commit.
the TUI needs to have a panel "7" that opens a sidebar for git changes and in the main content area it shows a scrollable diff of the current folder. this is to allow to manage the content sync, so it also needs to be able to pull and push and of course commit.
hugo
added the idea label 2026-07-15 18:28:54 +00:00
Key 7 in the TUI opens the git panel for content sync, driven by the same BDS.Git backend as the GUI git view:
Sidebar: the changed files from git status as <code> <path> entries (M/A/D/R/U), with the current branch and ahead/behind counts in the panel title (e.g. Git [main ↑1 ↓0]).
Main area: a scrollable whole-folder diff (staged + unstaged), paged with pgup/pgdn and capped at 5000 lines so a huge working tree can't flood the terminal. Enter on a file in the sidebar jumps the diff straight to that file's hunk.
c commit: opens a status-line prompt for the message, then git add -A + commit (empty messages are rejected).
u pull (ff-only) and s push: run off the UI process so the interface never blocks on the network; the result (or the git error output) lands as a status toast and the panel reloads.
A project folder that isn't a git repository shows "Not a git repository." and refuses the actions with a hint instead of erroring.
All key hints live in the status line when the panel is open. Covered by 8 tests against real git repositories (test/bds/tui_test.exs, git view describe block), spec updated (rule GitPanel in specs/tui.allium, allium check clean), all new UI strings translated for de/fr/it/es. Build, full test suite, credo, deps.audit and dialyzer are all clean.
Implemented in 5433cb5.
Key `7` in the TUI opens the git panel for content sync, driven by the same `BDS.Git` backend as the GUI git view:
- **Sidebar**: the changed files from git status as `<code> <path>` entries (M/A/D/R/U), with the current branch and ahead/behind counts in the panel title (e.g. `Git [main ↑1 ↓0]`).
- **Main area**: a scrollable whole-folder diff (staged + unstaged), paged with pgup/pgdn and capped at 5000 lines so a huge working tree can't flood the terminal. Enter on a file in the sidebar jumps the diff straight to that file's hunk.
- **`c` commit**: opens a status-line prompt for the message, then `git add -A` + commit (empty messages are rejected).
- **`u` pull** (ff-only) and **`s` push**: run off the UI process so the interface never blocks on the network; the result (or the git error output) lands as a status toast and the panel reloads.
- A project folder that isn't a git repository shows "Not a git repository." and refuses the actions with a hint instead of erroring.
All key hints live in the status line when the panel is open. Covered by 8 tests against real git repositories (test/bds/tui_test.exs, git view describe block), spec updated (rule GitPanel in specs/tui.allium, allium check clean), all new UI strings translated for de/fr/it/es. Build, full test suite, credo, deps.audit and dialyzer are all clean.
Follow-up in 46fd6c1: the git sidebar now shows the commit history in its lower half, like the GUI — the sidebar splits 50/50 into the changed files (top, navigable) and a History panel (bottom) listing <short hash> <subject> per commit, with ↑ marking commits that still need a push and ↓ remote-only ones. The history refreshes with every panel reload, so a commit made from the panel appears immediately.
Follow-up in 46fd6c1: the git sidebar now shows the commit history in its lower half, like the GUI — the sidebar splits 50/50 into the changed files (top, navigable) and a History panel (bottom) listing `<short hash> <subject>` per commit, with ↑ marking commits that still need a push and ↓ remote-only ones. The history refreshes with every panel reload, so a commit made from the panel appears immediately.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
the TUI needs to have a panel "7" that opens a sidebar for git changes and in the main content area it shows a scrollable diff of the current folder. this is to allow to manage the content sync, so it also needs to be able to pull and push and of course commit.
Implemented in
5433cb5.Key
7in the TUI opens the git panel for content sync, driven by the sameBDS.Gitbackend as the GUI git view:<code> <path>entries (M/A/D/R/U), with the current branch and ahead/behind counts in the panel title (e.g.Git [main ↑1 ↓0]).ccommit: opens a status-line prompt for the message, thengit add -A+ commit (empty messages are rejected).upull (ff-only) andspush: run off the UI process so the interface never blocks on the network; the result (or the git error output) lands as a status toast and the panel reloads.All key hints live in the status line when the panel is open. Covered by 8 tests against real git repositories (test/bds/tui_test.exs, git view describe block), spec updated (rule GitPanel in specs/tui.allium, allium check clean), all new UI strings translated for de/fr/it/es. Build, full test suite, credo, deps.audit and dialyzer are all clean.
Follow-up in
46fd6c1: the git sidebar now shows the commit history in its lower half, like the GUI — the sidebar splits 50/50 into the changed files (top, navigable) and a History panel (bottom) listing<short hash> <subject>per commit, with ↑ marking commits that still need a push and ↓ remote-only ones. The history refreshes with every panel reload, so a commit made from the panel appears immediately.