Skip to content

fix: preserve workspace recency in keyboard window switching - #10

Merged
PangMo5 merged 1 commit into
mainfrom
pangmo5/workspace-switcher-mru
Sep 10, 2026
Merged

PangMo5 merged 1 commit into
mainfrom
pangmo5/workspace-switcher-mru

Conversation

@PangMo5

@PangMo5 PangMo5 commented Sep 10, 2026

Copy link
Copy Markdown
Owner

Keyboard window switching now uses recent focus independently for each workspace. A quick Option+Tab returns to the last-used app or window; holding the modifier keeps the candidate order fixed until release or cancellation. Workspace changes and layout edits preserve recency during the app session.

The change covers shared and non-tiled windows, Borrow composition, native window ID replacement, and app termination. DemoLab now sends complete modifier press/release events so quick taps finish the native switcher session. Localized configuration guidance describes the behavior; the README also explains the Tatami name.

Validation: 744 macOS tests and 61 DemoLab tests passed. A 66-step VM scenario verified quick toggles, held order, and independent workspace histories. All 35 localized documents passed generation checks, and the fresh host Debug build launched successfully.

- Track recent focus per workspace, including shared and non-tiled windows,
  and preserve it across workspace switches and layout changes.
- Freeze held switcher sessions and remember the resolved focus anchor so
  quick taps return to the last-used window before AX notifications arrive.
- Maintain recency through Borrow, window replacement, and app termination.
- Send complete modifier lifetimes from DemoLab keyboard taps.
- Document switching behavior and the Tatami name in all five languages.

Tests: 744 macOS tests and 61 DemoLab tests passed; 66-step VM scenario
passed; 35 localized documents verified; host Debug build and launch passed.
@PangMo5
PangMo5 merged commit 0141e7e into main Sep 10, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant