Repository navigation
fix(app-shell): Position preview lists the permission sets a position declares - #13307
Merged
objectstack-fleet[bot] merged 1 commit intoOct 21, 2026
Conversation
…tui#13304) The callout read only name / label / description and always told the admin to bind the position to Permission Sets. A draft that declares `permissionSets` (ADR-0131 D4) now lists them by machine name in declared order; the "grants nothing on its own" note shows only when none are declared (absent, empty, or not an array). Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XVp19E1MYUTFM3dnkwz8gB
Contributor
✅ Console Performance Budget
The eager closure is every chunk the entry reaches through static imports — what the browser fetches and parses before the app renders. The entry chunk on its own is a small fraction of it. 📦 Bundle Size Report
Size Limits
|
objectstack-fleet
Bot
deleted the
claude/issue-13304-position-preview-permission-sets
branch
October 21, 2026 08:01
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.
Fixes #13304
Clause-②: no
What changed
PositionPreviewread onlyname/label/descriptionand always rendered "Positions don't grant data access on their own. Bind NAME to one or more Permission Sets…", even for a position whose draft declarespermissionSets(ADR-0131 D4). Measured in the browser on HotCRM (objectstack-ai/hotcrm#2229): Setup, Positions,service_manager.permissionSetsis a non-empty array, the callout reads "This position grants access through these Permission Sets:" and lists each set by machine name (as a code span), in declared order, followed by the record-visibility sentence (business-unit tree and sharing rules, not the position).[], or not an array. Non-string entries in the array are skipped.MetadataPreviewPropscarries no catalogue);AgentPreviewlistspermissionsby name the same way.engine.positionPreview.*):engine.positionPreview.grantsVia(reusesengine.positionPreview.permissionSetsfor the noun) andengine.positionPreview.visibility.permissionSets(ADR-0131 D4) and the preview shows them.Tests
PositionPreview.permissionSets-13304.test.tsx: (a)['service_agent', 'support_viewer']lists both names in order and the "grants nothing" note is absent; (b) CONTROL: nopermissionSetsand[]render the existing note; (c) a string value is treated as none.adminPreviews.i18n-10862-s2.test.tsxgains an en/zh case for the declared branch (each new row renders, zh rows are real zh rows).--maxWorkers=1, under the shared lock): 2 files, 44 tests passed.ablation-replace.mjs, anchor{permissionSets.length > 0 ? (replaced by{false ? (, anchor count 1 to 0, blobce8a2934to8376b3a0): (a) went red, the three control/none cases stayed green (1 failed, 3 passed). Restore proven by blob hash: file blob after restore equals the HEAD blobce8a29347417,git diff HEADempty.@object-ui/app-shellclosure build (turbo run build --filter='@object-ui/app-shell^...' --concurrency=2) thentype-check(tsc --noEmitplustsconfig.test.json): exit 0.eslint --no-inline-configon the 4 changed source/test files: 0 errors, 0 warnings (4 files per--format json; the eslint config enables no type-aware linting, so the diff cannot move any untouched file's verdict).check:phantom-deps,check:self-import,check:unreferenced-sources,check:doc-example-readers,check:handler-key-reads,check:side-effects-array,check:element-data-source-declaration,check:spec-symbols,check:action-forward-parity,check:designer-field-key-parity,check:icon-record-names,check:i18n-keys,check:i18n-drift,check:i18n-designer-parity,check:control-bytes,check:new-line-citations,check-hand-rolled-comment-mask.mjs,check-changeset-fixed.mjs,check-changeset-presence.mjs.check:spec-floorsexit 1 (no-artifact: the workspace was not fully built; recorded, not fixed, as on main).packages/app-shell/test directory (not run locally).Acceptance notes
None.
Changeset:
.changeset/13304-position-preview-permission-sets.md(@object-ui/app-shellpatch).Session:
https://claude.ai/code/session_01XVp19E1MYUTFM3dnkwz8gBGenerated by Claude Code