mirror of
https://github.com/binaricat/Netcatty.git
synced 2026-11-11 08:42:45 +00:00
* feat(terminal): disable auto-close-on-exit by default Remote graceful channel closes (VPN half-close, server-side idle kick) can be reported as a clean exit with code 0, so with auto-close enabled the tab gets destroyed exactly when the user needs it kept - bypassing the SSH auto-reconnect loop, which intentionally skips exited events. Keep tabs on exit by default; users who want close-on-exit can enable it in Settings > Terminal > Behavior. Attach-mode close behavior is unchanged. * fix(terminal): keep session tabs when the auto-close setting is unavailable The resolver's own default and the TerminalLayer call-site fallback still treated a missing terminal setting as auto-close enabled. Remote graceful channel closes (a jump host reaping an idle session) are reported as a clean exit, so before the settings store had loaded, those closes silently deleted the session tab and its scrollback. This completes the opt-in default introduced above: only an explicit autoCloseOnExit true closes tabs. * fix(terminal): migrate the materialized auto-close-on-exit default once Builds before the default flip shipped autoCloseOnExit: true as the default and materialized it into netcatty_term_settings_v1 on any settings write, so most upgraders carry a value they never chose and the new default-off never reaches them: bastion and idle-harvesting servers reporting clean exits keep silently deleting their tabs. Reset that materialized true exactly once behind a marker key before the settings blob is first ingested, then persist the marker so every later stored value is treated as the user's own choice. The cost is documented: a user who deliberately enabled auto-close before this release must re-enable it once. * fix(terminal): keep synced legacy auto-close from coming back A device that already wrote the one-shot migration marker was accepting a pre-migration cloud or backup payload with autoCloseOnExit true. Unversioned true is rewritten to false. Payloads that record the migration still sync an explicit opt-in, including across a three-way merge that would otherwise glue the local marker onto a legacy true. Co-authored-by: 陈大猫 <binaricat@users.noreply.github.com> --------- Co-authored-by: xu <tbqyomnnnbltzxy2t@aliyun.com> Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: 陈大猫 <binaricat@users.noreply.github.com>