Active-org nav context, related-list action bridges, first-run wizard fixes (cloud ADR-0081) - #2356
Merged
Conversation
…ow-action correctness + first-run wizard fixes
Mechanism wiring for cloud ADR-0081 (in-shell org/member management):
- Nav template context now carries currentOrgId (sidebars, command palette,
search results) so '{current_org_id}' recordId deep-links resolve — the
spec + NavigationRenderer already supported the token; the shell just
never supplied the value.
- AuthProvider: refreshOrganizations returns the fetched list (callers were
reading a stale state closure), and a session with no active org but
exactly one membership auto-activates it (repairs pre-existing sessions
without a re-login).
- Related-list row actions (record pages) fixed end-to-end:
- RelatedRecordActionsBridge spread the ActionParam[] DEFINITION array
into the params object ({0:{...}}), which downstream sent to the data
API as a fields map -> INVALID_FIELD: Unknown field '0'. Dispatch now
mirrors ObjectGrid: defs as actionParams, params reserved for
_rowRecord.
- Param dialogs resolve field-backed params against the action's OWN
(child) object and prefill defaultFromRow from the clicked row
(RecordDetailView + useConsoleActionRuntime).
- RecordDetailView.apiHandler gains the canonical absolute-HTTP branch
(recordIdParam/bodyExtra/bodyShape + active-org injection). Previously
every type:'api' action mapped to dataSource.update: remove_member
silently no-opped as a fake success, and update_member_role bypassed
better-auth with a raw write to a managed identity table.
- First-run wizard (SetupPage): use the returned org list with a short
retry (stale closure made it always fall through to createOrganization,
which single-org FORBIDs and the error was swallowed); keep the existing
slug when the org name slugifies to '' (CJK names); don't auto-redirect
mid-submission (the navigation killed the in-flight rename).
Live-verified against a single-org framework stack in the browser.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…s onto related lists Related lists surfaced a child object's row actions (list_item) but not its LIST actions — on an organization record page the Invitations tab had no way to send an invitation (sys_invitation's invite_user is a list_toolbar action). Extend the same host-bridge contract with toolbarActions / onToolbarAction: the bridge derives the child's list_toolbar actions (localized), RelatedList renders them as header buttons before Add/New, and execution reuses the row-action dispatch without a row record. Completes the in-shell Team surface (cloud ADR-0081 D3): invite / cancel / resend now work from the org record page's Invitations list; live-verified against the cloud control plane. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
Contributor
✅ Console Performance Budget
📦 Bundle Size Report
Size Limits
|
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.
Mechanism wiring for cloud ADR-0081 (in-shell org/member management) — no business logic, all metadata plumbing + real bug fixes:
currentOrgIdin nav template context (sidebars, command palette, search):{current_org_id}recordIdtokens now resolve — the spec + NavigationRenderer already supported them; the shell never supplied the value.refreshOrganizationsreturns the fetched list (callers read a stale state closure); a session with no active org and exactly ONE membership auto-activates it (repairs pre-existing sessions without re-login).ActionParam[]DEFINITION array into the params object ({0:{…}}) → sent to the data API as a fields map →INVALID_FIELD: Unknown field '0'; dispatch now mirrors ObjectGrid (actionParams+params:{_rowRecord});defaultFromRowfrom the clicked row;RecordDetailView.apiHandlergains the canonical absolute-HTTP branch — previously everytype:'api'action mapped todataSource.update:remove_membersilently no-opped as fake success,update_member_rolebypassed better-auth with a raw managed-table write.list_toolbaractions as header buttons (invite_useron an org's Invitations list) — same contract as row actions, no row context.createOrganization, FORBIDden in single-org, error swallowed); keep the existing slug when the name slugifies to''(CJK names); don't auto-redirect mid-submission (the navigation killed the in-flight rename).Verification
react 5464 ✓ / app-shell 1135 ✓ / plugin-detail 170 ✓ / auth 130 ✓. Browser E2E against both a single-org framework stack and the full cloud stack (real signup → Team page → invite/accept/change-role/remove through better-auth).
Pairs with objectstack-ai/objectstack#2699 and objectstack-ai/cloud feat/console-team-page (cloud#738).
🤖 Generated with Claude Code