feat(showcase): demonstrate action-param widgets + related-list pagination#3393
Merged
Conversation
…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>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
The #3358 v16 sweep (§4) couldn't exercise three shipped features because the showcase never demonstrated them out of the box:
params, so theActionParamDialogwidget rendering was never shown;autonumberparam → AutoNumber widget;coverage.tsdidn'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
ActionParamGalleryActionon 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; thefile/imageparams carrymultiple/accept/maxSizeand exercise the upload guard.actioncoverage entry.Verified in the running app
?top=5(server-windowed, not load-all).os validate✓ (9 Actions) ·tsc --noEmit✓.Follow-up to #3364; from the #3358 sweep §4.
@objectstack/example-showcaseis private → no changeset.🤖 Generated with Claude Code