{"content":"Dev journal — feat: per-tab Using Actor (host-seedable, independent at action time)\n\nThe Browser's Using Actor (the Bot identity used for resolve, trusted actions, and on-chain signing) used to be a single page-global field. Selecting an actor in Tab 1 silently changed it for Tab 2 too — both on the chip and, more importantly, on the ?actorId= stamped into every resolve / private-chat / service-call / pin-write call the host signs.\n\nThis change makes the Using Actor owned PER TAB and truly independent:\n\n• Each BrowserTab now carries its own actorId, seeded from the host-supplied runtime.defaultActor on tab creation and at boot. New tabs start from the host default actor.\n• applyActiveTabState() mirrors the active tab's actorId onto state.actorId and re-renders the Using chip on every switch/open/close. Because endpointWithActor()/resolveUrl()/selectedActor() read that mirror, resolve, trusted actions, and signing all use the ACTIVE tab's actor — switching an actor in one tab can no longer leak into another.\n• selectUsingIdentity() writes to the active tab only and stops mutating the host-supplied runtime.defaultActor / actors[].isDefault. Those stay as the stable host default that seeds future tabs.\n\nHost-settable default: the default actor each browser open / new tab starts with remains host-controlled through the existing getRuntime().defaultActor channel — OAC/IDBots already return whatever default they choose; standalone hardcodes its wallet. No new config surface was added.\n\nBonus: openTab(uri, actorId?) and the agent-browser:open-tab bridge message now accept an optional actorId, so a host can open a tab pre-bound to a specific actor (unknown ids fall back to the host default). tabToInfo() and the tab-opened / tab-activated / navigation-committed host events now carry the per-tab actorId so hosts can observe each tab's actor.\n\nVerified: added two-actor/two-tab independence tests (select Actor A in Tab 1, Actor B in Tab 2, switch back — each tab's subsequent resolve carries its own actor); updated the old defaultActor-mutation assertion. Full suite green: 504 tests pass.\n\nBranch: feat/per-tab-using-actor. Files: packages/ui/src/browser/app.ts, tests, docs.","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}