.dockerignore .github/workflows/pre-release.yml Cargo.toml Dockerfile README.md backend/.sqlx/query-73a58d62b2f18489ef5be9f4760f3bee51d6dedd550c3be9bf72e29b2203e63c.json backend/.sqlx/query-9a893c35e2d5fa480396d5f403c3e9263217904dc3dfe43beca9c9541c4be619.json backend/.sqlx/query-d7f5b59e70cc177ec547b5f2f185713f7a284b3dbc774f61d9d95dd830df34c0.json backend/Cargo.toml backend/build.rs backend/src/bin/generate_types.rs backend/src/execution_monitor.rs backend/src/executor.rs backend/src/executors/amp.rs backend/src/executors/charm_opencode.rs backend/src/executors/claude.rs backend/src/executors/gemini.rs backend/src/executors/mod.rs backend/src/executors/setup_script.rs backend/src/lib.rs backend/src/main.rs backend/src/mcp/task_server.rs backend/src/models/api_response.rs backend/src/models/config.rs backend/src/models/mod.rs backend/src/models/task.rs backend/src/models/task_attempt.rs backend/src/routes/auth.rs backend/src/routes/config.rs backend/src/routes/filesystem.rs backend/src/routes/health.rs backend/src/routes/mod.rs backend/src/routes/projects.rs backend/src/routes/task_attempts.rs backend/src/routes/tasks.rs backend/src/services/git_service.rs backend/src/services/process_service.rs backend/src/utils/worktree_manager.rs crates/db/.sqlx/query-00aa2d8701f6b1ed2e84ad00b9b6aaf8d3cce788d2494ff283e2fad71df0a05d.json crates/db/.sqlx/query-216efabcdaa2a6ea166e4468a6ac66d3298666a546e964a509538731ece90c9e.json crates/db/.sqlx/query-2188432c66e9010684b6bb670d19abd77695b05d1dd84ef3102930bc0fe6404f.json crates/db/.sqlx/query-247c35ff20bc38710d34dbedb5da5580a04e5b39542b276129ee928ddbb3c586.json crates/db/.sqlx/query-2536cc481304c39d0d4b586c9964428c7027a5c596773a22749adc668564df3d.json crates/db/.sqlx/query-290ce5c152be8d36e58ff42570f9157beb07ab9e77a03ec6fc30b4f56f9b8f6b.json crates/db/.sqlx/query-36e4ba7bbd81b402d5a20b6005755eafbb174c8dda442081823406ac32809a94.json crates/db/.sqlx/query-3d6bd16fbce59efe30b7f67ea342e0e4ea6d1432389c02468ad79f1f742d4031.json crates/db/.sqlx/query-461cc1b0bb6fd909afc9dd2246e8526b3771cfbb0b22ae4b5d17b51af587b9e2.json crates/db/.sqlx/query-59d5bfa8926b68a2c73c6de394b3bb08696b58fc67503ec967253a65e0382517.json crates/db/.sqlx/query-5ae4dea70309b2aa40d41412f70b200038176dc8c56c49eeaaa65763a1b276eb.json crates/db/.sqlx/query-6333d1cf94f67854143c413f183ae2d5543729dce49f63208ca6681420531ce2.json crates/db/.sqlx/query-68936973b086b68d58ccc7b17d92cc8223e1be98c3581af98ff20efc32434c6c.json crates/db/.sqlx/query-72b7b51a2d7c03f1cccd5a84e83be6193dfc29b7b84ed86620138d49242c3679.json crates/db/.sqlx/query-8aba98bb4d1701d1686d68371bca4edb4ba7f8b70693f86fc83860f8adda9065.json crates/db/.sqlx/query-8f01ebd64bdcde6a090479f14810d73ba23020e76fd70854ac57f2da251702c3.json crates/db/.sqlx/query-96036c4f9e0f48bdc5a4a4588f0c5f288ac7aaa5425cac40fc33f337e1a351f2.json crates/db/.sqlx/query-9bbce9e842ce8df9afa2620dde729070dfead5e7ad07d5b12851773bb4158c43.json crates/db/.sqlx/query-a2becd93b5fc5824e9401cafe9c6cf13e8632e8163f135f3c41460af98a641d5.json crates/db/.sqlx/query-a756babb25522b031008710262c7bdcbd54c5dee606bd3f551d63cf001a6ae9e.json crates/db/.sqlx/query-ccd79e96214a044e76c148f4200546db2d90db1d098d9c3678fc3386bacd4f05.json crates/db/.sqlx/query-da5f8a096555c13ac2253669316d68315c4fc6b3b24c355130f30357669c5ba0.json crates/db/.sqlx/query-edc613a67a3b24cad69b9009728e964277851d220692265f2c16105186cdc9e1.json crates/db/deny.toml crates/db/migrations/20250716000000_add_gallery_and_comments.sql crates/utils/src/executors/ccr.rs crates/utils/src/executors/gemini/config.rs crates/utils/src/executors/gemini/streaming.rs crates/utils/src/executors/sst_opencode.rs crates/utils/src/executors/sst_opencode/filter.rs crates/utils/src/executors/sst_opencode/tools.rs crates/utils/src/middleware/mod.rs crates/utils/src/middleware/model_loaders.rs crates/utils/src/models/task_attachment.rs crates/utils/src/models/task_comment.rs crates/utils/src/models/task_template.rs crates/utils/src/routes/gallery.rs crates/utils/src/routes/stream.rs crates/utils/src/routes/task_templates.rs crates/utils/src/utils/path.rs frontend/.eslintrc.json frontend/package.json frontend/src/App.tsx frontend/src/components/DisclaimerDialog.tsx frontend/src/components/GitHubLoginDialog.tsx frontend/src/components/OnboardingDialog.tsx frontend/src/components/ProvidePatDialog.tsx frontend/src/components/config-provider.tsx frontend/src/components/context/TaskDetailsContextProvider.tsx frontend/src/components/context/taskDetailsContext.ts frontend/src/components/keyboard-shortcuts-demo.tsx frontend/src/components/layout/navbar.tsx frontend/src/components/projects/project-detail.tsx frontend/src/components/projects/project-form.tsx frontend/src/components/projects/project-list.tsx frontend/src/components/tasks/DeleteFileConfirmationDialog.tsx frontend/src/components/tasks/EditorSelectionDialog.tsx frontend/src/components/tasks/TaskCard.tsx frontend/src/components/tasks/TaskDetails/DiffCard.tsx frontend/src/components/tasks/TaskDetails/DiffChunkSection.tsx frontend/src/components/tasks/TaskDetails/DisplayConversationEntry.tsx frontend/src/components/tasks/TaskDetails/LogsTab.tsx frontend/src/components/tasks/TaskDetails/LogsTab/Conversation.tsx frontend/src/components/tasks/TaskDetails/LogsTab/NormalizedConversationViewer.tsx frontend/src/components/tasks/TaskDetails/TabNavigation.tsx frontend/src/components/tasks/TaskDetailsPanel.tsx frontend/src/components/tasks/TaskDetailsToolbar.tsx frontend/src/components/tasks/TaskFollowUpSection.tsx frontend/src/components/tasks/TaskFormDialog.tsx frontend/src/components/tasks/TaskKanbanBoard.tsx frontend/src/components/tasks/Toolbar/CreateAttempt.tsx frontend/src/components/tasks/Toolbar/CreatePRDialog.tsx frontend/src/components/tasks/Toolbar/CurrentAttempt.tsx frontend/src/components/theme-toggle.tsx frontend/src/components/ui/auto-expanding-textarea.tsx frontend/src/components/ui/button.tsx frontend/src/components/ui/dialog.tsx frontend/src/components/ui/file-search-textarea.tsx frontend/src/components/ui/markdown-renderer.tsx frontend/src/components/ui/shadcn-io/kanban/index.tsx frontend/src/lib/api.ts frontend/src/lib/keyboard-shortcuts.ts frontend/src/lib/types.ts frontend/src/main.tsx frontend/src/pages/McpServers.tsx frontend/src/pages/Settings.tsx frontend/src/pages/project-tasks.tsx frontend/src/pages/projects.tsx frontend/vite.config.ts package-lock.json packages/local-web/src/app/providers/TaskTemplateManager.tsx packages/local-web/src/app/providers/__tests__/DisclaimerDialog.test.tsx packages/local-web/src/app/providers/__tests__/GitHubLoginDialog.test.tsx packages/local-web/src/app/providers/__tests__/OnboardingDialog.test.tsx packages/local-web/src/app/providers/__tests__/PrivacyOptInDialog.test.tsx packages/local-web/src/app/providers/layout/navbar.a11y.test.tsx packages/local-web/src/app/providers/projects/ProjectCard.a11y.test.tsx packages/local-web/src/app/providers/projects/ProjectCard.tsx packages/local-web/src/app/providers/projects/project-form-fields.tsx packages/local-web/src/app/providers/tasks/TaskCard.a11y.test.tsx packages/local-web/src/app/providers/tasks/TaskDetails/FileUploadCard.tsx packages/local-web/src/app/providers/tasks/TaskDetails/GalleryMarkdownRenderer.tsx packages/local-web/src/app/providers/tasks/TaskDetails/GalleryTab.tsx packages/local-web/src/app/providers/tasks/TaskDetails/LogsTab/ConversationEntry.tsx packages/local-web/src/app/providers/tasks/TaskDetails/LogsTab/Prompt.tsx packages/local-web/src/app/providers/tasks/TaskDetails/RelatedTasksTab.tsx packages/local-web/src/app/providers/tasks/TaskDetails/__tests__/FileUploadCard.test.tsx packages/local-web/src/app/providers/tasks/TaskDetails/__tests__/GalleryTab.test.tsx packages/local-web/src/app/providers/tasks/TaskKanbanBoard.a11y.test.tsx packages/local-web/src/app/providers/tasks/__tests__/TaskCard.test.tsx packages/local-web/src/app/providers/tasks/__tests__/TaskFormDialog.test.tsx packages/ui/src/App.test.tsx packages/ui/src/__mocks__/@sentry/react.ts packages/ui/src/__mocks__/api.ts packages/ui/src/__mocks__/react-markdown.tsx packages/ui/src/__tests__/accessibility/utils.ts packages/ui/src/__tests__/api.test.ts packages/ui/src/__tests__/components/context/TaskDetailsContextProvider.test.tsx packages/ui/src/__tests__/components/tasks/TaskDetails/GalleryTab.test.tsx packages/ui/src/__tests__/components/ui/badge.test.tsx packages/ui/src/__tests__/components/ui/card.test.tsx packages/ui/src/__tests__/components/ui/loader.test.tsx packages/ui/src/__tests__/example.test.tsx packages/ui/src/__tests__/hooks/useNormalizedConversation.test.tsx packages/ui/src/__tests__/index.ts packages/ui/src/__tests__/integration/README.md packages/ui/src/__tests__/integration/api/projects-api-fixed.integration.test.tsx packages/ui/src/__tests__/integration/api/projects-api.integration.test.tsx packages/ui/src/__tests__/integration/api/tasks-api.integration.test.tsx packages/ui/src/__tests__/integration/context/config-provider.integration.test.tsx packages/ui/src/__tests__/integration/context/task-details-context.integration.test.tsx packages/ui/src/__tests__/integration/forms/project-form.integration.test.tsx packages/ui/src/__tests__/integration/forms/task-form.integration.test.tsx packages/ui/src/__tests__/integration/pages/project-tasks.integration.test.tsx packages/ui/src/__tests__/integration/pages/projects-page.integration.test.tsx packages/ui/src/__tests__/integration/router/navigation.integration.test.tsx packages/ui/src/__tests__/jest-config.test.ts packages/ui/src/__tests__/keyboard-shortcuts.test.ts packages/ui/src/__tests__/lib/api.test.ts packages/ui/src/__tests__/lib/keyboard-shortcuts-edge-cases.test.ts packages/ui/src/__tests__/mocks/apiMocks.ts packages/ui/src/__tests__/mocks/externalLibraryMocks.tsx packages/ui/src/__tests__/mocks/externalLibraryMocks.tsx.bak packages/ui/src/__tests__/mocks/routerMocks.ts packages/ui/src/__tests__/pages/project-tasks.test.tsx packages/ui/src/__tests__/react-component.test.tsx packages/ui/src/__tests__/setup.ts packages/ui/src/__tests__/test-utils-basic.test.tsx packages/ui/src/__tests__/test-utils.tsx packages/ui/src/__tests__/types.test.ts packages/ui/src/__tests__/utils.test.ts packages/ui/src/__tests__/utils/api-test-setup.ts packages/ui/src/__tests__/utils/clipboardTestUtils.ts packages/ui/src/__tests__/utils/customMatchers.ts packages/ui/src/__tests__/utils/helpers.ts packages/ui/src/__tests__/utils/mockData.ts packages/ui/src/__tests__/utils/test-utils.tsx packages/ui/src/__tests__/utils/testSetup.ts packages/ui/src/__tests__/utils/testUtils.tsx packages/ui/src/components/__tests__/button.test.tsx packages/ui/src/components/__tests__/dialog.test.tsx packages/ui/src/components/__tests__/input.test.tsx packages/ui/src/components/button.a11y.test.tsx packages/ui/src/components/dialog.a11y.test.tsx packages/ui/src/components/input.a11y.test.tsx packages/ui/src/components/progress.tsx packages/ui/src/components/tabs.tsx packages/ui/src/hooks/useConfig.ts packages/ui/src/hooks/useNormalizedConversation.ts packages/ui/src/hooks/useTheme.ts packages/ui/src/jest-setup.ts packages/ui/src/lib/badge-variants.ts packages/ui/src/lib/button-variants.ts packages/ui/src/setupTests.ts packages/ui/src/test-utils.ts packages/ui/src/test-utils/accessibility-helpers.ts