Skip to content

feat(app): CODEC owns a native window — the dashboard renders in the app, not in Chrome - #346

Merged
AVADSA25 merged 2 commits into
mainfrom
feat/native-app-window
Sep 4, 2026
Merged

feat(app): CODEC owns a native window — the dashboard renders in the app, not in Chrome#346
AVADSA25 merged 2 commits into
mainfrom
feat/native-app-window

Conversation

@AVADSA25

@AVADSA25 AVADSA25 commented Sep 4, 2026

Copy link
Copy Markdown
Owner

"it running inside google chrome!!! what the whole point? aint we building
a app???" Fair. The launcher handed localhost:8090 to the default browser,
so "the Mac app" was a website with an icon in front of it.

DashboardWindow.swift: a WKWebView inside a real NSWindow — own title bar,
CODEC's icon in the Dock and ⌘-Tab, no address bar, no tabs, no other
browser's cookies or extensions. Remembers size and position. Closing the
window leaves the agent running in the menu bar; the Dock icon brings it
back (applicationShouldHandleReopen).

It is a window onto localhost, NOT an embedded browser: decidePolicyFor
refuses any host that is not loopback and hands the URL to the real browser,
so a source link in a chat reply opens in Safari/Chrome rather than turning
a window with no address bar into a rogue browser. target=_blank goes out
the same way. The load retries for ~30s while the fleet binds its port.

Activation policy is .regular now (a window app belongs in the Dock);
LSUIElement is removed and NSAllowsLocalNetworking added — without the ATS
exemption the WKWebView shows a blank window over plain-http loopback.
Top-level bootstrap moved to main.swift, the only file Swift allows it in
once the launcher became multi-file; build_app.sh compiles every launcher
source so the window cannot be silently dropped.

Verified via System Events on the installed app: windows: 1, background
only: false, window title: CODEC, 1180x800, dashboard content rendered.

G5 updated: asserts DashboardWindow.swift with a WKWebView and a navigation
policy, no LSUIElement, ATS exemption present, and no external-browser open
of the dashboard URL.

Co-Authored-By: Claude Fable 5.1 noreply@anthropic.com

Mikarina13 and others added 2 commits September 4, 2026 15:17
…app, not in Chrome

"it running inside google chrome!!! what the whole point? aint we building
a app???" Fair. The launcher handed localhost:8090 to the default browser,
so "the Mac app" was a website with an icon in front of it.

DashboardWindow.swift: a WKWebView inside a real NSWindow — own title bar,
CODEC's icon in the Dock and ⌘-Tab, no address bar, no tabs, no other
browser's cookies or extensions. Remembers size and position. Closing the
window leaves the agent running in the menu bar; the Dock icon brings it
back (applicationShouldHandleReopen).

It is a window onto localhost, NOT an embedded browser: decidePolicyFor
refuses any host that is not loopback and hands the URL to the real browser,
so a source link in a chat reply opens in Safari/Chrome rather than turning
a window with no address bar into a rogue browser. target=_blank goes out
the same way. The load retries for ~30s while the fleet binds its port.

Activation policy is .regular now (a window app belongs in the Dock);
LSUIElement is removed and NSAllowsLocalNetworking added — without the ATS
exemption the WKWebView shows a blank window over plain-http loopback.
Top-level bootstrap moved to main.swift, the only file Swift allows it in
once the launcher became multi-file; build_app.sh compiles every launcher
source so the window cannot be silently dropped.

Verified via System Events on the installed app: windows: 1, background
only: false, window title: CODEC, 1180x800, dashboard content rendered.

G5 updated: asserts DashboardWindow.swift with a WKWebView and a navigation
policy, no LSUIElement, ATS exemption present, and no external-browser open
of the dashboard URL.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@AVADSA25
AVADSA25 merged commit d90cf83 into main Sep 4, 2026
1 check passed
AVADSA25 pushed a commit that referenced this pull request Sep 4, 2026
AVADSA25 added a commit that referenced this pull request Sep 4, 2026
…t size (#345)

* docs(handover): 2026-09-04 pm — window, connect screen, key slot, text size

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* docs(handover): credit the window to #346 and record the uncommitted-worktree trap

---------

Co-authored-by: Mickael Farina <farina.mickael@gmail.com>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
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.

2 participants