From de59b57ee76c7ac76b69e79f41335e8d013d565f Mon Sep 17 00:00:00 2001 From: indigo Date: Sat, 28 Feb 2026 03:22:04 +0800 Subject: [PATCH] Init Repo --- .gitignore | 89 + .../skills/openspec-apply-change/SKILL.md | 156 + .../skills/openspec-archive-change/SKILL.md | 114 + .../openspec-bulk-archive-change/SKILL.md | 246 + .../skills/openspec-continue-change/SKILL.md | 118 + .kilocode/skills/openspec-explore/SKILL.md | 290 + .kilocode/skills/openspec-ff-change/SKILL.md | 101 + .kilocode/skills/openspec-new-change/SKILL.md | 74 + .kilocode/skills/openspec-onboard/SKILL.md | 529 ++ .kilocode/skills/openspec-sync-specs/SKILL.md | 138 + .../skills/openspec-verify-change/SKILL.md | 168 + .kilocode/workflows/opsx-apply.md | 145 + .kilocode/workflows/opsx-archive.md | 150 + .kilocode/workflows/opsx-bulk-archive.md | 235 + .kilocode/workflows/opsx-continue.md | 107 + .kilocode/workflows/opsx-explore.md | 167 + .kilocode/workflows/opsx-ff.md | 87 + .kilocode/workflows/opsx-new.md | 62 + .kilocode/workflows/opsx-onboard.md | 518 ++ .kilocode/workflows/opsx-sync.md | 127 + .kilocode/workflows/opsx-verify.md | 157 + .../asset-browser-table-refactor/design.md | 179 + .../requirements.md | 76 + .../asset-browser-table-refactor/tasks.md | 131 + .../design.md | 124 + .../requirements.md | 75 + .../tasks.md | 198 + .kiro/specs/file-path-linux-fix/design.md | 222 + .../specs/file-path-linux-fix/requirements.md | 81 + .kiro/specs/file-path-linux-fix/tasks.md | 164 + .../recovery-management-rename/design.md | 198 + .../requirements.md | 109 + .../specs/recovery-management-rename/tasks.md | 210 + .../design.md | 587 ++ .../requirements.md | 77 + .../tasks.md | 262 + .kiro/specs/shot-cascading-deletion/design.md | 503 ++ .../shot-cascading-deletion/requirements.md | 154 + .kiro/specs/shot-cascading-deletion/tasks.md | 594 ++ .../shot-project-id-enhancement/design.md | 197 + .../requirements.md | 63 + .../shot-project-id-enhancement/tasks.md | 174 + .../specs/task-browser-bulk-actions/README.md | 41 + .../specs/task-browser-bulk-actions/design.md | 563 ++ .../task-browser-bulk-actions/requirements.md | 95 + .../specs/task-browser-bulk-actions/tasks.md | 179 + .kiro/specs/task-browser-refactor/design.md | 416 + .../task-browser-refactor/requirements.md | 124 + .kiro/specs/task-browser-refactor/tasks.md | 229 + .../ui-component-import-fixes/requirements.md | 51 + .../asset-detail-panel-spec.md | 253 + .../custom-task-status-design.md | 606 ++ .../custom-task-status-requirements.md | 138 + .../custom-task-status-tasks.md | 341 + .kiro/specs/vfx-project-management/design.md | 1820 ++++ .../notification-system-implementation.md | 238 + .../vfx-project-management/requirements.md | 506 ++ .../shot-data-table-implementation.md | 157 + .../shot-detail-panel-spec-update.md | 178 + .../shot-table-enhanced-spec.md | 335 + .../shot-table-summary.md | 145 + .../shot-table-view-spec.md | 282 + .../task-20-implementation-summary.md | 226 + .kiro/specs/vfx-project-management/tasks.md | 1449 ++++ .kiro/steering/product.md | 26 + .kiro/steering/structure.md | 75 + .kiro/steering/tech.md | 113 + README.md | 135 + backend/.env.example | 11 + backend/SCHEMA_UPDATE_SUMMARY.md | 99 + backend/analyze_database_indexes.py | 169 + backend/asset_router_optimization_summary.md | 126 + backend/check_admin_user.py | 10 + backend/check_current_user.py | 26 + backend/check_custom_types.py | 11 + backend/check_db_schema.py | 37 + backend/check_indexes.py | 36 + backend/check_statuses.py | 14 + backend/check_user_role.py | 14 + backend/create_admin.py | 165 + backend/create_example_data.py | 320 + backend/create_example_project.py | 245 + backend/create_fresh_database.py | 132 + backend/create_task_status_indexes.py | 255 + backend/database.py | 25 + backend/debug_episode_access.py | 51 + backend/debug_projects.py | 65 + backend/debug_shot_403.py | 103 + backend/debug_tasks_403.py | 56 + backend/docs/admin_api_key_management.md | 190 + backend/docs/bulk-actions-implementation.md | 168 + .../custom-task-status-create-endpoint.md | 172 + .../custom-task-status-delete-endpoint.md | 137 + .../docs/custom-task-status-get-endpoint.md | 194 + backend/docs/custom-task-status-migration.md | 115 + .../custom-task-status-reorder-endpoint.md | 381 + .../custom-task-status-update-endpoint.md | 260 + .../docs/data-consistency-implementation.md | 231 + .../default-asset-tasks-implementation.md | 221 + backend/docs/fastapi-trailing-slash-issue.md | 155 + backend/docs/file-path-migration-guide.md | 341 + backend/docs/file_handling.md | 246 + .../docs/project-settings-implementation.md | 338 + .../docs/project-thumbnail-implementation.md | 208 + backend/docs/shot-access-403-fix.md | 110 + .../shot-project-id-soft-deletion-update.md | 96 + backend/docs/shot-task-creation-endpoint.md | 222 + backend/docs/soft-deletion-commit-fix.md | 99 + backend/docs/task-18-schema-fix.md | 60 + backend/docs/task-5-implementation-summary.md | 188 + .../task-5-implementation-verification.md | 142 + backend/docs/task-5-requirements-checklist.md | 240 + ...-8-custom-status-support-implementation.md | 277 + .../docs/task-status-index-optimization.md | 101 + backend/fix_activity_metadata_column.py | 116 + backend/fix_project_enums.py | 57 + backend/fix_task_types_case.py | 36 + backend/main.py | 121 + backend/migrate_activities.py | 74 + backend/migrate_admin_users.py | 97 + backend/migrate_avatar_field.py | 40 + backend/migrate_custom_task_statuses.py | 91 + backend/migrate_custom_task_types.py | 76 + backend/migrate_file_paths_production.py | 584 ++ backend/migrate_file_paths_to_relative.py | 381 + backend/migrate_notifications.py | 95 + backend/migrate_project_fields.py | 103 + backend/migrate_project_settings.py | 110 + backend/migrate_project_technical_specs.py | 168 + backend/migrate_project_thumbnail.py | 43 + backend/migrate_shot_project_id.py | 524 ++ backend/migrate_soft_deletion_assets.py | 137 + backend/migrate_soft_deletion_complete.py | 90 + .../migrate_soft_deletion_related_tables.py | 167 + backend/migrate_soft_deletion_shots.py | 137 + backend/migrate_soft_deletion_tasks.py | 138 + backend/models/__init__.py | 39 + backend/models/activity.py | 55 + backend/models/api_key.py | 36 + backend/models/api_key_usage.py | 22 + backend/models/asset.py | 65 + backend/models/episode.py | 34 + backend/models/global_settings.py | 14 + backend/models/notification.py | 89 + backend/models/project.py | 88 + backend/models/shot.py | 66 + backend/models/task.py | 276 + backend/models/user.py | 52 + backend/monitor_query_performance.py | 298 + backend/optimize_database_indexes.py | 335 + backend/recreate_database.py | 97 + backend/requirements.txt | 12 + backend/rollback_shot_project_id.py | 215 + backend/routers/__init__.py | 1 + backend/routers/activities.py | 239 + backend/routers/admin.py | 800 ++ backend/routers/assets.py | 742 ++ backend/routers/auth.py | 572 ++ backend/routers/data_consistency.py | 187 + backend/routers/developer.py | 270 + backend/routers/episodes.py | 294 + backend/routers/files.py | 447 + backend/routers/notifications.py | 178 + backend/routers/projects.py | 1956 +++++ backend/routers/reviews.py | 295 + backend/routers/settings.py | 166 + backend/routers/shots.py | 858 ++ backend/routers/tasks.py | 1512 ++++ backend/routers/users.py | 604 ++ backend/schemas/__init__.py | 14 + backend/schemas/activity.py | 65 + backend/schemas/api_key.py | 50 + backend/schemas/asset.py | 66 + backend/schemas/auth.py | 30 + backend/schemas/custom_task_status.py | 157 + backend/schemas/custom_task_type.py | 62 + backend/schemas/episode.py | 54 + backend/schemas/global_settings.py | 36 + backend/schemas/notification.py | 98 + backend/schemas/project.py | 374 + backend/schemas/shot.py | 99 + backend/schemas/task.py | 230 + backend/schemas/user.py | 75 + backend/services/__init__.py | 29 + backend/services/asset_soft_deletion.py | 483 ++ backend/services/batch_operations.py | 902 ++ backend/services/data_consistency.py | 421 + backend/services/recovery_service.py | 1444 ++++ backend/services/shot_soft_deletion.py | 486 ++ backend/shot_router_optimization_summary.md | 103 + ...sk_4_custom_status_support_verification.md | 116 + backend/test-project-form.html | 0 backend/test.py | 13 + backend/test_admin_api_keys.py | 127 + backend/test_admin_api_project_id.py | 204 + backend/test_admin_shot_access.py | 65 + backend/test_api_connection.py | 99 + backend/test_api_performance_focused.py | 259 + backend/test_asset_api.py | 100 + backend/test_asset_custom_status.py | 76 + backend/test_asset_custom_status_final.py | 66 + backend/test_asset_endpoints.py | 54 + backend/test_asset_optimization.py | 180 + backend/test_asset_query_performance.py | 138 + backend/test_asset_requirements_validation.py | 178 + backend/test_asset_router_optimization.py | 239 + backend/test_asset_router_syntax.py | 171 + backend/test_asset_schema_compatibility.py | 60 + backend/test_asset_task_creation.py | 41 + backend/test_asset_task_update.py | 48 + backend/test_attachment_access.py | 57 + .../test_backend_performance_validation.py | 502 ++ backend/test_batch_operations.py | 238 + backend/test_bulk_actions.py | 156 + backend/test_bulk_shot_creation.py | 75 + backend/test_bulk_shot_edge_cases.py | 175 + backend/test_bulk_shot_project_validation.py | 183 + .../test_bulk_shot_requirements_validation.py | 213 + backend/test_can_delete_user.py | 45 + ...est_complete_response_format_validation.py | 488 ++ backend/test_complete_task_status.py | 147 + ...omprehensive_custom_status_verification.py | 709 ++ backend/test_create_custom_task_status.py | 179 + backend/test_custom_status_comprehensive.py | 232 + .../test_custom_status_delete_integration.py | 201 + backend/test_custom_status_demo.py | 137 + backend/test_custom_status_manager.py | 39 + backend/test_custom_status_optimization.py | 411 + ...test_custom_status_optimization_support.py | 568 ++ backend/test_custom_status_validation.py | 209 + backend/test_custom_task_integration.py | 179 + backend/test_custom_task_status_migration.py | 79 + backend/test_custom_task_status_schemas.py | 201 + backend/test_custom_task_types.py | 170 + backend/test_data_consistency.py | 364 + backend/test_data_consistency_api.py | 127 + backend/test_default_asset_tasks.py | 274 + backend/test_delete_custom_task.py | 63 + backend/test_delete_custom_task_status.py | 345 + backend/test_delete_fix.py | 108 + backend/test_delete_user.py | 13 + backend/test_diagnostic_performance.py | 216 + backend/test_direct_performance_validation.py | 203 + backend/test_dynamic_task_type_edge_cases.py | 355 + backend/test_dynamic_task_type_support.py | 303 + backend/test_final_performance_validation.py | 328 + backend/test_frontend_api.py | 68 + backend/test_global_settings.py | 37 + backend/test_index_performance.py | 179 + backend/test_index_scalability.py | 169 + backend/test_live_backend.py | 39 + backend/test_login.py | 41 + backend/test_migration_integrity.py | 106 + backend/test_multi_project_custom_status.py | 563 ++ backend/test_new_project_fields.py | 57 + backend/test_notifications.py | 95 + backend/test_performance_comparison.py | 124 + .../test_project_id_preservation_simple.py | 182 + backend/test_project_id_soft_deletion.py | 168 + backend/test_project_settings.py | 112 + backend/test_project_settings_api.py | 169 + backend/test_project_thumbnail.py | 201 + backend/test_projects_direct.py | 48 + backend/test_recovery_api.py | 50 + backend/test_recovery_api_simple.py | 191 + ...est_recovery_functionality_preservation.py | 455 + .../test_recovery_structure_verification.py | 361 + backend/test_reorder_custom_task_status.py | 215 + backend/test_requirement_3_4_validation.py | 310 + backend/test_response_format.py | 230 + backend/test_response_format_simple.py | 348 + backend/test_response_format_validation.py | 0 backend/test_shot_deletion_debug.py | 77 + backend/test_shot_deletion_fix.py | 76 + backend/test_shot_detail_403.py | 115 + backend/test_shot_operations_api.py | 188 + backend/test_shot_optimization.py | 281 + backend/test_shot_project_id_migration.py | 170 + backend/test_shot_router_optimization.py | 155 + backend/test_shot_task_creation.py | 91 + backend/test_shot_task_status.py | 95 + backend/test_shot_tasks_403.py | 53 + backend/test_shots_endpoint.py | 73 + backend/test_simple_performance.py | 39 + backend/test_soft_deletion_services.py | 141 + backend/test_task_custom_status_support.py | 362 + backend/test_task_status_update.py | 138 + backend/test_task_statuses.py | 100 + backend/test_task_statuses_access.py | 170 + backend/test_task_statuses_errors.py | 76 + backend/test_task_statuses_with_custom.py | 137 + backend/test_task_type_in_use.py | 106 + backend/test_thumbnail_endpoint.py | 22 + backend/test_update_custom_task_status.py | 306 + backend/test_update_status_manual.py | 246 + backend/test_user_edit.py | 51 + backend/test_user_edit_name.py | 63 + backend/utils/activity.py | 397 + backend/utils/auth.py | 473 + backend/utils/file_handler.py | 315 + backend/utils/notifications.py | 259 + backend/validate_indexes.py | 90 + backend/validate_migration_results.py | 283 + backend/verify_custom_types.py | 38 + backend/verify_soft_deletion_schema.py | 90 + db.session.sql | 0 dev-setup.py | 112 + frontend/.env.example | 2 + frontend/assignment-popover-final-status.md | 109 + frontend/clear-auth-and-reload.html | 124 + frontend/clear-tokens.html | 175 + frontend/components.json | 21 + frontend/docs/asset-detail-panel-refactor.md | 178 + .../docs/avatar-display-implementation.md | 150 + .../docs/bulk-assignment-implementation.md | 170 + frontend/docs/bulk-status-custom-support.md | 302 + .../docs/bulk-status-update-implementation.md | 126 + frontend/docs/checkbox-selection-refactor.md | 143 + frontend/docs/context-menu-popover-fix.md | 175 + ...context-menu-selection-preservation-fix.md | 107 + .../docs/custom-task-columns-enhancement.md | 265 + frontend/docs/custom-task-delete-fix.md | 117 + ...ustom-task-status-delete-implementation.md | 234 + ...ustom-task-status-dialog-implementation.md | 283 + .../custom-task-status-integration-summary.md | 147 + ...stom-task-status-manager-implementation.md | 297 + ...stom-task-status-reorder-implementation.md | 265 + ...stom-task-status-service-implementation.md | 161 + .../docs/custom-task-types-implementation.md | 181 + ...efault-status-management-implementation.md | 195 + .../docs/episode-dropdown-simplification.md | 103 + .../docs/episode-management-in-settings.md | 138 + frontend/docs/fix-login-issue.md | 98 + frontend/docs/login-design.md | 130 + ...ermanent-delete-workflow-implementation.md | 286 + .../project-card-thumbnail-enhancement.md | 256 + .../docs/project-settings-implementation.md | 295 + frontend/docs/project-switcher.md | 156 + .../docs/project-thumbnail-implementation.md | 317 + frontend/docs/project-thumbnail-url-fix.md | 103 + frontend/docs/shift-click-selection-fix.md | 131 + .../docs/shot-browser-filter-alignment.md | 137 + frontend/docs/shot-column-visibility-fix.md | 104 + .../shot-delete-alert-components-update.md | 145 + frontend/docs/shot-delete-detail-panel-fix.md | 102 + .../shot-delete-event-bubbling-final-fix.md | 166 + .../docs/shot-delete-event-bubbling-fix.md | 125 + frontend/docs/shot-detail-403-fix.md | 151 + frontend/docs/shot-detail-panel-fix.md | 145 + .../shot-detail-panel-optimization-summary.md | 134 + .../docs/shot-detail-tabs-implementation.md | 210 + frontend/docs/shot-endpoint-fix.md | 60 + .../docs/shot-management-implementation.md | 258 + frontend/docs/shot-table-ajax-task-status.md | 329 + frontend/docs/shot-table-checkbox-fix.md | 136 + .../docs/shot-table-optimistic-update-fix.md | 175 + frontend/docs/shot-table-selection-fix.md | 67 + frontend/docs/shots-datatable-checkbox-fix.md | 93 + frontend/docs/sidebar-usage.md | 95 + ...nstack-table-row-selection-verification.md | 150 + frontend/docs/task-12.5-summary.md | 208 + frontend/docs/task-13.2-summary.md | 295 + .../task-15-test-implementation-summary.md | 155 + .../task-18-editable-status-custom-support.md | 97 + .../docs/task-18-implementation-summary.md | 244 + frontend/docs/task-19.3-implementation.md | 295 + frontend/docs/task-19.4-implementation.md | 137 + .../docs/task-20-implementation-summary.md | 234 + frontend/docs/task-attachment-preview-fix.md | 86 + .../task-browser-duplicate-selection-fix.md | 32 + .../task-bulk-status-popover-close-fix.md | 75 + .../docs/task-detail-panel-implementation.md | 322 + .../docs/task-detail-panel-tabs-refactor.md | 75 + frontend/docs/task-list-implementation.md | 152 + .../task-selection-behavior-test-guide.md | 178 + .../docs/task-status-badge-custom-colors.md | 117 + .../task-status-filter-custom-integration.md | 223 + frontend/docs/user-menu.md | 220 + frontend/final-verification.html | 169 + frontend/implementation-summary.html | 200 + frontend/index.html | 16 + frontend/package-lock.json | 7648 +++++++++++++++++ frontend/package.json | 40 + frontend/postcss.config.js | 6 + frontend/references/sidebar/AppSidebar.vue | 178 + frontend/references/sidebar/NavMain.vue | 68 + frontend/references/sidebar/NavProjects.vue | 86 + frontend/references/sidebar/NavUser.vue | 116 + frontend/references/sidebar/TeamSwitcher.vue | 90 + frontend/response-format-validation-report.md | 275 + frontend/src/App.vue | 67 + frontend/src/components/.gitkeep | 1 + .../src/components/activity/ActivityFeed.vue | 286 + .../activity/TaskActivityTimeline.vue | 209 + .../admin/PermanentDeleteConfirmDialog.vue | 339 + .../src/components/asset/AssetBrowser.vue | 801 ++ frontend/src/components/asset/AssetCard.vue | 262 + .../asset/AssetCreationConfirmDialog.vue | 122 + .../asset/AssetDeleteConfirmDialog.vue | 297 + .../src/components/asset/AssetDetailPanel.vue | 481 ++ frontend/src/components/asset/AssetForm.vue | 395 + frontend/src/components/asset/AssetNotes.vue | 66 + .../src/components/asset/AssetReferences.vue | 119 + .../components/asset/AssetTableToolbar.vue | 374 + .../src/components/asset/AssetsDataTable.vue | 280 + .../asset/ColumnVisibilityControl.vue | 256 + .../components/asset/EditableTaskStatus.vue | 198 + .../src/components/asset/TaskStatusBadge.vue | 50 + .../src/components/asset/TaskStatusFilter.vue | 175 + .../src/components/asset/TaskStatusToggle.vue | 28 + .../src/components/asset/ThumbnailToggle.vue | 28 + frontend/src/components/asset/columns.ts | 421 + frontend/src/components/auth/LoginForm.vue | 87 + frontend/src/components/auth/RegisterForm.vue | 148 + .../src/components/episode/EpisodeCard.vue | 156 + .../components/episode/EpisodeDropdown.vue | 177 + .../src/components/episode/EpisodeForm.vue | 134 + .../src/components/episode/EpisodeList.vue | 285 + .../components/examples/FileUploadExample.vue | 123 + frontend/src/components/layout/AppHeader.vue | 165 + frontend/src/components/layout/AppLayout.vue | 51 + frontend/src/components/layout/AppSidebar.vue | 185 + .../components/layout/NotificationCenter.vue | 265 + .../src/components/layout/ProjectSwitcher.vue | 232 + frontend/src/components/layout/UserMenu.vue | 223 + .../project/DepartmentSpecsPanel.vue | 196 + .../components/project/ProjectEditForm.vue | 285 + .../project/ProjectMemberManagement.vue | 428 + .../project/ProjectMembersManager.vue | 323 + .../src/components/project/ProjectTabs.vue | 178 + .../project/ProjectThumbnailUpload.vue | 311 + .../src/components/project/ShotsTable.vue | 281 + .../project/TechnicalSpecsDisplay.vue | 233 + .../components/project/TechnicalSpecsForm.vue | 490 ++ .../project/TechnicalSpecsManager.vue | 165 + .../project/TechnicalSpecsPanel.vue | 146 + .../project/TechnicalSpecsSummary.vue | 252 + .../settings/CustomTaskStatusDeleteDialog.vue | 223 + .../settings/CustomTaskStatusDialog.vue | 343 + .../settings/CustomTaskStatusManager.vue | 423 + .../settings/CustomTaskTypeManager.vue | 527 ++ .../settings/DefaultTaskTemplatesEditor.vue | 364 + .../settings/EpisodeManagementSection.vue | 426 + .../settings/GlobalSettingsPanel.vue | 323 + .../settings/GlobalUploadLimitEditor.vue | 135 + .../settings/NotificationPreferences.vue | 259 + .../settings/RecoveryManagementPanel.vue | 665 ++ .../settings/UploadLimitDisplay.vue | 33 + .../settings/UploadLocationConfig.vue | 116 + frontend/src/components/shot/BulkShotForm.vue | 338 + .../components/shot/EditableTaskStatus.vue | 377 + frontend/src/components/shot/ShotBrowser.vue | 915 ++ frontend/src/components/shot/ShotCard.vue | 180 + .../shot/ShotColumnVisibilityControl.vue | 165 + .../shot/ShotDeleteConfirmDialog.vue | 280 + .../src/components/shot/ShotDetailPanel.vue | 520 ++ frontend/src/components/shot/ShotForm.vue | 300 + .../src/components/shot/ShotTableToolbar.vue | 372 + .../components/shot/ShotTaskStatusFilter.vue | 204 + .../src/components/shot/ShotsDataTable.vue | 281 + .../src/components/shot/ShotsTableView.vue | 444 + frontend/src/components/shot/columns.ts | 404 + .../src/components/status/TaskStatusBadge.vue | 131 + .../src/components/task/AttachmentCard.vue | 160 + .../components/task/EditableTaskStatus.vue | 184 + frontend/src/components/task/NoteItem.vue | 202 + .../src/components/task/SubmissionCard.vue | 179 + .../src/components/task/TaskAttachments.vue | 269 + frontend/src/components/task/TaskBrowser.vue | 519 ++ .../components/task/TaskBulkActionsMenu.vue | 251 + .../src/components/task/TaskDetailPanel.vue | 538 ++ frontend/src/components/task/TaskList.vue | 614 ++ frontend/src/components/task/TaskNotes.vue | 101 + .../src/components/task/TaskStatusBadge.vue | 131 + .../src/components/task/TaskSubmissions.vue | 246 + .../src/components/task/TaskTableToolbar.vue | 480 ++ .../src/components/task/TasksDataTable.vue | 275 + frontend/src/components/task/columns.ts | 295 + .../ui/alert-dialog/AlertDialog.vue | 15 + .../ui/alert-dialog/AlertDialogAction.vue | 18 + .../ui/alert-dialog/AlertDialogCancel.vue | 25 + .../ui/alert-dialog/AlertDialogContent.vue | 39 + .../alert-dialog/AlertDialogDescription.vue | 23 + .../ui/alert-dialog/AlertDialogFooter.vue | 21 + .../ui/alert-dialog/AlertDialogHeader.vue | 16 + .../ui/alert-dialog/AlertDialogTitle.vue | 20 + .../ui/alert-dialog/AlertDialogTrigger.vue | 12 + .../src/components/ui/alert-dialog/index.ts | 9 + frontend/src/components/ui/alert/Alert.vue | 17 + .../components/ui/alert/AlertDescription.vue | 14 + .../src/components/ui/alert/AlertTitle.vue | 14 + frontend/src/components/ui/alert/index.ts | 24 + frontend/src/components/ui/avatar/Avatar.vue | 22 + .../components/ui/avatar/AvatarFallback.vue | 12 + .../src/components/ui/avatar/AvatarImage.vue | 12 + frontend/src/components/ui/avatar/index.ts | 25 + frontend/src/components/ui/badge/Badge.vue | 17 + frontend/src/components/ui/badge/index.ts | 26 + .../components/ui/breadcrumb/Breadcrumb.vue | 13 + .../ui/breadcrumb/BreadcrumbEllipsis.vue | 22 + .../ui/breadcrumb/BreadcrumbItem.vue | 16 + .../ui/breadcrumb/BreadcrumbLink.vue | 20 + .../ui/breadcrumb/BreadcrumbList.vue | 16 + .../ui/breadcrumb/BreadcrumbPage.vue | 19 + .../ui/breadcrumb/BreadcrumbSeparator.vue | 21 + .../src/components/ui/breadcrumb/index.ts | 7 + frontend/src/components/ui/button/Button.vue | 28 + frontend/src/components/ui/button/index.ts | 38 + .../src/components/ui/calendar/Calendar.vue | 58 + .../components/ui/calendar/CalendarCell.vue | 22 + .../ui/calendar/CalendarCellTrigger.vue | 36 + .../components/ui/calendar/CalendarGrid.vue | 22 + .../ui/calendar/CalendarGridBody.vue | 12 + .../ui/calendar/CalendarGridHead.vue | 13 + .../ui/calendar/CalendarGridRow.vue | 19 + .../ui/calendar/CalendarHeadCell.vue | 19 + .../components/ui/calendar/CalendarHeader.vue | 19 + .../ui/calendar/CalendarHeading.vue | 29 + .../ui/calendar/CalendarNextButton.vue | 30 + .../ui/calendar/CalendarPrevButton.vue | 30 + frontend/src/components/ui/calendar/index.ts | 12 + frontend/src/components/ui/card/Card.vue | 21 + .../src/components/ui/card/CardContent.vue | 14 + .../components/ui/card/CardDescription.vue | 14 + .../src/components/ui/card/CardFooter.vue | 14 + .../src/components/ui/card/CardHeader.vue | 14 + frontend/src/components/ui/card/CardTitle.vue | 18 + frontend/src/components/ui/card/index.ts | 6 + .../src/components/ui/checkbox/Checkbox.vue | 30 + frontend/src/components/ui/checkbox/index.ts | 1 + .../components/ui/collapsible/Collapsible.vue | 15 + .../ui/collapsible/CollapsibleContent.vue | 12 + .../ui/collapsible/CollapsibleTrigger.vue | 12 + .../src/components/ui/collapsible/index.ts | 3 + .../src/components/ui/command/Command.vue | 86 + .../components/ui/command/CommandDialog.vue | 21 + .../components/ui/command/CommandEmpty.vue | 23 + .../components/ui/command/CommandGroup.vue | 44 + .../components/ui/command/CommandInput.vue | 35 + .../src/components/ui/command/CommandItem.vue | 75 + .../src/components/ui/command/CommandList.vue | 21 + .../ui/command/CommandSeparator.vue | 20 + .../components/ui/command/CommandShortcut.vue | 14 + frontend/src/components/ui/command/index.ts | 25 + .../components/ui/date-picker/DatePicker.vue | 87 + .../src/components/ui/date-picker/index.ts | 1 + frontend/src/components/ui/dialog/Dialog.vue | 15 + .../src/components/ui/dialog/DialogClose.vue | 12 + .../components/ui/dialog/DialogContent.vue | 47 + .../ui/dialog/DialogDescription.vue | 22 + .../src/components/ui/dialog/DialogFooter.vue | 19 + .../src/components/ui/dialog/DialogHeader.vue | 16 + .../ui/dialog/DialogScrollContent.vue | 56 + .../src/components/ui/dialog/DialogTitle.vue | 27 + .../components/ui/dialog/DialogTrigger.vue | 12 + frontend/src/components/ui/dialog/index.ts | 9 + .../ui/dropdown-menu/DropdownMenu.vue | 15 + .../DropdownMenuCheckboxItem.vue | 37 + .../ui/dropdown-menu/DropdownMenuContent.vue | 35 + .../ui/dropdown-menu/DropdownMenuGroup.vue | 12 + .../ui/dropdown-menu/DropdownMenuItem.vue | 26 + .../ui/dropdown-menu/DropdownMenuLabel.vue | 22 + .../dropdown-menu/DropdownMenuRadioGroup.vue | 19 + .../dropdown-menu/DropdownMenuRadioItem.vue | 38 + .../dropdown-menu/DropdownMenuSeparator.vue | 20 + .../ui/dropdown-menu/DropdownMenuShortcut.vue | 14 + .../ui/dropdown-menu/DropdownMenuSub.vue | 19 + .../dropdown-menu/DropdownMenuSubContent.vue | 27 + .../dropdown-menu/DropdownMenuSubTrigger.vue | 31 + .../ui/dropdown-menu/DropdownMenuTrigger.vue | 14 + .../src/components/ui/dropdown-menu/index.ts | 16 + .../src/components/ui/empty/EmptyState.vue | 35 + .../src/components/ui/error/ErrorMessage.vue | 36 + frontend/src/components/ui/input/Input.vue | 24 + frontend/src/components/ui/input/index.ts | 1 + frontend/src/components/ui/label/Label.vue | 25 + frontend/src/components/ui/label/index.ts | 1 + .../components/ui/loading/LoadingSpinner.vue | 38 + .../src/components/ui/popover/Popover.vue | 15 + .../components/ui/popover/PopoverContent.vue | 45 + .../components/ui/popover/PopoverTrigger.vue | 12 + frontend/src/components/ui/popover/index.ts | 4 + .../src/components/ui/progress/Progress.vue | 31 + frontend/src/components/ui/progress/index.ts | 1 + .../components/ui/scroll-area/ScrollArea.vue | 27 + .../components/ui/scroll-area/ScrollBar.vue | 28 + .../src/components/ui/scroll-area/index.ts | 2 + frontend/src/components/ui/select/Select.vue | 15 + .../components/ui/select/SelectContent.vue | 50 + .../src/components/ui/select/SelectGroup.vue | 17 + .../src/components/ui/select/SelectItem.vue | 42 + .../components/ui/select/SelectItemText.vue | 12 + .../src/components/ui/select/SelectLabel.vue | 14 + .../ui/select/SelectScrollDownButton.vue | 22 + .../ui/select/SelectScrollUpButton.vue | 22 + .../components/ui/select/SelectSeparator.vue | 15 + .../components/ui/select/SelectTrigger.vue | 29 + .../src/components/ui/select/SelectValue.vue | 12 + frontend/src/components/ui/select/index.ts | 11 + .../src/components/ui/separator/Separator.vue | 29 + frontend/src/components/ui/separator/index.ts | 1 + frontend/src/components/ui/sheet/Sheet.vue | 15 + .../src/components/ui/sheet/SheetClose.vue | 12 + .../src/components/ui/sheet/SheetContent.vue | 54 + .../components/ui/sheet/SheetDescription.vue | 20 + .../src/components/ui/sheet/SheetFooter.vue | 19 + .../src/components/ui/sheet/SheetHeader.vue | 16 + .../src/components/ui/sheet/SheetTitle.vue | 20 + .../src/components/ui/sheet/SheetTrigger.vue | 12 + frontend/src/components/ui/sheet/index.ts | 32 + .../src/components/ui/sidebar/Sidebar.vue | 85 + .../components/ui/sidebar/SidebarContent.vue | 17 + .../components/ui/sidebar/SidebarFooter.vue | 17 + .../components/ui/sidebar/SidebarGroup.vue | 17 + .../ui/sidebar/SidebarGroupAction.vue | 26 + .../ui/sidebar/SidebarGroupContent.vue | 17 + .../ui/sidebar/SidebarGroupLabel.vue | 24 + .../components/ui/sidebar/SidebarHeader.vue | 17 + .../components/ui/sidebar/SidebarInput.vue | 21 + .../components/ui/sidebar/SidebarInset.vue | 20 + .../src/components/ui/sidebar/SidebarMenu.vue | 17 + .../ui/sidebar/SidebarMenuAction.vue | 34 + .../ui/sidebar/SidebarMenuBadge.vue | 25 + .../ui/sidebar/SidebarMenuButton.vue | 48 + .../ui/sidebar/SidebarMenuButtonChild.vue | 35 + .../components/ui/sidebar/SidebarMenuItem.vue | 17 + .../ui/sidebar/SidebarMenuSkeleton.vue | 34 + .../components/ui/sidebar/SidebarMenuSub.vue | 21 + .../ui/sidebar/SidebarMenuSubButton.vue | 35 + .../ui/sidebar/SidebarMenuSubItem.vue | 9 + .../components/ui/sidebar/SidebarProvider.vue | 81 + .../src/components/ui/sidebar/SidebarRail.vue | 32 + .../ui/sidebar/SidebarSeparator.vue | 18 + .../components/ui/sidebar/SidebarTrigger.vue | 26 + frontend/src/components/ui/sidebar/index.ts | 60 + frontend/src/components/ui/sidebar/utils.ts | 19 + .../src/components/ui/skeleton/Skeleton.vue | 14 + frontend/src/components/ui/skeleton/index.ts | 1 + frontend/src/components/ui/switch/Switch.vue | 36 + frontend/src/components/ui/switch/index.ts | 1 + frontend/src/components/ui/table/Table.vue | 16 + .../src/components/ui/table/TableBody.vue | 14 + .../src/components/ui/table/TableCaption.vue | 14 + .../src/components/ui/table/TableCell.vue | 21 + .../src/components/ui/table/TableEmpty.vue | 34 + .../src/components/ui/table/TableFooter.vue | 14 + .../src/components/ui/table/TableHead.vue | 14 + .../src/components/ui/table/TableHeader.vue | 14 + frontend/src/components/ui/table/TableRow.vue | 14 + frontend/src/components/ui/table/index.ts | 9 + frontend/src/components/ui/tabs/Tabs.vue | 15 + .../src/components/ui/tabs/TabsContent.vue | 20 + frontend/src/components/ui/tabs/TabsList.vue | 23 + .../src/components/ui/tabs/TabsTrigger.vue | 27 + frontend/src/components/ui/tabs/index.ts | 4 + .../src/components/ui/textarea/Textarea.vue | 21 + frontend/src/components/ui/textarea/index.ts | 1 + .../src/components/ui/theme/ThemeToggle.vue | 49 + frontend/src/components/ui/toast/Toast.vue | 26 + .../src/components/ui/toast/ToastAction.vue | 17 + .../src/components/ui/toast/ToastClose.vue | 20 + .../components/ui/toast/ToastDescription.vue | 17 + .../src/components/ui/toast/ToastProvider.vue | 12 + .../src/components/ui/toast/ToastTitle.vue | 17 + .../src/components/ui/toast/ToastViewport.vue | 15 + frontend/src/components/ui/toast/Toaster.vue | 30 + frontend/src/components/ui/toast/index.ts | 39 + frontend/src/components/ui/toast/use-toast.ts | 165 + .../src/components/ui/tooltip/Tooltip.vue | 15 + .../components/ui/tooltip/TooltipContent.vue | 29 + .../components/ui/tooltip/TooltipProvider.vue | 12 + .../components/ui/tooltip/TooltipTrigger.vue | 12 + frontend/src/components/ui/tooltip/index.ts | 4 + frontend/src/components/user/AvatarUpload.vue | 237 + .../components/user/PasswordChangeForm.vue | 340 + .../components/user/PasswordResetDialog.vue | 272 + .../components/user/PendingUsersDashboard.vue | 122 + .../src/components/user/UserApprovalCard.vue | 89 + .../src/components/user/UserCreateDialog.vue | 305 + .../user/UserDeleteConfirmDialog.vue | 172 + .../src/components/user/UserEditDialog.vue | 252 + .../components/user/UserManagementTable.vue | 389 + frontend/src/composables/useDetailPanel.ts | 185 + frontend/src/main.ts | 50 + frontend/src/router/index.ts | 238 + frontend/src/services/.gitkeep | 1 + frontend/src/services/activity.ts | 51 + frontend/src/services/api.ts | 78 + frontend/src/services/apiKey.ts | 75 + frontend/src/services/asset.ts | 292 + frontend/src/services/auth.ts | 39 + frontend/src/services/breadcrumb.ts | 116 + frontend/src/services/customTaskStatus.ts | 129 + frontend/src/services/customTaskType.ts | 54 + frontend/src/services/episode.ts | 61 + frontend/src/services/notification.ts | 51 + frontend/src/services/notifications.ts | 102 + frontend/src/services/project.ts | 198 + frontend/src/services/recovery.ts | 337 + frontend/src/services/settings.ts | 63 + frontend/src/services/shot.ts | 433 + frontend/src/services/task.ts | 276 + frontend/src/services/user.ts | 146 + frontend/src/stores/.gitkeep | 1 + frontend/src/stores/assets.ts | 381 + frontend/src/stores/auth.ts | 177 + frontend/src/stores/episodes.ts | 173 + frontend/src/stores/notifications.ts | 146 + frontend/src/stores/projects.ts | 246 + frontend/src/stores/settings.ts | 130 + frontend/src/stores/taskStatuses.ts | 179 + frontend/src/stores/tasks.ts | 284 + frontend/src/stores/theme.ts | 90 + frontend/src/stores/user.ts | 259 + frontend/src/style.css | 111 + frontend/src/types/.gitkeep | 1 + frontend/src/types/activity.ts | 38 + frontend/src/types/auth.ts | 41 + frontend/src/types/notification.ts | 71 + frontend/src/utils/fileValidation.ts | 125 + frontend/src/views/DashboardView.vue | 594 ++ frontend/src/views/EpisodesView.vue | 324 + frontend/src/views/GlobalSettingsView.vue | 18 + frontend/src/views/HomeView.vue | 25 + frontend/src/views/LoginView.vue | 23 + frontend/src/views/NotFoundView.vue | 16 + frontend/src/views/ProfileView.vue | 780 ++ frontend/src/views/ProjectDetailView.vue | 184 + frontend/src/views/ProjectSettingsView.vue | 417 + .../src/views/ProjectTechnicalSpecsView.vue | 97 + frontend/src/views/ProjectsView.vue | 802 ++ frontend/src/views/ReviewsView.vue | 23 + frontend/src/views/SettingsView.vue | 18 + frontend/src/views/TasksView.vue | 126 + frontend/src/views/UsersView.vue | 376 + .../admin/DeletedItemsManagementView.vue | 1280 +++ frontend/src/views/auth/LoginView.vue | 169 + frontend/src/views/auth/RegisterView.vue | 224 + frontend/src/views/developer/APIKeysView.vue | 25 + .../src/views/developer/AnalyticsView.vue | 23 + frontend/src/views/developer/ProjectsView.vue | 23 + frontend/src/views/developer/TasksView.vue | 23 + .../src/views/project/ProjectAssetsView.vue | 57 + .../src/views/project/ProjectOverviewView.vue | 201 + .../src/views/project/ProjectShotsView.vue | 70 + .../src/views/project/ProjectTasksView.vue | 52 + frontend/src/vue-shims.d.ts | 6 + frontend/tailwind.config.js | 107 + frontend/test-asset-browser.html | 190 + frontend/test-asset-bulk-operations.html | 100 + .../test-asset-detail-panel-optimization.html | 149 + ...test-asset-functionality-preservation.html | 208 + frontend/test-asset-selection.html | 190 + frontend/test-asset-toolbar-integration.html | 217 + frontend/test-assignment-functionality.html | 220 + frontend/test-assignment-popover-debug.html | 252 + frontend/test-assignment-popover-fix.html | 289 + .../test-assignment-popover-validation.html | 350 + frontend/test-bulk-actions-menu.html | 72 + frontend/test-bulk-assignment.html | 114 + .../test-bulk-operations-integration.html | 267 + ...st-bulk-permanent-delete-verification.html | 373 + frontend/test-bulk-status-custom.html | 265 + frontend/test-bulk-status-update.html | 214 + frontend/test-column-control.html | 191 + frontend/test-column-toggle-performance.js | 96 + frontend/test-column-visibility-updated.html | 241 + frontend/test-component-data-consumption.html | 573 ++ frontend/test-component-integration.html | 211 + frontend/test-context-menu-fix.html | 207 + frontend/test-context-menu.html | 241 + frontend/test-custom-asset-task-columns.html | 215 + frontend/test-custom-status-dialog.html | 327 + frontend/test-custom-status-optimization.html | 130 + frontend/test-custom-task-columns.html | 364 + frontend/test-custom-task-status-manager.html | 284 + frontend/test-custom-task-status-service.html | 362 + frontend/test-custom-task-types.html | 340 + frontend/test-default-asset-tasks.html | 385 + frontend/test-default-status-management.html | 287 + frontend/test-delete-custom-status.html | 84 + frontend/test-delete-custom-task.html | 240 + frontend/test-delete-dialog-fix.html | 54 + .../test-detail-panel-button-restore.html | 193 + frontend/test-detail-panel-consistency.html | 267 + frontend/test-drag-drop-reorder.html | 254 + frontend/test-editable-task-status-fix.html | 100 + frontend/test-episode-dropdown.html | 238 + .../test-episode-filter-duplication-fix.html | 119 + frontend/test-episode-sorting-fix.html | 219 + frontend/test-error-fix.html | 139 + frontend/test-frame-columns-fix.html | 283 + ...ermanent-delete-workflow-verification.html | 276 + frontend/test-permanent-delete-workflow.html | 322 + frontend/test-popover-debug-detailed.html | 469 + frontend/test-popover-final-fix.html | 320 + frontend/test-popover-fix-verification.html | 305 + frontend/test-popover-simple-fix.html | 242 + frontend/test-project-card-thumbnails.html | 244 + frontend/test-project-creation.html | 0 frontend/test-project-date-picker.html | 111 + frontend/test-project-settings-thumbnail.html | 192 + frontend/test-project-thumbnail.html | 360 + ...t-recovery-functionality-preservation.html | 636 ++ frontend/test-recovery-management-panel.html | 218 + .../test-recovery-management-terminology.html | 114 + frontend/test-response-format-validation.html | 715 ++ frontend/test-services-soft-deletion.html | 101 + frontend/test-set-default-status.html | 171 + frontend/test-shadcn-date-picker.html | 117 + frontend/test-shot-bulk-status-change.html | 225 + .../test-shot-bulk-status-consistency.html | 267 + ...t-shot-bulk-status-final-verification.html | 179 + .../test-shot-bulk-status-persistence.html | 297 + .../test-shot-column-visibility-debug.html | 258 + frontend/test-shot-column-visibility-fix.html | 216 + ...st-shot-column-visibility-unification.html | 186 + .../test-shot-delete-alert-components.html | 249 + frontend/test-shot-delete-debug.html | 421 + .../test-shot-delete-detail-panel-fix.html | 182 + .../test-shot-delete-dialog-status-fix.html | 150 + frontend/test-shot-delete-dialog.html | 97 + ...-shot-delete-event-bubbling-final-fix.html | 0 frontend/test-shot-delete-event-fix.html | 141 + ...test-shot-detail-panel-enable-disable.html | 189 + frontend/test-shot-detail-panel-fixes.html | 225 + .../test-shot-detail-panel-optimization.html | 256 + .../test-shot-detail-panel-persistence.html | 184 + frontend/test-shot-detail-tabs.html | 244 + frontend/test-shot-form-enhancements.html | 179 + .../test-shot-frames-column-addition.html | 201 + frontend/test-shot-full-width-layout.html | 213 + frontend/test-shot-header-checkbox-fix.html | 90 + frontend/test-shot-management.html | 265 + frontend/test-shot-page-layout-refactor.html | 195 + .../test-shot-page-refactor-verification.html | 120 + frontend/test-shot-selection-debug-live.html | 184 + frontend/test-shot-selection-debug.html | 241 + frontend/test-shot-selection-fix.html | 358 + frontend/test-shot-selection-toggle-fix.html | 250 + .../test-shot-table-detail-panel-toggle.html | 274 + ...est-shot-table-directional-sort-icons.html | 216 + frontend/test-shot-table-performance.html | 148 + frontend/test-shot-table-sort-fix.html | 178 + frontend/test-shot-table-sort-icons.html | 181 + frontend/test-shot-table-view.html | 363 + ...shot-task-columns-toggle-verification.html | 71 + frontend/test-shot-task-columns-toggle.html | 238 + .../test-shot-task-status-filter-final.html | 310 + ...test-shot-task-status-filter-redesign.html | 237 + frontend/test-shot-toolbar-alignment.html | 288 + .../test-shot-toolbar-consistent-height.html | 283 + frontend/test-shot-toolbar-sticky-header.html | 376 + frontend/test-shot-toolbar-task-columns.html | 305 + .../test-shot-toolbar-task-structure.html | 390 + frontend/test-simple-popover.html | 253 + frontend/test-soft-deletion-components.html | 191 + .../test-task-9-completion-verification.html | 363 + frontend/test-task-browser-optimization.html | 157 + frontend/test-task-browser-selection.html | 128 + frontend/test-task-detail-panel.html | 211 + frontend/test-task-list.html | 291 + frontend/test-task-management.html | 376 + frontend/test-task-selection-behavior.html | 501 ++ .../test-task-status-badge-custom-colors.html | 231 + frontend/test-task-status-filter-custom.html | 246 + frontend/test-task-status-integration.html | 86 + frontend/test-task-status.html | 316 + frontend/test-task-template-integration.html | 284 + frontend/test-tasks-store-optimization.html | 450 + frontend/test-thumbnail-debug.html | 84 + frontend/tsconfig.json | 34 + frontend/tsconfig.node.json | 10 + frontend/verify-assignment-popover.js | 164 + frontend/verify-bulk-operations.js | 104 + frontend/verify-shot-detail-optimization.js | 111 + frontend/verify-task-status.html | 252 + frontend/vite.config.ts | 27 + jsconfig.json | 6 + .../my-task-page-project-tasks/.openspec.yaml | 2 + openspec/config.yaml | 70 + verify-setup.py | 89 + vetur.config.js | 9 + 883 files changed, 156857 insertions(+) create mode 100644 .gitignore create mode 100644 .kilocode/skills/openspec-apply-change/SKILL.md create mode 100644 .kilocode/skills/openspec-archive-change/SKILL.md create mode 100644 .kilocode/skills/openspec-bulk-archive-change/SKILL.md create mode 100644 .kilocode/skills/openspec-continue-change/SKILL.md create mode 100644 .kilocode/skills/openspec-explore/SKILL.md create mode 100644 .kilocode/skills/openspec-ff-change/SKILL.md create mode 100644 .kilocode/skills/openspec-new-change/SKILL.md create mode 100644 .kilocode/skills/openspec-onboard/SKILL.md create mode 100644 .kilocode/skills/openspec-sync-specs/SKILL.md create mode 100644 .kilocode/skills/openspec-verify-change/SKILL.md create mode 100644 .kilocode/workflows/opsx-apply.md create mode 100644 .kilocode/workflows/opsx-archive.md create mode 100644 .kilocode/workflows/opsx-bulk-archive.md create mode 100644 .kilocode/workflows/opsx-continue.md create mode 100644 .kilocode/workflows/opsx-explore.md create mode 100644 .kilocode/workflows/opsx-ff.md create mode 100644 .kilocode/workflows/opsx-new.md create mode 100644 .kilocode/workflows/opsx-onboard.md create mode 100644 .kilocode/workflows/opsx-sync.md create mode 100644 .kilocode/workflows/opsx-verify.md create mode 100644 .kiro/specs/asset-browser-table-refactor/design.md create mode 100644 .kiro/specs/asset-browser-table-refactor/requirements.md create mode 100644 .kiro/specs/asset-browser-table-refactor/tasks.md create mode 100644 .kiro/specs/detail-panel-behavior-consistency/design.md create mode 100644 .kiro/specs/detail-panel-behavior-consistency/requirements.md create mode 100644 .kiro/specs/detail-panel-behavior-consistency/tasks.md create mode 100644 .kiro/specs/file-path-linux-fix/design.md create mode 100644 .kiro/specs/file-path-linux-fix/requirements.md create mode 100644 .kiro/specs/file-path-linux-fix/tasks.md create mode 100644 .kiro/specs/recovery-management-rename/design.md create mode 100644 .kiro/specs/recovery-management-rename/requirements.md create mode 100644 .kiro/specs/recovery-management-rename/tasks.md create mode 100644 .kiro/specs/shot-asset-task-status-optimization/design.md create mode 100644 .kiro/specs/shot-asset-task-status-optimization/requirements.md create mode 100644 .kiro/specs/shot-asset-task-status-optimization/tasks.md create mode 100644 .kiro/specs/shot-cascading-deletion/design.md create mode 100644 .kiro/specs/shot-cascading-deletion/requirements.md create mode 100644 .kiro/specs/shot-cascading-deletion/tasks.md create mode 100644 .kiro/specs/shot-project-id-enhancement/design.md create mode 100644 .kiro/specs/shot-project-id-enhancement/requirements.md create mode 100644 .kiro/specs/shot-project-id-enhancement/tasks.md create mode 100644 .kiro/specs/task-browser-bulk-actions/README.md create mode 100644 .kiro/specs/task-browser-bulk-actions/design.md create mode 100644 .kiro/specs/task-browser-bulk-actions/requirements.md create mode 100644 .kiro/specs/task-browser-bulk-actions/tasks.md create mode 100644 .kiro/specs/task-browser-refactor/design.md create mode 100644 .kiro/specs/task-browser-refactor/requirements.md create mode 100644 .kiro/specs/task-browser-refactor/tasks.md create mode 100644 .kiro/specs/ui-component-import-fixes/requirements.md create mode 100644 .kiro/specs/vfx-project-management/asset-detail-panel-spec.md create mode 100644 .kiro/specs/vfx-project-management/custom-task-status-design.md create mode 100644 .kiro/specs/vfx-project-management/custom-task-status-requirements.md create mode 100644 .kiro/specs/vfx-project-management/custom-task-status-tasks.md create mode 100644 .kiro/specs/vfx-project-management/design.md create mode 100644 .kiro/specs/vfx-project-management/notification-system-implementation.md create mode 100644 .kiro/specs/vfx-project-management/requirements.md create mode 100644 .kiro/specs/vfx-project-management/shot-data-table-implementation.md create mode 100644 .kiro/specs/vfx-project-management/shot-detail-panel-spec-update.md create mode 100644 .kiro/specs/vfx-project-management/shot-table-enhanced-spec.md create mode 100644 .kiro/specs/vfx-project-management/shot-table-summary.md create mode 100644 .kiro/specs/vfx-project-management/shot-table-view-spec.md create mode 100644 .kiro/specs/vfx-project-management/task-20-implementation-summary.md create mode 100644 .kiro/specs/vfx-project-management/tasks.md create mode 100644 .kiro/steering/product.md create mode 100644 .kiro/steering/structure.md create mode 100644 .kiro/steering/tech.md create mode 100644 README.md create mode 100644 backend/.env.example create mode 100644 backend/SCHEMA_UPDATE_SUMMARY.md create mode 100644 backend/analyze_database_indexes.py create mode 100644 backend/asset_router_optimization_summary.md create mode 100644 backend/check_admin_user.py create mode 100644 backend/check_current_user.py create mode 100644 backend/check_custom_types.py create mode 100644 backend/check_db_schema.py create mode 100644 backend/check_indexes.py create mode 100644 backend/check_statuses.py create mode 100644 backend/check_user_role.py create mode 100644 backend/create_admin.py create mode 100644 backend/create_example_data.py create mode 100644 backend/create_example_project.py create mode 100644 backend/create_fresh_database.py create mode 100644 backend/create_task_status_indexes.py create mode 100644 backend/database.py create mode 100644 backend/debug_episode_access.py create mode 100644 backend/debug_projects.py create mode 100644 backend/debug_shot_403.py create mode 100644 backend/debug_tasks_403.py create mode 100644 backend/docs/admin_api_key_management.md create mode 100644 backend/docs/bulk-actions-implementation.md create mode 100644 backend/docs/custom-task-status-create-endpoint.md create mode 100644 backend/docs/custom-task-status-delete-endpoint.md create mode 100644 backend/docs/custom-task-status-get-endpoint.md create mode 100644 backend/docs/custom-task-status-migration.md create mode 100644 backend/docs/custom-task-status-reorder-endpoint.md create mode 100644 backend/docs/custom-task-status-update-endpoint.md create mode 100644 backend/docs/data-consistency-implementation.md create mode 100644 backend/docs/default-asset-tasks-implementation.md create mode 100644 backend/docs/fastapi-trailing-slash-issue.md create mode 100644 backend/docs/file-path-migration-guide.md create mode 100644 backend/docs/file_handling.md create mode 100644 backend/docs/project-settings-implementation.md create mode 100644 backend/docs/project-thumbnail-implementation.md create mode 100644 backend/docs/shot-access-403-fix.md create mode 100644 backend/docs/shot-project-id-soft-deletion-update.md create mode 100644 backend/docs/shot-task-creation-endpoint.md create mode 100644 backend/docs/soft-deletion-commit-fix.md create mode 100644 backend/docs/task-18-schema-fix.md create mode 100644 backend/docs/task-5-implementation-summary.md create mode 100644 backend/docs/task-5-implementation-verification.md create mode 100644 backend/docs/task-5-requirements-checklist.md create mode 100644 backend/docs/task-8-custom-status-support-implementation.md create mode 100644 backend/docs/task-status-index-optimization.md create mode 100644 backend/fix_activity_metadata_column.py create mode 100644 backend/fix_project_enums.py create mode 100644 backend/fix_task_types_case.py create mode 100644 backend/main.py create mode 100644 backend/migrate_activities.py create mode 100644 backend/migrate_admin_users.py create mode 100644 backend/migrate_avatar_field.py create mode 100644 backend/migrate_custom_task_statuses.py create mode 100644 backend/migrate_custom_task_types.py create mode 100644 backend/migrate_file_paths_production.py create mode 100644 backend/migrate_file_paths_to_relative.py create mode 100644 backend/migrate_notifications.py create mode 100644 backend/migrate_project_fields.py create mode 100644 backend/migrate_project_settings.py create mode 100644 backend/migrate_project_technical_specs.py create mode 100644 backend/migrate_project_thumbnail.py create mode 100644 backend/migrate_shot_project_id.py create mode 100644 backend/migrate_soft_deletion_assets.py create mode 100644 backend/migrate_soft_deletion_complete.py create mode 100644 backend/migrate_soft_deletion_related_tables.py create mode 100644 backend/migrate_soft_deletion_shots.py create mode 100644 backend/migrate_soft_deletion_tasks.py create mode 100644 backend/models/__init__.py create mode 100644 backend/models/activity.py create mode 100644 backend/models/api_key.py create mode 100644 backend/models/api_key_usage.py create mode 100644 backend/models/asset.py create mode 100644 backend/models/episode.py create mode 100644 backend/models/global_settings.py create mode 100644 backend/models/notification.py create mode 100644 backend/models/project.py create mode 100644 backend/models/shot.py create mode 100644 backend/models/task.py create mode 100644 backend/models/user.py create mode 100644 backend/monitor_query_performance.py create mode 100644 backend/optimize_database_indexes.py create mode 100644 backend/recreate_database.py create mode 100644 backend/requirements.txt create mode 100644 backend/rollback_shot_project_id.py create mode 100644 backend/routers/__init__.py create mode 100644 backend/routers/activities.py create mode 100644 backend/routers/admin.py create mode 100644 backend/routers/assets.py create mode 100644 backend/routers/auth.py create mode 100644 backend/routers/data_consistency.py create mode 100644 backend/routers/developer.py create mode 100644 backend/routers/episodes.py create mode 100644 backend/routers/files.py create mode 100644 backend/routers/notifications.py create mode 100644 backend/routers/projects.py create mode 100644 backend/routers/reviews.py create mode 100644 backend/routers/settings.py create mode 100644 backend/routers/shots.py create mode 100644 backend/routers/tasks.py create mode 100644 backend/routers/users.py create mode 100644 backend/schemas/__init__.py create mode 100644 backend/schemas/activity.py create mode 100644 backend/schemas/api_key.py create mode 100644 backend/schemas/asset.py create mode 100644 backend/schemas/auth.py create mode 100644 backend/schemas/custom_task_status.py create mode 100644 backend/schemas/custom_task_type.py create mode 100644 backend/schemas/episode.py create mode 100644 backend/schemas/global_settings.py create mode 100644 backend/schemas/notification.py create mode 100644 backend/schemas/project.py create mode 100644 backend/schemas/shot.py create mode 100644 backend/schemas/task.py create mode 100644 backend/schemas/user.py create mode 100644 backend/services/__init__.py create mode 100644 backend/services/asset_soft_deletion.py create mode 100644 backend/services/batch_operations.py create mode 100644 backend/services/data_consistency.py create mode 100644 backend/services/recovery_service.py create mode 100644 backend/services/shot_soft_deletion.py create mode 100644 backend/shot_router_optimization_summary.md create mode 100644 backend/task_4_custom_status_support_verification.md create mode 100644 backend/test-project-form.html create mode 100644 backend/test.py create mode 100644 backend/test_admin_api_keys.py create mode 100644 backend/test_admin_api_project_id.py create mode 100644 backend/test_admin_shot_access.py create mode 100644 backend/test_api_connection.py create mode 100644 backend/test_api_performance_focused.py create mode 100644 backend/test_asset_api.py create mode 100644 backend/test_asset_custom_status.py create mode 100644 backend/test_asset_custom_status_final.py create mode 100644 backend/test_asset_endpoints.py create mode 100644 backend/test_asset_optimization.py create mode 100644 backend/test_asset_query_performance.py create mode 100644 backend/test_asset_requirements_validation.py create mode 100644 backend/test_asset_router_optimization.py create mode 100644 backend/test_asset_router_syntax.py create mode 100644 backend/test_asset_schema_compatibility.py create mode 100644 backend/test_asset_task_creation.py create mode 100644 backend/test_asset_task_update.py create mode 100644 backend/test_attachment_access.py create mode 100644 backend/test_backend_performance_validation.py create mode 100644 backend/test_batch_operations.py create mode 100644 backend/test_bulk_actions.py create mode 100644 backend/test_bulk_shot_creation.py create mode 100644 backend/test_bulk_shot_edge_cases.py create mode 100644 backend/test_bulk_shot_project_validation.py create mode 100644 backend/test_bulk_shot_requirements_validation.py create mode 100644 backend/test_can_delete_user.py create mode 100644 backend/test_complete_response_format_validation.py create mode 100644 backend/test_complete_task_status.py create mode 100644 backend/test_comprehensive_custom_status_verification.py create mode 100644 backend/test_create_custom_task_status.py create mode 100644 backend/test_custom_status_comprehensive.py create mode 100644 backend/test_custom_status_delete_integration.py create mode 100644 backend/test_custom_status_demo.py create mode 100644 backend/test_custom_status_manager.py create mode 100644 backend/test_custom_status_optimization.py create mode 100644 backend/test_custom_status_optimization_support.py create mode 100644 backend/test_custom_status_validation.py create mode 100644 backend/test_custom_task_integration.py create mode 100644 backend/test_custom_task_status_migration.py create mode 100644 backend/test_custom_task_status_schemas.py create mode 100644 backend/test_custom_task_types.py create mode 100644 backend/test_data_consistency.py create mode 100644 backend/test_data_consistency_api.py create mode 100644 backend/test_default_asset_tasks.py create mode 100644 backend/test_delete_custom_task.py create mode 100644 backend/test_delete_custom_task_status.py create mode 100644 backend/test_delete_fix.py create mode 100644 backend/test_delete_user.py create mode 100644 backend/test_diagnostic_performance.py create mode 100644 backend/test_direct_performance_validation.py create mode 100644 backend/test_dynamic_task_type_edge_cases.py create mode 100644 backend/test_dynamic_task_type_support.py create mode 100644 backend/test_final_performance_validation.py create mode 100644 backend/test_frontend_api.py create mode 100644 backend/test_global_settings.py create mode 100644 backend/test_index_performance.py create mode 100644 backend/test_index_scalability.py create mode 100644 backend/test_live_backend.py create mode 100644 backend/test_login.py create mode 100644 backend/test_migration_integrity.py create mode 100644 backend/test_multi_project_custom_status.py create mode 100644 backend/test_new_project_fields.py create mode 100644 backend/test_notifications.py create mode 100644 backend/test_performance_comparison.py create mode 100644 backend/test_project_id_preservation_simple.py create mode 100644 backend/test_project_id_soft_deletion.py create mode 100644 backend/test_project_settings.py create mode 100644 backend/test_project_settings_api.py create mode 100644 backend/test_project_thumbnail.py create mode 100644 backend/test_projects_direct.py create mode 100644 backend/test_recovery_api.py create mode 100644 backend/test_recovery_api_simple.py create mode 100644 backend/test_recovery_functionality_preservation.py create mode 100644 backend/test_recovery_structure_verification.py create mode 100644 backend/test_reorder_custom_task_status.py create mode 100644 backend/test_requirement_3_4_validation.py create mode 100644 backend/test_response_format.py create mode 100644 backend/test_response_format_simple.py create mode 100644 backend/test_response_format_validation.py create mode 100644 backend/test_shot_deletion_debug.py create mode 100644 backend/test_shot_deletion_fix.py create mode 100644 backend/test_shot_detail_403.py create mode 100644 backend/test_shot_operations_api.py create mode 100644 backend/test_shot_optimization.py create mode 100644 backend/test_shot_project_id_migration.py create mode 100644 backend/test_shot_router_optimization.py create mode 100644 backend/test_shot_task_creation.py create mode 100644 backend/test_shot_task_status.py create mode 100644 backend/test_shot_tasks_403.py create mode 100644 backend/test_shots_endpoint.py create mode 100644 backend/test_simple_performance.py create mode 100644 backend/test_soft_deletion_services.py create mode 100644 backend/test_task_custom_status_support.py create mode 100644 backend/test_task_status_update.py create mode 100644 backend/test_task_statuses.py create mode 100644 backend/test_task_statuses_access.py create mode 100644 backend/test_task_statuses_errors.py create mode 100644 backend/test_task_statuses_with_custom.py create mode 100644 backend/test_task_type_in_use.py create mode 100644 backend/test_thumbnail_endpoint.py create mode 100644 backend/test_update_custom_task_status.py create mode 100644 backend/test_update_status_manual.py create mode 100644 backend/test_user_edit.py create mode 100644 backend/test_user_edit_name.py create mode 100644 backend/utils/activity.py create mode 100644 backend/utils/auth.py create mode 100644 backend/utils/file_handler.py create mode 100644 backend/utils/notifications.py create mode 100644 backend/validate_indexes.py create mode 100644 backend/validate_migration_results.py create mode 100644 backend/verify_custom_types.py create mode 100644 backend/verify_soft_deletion_schema.py create mode 100644 db.session.sql create mode 100644 dev-setup.py create mode 100644 frontend/.env.example create mode 100644 frontend/assignment-popover-final-status.md create mode 100644 frontend/clear-auth-and-reload.html create mode 100644 frontend/clear-tokens.html create mode 100644 frontend/components.json create mode 100644 frontend/docs/asset-detail-panel-refactor.md create mode 100644 frontend/docs/avatar-display-implementation.md create mode 100644 frontend/docs/bulk-assignment-implementation.md create mode 100644 frontend/docs/bulk-status-custom-support.md create mode 100644 frontend/docs/bulk-status-update-implementation.md create mode 100644 frontend/docs/checkbox-selection-refactor.md create mode 100644 frontend/docs/context-menu-popover-fix.md create mode 100644 frontend/docs/context-menu-selection-preservation-fix.md create mode 100644 frontend/docs/custom-task-columns-enhancement.md create mode 100644 frontend/docs/custom-task-delete-fix.md create mode 100644 frontend/docs/custom-task-status-delete-implementation.md create mode 100644 frontend/docs/custom-task-status-dialog-implementation.md create mode 100644 frontend/docs/custom-task-status-integration-summary.md create mode 100644 frontend/docs/custom-task-status-manager-implementation.md create mode 100644 frontend/docs/custom-task-status-reorder-implementation.md create mode 100644 frontend/docs/custom-task-status-service-implementation.md create mode 100644 frontend/docs/custom-task-types-implementation.md create mode 100644 frontend/docs/default-status-management-implementation.md create mode 100644 frontend/docs/episode-dropdown-simplification.md create mode 100644 frontend/docs/episode-management-in-settings.md create mode 100644 frontend/docs/fix-login-issue.md create mode 100644 frontend/docs/login-design.md create mode 100644 frontend/docs/permanent-delete-workflow-implementation.md create mode 100644 frontend/docs/project-card-thumbnail-enhancement.md create mode 100644 frontend/docs/project-settings-implementation.md create mode 100644 frontend/docs/project-switcher.md create mode 100644 frontend/docs/project-thumbnail-implementation.md create mode 100644 frontend/docs/project-thumbnail-url-fix.md create mode 100644 frontend/docs/shift-click-selection-fix.md create mode 100644 frontend/docs/shot-browser-filter-alignment.md create mode 100644 frontend/docs/shot-column-visibility-fix.md create mode 100644 frontend/docs/shot-delete-alert-components-update.md create mode 100644 frontend/docs/shot-delete-detail-panel-fix.md create mode 100644 frontend/docs/shot-delete-event-bubbling-final-fix.md create mode 100644 frontend/docs/shot-delete-event-bubbling-fix.md create mode 100644 frontend/docs/shot-detail-403-fix.md create mode 100644 frontend/docs/shot-detail-panel-fix.md create mode 100644 frontend/docs/shot-detail-panel-optimization-summary.md create mode 100644 frontend/docs/shot-detail-tabs-implementation.md create mode 100644 frontend/docs/shot-endpoint-fix.md create mode 100644 frontend/docs/shot-management-implementation.md create mode 100644 frontend/docs/shot-table-ajax-task-status.md create mode 100644 frontend/docs/shot-table-checkbox-fix.md create mode 100644 frontend/docs/shot-table-optimistic-update-fix.md create mode 100644 frontend/docs/shot-table-selection-fix.md create mode 100644 frontend/docs/shots-datatable-checkbox-fix.md create mode 100644 frontend/docs/sidebar-usage.md create mode 100644 frontend/docs/tanstack-table-row-selection-verification.md create mode 100644 frontend/docs/task-12.5-summary.md create mode 100644 frontend/docs/task-13.2-summary.md create mode 100644 frontend/docs/task-15-test-implementation-summary.md create mode 100644 frontend/docs/task-18-editable-status-custom-support.md create mode 100644 frontend/docs/task-18-implementation-summary.md create mode 100644 frontend/docs/task-19.3-implementation.md create mode 100644 frontend/docs/task-19.4-implementation.md create mode 100644 frontend/docs/task-20-implementation-summary.md create mode 100644 frontend/docs/task-attachment-preview-fix.md create mode 100644 frontend/docs/task-browser-duplicate-selection-fix.md create mode 100644 frontend/docs/task-bulk-status-popover-close-fix.md create mode 100644 frontend/docs/task-detail-panel-implementation.md create mode 100644 frontend/docs/task-detail-panel-tabs-refactor.md create mode 100644 frontend/docs/task-list-implementation.md create mode 100644 frontend/docs/task-selection-behavior-test-guide.md create mode 100644 frontend/docs/task-status-badge-custom-colors.md create mode 100644 frontend/docs/task-status-filter-custom-integration.md create mode 100644 frontend/docs/user-menu.md create mode 100644 frontend/final-verification.html create mode 100644 frontend/implementation-summary.html create mode 100644 frontend/index.html create mode 100644 frontend/package-lock.json create mode 100644 frontend/package.json create mode 100644 frontend/postcss.config.js create mode 100644 frontend/references/sidebar/AppSidebar.vue create mode 100644 frontend/references/sidebar/NavMain.vue create mode 100644 frontend/references/sidebar/NavProjects.vue create mode 100644 frontend/references/sidebar/NavUser.vue create mode 100644 frontend/references/sidebar/TeamSwitcher.vue create mode 100644 frontend/response-format-validation-report.md create mode 100644 frontend/src/App.vue create mode 100644 frontend/src/components/.gitkeep create mode 100644 frontend/src/components/activity/ActivityFeed.vue create mode 100644 frontend/src/components/activity/TaskActivityTimeline.vue create mode 100644 frontend/src/components/admin/PermanentDeleteConfirmDialog.vue create mode 100644 frontend/src/components/asset/AssetBrowser.vue create mode 100644 frontend/src/components/asset/AssetCard.vue create mode 100644 frontend/src/components/asset/AssetCreationConfirmDialog.vue create mode 100644 frontend/src/components/asset/AssetDeleteConfirmDialog.vue create mode 100644 frontend/src/components/asset/AssetDetailPanel.vue create mode 100644 frontend/src/components/asset/AssetForm.vue create mode 100644 frontend/src/components/asset/AssetNotes.vue create mode 100644 frontend/src/components/asset/AssetReferences.vue create mode 100644 frontend/src/components/asset/AssetTableToolbar.vue create mode 100644 frontend/src/components/asset/AssetsDataTable.vue create mode 100644 frontend/src/components/asset/ColumnVisibilityControl.vue create mode 100644 frontend/src/components/asset/EditableTaskStatus.vue create mode 100644 frontend/src/components/asset/TaskStatusBadge.vue create mode 100644 frontend/src/components/asset/TaskStatusFilter.vue create mode 100644 frontend/src/components/asset/TaskStatusToggle.vue create mode 100644 frontend/src/components/asset/ThumbnailToggle.vue create mode 100644 frontend/src/components/asset/columns.ts create mode 100644 frontend/src/components/auth/LoginForm.vue create mode 100644 frontend/src/components/auth/RegisterForm.vue create mode 100644 frontend/src/components/episode/EpisodeCard.vue create mode 100644 frontend/src/components/episode/EpisodeDropdown.vue create mode 100644 frontend/src/components/episode/EpisodeForm.vue create mode 100644 frontend/src/components/episode/EpisodeList.vue create mode 100644 frontend/src/components/examples/FileUploadExample.vue create mode 100644 frontend/src/components/layout/AppHeader.vue create mode 100644 frontend/src/components/layout/AppLayout.vue create mode 100644 frontend/src/components/layout/AppSidebar.vue create mode 100644 frontend/src/components/layout/NotificationCenter.vue create mode 100644 frontend/src/components/layout/ProjectSwitcher.vue create mode 100644 frontend/src/components/layout/UserMenu.vue create mode 100644 frontend/src/components/project/DepartmentSpecsPanel.vue create mode 100644 frontend/src/components/project/ProjectEditForm.vue create mode 100644 frontend/src/components/project/ProjectMemberManagement.vue create mode 100644 frontend/src/components/project/ProjectMembersManager.vue create mode 100644 frontend/src/components/project/ProjectTabs.vue create mode 100644 frontend/src/components/project/ProjectThumbnailUpload.vue create mode 100644 frontend/src/components/project/ShotsTable.vue create mode 100644 frontend/src/components/project/TechnicalSpecsDisplay.vue create mode 100644 frontend/src/components/project/TechnicalSpecsForm.vue create mode 100644 frontend/src/components/project/TechnicalSpecsManager.vue create mode 100644 frontend/src/components/project/TechnicalSpecsPanel.vue create mode 100644 frontend/src/components/project/TechnicalSpecsSummary.vue create mode 100644 frontend/src/components/settings/CustomTaskStatusDeleteDialog.vue create mode 100644 frontend/src/components/settings/CustomTaskStatusDialog.vue create mode 100644 frontend/src/components/settings/CustomTaskStatusManager.vue create mode 100644 frontend/src/components/settings/CustomTaskTypeManager.vue create mode 100644 frontend/src/components/settings/DefaultTaskTemplatesEditor.vue create mode 100644 frontend/src/components/settings/EpisodeManagementSection.vue create mode 100644 frontend/src/components/settings/GlobalSettingsPanel.vue create mode 100644 frontend/src/components/settings/GlobalUploadLimitEditor.vue create mode 100644 frontend/src/components/settings/NotificationPreferences.vue create mode 100644 frontend/src/components/settings/RecoveryManagementPanel.vue create mode 100644 frontend/src/components/settings/UploadLimitDisplay.vue create mode 100644 frontend/src/components/settings/UploadLocationConfig.vue create mode 100644 frontend/src/components/shot/BulkShotForm.vue create mode 100644 frontend/src/components/shot/EditableTaskStatus.vue create mode 100644 frontend/src/components/shot/ShotBrowser.vue create mode 100644 frontend/src/components/shot/ShotCard.vue create mode 100644 frontend/src/components/shot/ShotColumnVisibilityControl.vue create mode 100644 frontend/src/components/shot/ShotDeleteConfirmDialog.vue create mode 100644 frontend/src/components/shot/ShotDetailPanel.vue create mode 100644 frontend/src/components/shot/ShotForm.vue create mode 100644 frontend/src/components/shot/ShotTableToolbar.vue create mode 100644 frontend/src/components/shot/ShotTaskStatusFilter.vue create mode 100644 frontend/src/components/shot/ShotsDataTable.vue create mode 100644 frontend/src/components/shot/ShotsTableView.vue create mode 100644 frontend/src/components/shot/columns.ts create mode 100644 frontend/src/components/status/TaskStatusBadge.vue create mode 100644 frontend/src/components/task/AttachmentCard.vue create mode 100644 frontend/src/components/task/EditableTaskStatus.vue create mode 100644 frontend/src/components/task/NoteItem.vue create mode 100644 frontend/src/components/task/SubmissionCard.vue create mode 100644 frontend/src/components/task/TaskAttachments.vue create mode 100644 frontend/src/components/task/TaskBrowser.vue create mode 100644 frontend/src/components/task/TaskBulkActionsMenu.vue create mode 100644 frontend/src/components/task/TaskDetailPanel.vue create mode 100644 frontend/src/components/task/TaskList.vue create mode 100644 frontend/src/components/task/TaskNotes.vue create mode 100644 frontend/src/components/task/TaskStatusBadge.vue create mode 100644 frontend/src/components/task/TaskSubmissions.vue create mode 100644 frontend/src/components/task/TaskTableToolbar.vue create mode 100644 frontend/src/components/task/TasksDataTable.vue create mode 100644 frontend/src/components/task/columns.ts create mode 100644 frontend/src/components/ui/alert-dialog/AlertDialog.vue create mode 100644 frontend/src/components/ui/alert-dialog/AlertDialogAction.vue create mode 100644 frontend/src/components/ui/alert-dialog/AlertDialogCancel.vue create mode 100644 frontend/src/components/ui/alert-dialog/AlertDialogContent.vue create mode 100644 frontend/src/components/ui/alert-dialog/AlertDialogDescription.vue create mode 100644 frontend/src/components/ui/alert-dialog/AlertDialogFooter.vue create mode 100644 frontend/src/components/ui/alert-dialog/AlertDialogHeader.vue create mode 100644 frontend/src/components/ui/alert-dialog/AlertDialogTitle.vue create mode 100644 frontend/src/components/ui/alert-dialog/AlertDialogTrigger.vue create mode 100644 frontend/src/components/ui/alert-dialog/index.ts create mode 100644 frontend/src/components/ui/alert/Alert.vue create mode 100644 frontend/src/components/ui/alert/AlertDescription.vue create mode 100644 frontend/src/components/ui/alert/AlertTitle.vue create mode 100644 frontend/src/components/ui/alert/index.ts create mode 100644 frontend/src/components/ui/avatar/Avatar.vue create mode 100644 frontend/src/components/ui/avatar/AvatarFallback.vue create mode 100644 frontend/src/components/ui/avatar/AvatarImage.vue create mode 100644 frontend/src/components/ui/avatar/index.ts create mode 100644 frontend/src/components/ui/badge/Badge.vue create mode 100644 frontend/src/components/ui/badge/index.ts create mode 100644 frontend/src/components/ui/breadcrumb/Breadcrumb.vue create mode 100644 frontend/src/components/ui/breadcrumb/BreadcrumbEllipsis.vue create mode 100644 frontend/src/components/ui/breadcrumb/BreadcrumbItem.vue create mode 100644 frontend/src/components/ui/breadcrumb/BreadcrumbLink.vue create mode 100644 frontend/src/components/ui/breadcrumb/BreadcrumbList.vue create mode 100644 frontend/src/components/ui/breadcrumb/BreadcrumbPage.vue create mode 100644 frontend/src/components/ui/breadcrumb/BreadcrumbSeparator.vue create mode 100644 frontend/src/components/ui/breadcrumb/index.ts create mode 100644 frontend/src/components/ui/button/Button.vue create mode 100644 frontend/src/components/ui/button/index.ts create mode 100644 frontend/src/components/ui/calendar/Calendar.vue create mode 100644 frontend/src/components/ui/calendar/CalendarCell.vue create mode 100644 frontend/src/components/ui/calendar/CalendarCellTrigger.vue create mode 100644 frontend/src/components/ui/calendar/CalendarGrid.vue create mode 100644 frontend/src/components/ui/calendar/CalendarGridBody.vue create mode 100644 frontend/src/components/ui/calendar/CalendarGridHead.vue create mode 100644 frontend/src/components/ui/calendar/CalendarGridRow.vue create mode 100644 frontend/src/components/ui/calendar/CalendarHeadCell.vue create mode 100644 frontend/src/components/ui/calendar/CalendarHeader.vue create mode 100644 frontend/src/components/ui/calendar/CalendarHeading.vue create mode 100644 frontend/src/components/ui/calendar/CalendarNextButton.vue create mode 100644 frontend/src/components/ui/calendar/CalendarPrevButton.vue create mode 100644 frontend/src/components/ui/calendar/index.ts create mode 100644 frontend/src/components/ui/card/Card.vue create mode 100644 frontend/src/components/ui/card/CardContent.vue create mode 100644 frontend/src/components/ui/card/CardDescription.vue create mode 100644 frontend/src/components/ui/card/CardFooter.vue create mode 100644 frontend/src/components/ui/card/CardHeader.vue create mode 100644 frontend/src/components/ui/card/CardTitle.vue create mode 100644 frontend/src/components/ui/card/index.ts create mode 100644 frontend/src/components/ui/checkbox/Checkbox.vue create mode 100644 frontend/src/components/ui/checkbox/index.ts create mode 100644 frontend/src/components/ui/collapsible/Collapsible.vue create mode 100644 frontend/src/components/ui/collapsible/CollapsibleContent.vue create mode 100644 frontend/src/components/ui/collapsible/CollapsibleTrigger.vue create mode 100644 frontend/src/components/ui/collapsible/index.ts create mode 100644 frontend/src/components/ui/command/Command.vue create mode 100644 frontend/src/components/ui/command/CommandDialog.vue create mode 100644 frontend/src/components/ui/command/CommandEmpty.vue create mode 100644 frontend/src/components/ui/command/CommandGroup.vue create mode 100644 frontend/src/components/ui/command/CommandInput.vue create mode 100644 frontend/src/components/ui/command/CommandItem.vue create mode 100644 frontend/src/components/ui/command/CommandList.vue create mode 100644 frontend/src/components/ui/command/CommandSeparator.vue create mode 100644 frontend/src/components/ui/command/CommandShortcut.vue create mode 100644 frontend/src/components/ui/command/index.ts create mode 100644 frontend/src/components/ui/date-picker/DatePicker.vue create mode 100644 frontend/src/components/ui/date-picker/index.ts create mode 100644 frontend/src/components/ui/dialog/Dialog.vue create mode 100644 frontend/src/components/ui/dialog/DialogClose.vue create mode 100644 frontend/src/components/ui/dialog/DialogContent.vue create mode 100644 frontend/src/components/ui/dialog/DialogDescription.vue create mode 100644 frontend/src/components/ui/dialog/DialogFooter.vue create mode 100644 frontend/src/components/ui/dialog/DialogHeader.vue create mode 100644 frontend/src/components/ui/dialog/DialogScrollContent.vue create mode 100644 frontend/src/components/ui/dialog/DialogTitle.vue create mode 100644 frontend/src/components/ui/dialog/DialogTrigger.vue create mode 100644 frontend/src/components/ui/dialog/index.ts create mode 100644 frontend/src/components/ui/dropdown-menu/DropdownMenu.vue create mode 100644 frontend/src/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue create mode 100644 frontend/src/components/ui/dropdown-menu/DropdownMenuContent.vue create mode 100644 frontend/src/components/ui/dropdown-menu/DropdownMenuGroup.vue create mode 100644 frontend/src/components/ui/dropdown-menu/DropdownMenuItem.vue create mode 100644 frontend/src/components/ui/dropdown-menu/DropdownMenuLabel.vue create mode 100644 frontend/src/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue create mode 100644 frontend/src/components/ui/dropdown-menu/DropdownMenuRadioItem.vue create mode 100644 frontend/src/components/ui/dropdown-menu/DropdownMenuSeparator.vue create mode 100644 frontend/src/components/ui/dropdown-menu/DropdownMenuShortcut.vue create mode 100644 frontend/src/components/ui/dropdown-menu/DropdownMenuSub.vue create mode 100644 frontend/src/components/ui/dropdown-menu/DropdownMenuSubContent.vue create mode 100644 frontend/src/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue create mode 100644 frontend/src/components/ui/dropdown-menu/DropdownMenuTrigger.vue create mode 100644 frontend/src/components/ui/dropdown-menu/index.ts create mode 100644 frontend/src/components/ui/empty/EmptyState.vue create mode 100644 frontend/src/components/ui/error/ErrorMessage.vue create mode 100644 frontend/src/components/ui/input/Input.vue create mode 100644 frontend/src/components/ui/input/index.ts create mode 100644 frontend/src/components/ui/label/Label.vue create mode 100644 frontend/src/components/ui/label/index.ts create mode 100644 frontend/src/components/ui/loading/LoadingSpinner.vue create mode 100644 frontend/src/components/ui/popover/Popover.vue create mode 100644 frontend/src/components/ui/popover/PopoverContent.vue create mode 100644 frontend/src/components/ui/popover/PopoverTrigger.vue create mode 100644 frontend/src/components/ui/popover/index.ts create mode 100644 frontend/src/components/ui/progress/Progress.vue create mode 100644 frontend/src/components/ui/progress/index.ts create mode 100644 frontend/src/components/ui/scroll-area/ScrollArea.vue create mode 100644 frontend/src/components/ui/scroll-area/ScrollBar.vue create mode 100644 frontend/src/components/ui/scroll-area/index.ts create mode 100644 frontend/src/components/ui/select/Select.vue create mode 100644 frontend/src/components/ui/select/SelectContent.vue create mode 100644 frontend/src/components/ui/select/SelectGroup.vue create mode 100644 frontend/src/components/ui/select/SelectItem.vue create mode 100644 frontend/src/components/ui/select/SelectItemText.vue create mode 100644 frontend/src/components/ui/select/SelectLabel.vue create mode 100644 frontend/src/components/ui/select/SelectScrollDownButton.vue create mode 100644 frontend/src/components/ui/select/SelectScrollUpButton.vue create mode 100644 frontend/src/components/ui/select/SelectSeparator.vue create mode 100644 frontend/src/components/ui/select/SelectTrigger.vue create mode 100644 frontend/src/components/ui/select/SelectValue.vue create mode 100644 frontend/src/components/ui/select/index.ts create mode 100644 frontend/src/components/ui/separator/Separator.vue create mode 100644 frontend/src/components/ui/separator/index.ts create mode 100644 frontend/src/components/ui/sheet/Sheet.vue create mode 100644 frontend/src/components/ui/sheet/SheetClose.vue create mode 100644 frontend/src/components/ui/sheet/SheetContent.vue create mode 100644 frontend/src/components/ui/sheet/SheetDescription.vue create mode 100644 frontend/src/components/ui/sheet/SheetFooter.vue create mode 100644 frontend/src/components/ui/sheet/SheetHeader.vue create mode 100644 frontend/src/components/ui/sheet/SheetTitle.vue create mode 100644 frontend/src/components/ui/sheet/SheetTrigger.vue create mode 100644 frontend/src/components/ui/sheet/index.ts create mode 100644 frontend/src/components/ui/sidebar/Sidebar.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarContent.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarFooter.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarGroup.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarGroupAction.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarGroupContent.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarGroupLabel.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarHeader.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarInput.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarInset.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarMenu.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarMenuAction.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarMenuBadge.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarMenuButton.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarMenuButtonChild.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarMenuItem.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarMenuSkeleton.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarMenuSub.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarMenuSubButton.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarMenuSubItem.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarProvider.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarRail.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarSeparator.vue create mode 100644 frontend/src/components/ui/sidebar/SidebarTrigger.vue create mode 100644 frontend/src/components/ui/sidebar/index.ts create mode 100644 frontend/src/components/ui/sidebar/utils.ts create mode 100644 frontend/src/components/ui/skeleton/Skeleton.vue create mode 100644 frontend/src/components/ui/skeleton/index.ts create mode 100644 frontend/src/components/ui/switch/Switch.vue create mode 100644 frontend/src/components/ui/switch/index.ts create mode 100644 frontend/src/components/ui/table/Table.vue create mode 100644 frontend/src/components/ui/table/TableBody.vue create mode 100644 frontend/src/components/ui/table/TableCaption.vue create mode 100644 frontend/src/components/ui/table/TableCell.vue create mode 100644 frontend/src/components/ui/table/TableEmpty.vue create mode 100644 frontend/src/components/ui/table/TableFooter.vue create mode 100644 frontend/src/components/ui/table/TableHead.vue create mode 100644 frontend/src/components/ui/table/TableHeader.vue create mode 100644 frontend/src/components/ui/table/TableRow.vue create mode 100644 frontend/src/components/ui/table/index.ts create mode 100644 frontend/src/components/ui/tabs/Tabs.vue create mode 100644 frontend/src/components/ui/tabs/TabsContent.vue create mode 100644 frontend/src/components/ui/tabs/TabsList.vue create mode 100644 frontend/src/components/ui/tabs/TabsTrigger.vue create mode 100644 frontend/src/components/ui/tabs/index.ts create mode 100644 frontend/src/components/ui/textarea/Textarea.vue create mode 100644 frontend/src/components/ui/textarea/index.ts create mode 100644 frontend/src/components/ui/theme/ThemeToggle.vue create mode 100644 frontend/src/components/ui/toast/Toast.vue create mode 100644 frontend/src/components/ui/toast/ToastAction.vue create mode 100644 frontend/src/components/ui/toast/ToastClose.vue create mode 100644 frontend/src/components/ui/toast/ToastDescription.vue create mode 100644 frontend/src/components/ui/toast/ToastProvider.vue create mode 100644 frontend/src/components/ui/toast/ToastTitle.vue create mode 100644 frontend/src/components/ui/toast/ToastViewport.vue create mode 100644 frontend/src/components/ui/toast/Toaster.vue create mode 100644 frontend/src/components/ui/toast/index.ts create mode 100644 frontend/src/components/ui/toast/use-toast.ts create mode 100644 frontend/src/components/ui/tooltip/Tooltip.vue create mode 100644 frontend/src/components/ui/tooltip/TooltipContent.vue create mode 100644 frontend/src/components/ui/tooltip/TooltipProvider.vue create mode 100644 frontend/src/components/ui/tooltip/TooltipTrigger.vue create mode 100644 frontend/src/components/ui/tooltip/index.ts create mode 100644 frontend/src/components/user/AvatarUpload.vue create mode 100644 frontend/src/components/user/PasswordChangeForm.vue create mode 100644 frontend/src/components/user/PasswordResetDialog.vue create mode 100644 frontend/src/components/user/PendingUsersDashboard.vue create mode 100644 frontend/src/components/user/UserApprovalCard.vue create mode 100644 frontend/src/components/user/UserCreateDialog.vue create mode 100644 frontend/src/components/user/UserDeleteConfirmDialog.vue create mode 100644 frontend/src/components/user/UserEditDialog.vue create mode 100644 frontend/src/components/user/UserManagementTable.vue create mode 100644 frontend/src/composables/useDetailPanel.ts create mode 100644 frontend/src/main.ts create mode 100644 frontend/src/router/index.ts create mode 100644 frontend/src/services/.gitkeep create mode 100644 frontend/src/services/activity.ts create mode 100644 frontend/src/services/api.ts create mode 100644 frontend/src/services/apiKey.ts create mode 100644 frontend/src/services/asset.ts create mode 100644 frontend/src/services/auth.ts create mode 100644 frontend/src/services/breadcrumb.ts create mode 100644 frontend/src/services/customTaskStatus.ts create mode 100644 frontend/src/services/customTaskType.ts create mode 100644 frontend/src/services/episode.ts create mode 100644 frontend/src/services/notification.ts create mode 100644 frontend/src/services/notifications.ts create mode 100644 frontend/src/services/project.ts create mode 100644 frontend/src/services/recovery.ts create mode 100644 frontend/src/services/settings.ts create mode 100644 frontend/src/services/shot.ts create mode 100644 frontend/src/services/task.ts create mode 100644 frontend/src/services/user.ts create mode 100644 frontend/src/stores/.gitkeep create mode 100644 frontend/src/stores/assets.ts create mode 100644 frontend/src/stores/auth.ts create mode 100644 frontend/src/stores/episodes.ts create mode 100644 frontend/src/stores/notifications.ts create mode 100644 frontend/src/stores/projects.ts create mode 100644 frontend/src/stores/settings.ts create mode 100644 frontend/src/stores/taskStatuses.ts create mode 100644 frontend/src/stores/tasks.ts create mode 100644 frontend/src/stores/theme.ts create mode 100644 frontend/src/stores/user.ts create mode 100644 frontend/src/style.css create mode 100644 frontend/src/types/.gitkeep create mode 100644 frontend/src/types/activity.ts create mode 100644 frontend/src/types/auth.ts create mode 100644 frontend/src/types/notification.ts create mode 100644 frontend/src/utils/fileValidation.ts create mode 100644 frontend/src/views/DashboardView.vue create mode 100644 frontend/src/views/EpisodesView.vue create mode 100644 frontend/src/views/GlobalSettingsView.vue create mode 100644 frontend/src/views/HomeView.vue create mode 100644 frontend/src/views/LoginView.vue create mode 100644 frontend/src/views/NotFoundView.vue create mode 100644 frontend/src/views/ProfileView.vue create mode 100644 frontend/src/views/ProjectDetailView.vue create mode 100644 frontend/src/views/ProjectSettingsView.vue create mode 100644 frontend/src/views/ProjectTechnicalSpecsView.vue create mode 100644 frontend/src/views/ProjectsView.vue create mode 100644 frontend/src/views/ReviewsView.vue create mode 100644 frontend/src/views/SettingsView.vue create mode 100644 frontend/src/views/TasksView.vue create mode 100644 frontend/src/views/UsersView.vue create mode 100644 frontend/src/views/admin/DeletedItemsManagementView.vue create mode 100644 frontend/src/views/auth/LoginView.vue create mode 100644 frontend/src/views/auth/RegisterView.vue create mode 100644 frontend/src/views/developer/APIKeysView.vue create mode 100644 frontend/src/views/developer/AnalyticsView.vue create mode 100644 frontend/src/views/developer/ProjectsView.vue create mode 100644 frontend/src/views/developer/TasksView.vue create mode 100644 frontend/src/views/project/ProjectAssetsView.vue create mode 100644 frontend/src/views/project/ProjectOverviewView.vue create mode 100644 frontend/src/views/project/ProjectShotsView.vue create mode 100644 frontend/src/views/project/ProjectTasksView.vue create mode 100644 frontend/src/vue-shims.d.ts create mode 100644 frontend/tailwind.config.js create mode 100644 frontend/test-asset-browser.html create mode 100644 frontend/test-asset-bulk-operations.html create mode 100644 frontend/test-asset-detail-panel-optimization.html create mode 100644 frontend/test-asset-functionality-preservation.html create mode 100644 frontend/test-asset-selection.html create mode 100644 frontend/test-asset-toolbar-integration.html create mode 100644 frontend/test-assignment-functionality.html create mode 100644 frontend/test-assignment-popover-debug.html create mode 100644 frontend/test-assignment-popover-fix.html create mode 100644 frontend/test-assignment-popover-validation.html create mode 100644 frontend/test-bulk-actions-menu.html create mode 100644 frontend/test-bulk-assignment.html create mode 100644 frontend/test-bulk-operations-integration.html create mode 100644 frontend/test-bulk-permanent-delete-verification.html create mode 100644 frontend/test-bulk-status-custom.html create mode 100644 frontend/test-bulk-status-update.html create mode 100644 frontend/test-column-control.html create mode 100644 frontend/test-column-toggle-performance.js create mode 100644 frontend/test-column-visibility-updated.html create mode 100644 frontend/test-component-data-consumption.html create mode 100644 frontend/test-component-integration.html create mode 100644 frontend/test-context-menu-fix.html create mode 100644 frontend/test-context-menu.html create mode 100644 frontend/test-custom-asset-task-columns.html create mode 100644 frontend/test-custom-status-dialog.html create mode 100644 frontend/test-custom-status-optimization.html create mode 100644 frontend/test-custom-task-columns.html create mode 100644 frontend/test-custom-task-status-manager.html create mode 100644 frontend/test-custom-task-status-service.html create mode 100644 frontend/test-custom-task-types.html create mode 100644 frontend/test-default-asset-tasks.html create mode 100644 frontend/test-default-status-management.html create mode 100644 frontend/test-delete-custom-status.html create mode 100644 frontend/test-delete-custom-task.html create mode 100644 frontend/test-delete-dialog-fix.html create mode 100644 frontend/test-detail-panel-button-restore.html create mode 100644 frontend/test-detail-panel-consistency.html create mode 100644 frontend/test-drag-drop-reorder.html create mode 100644 frontend/test-editable-task-status-fix.html create mode 100644 frontend/test-episode-dropdown.html create mode 100644 frontend/test-episode-filter-duplication-fix.html create mode 100644 frontend/test-episode-sorting-fix.html create mode 100644 frontend/test-error-fix.html create mode 100644 frontend/test-frame-columns-fix.html create mode 100644 frontend/test-permanent-delete-workflow-verification.html create mode 100644 frontend/test-permanent-delete-workflow.html create mode 100644 frontend/test-popover-debug-detailed.html create mode 100644 frontend/test-popover-final-fix.html create mode 100644 frontend/test-popover-fix-verification.html create mode 100644 frontend/test-popover-simple-fix.html create mode 100644 frontend/test-project-card-thumbnails.html create mode 100644 frontend/test-project-creation.html create mode 100644 frontend/test-project-date-picker.html create mode 100644 frontend/test-project-settings-thumbnail.html create mode 100644 frontend/test-project-thumbnail.html create mode 100644 frontend/test-recovery-functionality-preservation.html create mode 100644 frontend/test-recovery-management-panel.html create mode 100644 frontend/test-recovery-management-terminology.html create mode 100644 frontend/test-response-format-validation.html create mode 100644 frontend/test-services-soft-deletion.html create mode 100644 frontend/test-set-default-status.html create mode 100644 frontend/test-shadcn-date-picker.html create mode 100644 frontend/test-shot-bulk-status-change.html create mode 100644 frontend/test-shot-bulk-status-consistency.html create mode 100644 frontend/test-shot-bulk-status-final-verification.html create mode 100644 frontend/test-shot-bulk-status-persistence.html create mode 100644 frontend/test-shot-column-visibility-debug.html create mode 100644 frontend/test-shot-column-visibility-fix.html create mode 100644 frontend/test-shot-column-visibility-unification.html create mode 100644 frontend/test-shot-delete-alert-components.html create mode 100644 frontend/test-shot-delete-debug.html create mode 100644 frontend/test-shot-delete-detail-panel-fix.html create mode 100644 frontend/test-shot-delete-dialog-status-fix.html create mode 100644 frontend/test-shot-delete-dialog.html create mode 100644 frontend/test-shot-delete-event-bubbling-final-fix.html create mode 100644 frontend/test-shot-delete-event-fix.html create mode 100644 frontend/test-shot-detail-panel-enable-disable.html create mode 100644 frontend/test-shot-detail-panel-fixes.html create mode 100644 frontend/test-shot-detail-panel-optimization.html create mode 100644 frontend/test-shot-detail-panel-persistence.html create mode 100644 frontend/test-shot-detail-tabs.html create mode 100644 frontend/test-shot-form-enhancements.html create mode 100644 frontend/test-shot-frames-column-addition.html create mode 100644 frontend/test-shot-full-width-layout.html create mode 100644 frontend/test-shot-header-checkbox-fix.html create mode 100644 frontend/test-shot-management.html create mode 100644 frontend/test-shot-page-layout-refactor.html create mode 100644 frontend/test-shot-page-refactor-verification.html create mode 100644 frontend/test-shot-selection-debug-live.html create mode 100644 frontend/test-shot-selection-debug.html create mode 100644 frontend/test-shot-selection-fix.html create mode 100644 frontend/test-shot-selection-toggle-fix.html create mode 100644 frontend/test-shot-table-detail-panel-toggle.html create mode 100644 frontend/test-shot-table-directional-sort-icons.html create mode 100644 frontend/test-shot-table-performance.html create mode 100644 frontend/test-shot-table-sort-fix.html create mode 100644 frontend/test-shot-table-sort-icons.html create mode 100644 frontend/test-shot-table-view.html create mode 100644 frontend/test-shot-task-columns-toggle-verification.html create mode 100644 frontend/test-shot-task-columns-toggle.html create mode 100644 frontend/test-shot-task-status-filter-final.html create mode 100644 frontend/test-shot-task-status-filter-redesign.html create mode 100644 frontend/test-shot-toolbar-alignment.html create mode 100644 frontend/test-shot-toolbar-consistent-height.html create mode 100644 frontend/test-shot-toolbar-sticky-header.html create mode 100644 frontend/test-shot-toolbar-task-columns.html create mode 100644 frontend/test-shot-toolbar-task-structure.html create mode 100644 frontend/test-simple-popover.html create mode 100644 frontend/test-soft-deletion-components.html create mode 100644 frontend/test-task-9-completion-verification.html create mode 100644 frontend/test-task-browser-optimization.html create mode 100644 frontend/test-task-browser-selection.html create mode 100644 frontend/test-task-detail-panel.html create mode 100644 frontend/test-task-list.html create mode 100644 frontend/test-task-management.html create mode 100644 frontend/test-task-selection-behavior.html create mode 100644 frontend/test-task-status-badge-custom-colors.html create mode 100644 frontend/test-task-status-filter-custom.html create mode 100644 frontend/test-task-status-integration.html create mode 100644 frontend/test-task-status.html create mode 100644 frontend/test-task-template-integration.html create mode 100644 frontend/test-tasks-store-optimization.html create mode 100644 frontend/test-thumbnail-debug.html create mode 100644 frontend/tsconfig.json create mode 100644 frontend/tsconfig.node.json create mode 100644 frontend/verify-assignment-popover.js create mode 100644 frontend/verify-bulk-operations.js create mode 100644 frontend/verify-shot-detail-optimization.js create mode 100644 frontend/verify-task-status.html create mode 100644 frontend/vite.config.ts create mode 100644 jsconfig.json create mode 100644 openspec/changes/my-task-page-project-tasks/.openspec.yaml create mode 100644 openspec/config.yaml create mode 100644 verify-setup.py create mode 100644 vetur.config.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3bb128e --- /dev/null +++ b/.gitignore @@ -0,0 +1,89 @@ +# Python +__pycache__/ +*.py[cod] +*$py.class +*.so +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# Virtual environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Database +*.db +*.sqlite +*.sqlite3 + +# Node.js +node_modules/ +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# Build outputs +dist/ +build/ + +# Environment variables +.env +.env.local +.env.development.local +.env.test.local +.env.production.local + +# IDE +.vscode/ +.idea/ +*.swp +*.swo +*~ + +# OS +.DS_Store +.DS_Store? +._* +.Spotlight-V100 +.Trashes +ehthumbs.db +Thumbs.db + +# Uploads +uploads/ +media/ + +# Logs +*.log +logs/ + +# Coverage +coverage/ +.nyc_output/ +.coverage +htmlcov/ + +# Temporary files +*.tmp +*.temp +sync_config.jsonc \ No newline at end of file diff --git a/.kilocode/skills/openspec-apply-change/SKILL.md b/.kilocode/skills/openspec-apply-change/SKILL.md new file mode 100644 index 0000000..47d4bc2 --- /dev/null +++ b/.kilocode/skills/openspec-apply-change/SKILL.md @@ -0,0 +1,156 @@ +--- +name: openspec-apply-change +description: Implement tasks from an OpenSpec change. Use when the user wants to start implementing, continue implementation, or work through tasks. +license: MIT +compatibility: Requires openspec CLI. +metadata: + author: openspec + version: "1.0" + generatedBy: "1.1.1" +--- + +Implement tasks from an OpenSpec change. + +**Input**: Optionally specify a change name. If omitted, check if it can be inferred from conversation context. If vague or ambiguous you MUST prompt for available changes. + +**Steps** + +1. **Select the change** + + If a name is provided, use it. Otherwise: + - Infer from conversation context if the user mentioned a change + - Auto-select if only one active change exists + - If ambiguous, run `openspec list --json` to get available changes and use the **AskUserQuestion tool** to let the user select + + Always announce: "Using change: " and how to override (e.g., `/opsx:apply `). + +2. **Check status to understand the schema** + ```bash + openspec status --change "" --json + ``` + Parse the JSON to understand: + - `schemaName`: The workflow being used (e.g., "spec-driven") + - Which artifact contains the tasks (typically "tasks" for spec-driven, check status for others) + +3. **Get apply instructions** + + ```bash + openspec instructions apply --change "" --json + ``` + + This returns: + - Context file paths (varies by schema - could be proposal/specs/design/tasks or spec/tests/implementation/docs) + - Progress (total, complete, remaining) + - Task list with status + - Dynamic instruction based on current state + + **Handle states:** + - If `state: "blocked"` (missing artifacts): show message, suggest using openspec-continue-change + - If `state: "all_done"`: congratulate, suggest archive + - Otherwise: proceed to implementation + +4. **Read context files** + + Read the files listed in `contextFiles` from the apply instructions output. + The files depend on the schema being used: + - **spec-driven**: proposal, specs, design, tasks + - Other schemas: follow the contextFiles from CLI output + +5. **Show current progress** + + Display: + - Schema being used + - Progress: "N/M tasks complete" + - Remaining tasks overview + - Dynamic instruction from CLI + +6. **Implement tasks (loop until done or blocked)** + + For each pending task: + - Show which task is being worked on + - Make the code changes required + - Keep changes minimal and focused + - Mark task complete in the tasks file: `- [ ]` โ†’ `- [x]` + - Continue to next task + + **Pause if:** + - Task is unclear โ†’ ask for clarification + - Implementation reveals a design issue โ†’ suggest updating artifacts + - Error or blocker encountered โ†’ report and wait for guidance + - User interrupts + +7. **On completion or pause, show status** + + Display: + - Tasks completed this session + - Overall progress: "N/M tasks complete" + - If all done: suggest archive + - If paused: explain why and wait for guidance + +**Output During Implementation** + +``` +## Implementing: (schema: ) + +Working on task 3/7: +[...implementation happening...] +โœ“ Task complete + +Working on task 4/7: +[...implementation happening...] +โœ“ Task complete +``` + +**Output On Completion** + +``` +## Implementation Complete + +**Change:** +**Schema:** +**Progress:** 7/7 tasks complete โœ“ + +### Completed This Session +- [x] Task 1 +- [x] Task 2 +... + +All tasks complete! Ready to archive this change. +``` + +**Output On Pause (Issue Encountered)** + +``` +## Implementation Paused + +**Change:** +**Schema:** +**Progress:** 4/7 tasks complete + +### Issue Encountered + + +**Options:** +1.