@taskforcehq/taskforce 0.3.311 → 0.3.313

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (454) hide show
  1. package/README.md +40 -2
  2. package/dist/TaskforceCore.js +1 -1
  3. package/dist/components/features/InitiativesModule.js +1 -1
  4. package/dist/components/features/TaskSettings.js +1 -1
  5. package/dist/components/views/StandaloneLayout.js +3 -6
  6. package/dist/components/views/standalone/modals/AccountHubModal.d.ts +1 -2
  7. package/dist/components/views/standalone/modals/AccountHubModal.js +2 -3
  8. package/dist/components/views/standalone/modals/HelpModal.js +15 -2
  9. package/dist/hooks/useFilterSort.js +1 -1
  10. package/dist/hooks/useTaskforce.js +2 -2
  11. package/dist/hooks/workspace/useTaskforceWorkspaceBootstrap.js +5 -2
  12. package/dist/ui/assets/{AgentsModule-D8u9P5dZ.js → AgentsModule-BULqIo8e.js} +1 -1
  13. package/dist/ui/assets/{AnnotatedAttachmentWorkspace-CsUauFA2.js → AnnotatedAttachmentWorkspace-DHr4rHK9.js} +1 -1
  14. package/dist/ui/assets/{ContextAttachmentManager-DbQvDHFz.js → ContextAttachmentManager-DoMe2OpY.js} +1 -1
  15. package/dist/ui/assets/{DocumentWorkspace-BmTkN1A8.js → DocumentWorkspace-DumBWhvb.js} +1 -1
  16. package/dist/ui/assets/{EntityActivityTimeline-BXHTM-Nh.js → EntityActivityTimeline-sHk8Nzbq.js} +1 -1
  17. package/dist/ui/assets/{InitiativesModule-D33RyXx0.js → InitiativesModule-3X9UNzHh.js} +1 -1
  18. package/dist/ui/assets/{PlansPage-D0RXlT9_.js → PlansPage-C3A3EYaV.js} +1 -1
  19. package/dist/ui/assets/{TaskContextUpload-Vsg67lpR.js → TaskContextUpload-C8G7pWkX.js} +1 -1
  20. package/dist/ui/assets/{TaskSettings-DshLw7_d.js → TaskSettings-DM1o9Wla.js} +2 -2
  21. package/dist/ui/assets/{WorkflowsModule-CLM-1BnF.js → WorkflowsModule-CW0crzvD.js} +1 -1
  22. package/dist/ui/assets/documentReferences-BZB3nMRb.js +1 -0
  23. package/dist/ui/assets/index-BWFQ9mGn.js +5 -0
  24. package/dist/ui/assets/{index-DOR9PRqt.css → index-DcK_8tuE.css} +1 -1
  25. package/dist/ui/index.html +2 -2
  26. package/package.json +12 -4
  27. package/scripts/postinstall.js +4 -3
  28. package/dist/TaskforceCore.CategoryFallback.test.d.ts +0 -1
  29. package/dist/TaskforceCore.CategoryFallback.test.js +0 -101
  30. package/dist/TaskforceCore.filter-persistence.test.d.ts +0 -1
  31. package/dist/TaskforceCore.filter-persistence.test.js +0 -402
  32. package/dist/TaskforceCore.routing.test.d.ts +0 -1
  33. package/dist/TaskforceCore.routing.test.js +0 -311
  34. package/dist/TaskforceCore.test.d.ts +0 -1
  35. package/dist/TaskforceCore.test.js +0 -7910
  36. package/dist/TaskforceWidget.test.d.ts +0 -1
  37. package/dist/TaskforceWidget.test.js +0 -92
  38. package/dist/UnsavedChangesRelaxed.test.d.ts +0 -1
  39. package/dist/UnsavedChangesRelaxed.test.js +0 -16
  40. package/dist/__tests__/localizationCatalogs.test.d.ts +0 -1
  41. package/dist/__tests__/localizationCatalogs.test.js +0 -54
  42. package/dist/__tests__/workflowSimulation.test.d.ts +0 -1
  43. package/dist/__tests__/workflowSimulation.test.js +0 -113
  44. package/dist/annotatedAttachments/AnnotatedAttachmentSessionStore.test.d.ts +0 -1
  45. package/dist/annotatedAttachments/AnnotatedAttachmentSessionStore.test.js +0 -278
  46. package/dist/annotatedAttachments/payload.test.d.ts +0 -1
  47. package/dist/annotatedAttachments/payload.test.js +0 -67
  48. package/dist/compat/workspaceSyncCompat.test.d.ts +0 -1
  49. package/dist/compat/workspaceSyncCompat.test.js +0 -124
  50. package/dist/components/features/AgentsModule.test.d.ts +0 -1
  51. package/dist/components/features/AgentsModule.test.js +0 -601
  52. package/dist/components/features/AnnotatedAttachmentWorkspace.test.d.ts +0 -1
  53. package/dist/components/features/AnnotatedAttachmentWorkspace.test.js +0 -2883
  54. package/dist/components/features/DocumentWorkspace.test.d.ts +0 -1
  55. package/dist/components/features/DocumentWorkspace.test.js +0 -1439
  56. package/dist/components/features/TaskSettings.test.d.ts +0 -1
  57. package/dist/components/features/TaskSettings.test.js +0 -1674
  58. package/dist/components/features/settings/TaxonomyLibraryManager.test.d.ts +0 -1
  59. package/dist/components/features/settings/TaxonomyLibraryManager.test.js +0 -141
  60. package/dist/components/task/TaskActionHeader.test.d.ts +0 -1
  61. package/dist/components/task/TaskActionHeader.test.js +0 -91
  62. package/dist/components/task/TaskCard.test.d.ts +0 -1
  63. package/dist/components/task/TaskCard.test.js +0 -513
  64. package/dist/components/task/TaskContextUpload.test.d.ts +0 -1
  65. package/dist/components/task/TaskContextUpload.test.js +0 -506
  66. package/dist/components/task/TaskForm.test.d.ts +0 -1
  67. package/dist/components/task/TaskForm.test.js +0 -946
  68. package/dist/components/task/TaskKanban.empty-column-drop.test.d.ts +0 -1
  69. package/dist/components/task/TaskKanban.empty-column-drop.test.js +0 -66
  70. package/dist/components/task/TaskKanban.planning-drop.test.d.ts +0 -1
  71. package/dist/components/task/TaskKanban.planning-drop.test.js +0 -93
  72. package/dist/components/task/TaskKanban.test.d.ts +0 -1
  73. package/dist/components/task/TaskKanban.test.js +0 -99
  74. package/dist/components/task/TaskList.test.d.ts +0 -1
  75. package/dist/components/task/TaskList.test.js +0 -473
  76. package/dist/components/task/TaskStatusActions.test.d.ts +0 -1
  77. package/dist/components/task/TaskStatusActions.test.js +0 -54
  78. package/dist/components/task/taskKanbanDropRules.test.d.ts +0 -1
  79. package/dist/components/task/taskKanbanDropRules.test.js +0 -114
  80. package/dist/components/ui/LevelSelector.test.d.ts +0 -1
  81. package/dist/components/ui/LevelSelector.test.js +0 -55
  82. package/dist/components/ui/Markdown.test.d.ts +0 -1
  83. package/dist/components/ui/Markdown.test.js +0 -38
  84. package/dist/components/ui/MultiSelectFilter.test.d.ts +0 -1
  85. package/dist/components/ui/MultiSelectFilter.test.js +0 -74
  86. package/dist/components/ui/TaxonomyDropdown.test.d.ts +0 -1
  87. package/dist/components/ui/TaxonomyDropdown.test.js +0 -130
  88. package/dist/components/ui/TopNoticeLayer.test.d.ts +0 -1
  89. package/dist/components/ui/TopNoticeLayer.test.js +0 -25
  90. package/dist/components/views/AppShellHeader.test.d.ts +0 -1
  91. package/dist/components/views/AppShellHeader.test.js +0 -42
  92. package/dist/components/views/PlanComparisonPage.test.d.ts +0 -1
  93. package/dist/components/views/PlanComparisonPage.test.js +0 -758
  94. package/dist/components/views/PlansPage.test.d.ts +0 -1
  95. package/dist/components/views/PlansPage.test.js +0 -710
  96. package/dist/components/views/chrome/WorkspaceChromeSections.test.d.ts +0 -1
  97. package/dist/components/views/chrome/WorkspaceChromeSections.test.js +0 -54
  98. package/dist/components/views/chrome/workspaceChrome.test.d.ts +0 -1
  99. package/dist/components/views/chrome/workspaceChrome.test.js +0 -52
  100. package/dist/components/views/panels/DocumentFilterToolbar.test.d.ts +0 -1
  101. package/dist/components/views/panels/DocumentFilterToolbar.test.js +0 -19
  102. package/dist/components/views/panels/FilterToolbar.test.d.ts +0 -1
  103. package/dist/components/views/panels/FilterToolbar.test.js +0 -47
  104. package/dist/components/views/panels/PlanningDrawer.test.d.ts +0 -1
  105. package/dist/components/views/panels/PlanningDrawer.test.js +0 -529
  106. package/dist/components/views/planningScope.test.d.ts +0 -1
  107. package/dist/components/views/planningScope.test.js +0 -60
  108. package/dist/components/views/standalone/modals/AccountHubModal.test.d.ts +0 -1
  109. package/dist/components/views/standalone/modals/AccountHubModal.test.js +0 -72
  110. package/dist/components/views/standalone/modals/HelpModal.test.d.ts +0 -1
  111. package/dist/components/views/standalone/modals/HelpModal.test.js +0 -23
  112. package/dist/components/views/standalone/modals/SyncEnableWarningModal.test.d.ts +0 -1
  113. package/dist/components/views/standalone/modals/SyncEnableWarningModal.test.js +0 -24
  114. package/dist/components/views/teamManagementAccess.test.d.ts +0 -1
  115. package/dist/components/views/teamManagementAccess.test.js +0 -44
  116. package/dist/config/deployment.test.d.ts +0 -1
  117. package/dist/config/deployment.test.js +0 -90
  118. package/dist/config/envSchema.test.d.ts +0 -1
  119. package/dist/config/envSchema.test.js +0 -125
  120. package/dist/core/AiProfileService.test.d.ts +0 -1
  121. package/dist/core/AiProfileService.test.js +0 -184
  122. package/dist/core/AiProfiles.test.d.ts +0 -1
  123. package/dist/core/AiProfiles.test.js +0 -1873
  124. package/dist/core/AuthTokenService.test.d.ts +0 -1
  125. package/dist/core/AuthTokenService.test.js +0 -78
  126. package/dist/core/BulkUpdateFieldsPreview.test.d.ts +0 -1
  127. package/dist/core/BulkUpdateFieldsPreview.test.js +0 -62
  128. package/dist/core/CompletedAt.test.d.ts +0 -1
  129. package/dist/core/CompletedAt.test.js +0 -44
  130. package/dist/core/CreatedBy.test.d.ts +0 -1
  131. package/dist/core/CreatedBy.test.js +0 -188
  132. package/dist/core/DeletedTaskTrash.test.d.ts +0 -1
  133. package/dist/core/DeletedTaskTrash.test.js +0 -104
  134. package/dist/core/EntitlementsPolicy.test.d.ts +0 -1
  135. package/dist/core/EntitlementsPolicy.test.js +0 -280
  136. package/dist/core/GlobalSettingsService.test.d.ts +0 -1
  137. package/dist/core/GlobalSettingsService.test.js +0 -45
  138. package/dist/core/JsonBackupRuntime.test.d.ts +0 -1
  139. package/dist/core/JsonBackupRuntime.test.js +0 -155
  140. package/dist/core/PlanFeatureCatalog.test.d.ts +0 -1
  141. package/dist/core/PlanFeatureCatalog.test.js +0 -139
  142. package/dist/core/PlanVersionPolicy.test.d.ts +0 -1
  143. package/dist/core/PlanVersionPolicy.test.js +0 -236
  144. package/dist/core/PlanningEntities.test.d.ts +0 -1
  145. package/dist/core/PlanningEntities.test.js +0 -509
  146. package/dist/core/ScheduleFields.test.d.ts +0 -1
  147. package/dist/core/ScheduleFields.test.js +0 -193
  148. package/dist/core/SetupState.test.d.ts +0 -1
  149. package/dist/core/SetupState.test.js +0 -113
  150. package/dist/core/SignupMonetizationSettings.test.d.ts +0 -1
  151. package/dist/core/SignupMonetizationSettings.test.js +0 -515
  152. package/dist/core/Stats.test.d.ts +0 -1
  153. package/dist/core/Stats.test.js +0 -36
  154. package/dist/core/SystemAdmin.test.d.ts +0 -1
  155. package/dist/core/SystemAdmin.test.js +0 -1106
  156. package/dist/core/TaskActivitySync.test.d.ts +0 -1
  157. package/dist/core/TaskActivitySync.test.js +0 -90
  158. package/dist/core/TaskAttachmentsCanonical.test.d.ts +0 -1
  159. package/dist/core/TaskAttachmentsCanonical.test.js +0 -356
  160. package/dist/core/TaskAuditTimeline.test.d.ts +0 -1
  161. package/dist/core/TaskAuditTimeline.test.js +0 -319
  162. package/dist/core/TaskTaxonomyValidation.test.d.ts +0 -1
  163. package/dist/core/TaskTaxonomyValidation.test.js +0 -440
  164. package/dist/core/Taskforce.ids.test.d.ts +0 -1
  165. package/dist/core/Taskforce.ids.test.js +0 -611
  166. package/dist/core/Taskforce.listTasksSlim.test.d.ts +0 -1
  167. package/dist/core/Taskforce.listTasksSlim.test.js +0 -91
  168. package/dist/core/Taskforce.mcpAuth.test.d.ts +0 -1
  169. package/dist/core/Taskforce.mcpAuth.test.js +0 -450
  170. package/dist/core/Taskforce.realtimeMutation.test.d.ts +0 -1
  171. package/dist/core/Taskforce.realtimeMutation.test.js +0 -131
  172. package/dist/core/UserProfileAvatarDrafts.test.d.ts +0 -1
  173. package/dist/core/UserProfileAvatarDrafts.test.js +0 -138
  174. package/dist/core/WorkspaceDelete.test.d.ts +0 -1
  175. package/dist/core/WorkspaceDelete.test.js +0 -159
  176. package/dist/core/WorkspacePermissions.test.d.ts +0 -1
  177. package/dist/core/WorkspacePermissions.test.js +0 -270
  178. package/dist/core/WorkspacePlanMode.test.d.ts +0 -1
  179. package/dist/core/WorkspacePlanMode.test.js +0 -383
  180. package/dist/core/WorkspaceSyncSettings.test.d.ts +0 -1
  181. package/dist/core/WorkspaceSyncSettings.test.js +0 -65
  182. package/dist/core/__tests__/TaskAttachmentsCanonical.test.d.ts +0 -1
  183. package/dist/core/__tests__/TaskAttachmentsCanonical.test.js +0 -212
  184. package/dist/documentReviews/DocumentReviewSessionStore.test.d.ts +0 -1
  185. package/dist/documentReviews/DocumentReviewSessionStore.test.js +0 -127
  186. package/dist/hooks/authGuardPolicy.test.d.ts +0 -1
  187. package/dist/hooks/authGuardPolicy.test.js +0 -76
  188. package/dist/hooks/bootstrapTimeouts.test.d.ts +0 -1
  189. package/dist/hooks/bootstrapTimeouts.test.js +0 -12
  190. package/dist/hooks/sync/controlPlane.test.d.ts +0 -1
  191. package/dist/hooks/sync/controlPlane.test.js +0 -121
  192. package/dist/hooks/sync/lifecyclePolicy.test.d.ts +0 -1
  193. package/dist/hooks/sync/lifecyclePolicy.test.js +0 -124
  194. package/dist/hooks/sync/orchestratorShared.test.d.ts +0 -1
  195. package/dist/hooks/sync/orchestratorShared.test.js +0 -98
  196. package/dist/hooks/sync/pullLifecycle.test.d.ts +0 -1
  197. package/dist/hooks/sync/pullLifecycle.test.js +0 -80
  198. package/dist/hooks/sync/recovery.test.d.ts +0 -1
  199. package/dist/hooks/sync/recovery.test.js +0 -292
  200. package/dist/hooks/sync/transfers.test.d.ts +0 -1
  201. package/dist/hooks/sync/transfers.test.js +0 -928
  202. package/dist/hooks/sync/useRecentSyncEvents.test.d.ts +0 -1
  203. package/dist/hooks/sync/useRecentSyncEvents.test.js +0 -124
  204. package/dist/hooks/sync/useSyncStatusActions.test.d.ts +0 -1
  205. package/dist/hooks/sync/useSyncStatusActions.test.js +0 -133
  206. package/dist/hooks/sync/useSyncStatusControls.test.d.ts +0 -1
  207. package/dist/hooks/sync/useSyncStatusControls.test.js +0 -88
  208. package/dist/hooks/useFilterSort.test.d.ts +0 -1
  209. package/dist/hooks/useFilterSort.test.js +0 -419
  210. package/dist/hooks/useRealtimeSync.test.d.ts +0 -1
  211. package/dist/hooks/useRealtimeSync.test.js +0 -311
  212. package/dist/hooks/useSyncOrchestrator.aiProfiles.test.d.ts +0 -1
  213. package/dist/hooks/useSyncOrchestrator.aiProfiles.test.js +0 -54
  214. package/dist/hooks/useSyncOrchestrator.context-assets.test.d.ts +0 -1
  215. package/dist/hooks/useSyncOrchestrator.context-assets.test.js +0 -228
  216. package/dist/hooks/useSyncOrchestrator.retry-closure.test.d.ts +0 -1
  217. package/dist/hooks/useSyncOrchestrator.retry-closure.test.js +0 -2027
  218. package/dist/hooks/useTaskData.test.d.ts +0 -1
  219. package/dist/hooks/useTaskData.test.js +0 -291
  220. package/dist/hooks/useTaskMutations.test.d.ts +0 -1
  221. package/dist/hooks/useTaskMutations.test.js +0 -256
  222. package/dist/hooks/useTaskforce.contract.test.d.ts +0 -1
  223. package/dist/hooks/useTaskforce.contract.test.js +0 -7
  224. package/dist/hooks/useTaskforce.priority-filters.test.d.ts +0 -1
  225. package/dist/hooks/useTaskforce.priority-filters.test.js +0 -28
  226. package/dist/hooks/useTaskforce.runtime-routing.test.d.ts +0 -1
  227. package/dist/hooks/useTaskforce.runtime-routing.test.js +0 -246
  228. package/dist/hooks/useTaskforce.sync-behavior.test.d.ts +0 -1
  229. package/dist/hooks/useTaskforce.sync-behavior.test.js +0 -3644
  230. package/dist/hooks/useWorkspaceSyncController.test.d.ts +0 -1
  231. package/dist/hooks/useWorkspaceSyncController.test.js +0 -192
  232. package/dist/hooks/workspace/useTaskforceApiRouting.test.d.ts +0 -1
  233. package/dist/hooks/workspace/useTaskforceApiRouting.test.js +0 -77
  234. package/dist/hooks/workspace/workspaceLocalState.test.d.ts +0 -1
  235. package/dist/hooks/workspace/workspaceLocalState.test.js +0 -59
  236. package/dist/localization/localizationCatalogs.test.d.ts +0 -1
  237. package/dist/localization/localizationCatalogs.test.js +0 -37
  238. package/dist/mcp/aiProfileBootstrap.test.d.ts +0 -1
  239. package/dist/mcp/aiProfileBootstrap.test.js +0 -68
  240. package/dist/mcp/canonicalAssetHelpers.test.d.ts +0 -1
  241. package/dist/mcp/canonicalAssetHelpers.test.js +0 -67
  242. package/dist/mcp/clientIntegrations.test.d.ts +0 -1
  243. package/dist/mcp/clientIntegrations.test.js +0 -219
  244. package/dist/mcp/optionResolution.test.d.ts +0 -1
  245. package/dist/mcp/optionResolution.test.js +0 -43
  246. package/dist/mcp/runtime.test.d.ts +0 -1
  247. package/dist/mcp/runtime.test.js +0 -5211
  248. package/dist/mcp/structuredCommentValidation.test.d.ts +0 -1
  249. package/dist/mcp/structuredCommentValidation.test.js +0 -31
  250. package/dist/mcp/structuredDocValidation.test.d.ts +0 -1
  251. package/dist/mcp/structuredDocValidation.test.js +0 -35
  252. package/dist/mcp/toolRegistry.test.d.ts +0 -1
  253. package/dist/mcp/toolRegistry.test.js +0 -34
  254. package/dist/migrations/billingSchemaParity.test.d.ts +0 -1
  255. package/dist/migrations/billingSchemaParity.test.js +0 -160
  256. package/dist/migrations/taskSchemaMigrations.test.d.ts +0 -1
  257. package/dist/migrations/taskSchemaMigrations.test.js +0 -225
  258. package/dist/qaOpen.test.d.ts +0 -1
  259. package/dist/qaOpen.test.js +0 -56
  260. package/dist/releaseVersion.test.d.ts +0 -1
  261. package/dist/releaseVersion.test.js +0 -32
  262. package/dist/runtime/appGates.test.d.ts +0 -1
  263. package/dist/runtime/appGates.test.js +0 -42
  264. package/dist/server/aiProfileAvatarAssets.test.d.ts +0 -1
  265. package/dist/server/aiProfileAvatarAssets.test.js +0 -213
  266. package/dist/server/annotatedAttachmentsRoutes.test.d.ts +0 -1
  267. package/dist/server/annotatedAttachmentsRoutes.test.js +0 -532
  268. package/dist/server/auth.test.d.ts +0 -1
  269. package/dist/server/auth.test.js +0 -131
  270. package/dist/server/buildInfo.test.d.ts +0 -1
  271. package/dist/server/buildInfo.test.js +0 -29
  272. package/dist/server/cors.test.d.ts +0 -1
  273. package/dist/server/cors.test.js +0 -77
  274. package/dist/server/documentReviewRoutes.test.d.ts +0 -1
  275. package/dist/server/documentReviewRoutes.test.js +0 -190
  276. package/dist/server/email.test.d.ts +0 -1
  277. package/dist/server/email.test.js +0 -113
  278. package/dist/server/index.cookieProxy.test.d.ts +0 -1
  279. package/dist/server/index.cookieProxy.test.js +0 -67
  280. package/dist/server/index.rateLimit.test.d.ts +0 -1
  281. package/dist/server/index.rateLimit.test.js +0 -22
  282. package/dist/server/index.test.d.ts +0 -1
  283. package/dist/server/index.test.js +0 -283
  284. package/dist/server/rateLimit.test.d.ts +0 -1
  285. package/dist/server/rateLimit.test.js +0 -107
  286. package/dist/server/realtimeSync.auth.test.d.ts +0 -1
  287. package/dist/server/realtimeSync.auth.test.js +0 -62
  288. package/dist/server/realtimeSync.replay.test.d.ts +0 -1
  289. package/dist/server/realtimeSync.replay.test.js +0 -192
  290. package/dist/server/realtimeSync.workspaceIsolation.test.d.ts +0 -1
  291. package/dist/server/realtimeSync.workspaceIsolation.test.js +0 -101
  292. package/dist/server/routes/billing.test.d.ts +0 -1
  293. package/dist/server/routes/billing.test.js +0 -3515
  294. package/dist/server/routes/shared.test.d.ts +0 -1
  295. package/dist/server/routes/shared.test.js +0 -32
  296. package/dist/server/routes/sync.integration.test.d.ts +0 -1
  297. package/dist/server/routes/sync.integration.test.js +0 -2932
  298. package/dist/server/routes/syncAuxRoutes.test.d.ts +0 -1
  299. package/dist/server/routes/syncAuxRoutes.test.js +0 -158
  300. package/dist/server/routes/syncRouteGuards.test.d.ts +0 -1
  301. package/dist/server/routes/syncRouteGuards.test.js +0 -94
  302. package/dist/server/routes.test.d.ts +0 -1
  303. package/dist/server/routes.test.js +0 -15612
  304. package/dist/server/runtimeMode.test.d.ts +0 -1
  305. package/dist/server/runtimeMode.test.js +0 -26
  306. package/dist/server/securityHeaders.test.d.ts +0 -1
  307. package/dist/server/securityHeaders.test.js +0 -70
  308. package/dist/services/templateEngine.test.d.ts +0 -1
  309. package/dist/services/templateEngine.test.js +0 -150
  310. package/dist/services/templates.test.d.ts +0 -1
  311. package/dist/services/templates.test.js +0 -45
  312. package/dist/services/workflowDocumentFixtures.test.d.ts +0 -1
  313. package/dist/services/workflowDocumentFixtures.test.js +0 -78
  314. package/dist/services/workflowExportMatrix.test.d.ts +0 -1
  315. package/dist/services/workflowExportMatrix.test.js +0 -113
  316. package/dist/services/workflowExportSnapshots.test.d.ts +0 -1
  317. package/dist/services/workflowExportSnapshots.test.js +0 -30
  318. package/dist/services/workflowGeneration.test.d.ts +0 -1
  319. package/dist/services/workflowGeneration.test.js +0 -12
  320. package/dist/services/workflowSimulation.test.d.ts +0 -1
  321. package/dist/services/workflowSimulation.test.js +0 -113
  322. package/dist/services/workflowV2Policy.test.d.ts +0 -1
  323. package/dist/services/workflowV2Policy.test.js +0 -80
  324. package/dist/shared/customTaxonomyLibrary.test.d.ts +0 -1
  325. package/dist/shared/customTaxonomyLibrary.test.js +0 -20
  326. package/dist/shared/passwordPolicy.test.d.ts +0 -1
  327. package/dist/shared/passwordPolicy.test.js +0 -34
  328. package/dist/shared/runtimeContract.test.d.ts +0 -1
  329. package/dist/shared/runtimeContract.test.js +0 -23
  330. package/dist/shared/taxonomyLibrary.test.d.ts +0 -1
  331. package/dist/shared/taxonomyLibrary.test.js +0 -26
  332. package/dist/shared/taxonomyState.test.d.ts +0 -1
  333. package/dist/shared/taxonomyState.test.js +0 -71
  334. package/dist/soak/preflight.cli.d.ts +0 -1
  335. package/dist/soak/preflight.cli.js +0 -28
  336. package/dist/soak/preflight.d.ts +0 -26
  337. package/dist/soak/preflight.js +0 -113
  338. package/dist/soak/preflight.test.d.ts +0 -1
  339. package/dist/soak/preflight.test.js +0 -39
  340. package/dist/storage/objectStorageClient.test.d.ts +0 -1
  341. package/dist/storage/objectStorageClient.test.js +0 -82
  342. package/dist/storage/objectStorageConfig.test.d.ts +0 -1
  343. package/dist/storage/objectStorageConfig.test.js +0 -50
  344. package/dist/storage/postgresAdapter.test.d.ts +0 -1
  345. package/dist/storage/postgresAdapter.test.js +0 -29
  346. package/dist/storage/workspaceAssetStore.test.d.ts +0 -1
  347. package/dist/storage/workspaceAssetStore.test.js +0 -588
  348. package/dist/sync/cloudSyncApi.test.d.ts +0 -1
  349. package/dist/sync/cloudSyncApi.test.js +0 -111
  350. package/dist/sync/collaborationSyncPayload.test.d.ts +0 -1
  351. package/dist/sync/collaborationSyncPayload.test.js +0 -125
  352. package/dist/sync/contentSyncPayload.test.d.ts +0 -1
  353. package/dist/sync/contentSyncPayload.test.js +0 -143
  354. package/dist/sync/encryptionService.test.d.ts +0 -1
  355. package/dist/sync/encryptionService.test.js +0 -52
  356. package/dist/sync/planningSyncPayload.test.d.ts +0 -1
  357. package/dist/sync/planningSyncPayload.test.js +0 -92
  358. package/dist/sync/realtimeFeature.test.d.ts +0 -1
  359. package/dist/sync/realtimeFeature.test.js +0 -30
  360. package/dist/sync/realtimeReconcile.test.d.ts +0 -1
  361. package/dist/sync/realtimeReconcile.test.js +0 -43
  362. package/dist/sync/syncApplyHandlers.test.d.ts +0 -1
  363. package/dist/sync/syncApplyHandlers.test.js +0 -626
  364. package/dist/sync/syncService.test.d.ts +0 -1
  365. package/dist/sync/syncService.test.js +0 -903
  366. package/dist/sync/taskSyncPayload.test.d.ts +0 -1
  367. package/dist/sync/taskSyncPayload.test.js +0 -54
  368. package/dist/sync/workspacePullFeed.test.d.ts +0 -1
  369. package/dist/sync/workspacePullFeed.test.js +0 -438
  370. package/dist/sync/workspaceSyncModel.test.d.ts +0 -1
  371. package/dist/sync/workspaceSyncModel.test.js +0 -1442
  372. package/dist/test/setup.d.ts +0 -1
  373. package/dist/test/setup.js +0 -15
  374. package/dist/ui/assets/documentReferences-BPWp6ce0.js +0 -1
  375. package/dist/ui/assets/index-zvbo2Jse.js +0 -5
  376. package/dist/utils/accountProfileSummaryCache.test.d.ts +0 -1
  377. package/dist/utils/accountProfileSummaryCache.test.js +0 -63
  378. package/dist/utils/annotatedAttachments.test.d.ts +0 -1
  379. package/dist/utils/annotatedAttachments.test.js +0 -108
  380. package/dist/utils/assignees.test.d.ts +0 -1
  381. package/dist/utils/assignees.test.js +0 -25
  382. package/dist/utils/avatarUpload.test.d.ts +0 -1
  383. package/dist/utils/avatarUpload.test.js +0 -40
  384. package/dist/utils/canonicalAssetKind.test.d.ts +0 -1
  385. package/dist/utils/canonicalAssetKind.test.js +0 -24
  386. package/dist/utils/coalescedRefresh.test.d.ts +0 -1
  387. package/dist/utils/coalescedRefresh.test.js +0 -30
  388. package/dist/utils/constants.icons.test.d.ts +0 -1
  389. package/dist/utils/constants.icons.test.js +0 -41
  390. package/dist/utils/planParser.test.d.ts +0 -1
  391. package/dist/utils/planParser.test.js +0 -183
  392. package/dist/utils/planningReferences.test.d.ts +0 -1
  393. package/dist/utils/planningReferences.test.js +0 -17
  394. package/dist/utils/supportContact.test.d.ts +0 -1
  395. package/dist/utils/supportContact.test.js +0 -19
  396. package/dist/utils/syncEventDetails.test.d.ts +0 -1
  397. package/dist/utils/syncEventDetails.test.js +0 -23
  398. package/dist/utils/syncEventPresentation.test.d.ts +0 -1
  399. package/dist/utils/syncEventPresentation.test.js +0 -64
  400. package/dist/utils/syncStatusPresentation.test.d.ts +0 -1
  401. package/dist/utils/syncStatusPresentation.test.js +0 -164
  402. package/dist/utils/taskActivity.test.d.ts +0 -1
  403. package/dist/utils/taskActivity.test.js +0 -218
  404. package/dist/utils/taskDraftDefaults.test.d.ts +0 -1
  405. package/dist/utils/taskDraftDefaults.test.js +0 -34
  406. package/dist/utils/taskDragZones.test.d.ts +0 -1
  407. package/dist/utils/taskDragZones.test.js +0 -14
  408. package/dist/utils/taskNormalization.test.d.ts +0 -1
  409. package/dist/utils/taskNormalization.test.js +0 -158
  410. package/dist/utils/taskSearch.test.d.ts +0 -1
  411. package/dist/utils/taskSearch.test.js +0 -69
  412. package/dist/utils/taskUtils.test.d.ts +0 -1
  413. package/dist/utils/taskUtils.test.js +0 -19
  414. package/dist/utils/taskforceApiClient.test.d.ts +0 -1
  415. package/dist/utils/taskforceApiClient.test.js +0 -44
  416. package/dist/utils/taxonomyFormDefaults.test.d.ts +0 -1
  417. package/dist/utils/taxonomyFormDefaults.test.js +0 -63
  418. package/dist/utils/uiNotice.test.d.ts +0 -1
  419. package/dist/utils/uiNotice.test.js +0 -18
  420. package/dist/utils/workspaceIdentity.test.d.ts +0 -1
  421. package/dist/utils/workspaceIdentity.test.js +0 -61
  422. package/dist/utils/workspaceLifecycle.test.d.ts +0 -1
  423. package/dist/utils/workspaceLifecycle.test.js +0 -64
  424. package/dist/utils/workspaceSyncPresentation.test.d.ts +0 -1
  425. package/dist/utils/workspaceSyncPresentation.test.js +0 -71
  426. package/scripts/bootstrap-playwright-auth.mjs +0 -155
  427. package/scripts/check-cloud-mcp.mjs +0 -83
  428. package/scripts/check-compat-boundaries.mjs +0 -41
  429. package/scripts/check-env.ts +0 -31
  430. package/scripts/check-localization-strings.mjs +0 -49
  431. package/scripts/check-runtime-boundaries.mjs +0 -44
  432. package/scripts/debug-global.mjs +0 -34
  433. package/scripts/debug-login.mjs +0 -32
  434. package/scripts/debug-server.mjs +0 -36
  435. package/scripts/deploy-prod.sh +0 -41
  436. package/scripts/deploy-staging.sh +0 -23
  437. package/scripts/export-sqlite-to-postgres.mjs +0 -123
  438. package/scripts/generate-env-example.ts +0 -8
  439. package/scripts/mcp-stdio-adapter.mjs +0 -160
  440. package/scripts/migrate-task-data-assets.mjs +0 -408
  441. package/scripts/playwright-auth.sh +0 -19
  442. package/scripts/qa-open-lib.mjs +0 -175
  443. package/scripts/qa-open-lib.mjs.d.ts +0 -49
  444. package/scripts/qa-open.mjs +0 -352
  445. package/scripts/release-version-lib.mjs +0 -88
  446. package/scripts/release-version.mjs +0 -72
  447. package/scripts/run-billing-performance-smoke.sh +0 -24
  448. package/scripts/run-dev-proxy.sh +0 -51
  449. package/scripts/run-e2e-realtime.sh +0 -30
  450. package/scripts/run-smoke.sh +0 -35
  451. package/scripts/run-soak.sh +0 -41
  452. package/scripts/test-global.js +0 -143
  453. package/scripts/update-homebrew-formula.sh +0 -108
  454. package/scripts/with-esbuild.sh +0 -11
