Adopt Framework 4.5.0 cache correctness and typed form lifecycle - #94
Merged
Merged
Conversation
andrewzolotukhin
temporarily deployed
to
pr-94
September 9, 2026 08:53 — with
GitHub Actions
Inactive
andrewzolotukhin
marked this pull request as ready for review
September 9, 2026 09:08
andrewzolotukhin
temporarily deployed
to
pr-94
September 9, 2026 22:03 — with
GitHub Actions
Inactive
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.
Original request
Adopt the published stable Framework
4.5.0release in Xpenser, simplify the nine existing schema forms with the new submission lifecycle and typed renderer registry, and exercise the cache correctness fixes. Publish the work so it can be reviewed and tested in a PR environment.What changed
4.5.0across six workspaces; npm-generated lockfile has shared package instances and no unrelated version changes.XpenserFormSystemfrom the shared UI package and compose a typed webSchemaFieldregistry with currency multiselect support.handleSubmit,submitting, anderror.docs/cleverbrush-reference.md.Reasoning
The Framework controller should own schema values and submission state. Typed registries make field-specific options checkable without unchecked prop-bag casts. Existing application-specific parsing, timezone conversion, redirects, and successful-feedback toast behavior remain in Xpenser.
The original beta's defaulted-field and declaration-export blocker was resolved by merged Framework PR #224. This branch now uses the stable npm 4.5.0 release, including
@cleverbrush/log, without local patches, type assertions to bypass the issue, or weakened CI gates. The stable-promotion commit changes only six workspace manifests and the npm-generated lockfile; no unrelated package versions or application behavior were changed.Blog post
Skipped: internal Framework adoption/refactor, not a new public-facing feature.
Screenshots / preview evidence
Preview: https://xpenser-pr-094.cleverbrush.com
Fresh 4.5.0 Playwright report and screenshots — includes
feedback-success-confirmationandfeedback-reset-after-successattachments, generated for commit93a34fb.Manual browser QA passed: login and top-menu navigation; empty-feedback validation; all three feedback types; success dismissal/toast; reset after successful submission and unsent-draft dismissal; populated preference fields; preference save/navigation/reload/restore; vendor-report drilldown, filtered transactions, and matching vendor profile/history. Browser console and error buffers were empty. The seeded account's original weekly-report setting was restored and verified on a fresh page.
Validation
npm ci --ignore-scripts: passed locally; GitHub's normalnpm cialso passed.npm run lint: passed.npm run typecheck: passed across all seven workspaces against published 4.5.0 packages.npm test: passed, 723 tests across 110 files.git diff --check: passed.93a34fb75a614de980b6bbe8a9aea63698803a84: Lint and test, Deploy PR environment, and Playwright e2e.xpenser-web-pr-94andxpenser-api-pr-94. Both emitted traces/logs; no error-level logs.PR-ready notification: sent successfully through the configured local notifier (HTTP 200).
Residual observations
The temporary
docs/framework-consumer-experience.mdremains local and untracked in the main checkout, unchanged by this update. No Framework changes, blog post, merge, or production deployment performed.