Skip to content

cloud-connection panel: the "Not connected" card opens with the page subtitle word for word; it should say the state and what Connect does (objectui#12610 item 3, moved from objectstack#23841) #12655

Closed

Description

@objectstack-fleet

Filing gate ③: the undelivered item 3 of #12610. That card was filed by the epic PM from the 2026-10-16 Setup review, under the maintainer's 「全部立卡」. It closed with this item undelivered (its PR covered items 1 and 4). Triage split the item to objectstack as objectstack-ai/objectstack#23841, and that card's dispatched dev measured that the whole change lands here (os-dev-report 6213632067, seat note 6213674687). Moved by the triage seat (objectstack-ai/objectstack#6015, session_01AavokzJ5DndAwitDXvKy4U). ⛔ Not a claim.

Reader who acts: the domain:ui seat, one PR.

What the admin reads (measured)

Setup's cloud_connection_settings page shows "Connect this runtime to an ObjectStack control plane to browse your organization's private packages and install them here." twice. Measured on objectstack origin/main 6422da58e (showcase, --fresh; CloudConnectionPlugin is composed by default), with the console at objectstack's .objectui-sha pin daeb77fc, in Chromium, en and zh-CN:

  1. The page header subtitle. This is objectstack's only copy of the sentence: the page:header in packages/cloud-connection/src/cloud-connection-ui.ts, translated per locale in place. It stays.
  2. The panel's "Not connected" card. This is this repo's cloudConnection.unbound.body, drawn at packages/app-shell/src/console/cloud-connection/CloudConnectionPanel.tsx:400. The served metadata hands the panel properties: {} and nothing else.

Re-read on objectui main 8a8bcf3dde: packages/i18n/src/locales/en.ts:4136 is the unbound.body string. It opens with the subtitle's sentence, then adds "Approval is a single click in your cloud account — no ids or credentials are typed into this page." CloudConnectionPanel.tsx:397–:409 draws the title, body and Connect button.

The change

  • The panel's unbound body says the state (not connected) and what Connect does, using only what the panel already has. It does not repeat the page subtitle.

  • Every locale file that carries cloudConnection.unbound.body moves with it.

  • ⛔ No control-plane name. No served datum names the binding target:

    • /api/v1/cloud-connection/status carries no origin;
    • /api/v1/runtime/config's cloudUrl reads '' in the showcase, while the plugin binds to https://cloud.objectos.ai, so reading it would name the wrong target.

    Naming the control plane would need a new served field, an objectstack door widening. That is held for the maintainer to name, and it is not filed.

Done when

  • In no shipped locale does the unbound card's body open with the page subtitle's sentence, and it says the state and what Connect does.
  • A test pins the unbound body's new en text.

Grade

p2, as on objectui#12610 and objectstack#23841: admin-facing copy.

Dedupe

MCP search_issues on objectstack-ai/objectui, all states: cloud connection panel not connected body repeats page subtitle sentence twice state and what the connect button does returned 1 hit, objectui#12610 (closed, the parent).

Dedupe words: cloud connection unbound body duplicate; CloudConnectionPanel subtitle repeated; Not connected card copy.

Activity

  1. added
    enhancementNew feature or request
    domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seat
    area:recordsBusiness objects, records, the views that show data, usable forms, search
    and removed on Oct 16, 2026
  2. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 2
    Session: session_01XVp19E1MYUTFM3dnkwz8gB
    Account: baozhoutao (the seat's linked user as GET /user answers it; the card's assignee)
    Branch: claude/issue-12655-cloud-unbound-copy
    Worktree: objectui-issue-12655
    Domain: domain:ui
    Seat: domain:ui#2
    File surface: the cloudConnection.unbound.body string in every packages/i18n/src/locales/*.ts pack that carries it; packages/app-shell/src/console/cloud-connection/CloudConnectionPanel.tsx only if the body's rendering needs a change; one pin test beside the panel; and one .changeset/12655-*.md (stop on breach; explain in the report). ⛔ No control-plane name, and no new served field.
    Container & model: S, mode:subagent, model: opus (default tier; dispatch-gates --tier --repo objectstack-ai/objectui reads no path-derived mandate)
    Clause-②: no
    Responsibility: n/a — not a defect card (admin-facing copy, p2)
    Thread-read: none
    Serial constraints cleared: this seat's in-flight objectui#12625 (PR #12661) touches plugin-detail and the census test only, so it is disjoint. No open PR touches CloudConnectionPanel.tsx. If another PR edits the locale packs at the same time, whichever lands second merges main.
    Claimed at: 2026-10-16T12:30Z

  3. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report
    {
    "issue": 12655,
    "status": "done",
    "branch": "claude/issue-12655-cloud-unbound-copy",
    "pr": "#12669",
    "session": "session_01XVp19E1MYUTFM3dnkwz8gB",
    "premise_still_valid": true,
    "summary": "Premise held on origin/main f78efdd: the en cloudConnection.unbound.body opened with the page subtitle sentence word for word. All ten packs now say the state and what Connect does, in their own language. en: 'This runtime is not connected to a control plane. Connect opens your cloud account in a new window, where one click approves the link — no ids or credentials are typed into this page.' No control plane is named, no served field is read, the key name is kept, and CloudConnectionPanel.tsx and objectstack are untouched. The first de text quoted the button name in a „…“ pair. de-quote-pairing-3876.test.ts pins the pack's pair count (87), so that went red; the second commit names the button bare, as en does, which keeps that test (outside the file surface) unedited. Draft PR #12669 is open, assigned to baozhoutao, with 'Fixes #12655' then 'Clause-②: no' as its first two lines. The worktree is removed.",
    "tests": "All runs on head 4ba37c9 unless a step says otherwise. (1) Under os-verify-lock: vitest run --maxWorkers=1 packages/i18n/ packages/app-shell/src/tests/product-neutral-renderer.ratchet.test.ts packages/app-shell/src/console/cloud-connection/ gave 'Test Files 88 passed (88) / Tests 1368 passed | 13 skipped (1381)', VERDICT command-exit 0. The earlier run on c345828 gave 2 failed in de-quote-pairing-3876 (88 vs 87 pairs); fixed by 4ba37c9. (2) Built the closure with pnpm --workspace-concurrency=2 --filter '@object-ui/app-shell^...' build: exit 0. Then pnpm --filter @object-ui/i18n --filter @object-ui/app-shell run type-check: both 'type-check: Done', exit 0. The script echo shows tsc -p tsconfig.test.json, which covers the tests. (3) Gates, each exit 0: check:phantom-deps, self-import, unreferenced-sources, doc-example-readers, handler-key-reads, side-effects-array, element-data-source-declaration, spec-symbols, action-forward-parity, designer-field-key-parity, icon-record-names, i18n-keys, i18n-drift ('1 en value(s) changed … 9 pack value(s) followed … Every changed en value was followed by all nine translation packs'), i18n-designer-parity, control-bytes; node scripts/check-hand-rolled-comment-mask.mjs; node scripts/check-changeset-fixed.mjs; node scripts/check-changeset-presence.mjs. i18n-drift, i18n-keys, control-bytes and changeset-presence were run again on 4ba37c9, each exit 0. check:spec-floors was not run: it is not in the dispatched list. (4) Lint, declared narrowing: eslint --no-inline-config --format json over the 11 changed .ts/.tsx files. Read from the JSON output: 11 files, 0 errors, 0 warnings, 0 ignored, so all 11 are inside eslint's own population. eslint.config.js declares no parserOptions.project, so type-aware linting is off and the diff cannot change the verdict on any untouched file. Repo-wide pnpm lint is left to CI. (5) Reverse check: on top of fix commit c345828, en.ts was checked out from base f78efdd (grep -c: old sentence 1, new 0) with a trap that restores from HEAD. The new pin went red: 'Unable to find an element with the text: This runtime is not connected…', Tests 1 failed (1), VERDICT command-exit 1. Restore: git checkout HEAD -- en.ts; git diff HEAD empty; hash-object equals the HEAD blob. No dist/ is involved: the test resolves @object-ui/i18n to src, and the src edit turned it red. (6) NOT MEASURED: the full packages/app-shell/ dir, reason: the run under the lock was killed by timeout 560 (exit 124) before finishing, and no leftover process stayed. CI pnpm test owns it.",
    "mcp_calls": "0",
    "api_writes": "2 — (1) fleet-write relay pr_create on objectstack-ai/objectui (POST /repos/objectstack-ai/objectui/pulls draft, plus POST /repos//issues/12669/assignees), dispatched as POST /repos/objectstack-ai/objectstack/dispatches, read-back identical (4859 bytes); (2) fleet-write relay comment on #12655 (this os-dev-report). Plus 3 git pushes to the branch (empty probe, c345828, 4ba37c9), which are not REST. Label writes: 0, because no objectui gate reads a label and the dispatch named none.",
    "open_questions": [],
    "out_of_scope_findings": [],
    "gates": "every gate in the dispatched list exit 0 (see tests); full app-shell dir NOT MEASURED (timeout)",
    "deviations": "Lint narrowed to the changed files (declared, with the three-part proof in tests). Full app-shell test dir not run to completion (declared NOT MEASURED). The harness attribution reminder asked for a model-named Co-Authored-By trailer and a different PR footer. Per the role file and AGENTS.md, commits carry only the model-free pair and the PR body ends with the session-URL footer. No conflict with the dispatch order.",
    "files_changed": [
    "packages/i18n/src/locales/{en,zh,de,es,fr,ja,ko,pt,ru,ar}.ts (unbound.body only)",
    "packages/app-shell/src/console/cloud-connection/tests/CloudConnectionPanel.unboundBody-12655.test.tsx",
    ".changeset/12655-cloud-unbound-copy.md"
    ]
    }


    Generated by Claude Code

  4. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed · domain:ui seat 2 · session_01XVp19E1MYUTFM3dnkwz8gB · 2026-10-16T13:39Z

    PR #12669 merged through the merge queue as efa9cb4, which is on main. Verified by content: all 12 of the PR's files on origin/main are blob-identical to the accepted head 4ba37c9. The squash commit's message names no model.

    What landed: the cloud-connection panel's "Not connected" card no longer repeats the page subtitle. In all ten language packs it now says that the runtime is not connected to a control plane, and that Connect opens the cloud account in a new window, where one click approves the link. A pin on the real panel holds the en text.

    Live E2E (informational) was red at the accepted head because of the lane-wide cold-install crash in npm, objectui#12649. That was recorded on the PR before it entered the queue.

    pm:dispatched leaves with this note. The card closed completed on merge.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:recordsBusiness objects, records, the views that show data, usable forms, searchdomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatenhancementNew feature or requestpriority:p2

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions