You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
Repository navigation
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
Datasource form's enum selects show raw option values (autoMigrate offers "off" / "safe") #13353
立卡门 ① — a user-visible defect with a named landing point and a reach.
Reach: in Setup → Datasources → New datasource (sqlite / postgres / mysql), the autoMigrate select offers the raw values off and safe as its option text. It was re-read by the objectstack-ai/objectstack#25332 dev (os-dev-report out_of_scope_findings, class a). That PR gave the property a title but cannot give its options labels.
Landing point:packages/app-shell/src/views/.../datasource/DatasourceResourcePage.tsx maps a JSON Schema property's enum to SelectItem text with String(opt). The driver-config JSON Schema carries no per-option label. The usual JSON Schema carriers would be oneOf: [{ const, title }] or an x-enumNames-style annotation, and neither is produced or read today.
Expected: each option shows a readable label. This needs a declared option-label carrier in the driver-config schema (a spec decision, objectstack packages/spec/src/data/driver/*.zod.ts) and the renderer reading it, with the raw value as the fallback only when no label is declared.
Who acts: first a spec-lane decision on the carrier, then an objectui renderer dev for the datasource config form. If the spec half is ruled, it is a cross-repo pair.
Dedupe: objectui issue search "datasource form enum select shows raw option values autoMigrate off safe labels" → 3 hits, none matching. The nearest was #11252 (closed; the hard-coded "Select…" placeholder, a different defect).
The default scope needs no protocol change. When a JSON Schema enum carries no declared option label, the datasource form's select shows a readable label, built in the renderer from the raw value (off → "Off", safe → "Safe"). The raw value stays what is saved. The property's description already explains the values.
The carrier is not taken here. No option-label carrier exists today: objectstack main has no x-enumNames, enumNames or oneOf/const/title emission for driver config. Adding one is a metadata-protocol addition, and that is the maintainer's to rule. It is raised in triage's R604 report. If the maintainer rules for it, the objectstack spec card is filed then, and this card reads the declared label first, falling back to the readable value.
Done when (default scope): no select in the datasource form shows a bare lowercase enum value as its option text. A renderer test with an enum that has no label.
Claim: PM loop round 3 · 2026-10-25T03:59Z
Session: session_01XWGTsmqrtrt1Zqh1ioWqsT (the domain:ui seat 4 session; an in-seat mode:subagent dev implements)
Account: os-elon-musk
Branch: claude/project-thread-zcz7ll (the seat's platform-assigned branch, restarted from objectui main85b6a48 after PR #13493 merged)
Worktree: objectui-issue-13353
Domain: domain:ui
Seat: domain:ui#4
File surface: packages/app-shell/src/views/metadata-admin/datasource/DatasourceResourcePage.tsx (the JSON Schema enum select's option text); its tests; .changeset/13353-*.md (stop on breach; explain in the report)
Container & model: S, mode:subagent, model: default tier (no path-derived mandate), effort: medium
Clause-②: no
Metadata-protocol: none (triage's default scope: no option-label carrier is added)
Responsibility: the datasource form shows raw enum values (off / safe) as option text | a readable label built in the renderer from the raw value; the saved value is unchanged | every admin creating or editing a datasource
Thread-read: 6359343643
Premise: holds — on objectui main85b6a48, DatasourceResourcePage.tsx:595 renders {String(opt)} as each SelectItem's text
Serial constraints cleared: objectstack-ai/objectstack#25916's second pass excludes datasource/**; seat 1's #13442 / #13449 / #13450 declare no metadata-admin/** path
Writes: all PR, comment and label writes go only through objectstack's relay (scripts/pm/fleet-write); never write with GitHub MCP.
Done when (triage): no select in the datasource form shows a bare lowercase enum value as its option text; a renderer test with an enum that has no label. The value stays the raw enum value.
If the maintainer later rules for a carrier (oneOf/const/title or similar), the declared label is read first; that is not this card.
ACCEPT → PR #13499 comment 6393398051 · domain:ui#4 · 2026-10-25T04:24Z. Handed to the merge queue under the maintainer's standing word; Fixes, so this closes on merge.
PR #13499 merged at 2026-10-25T04:32Z, merge commit ebd20ec35dec4417f6d4c8f5140033e5e4955077. The card closed completed through Fixes; pm:dispatched comes off in this stroke. objectui merges publish nothing (the changesets release is a human act).
Activity
objectstack-fleet commentedon Oct 23, 2026
Graded · triage seat ·
session_01AavokzJ5DndAwitDXvKy4U· 2026-10-23T06:56Zp3,
domain:ui,area:studio,bug,pm:queue.enumcarries no declared option label, the datasource form's select shows a readable label, built in the renderer from the raw value (off→ "Off",safe→ "Safe"). The raw value stays what is saved. The property'sdescriptionalready explains the values.mainhas nox-enumNames,enumNamesoroneOf/const/titleemission for driver config. Adding one is a metadata-protocol addition, and that is the maintainer's to rule. It is raised in triage's R604 report. If the maintainer rules for it, the objectstack spec card is filed then, and this card reads the declared label first, falling back to the readable value.Generated by Claude Code
objectstack-fleet commentedon Oct 25, 2026
Claim: PM loop round 3 · 2026-10-25T03:59Z
Session:
session_01XWGTsmqrtrt1Zqh1ioWqsT(thedomain:uiseat 4 session; an in-seatmode:subagentdev implements)Account:
os-elon-muskBranch:
claude/project-thread-zcz7ll(the seat's platform-assigned branch, restarted from objectuimain85b6a48after PR #13493 merged)Worktree:
objectui-issue-13353Domain:
domain:uiSeat:
domain:ui#4File surface:
packages/app-shell/src/views/metadata-admin/datasource/DatasourceResourcePage.tsx(the JSON Schemaenumselect's option text); its tests;.changeset/13353-*.md(stop on breach; explain in the report)Container & model:
S,mode:subagent,model: default tier (no path-derived mandate),effort: mediumClause-②: no
Metadata-protocol: none (triage's default scope: no option-label carrier is added)
Responsibility:
the datasource form shows raw enum values (off / safe) as option text | a readable label built in the renderer from the raw value; the saved value is unchanged | every admin creating or editing a datasourceThread-read: 6359343643
Premise: holds — on objectui
main85b6a48,DatasourceResourcePage.tsx:595renders{String(opt)}as eachSelectItem's textSerial constraints cleared: objectstack-ai/objectstack#25916's second pass excludes
datasource/**; seat 1's #13442 / #13449 / #13450 declare nometadata-admin/**pathWrites: all PR, comment and label writes go only through objectstack's relay (
scripts/pm/fleet-write); never write with GitHub MCP.valuestays the raw enum value.oneOf/const/titleor similar), the declared label is read first; that is not this card.objectstack-fleet commentedon Oct 25, 2026
ACCEPT → PR #13499 comment 6393398051 ·
domain:ui#4· 2026-10-25T04:24Z. Handed to the merge queue under the maintainer's standing word;Fixes, so this closes on merge.objectstack-fleet commentedon Oct 25, 2026
Landed ·
domain:ui#4· 2026-10-25T04:33ZPR #13499 merged at 2026-10-25T04:32Z, merge commit
ebd20ec35dec4417f6d4c8f5140033e5e4955077. The card closedcompletedthroughFixes;pm:dispatchedcomes off in this stroke. objectui merges publish nothing (the changesets release is a human act).Generated by Claude Code
fix(app-shell): readable option labels for unlabeled datasource enum …