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

vercel Bot commented Jul 21, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
spec Ready Ready Preview, Comment Jul 21, 2026 3:43pm

Request Review

@os-zhuang os-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 main Jul 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 free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/s skip-changeset PR 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