From dd8ab84df5e65d871a6721edcb61189f8e49755d Mon Sep 17 00:00:00 2001 From: Andre Padez Date: Thu, 19 Feb 2026 01:49:15 +0000 Subject: [PATCH] Workspaces in Workspaces all around --- seed/tasks/TASKS.md | 28 + src/apps/officer-web/App.tsx | 10 +- .../ForgotPassword/ForgotPassword.tsx | 2 +- .../ForgotPassword/ResetPassword.tsx | 4 +- .../Authentication/LandingPage/Login.tsx | 4 +- .../Layout/AuthenticationLayout.tsx | 7 +- .../VerifyScreen/VerifyScreen.tsx | 10 +- .../Automation/AutomationEditChat.tsx | 37 +- .../Automation/CapabilityDetailView.tsx | 192 ++++++- .../Dashboard/Automation/CapabilityList.tsx | 20 +- .../Screens/Dashboard/Automation/NewCron.tsx | 16 +- .../Dashboard/Automation/NewPipeline.tsx | 16 +- .../Dashboard/Automation/NewProcess.tsx | 16 +- .../Dashboard/Automation/NewService.tsx | 16 +- .../Screens/Dashboard/Automation/NewSkill.tsx | 16 +- .../Screens/Dashboard/Automation/NewTask.tsx | 16 +- .../Dashboard/Automation/NewWorkflow.tsx | 16 +- .../Screens/Dashboard/CapabilityPage.tsx | 77 ++- .../Screens/Dashboard/Chat/InputArea.tsx | 6 +- .../Screens/Dashboard/Chat/Settings.tsx | 4 +- .../Screens/Dashboard/Chat/index.tsx | 80 +-- .../Dashboard/ChatHistory/ChatDetailPanel.tsx | 291 ++++++++++ .../Screens/Dashboard/ChatHistory/Screen.tsx | 145 +++-- .../Screens/Dashboard/ChatHistory/index.tsx | 57 +- .../Dashboard/Files/Screen/FileGrid.tsx | 3 + .../Dashboard/Files/Screen/FileItem.tsx | 20 +- .../Dashboard/Files/Screen/FileViewer.tsx | 20 +- .../Files/Screen/TaskRunnerModal.tsx | 26 +- .../Screens/Dashboard/Files/Screen/index.tsx | 37 +- .../Screens/Dashboard/Files/Widget.tsx | 2 +- .../Screens/Dashboard/Files/index.tsx | 32 +- .../Screens/Dashboard/Home/ChatLauncher.tsx | 4 +- .../Screens/Dashboard/Layout/Dock.tsx | 11 +- .../Dashboard/Layout/Header/Header.tsx | 2 - .../Dashboard/Layout/Header/UserMenu.tsx | 24 +- .../Screens/Dashboard/Plans/index.tsx | 6 +- .../Screens/Dashboard/Settings/AISettings.tsx | 80 +-- .../ProfileSettings/ChangePassword.tsx | 6 +- .../Settings/ProfileSettings/Languages.tsx | 6 +- .../Settings/ProfileSettings/TaskDefaults.tsx | 2 +- .../Settings/ProfileSettings/UserData.tsx | 4 +- .../Settings/ProfileSettings/index.tsx | 134 ++--- .../ResourceSettings/Applications.tsx | 20 +- .../ResourceSettings/ResourceSidebar.tsx | 10 +- .../Settings/ServerSettings/index.tsx | 120 ++-- .../Dashboard/Settings/SettingsPanel.tsx | 108 ++++ .../Screens/Dashboard/TaskLogs/index.tsx | 6 +- .../Dashboard/Workspaces/WorkspaceListApp.tsx | 90 ++- .../Workspaces/WorkspaceListScreen.tsx | 538 +++++++++++++++--- .../Screens/Dashboard/Workspaces/constants.ts | 6 + src/apps/officer-web/frontend.tsx | 6 +- .../officer-web/state/types/user-settings.ts | 4 +- src/apps/officer-web/state/useInitialData.ts | 4 +- src/apps/officer-web/state/useThemeSync.ts | 10 +- src/apps/officer-web/state/useUserState.ts | 6 +- src/apps/officer-web/styles/globals.css | 6 + src/apps/officer-web/styles/prose.css | 76 +-- src/servers/api/claude/websocket.ts | 5 +- src/servers/api/file-browser/router.ts | 65 +++ src/servers/api/opencode/websocket.ts | 8 +- src/servers/api/processes/processes.ts | 17 + src/servers/api/skills/skills.ts | 17 + src/servers/api/tasks/tasks.ts | 17 + src/workspaces/apps/Chat/MessageBubble.tsx | 10 +- src/workspaces/apps/Chat/QuestionActivity.tsx | 2 +- src/workspaces/apps/Chat/ToolActivity.tsx | 2 +- .../apps/ChatHistory/SessionBar.tsx | 2 +- src/workspaces/apps/FileBrowser/Toolbar.tsx | 27 +- src/workspaces/apps/FileBrowser/useFiles.ts | 30 + src/workspaces/components/ColorPicker.tsx | 2 +- .../components/DataTable/PaginationBar.tsx | 4 +- src/workspaces/components/MarkdownEditor.tsx | 2 +- .../components/Workspace/AppPicker.tsx | 2 +- src/workspaces/components/Workspace/types.ts | 2 + .../components/ui/ThemeProvider.tsx | 45 +- src/workspaces/components/ui/ThemeToggle.tsx | 12 +- src/workspaces/components/ui/mode-toggle.tsx | 8 +- src/workspaces/widgets/DailyGoals/index.tsx | 190 +++++++ src/workspaces/widgets/Pomodoro/index.tsx | 414 ++++++++++++++ src/workspaces/widgets/QuickNotes/index.tsx | 78 +++ src/workspaces/widgets/Weather/index.tsx | 268 +++++++++ .../widgets/Weather/weather-codes.ts | 38 ++ src/workspaces/widgets/package.json | 4 + src/workspaces/widgets/widget-registry.tsx | 10 +- 84 files changed, 3047 insertions(+), 749 deletions(-) create mode 100644 src/apps/officer-web/Screens/Dashboard/ChatHistory/ChatDetailPanel.tsx create mode 100644 src/apps/officer-web/Screens/Dashboard/Settings/SettingsPanel.tsx create mode 100644 src/apps/officer-web/Screens/Dashboard/Workspaces/constants.ts create mode 100644 src/workspaces/widgets/DailyGoals/index.tsx create mode 100644 src/workspaces/widgets/Pomodoro/index.tsx create mode 100644 src/workspaces/widgets/QuickNotes/index.tsx create mode 100644 src/workspaces/widgets/Weather/index.tsx create mode 100644 src/workspaces/widgets/Weather/weather-codes.ts diff --git a/seed/tasks/TASKS.md b/seed/tasks/TASKS.md index 6c728ce6..a0a14c26 100644 --- a/seed/tasks/TASKS.md +++ b/seed/tasks/TASKS.md @@ -36,7 +36,30 @@ trigger: inputs: - name: input_name description: What this input is. + type: string required: true + - name: count + description: How many items to process. + type: number + default: 10 + required: false + - name: verbose + description: Enable verbose output. + type: boolean + default: false + required: false + - name: format + description: Output format. + type: select + default: json + required: false + options: + - value: json + label: JSON + - value: csv + label: CSV + - value: md + label: Markdown --- ``` @@ -56,7 +79,12 @@ inputs: | `inputs` | object[] | no | Inputs the task expects. | | `inputs[].name` | string | yes | Name of the input parameter. | | `inputs[].description` | string | yes | Description of the input. | +| `inputs[].type` | string | no | Input type. Determines how a task runner renders the input. One of: `string`, `number`, `boolean`, `select`. Defaults to `string`. | +| `inputs[].default` | any | no | Default value for the input. | | `inputs[].required` | boolean | no | Whether the input is required. | +| `inputs[].options` | object[] | no | Available choices when `type` is `select`. Each option has a `value` and a `label`. | +| `inputs[].options[].value` | string | yes | The value passed to the task. | +| `inputs[].options[].label` | string | yes | Human-readable label displayed in the UI. | ### Body diff --git a/src/apps/officer-web/App.tsx b/src/apps/officer-web/App.tsx index c1aa3d20..97c474dd 100644 --- a/src/apps/officer-web/App.tsx +++ b/src/apps/officer-web/App.tsx @@ -41,11 +41,11 @@ export function App() { } /> } /> } /> - } /> - } /> - } /> - } /> - } /> + } /> + } /> + } /> + } /> + } /> } /> } /> } /> diff --git a/src/apps/officer-web/Screens/Authentication/ForgotPassword/ForgotPassword.tsx b/src/apps/officer-web/Screens/Authentication/ForgotPassword/ForgotPassword.tsx index 605f1a07..d7dc1d2e 100644 --- a/src/apps/officer-web/Screens/Authentication/ForgotPassword/ForgotPassword.tsx +++ b/src/apps/officer-web/Screens/Authentication/ForgotPassword/ForgotPassword.tsx @@ -53,7 +53,7 @@ export function ForgotPassword() {