What's changed
Added
- Discoverable "+" button in single-window state — issue #75 — AppKit's native tab bar (with its own "+" button) only renders when ≥2 tabs are in the group, which means single-window users had no way to discover that tabs exist short of
Cmd+Tmuscle-memory. Added a small "+" button at the top-right of the title-bar drag zone that's always visible in single-window state. When a second tab opens and AppKit's own tab bar appears, our button auto-hides so we don't double up with AppKit's "+". Click routes toAppDelegate.newBrowserTab()(the same target asCmd+T). Reporter: @CygnusIgnis. Closes #75. - Standard application menu items (Hide / Hide Others / Show All / Services) — issue #77 —
Cmd+Hdid nothing because the hand-rolled application menu inAppDelegate.setupMenu()only had About / Check for Updates / Settings / Quit. TheWindow → Show Hermesitem usedCmd+Shift+H(uppercasekeyEquivalent), and there was noNSApplication.hide(_:)selector registered against any item withCmd+H. Added the standard macOS HIG application-menu group between Preferences and Quit: Services submenu (auto-populated by AppKit viaNSApp.servicesMenu), Hide [App] (Cmd+H), Hide Others (Option+Cmd+H), and Show All. Reporter: @CygnusIgnis. Closes #77.
Fixed
- Tab-bar chrome no longer flashes light from overlay or partial-paint samples — issue #70 follow-up — v1.6.2 stopped reading pixel samples for chrome when a
<meta theme-color>was available, but the appearance-resolution rule (which decides whether to apply.aquaor.darkAqua) still flipped to light at any luminance ≥ 0.5. A poisoned UserDefaults cache (e.g. an off-white sample stuck from before v1.6.2) could persist and make the next launch open with.aquaeven when the user's actual theme was dark — giving them a flash of light AppKit material before the bridge re-sampled. Per Nathan's directive ("default dark, only flip light with strong evidence"), raised the threshold to 0.85 (genuinely near-white). Both code paths —loadCachedTheme()on launch and the livehermesThememessage handler — now share a singleAppDelegate.appearanceForLuminance(_:)helper. Canonical light-theme--bgvalues for hermes-webui are #FEFCF7 (~0.99) and #FAF9F5 (~0.98), well above the threshold; canonical dark-theme--bgvalues are around #1A1A1A (~0.10), well below. Anything in the 0.5…0.85 murky middle (overlay dim layers, half-translucent panels, partial-paint mount samples) stays.darkAqua. Reporter: @CygnusIgnis (#70 follow-up). - "Update Now" no longer navigates to a JSON
{"error":"not found"}page — issue #76 — pressing "Update Now" in the WebUI's update banner could land the WKWebView on a bare JSON page (recovers on app restart). Cause: a race during the post-update server restart where_waitForServerThenReload()'slocation.reload()arrives at a moment when the server's route table is partially built — the home route returns the{"error":"not found"}JSON shape via the route table's_not_foundfallback. Added a defensive guard indecidePolicyForthat cancels any in-app navigation to/api/*paths. The WebUI's JS treats those as fetch targets only; if a navigation slips through (this race or any future regression), the WKWebView keeps the previous page state visible instead of rendering a JSON body as the entire page. Companion WebUI-side fix tracked at nesquena/hermes-webui#1835 to lock down the home route to never return JSON. Reporter: @CygnusIgnis. Closes #76.
Notes
- Issue #78 (surface compression status) closed as wrong-repo. Real fix targets the WebUI's compression UI gaps — refiled as nesquena/hermes-webui#1832 (in-progress signal), #1833 (in-conversation marker), and #1834 (toast TTL / sticky banner).
- Issue #73 (latent skin-only sync gap) deferred — every current theme has a distinct
--bg, so the bug doesn't surface in production. Stays open against a future skin that overlays accent on a shared--bg.
Download Hermes-Agent-v1.7.0.dmg, open the DMG, and drag Hermes Agent to your Applications folder.
This release is signed with a Developer ID certificate and notarized by Apple. macOS will open it without any Gatekeeper warning.
Requirements: macOS 12+ (Monterey or later)
What's Changed
- feat: v1.7.0 — Mac chrome polish (Cmd+H, /api guard, dark-default tabs, "+" button) by @nesquena-hermes in #79
Full Changelog: v1.6.4...v1.7.0