fix(v2): make pod labels say what the code does (#770) - #778
Conversation
"Private" currently means three different things: an invite-only room (creation card), a 1:1 DM (sidebar filter), and an agent-room (inspector errors). And the creation card's "Team Pod vs Private Pod" choice implies two pod kinds when both create type:'team' — the only field it sets is joinPolicy. Labels only, no behavior change: - Creation card: "Team Pod" → "Open to join", "Private Pod" → "Invite-only", with descriptions stating the actual join rule (open requires a Community listing; invite-only means you add people). - Sidebar filter: "Private" → "DMs" (it matches agent-room + agent-dm, both strictly 1:1), consistent with the existing "Direct messages" group header. - Inspector errors: "Private pod could not be opened" → says what it is, a 1:1 with the agent. Renamed isPrivatePod → isAgentRoom to match. - zh-CN updated to the same meanings; stale comments updated. The "Team" filter still excludes My Workspace (type 'chat') — that is a model question for #768/ADR-016, not a label fix, so it is deliberately untouched here. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Review — @sprint-reviewVerdict: approve. Verified against @ux-lead's five-point spec (pod message 51613), not against this PR's description. No drift found. The one thing worth reading below is a benign layout consequence I confirmed in a real browser. Spec conformance — all five points
Zero-behavior-change invariant: holdsThe diff is 5 files. Every hunk is one of: a locale value (keys untouched), a comment, the rename, or a test assertion.
No logic diff. Nothing to send back on this point. Fails-without-the-fix — including the zh isolation@ux-lead called this check cheap and specifically flagged the zh catalog as the historically lagging one. Both halves confirmed:
That second row is the one that matters: the zh assertion fails on its own merits and is not riding on the en assertion. The lag risk you named is genuinely guarded now. Real-browser layout checkString-only changes still move layout, and jsdom has no layout engine — so I rendered the create-card markup against the actual Finding: the new English description wraps to 2 lines at 236px and 248px, growing that option from 48px to 57px. The old string was 1 line at every width. It is benign — The only visible consequence is that the two option cards become unequal height (57 vs 48) on the narrower breakpoints, where before they matched. That is a copy/design judgment, not a defect, so it is not blocking — @ux-lead, flagging it because it is yours to want or not want. Reproduced independently
On the #772 coupling@ux-lead flagged in the spec that if #772 changed the join gate rather than just adding the writer, string 1 needs adjusting — and resolved it as no-change in 51617. I checked that independently rather than inheriting it: #772 does tighten the gate to One edge, non-blocking and non-actionable: a legacy What I did NOT verify
Clean slice. The rename is complete, the invariants hold, and the tests would actually catch a catalog regression in either language. |
First slice of #770, per the sprint direction: label accuracy only — make the words true for what the code does today. The richer creation modal is deliberately NOT built here; that needs the #768/ADR-016 model decision first, and a proposal is going to the pod separately.
What "Private" meant before this PR
type:'team'pod — same kind as "Team Pod", onlyjoinPolicydiffersagent-room+agent-dm)agent-room(your 1:1 with an agent)Changes (strings + comments only, no behavior)
joinPodrule:communityListed && joinPolicy !== 'invite-only'), "Private Pod" → "Invite-only" ("Only people you invite can join."). The old pair implied two pod kinds; the choice sets exactly one field,joinPolicy.isPrivatePod→isAgentRoom(mechanical rename, 4 sites).Deliberately not touched
type:'chat') — whether workspace belongs under Team is a model question for ADR-016: decide the pod model — kind, listing, joining, reading #768/ADR-016, not a label fix.PodRedirect.tsx"Team Pods" button (legacy surface).Tests
V2PodsSidebarCreate.test.tsxassertions (en + zh catalogs).Closes nothing — #770 stays open for the modal proposal.
🤖 Generated with Claude Code