The macOS wrapper is at qt_wrapper parity and integrated (.app in /Applications, Dock pin, native memory mechanisms). Four senior-mac-UI polish items remain, none blocking:
-
Close-to-Dock lifecycle. The red close button currently quits the app (tears down the page + stops the server). macOS convention: clicking close hides the window and keeps the app running in the Dock; the app quits only via Cmd+Q or the Dock menu's Quit. Requires setQuitOnLastWindowClosed(False), a _quitting flag so Cmd+Q still fully quits, moving stop_server()/geometry-save onto app.aboutToQuit, and a Dock-reopen handler ("app activated and window hidden → show + raise").
-
Native Edit menu. No menu bar today, so Cmd+C/V route through the macOS first-responder/menu chain and are unreliable in the web view. Add a native menu bar (QMainWindow.menuBar() becomes the global mac menu bar) with a standard Edit menu — Undo/Redo/Cut/Copy/Paste/Select All — wired to browser.pageAction(QWebEnginePage.WebAction.*) with QKeySequence.StandardKey shortcuts. Mac-only by construction (an in-window menu bar would be unwanted chrome on Win/Linux, where QtWebEngine handles editing keys directly).
-
Multi-resolution .icns. build-mac-app.sh currently produces a single 512px icns via sips. Build a proper iconset (16–512 + @2x) rendered from the SVG at native resolution and iconutil -c icns; fall back to sips-from-PNG only without an SVG.
-
Ad-hoc codesign. codesign --force --deep --sign - Odysseus.app for a stable local identity and reduced quarantine friction. NOT Gatekeeper/notarization — those need a Developer ID and Apple's notary service.
All four are mac-only (mac_wrapper.py / build-mac-app.sh), verifiable on the Tahoe bench except the live Cmd+C keystroke (from-the-chair). Folds under the #43 wrapper work.
The macOS wrapper is at qt_wrapper parity and integrated (.app in /Applications, Dock pin, native memory mechanisms). Four senior-mac-UI polish items remain, none blocking:
Close-to-Dock lifecycle. The red close button currently quits the app (tears down the page + stops the server). macOS convention: clicking close hides the window and keeps the app running in the Dock; the app quits only via Cmd+Q or the Dock menu's Quit. Requires
setQuitOnLastWindowClosed(False), a_quittingflag so Cmd+Q still fully quits, movingstop_server()/geometry-save ontoapp.aboutToQuit, and a Dock-reopen handler ("app activated and window hidden → show + raise").Native Edit menu. No menu bar today, so Cmd+C/V route through the macOS first-responder/menu chain and are unreliable in the web view. Add a native menu bar (
QMainWindow.menuBar()becomes the global mac menu bar) with a standard Edit menu — Undo/Redo/Cut/Copy/Paste/Select All — wired tobrowser.pageAction(QWebEnginePage.WebAction.*)withQKeySequence.StandardKeyshortcuts. Mac-only by construction (an in-window menu bar would be unwanted chrome on Win/Linux, where QtWebEngine handles editing keys directly).Multi-resolution .icns.
build-mac-app.shcurrently produces a single 512px icns viasips. Build a proper iconset (16–512 + @2x) rendered from the SVG at native resolution andiconutil -c icns; fall back to sips-from-PNG only without an SVG.Ad-hoc codesign.
codesign --force --deep --sign - Odysseus.appfor a stable local identity and reduced quarantine friction. NOT Gatekeeper/notarization — those need a Developer ID and Apple's notary service.All four are mac-only (mac_wrapper.py / build-mac-app.sh), verifiable on the Tahoe bench except the live Cmd+C keystroke (from-the-chair). Folds under the #43 wrapper work.