diff --git a/apps/web/src/components/commit-dialog.tsx b/apps/web/src/components/features/git/commit-dialog.tsx similarity index 100% rename from apps/web/src/components/commit-dialog.tsx rename to apps/web/src/components/features/git/commit-dialog.tsx diff --git a/apps/web/src/components/commit-panel.tsx b/apps/web/src/components/features/git/commit-panel.tsx similarity index 100% rename from apps/web/src/components/commit-panel.tsx rename to apps/web/src/components/features/git/commit-panel.tsx diff --git a/apps/web/src/components/file-editor.tsx b/apps/web/src/components/features/git/file-editor.tsx similarity index 98% rename from apps/web/src/components/file-editor.tsx rename to apps/web/src/components/features/git/file-editor.tsx index 667080a..8e0eff1 100644 --- a/apps/web/src/components/file-editor.tsx +++ b/apps/web/src/components/features/git/file-editor.tsx @@ -3,7 +3,7 @@ import { useSearchParams } from "react-router-dom"; import { apiClient } from "../api/client"; import { useAuth } from "../state/auth"; import { CodeEditor } from "../components/code-editor"; -import { CommitDialog } from "../components/commit-dialog"; +import { CommitDialog } from "../components/features/git/commit-dialog"; import { Icon } from "../components/icon"; import { SyntaxHighlighter } from "../components/syntax-highlighter"; import { detectLanguage } from "../utils/language"; diff --git a/apps/web/src/components/git-mount-editor.tsx b/apps/web/src/components/features/git/git-mount-editor.tsx similarity index 100% rename from apps/web/src/components/git-mount-editor.tsx rename to apps/web/src/components/features/git/git-mount-editor.tsx diff --git a/apps/web/src/components/git-toolbar.tsx b/apps/web/src/components/features/git/git-toolbar.tsx similarity index 100% rename from apps/web/src/components/git-toolbar.tsx rename to apps/web/src/components/features/git/git-toolbar.tsx diff --git a/apps/web/src/components/merge-dialog.tsx b/apps/web/src/components/features/git/merge-dialog.tsx similarity index 100% rename from apps/web/src/components/merge-dialog.tsx rename to apps/web/src/components/features/git/merge-dialog.tsx diff --git a/apps/web/src/components/mobile-action-sheet.tsx b/apps/web/src/components/features/mobile/mobile-action-sheet.tsx similarity index 100% rename from apps/web/src/components/mobile-action-sheet.tsx rename to apps/web/src/components/features/mobile/mobile-action-sheet.tsx diff --git a/apps/web/src/components/mobile-detail-view.tsx b/apps/web/src/components/features/mobile/mobile-detail-view.tsx similarity index 100% rename from apps/web/src/components/mobile-detail-view.tsx rename to apps/web/src/components/features/mobile/mobile-detail-view.tsx diff --git a/apps/web/src/components/mobile-edit-view.tsx b/apps/web/src/components/features/mobile/mobile-edit-view.tsx similarity index 100% rename from apps/web/src/components/mobile-edit-view.tsx rename to apps/web/src/components/features/mobile/mobile-edit-view.tsx diff --git a/apps/web/src/components/mobile-fab.tsx b/apps/web/src/components/features/mobile/mobile-fab.tsx similarity index 100% rename from apps/web/src/components/mobile-fab.tsx rename to apps/web/src/components/features/mobile/mobile-fab.tsx diff --git a/apps/web/src/components/mobile-list-view.tsx b/apps/web/src/components/features/mobile/mobile-list-view.tsx similarity index 100% rename from apps/web/src/components/mobile-list-view.tsx rename to apps/web/src/components/features/mobile/mobile-list-view.tsx diff --git a/apps/web/src/components/mobile-nav.tsx b/apps/web/src/components/features/mobile/mobile-nav.tsx similarity index 100% rename from apps/web/src/components/mobile-nav.tsx rename to apps/web/src/components/features/mobile/mobile-nav.tsx diff --git a/apps/web/src/components/mobile-page-header.tsx b/apps/web/src/components/features/mobile/mobile-page-header.tsx similarity index 100% rename from apps/web/src/components/mobile-page-header.tsx rename to apps/web/src/components/features/mobile/mobile-page-header.tsx diff --git a/apps/web/src/components/mobile-terminal-header.tsx b/apps/web/src/components/features/mobile/mobile-terminal-header.tsx similarity index 100% rename from apps/web/src/components/mobile-terminal-header.tsx rename to apps/web/src/components/features/mobile/mobile-terminal-header.tsx diff --git a/apps/web/src/components/mobile-terminal-wrapper.tsx b/apps/web/src/components/features/mobile/mobile-terminal-wrapper.tsx similarity index 100% rename from apps/web/src/components/mobile-terminal-wrapper.tsx rename to apps/web/src/components/features/mobile/mobile-terminal-wrapper.tsx diff --git a/apps/web/src/components/event-toast-bridge.test.tsx b/apps/web/src/components/features/notification/event-toast-bridge.test.tsx similarity index 100% rename from apps/web/src/components/event-toast-bridge.test.tsx rename to apps/web/src/components/features/notification/event-toast-bridge.test.tsx diff --git a/apps/web/src/components/event-toast-bridge.tsx b/apps/web/src/components/features/notification/event-toast-bridge.tsx similarity index 100% rename from apps/web/src/components/event-toast-bridge.tsx rename to apps/web/src/components/features/notification/event-toast-bridge.tsx diff --git a/apps/web/src/components/notification-center.test.tsx b/apps/web/src/components/features/notification/notification-center.test.tsx similarity index 100% rename from apps/web/src/components/notification-center.test.tsx rename to apps/web/src/components/features/notification/notification-center.test.tsx diff --git a/apps/web/src/components/notification-center.tsx b/apps/web/src/components/features/notification/notification-center.tsx similarity index 100% rename from apps/web/src/components/notification-center.tsx rename to apps/web/src/components/features/notification/notification-center.tsx diff --git a/apps/web/src/components/notification-item.test.tsx b/apps/web/src/components/features/notification/notification-item.test.tsx similarity index 100% rename from apps/web/src/components/notification-item.test.tsx rename to apps/web/src/components/features/notification/notification-item.test.tsx diff --git a/apps/web/src/components/notification-item.tsx b/apps/web/src/components/features/notification/notification-item.tsx similarity index 100% rename from apps/web/src/components/notification-item.tsx rename to apps/web/src/components/features/notification/notification-item.tsx diff --git a/apps/web/src/components/repositories-settings-tab.test.tsx b/apps/web/src/components/features/project/repositories-settings-tab.test.tsx similarity index 100% rename from apps/web/src/components/repositories-settings-tab.test.tsx rename to apps/web/src/components/features/project/repositories-settings-tab.test.tsx diff --git a/apps/web/src/components/repositories-settings-tab.tsx b/apps/web/src/components/features/project/repositories-settings-tab.tsx similarity index 100% rename from apps/web/src/components/repositories-settings-tab.tsx rename to apps/web/src/components/features/project/repositories-settings-tab.tsx diff --git a/apps/web/src/components/repository-create-dialog.tsx b/apps/web/src/components/features/project/repository-create-dialog.tsx similarity index 100% rename from apps/web/src/components/repository-create-dialog.tsx rename to apps/web/src/components/features/project/repository-create-dialog.tsx diff --git a/apps/web/src/components/create-session-form.tsx b/apps/web/src/components/features/session/create-session-form.tsx similarity index 100% rename from apps/web/src/components/create-session-form.tsx rename to apps/web/src/components/features/session/create-session-form.tsx diff --git a/apps/web/src/components/session-card.tsx b/apps/web/src/components/features/session/session-card.tsx similarity index 100% rename from apps/web/src/components/session-card.tsx rename to apps/web/src/components/features/session/session-card.tsx diff --git a/apps/web/src/components/session-list.tsx b/apps/web/src/components/features/session/session-list.tsx similarity index 100% rename from apps/web/src/components/session-list.tsx rename to apps/web/src/components/features/session/session-list.tsx diff --git a/apps/web/src/components/settings-tab-layout.tsx b/apps/web/src/components/features/settings/settings-tab-layout.tsx similarity index 100% rename from apps/web/src/components/settings-tab-layout.tsx rename to apps/web/src/components/features/settings/settings-tab-layout.tsx diff --git a/apps/web/src/components/special-keys-panel.tsx b/apps/web/src/components/features/terminal/special-keys-panel.tsx similarity index 100% rename from apps/web/src/components/special-keys-panel.tsx rename to apps/web/src/components/features/terminal/special-keys-panel.tsx diff --git a/apps/web/src/components/special-keys-strip.tsx b/apps/web/src/components/features/terminal/special-keys-strip.tsx similarity index 100% rename from apps/web/src/components/special-keys-strip.tsx rename to apps/web/src/components/features/terminal/special-keys-strip.tsx diff --git a/apps/web/src/components/terminal-session-tabs.test.tsx b/apps/web/src/components/features/terminal/terminal-session-tabs.test.tsx similarity index 100% rename from apps/web/src/components/terminal-session-tabs.test.tsx rename to apps/web/src/components/features/terminal/terminal-session-tabs.test.tsx diff --git a/apps/web/src/components/terminal-session-tabs.tsx b/apps/web/src/components/features/terminal/terminal-session-tabs.tsx similarity index 100% rename from apps/web/src/components/terminal-session-tabs.tsx rename to apps/web/src/components/features/terminal/terminal-session-tabs.tsx diff --git a/apps/web/src/components/terminal.tsx b/apps/web/src/components/features/terminal/terminal.tsx similarity index 100% rename from apps/web/src/components/terminal.tsx rename to apps/web/src/components/features/terminal/terminal.tsx diff --git a/apps/web/src/components/instance-list.tsx b/apps/web/src/components/features/tool/instance-list.tsx similarity index 100% rename from apps/web/src/components/instance-list.tsx rename to apps/web/src/components/features/tool/instance-list.tsx diff --git a/apps/web/src/components/manifest-editor.tsx b/apps/web/src/components/features/tool/manifest-editor.tsx similarity index 100% rename from apps/web/src/components/manifest-editor.tsx rename to apps/web/src/components/features/tool/manifest-editor.tsx diff --git a/apps/web/src/components/start-tool-fab.tsx b/apps/web/src/components/features/tool/start-tool-fab.tsx similarity index 100% rename from apps/web/src/components/start-tool-fab.tsx rename to apps/web/src/components/features/tool/start-tool-fab.tsx diff --git a/apps/web/src/components/start-tool-modal.tsx b/apps/web/src/components/features/tool/start-tool-modal.tsx similarity index 100% rename from apps/web/src/components/start-tool-modal.tsx rename to apps/web/src/components/features/tool/start-tool-modal.tsx diff --git a/apps/web/src/components/tool-starter.tsx b/apps/web/src/components/features/tool/tool-starter.tsx similarity index 100% rename from apps/web/src/components/tool-starter.tsx rename to apps/web/src/components/features/tool/tool-starter.tsx diff --git a/apps/web/src/components/tools-bottom-sheet.tsx b/apps/web/src/components/features/tool/tools-bottom-sheet.tsx similarity index 100% rename from apps/web/src/components/tools-bottom-sheet.tsx rename to apps/web/src/components/features/tool/tools-bottom-sheet.tsx diff --git a/apps/web/src/components/workspace-card.tsx b/apps/web/src/components/features/workspace/workspace-card.tsx similarity index 100% rename from apps/web/src/components/workspace-card.tsx rename to apps/web/src/components/features/workspace/workspace-card.tsx diff --git a/apps/web/src/components/workspace-create-form.tsx b/apps/web/src/components/features/workspace/workspace-create-form.tsx similarity index 100% rename from apps/web/src/components/workspace-create-form.tsx rename to apps/web/src/components/features/workspace/workspace-create-form.tsx diff --git a/apps/web/src/components/workspace-header.tsx b/apps/web/src/components/features/workspace/workspace-header.tsx similarity index 100% rename from apps/web/src/components/workspace-header.tsx rename to apps/web/src/components/features/workspace/workspace-header.tsx diff --git a/apps/web/src/components/workspace-instance-chips.tsx b/apps/web/src/components/features/workspace/workspace-instance-chips.tsx similarity index 100% rename from apps/web/src/components/workspace-instance-chips.tsx rename to apps/web/src/components/features/workspace/workspace-instance-chips.tsx diff --git a/apps/web/src/pages/ConfigProfilesPage.tsx b/apps/web/src/pages/ConfigProfilesPage.tsx index 5f6188f..2ba8356 100644 --- a/apps/web/src/pages/ConfigProfilesPage.tsx +++ b/apps/web/src/pages/ConfigProfilesPage.tsx @@ -3,10 +3,10 @@ import { ErrorState, LoadingState } from "../components/data-states"; import { Icon } from "../components/icon"; import { useMobileViewport } from "../hooks/use-mobile-viewport"; import { extractErrorMessage } from "../utils/errors"; -import { MobileListView } from "../components/mobile-list-view"; -import { MobileDetailView } from "../components/mobile-detail-view"; -import { MobileEditView } from "../components/mobile-edit-view"; -import { MobileFAB } from "../components/mobile-fab"; +import { MobileListView } from "../components/features/mobile/mobile-list-view"; +import { MobileDetailView } from "../components/features/mobile/mobile-detail-view"; +import { MobileEditView } from "../components/features/mobile/mobile-edit-view"; +import { MobileFAB } from "../components/features/mobile/mobile-fab"; import { createConfigProfile, deleteConfigProfile, @@ -21,7 +21,7 @@ import { import { listProjects } from "../api/projects"; import type { ProjectWithRepos } from "../types"; import { listToolTypes, type ToolType } from "../api/tool-types"; -import { GitMountEditor } from "../components/git-mount-editor"; +import { GitMountEditor } from "../components/features/git/git-mount-editor"; type Status = "loading" | "ready" | "error"; type MobileView = "list" | "detail" | "edit"; diff --git a/apps/web/src/pages/DashboardPage.tsx b/apps/web/src/pages/DashboardPage.tsx index 35305e7..515cc89 100644 --- a/apps/web/src/pages/DashboardPage.tsx +++ b/apps/web/src/pages/DashboardPage.tsx @@ -9,7 +9,7 @@ import { type InstanceHealth, } from "../api/sessions"; import { ErrorState, LoadingState } from "../components/data-states"; -import { SessionList } from "../components/session-list"; +import { SessionList } from "../components/features/session/session-list"; import { useInstanceActions } from "../hooks/use-instance-actions"; type HomeStatus = "loading" | "ready" | "error"; diff --git a/apps/web/src/pages/GitRepositoriesPage.tsx b/apps/web/src/pages/GitRepositoriesPage.tsx index 83b5176..8a14f08 100644 --- a/apps/web/src/pages/GitRepositoriesPage.tsx +++ b/apps/web/src/pages/GitRepositoriesPage.tsx @@ -8,7 +8,7 @@ import { import type { GitRepository } from "../api/git-repositories"; import { EmptyState, ErrorState, LoadingState } from "../components/data-states"; import { Icon } from "../components/icon"; -import { RepositoryCreateDialog } from "../components/repository-create-dialog"; +import { RepositoryCreateDialog } from "../components/features/project/repository-create-dialog"; import { useAsyncData } from "../hooks/use-async-data"; export const GitRepositoriesPage = () => { diff --git a/apps/web/src/pages/ProjectSettingsPage.tsx b/apps/web/src/pages/ProjectSettingsPage.tsx index 3b5bb02..6a5253d 100644 --- a/apps/web/src/pages/ProjectSettingsPage.tsx +++ b/apps/web/src/pages/ProjectSettingsPage.tsx @@ -1,7 +1,7 @@ import React, { useState, useEffect } from "react"; import { useParams, Link, useNavigate, Routes, Route } from "react-router-dom"; -import { SettingsTabLayout } from "../components/settings-tab-layout"; -import { RepositoriesSettingsTab } from "../components/repositories-settings-tab"; +import { SettingsTabLayout } from "../components/features/settings/settings-tab-layout"; +import { RepositoriesSettingsTab } from "../components/features/project/repositories-settings-tab"; import { apiClient } from "../api/client"; import { Project } from "../types"; diff --git a/apps/web/src/pages/ProjectsPage.tsx b/apps/web/src/pages/ProjectsPage.tsx index 9f71b29..b5fca25 100644 --- a/apps/web/src/pages/ProjectsPage.tsx +++ b/apps/web/src/pages/ProjectsPage.tsx @@ -17,7 +17,7 @@ import { LoadingState, } from "../components/data-states"; import { Icon } from "../components/icon"; -import { WorkspaceCreateForm } from "../components/workspace-create-form"; +import { WorkspaceCreateForm } from "../components/features/workspace/workspace-create-form"; import { useAsyncData } from "../hooks/use-async-data"; import type { ProjectWithRepos, WorkspaceSummary } from "../types"; diff --git a/apps/web/src/pages/RepoWorkspacePage.tsx b/apps/web/src/pages/RepoWorkspacePage.tsx index aa545ae..945ae43 100644 --- a/apps/web/src/pages/RepoWorkspacePage.tsx +++ b/apps/web/src/pages/RepoWorkspacePage.tsx @@ -12,11 +12,11 @@ import { type GitRepository, type GitStatus, } from "../api/git-repositories"; -import { CommitPanel } from "../components/commit-panel"; -import { FileEditor } from "../components/file-editor"; -import { GitToolbar } from "../components/git-toolbar"; -import { InstanceList } from "../components/instance-list"; -import { WorkspaceHeader } from "../components/workspace-header"; +import { CommitPanel } from "../components/features/git/commit-panel"; +import { FileEditor } from "../components/features/git/file-editor"; +import { GitToolbar } from "../components/features/git/git-toolbar"; +import { InstanceList } from "../components/features/tool/instance-list"; +import { WorkspaceHeader } from "../components/features/workspace/workspace-header"; import { listToolTypes } from "../api/tool-types"; import type { ToolType } from "../api/tool-types"; diff --git a/apps/web/src/pages/SessionsPage.tsx b/apps/web/src/pages/SessionsPage.tsx index bca9805..6c27fbe 100644 --- a/apps/web/src/pages/SessionsPage.tsx +++ b/apps/web/src/pages/SessionsPage.tsx @@ -7,8 +7,8 @@ import { } from "../api/sessions"; import { getUserConfig } from "../api/settings"; import { ErrorState, LoadingState } from "../components/data-states"; -import { SessionList } from "../components/session-list"; -import { SessionCard } from "../components/session-card"; +import { SessionList } from "../components/features/session/session-list"; +import { SessionCard } from "../components/features/session/session-card"; import { useInstanceActions } from "../hooks/use-instance-actions"; import type { InstanceHealth } from "../api/sessions"; diff --git a/apps/web/src/pages/TerminalPage.tsx b/apps/web/src/pages/TerminalPage.tsx index 8d8e073..6e76fd6 100644 --- a/apps/web/src/pages/TerminalPage.tsx +++ b/apps/web/src/pages/TerminalPage.tsx @@ -1,13 +1,13 @@ import React, { useCallback, useEffect, useRef, useState } from "react"; import { useNavigate, useParams } from "react-router-dom"; -import { TerminalComponent, type TerminalRef } from "../components/terminal"; +import { TerminalComponent, type TerminalRef } from "../components/features/terminal/terminal"; import { TerminalSessionTabs, type TerminalSessionInfo, -} from "../components/terminal-session-tabs"; +} from "../components/features/terminal/terminal-session-tabs"; import { Icon } from "../components/icon"; -import { SpecialKeysStrip } from "../components/special-keys-strip"; -import { SpecialKeysPanel } from "../components/special-keys-panel"; +import { SpecialKeysStrip } from "../components/features/terminal/special-keys-strip"; +import { SpecialKeysPanel } from "../components/features/terminal/special-keys-panel"; import { useMobileViewport } from "../hooks/use-mobile-viewport"; import { useAutoHide } from "../hooks/use-auto-hide"; import { useVirtualKeyboard } from "../hooks/use-virtual-keyboard"; diff --git a/apps/web/src/pages/ToolWorkshopPage.tsx b/apps/web/src/pages/ToolWorkshopPage.tsx index 28b8811..a7b4ed5 100644 --- a/apps/web/src/pages/ToolWorkshopPage.tsx +++ b/apps/web/src/pages/ToolWorkshopPage.tsx @@ -3,10 +3,10 @@ import { ErrorState, LoadingState } from "../components/data-states"; import { Icon } from "../components/icon"; import { useMobileViewport } from "../hooks/use-mobile-viewport"; import { extractErrorMessage } from "../utils/errors"; -import { MobileListView } from "../components/mobile-list-view"; -import { MobileDetailView } from "../components/mobile-detail-view"; -import { MobileEditView } from "../components/mobile-edit-view"; -import { MobileFAB } from "../components/mobile-fab"; +import { MobileListView } from "../components/features/mobile/mobile-list-view"; +import { MobileDetailView } from "../components/features/mobile/mobile-detail-view"; +import { MobileEditView } from "../components/features/mobile/mobile-edit-view"; +import { MobileFAB } from "../components/features/mobile/mobile-fab"; import { createToolType, deleteToolType, @@ -24,7 +24,7 @@ import { updateToolDefinition, type ToolDefinitionManifest, } from "../api/tool_definitions"; -import { ManifestEditor } from "../components/manifest-editor"; +import { ManifestEditor } from "../components/features/tool/manifest-editor"; type Status = "loading" | "ready" | "error"; type MobileView = "list" | "detail" | "edit"; diff --git a/apps/web/src/pages/WorkspaceDetailPage.tsx b/apps/web/src/pages/WorkspaceDetailPage.tsx index 3287307..fa0b160 100644 --- a/apps/web/src/pages/WorkspaceDetailPage.tsx +++ b/apps/web/src/pages/WorkspaceDetailPage.tsx @@ -8,7 +8,7 @@ import { useWorkspaceFiles } from "../hooks/use-workspace-files"; import { useWorkspaceGit } from "../hooks/use-workspace-git"; import { useWorkspaceInstances } from "../hooks/use-workspace-instances"; import { useMobileViewport } from "../hooks/use-mobile-viewport"; -import { ToolStarter } from "../components/tool-starter"; +import { ToolStarter } from "../components/features/tool/tool-starter"; import type { FileEntry } from "../api/workspace-files"; import type { Workspace } from "../types/workspace"; diff --git a/apps/web/src/pages/WorkspacesPage.tsx b/apps/web/src/pages/WorkspacesPage.tsx index 6a60769..1339631 100644 --- a/apps/web/src/pages/WorkspacesPage.tsx +++ b/apps/web/src/pages/WorkspacesPage.tsx @@ -4,9 +4,9 @@ import { useState } from "react"; import { Icon } from "../components/icon"; import { useWorkspaces } from "../hooks/use-workspaces"; import { useWorkspaceActions } from "../hooks/use-workspace-actions"; -import { WorkspaceCard } from "../components/workspace-card"; -import { WorkspaceCreateForm } from "../components/workspace-create-form"; -import { ToolStarter } from "../components/tool-starter"; +import { WorkspaceCard } from "../components/features/workspace/workspace-card"; +import { WorkspaceCreateForm } from "../components/features/workspace/workspace-create-form"; +import { ToolStarter } from "../components/features/tool/tool-starter"; import type { Workspace } from "../types/workspace"; export function WorkspacesPage() {