Repository navigation
feat(platform-objects): Setup drops its unfiltered Packages entry; the full list lives in Studio - #29547
Conversation
…e full list lives in Studio Ruling 甲 (amends #23892 ruling B): Setup keeps the marketplace-filtered Installed Apps door, Studio keeps Overview > Packages. The Setup copies of the entry's label and their source hashes go with it, the packaged-actions pin is restated without it, and a new pin holds both directions. Co-Authored-By: Claude <noreply@anthropic.com>
📓 Docs Drift Check5 anchor(s) derived from 1 changed package(s); no hand-written page names any of them, so this run has nothing to list — not a clean bill of health. This check sees only pages that NAME a derived anchor: one that documents this change in prose, or enumerates it in an authoring dialect, names none and stays invisible to it on every run. What this run could not see
Coarse fallback — 2 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): Which tree this was computed onThis run read A worktree cut from an older # while this PR is open — GitHub drops the merge commit once it closes
git fetch origin a4079afda793478a377c217ae11b4f7d4b292795 && git checkout a4079afda793478a377c217ae11b4f7d4b292795
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin 208d3e2efb47d21dc05793cae500d1d76ea25a21 b87abb91b4dfb8cf5e45ff6fe8838745bf39a325 && git checkout -B drift-repro 208d3e2efb47d21dc05793cae500d1d76ea25a21 && git merge --no-ff b87abb91b4dfb8cf5e45ff6fe8838745bf39a325
node scripts/docs-audit/affected-docs.mjs --json 208d3e2efb47d21dc05793cae500d1d76ea25a21 |
…oved to Studio Co-Authored-By: Claude <noreply@anthropic.com>
|
domain:server#4 · os-warren · session_01JQwxbacSXJQqAztgt4UMrS 席位核对ACCEPT ·
|
Requested by Warren · project thread
Fixes #25098
Clause-②: no
Metadata-protocol: none
维护者速读
setup-nav.contributions.ts(删掉的那一行)、新 pinsetup-packages-door.test.ts、changeset。pnpm --filter @objectstack/platform-objects exec vitest run src/apps/setup-packages-door.test.ts,预期 3 个用例全绿。What changes
packages/platform-objects/src/apps/setup-nav.contributions.ts: Setup'sgroup_appscontribution dropsnav_packages(developer:packages, unfiltered). The group comment now says where the full list lives (Studio) and which Setup door remains:nav_marketplace_installed, the marketplace-filtered "Installed Apps" entry that@objectstack/cloud-connectioncontributes wherever the marketplace capability is present. Studio'snav_packages(studio.app.ts, Overview → Packages) is untouched.apps.setup.navigation.nav_packagesis removed fromen,zh-CN,ja-JPandes-ES, and its recorded digest from the three*.source-hashes.tstables.apps.studio.navigation.nav_packagesstays in all four catalogs and all three hash tables.setup-packaged-actions-nav.test.ts: restated, not loosened. Its retirement control used Setup'snav_packagesas proof the walk reads the real array; it now usesnav_packaged_actions, which the same file already requires to exist. Its comment and one test title no longer say "beside Packages".setup-packages-door.test.ts: Setup's shell plusSETUP_NAV_CONTRIBUTIONScarry nodeveloper:packagesentry without asourcefilter (and nonav_packagesid), and Studio's Overview still carries exactly one unfiltereddeveloper:packagesentry. The predicate has its own positive and negative controls.patchfor@objectstack/platform-objects.Why
Maintainer ruling 甲 on #25098 (amends #23892 ruling B, item 1): the full package list is a development surface, so its unfiltered entry lives in Studio only, and Setup keeps the marketplace-filtered Installed Apps door. The blocker objectstack-ai/cloud#3138 is cleared: cloud PR #3488 registers that door in hosted tenant environments, so a hosted Setup keeps a way to installed packages.
Tests
pnpm --filter @objectstack/platform-objects test(under the verify lock, after building the dependency closure): Test Files 110 passed (110), Tests 1510 passed (1510).pnpm --filter @objectstack/platform-objects typecheck: exit 0.510f2898viascripts/ablation-replace.mjs: re-inserting Setup'snav_packagesline intosetup-nav.contributions.tsturnsSetup ships no unfiltered developer:packages entryred (expected [ { id: 'nav_packages', …(4) } ] to deeply equal []; 1 failed, 2 passed). Restore blob equals the HEAD blob (e8992d3f9d5b) andgit diff HEADis empty. The test imports the source file directly, so nodist/rebuild sits in the path.Acceptance notes
packages/cli/scripts/check-app-nav-i18n.mjsnamesnav_packagesonly in two comments that record Setup 应用 4 条运行时贡献的导航在 zh 下仍是英文,而被两处注释同时指定的 coverage ratchet 报绿 —— 能力插件贡献的 nav 不在任何一次走查里 #5750's history (the id was untranslated at the time; the Studio copy did not answer for Setup). Both stay true as history, so they are unchanged. The gate judges the merged Setup app, which no longer carries the id, so it has one id fewer to check.packages/cloud-connection/src/marketplace-installed-ui-entry.pin.test.tsdescribesdeveloper:packagesas "the component Setup's own Packages entry opens" in a doc comment. That clause is now stale; it is outside this card's file surface and left for the seat.group_appstranslations still listnav_cloud_connection; its move to Integrations belongs to cloud-connection: a runtime holding the env service key is platform-managed: register no Setup page, refuse unbind; move the entry to Integrations (ruling 甲) #25097, not this card.Verification
All readings at head
510f2898.Derived gates: 59 derived, 57 exit 0, 2 NOT MEASURED; plus pnpm lint and check:app-nav-i18n
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackderived 59 commands from the 11 changed paths (merge base399df5bb).pnpm check:i18nandpnpm check:lean-entry-closurefirst exited 3 (prerequisite not built); afterturbo run buildof the closure the i18n gate names, plus@objectstack/objectql, both exit 0:check-i18n-bundles: OK (10 package(s) — all bundles in sync, no undeclared authoring keys).pnpm check:dual-build-cjs-loadsneeds a fullpnpm buildof about 83 packages; CI's Build Core runs it.node scripts/check-plugin-teardown-shape.mjs --self-testis checker-health only and needs an unshallow clone.pnpm check:app-nav-i18n(outside the derivation, run because the card names it):OK (13 contributor(s), 4 locale(s), 2 app(s) — setup: 56 merged nav id(s), account: 12 merged nav id(s) — every id labelled in every locale).pnpm lintunder the verify lock:VERDICT command-exit 0.dispatch-gates --ran:59 derived famil(ies) accounted for — 57 run, 2 NOT-MEASURED (2 DERIVED from a recorded exit 3).Human Minimum
packages/specholds no runtime logic. (not touched)pnpm lintpasses.main, one pull request.packages/spectouched: its generated artifacts are regenerated and committed. (not touched)content/docs/references/,packages/*/CHANGELOG.mdorcontent/docs/releases/.Generated by Claude Code