chore(tui): upgrade tamboui to 0.4.0#76
Conversation
📝 WalkthroughWalkthroughThe PR updates Tamboui dependency management to use a BOM and toolkit, switches app bindings to vim-based key maps, refactors TUI key handlers to direct key-state checks or toolkit delegation, and updates matching tests and docs. ChangesTamboui dependency and UI wiring
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
The Windows-specific jline3-first preference let the backend factory settle on a JLine terminal that constructs successfully but does not deliver key events, since the factory only falls through when create() throws. Panama gained a first-class Win32 console backend (SetConsoleMode + ENABLE_VIRTUAL_TERMINAL_INPUT + ReadConsoleInput) in tamboui 0.4.0, so it is now the default on every platform. The tamboui.backend / TAMBOUI_BACKEND override still allows forcing jline3 when needed. Drops the Windows backend special-case and the org.jline.terminal.dumb fallback workaround.
…n jumps Cover the full TUI keybinding surface: Vim-style motion keys (j/k/h/l/g/G), case-insensitive letter shortcuts, Shift variants of every Ctrl/Alt shortcut, the selected-only filter (Alt+S), and invalid-field navigation (Alt+N/Alt+P).
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/modules/ROOT/pages/troubleshooting.adoc`:
- Line 30: The troubleshooting note for the backend fallback uses the wrong JVM
property syntax, so update the instruction in the relevant documentation section
to use the executable system-property form with the same symbol,
tamboui.backend, as described alongside the Forge backend fallback. Keep the
environment-variable alternative as-is, but change the property example to the
-D form so users can pass it when launching the jar.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: f8ed916a-32e6-4068-8b24-42362fdcdb43
📒 Files selected for processing (14)
README.mddocs/modules/ROOT/pages/troubleshooting.adocdocs/modules/ROOT/pages/ui/keybindings.adocdocs/modules/ROOT/pages/usage/tui.adocsrc/main/java/dev/ayagmar/quarkusforge/runtime/TuiBootstrapService.javasrc/main/java/dev/ayagmar/quarkusforge/ui/CoreTuiController.javasrc/main/java/dev/ayagmar/quarkusforge/ui/PostGenerationMenuState.javasrc/main/java/dev/ayagmar/quarkusforge/ui/UiKeyPredicates.javasrc/test/java/dev/ayagmar/quarkusforge/TuiBootstrapServiceTest.javasrc/test/java/dev/ayagmar/quarkusforge/ui/AppKeyActionsTest.javasrc/test/java/dev/ayagmar/quarkusforge/ui/CoreTuiShellPilotTest.javasrc/test/java/dev/ayagmar/quarkusforge/ui/CoreUiReducerTest.javasrc/test/java/dev/ayagmar/quarkusforge/ui/InputEffectsTest.javasrc/test/java/dev/ayagmar/quarkusforge/ui/PostGenerationMenuStateTest.java
✅ Files skipped from review due to trivial changes (2)
- docs/modules/ROOT/pages/ui/keybindings.adoc
- README.md
🚧 Files skipped from review as they are similar to previous changes (1)
- src/test/java/dev/ayagmar/quarkusforge/ui/CoreTuiShellPilotTest.java
| ---- | ||
| . Verify your terminal supports 256-color or true-color (e.g., `echo $TERM`). Recommended: `xterm-256color`, `alacritty`, `kitty`, or `wezterm`. | ||
| . On Windows, use Windows Terminal or a recent ConEmu/Git Bash with VT mode enabled. Forge now defaults to the JLine backend on Windows to preserve arrow-key navigation; avoid forcing `tamboui.backend=panama` unless you are debugging backend behavior. | ||
| . On Windows, run inside a real console (Windows Terminal, PowerShell, or `cmd.exe`) so the Panama backend can enable virtual-terminal input; Git Bash/MSYS `mintty` does not expose a Win32 console and leaves keys unregistered without `winpty`. Forge defaults to the Panama backend on every platform; set `tamboui.backend=jline3` (or `TAMBOUI_BACKEND=jline3`) only if you need to fall back to JLine. |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Use the JVM -D form in the fallback instruction.
Line 30 currently shows tamboui.backend=jline3, but users need -Dtamboui.backend=jline3 when launching the jar. As written, the documented system-property override is not executable.
Suggested wording
-. On Windows, run inside a real console (Windows Terminal, PowerShell, or `cmd.exe`) so the Panama backend can enable virtual-terminal input; Git Bash/MSYS `mintty` does not expose a Win32 console and leaves keys unregistered without `winpty`. Forge defaults to the Panama backend on every platform; set `tamboui.backend=jline3` (or `TAMBOUI_BACKEND=jline3`) only if you need to fall back to JLine.
+. On Windows, run inside a real console (Windows Terminal, PowerShell, or `cmd.exe`) so the Panama backend can enable virtual-terminal input; Git Bash/MSYS `mintty` does not expose a Win32 console and leaves keys unregistered without `winpty`. Forge defaults to the Panama backend on every platform; start the JVM with `-Dtamboui.backend=jline3` (or set `TAMBOUI_BACKEND=jline3`) only if you need to fall back to JLine.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| . On Windows, run inside a real console (Windows Terminal, PowerShell, or `cmd.exe`) so the Panama backend can enable virtual-terminal input; Git Bash/MSYS `mintty` does not expose a Win32 console and leaves keys unregistered without `winpty`. Forge defaults to the Panama backend on every platform; set `tamboui.backend=jline3` (or `TAMBOUI_BACKEND=jline3`) only if you need to fall back to JLine. | |
| . On Windows, run inside a real console (Windows Terminal, PowerShell, or `cmd.exe`) so the Panama backend can enable virtual-terminal input; Git Bash/MSYS `mintty` does not expose a Win32 console and leaves keys unregistered without `winpty`. Forge defaults to the Panama backend on every platform; start the JVM with `-Dtamboui.backend=jline3` (or set `TAMBOUI_BACKEND=jline3`) only if you need to fall back to JLine. |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/modules/ROOT/pages/troubleshooting.adoc` at line 30, The troubleshooting
note for the backend fallback uses the wrong JVM property syntax, so update the
instruction in the relevant documentation section to use the executable
system-property form with the same symbol, tamboui.backend, as described
alongside the Forge backend fallback. Keep the environment-variable alternative
as-is, but change the property example to the -D form so users can pass it when
launching the jar.
Summary by CodeRabbit
Summary
New Features
Bug Fixes
Documentation
Tests