[Fix] Backfill missing command menu items conditional availability expression (#20852)

## Description

Following [report in
discord](https://discord.com/channels/1130383047699738754/1498690477044793386/1506602927412744242)

Some command menu items were showing to all users because they had no
conditional availability expression, whereas users did not actually have
access to the page or feature behind. For instance: "Go to Admin panel",
"Go to AI settings", "Send email" etc.

<img width="833" height="1245" alt="image"
src="https://github.com/user-attachments/assets/8d2a9404-9b81-4d58-9522-558e9924c457"
/>


## Fix

- Add conditional availability expressions
- Backfill expressions for existing workspaces as they are stored in db
(commandMenuItems table)

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
Marie
2026-05-23 15:22:25 +02:00
committed by GitHub
parent 2f4ebf8160
commit 85d649e831
13 changed files with 216 additions and 20 deletions
@@ -1,3 +1,4 @@
import { currentUserState } from '@/auth/states/currentUserState';
import { currentUserWorkspaceState } from '@/auth/states/currentUserWorkspaceState';
import { currentWorkspaceState } from '@/auth/states/currentWorkspaceState';
import { objectPermissionsFamilySelector } from '@/auth/states/objectPermissionsFamilySelector';
@@ -27,6 +28,7 @@ export const StandalonePageCommandMenu = () => {
const commandMenuItems = useAtomStateValue(commandMenuItemsSelector);
const currentWorkspace = useAtomStateValue(currentWorkspaceState);
const currentUserWorkspace = useAtomStateValue(currentUserWorkspaceState);
const currentUser = useAtomStateValue(currentUserState);
const currentPageLayoutId = useAtomStateValue(currentPageLayoutIdState);
const isLayoutCustomizationModeEnabled = useAtomStateValue(
isLayoutCustomizationModeEnabledState,
@@ -85,12 +87,16 @@ export const StandalonePageCommandMenu = () => {
permissionFlags,
targetObjectReadPermissions,
targetObjectWritePermissions,
canImpersonate: currentUser?.canImpersonate === true,
canAccessFullAdminPanel: currentUser?.canAccessFullAdminPanel === true,
objectMetadataItem: {},
objectMetadataLabel: '',
};
}, [
currentWorkspace?.featureFlags,
currentUserWorkspace?.permissionFlags,
currentUser?.canImpersonate,
currentUser?.canAccessFullAdminPanel,
isLayoutCustomizationModeEnabled,
objectMetadataItems,
store,