fix: close global menu before detach
This commit is contained in:
parent
ced3fea29c
commit
f99d51e42e
19
CHANGELOG.md
19
CHANGELOG.md
|
|
@ -2,20 +2,21 @@
|
|||
|
||||
## Unreleased
|
||||
|
||||
### Breaking Changes Please Read
|
||||
- herdr now defaults to a persistent server/client session model. running `herdr` starts or reattaches to a background session server instead of launching the old single-process UI.
|
||||
- quitting the UI in default mode now detaches the current client and leaves the shared session running. use `herdr server stop` to stop the background server explicitly.
|
||||
- the old monolithic behavior is still available as an escape hatch with `herdr --no-session`.
|
||||
|
||||
### Added
|
||||
- herdr now defaults to a persistent server/client session model. launching `herdr` starts or reattaches to a background session server, and `herdr server stop` shuts that server down explicitly.
|
||||
- The thin client, headless server, and their integration coverage are now part of the main product, including detach and reattach flows, multi-client attach, and auto-detect launch.
|
||||
- Persistent sessions are now the default product behavior. You can detach and reattach without stopping pane processes.
|
||||
- Added the thin client and headless server as first-class product components, including auto-detect launch, explicit `herdr client`, and `herdr server stop`.
|
||||
- Sessions now restore cleanly after full restart, preserving workspaces, tabs, panes, and running process state.
|
||||
- Multi-client attach is now supported. Multiple clients can connect to the same shared session.
|
||||
|
||||
### Changed
|
||||
- In persistence mode, in-app quit actions now detach the current client by default instead of shutting down the whole background server.
|
||||
- The current persistence model is a shared session view across attached clients. It is not yet full tmux-style per-client independent navigation.
|
||||
|
||||
### Fixed
|
||||
- Headless client input routing now re-encodes keys for the focused pane's negotiated keyboard protocol, fixing broken modified keys like Ghostty CSI-u `Ctrl-C` sequences reaching panes as literal text.
|
||||
- Thin-client frame blitting now resets style state correctly between cells, fixing modifier leakage artifacts such as long underline-like horizontal lines.
|
||||
- Client/server mode now restores the host terminal default foreground and background theme sync, so libghostty panes no longer fall back to a black background when attached through the persistence client.
|
||||
- Client-side persistence notifications no longer leak plain text into the pane area.
|
||||
- Clipboard copy in persistence mode now routes through attached clients correctly, and SSH sessions prefer OSC 52 over remote clipboard helpers.
|
||||
- Restored sessions now land in terminal mode, while fresh sessions still start in navigate mode.
|
||||
|
||||
## [0.4.11] - 2026-04-16
|
||||
|
||||
|
|
|
|||
|
|
@ -121,7 +121,10 @@ pub(super) fn request_quit_or_detach(state: &mut AppState) {
|
|||
|
||||
pub(super) fn apply_global_menu_action(state: &mut AppState, action: GlobalMenuAction) {
|
||||
match action {
|
||||
GlobalMenuAction::Quit => request_quit_or_detach(state),
|
||||
GlobalMenuAction::Quit => {
|
||||
leave_modal(state);
|
||||
request_quit_or_detach(state);
|
||||
}
|
||||
GlobalMenuAction::WhatsNew => open_update_release_notes(state),
|
||||
GlobalMenuAction::Keybinds => open_keybind_help(state),
|
||||
GlobalMenuAction::ReloadKeybinds => {
|
||||
|
|
|
|||
|
|
@ -602,6 +602,7 @@ mod tests {
|
|||
|
||||
assert!(app.state.detach_requested);
|
||||
assert!(!app.state.should_quit);
|
||||
assert_ne!(app.state.mode, Mode::GlobalMenu);
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
|
|||
Loading…
Reference in New Issue