Adopt existing Framework capabilities and upgrade to 4.4.3 - #91
Merged
Merged
Conversation
andrewzolotukhin
temporarily deployed
to
pr-91
September 6, 2026 15:13 — with
GitHub Actions
Inactive
andrewzolotukhin
temporarily deployed
to
pr-91
September 6, 2026 15:18 — with
GitHub Actions
Inactive
This branch was previously deployed
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.
Summary
Upgrade Xpenser to the latest published Cleverbrush Framework release and adopt existing Framework capabilities without changing Framework source.
Original request
Use the existing-capability improvements from proposal section 8, upgrade to the latest npm release, and adopt native multi-scheme authentication while preserving Xpenser's existing security rules.
What changed
whereInquery over unique authorized budget IDs. Preserve normalization, sorting, empty lists, and zero queries for empty input.api-keyandjwtschemes with nativetrySchemes. Preserve explicit API-key precedence, API keys in bearer headers, claims, revocation/last-used behavior, single-user restrictions, and the Bearer challenge. An invalid or revoked selected API key cannot fall through to a valid JWT.trySchemesalready existed in 4.4.0; the separate 4.4.3 upgrade includes published routing and prototype-pollution fixes.Reasoning
Use existing Framework APIs rather than introducing app-specific Framework abstractions. Native scheme fallback continues after a failed scheme, so Xpenser keeps its credential-selection guard to avoid weakening authentication.
No public response-shape changes, migrations, production configuration changes, or Framework source edits. The main checkout's proposal document and unrelated files are preserved outside this PR.
The first preview build exposed a packaging assumption: npm deduplication removed the API workspace's
node_modulesdirectory. The follow-up creates the optional directory after installation in both API and bot builders. The corrected preview build/deployment passed.Blog post
Skipped: internal dependency, performance, and authentication refactor with no new user-facing feature.
Screenshots / preview evidence
Preview · Playwright report
Screenshots are not applicable to the requested non-visual changes: query counts and credential-selection policies cannot be demonstrated by a screenshot, and the UI is unchanged. Browser QA confirmed login, Dashboard/Transactions navigation, Preferences → Manage budgets, and the existing currency display. No browser console errors. The new request tests verify the precise authentication and currency behavior and clean up their temporary resources.
Validation
Final head:
ea46acf.npm run lintnpm run typecheckacross all workspacesnpm test: 108 files / 595 tests passednpm run build: all seven workspaces, including the production web buildCaveats / explicit skips
Checklist