@critical-path/svelte 0.18.18 → 0.18.20

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.
package/CHANGELOG.md ADDED
@@ -0,0 +1,913 @@
1
+ # @critical-path/svelte
2
+
3
+ ## 0.18.20
4
+
5
+ ### Patch Changes
6
+
7
+ - da8c69b: Packages now include `CHANGELOG.md`, so agents and developers can read breaking changes in `node_modules`. READMEs link the new upgrade guide (`UPGRADING.md`, also at /getting-started/upgrading/ on the docs site), which coding agents in consumer apps can follow to migrate on their own.
8
+ - Updated dependencies [da8c69b]
9
+ - @critical-path/core@0.51.1
10
+ - @critical-path/client@0.25.1
11
+ - @critical-path/mcp@0.18.1
12
+
13
+ ## 0.18.19
14
+
15
+ ### Patch Changes
16
+
17
+ - Updated dependencies [a7e9f4a]
18
+ - @critical-path/core@0.51.0
19
+ - @critical-path/client@0.25.0
20
+ - @critical-path/mcp@0.18.0
21
+
22
+ ## 0.18.18
23
+
24
+ ### Patch Changes
25
+
26
+ - Updated dependencies [7896d0d]
27
+ - @critical-path/core@0.50.0
28
+ - @critical-path/client@0.24.5
29
+ - @critical-path/mcp@0.17.2
30
+
31
+ ## 0.18.17
32
+
33
+ ### Patch Changes
34
+
35
+ - Updated dependencies [fc9740b]
36
+ - @critical-path/mcp@0.17.1
37
+
38
+ ## 0.18.16
39
+
40
+ ### Patch Changes
41
+
42
+ - Updated dependencies [bbc4305]
43
+ - @critical-path/core@0.49.0
44
+ - @critical-path/mcp@0.17.0
45
+ - @critical-path/client@0.24.4
46
+
47
+ ## 0.18.15
48
+
49
+ ### Patch Changes
50
+
51
+ - Updated dependencies [cb71e39]
52
+ - @critical-path/core@0.48.1
53
+ - @critical-path/client@0.24.3
54
+ - @critical-path/mcp@0.16.3
55
+
56
+ ## 0.18.14
57
+
58
+ ### Patch Changes
59
+
60
+ - Updated dependencies [f151568]
61
+ - @critical-path/core@0.48.0
62
+ - @critical-path/client@0.24.2
63
+ - @critical-path/mcp@0.16.2
64
+
65
+ ## 0.18.13
66
+
67
+ ### Patch Changes
68
+
69
+ - Updated dependencies [fde5883]
70
+ - @critical-path/core@0.47.0
71
+ - @critical-path/client@0.24.1
72
+ - @critical-path/mcp@0.16.1
73
+
74
+ ## 0.18.12
75
+
76
+ ### Patch Changes
77
+
78
+ - Updated dependencies [d82d168]
79
+ - @critical-path/core@0.46.0
80
+ - @critical-path/client@0.24.0
81
+ - @critical-path/mcp@0.16.0
82
+
83
+ ## 0.18.11
84
+
85
+ ### Patch Changes
86
+
87
+ - Updated dependencies [3c08dd9]
88
+ - @critical-path/core@0.45.0
89
+ - @critical-path/client@0.23.0
90
+ - @critical-path/mcp@0.15.0
91
+
92
+ ## 0.18.10
93
+
94
+ ### Patch Changes
95
+
96
+ - Updated dependencies [b3ef9c6]
97
+ - @critical-path/core@0.44.0
98
+ - @critical-path/client@0.22.3
99
+ - @critical-path/mcp@0.14.2
100
+
101
+ ## 0.18.9
102
+
103
+ ### Patch Changes
104
+
105
+ - Updated dependencies [867cdae]
106
+ - @critical-path/core@0.43.1
107
+ - @critical-path/client@0.22.2
108
+ - @critical-path/mcp@0.14.1
109
+
110
+ ## 0.18.8
111
+
112
+ ### Patch Changes
113
+
114
+ - Updated dependencies [efa342f]
115
+ - @critical-path/core@0.43.0
116
+ - @critical-path/mcp@0.14.0
117
+ - @critical-path/client@0.22.1
118
+
119
+ ## 0.18.7
120
+
121
+ ### Patch Changes
122
+
123
+ - Updated dependencies [f548659]
124
+ - @critical-path/core@0.42.0
125
+ - @critical-path/client@0.22.0
126
+ - @critical-path/mcp@0.13.0
127
+
128
+ ## 0.18.6
129
+
130
+ ### Patch Changes
131
+
132
+ - Updated dependencies [65044e3]
133
+ - @critical-path/core@0.41.0
134
+ - @critical-path/client@0.21.1
135
+ - @critical-path/mcp@0.12.1
136
+
137
+ ## 0.18.5
138
+
139
+ ### Patch Changes
140
+
141
+ - Updated dependencies [cfd3215]
142
+ - @critical-path/core@0.40.0
143
+ - @critical-path/client@0.21.0
144
+ - @critical-path/mcp@0.12.0
145
+
146
+ ## 0.18.4
147
+
148
+ ### Patch Changes
149
+
150
+ - Updated dependencies [c7ad4d4]
151
+ - @critical-path/core@0.39.0
152
+ - @critical-path/client@0.20.9
153
+ - @critical-path/mcp@0.11.11
154
+
155
+ ## 0.18.3
156
+
157
+ ### Patch Changes
158
+
159
+ - Updated dependencies [8e52679]
160
+ - @critical-path/core@0.38.0
161
+ - @critical-path/client@0.20.8
162
+ - @critical-path/mcp@0.11.10
163
+
164
+ ## 0.18.2
165
+
166
+ ### Patch Changes
167
+
168
+ - Updated dependencies [d4477b1]
169
+ - @critical-path/core@0.37.0
170
+ - @critical-path/client@0.20.7
171
+ - @critical-path/mcp@0.11.9
172
+
173
+ ## 0.18.1
174
+
175
+ ### Patch Changes
176
+
177
+ - 85d9bb5: Publish only what consumers need.
178
+
179
+ - Packages no longer ship compiled tests or TypeScript sources (`files: ["dist", "!dist/**/*.test.*"]`). `@critical-path/core` goes from 330 files to 146.
180
+ - `exports` maps list `types` first, as TypeScript's resolution expects.
181
+ - Updated dependencies [85d9bb5]
182
+ - @critical-path/core@0.36.1
183
+ - @critical-path/client@0.20.6
184
+ - @critical-path/mcp@0.11.8
185
+
186
+ ## 0.18.0
187
+
188
+ ### Minor Changes
189
+
190
+ - dbe7073: Cancel stale requests in UI data hooks.
191
+
192
+ - **@critical-path/react:** data hooks abort their in-flight request when inputs change or the component unmounts, and ignore any response that arrives afterwards. Previously, switching from project A to project B could show A's tasks if A's request finished last. The package now ships with a `'use client'` directive, for Next.js App Router.
193
+ - **@critical-path/svelte:** state classes abort the previous request when a fetch method is called again, and gain `destroy()` to cancel in-flight requests (call it from `onDestroy`). Duck-typed clients without `with()` keep working; their requests just aren't cancelled.
194
+
195
+ ### Patch Changes
196
+
197
+ - Updated dependencies [810d8d1]
198
+ - @critical-path/core@0.36.0
199
+ - @critical-path/client@0.20.5
200
+ - @critical-path/mcp@0.11.7
201
+
202
+ ## 0.17.11
203
+
204
+ ### Patch Changes
205
+
206
+ - Updated dependencies [b13f7c4]
207
+ - @critical-path/core@0.35.0
208
+ - @critical-path/client@0.20.4
209
+ - @critical-path/mcp@0.11.6
210
+
211
+ ## 0.17.10
212
+
213
+ ### Patch Changes
214
+
215
+ - Updated dependencies [1cc0d4c]
216
+ - @critical-path/core@0.34.0
217
+ - @critical-path/client@0.20.3
218
+ - @critical-path/mcp@0.11.5
219
+
220
+ ## 0.17.9
221
+
222
+ ### Patch Changes
223
+
224
+ - Updated dependencies [aa94129]
225
+ - @critical-path/core@0.33.0
226
+ - @critical-path/client@0.20.2
227
+ - @critical-path/mcp@0.11.4
228
+
229
+ ## 0.17.8
230
+
231
+ ### Patch Changes
232
+
233
+ - Updated dependencies [a3fe03d]
234
+ - @critical-path/core@0.32.0
235
+ - @critical-path/client@0.20.1
236
+ - @critical-path/mcp@0.11.3
237
+
238
+ ## 0.17.7
239
+
240
+ ### Patch Changes
241
+
242
+ - Updated dependencies [40e5958]
243
+ - @critical-path/core@0.31.0
244
+ - @critical-path/client@0.20.0
245
+ - @critical-path/mcp@0.11.2
246
+
247
+ ## 0.17.6
248
+
249
+ ### Patch Changes
250
+
251
+ - Updated dependencies [b453472]
252
+ - @critical-path/client@0.19.0
253
+ - @critical-path/mcp@0.11.1
254
+
255
+ ## 0.17.5
256
+
257
+ ### Patch Changes
258
+
259
+ - cdb300a: Task filtering and pagination.
260
+
261
+ **@critical-path/core**
262
+ - New `engine.queryTasks(query)` and `engine.queryActivities(query)` return `Page<T>` (`{ items, nextCursor }`).
263
+ - Tasks are ordered oldest first, activities newest first, using keyset cursors on `createdAt` then `id`.
264
+ - Task filters: `status[]`, `priority[]`, `assigneeId` (also matches `assignees`), `iterationId`, `deliverableId`, `containerId`, `parentId` (`null` means top-level), `projectIds`.
265
+ - Results are limited to projects the actor can read.
266
+ - **BREAKING (storage adapters):** `queryTasks` and `queryActivities` are required. `SQLiteStore` filters and pages in SQL and adds indexes for tasks, activities, comments and dependencies. Helpers (`paginate`, `matchesTaskQuery`, cursors, `DEFAULT_PAGE_SIZE` / `MAX_PAGE_SIZE`) are exported for custom adapters.
267
+
268
+ **@critical-path/server**
269
+ - **BREAKING:** `GET /tasks` and `GET /activities` are paginated (default 100, max 500) and return `nextCursor`. `GET /tasks` accepts the filters above as query parameters. Unknown parameters return `400`.
270
+
271
+ **@critical-path/client**
272
+ - `getTasks` and `getActivities` follow pagination and still return everything. New `queryTasks` and `queryActivities` return single pages.
273
+
274
+ **@critical-path/mcp**
275
+ - **BREAKING:** `list_tasks` returns `{ tasks, nextCursor }` and accepts `iterationId`, `limit` and `cursor`. It now filters in the store instead of loading every task.
276
+ - Updated dependencies [cdb300a]
277
+ - @critical-path/core@0.30.0
278
+ - @critical-path/client@0.18.0
279
+ - @critical-path/mcp@0.11.0
280
+
281
+ ## 0.17.4
282
+
283
+ ### Patch Changes
284
+
285
+ - Updated dependencies [a019d37]
286
+ - @critical-path/core@0.29.0
287
+ - @critical-path/client@0.17.0
288
+ - @critical-path/mcp@0.10.4
289
+
290
+ ## 0.17.3
291
+
292
+ ### Patch Changes
293
+
294
+ - Updated dependencies [4fbbc40]
295
+ - @critical-path/core@0.28.0
296
+ - @critical-path/mcp@0.10.3
297
+ - @critical-path/client@0.16.1
298
+
299
+ ## 0.17.2
300
+
301
+ ### Patch Changes
302
+
303
+ - Updated dependencies [1a516bd]
304
+ - @critical-path/core@0.27.0
305
+ - @critical-path/client@0.16.0
306
+ - @critical-path/mcp@0.10.2
307
+
308
+ ## 0.17.1
309
+
310
+ ### Patch Changes
311
+
312
+ - Updated dependencies [719e844]
313
+ - @critical-path/core@0.26.0
314
+ - @critical-path/client@0.15.1
315
+ - @critical-path/mcp@0.10.1
316
+
317
+ ## 0.17.0
318
+
319
+ ### Minor Changes
320
+
321
+ - fd79762: **BREAKING:** strict request bodies, no identity in payloads, and CORS off by default.
322
+
323
+ **@critical-path/core**
324
+ - Request schemas are strict: unknown keys, server-assigned fields and identity fields are rejected instead of stripped.
325
+ - Identity is never read from payloads. `updateTask` no longer reads `actorId`/`actorName`/`actorType`/`actor` from the update object; pass them as the third `options` argument or use `withActor`. `addComment`, `addCommentReaction`, `removeCommentReaction` and `createAttachment` take the actor from `withActor`, falling back to an optional `authorId`/`userId`/`uploaderId`, then `'system'`.
326
+ - Schemas export request body types (`CreateTaskBody`, `UpdateTaskBody`, ...).
327
+
328
+ **@critical-path/server**
329
+ - Bodies containing unknown, server-assigned or identity fields return `400`.
330
+ - Every request runs as the `getContext` user, or `ANONYMOUS_ACTOR` (`anonymous`). Authors of comments, reactions, attachments and time entries are no longer accepted from bodies.
331
+ - `DELETE /comments/:id/reactions` takes `?emoji=` only.
332
+ - CORS is off by default (`cors: false`). Pass `cors: { origins: [...] }` to allow cross-origin browsers.
333
+
334
+ **@critical-path/client**
335
+ - Method parameters use the server's body types, so identity fields no longer type-check. `addCommentReaction`/`removeCommentReaction` take `{ emoji }`; `addTodo`/`toggleTodo` drop the actor options argument.
336
+ - New `updateProject`, `deleteProject` and `addDependency`. `uploadAttachmentFile` base64-encodes binary data (previously it sent unusable JSON for `Uint8Array`/`ArrayBuffer`).
337
+ - CLI: `--author`, `--actor-id`, `--actor-name`, `--agent-name` and `CRITICAL_PATH_AUTHOR_ID`/`ACTOR_ID`/`AGENT_NAME` are removed; identity comes from the `--key` token via the server's `getContext`.
338
+
339
+ **@critical-path/mcp**
340
+ - Tool arguments are strict: undeclared arguments return an `isError` result.
341
+ - `add_comment` no longer takes `authorId`. With an `engine`, writes are attributed to the new `actor` server option (default `DEFAULT_MCP_ACTOR`).
342
+
343
+ **@critical-path/react / @critical-path/svelte**
344
+ - `addReaction`/`removeReaction` take `(commentId, emoji)`; comment and attachment inputs no longer accept `authorId`/`uploaderId`. Task, comment and deliverable update parameters use the schema body types.
345
+
346
+ ### Patch Changes
347
+
348
+ - Updated dependencies [fd79762]
349
+ - @critical-path/core@0.25.0
350
+ - @critical-path/client@0.15.0
351
+ - @critical-path/mcp@0.10.0
352
+
353
+ ## 0.16.3
354
+
355
+ ### Patch Changes
356
+
357
+ - b54e22c: Validate request bodies with shared zod schemas and publish an OpenAPI document.
358
+
359
+ **@critical-path/core**
360
+ - New `@critical-path/core/schemas` subpath with create/update schemas for every resource and `parsePayload(schema, data)`. Kept off the package root so browser bundles do not include zod. `zod` is now a dependency of core.
361
+ - `ValidationError` carries an optional `issues: { path, message }[]`.
362
+
363
+ **@critical-path/server**
364
+ - All request bodies are validated. Invalid bodies return `400` with `issues`. Server-assigned fields (`id`, `createdAt`, `updatedAt`, task `key`, owning `projectId` on updates) and unknown keys are stripped, so a `PATCH` can no longer move a task to another project.
365
+ - Comments, reactions and attachments require an author unless `getContext` resolves the caller. Attachment `mimeType` and `sizeBytes` default to `application/octet-stream` and `0` for linked files.
366
+ - New `GET /openapi.json` and `buildOpenApiDocument()` (OpenAPI 3.1, request bodies generated from the validation schemas).
367
+
368
+ **@critical-path/mcp**
369
+ - Tool `inputSchema`s are generated from their zod schemas via the new `defineTool`, removing the hand-written JSON copies.
370
+
371
+ **@critical-path/svelte**
372
+ - Rebuilt with the bundled `@critical-path/mcp` changes.
373
+ - Updated dependencies [b54e22c]
374
+ - @critical-path/core@0.24.0
375
+ - @critical-path/mcp@0.9.0
376
+ - @critical-path/client@0.14.9
377
+
378
+ ## 0.16.2
379
+
380
+ ### Patch Changes
381
+
382
+ - Updated dependencies [6dd5529]
383
+ - @critical-path/core@0.23.0
384
+ - @critical-path/mcp@0.8.0
385
+ - @critical-path/client@0.14.8
386
+
387
+ ## 0.16.1
388
+
389
+ ### Patch Changes
390
+
391
+ - b243a37: Fix correctness and safety issues found in a code audit.
392
+
393
+ **@critical-path/core**
394
+ - `SQLiteStore` now loads `node:sqlite` via `process.getBuiltinModule`, fixing `require is not defined` when constructed from a filename in plain Node ESM.
395
+ - Removed the unused `better-sqlite3` runtime dependency.
396
+ - `engine.addDependency` now detects indirect cycles (e.g. A → B → C → D → A), not just cycles between direct neighbours.
397
+ - Fixed `generateKeyBetween` returning out-of-range, duplicate keys after repeated inserts after the same item. It now throws a `RangeError` when `a >= b`.
398
+ - Added `engine.deleteProject(id)`, which deletes a project's tasks through `deleteTask` and publishes a new `project.deleted` event and webhook.
399
+ - Added exported `ValidationError` and `NotFoundError` classes. `logTime` now rejects non-numeric hours.
400
+
401
+ **@critical-path/server**
402
+ - `DELETE /projects/:id`, `POST /tasks/:id/dependencies` and `POST /time-entries` now go through the engine, so cycle checks, hour validation, roll-ups, events and webhooks apply.
403
+ - Added `PATCH /projects/:id`.
404
+ - `DELETE` on a resource that does not exist now returns `404` instead of `200 { success: false }`.
405
+ - Malformed JSON returns `400`, validation errors `400`, `NotFoundError` `404`, and dependency cycles `409`. Unexpected errors return a generic `500` message outside development.
406
+ - `OPTIONS` preflight requests return `204` with CORS headers.
407
+ - New router/adapter options: `onError(error, request)` to report unexpected errors or return a custom response, and `exposeErrors` to include real messages in 500 responses (defaults to on only when `NODE_ENV === 'development'`).
408
+ - `createNextHandler` returns a callable handler that also exposes per-method properties, so `export { handler as GET }` works as documented.
409
+
410
+ **@critical-path/mcp**
411
+ - Tools excluded via the `tools` option can no longer be called by name.
412
+ - Tool arguments are validated with each tool's zod schema; undeclared fields are stripped.
413
+ - Tool listings include `title` and MCP `readOnlyHint` / `destructiveHint` annotations.
414
+
415
+ **@critical-path/svelte**
416
+ - Rebuilt with the bundled `@critical-path/mcp` WebMCP argument validation.
417
+
418
+ **@critical-path/client**
419
+ - Delete methods resolve to `false` when the server returns `404`, keeping their boolean contract with the new server behaviour.
420
+ - Updated dependencies [b243a37]
421
+ - @critical-path/core@0.22.0
422
+ - @critical-path/mcp@0.7.0
423
+ - @critical-path/client@0.14.7
424
+
425
+ ## 0.16.0
426
+
427
+ ### Minor Changes
428
+
429
+ - f3301bf: - Added comprehensive task lifecycle and semantic status predicates (`isDraftTask`, `isArchivedTask`, `isTrashedTask`, `isTrashedOrArchivedTask`, `isWorkflowTask`, `getTaskSemanticStatus`, `isTaskCompleted`, `isTaskInProgress`, `isTaskNotStarted`, `isTaskCanceled`, `isTaskActive`, `isTaskUnassigned`).
430
+ - Hardened mention extraction with markdown code suppression (`stripMarkdownCode`) to prevent code blocks, inline code, HTML elements, and URLs from triggering false positive mentions while preserving rich-text mention nodes.
431
+ - Added Base-62 fractional indexing utilities (`generateKeyBetween`, `generateNKeysBetween`) for zero-cost lexical task/item reordering without array shifting or bulk database rewrites.
432
+ - Added `completedAt` lifecycle timestamp tracking alongside `actualEndDate`, automatic timestamp assignment upon entering `completed` or `canceled`, and timestamp + progress reset upon reopening to `not_started` or `in_progress`.
433
+ - Added `isTempTaskId` utility and hardened optimistic temporary task handling in `@critical-path/svelte` (`TaskState`) and `@critical-path/react` (`useTasks`) with in-flight creation resolution and ID mapping to prevent 404 errors during rapid optimistic updates and deletions.
434
+
435
+ ### Patch Changes
436
+
437
+ - Updated dependencies [f3301bf]
438
+ - @critical-path/core@0.21.0
439
+ - @critical-path/client@0.14.6
440
+ - @critical-path/mcp@0.6.9
441
+
442
+ ## 0.15.9
443
+
444
+ ### Patch Changes
445
+
446
+ - Updated dependencies [8acf018]
447
+ - @critical-path/client@0.14.5
448
+ - @critical-path/mcp@0.6.8
449
+
450
+ ## 0.15.8
451
+
452
+ ### Patch Changes
453
+
454
+ - Updated dependencies [b8a68dd]
455
+ - @critical-path/core@0.20.2
456
+ - @critical-path/client@0.14.4
457
+ - @critical-path/mcp@0.6.7
458
+
459
+ ## 0.15.7
460
+
461
+ ### Patch Changes
462
+
463
+ - Updated dependencies [500b353]
464
+ - @critical-path/core@0.20.1
465
+ - @critical-path/client@0.14.3
466
+ - @critical-path/mcp@0.6.6
467
+
468
+ ## 0.15.6
469
+
470
+ ### Patch Changes
471
+
472
+ - Updated dependencies [c83235b]
473
+ - @critical-path/core@0.20.0
474
+ - @critical-path/client@0.14.2
475
+ - @critical-path/mcp@0.6.5
476
+
477
+ ## 0.15.5
478
+
479
+ ### Patch Changes
480
+
481
+ - Updated dependencies [f816145]
482
+ - @critical-path/core@0.19.1
483
+ - @critical-path/client@0.14.1
484
+ - @critical-path/mcp@0.6.4
485
+
486
+ ## 0.15.4
487
+
488
+ ### Patch Changes
489
+
490
+ - Updated dependencies [f539a11]
491
+ - @critical-path/client@0.14.0
492
+ - @critical-path/mcp@0.6.3
493
+
494
+ ## 0.15.3
495
+
496
+ ### Patch Changes
497
+
498
+ - Updated dependencies [1c85472]
499
+ - @critical-path/client@0.13.1
500
+ - @critical-path/mcp@0.6.2
501
+
502
+ ## 0.15.2
503
+
504
+ ### Patch Changes
505
+
506
+ - Updated dependencies [b86b6fc]
507
+ - @critical-path/client@0.13.0
508
+ - @critical-path/mcp@0.6.1
509
+
510
+ ## 0.15.1
511
+
512
+ ### Patch Changes
513
+
514
+ - Updated dependencies [31a6dde]
515
+ - Updated dependencies [31a6dde]
516
+ - @critical-path/core@0.19.0
517
+ - @critical-path/mcp@0.6.0
518
+ - @critical-path/client@0.12.1
519
+
520
+ ## 0.15.0
521
+
522
+ ### Minor Changes
523
+
524
+ - adf44f6: Add headless workload and capacity distribution engine for streamgraphs, stacked area charts, and team capacity planning. Features include contiguous calendar bucketing (`day`, `week`, `month`), multi-dimension grouping (`assignee`, `team`, `taskType`, `priority`, `status`), effort metric distribution (`scheduled`, `logged`, `remaining`, `blended`), tabular zero-filled series matrix for D3 stack layouts, and capacity/utilization thresholds.
525
+
526
+ ### Patch Changes
527
+
528
+ - Updated dependencies [adf44f6]
529
+ - @critical-path/core@0.18.0
530
+ - @critical-path/client@0.12.0
531
+ - @critical-path/mcp@0.5.0
532
+
533
+ ## 0.14.0
534
+
535
+ ### Minor Changes
536
+
537
+ - 9c31e8d: Introduce comprehensive Task Metrics, Inferred Actuals, Progress Inference, Earned Value Management (EVM), and Time-Series Progress History Curve Profiling.
538
+ - **Inferred Actuals**: Automatic start/completion auto-stamping on workflow transitions with fallback inference from activity logs, plus automatic completion timestamp clearing on task re-open.
539
+ - **Reality Delta**: Multi-dimensional variance analysis comparing planned estimates to logged hours (`effortVarianceHours`, `durationVarianceHours`, `accuracyRatio`, `isOverdue`, `isOverEstimate`).
540
+ - **Progress Inference**: Deterministic priority waterfall resolving completion progress across explicit values, checklist/todo completion ratios, logged effort, and elapsed schedule time.
541
+ - **Earned Value Management (EVM)**: Task-level PV, EV, AC, CV, SV, CPI, and SPI calculations.
542
+ - **Time-Series History & Curve Shapes**: Historical timeline reconstruction from activity logs with piecewise interpolation curve classification (`linear`, `s_curve`, `early_surge`, `late_rush`, `stalled`).
543
+ - **Full-Stack Integration**: REST endpoints (`/tasks/:id/metrics`, `/tasks/:id/progress-history`), Client SDK methods, React `useTaskMetrics` hook, Svelte 5 `TaskMetricsState`, and MCP tools (`get_task_metrics`, `get_task_progress_history`).
544
+
545
+ ### Patch Changes
546
+
547
+ - Updated dependencies [9c31e8d]
548
+ - @critical-path/core@0.17.0
549
+ - @critical-path/client@0.11.0
550
+ - @critical-path/mcp@0.4.0
551
+
552
+ ## 0.13.1
553
+
554
+ ### Patch Changes
555
+
556
+ - Updated dependencies [b4b2c98]
557
+ - @critical-path/mcp@0.3.1
558
+
559
+ ## 0.13.0
560
+
561
+ ### Minor Changes
562
+
563
+ - e2a7eef: Introduce Ladder of Abstraction and Critical Path Method (CPM) timeline synthesis to the framework data model:
564
+ - **Core Domain**: Multi-scale timeline synthesis model across Macro phase rollups, Standard CPM Gantt schedule (early/late bounds, float/slack calculation, bottleneck identification), and Concrete grounding (deliverables, file attachments, daily effort distribution, and reality deltas). Added `calculateCriticalPath`, `getTimelineLadder`, and `getTaskLadder` to `CriticalPathEngine`.
565
+ - **Server Router**: HTTP endpoints `GET /projects/:id/critical-path`, `GET /projects/:id/ladder`, and `GET /tasks/:id/ladder`.
566
+ - **Client SDK**: `CriticalPathClient` methods `calculateCriticalPath`, `getTimelineLadder`, and `getTaskLadder`.
567
+ - **MCP**: New AI tools `calculate_critical_path`, `get_timeline_ladder`, and `get_task_ladder`.
568
+ - **React**: Custom hooks `useTimelineLadder`, `useCriticalPath`, and `useTaskLadder`.
569
+ - **Svelte 5**: Svelte 5 Runes state classes `TimelineLadderState` and `CriticalPathState`.
570
+
571
+ ### Patch Changes
572
+
573
+ - Updated dependencies [e2a7eef]
574
+ - @critical-path/core@0.16.0
575
+ - @critical-path/client@0.10.0
576
+ - @critical-path/mcp@0.3.0
577
+
578
+ ## 0.12.0
579
+
580
+ ### Minor Changes
581
+
582
+ - 105f3d3: Synchronize feature parity between `@critical-path/react` and `@critical-path/svelte`:
583
+ - `@critical-path/react`: Added `updateTask` with optimistic updates and rollback to `useTasks`, and introduced `useTaskActivity` hook for unified threaded discussions and attachments.
584
+ - `@critical-path/svelte`: Added `KanbanState` (`createKanbanState`), `TaskTransitionsState` (`createTaskTransitionsState`), and `DeliverableSummaryState` (`createDeliverableSummaryState`) using native Svelte 5 runes.
585
+
586
+ ## 0.11.0
587
+
588
+ ### Minor Changes
589
+
590
+ - ed51060: Add Model Context Protocol (MCP) server and client-side WebMCP support:
591
+ - New `@critical-path/mcp` package providing standard MCP server (`createCriticalPathMcpServer`, stdio transport, resources, prompts) and CLI (`npx @critical-path/mcp`).
592
+ - Client-side WebMCP browser integration (`registerWebMcpTools`) adhering to W3C WebML CG specification with ambient project scoping.
593
+ - First-class React hook `useWebMCP` in `@critical-path/react`.
594
+ - First-class Svelte 5 runes state `WebMcpState` and `createWebMcpState` in `@critical-path/svelte`.
595
+
596
+ ### Patch Changes
597
+
598
+ - Updated dependencies [ed51060]
599
+ - @critical-path/mcp@0.2.0
600
+
601
+ ## 0.10.2
602
+
603
+ ### Patch Changes
604
+
605
+ - Updated dependencies [dbd2072]
606
+ - @critical-path/core@0.15.2
607
+ - @critical-path/client@0.9.2
608
+
609
+ ## 0.10.1
610
+
611
+ ### Patch Changes
612
+
613
+ - Updated dependencies [f53afab]
614
+ - @critical-path/core@0.15.1
615
+ - @critical-path/client@0.9.1
616
+
617
+ ## 0.10.0
618
+
619
+ ### Minor Changes
620
+
621
+ - 21eb85c: Implement Universal Semantic Statuses & System-Derived Implied Statuses (3-Tier Status Architecture)
622
+
623
+ - **Tier 1 (Universal Semantic Statuses)**: Defined canonical status enum `SemanticStatus = 'not_started' | 'in_progress' | 'completed' | 'canceled'` providing universal semantic meaning across any industry domain.
624
+ - **Tier 2 (Workflow-Defined Statuses)**: Updated `StatusDefinition` to map domain-specific statuses to a semantic `category`. Updated built-in workflows (Software, Creative, VFX, Simple) to classify statuses by category.
625
+ - **Tier 3 (System-Derived Implied Statuses)**: Added `deriveTaskLifecycleState` and `engine.getTaskLifecycleState(taskId)` returning dynamic indicators:
626
+ - Dependency: `isReady`, `isBlocked`, `blockingTaskIds`
627
+ - Schedule: `isOverdue`, `isUpcoming`, `isUnplanned`
628
+ - Ownership: `isUnassigned`, `isStalled`
629
+ - Estimate/Pace: `isOverEstimate`, `isPaceWarning`
630
+ - Convenience flags: `isDone`, `isActive`, `isCancelled`
631
+ - **Domain Entities & Engine**: Added automatic timestamp progression (`actualStartDate`, `actualEndDate`), progress completion, and event emission driven by semantic status categories.
632
+ - **React UI Hooks**: Updated `useKanban` to support dynamic custom workflow columns without dropping tasks, plus added `groupBy: 'semantic' | 'workflow'` option.
633
+ - **Client SDK**: Added `client.getTaskLifecycleState(taskId)`.
634
+
635
+ ### Patch Changes
636
+
637
+ - Updated dependencies [21eb85c]
638
+ - @critical-path/core@0.15.0
639
+ - @critical-path/client@0.9.0
640
+
641
+ ## 0.9.5
642
+
643
+ ### Patch Changes
644
+
645
+ - Updated dependencies [3dc2798]
646
+ - @critical-path/core@0.14.0
647
+ - @critical-path/client@0.8.4
648
+
649
+ ## 0.9.4
650
+
651
+ ### Patch Changes
652
+
653
+ - Updated dependencies [573a4fa]
654
+ - @critical-path/core@0.13.3
655
+ - @critical-path/client@0.8.3
656
+
657
+ ## 0.9.3
658
+
659
+ ### Patch Changes
660
+
661
+ - Updated dependencies [03d269c]
662
+ - @critical-path/core@0.13.2
663
+ - @critical-path/client@0.8.2
664
+
665
+ ## 0.9.2
666
+
667
+ ### Patch Changes
668
+
669
+ - Updated dependencies [a7d17c0]
670
+ - @critical-path/core@0.13.1
671
+ - @critical-path/client@0.8.1
672
+
673
+ ## 0.9.1
674
+
675
+ ### Patch Changes
676
+
677
+ - Updated dependencies [a4a464b]
678
+ - @critical-path/core@0.13.0
679
+ - @critical-path/client@0.8.0
680
+
681
+ ## 0.9.0
682
+
683
+ ### Minor Changes
684
+
685
+ - 5a5930f: Add first-class Deliverable entity, Creative Workflow presets, and reactive UI bindings:
686
+ - `@critical-path/core`: Added `Deliverable` entity, `DeliverableSummary` rollup computation, `DEFAULT_CREATIVE_WORKFLOW` preset, `deliverableId` on tasks, store implementations (InMemory, SQLite, Firebase), domain events, and webhook integration.
687
+ - `@critical-path/server`: Added RESTful API endpoints for `/deliverables` and `/deliverables/:id/summary`.
688
+ - `@critical-path/client`: Added deliverable management and summary methods to `CriticalPathClient`.
689
+ - `@critical-path/react`: Added `useDeliverables` and `useDeliverableSummary` React hooks.
690
+ - `@critical-path/svelte`: Added `DeliverableState` and `createDeliverableState` Svelte 5 Runes state management.
691
+
692
+ ### Patch Changes
693
+
694
+ - Updated dependencies [5a5930f]
695
+ - @critical-path/core@0.12.0
696
+ - @critical-path/client@0.7.0
697
+
698
+ ## 0.8.0
699
+
700
+ ### Minor Changes
701
+
702
+ - 55549e9: Support @mentions in comments with extraction and segmentation utilities
703
+
704
+ - Add `mentions?: string[]` to `Comment` interface
705
+ - Add `extractMentions` and `parseMentionSegments` utilities for mention parsing and UI rendering
706
+ - Auto-extract and populate mentions during `addComment` and `updateComment` in the engine
707
+ - Update SQLite comments schema with `mentions` column and migration
708
+ - Preserve and pass through mentions in server routes, client SDK, and Svelte bindings
709
+
710
+ ### Patch Changes
711
+
712
+ - Updated dependencies [55549e9]
713
+ - @critical-path/core@0.11.0
714
+ - @critical-path/client@0.6.0
715
+
716
+ ## 0.7.0
717
+
718
+ ### Minor Changes
719
+
720
+ - e9003d3: Add emoji reactions support for comment conversations with domain events, deduplication, REST endpoints, client SDK, and React/Svelte state integrations.
721
+
722
+ ### Patch Changes
723
+
724
+ - Updated dependencies [e9003d3]
725
+ - @critical-path/core@0.10.0
726
+ - @critical-path/client@0.5.0
727
+
728
+ ## 0.6.0
729
+
730
+ ### Minor Changes
731
+
732
+ - e983557: Add first-class optional todo list (checklist) support to Task model and TaskEntity with helper methods (addTodo, toggleTodo, removeTodo) and updateTask helper in @critical-path/svelte.
733
+
734
+ ### Patch Changes
735
+
736
+ - Updated dependencies [e983557]
737
+ - @critical-path/core@0.9.0
738
+ - @critical-path/client@0.4.4
739
+
740
+ ## 0.5.4
741
+
742
+ ### Patch Changes
743
+
744
+ - 9aa53f7: Optimistically remove comments and attachments upon delete with automatic rollback on network failure
745
+
746
+ ## 0.5.3
747
+
748
+ ### Patch Changes
749
+
750
+ - 2d5ff04: fix(core): decode base64 strings and data URIs into binary Uint8Array in storage adapters
751
+ - Updated dependencies [2d5ff04]
752
+ - @critical-path/core@0.8.3
753
+ - @critical-path/client@0.4.3
754
+
755
+ ## 0.5.2
756
+
757
+ ### Patch Changes
758
+
759
+ - fix(core): decode base64 strings and data URIs into binary Uint8Array in storage adapters
760
+ - Updated dependencies
761
+ - @critical-path/core@0.8.2
762
+ - @critical-path/client@0.4.2
763
+
764
+ ## 0.5.1
765
+
766
+ ### Patch Changes
767
+
768
+ - 315425c: fix(core): generate Firebase Storage download tokens and construct valid public URLs
769
+ - Updated dependencies [315425c]
770
+ - @critical-path/core@0.8.1
771
+ - @critical-path/client@0.4.1
772
+
773
+ ## 0.5.0
774
+
775
+ ### Minor Changes
776
+
777
+ - 1811922: Add attachment URL validation against large data URIs, sanitize undefined properties in FirebaseStore, provide direct attachment upload routes & SDK methods, and introduce TaskActivityState for combined comment & attachment threads.
778
+
779
+ ### Patch Changes
780
+
781
+ - Updated dependencies [1811922]
782
+ - @critical-path/core@0.8.0
783
+ - @critical-path/client@0.4.0
784
+
785
+ ## 0.4.0
786
+
787
+ ### Minor Changes
788
+
789
+ - a48a04a: Add threaded conversations, attachment metadata management, and storage adapters (S3 & Firebase Storage):
790
+
791
+ - **`@critical-path/core`**:
792
+ - Added `Attachment` entity, `CreateAttachmentInput`, `UploadFileInput`, and `FileStorageAdapter` contracts.
793
+ - Added `InMemoryFileStore`, duck-typed `S3StorageAdapter` (compatible with AWS SDK v3, v2, MinIO, and Cloudflare R2), and `FirebaseStorageAdapter` (compatible with Google Cloud Storage and Firebase Admin SDK).
794
+ - Extended `Comment` with `authorType` (`user`, `agent`, `system`) and `parentId` for threaded discussions.
795
+ - Implemented full comment and attachment repository methods across `InMemoryStore`, `SQLiteStore`, and `FirebaseStore`.
796
+ - Added engine operations for upload, presigning, and deleting attachments with domain events (`comment.*`, `attachment.*`) and webhooks.
797
+
798
+ - **`@critical-path/server`**:
799
+ - Added RESTful routes for comments (`GET/POST /tasks/:taskId/comments`, `GET/POST /comments`, `GET/PATCH/DELETE /comments/:id`).
800
+ - Added RESTful routes for attachments (`GET/POST /tasks/:taskId/attachments`, `GET/POST /attachments`, `GET/DELETE /attachments/:id`, `POST /attachments/presign`).
801
+
802
+ - **`@critical-path/client`**:
803
+ - Added SDK methods `getComments`, `getComment`, `addComment`, `updateComment`, `deleteComment`.
804
+ - Added SDK methods `getAttachments`, `getAttachment`, `createAttachment`, `deleteAttachment`, and `getPresignedAttachmentUploadUrl`.
805
+
806
+ - **`@critical-path/react`**:
807
+ - Added `useComments(taskId)` with reactive thread tree derivation (`threads` containing nested `replies`) and comment mutations.
808
+ - Added `useAttachments(filter)` with attachment creation and deletion.
809
+
810
+ - **`@critical-path/svelte`**:
811
+ - Added Svelte 5 Rune-based `CommentState` / `createCommentState(client, taskId)` with derived threaded hierarchy.
812
+ - Added Svelte 5 Rune-based `AttachmentState` / `createAttachmentState(client, filter)`.
813
+
814
+ ### Patch Changes
815
+
816
+ - Updated dependencies [a48a04a]
817
+ - @critical-path/core@0.7.0
818
+ - @critical-path/client@0.3.0
819
+
820
+ ## 0.3.4
821
+
822
+ ### Patch Changes
823
+
824
+ - Updated dependencies [6e9dece]
825
+ - @critical-path/core@0.6.0
826
+ - @critical-path/client@0.2.4
827
+
828
+ ## 0.3.3
829
+
830
+ ### Patch Changes
831
+
832
+ - Updated dependencies [c24b76c]
833
+ - @critical-path/core@0.5.2
834
+ - @critical-path/client@0.2.3
835
+
836
+ ## 0.3.2
837
+
838
+ ### Patch Changes
839
+
840
+ - Updated dependencies [34067fd]
841
+ - @critical-path/core@0.5.1
842
+ - @critical-path/client@0.2.2
843
+
844
+ ## 0.3.1
845
+
846
+ ### Patch Changes
847
+
848
+ - Updated dependencies [83a5c17]
849
+ - @critical-path/core@0.5.0
850
+ - @critical-path/client@0.2.1
851
+
852
+ ## 0.3.0
853
+
854
+ ### Minor Changes
855
+
856
+ - 35576a6: Introduce Workflow concept to the project management model with status definitions, allowed transition validation, task types, webhook events (workflow.created, workflow.updated, workflow.deleted), server routes, SDK methods, and React/Svelte state hooks.
857
+
858
+ ### Patch Changes
859
+
860
+ - Updated dependencies [35576a6]
861
+ - @critical-path/core@0.4.0
862
+ - @critical-path/client@0.2.0
863
+
864
+ ## 0.2.4
865
+
866
+ ### Patch Changes
867
+
868
+ - Updated dependencies [4b92228]
869
+ - @critical-path/core@0.3.0
870
+ - @critical-path/client@0.1.5
871
+
872
+ ## 0.2.3
873
+
874
+ ### Patch Changes
875
+
876
+ - 3470b61: add optimistic updates with error rollback to Svelte state classes and React hooks
877
+
878
+ ## 0.2.2
879
+
880
+ ### Patch Changes
881
+
882
+ - Updated dependencies [df22aad]
883
+ - @critical-path/core@0.2.1
884
+ - @critical-path/client@0.1.4
885
+
886
+ ## 0.2.1
887
+
888
+ ### Patch Changes
889
+
890
+ - 5160802: Publish Svelte 5 Runes state classes on 0.2.x prerelease line.
891
+
892
+ ## 1.0.0
893
+
894
+ ### Major Changes
895
+
896
+ - 283e450: Modernize `@critical-path/svelte` for Svelte 5 Runes:
897
+ - Replaced Svelte 4 legacy stores (`createProjectStore`, `createTaskStore`) with Svelte 5 Runes state classes and factories (`ProjectState`, `createProjectState`, `TaskState`, `createTaskState`).
898
+ - Updated peer dependency requirement to `svelte: ^5.0.0`.
899
+ - Components now access reactive state properties directly (e.g. `taskState.data`, `projectState.loading`) without `$` store auto-subscriptions.
900
+
901
+ ## 0.1.3
902
+
903
+ ### Patch Changes
904
+
905
+ - Updated dependencies [755286a]
906
+ - @critical-path/core@0.2.0
907
+ - @critical-path/client@0.1.3
908
+
909
+ ## 0.1.2
910
+
911
+ ### Patch Changes
912
+
913
+ - Initial open-source release of Svelte reactive store factories (`createProjectStore`, `createTaskStore`).
package/README.md CHANGED
@@ -2,6 +2,9 @@
2
2
 
