@@ -57,13 +57,14 @@ export const SETUP_APP: App = {
5757 // and which tenants/teams they belong to. `sys_department` is the
5858 // platform-owned org skeleton (M10.17.1); `sys_team` is better-auth's
5959 // flat collaboration grouping.
60+ //
61+ // M10.30b: removed top-level Department Members / Team Members /
62+ // Org Members entries — they are M:N join tables and the natural
63+ // entry point is the parent record's detail page.
6064 { id : 'nav_users' , type : 'object' , label : 'Users' , objectName : 'sys_user' , icon : 'user' } ,
6165 { id : 'nav_departments' , type : 'object' , label : 'Departments' , objectName : 'sys_department' , icon : 'building' , requiresObject : 'sys_department' } ,
62- { id : 'nav_department_members' , type : 'object' , label : 'Department Members' , objectName : 'sys_department_member' , icon : 'user-cog' , requiresObject : 'sys_department_member' } ,
6366 { id : 'nav_teams' , type : 'object' , label : 'Teams' , objectName : 'sys_team' , icon : 'users-round' } ,
64- { id : 'nav_team_members' , type : 'object' , label : 'Team Members' , objectName : 'sys_team_member' , icon : 'users' } ,
6567 { id : 'nav_organizations' , type : 'object' , label : 'Organizations' , objectName : 'sys_organization' , icon : 'building-2' } ,
66- { id : 'nav_members' , type : 'object' , label : 'Org Members' , objectName : 'sys_member' , icon : 'user-check' } ,
6768 { id : 'nav_invitations' , type : 'object' , label : 'Invitations' , objectName : 'sys_invitation' , icon : 'mail' } ,
6869 ] ,
6970 } ,
@@ -73,10 +74,11 @@ export const SETUP_APP: App = {
7374 label : 'Access Control' ,
7475 icon : 'shield' ,
7576 children : [
77+ // M10.30b: removed top-level User Permission Sets / Role Permission
78+ // Sets entries — same M:N → parent-detail-tab argument as the
79+ // People & Org cleanup.
7680 { id : 'nav_roles' , type : 'object' , label : 'Roles' , objectName : 'sys_role' , icon : 'shield-check' } ,
7781 { id : 'nav_permission_sets' , type : 'object' , label : 'Permission Sets' , objectName : 'sys_permission_set' , icon : 'lock' } ,
78- { id : 'nav_user_permission_sets' , type : 'object' , label : 'User Permission Sets' , objectName : 'sys_user_permission_set' , icon : 'user-check' } ,
79- { id : 'nav_role_permission_sets' , type : 'object' , label : 'Role Permission Sets' , objectName : 'sys_role_permission_set' , icon : 'shield-plus' } ,
8082 { id : 'nav_sharing_rules' , type : 'object' , label : 'Sharing Rules' , objectName : 'sys_sharing_rule' , icon : 'share-2' , requiresObject : 'sys_sharing_rule' } ,
8183 { id : 'nav_record_shares' , type : 'object' , label : 'Record Shares' , objectName : 'sys_record_share' , icon : 'link' , requiresObject : 'sys_record_share' } ,
8284 { id : 'nav_api_keys' , type : 'object' , label : 'API Keys' , objectName : 'sys_api_key' , icon : 'key' } ,
@@ -93,36 +95,18 @@ export const SETUP_APP: App = {
9395 { id : 'nav_approval_actions' , type : 'object' , label : 'Action History' , objectName : 'sys_approval_action' , icon : 'history' , requiresObject : 'sys_approval_action' } ,
9496 ] ,
9597 } ,
96- {
97- id : 'group_platform' ,
98- type : 'group' ,
99- label : 'Platform' ,
100- icon : 'layers' ,
101- children : [
102- // `sys_app` / `sys_package` / `sys_package_installation` are
103- // contributed by `@objectstack/service-tenant` (control-plane scope).
104- // Single-project runtimes do not register them — the `requiresObject`
105- // capability flag tells the frontend to hide these entries when the
106- // backing object is not in the SchemaRegistry, avoiding the
107- // 404-when-clicked trap.
108- { id : 'nav_apps' , type : 'object' , label : 'Apps' , objectName : 'sys_app' , icon : 'layout-grid' , requiresObject : 'sys_app' } ,
109- { id : 'nav_packages' , type : 'object' , label : 'Packages' , objectName : 'sys_package' , icon : 'package' , requiresObject : 'sys_package' } ,
110- { id : 'nav_package_installations' , type : 'object' , label : 'Installations' , objectName : 'sys_package_installation' , icon : 'package-check' , requiresObject : 'sys_package_installation' } ,
111- { id : 'nav_metadata' , type : 'object' , label : 'All Metadata' , objectName : 'sys_metadata' , icon : 'file-cog' } ,
112- ] ,
113- } ,
11498 {
11599 id : 'group_diagnostics' ,
116100 type : 'group' ,
117101 label : 'Diagnostics' ,
118102 icon : 'stethoscope' ,
119103 children : [
120- // Day-to-day observability surfaces.
104+ // Day-to-day observability surfaces. M10.30b removed `sys_activity`
105+ // and `sys_comment` — both are CRM operational data authored from
106+ // record pages, not platform admin surfaces.
121107 { id : 'nav_sessions' , type : 'object' , label : 'Sessions' , objectName : 'sys_session' , icon : 'monitor' } ,
122108 { id : 'nav_audit_logs' , type : 'object' , label : 'Audit Logs' , objectName : 'sys_audit_log' , icon : 'scroll-text' } ,
123- { id : 'nav_activity' , type : 'object' , label : 'Activity' , objectName : 'sys_activity' , icon : 'activity' } ,
124109 { id : 'nav_notifications' , type : 'object' , label : 'Notifications' , objectName : 'sys_notification' , icon : 'bell' , requiresObject : 'sys_notification' } ,
125- { id : 'nav_comments' , type : 'object' , label : 'Comments' , objectName : 'sys_comment' , icon : 'message-square' } ,
126110 ] ,
127111 } ,
128112 {
@@ -137,16 +121,26 @@ export const SETUP_APP: App = {
137121 // to SQL. The objectui sidebar collapses this group by default;
138122 // edits should hit the read-only banner since these are all
139123 // `managedBy: 'better-auth'`.
140- { id : 'nav_oauth_apps' , type : 'object' , label : 'OAuth Apps' , objectName : 'sys_oauth_application' , icon : 'app-window' } ,
141- { id : 'nav_oauth_access_tokens' , type : 'object' , label : 'OAuth Access Tokens' , objectName : 'sys_oauth_access_token' , icon : 'key-square' } ,
142- { id : 'nav_oauth_refresh_tokens' , type : 'object' , label : 'OAuth Refresh Tokens' , objectName : 'sys_oauth_refresh_token' , icon : 'refresh-cw' } ,
143- { id : 'nav_oauth_consents' , type : 'object' , label : 'OAuth Consents' , objectName : 'sys_oauth_consent' , icon : 'check-square' } ,
124+ //
125+ // M10.30b changes:
126+ // - Removed the 3 OAuth satellite menus (access tokens / refresh
127+ // tokens / consents). They live under their parent OAuth App.
128+ // - Renamed "Linked Accounts" → "Identity Links" to distinguish
129+ // from sys_user / org members.
130+ // - Demoted "All Metadata" from the (now-deleted) Platform group
131+ // to this Advanced/debug bucket.
132+ // - The marketplace-only `sys_app` / `sys_package` /
133+ // `sys_package_installation` menus have been removed entirely;
134+ // they are contributed by `@objectstack/service-tenant`
135+ // (control-plane) and are not present in single-project runtimes.
136+ { id : 'nav_oauth_apps' , type : 'object' , label : 'OAuth Applications' , objectName : 'sys_oauth_application' , icon : 'app-window' } ,
144137 { id : 'nav_jwks' , type : 'object' , label : 'Signing Keys (JWKS)' , objectName : 'sys_jwks' , icon : 'key-round' } ,
145138 { id : 'nav_verifications' , type : 'object' , label : 'Verifications' , objectName : 'sys_verification' , icon : 'mail-check' } ,
146139 { id : 'nav_two_factor' , type : 'object' , label : 'Two-Factor' , objectName : 'sys_two_factor' , icon : 'smartphone' } ,
147140 { id : 'nav_device_codes' , type : 'object' , label : 'Device Codes' , objectName : 'sys_device_code' , icon : 'qr-code' } ,
148- { id : 'nav_accounts' , type : 'object' , label : 'Linked Accounts ' , objectName : 'sys_account' , icon : 'link-2' } ,
141+ { id : 'nav_accounts' , type : 'object' , label : 'Identity Links ' , objectName : 'sys_account' , icon : 'link-2' } ,
149142 { id : 'nav_user_preferences' , type : 'object' , label : 'User Preferences' , objectName : 'sys_user_preference' , icon : 'sliders' } ,
143+ { id : 'nav_metadata' , type : 'object' , label : 'All Metadata' , objectName : 'sys_metadata' , icon : 'file-cog' } ,
150144 ] ,
151145 } ,
152146 ] ,
0 commit comments