Skip to content

feat(showcase): demonstrate action-param widgets + related-list pagination - #3393

Merged
os-zhuang merged 1 commit into
mainfrom
feat/showcase-action-widgets
Jul 21, 2026
Merged

feat(showcase): demonstrate action-param widgets + related-list pagination#3393
os-zhuang merged 1 commit into
mainfrom
feat/showcase-action-widgets

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

Why

The #3358 v16 sweep (§4) couldn't exercise three shipped features because the showcase never demonstrated them out of the box:

  • action-param real widgets (ADR-0059) — no showcase action declared params, so the ActionParamDialog widget rendering was never shown;
  • autonumber param → AutoNumber widget;
  • related-list pagination (objectui#2711) — no parent had more children than a page.

coverage.ts didn't flag these: it tracks metadata KINDS (action/view are "demonstrated" because some exist), not sub-features. So they were silent gaps in the dogfood safety net — exactly the kind of gap that lets shipped-but-broken features through.

What

  • ActionParamGalleryAction on Field Zoo — one inline param of every non-trivial type (text/richtext/select/date/color/autonumber/image/file), so the param dialog renders each real widget through the shared field-widget map; the file/image params carry multiple/accept/maxSize and exercise the upload guard.
  • 24 bulk prospects under Northwind — its Account → Contacts related list now exceeds a page.
  • Note the sub-feature demonstration in the action coverage entry.

Verified in the running app

  • The ParamDialog renders every widget — rich-text editor (not a textarea), select, date picker, color swatch + hex, the AutoNumber "Reference #", "Upload Image", and a multi-file drop zone. (screenshot-confirmed)
  • The Northwind Contacts related list holds 26 rows but fetches ?top=5 (server-windowed, not load-all).
  • os validate ✓ (9 Actions) · tsc --noEmit ✓.

Follow-up to #3364; from the #3358 sweep §4. @objectstack/example-showcase is private → no changeset.

🤖 Generated with Claude Code

…ation
The v16 sweep (#3358 §4) couldn't exercise three shipped features because the
showcase never demonstrated them out of the box — a gap `coverage.ts` doesn't
catch (it tracks metadata KINDS, not sub-features like action-param widget
types or list pagination). Fill them:
- **Action-param widget gallery** (`ActionParamGalleryAction` on Field Zoo): one
inline param of every non-trivial type so the ADR-0059 `ActionParamDialog`
renders each real field widget — richtext editor, color picker, date picker,
select, number, the AutoNumber widget for an `autonumber` param, and the ⚠️
`image`/`file` uploads (multiple/accept/maxSize + the upload guard). No
showcase action declared `params` before, so these dialogs were undemonstrated.
- **Related-list pagination**: 24 bulk prospects under one account (Northwind)
so its Account → Contacts related list exceeds a page and demonstrates
server-side `$top`/`$skip` windowing (objectui#2711) on a fresh boot.
- Record the sub-feature demonstration in the `action` coverage entry.
Verified in the running app: the ParamDialog renders richtext/select/date/color/
autonumber widgets + image/file upload zones (not text boxes); the Northwind
Contacts related list holds 26 rows but fetches `?top=5` (windowed, not
load-all). `os validate` (9 Actions) + `tsc --noEmit` pass.
Follow-up to #3364, from the #3358 sweep §4.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@vercel

vercelBot commented Jul 21, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated (UTC)
specReadyReadyPreview, CommentJul 21, 2026 3:43pm

Request Review

@os-zhuangos-zhuang added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Jul 21, 2026
@os-zhuang
os-zhuang merged commit e983465 into mainJul 21, 2026
17 of 18 checks passed
@os-zhuang
os-zhuang deleted the feat/showcase-action-widgets branch July 21, 2026 15:47
os-zhuang added a commit that referenced this pull request Jul 22, 2026
The v16 sweep (#3358 §4 "Record History tab") couldn't exercise the tab because
no showcase object opted into it: the console gates the History tab on
object-level `enable.trackHistory` (RecordDetailView) — audit *capture* is
always on, but the *tab* is opt-in — and the showcase only set `trackHistory`
at the FIELD level (industry/status), which just selects which diffs are
summarized. So the tab never rendered anywhere and #2691/#3293 (display-value
diffs, computed-field exclusion) were undemonstrated.
Set `enable: { trackHistory: true }` on Account (which already declares
field-level `trackHistory` on `industry`/`status` for clean diffs).
Verified in the running app: the Account detail now shows a **历史 / History**
tab; after editing `industry`, it renders "Dev Admin · UPDATE · 行业: Retail →
Technology" — field label + select **display values** (not raw stored codes/ids),
no phantom value→null rows. `os validate` + `tsc --noEmit` pass.
Follow-up to #3364 / #3393, from the #3358 sweep §4.
Co-authored-by: Jack Zhuang <277994282+os-zhuang@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/sskip-changesetPR has no user-facing published change; bypasses the changeset gate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@os-zhuang