3
3
  > **Svelte 5 Runes Reactive Integrations for Critical Path.**
4
4
 
5
+ > **Upgrading?** Upgrade every `@critical-path/*` package together. Coding agents: follow [UPGRADING.md](https://github.com/Pixerate/critical-path/blob/main/UPGRADING.md); breaking changes are marked **BREAKING** in this package's `CHANGELOG.md`.
6
+
7
+
5
8
  `@critical-path/svelte` provides Svelte 5 Runes reactive state classes and factories (`ProjectState`, `TaskState`, `KanbanState`, `TaskTransitionsState`, `WorkflowState`, `CommentState`, `AttachmentState`, `TaskActivityState`, `DeliverableState`, `DeliverableSummaryState`, `WebMcpState`) for building project management UIs in Svelte 5 and SvelteKit applications.
6
9
 
7
10
  ---
package/dist/index.js CHANGED
@@ -4586,7 +4586,7 @@ var xn = $({
4586
4586
  }), wn = $({
4587
4587
  name: "list_tasks",
4588
4588
  title: "List Tasks",
4589
- description: "List tasks (oldest first), optionally filtered by project, status, priority, assignee or iteration. Returns { tasks, nextCursor }; pass nextCursor back as cursor to get the next page.",
4589
+ description: "List tasks (oldest first), optionally filtered by project, status, priority, assignee, iteration, deliverable, container or parent task ('none' for top-level tasks). Returns { tasks, nextCursor }; pass nextCursor back as cursor to get the next page.",
4590
4590
  zodSchema: W({
4591
4591
  projectId: z().optional().describe("Filter by project ID"),
4592
4592
  status: z().optional().describe("Filter by task status key"),
@@ -4599,6 +4599,9 @@ var xn = $({
4599
4599
  ]).optional().describe("Filter by priority"),
4600
4600
  assigneeId: z().optional().describe("Filter by assignee ID"),
4601
4601
  iterationId: z().optional().describe("Filter by iteration (sprint) ID"),
4602
+ deliverableId: z().optional().describe("Filter by deliverable ID"),
4603
+ containerId: z().optional().describe("Filter by container (e.g. epic) ID"),
4604
+ parentId: z().optional().describe("Subtasks of this task ID, or 'none' for top-level tasks only"),
4602
4605
  limit: B().int().min(1).max(500).optional().describe("Page size (default 100)"),
4603
4606
  cursor: z().optional().describe("nextCursor from a previous call")
4604
4607
  }),
@@ -4610,6 +4613,9 @@ var xn = $({
4610
4613
  priority: e.priority ? [e.priority] : void 0,
4611
4614
  assigneeId: e.assigneeId,
4612
4615
  iterationId: e.iterationId,
4616
+ deliverableId: e.deliverableId,
4617
+ containerId: e.containerId,
4618
+ ...e.parentId ? { parentId: e.parentId === "none" ? null : e.parentId } : {},
4613
4619
  limit: e.limit,
4614
4620
  cursor: e.cursor
4615
4621
  });
@@ -4633,7 +4639,7 @@ var xn = $({
4633
4639
  projectId: z().optional().describe("Project ID (inferred from active view in browser if omitted)"),
4634
4640
  title: z().describe("Title of the task"),
4635
4641
  description: z().optional().describe("Detailed description / markdown"),
4636
- status: z().optional().describe("Status (defaults to \"todo\" or first workflow status)"),
4642
+ status: z().optional().describe("Status key (defaults to the project workflow's default status)"),
4637
4643
  priority: K([
4638
4644
  "urgent",
4639
4645
  "high",
@@ -4657,7 +4663,7 @@ var xn = $({
4657
4663
  projectId: r,
4658
4664
  title: e.title,
4659
4665
  description: e.description,
4660
- status: e.status || "todo",
4666
+ ...e.status ? { status: e.status } : {},
4661
4667
  priority: e.priority || "none",
4662
4668
  assigneeId: e.assigneeId,
4663
4669
  dueDate: e.dueDate,
@@ -4947,6 +4953,10 @@ function In(e) {
4947
4953
  let t = e.document ?? (typeof document < "u" ? document : null), n = e.navigator ?? (typeof navigator < "u" ? navigator : null), r = e.window ?? (typeof window < "u" ? window : null), i;
4948
4954
  t?.modelContext ? i = t.modelContext : n?.modelContext ? i = n.modelContext : t && (i = Fn(t) ?? void 0);
4949
4955
  let a = e.tools ? Pn.filter((t) => e.tools.includes(t.name)) : Pn, o = [], s = new AbortController();
4956
+ if (e.signal?.aborted) return {
4957
+ unregister: () => {},
4958
+ getRegisteredTools: () => []
4959
+ };
4950
4960
  e.signal && e.signal.addEventListener("abort", () => s.abort(), { once: !0 });
4951
4961
  for (let t of a) {
4952
4962
  let n = {
@@ -4954,7 +4964,10 @@ function In(e) {
4954
4964
  title: t.title,
4955
4965
  description: t.description,
4956
4966
  inputSchema: t.inputSchema,
4957
- annotations: t.annotations,
4967
+ annotations: {
4968
+ readOnlyHint: t.annotations?.readOnlyHint ?? !1,
4969
+ destructiveHint: t.annotations?.requiresConfirmation ?? !1
4970
+ },
4958
4971
  execute: async (n) => {
4959
4972
  let r = e.projectId ? { projectId: e.projectId } : void 0, i = await t.execute(bn(t, n), e.client, r);
4960
4973
  return e.onToolExecuted?.(t.name, n, i), i;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@critical-path/svelte",
3
- "version": "0.18.18",
3
+ "version": "0.18.20",
4
4
  "description": "Svelte 5 Runes state and reactive integrations for Critical Path headless project management framework",
5
5
  "author": "Jack James",
6
6
  "license": "MIT",
@@ -18,9 +18,9 @@
18
18
  }
19
19
  },
20
20
  "dependencies": {
21
- "@critical-path/core": "0.50.0",
22
- "@critical-path/client": "0.24.5",
23
- "@critical-path/mcp": "0.17.2"
21
+ "@critical-path/core": "0.51.1",
22
+ "@critical-path/client": "0.25.1",
23
+ "@critical-path/mcp": "0.18.1"
24
24
  },
25
25
  "peerDependencies": {
26
26
  "svelte": "^5.0.0"
@@ -38,6 +38,7 @@
38
38
  },
39
39
  "files": [
40
40
  "dist",
41
+ "CHANGELOG.md",
41
42
  "!dist/**/*.test.*"
42
43
  ],
43
44
  "scripts": {