Repository navigation
C11-248: workspaces → areas → tabs vocabulary, with hidden aliases (phase 1: UI, CLI, socket, docs, tests) - #472
Conversation
English UI copy now says area (was pane) and tab (was surface/panel); xcstrings keys unchanged. Six locales re-translated for 88 values. Settings section 'Surfaces' becomes 'Tabs & Areas'. UT description for the workspace reorder drag no longer calls a workspace a tab. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…> tabs Rewrites the c11, c11-browser, c11-markdown, lattice-orchestrator and peer skills, live reference docs, README, PHILOSOPHY, PROJECTS, CONTRIBUTING and welcome.md to the new vocabulary (commands, flags, refs, env vars, socket methods, JSON keys). Adds the one-line vocabulary statement to CLAUDE.md. Historical plans, review packs and AARs are left untouched. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…er metadata, mailbox tab:, sdef workspace Canonical tab.*/area.* methods with surface.*/pane.* as hidden aliases, central LegacyWireAliases shim (methods, params, legacy JSON keys), area:/tab: ref prefixes, flag_caller_tab_id written beside the legacy key, C11_TAB_NUM, AppleScript workspace class with hidden tab synonyms. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ary alias tests Client lib and tests_v2 string literals move to the canonical wire names (tab.*/area.* methods, tab_id/area_id params and keys, tab:N/area:N refs, new-tab/list-areas commands, --tab/--area flags, C11_TAB_ID). tmux-compat tests stay on tmux names; plan-schema keys and debug layout keys are untouched. The claude-teams tmux fake server answers both vocabularies. New test_vocabulary_aliases.py proves every old method, param, ref prefix, command, flag and env var still resolves, and that responses carry both key families. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…xt with hidden aliases Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… help hierarchy, focus-intent canonicalization Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
# Conflicts: # CLI/c11.swift
Error codes stay as the code emits them, flag.raised documents caller_tab_id, metadata.changed scope is the literal surface/pane, apply results document tabRefs/areaRefs, settings path is Tabs & Areas. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Tighten text assertions to the new wording (tree words area/tab, report header, No tabs/No areas, send requires --tab), keep browser.tab.* on surface_id, drop the tolerances for error text that B left unchanged, treat `ref` as having no legacy twin in the tree check, and add a test that flag-looking free text sent to a tab arrives literally. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…elpers (free text never rewritten), canonical v2 methods in the CLI, size-policy vocabulary, env -u lists, test strings, tree report words, hotload note Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…us args) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Deep review — PR #472: workspaces → areas → tabs vocabulary (phase 1)Thank you for this — it's a big, carefully-staged rename and the discipline is visible on every line. The hidden-alias strategy (old commands, flags, refs, methods and env vars keep working but never surface in help/skills/docs), the dual JSON keys held for exactly one release, and especially the CLI-side version-skew fallback so a fresh CLI keeps talking to an older app mid-rollout are exactly the right shape for a rename that must never break an agent in flight. The Scope of this review (please read first)The diff I was handed contains only 3 of the 226 changed files — One correction to the earlier pass: GitHub now reports this PR as AlignmentIn scope: a CLI/socket ergonomics + agent-facing vocabulary change, correctly routed to deep review rather than the autonomous lane. It's a refactor (not a bug fix), far over the size cap (6528/4021, 226 files), and touches deny-listed paths ( Findings1. (major)
So the one command that historically keyed on Fix: special-case the 2. (minor) Every CLI invocation pays an extra
3. (nit) On the legacy skew path,
Clean spot-checks: What still needs review (not in this diff)
RecommendationMerge after fixes — contingent on a maintainer reviewing the ~223 files not in this diff, and all required checks green ( 🌉 Drawbridge deep review (lane 3) — an automated pass; a maintainer has been notified and makes the final call. 🌉 Drawbridge deep review (lane 3) — an automated pass; a maintainer has been notified and makes the final call. |
…x test Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… grid detection, explicit tab target for send tests Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ction help, report token) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…-e' into c11-248-vocab
…fy panels, config --area, CLI JSON twins, capability-probe skew mode, sidebar --tab semantics, tmux help/output revert, UI/CLI vocabulary leftovers Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…t vars and capability-probe skew; remove vacuous assertions Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…id-format both) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…er identity (tests/fake_server_env.py); tmux sequence fake answers system.capabilities Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Carries #469's destructive-target guards onto the new vocabulary: tab.close and tab.action reject unresolved refs, rejectEmptyTargetFlags checks the --area/--tab alias groups, and the guard's error text names canonical keys. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
C11-248, phase 1: the visible layer of the vocabulary rename. c11's model is workspaces → areas → tabs: a pane is an area, a surface is a tab, a sidebar entry is a workspace (never a tab).
What changes
new-tab,list-areas,focus-area,close-tab,move-tab, …), flags--tab/--area/--before-tab/--after-tab/--in-tab, refstab:N/area:N, and human output (OK tab:7 area:3 workspace:1). Help and usage list only the new names.tab.*,area.*,notification.create_for_tab.system.capabilitieslists only new names.Sources/SocketHandlers/LegacyWireAliases.swift). Old keys keep old-format values (surface_ref: "surface:5"besidetab_ref: "tab:5").C11_TAB_IDis canonical andC11_TAB_NUMis new.flag_caller_tab_idis written besideflag_caller_surface_id.tab:addresses are accepted.workspace.tests_v2/test_vocabulary_aliases.pycovers every alias, the dual JSON keys, and the rule that free text is never rewritten.Hidden aliases (old names keep working, never shown)
--surface,--panel,--pane) and refs (surface:N,pane:N).surface.*,pane.*) and param names.C11_SURFACE_ID,CMUX_*).tabterminology, as sdef synonyms.method_not_found), so a new CLI keeps working against the shipped app during rollout.Deliberately unchanged
scopevalues). Additive:caller_tab_id.Later phases of C11-248
Validation
🤖 Generated with Claude Code