{"record":{"id":"8c8bc5d01d486e44","repo":"BloopAI/vibe-kanban","slug":"remoteactionsprovider-action-action-id-is-u","errorCode":null,"errorMessage":"[RemoteActionsProvider] Action \"${action.id}\" is unavailable in remote web.","messagePattern":"\\[RemoteActionsProvider\\] Action \"(.+?)\" is unavailable in remote web\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"info","filePath":"packages/remote-web/src/app/providers/RemoteActionsProvider.tsx","lineNumber":173,"sourceCode":"      if (action.id === \"settings\") {\n        await SettingsDialog.show({\n          initialSection: \"organizations\",\n        });\n        return;\n      }\n\n      if (action.id === \"project-settings\") {\n        await SettingsDialog.show({\n          initialSection: \"remote-projects\",\n          initialState: {\n            organizationId: selectedOrgId ?? undefined,\n            projectId: projectId ?? undefined,\n          },\n        });\n        return;\n      }\n\n      console.warn(\n        `[RemoteActionsProvider] Action \"${action.id}\" is unavailable in remote web.`,\n      );\n    },\n    [projectId, selectedOrgId],\n  );\n\n  const getLabel = useCallback(\n    (\n      action: ActionDefinition,\n      workspace?: Workspace,\n      ctx?: ActionVisibilityContext,\n    ) => {\n      if (ctx) {\n        return getActionLabel(action, ctx, workspace);\n      }\n      return resolveLabel(action, workspace);\n    },\n    [],","sourceCodeStart":155,"sourceCodeEnd":191,"githubUrl":"https://github.com/BloopAI/vibe-kanban/blob/4deb7eca8f381f7cbc1f9d15515a9ab8f8009053/packages/remote-web/src/app/providers/RemoteActionsProvider.tsx#L155-L191","documentation":"`RemoteActionsProvider.executeAction` handles only the `settings` and `project-settings` action ids in remote web. Any other ActionDefinition dispatched through the shared ActionsContext reaches the final fallback, which logs this console.warn and does nothing — the action is silently dropped.","triggerScenarios":"Executing a shared action (e.g. workspace start/stop, open-in-editor, dev-server actions, archive, etc.) via executeAction from command palette, context menus, or keyboard shortcuts while in remote web, when the action id is not 'settings' or 'project-settings'.","commonSituations":"Shared action registries listing desktop-only actions; users invoking them from the command palette in the hosted web UI; new actions added to shared/types/actions but not implemented in the remote provider.","solutions":["Hide desktop-only actions from command palettes/menus when running in remote web (filter by runtime).","If the action should work remotely, add an implementation branch in RemoteActionsProvider.executeAction for that action.id.","Extend the ActionDefinition type with a `remoteSupported` flag (or similar) and gate visibility/resolution on it."],"exampleFix":"// before\nexecuteAction({ id: 'open-in-editor' }); // warns and no-ops\n\n// after\nif (action.remoteSupported) executeAction(action);\nelse hideAction(action); // don't render in remote web","handlingStrategy":"type-guard","validationCode":"const REMOTE_SUPPORTED = new Set(['settings', 'project-settings']);\nconst visibleActions = actions.filter((a) => REMOTE_SUPPORTED.has(a.id));","typeGuard":"function isRemoteSupported(action: ActionDefinition): boolean {\n  return action.id === 'settings' || action.id === 'project-settings';\n}","tryCatchPattern":null,"preventionTips":["Filter the shared action registry to remote-supported ids before feeding command palettes or menus in remote web.","Add a `remoteSupported` (or `supportedRuntimes`) field to ActionDefinition and enforce it at the visibility layer.","When adding a new shared action, update RemoteActionsProvider.executeAction or explicitly mark it desktop-only."],"tags":["remote-web","unsupported-feature","noop"],"backgroundTag":"feature-not-available-in-remote","analyzedSha":"4deb7eca8f381f7cbc1f9d15515a9ab8f8009053","analyzedAt":"2026-08-29T09:24:13.446Z","schemaVersion":2},"datasetVersion":"2026-08-29T12:17:43.993Z"}