@@ -1,55 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { render, screen, fireEvent } from '@testing-library/react';
3
- import { describe, it, expect, vi } from 'vitest';
4
- import { LevelSelector } from './LevelSelector';
5
- describe('LevelSelector Component', () => {
6
- const defaultProps = {
7
- label: 'Priority',
8
- options: [
9
- { value: 'low', label: 'Low' },
10
- { value: 'medium', label: 'Medium' },
11
- { value: 'high', label: 'High' }
12
- ],
13
- value: 'medium',
14
- onChange: vi.fn(),
15
- type: 'priority'
16
- };
17
- const renderComponent = (props = {}) => {
18
- return render(_jsx(LevelSelector, { ...defaultProps, ...props }));
19
- };
20
- it('1.7 Renders label and options', () => {
21
- renderComponent();
22
- expect(screen.getByText('Priority')).toBeInTheDocument();
23
- // Should have 3 options
24
- const options = screen.getAllByRole('button');
25
- // Might be more buttons if there are help/manage links?
26
- // LevelSelector usually just renders label + buttons.
27
- // Let's filter by title.
28
- expect(screen.getByTitle('Low')).toBeInTheDocument();
29
- expect(screen.getByTitle('Medium')).toBeInTheDocument();
30
- expect(screen.getByTitle('High')).toBeInTheDocument();
31
- });
32
- it('1.8 Highlights selected option', () => {
33
- const { container } = renderComponent({ value: 'high' });
34
- const highBtn = screen.getByTitle('High');
35
- // Check for active class or style.
36
- // Class names might be hashed, but `levelOptionFilled` or `active` concept.
37
- // Let's check if it has the specific class for high priority or just check style.
38
- // The implementation adds classes like `_levelOption_priority_high`.
39
- // Let's assume it works if we can find it.
40
- // Better: verify click triggers change.
41
- fireEvent.click(highBtn);
42
- // It's already high, but clicking again should still fire or be no-op?
43
- // Let's click Low.
44
- const lowBtn = screen.getByTitle('Low');
45
- fireEvent.click(lowBtn);
46
- expect(defaultProps.onChange).toHaveBeenCalledWith('low');
47
- });
48
- it('1.9 Visual check (snapshot-like)', () => {
49
- // Select Low, so High should be dim
50
- const { container } = renderComponent({ value: 'low' });
51
- const highBtn = screen.getByTitle('High');
52
- // Unselected options usually have lower opacity or transparent bg
53
- expect(highBtn).toHaveStyle({ opacity: '0.15' });
54
- });
55
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,38 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { fireEvent, render, screen } from '@testing-library/react';
3
- import { describe, it, expect, vi } from 'vitest';
4
- import { Markdown } from './Markdown';
5
- describe('Markdown Component', () => {
6
- it('1.10 Renders basic text', () => {
7
- render(_jsx(Markdown, { children: "Hello World" }));
8
- expect(screen.getByText('Hello World')).toBeInTheDocument();
9
- });
10
- it('1.11 Renders inline code', () => {
11
- render(_jsx(Markdown, { children: "`code`" }));
12
- const code = screen.getByText('code');
13
- expect(code.tagName).toBe('CODE');
14
- });
15
- it('1.12 Renders links', () => {
16
- render(_jsx(Markdown, { children: "[Link](https://example.com)" }));
17
- const link = screen.getByRole('link', { name: 'Link' });
18
- expect(link).toHaveAttribute('href', 'https://example.com');
19
- });
20
- it('1.13 Renders GFM checkbox', () => {
21
- render(_jsx(Markdown, { children: "- [ ] Task" }));
22
- const checkbox = screen.getByRole('checkbox');
23
- expect(checkbox).toBeInTheDocument();
24
- expect(checkbox).not.toBeChecked();
25
- });
26
- it('1.14 Renders GFM checked checkbox', () => {
27
- render(_jsx(Markdown, { children: "- [x] Done" }));
28
- const checkbox = screen.getByRole('checkbox');
29
- expect(checkbox).toBeChecked();
30
- });
31
- it('1.15 Linkifies task IDs when callback is provided', () => {
32
- const onTaskIdClick = vi.fn();
33
- render(_jsx(Markdown, { onTaskIdClick: onTaskIdClick, children: "See task-1771422284342-ummpvmvb7 for details" }));
34
- const button = screen.getByRole('button', { name: 'task-1771422284342-ummpvmvb7' });
35
- fireEvent.click(button);
36
- expect(onTaskIdClick).toHaveBeenCalledWith('task-1771422284342-ummpvmvb7');
37
- });
38
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,74 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { render, screen } from '@testing-library/react';
3
- import userEvent from '@testing-library/user-event';
4
- import { describe, it, expect, vi } from 'vitest';
5
- import { MultiSelectFilter } from './MultiSelectFilter';
6
- describe('MultiSelectFilter Component', () => {
7
- const defaultProps = {
8
- label: 'Category',
9
- options: [
10
- { value: 'General', label: 'General' },
11
- { value: 'Backend', label: 'Backend' },
12
- { value: 'Frontend', label: 'Frontend' }
13
- ],
14
- selected: ['General', 'Backend', 'Frontend'], // All selected initially
15
- onChange: vi.fn(),
16
- type: 'category'
17
- };
18
- const renderComponent = (props = {}) => {
19
- return render(_jsx(MultiSelectFilter, { ...defaultProps, ...props }));
20
- };
21
- it('1.1 Renders correctly with label', () => {
22
- renderComponent();
23
- // Should show "All Categories" since all are selected and label is "Category"
24
- expect(screen.getByText('All Categories')).toBeInTheDocument();
25
- });
26
- it('1.2 Opens dropdown on click', async () => {
27
- const user = userEvent.setup();
28
- renderComponent();
29
- const button = screen.getByRole('button');
30
- await user.click(button);
31
- // Dropdown content should appear
32
- expect(screen.getByText('Toggle All')).toBeInTheDocument();
33
- expect(screen.getByText('General')).toBeInTheDocument();
34
- expect(screen.getByText('Backend')).toBeInTheDocument();
35
- });
36
- it('1.3 Toggle selection', async () => {
37
- const user = userEvent.setup();
38
- renderComponent();
39
- await user.click(screen.getByRole('button')); // Open
40
- // Click the option div or checkbox? Implementation has onClick on div.
41
- const backendOption = screen.getByText('Backend');
42
- await user.click(backendOption);
43
- // Should call onChange with new array (removing Backend)
44
- expect(defaultProps.onChange).toHaveBeenCalledWith(['General', 'Frontend']);
45
- });
46
- it('1.4 Toggle All', async () => {
47
- const user = userEvent.setup();
48
- // Case: Some selected -> Click Toggle All -> Select All
49
- renderComponent({ selected: ['General'] });
50
- await user.click(screen.getByRole('button'));
51
- const toggleAll = screen.getByText('Toggle All');
52
- await user.click(toggleAll);
53
- // Should select all
54
- expect(defaultProps.onChange).toHaveBeenCalledWith(['General', 'Backend', 'Frontend']);
55
- });
56
- it('1.5 Shows count when partially selected', () => {
57
- renderComponent({ selected: ['General', 'Backend'] }); // 2 out of 3
58
- // Should show "2" or "2 selected" or similar. Implementation check:
59
- // Text is `selected.length === options.length ? 'All' : selected.length === 0 ? 'None' : pluralize(selected.length, 'Category', 'Categories')`
60
- // pluralize: `${count} ${count === 1 ? singular : plural}`. But wait, `pluralize` usually returns string "2 Categories".
61
- // Let's check implementation if needed, but "2 Categories" is expected.
62
- expect(screen.getByText('2 Categories')).toBeInTheDocument();
63
- });
64
- it('1.6 Closes on outside click', async () => {
65
- const user = userEvent.setup();
66
- renderComponent();
67
- await user.click(screen.getByRole('button'));
68
- expect(screen.getByText('Toggle All')).toBeVisible();
69
- await user.click(document.body);
70
- // Expect dropdown to be gone/hidden.
71
- // Note: checking visibility might require checking if element is removed from DOM.
72
- expect(screen.queryByText('Toggle All')).not.toBeInTheDocument();
73
- });
74
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,130 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { render, screen, fireEvent } from '@testing-library/react';
3
- import { describe, it, expect, vi } from 'vitest';
4
- import { TaxonomyDropdown } from './TaxonomyDropdown';
5
- describe('TaxonomyDropdown', () => {
6
- const mockOptions = [
7
- { value: 'frontend', label: 'Frontend', icon: 'Code', color: 'blue-500' },
8
- { value: 'backend', label: 'Backend', icon: 'Server', color: 'green-500' },
9
- { value: 'database', label: 'Database', icon: 'Database', color: 'purple-500' }
10
- ];
11
- it('renders with placeholder when no value selected', () => {
12
- render(_jsx(TaxonomyDropdown, { value: "", options: mockOptions, onChange: vi.fn(), placeholder: "Select category..." }));
13
- expect(screen.getByText('Select category...')).toBeInTheDocument();
14
- });
15
- it('displays selected option correctly', () => {
16
- render(_jsx(TaxonomyDropdown, { value: "frontend", options: mockOptions, onChange: vi.fn() }));
17
- expect(screen.getByText('Frontend')).toBeInTheDocument();
18
- });
19
- it('opens dropdown when clicked', () => {
20
- render(_jsx(TaxonomyDropdown, { value: "frontend", options: mockOptions, onChange: vi.fn() }));
21
- const button = screen.getByRole('combobox');
22
- fireEvent.click(button);
23
- // All options should be visible
24
- expect(screen.getAllByText('Frontend')).toHaveLength(2); // One in button, one in dropdown
25
- expect(screen.getByText('Backend')).toBeInTheDocument();
26
- expect(screen.getByText('Database')).toBeInTheDocument();
27
- });
28
- it('calls onChange when option is selected', () => {
29
- const handleChange = vi.fn();
30
- render(_jsx(TaxonomyDropdown, { value: "frontend", options: mockOptions, onChange: handleChange }));
31
- // Open dropdown
32
- const button = screen.getByRole('combobox');
33
- fireEvent.click(button);
34
- // Click Backend option
35
- const backendOption = screen.getAllByText('Backend')[0];
36
- fireEvent.click(backendOption);
37
- expect(handleChange).toHaveBeenCalledWith('backend');
38
- });
39
- it('closes dropdown after selection', () => {
40
- render(_jsx(TaxonomyDropdown, { value: "frontend", options: mockOptions, onChange: vi.fn() }));
41
- // Open dropdown
42
- const button = screen.getByRole('combobox');
43
- fireEvent.click(button);
44
- // Select an option
45
- const backendOption = screen.getAllByText('Backend')[0];
46
- fireEvent.click(backendOption);
47
- // Dropdown should be closed (only selected value visible in button)
48
- expect(screen.queryByRole('listbox')).not.toBeInTheDocument();
49
- });
50
- it('opens dropdown with Enter key', () => {
51
- render(_jsx(TaxonomyDropdown, { value: "frontend", options: mockOptions, onChange: vi.fn() }));
52
- const button = screen.getByRole('combobox');
53
- fireEvent.keyDown(button, { key: 'Enter' });
54
- expect(screen.getByRole('listbox')).toBeInTheDocument();
55
- });
56
- it('opens dropdown with Space key', () => {
57
- render(_jsx(TaxonomyDropdown, { value: "frontend", options: mockOptions, onChange: vi.fn() }));
58
- const button = screen.getByRole('combobox');
59
- fireEvent.keyDown(button, { key: ' ' });
60
- expect(screen.getByRole('listbox')).toBeInTheDocument();
61
- });
62
- it('closes dropdown with Escape key', () => {
63
- render(_jsx(TaxonomyDropdown, { value: "frontend", options: mockOptions, onChange: vi.fn() }));
64
- const button = screen.getByRole('combobox');
65
- // Open dropdown
66
- fireEvent.click(button);
67
- expect(screen.getByRole('listbox')).toBeInTheDocument();
68
- // Close with Escape
69
- fireEvent.keyDown(button, { key: 'Escape' });
70
- expect(screen.queryByRole('listbox')).not.toBeInTheDocument();
71
- });
72
- it('navigates options with Arrow keys', () => {
73
- render(_jsx(TaxonomyDropdown, { value: "frontend", options: mockOptions, onChange: vi.fn() }));
74
- const button = screen.getByRole('combobox');
75
- // Open dropdown
76
- fireEvent.keyDown(button, { key: 'Enter' });
77
- // Navigate down
78
- fireEvent.keyDown(button, { key: 'ArrowDown' });
79
- // The second option should be highlighted (visual check via class)
80
- const options = screen.getAllByRole('option');
81
- // Frontend is at index 0, after ArrowDown, Backend at index 1 should be highlighted
82
- // Additional arrow navigation tests can be added
83
- });
84
- it('selects option with Enter key when highlighted', () => {
85
- const handleChange = vi.fn();
86
- render(_jsx(TaxonomyDropdown, { value: "frontend", options: mockOptions, onChange: handleChange }));
87
- const button = screen.getByRole('combobox');
88
- // Open dropdown
89
- fireEvent.keyDown(button, { key: 'Enter' });
90
- // Navigate to next option
91
- fireEvent.keyDown(button, { key: 'ArrowDown' });
92
- // Select with Enter
93
- fireEvent.keyDown(button, { key: 'Enter' });
94
- expect(handleChange).toHaveBeenCalled();
95
- });
96
- it('is disabled when disabled prop is true', () => {
97
- render(_jsx(TaxonomyDropdown, { value: "frontend", options: mockOptions, onChange: vi.fn(), disabled: true }));
98
- const button = screen.getByRole('combobox');
99
- expect(button).toBeDisabled();
100
- // Should not open when clicked
101
- fireEvent.click(button);
102
- expect(screen.queryByRole('listbox')).not.toBeInTheDocument();
103
- });
104
- it('has proper ARIA attributes', () => {
105
- render(_jsx(TaxonomyDropdown, { value: "frontend", options: mockOptions, onChange: vi.fn() }));
106
- const button = screen.getByRole('combobox');
107
- expect(button).toHaveAttribute('aria-haspopup', 'listbox');
108
- expect(button).toHaveAttribute('aria-expanded', 'false');
109
- // Open dropdown
110
- fireEvent.click(button);
111
- expect(button).toHaveAttribute('aria-expanded', 'true');
112
- const listbox = screen.getByRole('listbox');
113
- expect(listbox).toBeInTheDocument();
114
- const options = screen.getAllByRole('option');
115
- expect(options).toHaveLength(3);
116
- });
117
- it('displays icons for each option', () => {
118
- render(_jsx(TaxonomyDropdown, { value: "frontend", options: mockOptions, onChange: vi.fn() }));
119
- // Open dropdown
120
- const button = screen.getByRole('combobox');
121
- fireEvent.click(button);
122
- // Check that all options are rendered
123
- const options = screen.getAllByRole('option');
124
- expect(options).toHaveLength(3);
125
- // Each option should display its label
126
- expect(screen.getAllByText('Frontend').length).toBeGreaterThanOrEqual(1);
127
- expect(screen.getByText('Backend')).toBeInTheDocument();
128
- expect(screen.getByText('Database')).toBeInTheDocument();
129
- });
130
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,25 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { render, screen } from '@testing-library/react';
3
- import { describe, expect, it, vi } from 'vitest';
4
- import { TopNoticeLayer } from './TopNoticeLayer';
5
- describe('TopNoticeLayer', () => {
6
- it('renders nothing when no notice is provided', () => {
7
- const { container } = render(_jsx(TopNoticeLayer, { notice: null }));
8
- expect(container.firstChild).toBeNull();
9
- });
10
- it('renders success notices as status role', () => {
11
- render(_jsx(TopNoticeLayer, { notice: { message: 'Saved', tone: 'success' } }));
12
- expect(screen.getByRole('status')).toHaveTextContent('Saved');
13
- });
14
- it('renders error notices as alert role', () => {
15
- render(_jsx(TopNoticeLayer, { notice: { message: 'Failed', tone: 'error' } }));
16
- expect(screen.getByRole('alert')).toHaveTextContent('Failed');
17
- });
18
- it('calls dismiss handler', async () => {
19
- const onDismiss = vi.fn();
20
- render(_jsx(TopNoticeLayer, { notice: { message: 'Saved', tone: 'info' }, onDismiss: onDismiss }));
21
- const button = screen.getByRole('button', { name: 'Dismiss notice' });
22
- button.click();
23
- expect(onDismiss).toHaveBeenCalledTimes(1);
24
- });
25
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,42 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { render, screen } from '@testing-library/react';
3
- import userEvent from '@testing-library/user-event';
4
- import { describe, expect, it, vi } from 'vitest';
5
- import { AppShellHeader } from './AppShellHeader';
6
- import logoDark from '../../assets/branding/logos/logo_dark.svg';
7
- describe('AppShellHeader', () => {
8
- it('shows HQ suffix in cloud runtime', () => {
9
- render(_jsx(AppShellHeader, { runtimeMode: "cloud" }));
10
- expect(screen.getByText('TaskForce')).toBeInTheDocument();
11
- expect(screen.getByText('HQ')).toBeInTheDocument();
12
- });
13
- it('does not show HQ suffix in local runtime', () => {
14
- render(_jsx(AppShellHeader, { runtimeMode: "local" }));
15
- expect(screen.getByText('TaskForce')).toBeInTheDocument();
16
- expect(screen.queryByText('HQ')).not.toBeInTheDocument();
17
- });
18
- it('uses the dark logo for light-family themes', () => {
19
- render(_jsx(AppShellHeader, { runtimeMode: "local", theme: "dawn" }));
20
- expect(screen.getByAltText('Taskforce Logo')).toHaveAttribute('src', logoDark);
21
- });
22
- it('calls the brand click handler from the logo button', async () => {
23
- const onBrandClick = vi.fn();
24
- render(_jsx(AppShellHeader, { runtimeMode: "local", onBrandClick: onBrandClick }));
25
- await userEvent.click(screen.getByRole('button', { name: 'Go to Kanban' }));
26
- expect(onBrandClick).toHaveBeenCalledTimes(1);
27
- });
28
- it('copies the workspace id from the project badge', async () => {
29
- const writeText = vi.fn().mockResolvedValue(undefined);
30
- Object.defineProperty(navigator, 'clipboard', {
31
- configurable: true,
32
- value: { writeText }
33
- });
34
- render(_jsx(AppShellHeader, { runtimeMode: "local", projectName: "Roadmap", currentWorkspaceId: "workspace-alpha" }));
35
- await userEvent.click(screen.getByRole('button', { name: 'Roadmap' }));
36
- expect(writeText).toHaveBeenCalledWith('workspace-alpha');
37
- });
38
- it('hides a stale project label while cloud runtime is still on the default workspace', () => {
39
- render(_jsx(AppShellHeader, { runtimeMode: "cloud", projectName: "Old Workspace", currentWorkspaceId: "default" }));
40
- expect(screen.queryByText('Old Workspace')).not.toBeInTheDocument();
41
- });
42
- });
@@ -1 +0,0 @@
1
- export {};