mirror of
https://github.com/abue-ammar/tinycast.git
synced 2026-10-02 00:04:44 +08:00
* Let palette screens answer their own shortcuts RootPaletteView had grown back to 1,513 lines, and much of that was feature code: ten key handlers that cast `screen` to a concrete type, the AI model menus, and views other files use. - `PaletteShortcut` recognises each row chord (⌘⌫, ⌃X, ⇧⌘C, ⌘Y, ⇧⌘F, ⌘R, …) and carries its compact-bar and open-menu guards; a screen acts on it through `PaletteScreen.perform(_:at:)`. One handler replaces the ten, and ⌘. and ⌘1…⌘0 go through the same call. - The AI model and reasoning menus move to `AIModelMenu`, next to the rest of AI. - `ArmedHover`, `EmptyResults`, `PaletteBackground` and `CompactFavoritesRow` get their own files. - The rule for what saving an AI connection does to its Keychain key moves out of the view into `AIConnectionKeyPolicy`, and the connection editor sheet gets its own file. No behaviour change. RootPaletteView is 1,204 lines; AISettingsView is 640. * Refactor AppSettings to improve readability of palettePositions assignment