Repository navigation
feat(web): the Access tab names the car and charger in a request - #1684
Merged
Merged
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
frahlg
force-pushed
the
claude/box-access-names
branch
from
October 17, 2026 06:12
a3c3b03 to
d39607e
Compare
This was referenced Oct 17, 2026
A request waiting for the owner on the box page showed a car by its 32-digit id. GET /api/agents now adds names to each request: for every argument of kind loadpoint or car that the box still knows, what the box calls it. The page shows the name and falls back to the id. The args stay the box's own ids, as before. Only this local, owner-only route carries names; protocol.Request and everything an agent or FTW Cloud reads are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
frahlg
force-pushed
the
claude/box-access-names
branch
from
October 18, 2026 15:30
d39607e to
46a5636
Compare
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
On the box page, Settings → Access lists an assistant's requests under "Waiting for your yes". A request that names a car showed the car's 32-digit id, for example
Car 4966cee2bfa7dd771fc910d68fb4b554. The owner could not tell which car the assistant meant.The args here are not the assistant's opaque ids. The box resolves those as the request arrives and keeps the owner's view with its own ids (
agentstate.go,agentRequest), soGET /api/agentsreturns a charger's loadpoint id and a car's id from the car store. A charger's id is already its name on the box (the Chargers tab showslp.id); a car's id is not.Change
appproto.Handler.ArgNamesnames each argument of kindloadpointorcarin a request (protocol.RegistryAgentArgs), from the same ports the box uses to resolve ids in a cmd: a car by its name in the car store, a charger by its id while the box still has it. An id the box no longer knows gets no name.GET /api/agentsaddsnames: {arg: name}to each request.api.AgentRequestwrapsprotocol.Request; only this local route builds it.access.jsshows the name for a charger or car argument and falls back to the id. It ignoresnamesfor any other kind. Cache keyaccess1→access2.docs/agents.md, "Approval on the box page", says whatnamesholds and who reads it.protocol.Requestand the typedagent.listanswer keep their existing form and ids. The full technical diagnostic API added in #1723 reads the same page shape as the local API; this rebase updates its agent-list adapter to preserve that access.Evidence
go/internal/appproto:TestTheBoxPageNamesARequestsCarAndCharger. An agent asks by its own ids; the list names the car "Volvo" and the charger "lp1". After the car and the charger go, neither request has names, and the args still hold the box's ids.go/internal/api:TestTheAgentListNamesARequestsChargerAndCar. The JSON carriesnamesbeside unchangedargs, and a request with nothing to name has nonameskey.web/settings/tabs/access.test.mjs: names a car and a charger, cleans hidden characters from a name, ignores a name on a power argument, and falls back to the id.make verifyandnpm test(760 tests). The current master rebase keeps later app/fleetterms2cache keys and fixes the diagnostic agent-list adapter; final checks run on this head before merge.Browser check against a local Core
A scratch rig, not in the repo: a Core build with
-ldflagspointingcloudlink.Endpoint,ServiceKeys,DevRootCAandOfferKeysat a local stand-in for FTW Cloud. The stand-in is the uplink tests'miniCloudand Noise initiator as a program. The box granted the assistant throughPOST /api/agentsfrom the Mac's LAN address with the house password. The box then linked, the assistant opened its session through the tunnel, readcars.getandloadpoints.get, and sent threeagent.requests by its own ids. I took the screenshots on loopback; reading the list needs no sign-in there. On loopback #1682 dims Approve, since the house password does not count on the box itself. Two of the three cars came from named vehicle profiles; "Car 1" is the car the box made from the charger's old settings.Before (#1682's page at 73bb9f6, against the same Core) and after (this branch on 3e7a6a1):
Not tried against the real FTW Cloud, a real assistant or the home box. A person still needs to review the page in a browser.
Changeset:
patch.🤖 Generated with Claude Code