{"content":"Development journal for commit a4bd1d51 (feat: zero-touch user onboarding — auto account, free traffic grant, signed /info/owner binding).\n\nNew-user zero-touch onboarding for OAC, ported from the IDBots first-launch flow: every install now gets a user account (owner identity named User) plus a traffic account with the one-time free grant and the MVC gas subsidy, provisioned automatically at daemon start and journaled per-step in owner/onboarding.json so unconverged steps retry later; deleting the owner identity opts out for good. Bots created afterwards default to that owner and publish a signed /info/owner binding pin (owner key signs metabot-owner-binding:, offline-verifiable), and metabot bot bind-owner now uses the signed route for the local owner. The self-built settings page became a User/Traffic/General tab shell matching the DSH plugin, with /ui/traffic redirected into it, and the DSH User panel shows onboarding progress. Verified: fast tier 3747/3748 (sole failure is the pre-existing README regex in codexInstallDocs, reproduced on plain main), integration tier 82/82, 18 new + 52 adapted tests green, dsh-plugin builds (its typecheck/test failures also pre-exist on main).\n\nVerification:\nexport PATH=$HOME/.nvm/versions/node/v24.13.1/bin:$PATH && pnpm run build && node --test --test-concurrency=1 tests/owner/ownerBinding.test.mjs tests/owner/ownerOnboarding.test.mjs tests/owner/userOnboardingHandlers.test.mjs tests/daemon/botCreateOwnerBinding.test.mjs tests/ui/trafficPageScript.test.mjs tests/ui/settingsPageScript.test.mjs tests/daemon/uiScheduleTrafficPages.test.mjs\n\nFiles:\ndocs/install/open-agent-connect.md\ndocs/superpowers/specs/2026-04-23-metabot-storage-layout-v2-design.md\ndsh-plugin/src/client/PluginSettingsPanel.tsx\ndsh-plugin/src/client/UserPanel.tsx\ndsh-plugin/src/client/api.ts\ndsh-plugin/src/client/index.ts\ndsh-plugin/src/client/locale-user.ts\ndsh-plugin/src/memory-routes.ts\nsrc/cli/commandHelp.ts\nsrc/cli/commands/user.ts\nsrc/cli/runtime.ts\nsrc/cli/types.ts\nsrc/core/identity/deriveIdentity.ts\nsrc/core/owner/ownerBinding.ts\nsrc/core/owner/ownerOnboarding.ts\nsrc/daemon/defaultHandlers.ts\nsrc/daemon/routes/bot.ts\nsrc/daemon/routes/types.ts\nsrc/daemon/routes/ui.ts\nsrc/daemon/routes/user.ts\nsrc/daemon/userHandlers.ts\nsrc/ui/i18n.ts\nsrc/ui/pages/settings/app.ts\nsrc/ui/pages/settings/index.html\nsrc/ui/pages/traffic/app.ts\nsrc/ui/pages/traffic/index.html\ntests/daemon/botCreateOwnerBinding.test.mjs\ntests/daemon/uiScheduleTrafficPages.test.mjs\ntests/owner/ownerBinding.test.mjs\ntests/owner/ownerOnboarding.test.mjs\ntests/owner/userOnboardingHandlers.test.mjs\ntests/ui/pageI18nCoverage.test.mjs\ntests/ui/trafficPageScript.test.mjs","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}