Redesign the macOS client as native SwiftUI with no web view
This commit is contained in:
@@ -16,11 +16,15 @@
|
||||
|
||||
# M8 — macOS client
|
||||
|
||||
- macOS client feasibility build
|
||||
See `docs/macos.md`. Throwaway AppKit + WKWebView shell with a UI/navigation delegate and the Notification polyfill, pointed at a development byre. Compare with Safari: identity and both SSE streams, terminal Ctrl keys, typed vs Go-menu ⌘K/P/L/S/ with a dialog open, screenshot paste and Finder drop, code Copy, every `_blank` link type, notification permission and click, blur on app switch and window close, an hour hidden then a question, sleep/wake, quit with a draft. Record OS/SDK and signing results.
|
||||
- macOS client shell
|
||||
`mac/` Xcode project: one window hosting a persistent WKWebView on the configured origin, connection sheet with 401/403/TLS/unreachable errors and Change Server…, `_blank` and off-origin links to NSWorkspace, menus with no File menu and no key equivalents for page shortcuts, hide-on-close, quit via pagehide, reload-once crash recovery.
|
||||
- macOS client notifications
|
||||
Document-start `Notification` polyfill backed by UNUserNotificationCenter via a main-frame, origin-checked message handler; `tag` as request id, click shows the window then calls the page's onclick; permission re-read on activation.
|
||||
- macOS client spike
|
||||
See `docs/macos.md`. SwiftUI package under `mac/` built with `swift build` and bundled by script, pointed at a development byre (never the service). Settle each row of "Gaps in SwiftUI": composer Enter/Shift-Enter/IME, image paste and drop, a long real transcript scrolling and staying stuck to the bottom, cross-message selection, SwiftTerm terminal with Ctrl keys, Core Text loading `web/fonts/`, SVG images. Record which fallbacks were needed.
|
||||
- macOS client store and API
|
||||
Generated client from `api/openapi.yaml`, hand-written SSE client, `Store` and `Feed` ported from `state.ts`, startup sequence, connection screen with 401/403/TLS/unreachable errors and Change Server…, `Palette.swift` generated from `web/style.css`.
|
||||
- macOS client panes and transcript
|
||||
Window and two equal panes, tab strips with More, Lead and task transcripts via `TranscriptBuilder`, composer, drafts, Markdown port, images, native flowchart diagrams, pane-focus reporting, identity banner.
|
||||
- macOS client tabs
|
||||
Changes, Files, Terminal, Inbox, Reviews, Workflow (native stage graph), Project, Status, Settings.
|
||||
- macOS client overlays, menus and notifications
|
||||
Switcher, keyboard help, alert and confirm overlays, Merge and Discard dialogs, Go menu shortcuts with the Ctrl variants and terminal passthrough, UNUserNotificationCenter notifications.
|
||||
- macOS client parity review
|
||||
Side by side with Safari on the same server, size and appearance, using disposable tasks: every tab, switcher, Inbox choice types, merge/discard dialogs, light/dark, narrow windows, IME. Document build, setup, storage and limits in `docs/operations.md`.
|
||||
Side by side with the web client on the same server, window size and appearance, using disposable tasks: every tab, switcher, Inbox choice types, merge/discard dialogs, light/dark, narrow windows, IME. Document build, install and storage in `docs/operations.md`.
|
||||
|
||||
Reference in New Issue
Block a user