fix: default the auth bridge on, and make the browser-view flag durable
A CLI running `claude login` inside the container binds a random ephemeral loopback port and hands the provider a redirect pointing at it. The browser is on the host, so the callback lands on a closed host port and the login hangs with no diagnostic. The auth bridge is the thing that fixes this -- it mirrors container loopback listeners onto the same host port -- so having it default to off made a hang the out-of-the-box experience. `auth_bridge_enabled` now defaults to true through a `default_auth_bridge_enabled()` serde helper, matching the shape already used by `use_shared_auth_token`. Because the default is applied at deserialisation, projects stored before the bridge existed pick it up too; `migrate_from_value` writes neither flag, so nothing defeats it, and a regression test pins that. Separately, `BrowserViewManager.enabled` was in-memory only and the durable `browser_view_enabled` field on the project record was never implemented. Rather than sync the two, the cache is removed and the record becomes the single home for the flag, mirroring how `AuthBridgeManager` already works. `stop()` deliberately does not clear it, since container teardown and migration reach that path and neither is the user changing their mind. Durable does not mean auto-started: a restarted app reports enabled with the viewer off. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1100,6 +1100,15 @@ pub async fn update_project(
|
||||
|
||||
project.container_id = stored.container_id;
|
||||
project.status = stored.status;
|
||||
// `browser_view_enabled` is owned by `set_browser_view_enabled` and is
|
||||
// restored here rather than taken from the payload, exactly like
|
||||
// `container_id` and `status` above. The Config tab has no control for it
|
||||
// — the Browser tab's toggle is the only way it ever changes — so the
|
||||
// project object the frontend round-trips carries whatever it was told at
|
||||
// load time and would silently undo a toggle made since. `auth_bridge_enabled`
|
||||
// is different and does arrive through this save: the Config tab edits it,
|
||||
// which is why the reconcile below follows whatever was just persisted.
|
||||
project.browser_view_enabled = stored.browser_view_enabled;
|
||||
project.created_at = stored.created_at;
|
||||
project.updated_at = chrono::Utc::now().to_rfc3339();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user