Repository navigation
feat(otterware): one environment-owned Otter Account, Google per device - #98
Open
Laurin-Notemann wants to merge 1 commit into
Open
Laurin-Notemann wants to merge 1 commit into
Laurin-Notemann wants to merge 1 commit into
Conversation
- The environment's own login (the one Code's relay link uses) now drives the Otter Account for Code, Home, Mail, Calendar and Drive. It renews on the server. The attach/detach RPCs, "Use on this environment" and the settings-page renewal timer are gone. - Clients sign an environment in through Accounts' device flow (account.session.signIn/signOut). Signing out revokes the environment's grant. - Google is connected per device. One consent (Mail, Calendar, contacts) is stored in the environment's secret store (DeviceGoogle), never in Otter Cloud. Disconnect forgets it locally and never revokes at Google, which revokes per project. Headless servers get no provider grants (VM Mail/Calendar deferred). - Calendar's developer OAuth controls are removed, and its remove path no longer revokes the Google grant. - Accounts: device-flow grants get a stable grant ID, so they can hold a suite session. New /code/grants list and revoke endpoints back the Sessions list in Account settings, now shown in every profile including Code. - Drive CLI signs in through Accounts' device flow (otter-code-cli) and calls Otter Cloud /api/v1 with an otterware:drive capability. Logout revokes the grant. Credentials go only to the API origin. - Mail: undefined RPC results encode as null, which fixes the preferences:setUi sync. New "Needs Google on this device" and "Needs its password on this device" statuses. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Laurin-Notemann
enabled auto-merge (squash)
October 16, 2026 18:49
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Otterware had competing account paths:
undefinedfailed to encode.Fix
account.session.signIn(Accounts device flow) and open the approval page.account.session.signOutrevokes the environment's grant at Accounts. The relay link is untouched.PROVIDER_SCOPES). The tokens live in the environment's secret store (DeviceGoogle), never in Otter Cloud.GET /code/grantsandPOST /code/grants/revokeback Settings › Account › Sessions, now shown in every profile including Code. Device-flow grants get a stable grant ID, so they can hold suite sessions.otterdrive auth loginuses the Accounts device flow (otter-code-cli) and calls Cloud/api/v1with anotterware:drivecapability.logoutrevokes the grant. Credentials are sent only to the API origin, andidentity_conflictgets a clear message.null, which fixes thepreferences:setUisync.Not changed: Cloud
provider_connectioncode and rows, and the relay.Release gates (not addressed here)
T3CODE_GOOGLE_CLIENT_ID/_SECRET(a Desktop-app client) is not injected by any build yet. Until it is, "Connect Google on this device" reports that it isn't configured. The client and project must be chosen and verified before release.otter-accountsWorker) and the Drive CLI's dependency on Cloud/api/v1are separate deployments. Don't publish the CLI before Cloud and Accounts are deployed.Validation
Claude Opus 5.5 · Claude Code (T3 Code)
🤖 Generated with Claude Code