things-api 0.7.0 → 0.8.0

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 (114) hide show
  1. package/README.md +3 -1
  2. package/dist/cli/commands/area.d.ts +14 -0
  3. package/dist/cli/commands/area.js +107 -33
  4. package/dist/cli/commands/area.js.map +1 -1
  5. package/dist/cli/commands/project.d.ts +14 -0
  6. package/dist/cli/commands/project.js +114 -30
  7. package/dist/cli/commands/project.js.map +1 -1
  8. package/dist/cli/commands/reads.d.ts +90 -12
  9. package/dist/cli/commands/reads.js +534 -74
  10. package/dist/cli/commands/reads.js.map +1 -1
  11. package/dist/cli/commands/show.d.ts +9 -0
  12. package/dist/cli/commands/show.js +41 -0
  13. package/dist/cli/commands/show.js.map +1 -0
  14. package/dist/cli/commands/todo.d.ts +9 -0
  15. package/dist/cli/commands/todo.js +89 -15
  16. package/dist/cli/commands/todo.js.map +1 -1
  17. package/dist/cli/commands/writes.js +55 -1
  18. package/dist/cli/commands/writes.js.map +1 -1
  19. package/dist/cli/glyphs.d.ts +72 -0
  20. package/dist/cli/glyphs.js +169 -0
  21. package/dist/cli/glyphs.js.map +1 -0
  22. package/dist/cli/main.js +2 -0
  23. package/dist/cli/main.js.map +1 -1
  24. package/dist/cli/style.d.ts +5 -0
  25. package/dist/cli/style.js +5 -0
  26. package/dist/cli/style.js.map +1 -1
  27. package/dist/client.d.ts +33 -36
  28. package/dist/client.js +9 -73
  29. package/dist/client.js.map +1 -1
  30. package/dist/contracts.d.ts +1 -1
  31. package/dist/contracts.js +1 -1
  32. package/dist/db/baselines/db-v26.js +7 -5
  33. package/dist/db/baselines/db-v26.js.map +1 -1
  34. package/dist/db/schema.d.ts +1 -1
  35. package/dist/db/schema.js +7 -1
  36. package/dist/db/schema.js.map +1 -1
  37. package/dist/mcp/server.js +19 -0
  38. package/dist/mcp/server.js.map +1 -1
  39. package/dist/model/entities.d.ts +12 -0
  40. package/dist/model/entities.js.map +1 -1
  41. package/dist/model/mappers.js +4 -0
  42. package/dist/model/mappers.js.map +1 -1
  43. package/dist/model/occurrences.js +4 -1
  44. package/dist/model/occurrences.js.map +1 -1
  45. package/dist/model/recurrence.d.ts +21 -2
  46. package/dist/model/recurrence.js +20 -0
  47. package/dist/model/recurrence.js.map +1 -1
  48. package/dist/read/area-view.js +21 -5
  49. package/dist/read/area-view.js.map +1 -1
  50. package/dist/read/detail.js +12 -2
  51. package/dist/read/detail.js.map +1 -1
  52. package/dist/read/log-boundary.d.ts +24 -0
  53. package/dist/read/log-boundary.js +38 -0
  54. package/dist/read/log-boundary.js.map +1 -0
  55. package/dist/read/project-view.js +28 -3
  56. package/dist/read/project-view.js.map +1 -1
  57. package/dist/read/queries.d.ts +14 -1
  58. package/dist/read/queries.js +25 -2
  59. package/dist/read/queries.js.map +1 -1
  60. package/dist/read/show-target.d.ts +16 -0
  61. package/dist/read/show-target.js +32 -0
  62. package/dist/read/show-target.js.map +1 -0
  63. package/dist/read/snapshot.js +2 -0
  64. package/dist/read/snapshot.js.map +1 -1
  65. package/dist/read/views.d.ts +25 -3
  66. package/dist/read/views.js +176 -21
  67. package/dist/read/views.js.map +1 -1
  68. package/dist/write/automation-probe.js +14 -6
  69. package/dist/write/automation-probe.js.map +1 -1
  70. package/dist/write/capabilities.d.ts +3 -0
  71. package/dist/write/capabilities.js +2 -0
  72. package/dist/write/capabilities.js.map +1 -1
  73. package/dist/write/checklist.d.ts +50 -0
  74. package/dist/write/checklist.js +61 -0
  75. package/dist/write/checklist.js.map +1 -0
  76. package/dist/write/clear-reminder.d.ts +3 -0
  77. package/dist/write/clear-reminder.js +205 -0
  78. package/dist/write/clear-reminder.js.map +1 -0
  79. package/dist/write/commands.js +122 -8
  80. package/dist/write/commands.js.map +1 -1
  81. package/dist/write/edit-checklist.d.ts +3 -0
  82. package/dist/write/edit-checklist.js +184 -0
  83. package/dist/write/edit-checklist.js.map +1 -0
  84. package/dist/write/failure-hints.d.ts +7 -0
  85. package/dist/write/failure-hints.js +25 -2
  86. package/dist/write/failure-hints.js.map +1 -1
  87. package/dist/write/guards.d.ts +1 -1
  88. package/dist/write/guards.js +16 -0
  89. package/dist/write/guards.js.map +1 -1
  90. package/dist/write/operations.d.ts +32 -1
  91. package/dist/write/operations.js +3 -0
  92. package/dist/write/operations.js.map +1 -1
  93. package/dist/write/pipeline.d.ts +3 -0
  94. package/dist/write/pipeline.js +23 -1
  95. package/dist/write/pipeline.js.map +1 -1
  96. package/dist/write/reversibility.d.ts +46 -0
  97. package/dist/write/reversibility.js +164 -0
  98. package/dist/write/reversibility.js.map +1 -0
  99. package/dist/write/undo.d.ts +29 -2
  100. package/dist/write/undo.js +356 -9
  101. package/dist/write/undo.js.map +1 -1
  102. package/dist/write/vectors/registry.js +2 -1
  103. package/dist/write/vectors/registry.js.map +1 -1
  104. package/dist/write/vectors/shortcuts.d.ts +9 -0
  105. package/dist/write/vectors/shortcuts.js +90 -0
  106. package/dist/write/vectors/shortcuts.js.map +1 -0
  107. package/dist/write/vectors/types.d.ts +11 -3
  108. package/dist/write/vectors/url-scheme.js +16 -0
  109. package/dist/write/vectors/url-scheme.js.map +1 -1
  110. package/dist/write/verify/delta.d.ts +1 -1
  111. package/dist/write/verify/delta.js +1 -1
  112. package/dist/write/verify/delta.js.map +1 -1
  113. package/package.json +1 -1
  114. package/shortcuts/things-proxy-find-items.shortcut +0 -0
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Loose reference classification for `things show` / the `open` commands:
3
+ * anything a user might copy — a full uuid, a >=6-char uuid prefix, a
4
+ * things:/// share link, or an area name — resolves to the resource class
5
+ * that has a show view. Headings resolve to their CONTAINING PROJECT (they
6
+ * have no view of their own); tags and checklist items are rejected (no
7
+ * show view; their uuids simply never match TMTask/TMArea).
8
+ */
9
+ import type { DatabaseSync } from "node:sqlite";
10
+ export interface ShowTarget {
11
+ kind: "to-do" | "project" | "area";
12
+ uuid: string;
13
+ /** True when the ref was a HEADING resolved to its project — strict noun commands reject these. */
14
+ viaHeading?: boolean;
15
+ }
16
+ export declare function classifyShowTarget(db: DatabaseSync, ref: string): ShowTarget;
@@ -0,0 +1,32 @@
1
+ import { resolveAreaUuid, resolveTaskUuidPrefix, stripThingsUri } from "./queries.js";
2
+ export function classifyShowTarget(db, ref) {
3
+ const stripped = stripThingsUri(ref);
4
+ try {
5
+ const uuid = resolveTaskUuidPrefix(db, stripped);
6
+ const row = db.prepare("SELECT type, project FROM TMTask WHERE uuid = ?").get(uuid);
7
+ if (row.type === 1)
8
+ return { kind: "project", uuid };
9
+ if (row.type === 2) {
10
+ if (row.project === null)
11
+ throw new RangeError(`heading ${uuid} has no containing project to show`);
12
+ return { kind: "project", uuid: row.project, viaHeading: true };
13
+ }
14
+ return { kind: "to-do", uuid };
15
+ }
16
+ catch (err) {
17
+ // An ambiguous prefix lists its candidates — surface that verbatim.
18
+ // Plain not-found (or a too-short ref, e.g. an area name like "Home")
19
+ // falls through to area resolution.
20
+ if (err instanceof RangeError && err.message.includes("ambiguous"))
21
+ throw err;
22
+ if (!(err instanceof RangeError))
23
+ throw err;
24
+ }
25
+ try {
26
+ return { kind: "area", uuid: resolveAreaUuid(db, stripped) };
27
+ }
28
+ catch {
29
+ throw new RangeError(`no to-do, project, or area matches "${ref}" (tags and checklist items have no show view)`);
30
+ }
31
+ }
32
+ //# sourceMappingURL=show-target.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"show-target.js","sourceRoot":"","sources":["../../src/read/show-target.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAStF,MAAM,UAAU,kBAAkB,CAAC,EAAgB,EAAE,GAAW;IAC9D,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,qBAAqB,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,iDAAiD,CAAC,CAAC,GAAG,CAAC,IAAI,CAGjF,CAAC;QACF,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QACrD,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACnB,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI;gBACtB,MAAM,IAAI,UAAU,CAAC,WAAW,IAAI,oCAAoC,CAAC,CAAC;YAC5E,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAClE,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACjC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,oEAAoE;QACpE,sEAAsE;QACtE,oCAAoC;QACpC,IAAI,GAAG,YAAY,UAAU,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;YAAE,MAAM,GAAG,CAAC;QAC9E,IAAI,CAAC,CAAC,GAAG,YAAY,UAAU,CAAC;YAAE,MAAM,GAAG,CAAC;IAC9C,CAAC;IACD,IAAI,CAAC;QACH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,UAAU,CAClB,uCAAuC,GAAG,gDAAgD,CAC3F,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { q, selectList } from "../db/schema.js";
2
2
  import { mapChecklistItem, mapHeading, mapProject, mapTodo, } from "../model/mappers.js";
3
3
  import { fetchTagsForTasks, fetchTaskRows, makeRefResolver } from "./queries.js";
4
+ import { logBoundary, markLogged } from "./log-boundary.js";
4
5
  import { areasView, tagsView } from "./tags.js";
5
6
  export function snapshotView(db) {
6
7
  const areas = areasView(db);
@@ -14,6 +15,7 @@ export function snapshotView(db) {
14
15
  const rowTags = tagMap.get(row.uuid) ?? [];
15
16
  return row.type === 1 ? mapProject(row, refs, rowTags) : mapTodo(row, refs, rowTags);
16
17
  });
18
+ markLogged(tasks.filter((t) => t.type !== "heading"), logBoundary(db));
17
19
  const checklistRows = db
18
20
  .prepare(`SELECT ${selectList("TMChecklistItem")} FROM TMChecklistItem ORDER BY ${q("uuid")} ASC`)
19
21
  .all();
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/read/snapshot.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,OAAO,GAER,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAmBhD,MAAM,UAAU,YAAY,CAAC,EAAgB;IAC3C,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;IAC5B,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC1B,MAAM,IAAI,GAAG,aAAa,CAAC,EAAE,EAAE,yBAAyB,CAAC,CAAC;IAC1D,MAAM,IAAI,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,iBAAiB,CAC9B,EAAE,EACF,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CACxB,CAAC;IACF,MAAM,KAAK,GAAc,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACxC,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC3C,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;IACH,MAAM,aAAa,GAAG,EAAE;SACrB,OAAO,CACN,UAAU,UAAU,CAAC,iBAAiB,CAAC,kCAAkC,CAAC,CAAC,MAAM,CAAC,MAAM,CACzF;SACA,GAAG,EAA+B,CAAC;IACtC,MAAM,cAAc,GAAG,aAAa,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAE3D,OAAO;QACL,KAAK;QACL,IAAI;QACJ,KAAK;QACL,cAAc;QACd,MAAM,EAAE;YACN,KAAK,EAAE,KAAK,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,CAAC,MAAM;YACjB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM;YAC9C,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM;YACjD,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM;YACjD,cAAc,EAAE,cAAc,CAAC,MAAM;YACrC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM;YACnD,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC;iBACzF,MAAM;SACV;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/read/snapshot.ts"],"names":[],"mappings":"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"}
@@ -46,6 +46,7 @@
46
46
  * untrashed (unless trash), repeating TEMPLATE rows excluded.
47
47
  */
48
48
  import type { DatabaseSync } from "node:sqlite";
49
+ import { type IsoDate } from "../model/dates.ts";
49
50
  import type { Project, Ref, Todo } from "../model/entities.ts";
50
51
  export type ListItem = Todo | Project;
51
52
  /** Optional list-view filters. */
@@ -97,6 +98,13 @@ export interface UpcomingFilter extends ViewFilter {
97
98
  * 10) — projections are host math the app has not materialized yet.
98
99
  */
99
100
  horizon?: number;
101
+ /**
102
+ * Only rows scheduled on/before this date (inclusive). Dated rows and
103
+ * template occurrences beyond it are dropped; the dateless resting
104
+ * templates (the trailing Repeating To-Dos section) always survive —
105
+ * a date bound cannot apply to rows with no date.
106
+ */
107
+ until?: IsoDate;
100
108
  }
101
109
  export declare function upcomingView(db: DatabaseSync, now?: Date, filter?: UpcomingFilter): ListItem[];
102
110
  export interface SomedayFilter extends ViewFilter {
@@ -109,15 +117,29 @@ export interface SomedayFilter extends ViewFilter {
109
117
  activeProjectItems?: boolean;
110
118
  }
111
119
  export declare function somedayView(db: DatabaseSync, now?: Date, filter?: SomedayFilter): SidebarSection[];
112
- export declare function logbookView(db: DatabaseSync, options?: {
120
+ export interface LogbookFilter extends ViewFilter {
113
121
  limit?: number;
114
- tag?: string;
115
- }): ListItem[];
122
+ /**
123
+ * Area scope: the area's direct items, its project rows, and every to-do
124
+ * of its projects — INCLUDING heading-nested ones (heading → project →
125
+ * area). Uuid or unique name.
126
+ */
127
+ area?: string;
128
+ /** Project scope: ALL children, heading-nested included. Uuid or unique name. */
129
+ project?: string;
130
+ /** Only entries logged at/after this instant. */
131
+ since?: Date;
132
+ /** Only entries logged at/before this instant. */
133
+ until?: Date;
134
+ }
135
+ export declare function logbookView(db: DatabaseSync, options?: LogbookFilter): ListItem[];
116
136
  export declare function trashView(db: DatabaseSync, options?: {
117
137
  limit?: number;
118
138
  }): ListItem[];
119
139
  export declare function projectsView(db: DatabaseSync, options?: {
120
140
  areaUuid?: string;
141
+ later?: boolean;
142
+ now?: Date;
121
143
  }): Project[];
122
144
  export interface SearchOptions extends ViewFilter {
123
145
  limit?: number;
@@ -1,8 +1,9 @@
1
1
  import { addDaysIso, encodePackedDate, localToday } from "../model/dates.js";
2
+ import { logBoundary, markLogged } from "./log-boundary.js";
2
3
  import { mapProject, mapTodo } from "../model/mappers.js";
3
4
  import { projectOccurrences } from "../model/occurrences.js";
4
5
  import { decodeRecurrenceRule } from "../model/recurrence.js";
5
- import { fetchTagsForTasks, fetchTaskRows, makeRefResolver, NOT_TEMPLATE, resolveAreaUuid, resolveProjectUuid, resolveTagUuid, tagScopeBinds, tagScopeSql, tagWithDescendants, } from "./queries.js";
6
+ import { fetchTagsForTasks, fetchTaskRows, makeHeadingProjectResolver, makeRefResolver, NOT_TEMPLATE, resolveAreaUuid, resolveProjectUuid, resolveTagUuid, tagScopeBinds, tagScopeSql, tagWithDescendants, } from "./queries.js";
6
7
  function tagFilter(db, filter) {
7
8
  if (filter?.tag === undefined)
8
9
  return { sql: "", binds: [] };
@@ -14,10 +15,20 @@ const LIVE = `t.type IN (0, 1) AND t.trashed = 0 AND ${NOT_TEMPLATE}`;
14
15
  const OPEN = `${LIVE} AND t.status = 0`;
15
16
  function materialize(db, rows) {
16
17
  const refs = makeRefResolver(db);
18
+ const headingProject = makeHeadingProjectResolver(db);
17
19
  const tags = fetchTagsForTasks(db, rows.map((r) => r.uuid));
18
- return rows.map((row) => row.type === 1
19
- ? mapProject(row, refs, tags.get(row.uuid) ?? [])
20
- : mapTodo(row, refs, tags.get(row.uuid) ?? []));
20
+ const items = rows.map((row) => {
21
+ if (row.type === 1)
22
+ return mapProject(row, refs, tags.get(row.uuid) ?? []);
23
+ const todo = mapTodo(row, refs, tags.get(row.uuid) ?? []);
24
+ if (todo.heading !== null) {
25
+ const p = headingProject(todo.heading.uuid);
26
+ if (p !== null)
27
+ todo.headingProject = p;
28
+ }
29
+ return todo;
30
+ });
31
+ return markLogged(items, logBoundary(db));
21
32
  }
22
33
  export function todayView(db, now, filter) {
23
34
  const todayIso = localToday(now);
@@ -34,7 +45,7 @@ export function todayView(db, now, filter) {
34
45
  // (the date the item ENTERED Today: its startDate, or its deadline for
35
46
  // deadline-driven members), then todayIndex ASC, then uuid (observed
36
47
  // stable tiebreak).
37
- const rows = fetchTaskRows(db, `${OPEN} AND (
48
+ const rows = fetchTaskRows(db, `${OPEN} AND ${CONTAINER_UNTRASHED} AND (
38
49
  (t.startDate IS NOT NULL AND t.startDate <= ? AND t.start IN (1, 2))
39
50
  OR (t.deadline IS NOT NULL AND t.deadline <= ? AND t.startDate IS NULL
40
51
  AND (t.deadlineSuppressionDate IS NULL OR t.deadlineSuppressionDate < t.deadline))
@@ -76,6 +87,21 @@ const EFF_PROJECT = `COALESCE(t.project, (SELECT h.project FROM TMTask h WHERE h
76
87
  const PROJECT_ANYTIME_ACTIVE = `(${EFF_PROJECT} IS NULL OR EXISTS (
77
88
  SELECT 1 FROM TMTask p WHERE p.uuid = ${EFF_PROJECT}
78
89
  AND p.trashed = 0 AND p.status = 0 AND ${ANYTIME_SELF("p")}))`;
90
+ /**
91
+ * DERIVED-trash exclusion: project deletion is SHALLOW (A24B — only the
92
+ * project row flips trashed=1; children keep trashed=0 and their links, so
93
+ * their Trash membership is derived through the container chain). Every live
94
+ * view must therefore check the chain, not just the row's own flag: the
95
+ * heading (if any) and the effective project (direct or via heading) must
96
+ * both be untrashed. Areas cannot be trashed (they delete permanently), so
97
+ * the chain is at most heading → project. Trash-adjacent surfaces stay
98
+ * exempt on purpose: `things trash` lists directly-flagged rows, and a
99
+ * trashed project's OWN view shows its would-be-recovered children.
100
+ */
101
+ const CONTAINER_UNTRASHED = `(t.heading IS NULL OR EXISTS (
102
+ SELECT 1 FROM TMTask hh WHERE hh.uuid = t.heading AND hh.trashed = 0))
103
+ AND (${EFF_PROJECT} IS NULL OR EXISTS (
104
+ SELECT 1 FROM TMTask cc WHERE cc.uuid = ${EFF_PROJECT} AND cc.trashed = 0))`;
79
105
  export function anytimeView(db, now, filter) {
80
106
  const packedToday = encodePackedDate(localToday(now));
81
107
  const tf = tagFilter(db, filter);
@@ -183,9 +209,13 @@ export function isTodayMember(item, now) {
183
209
  }
184
210
  export function upcomingView(db, now, filter) {
185
211
  const packedToday = encodePackedDate(localToday(now));
212
+ const until = filter?.until;
213
+ const untilSql = until === undefined ? "" : " AND t.startDate <= ?";
214
+ const untilBinds = until === undefined ? [] : [encodePackedDate(until)];
186
215
  const tf = tagFilter(db, filter);
187
- const rows = fetchTaskRows(db, `${OPEN} AND t.start = 2 AND t.startDate IS NOT NULL AND t.startDate > ?${tf.sql}
188
- ORDER BY t.startDate ASC, t."index" ASC`, [packedToday, ...tf.binds]);
216
+ const rows = fetchTaskRows(db, `${OPEN} AND ${CONTAINER_UNTRASHED}
217
+ AND t.start = 2 AND t.startDate IS NOT NULL AND t.startDate > ?${untilSql}${tf.sql}
218
+ ORDER BY t.startDate ASC, t."index" ASC`, [packedToday, ...untilBinds, ...tf.binds]);
189
219
  const items = materialize(db, rows);
190
220
  if (filter?.repeats === false)
191
221
  return items;
@@ -194,11 +224,11 @@ export function upcomingView(db, now, filter) {
194
224
  // completion templates carry no next date until the prior instance
195
225
  // resolves; paused templates are excluded. The occurrence deadline follows
196
226
  // the instance-validated model: deadline = startDate − rule.startOffsetDays.
197
- const templateRows = fetchTaskRows(db, `t.type IN (0, 1) AND t.trashed = 0 AND t.status = 0
227
+ const templateRows = fetchTaskRows(db, `t.type IN (0, 1) AND t.trashed = 0 AND t.status = 0 AND ${CONTAINER_UNTRASHED}
198
228
  AND (t.rt1_recurrenceRule IS NOT NULL OR t.repeater IS NOT NULL)
199
229
  AND t.rt1_instanceCreationPaused = 0
200
- AND t.rt1_nextInstanceStartDate IS NOT NULL AND t.rt1_nextInstanceStartDate > ?${tf.sql}
201
- ORDER BY t.rt1_nextInstanceStartDate ASC, t."index" ASC`, [packedToday, ...tf.binds]);
230
+ AND t.rt1_nextInstanceStartDate IS NOT NULL AND t.rt1_nextInstanceStartDate > ?${until === undefined ? "" : " AND t.rt1_nextInstanceStartDate <= ?"}${tf.sql}
231
+ ORDER BY t.rt1_nextInstanceStartDate ASC, t."index" ASC`, [packedToday, ...untilBinds, ...tf.binds]);
202
232
  const horizon = Math.max(1, Math.min(10, Math.trunc(filter?.horizon ?? 1)));
203
233
  const rawByUuid = new Map(templateRows.map((r) => [r.uuid, r.rt1_recurrenceRule]));
204
234
  const occurrences = materialize(db, templateRows).flatMap((template) => {
@@ -218,25 +248,62 @@ export function upcomingView(db, now, filter) {
218
248
  }
219
249
  }
220
250
  if (rule === null || horizon === 1 || rule.type !== "fixed") {
221
- const deadline = rule !== null && rule.startOffsetDays < 0
251
+ // Corpus-validated 2026-07-11 (1,900+ live instances): FIXED rules
252
+ // always deadline their occurrences at the event date — start − ts,
253
+ // INCLUDING ts=0 (deadline = the start date itself; birthday-style
254
+ // repeats). After-completion rules deadline only when ts < 0.
255
+ const deadline = rule !== null && (rule.type === "fixed" || rule.startOffsetDays < 0)
222
256
  ? addDaysIso(startDate, -rule.startOffsetDays)
223
257
  : null;
224
258
  return [{ ...template, startDate, deadline }];
225
259
  }
226
260
  // horizon > 1: later occurrences PROJECTED from the decoded rule,
227
- // anchored on the app's own materialized next instance.
228
- return projectOccurrences(rule, startDate, { count: horizon }).map((o) => ({
261
+ // anchored on the app's own materialized next instance. The until bound
262
+ // clips projections the same way it clips stored rows.
263
+ return projectOccurrences(rule, startDate, {
264
+ count: horizon,
265
+ ...(until !== undefined && { until }),
266
+ })
267
+ .filter((o) => until === undefined || o.startDate <= until)
268
+ .map((o) => ({
229
269
  ...template,
230
270
  startDate: o.startDate,
231
271
  deadline: o.deadline,
232
272
  }));
233
273
  });
234
- return [...items, ...occurrences]
274
+ // Within a day the UI's drag order is todayIndex ASC (live-verified
275
+ // 2026-07-11 against the GUI: plain `index` disagrees, todayIndex matches
276
+ // exactly), so the sortable Upcoming order survives the CLI.
277
+ const todayIndexOf = new Map([...rows, ...templateRows].map((r) => [r.uuid, r.todayIndex ?? 0]));
278
+ const dated = [...items, ...occurrences]
235
279
  .map((item, pos) => ({ item, pos }))
236
280
  .toSorted((a, b) => (a.item.startDate ?? "").localeCompare(b.item.startDate ?? "") ||
281
+ (todayIndexOf.get(a.item.uuid) ?? 0) - (todayIndexOf.get(b.item.uuid) ?? 0) ||
237
282
  a.pos - b.pos ||
238
283
  a.item.uuid.localeCompare(b.item.uuid))
239
284
  .map((x) => x.item);
285
+ // The UI's trailing "Repeating To-Dos" section: templates with NO set
286
+ // next occurrence (after-completion rules between instances, rules past
287
+ // their end date) plus paused ones — startDate stays null, the decoded
288
+ // rule rides along so consumers can derive waiting/paused/ended.
289
+ const restingRows = fetchTaskRows(db, `t.type IN (0, 1) AND t.trashed = 0 AND t.status = 0 AND ${CONTAINER_UNTRASHED}
290
+ AND (t.rt1_recurrenceRule IS NOT NULL OR t.repeater IS NOT NULL)
291
+ AND (t.rt1_nextInstanceStartDate IS NULL OR t.rt1_nextInstanceStartDate <= ?
292
+ OR t.rt1_instanceCreationPaused = 1)${tf.sql}
293
+ ORDER BY t.todayIndex ASC, t."index" ASC`, [packedToday, ...tf.binds]);
294
+ const resting = materialize(db, restingRows).map((item) => {
295
+ const raw = restingRows.find((r) => r.uuid === item.uuid)?.rt1_recurrenceRule;
296
+ if (raw !== null && raw !== undefined) {
297
+ try {
298
+ item.repeating.rule = decodeRecurrenceRule(raw);
299
+ }
300
+ catch {
301
+ // undecodable rule (future Things build) — surface without it
302
+ }
303
+ }
304
+ return item;
305
+ });
306
+ return [...dated, ...resting];
240
307
  }
241
308
  export function somedayView(db, now, filter) {
242
309
  const tf = tagFilter(db, filter);
@@ -256,7 +323,29 @@ export function somedayView(db, now, filter) {
256
323
  export function logbookView(db, options) {
257
324
  const limit = options?.limit ?? 100;
258
325
  const tf = tagFilter(db, options);
259
- const rows = fetchTaskRows(db, `${LIVE} AND t.status IN (2, 3)${tf.sql} ORDER BY t.stopDate DESC LIMIT ?`, [...tf.binds, limit]);
326
+ const where = [];
327
+ const binds = [];
328
+ if (options?.project !== undefined) {
329
+ where.push(`${EFF_PROJECT} = ?`);
330
+ binds.push(resolveProjectUuid(db, options.project));
331
+ }
332
+ if (options?.area !== undefined) {
333
+ const areaUuid = resolveAreaUuid(db, options.area);
334
+ where.push(`(t.area = ? OR EXISTS (SELECT 1 FROM TMTask p WHERE p.uuid = ${EFF_PROJECT} AND p.area = ?))`);
335
+ binds.push(areaUuid, areaUuid);
336
+ }
337
+ if (options?.since !== undefined) {
338
+ where.push("t.stopDate >= ?");
339
+ binds.push(options.since.getTime() / 1000);
340
+ }
341
+ if (options?.until !== undefined) {
342
+ where.push("t.stopDate <= ?");
343
+ binds.push(options.until.getTime() / 1000);
344
+ }
345
+ const extra = where.length > 0 ? ` AND ${where.join(" AND ")}` : "";
346
+ // Completion ≠ logged: closed items past the log-move boundary still sit
347
+ // checked in their original lists, exactly like the GUI's Logbook.
348
+ const rows = fetchTaskRows(db, `${LIVE} AND t.status IN (2, 3) AND t.stopDate <= ?${extra}${tf.sql} ORDER BY t.stopDate DESC LIMIT ?`, [logBoundary(db).getTime() / 1000, ...binds, ...tf.binds, limit]);
260
349
  return materialize(db, rows);
261
350
  }
262
351
  export function trashView(db, options) {
@@ -269,11 +358,76 @@ export function projectsView(db, options) {
269
358
  // areaUuid accepts a uuid OR a unique (case-insensitive) title; ambiguous
270
359
  // or unknown references throw like every other ref resolver.
271
360
  const area = options?.areaUuid === undefined ? null : resolveAreaUuid(db, options.areaUuid);
361
+ const packedToday = encodePackedDate(localToday(options?.now));
362
+ // Sidebar default: LATER (someday + future-scheduled) projects are hidden —
363
+ // active means ANYTIME_SELF (a scheduled project whose date has arrived
364
+ // counts active, exactly the Anytime membership test). With later=true they
365
+ // append AFTER the active block of their group, never intermingled.
366
+ const laterSql = options?.later === true ? "" : ` AND ${ANYTIME_SELF("t")}`;
367
+ const laterBinds = options?.later === true ? [] : [packedToday, packedToday];
368
+ // "Active first" within each group needs the same test as an ORDER key
369
+ // (two more binds when later projects are included).
370
+ const activeFirst = options?.later === true ? `(CASE WHEN ${ANYTIME_SELF("t")} THEN 0 ELSE 1 END) ASC, ` : "";
371
+ const activeFirstBinds = options?.later === true ? [packedToday, packedToday] : [];
372
+ // Sidebar order, not raw global index (which interleaves areas): loose
373
+ // (area-less) projects first in their own drag order — the GUI lists them
374
+ // above the areas — then each area by ITS sidebar rank (TMArea."index"),
375
+ // projects within an area by their drag order.
272
376
  const where = area
273
- ? `${OPEN} AND t.type = 1 AND t.area = ? ORDER BY t."index" ASC`
274
- : `${OPEN} AND t.type = 1 ORDER BY t."index" ASC`;
275
- const rows = fetchTaskRows(db, where, area ? [area] : []);
276
- return materialize(db, rows);
377
+ ? `${OPEN} AND t.type = 1 AND t.area = ?${laterSql}
378
+ ORDER BY ${activeFirst}t."index" ASC`
379
+ : `${OPEN} AND t.type = 1${laterSql} ORDER BY (t.area IS NOT NULL) ASC,
380
+ (SELECT a."index" FROM TMArea a WHERE a.uuid = t.area) ASC, ${activeFirst}t."index" ASC`;
381
+ const rows = fetchTaskRows(db, where, [
382
+ ...(area ? [area] : []),
383
+ ...laterBinds,
384
+ ...activeFirstBinds,
385
+ ]);
386
+ const items = materialize(db, rows);
387
+ if (options?.later !== true)
388
+ return items;
389
+ // Each group's later sub-block reads like Upcoming: SCHEDULED projects
390
+ // first — date ascending, todayIndex within a day (the UI's drag order,
391
+ // hidden on entities but present on the raw rows) — then someday in drag
392
+ // order. The SQL already made group runs contiguous with actives leading,
393
+ // so only the later runs are re-sorted (stable within someday).
394
+ const todayIso = localToday(options?.now);
395
+ const ti = new Map(rows.map((r) => [r.uuid, r.todayIndex ?? 0]));
396
+ const isLater = (p) => p.startDate !== null ? p.startDate > todayIso : p.start === "someday";
397
+ const out = [];
398
+ let run = [];
399
+ let runArea;
400
+ const flush = () => {
401
+ out.push(...run
402
+ .map((item, pos) => ({ item, pos }))
403
+ .toSorted((a, b) => {
404
+ const ad = a.item.startDate;
405
+ const bd = b.item.startDate;
406
+ if (ad !== null && bd !== null)
407
+ return (ad.localeCompare(bd) ||
408
+ (ti.get(a.item.uuid) ?? 0) - (ti.get(b.item.uuid) ?? 0) ||
409
+ a.pos - b.pos);
410
+ if (ad !== null)
411
+ return -1;
412
+ if (bd !== null)
413
+ return 1;
414
+ return a.pos - b.pos; // someday keeps drag order
415
+ })
416
+ .map((x) => x.item));
417
+ run = [];
418
+ };
419
+ for (const item of items) {
420
+ const key = item.area?.uuid ?? null;
421
+ if (!isLater(item) || key !== runArea)
422
+ flush();
423
+ runArea = key;
424
+ if (isLater(item))
425
+ run.push(item);
426
+ else
427
+ out.push(item);
428
+ }
429
+ flush();
430
+ return out;
277
431
  }
278
432
  /**
279
433
  * Everything that changed since a moment — created or modified TMTask rows,
@@ -304,12 +458,13 @@ export function searchView(db, query, options) {
304
458
  ? "t.type = 1"
305
459
  : "t.type IN (0, 1)");
306
460
  // Scope: open + untrashed by default; --logged/--trashed widen; --all is
307
- // the legacy include-everything behavior.
461
+ // the legacy include-everything behavior. Untrashed means the whole
462
+ // container chain (derived trash, A24B), not just the row's own flag.
308
463
  if (options?.all !== true) {
309
464
  const statuses = options?.logged === true ? "(0, 2, 3)" : "(0)";
310
465
  where.push(`t.status IN ${statuses}`);
311
466
  if (options?.trashed !== true)
312
- where.push("t.trashed = 0");
467
+ where.push(`t.trashed = 0 AND ${CONTAINER_UNTRASHED}`);
313
468
  }
314
469
  if (options?.project !== undefined) {
315
470
  const uuid = resolveProjectUuid(db, options.project);
@@ -1 +1 @@
1
- {"version":3,"file":"views.js","sourceRoot":"","sources":["../../src/read/views.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"views.js","sourceRoot":"","sources":["../../src/read/views.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@
7
7
  * the app.
8
8
  */
9
9
  import { execFileSync } from "node:child_process";
10
+ import { automationGrantee } from "./failure-hints.js";
10
11
  const PROBE_SCRIPT = 'tell application "Things3" to count of areas';
11
12
  function defaultIsAppRunning() {
12
13
  try {
@@ -35,19 +36,26 @@ export function probeAutomation(deps = {}) {
35
36
  catch (err) {
36
37
  const e = err;
37
38
  const stderr = typeof e.stderr === "string" ? e.stderr : err instanceof Error ? err.message : String(err);
38
- if (e.killed === true || e.signal === "SIGTERM") {
39
+ // An unanswered dialog surfaces two ways: our own timeout kills osascript
40
+ // (killed/SIGTERM), or Things itself gives up first and osascript exits 1
41
+ // with "AppleEvent timed out. (-1712)" — live-confirmed 2026-07-12
42
+ // (oddity 5m). Both mean a prompt is (or was) waiting for a click.
43
+ if (e.killed === true || e.signal === "SIGTERM" || /-1712|event timed out/i.test(stderr)) {
39
44
  return {
40
45
  status: "pending",
41
- detail: "the probe timed out — the shape of an unanswered macOS consent dialog. Check the " +
42
- "machine's screen for an Automation prompt and approve it.",
46
+ detail: "the probe timed out (AppleEvent -1712) — the shape of an unanswered macOS " +
47
+ `Automation dialog. The dialog is addressed to ${automationGrantee()} and shows ` +
48
+ "on the machine's physical screen (easy to miss over SSH/remote sessions). " +
49
+ "Approve it and re-run; if it was dismissed, re-enable under System Settings > " +
50
+ "Privacy & Security > Automation.",
43
51
  };
44
52
  }
45
53
  if (/-1743|not authori[sz]ed to send apple events/i.test(stderr)) {
46
54
  return {
47
55
  status: "denied",
48
- detail: "macOS declined the Apple Event (-1743): Automation permission for this process " +
49
- "(or the app hosting it) is missing or was denied. Grant it under System Settings " +
50
- "> Privacy & Security > Automation, or see docs/setup.md for headless setups.",
56
+ detail: `macOS declined the Apple Event (-1743): Automation permission for ${automationGrantee()} ` +
57
+ "is missing or was denied. Grant it under System Settings > Privacy & Security > " +
58
+ "Automation, or see docs/setup.md for headless setups.",
51
59
  };
52
60
  }
53
61
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"automation-probe.js","sourceRoot":"","sources":["../../src/write/automation-probe.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAqBlD,MAAM,YAAY,GAAG,8CAA8C,CAAC;AAEpE,SAAS,mBAAmB;IAC1B,IAAI,CAAC;QACH,YAAY,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,MAAc,EAAE,SAAiB;IACnD,OAAO,YAAY,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;AAC7F,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAA4B,EAAE;IAC5D,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,mBAAmB,CAAC,EAAE,EAAE,CAAC;QAClD,OAAO;YACL,MAAM,EAAE,iBAAiB;YACzB,MAAM,EACJ,mFAAmF;gBACnF,gCAAgC;SACnC,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,CAAC,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;QAC/D,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,sDAAsD,EAAE,CAAC;IAC/F,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,GAAqE,CAAC;QAChF,MAAM,MAAM,GACV,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7F,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAChD,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,MAAM,EACJ,mFAAmF;oBACnF,2DAA2D;aAC9D,CAAC;QACJ,CAAC;QACD,IAAI,+CAA+C,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACjE,OAAO;gBACL,MAAM,EAAE,QAAQ;gBAChB,MAAM,EACJ,iFAAiF;oBACjF,mFAAmF;oBACnF,8EAA8E;aACjF,CAAC;QACJ,CAAC;QACD,OAAO;YACL,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE,wCAAwC,MAAM,CAAC,IAAI,EAAE,IAAI,eAAe,EAAE;SACnF,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"automation-probe.js","sourceRoot":"","sources":["../../src/write/automation-probe.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAqBvD,MAAM,YAAY,GAAG,8CAA8C,CAAC;AAEpE,SAAS,mBAAmB;IAC1B,IAAI,CAAC;QACH,YAAY,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,MAAc,EAAE,SAAiB;IACnD,OAAO,YAAY,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;AAC7F,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAA4B,EAAE;IAC5D,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,mBAAmB,CAAC,EAAE,EAAE,CAAC;QAClD,OAAO;YACL,MAAM,EAAE,iBAAiB;YACzB,MAAM,EACJ,mFAAmF;gBACnF,gCAAgC;SACnC,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,CAAC,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;QAC/D,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,sDAAsD,EAAE,CAAC;IAC/F,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,GAAqE,CAAC;QAChF,MAAM,MAAM,GACV,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7F,0EAA0E;QAC1E,0EAA0E;QAC1E,mEAAmE;QACnE,mEAAmE;QACnE,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACzF,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,MAAM,EACJ,4EAA4E;oBAC5E,iDAAiD,iBAAiB,EAAE,aAAa;oBACjF,4EAA4E;oBAC5E,gFAAgF;oBAChF,kCAAkC;aACrC,CAAC;QACJ,CAAC;QACD,IAAI,+CAA+C,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACjE,OAAO;gBACL,MAAM,EAAE,QAAQ;gBAChB,MAAM,EACJ,qEAAqE,iBAAiB,EAAE,GAAG;oBAC3F,kFAAkF;oBAClF,uDAAuD;aAC1D,CAAC;QACJ,CAAC;QACD,OAAO;YACL,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE,wCAAwC,MAAM,CAAC,IAAI,EAAE,IAAI,eAAe,EAAE;SACnF,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -4,9 +4,12 @@
4
4
  * and library consumers.
5
5
  */
6
6
  import { type OperationKind } from "./operations.ts";
7
+ import { type ReversibilityEntry } from "./reversibility.ts";
7
8
  import type { VectorId, VectorSupport } from "./vectors/types.ts";
8
9
  export interface CapabilityEntry {
9
10
  op: OperationKind;
11
+ /** What `things undo` can do with this operation afterward (test-locked per op). */
12
+ undo: ReversibilityEntry;
10
13
  vectors: ({
11
14
  vector: VectorId;
12
15
  } & (VectorSupport | {
@@ -4,12 +4,14 @@
4
4
  * and library consumers.
5
5
  */
6
6
  import { OPERATION_KINDS } from "./operations.js";
7
+ import { REVERSIBILITY } from "./reversibility.js";
7
8
  import { defaultVectors } from "./vectors/registry.js";
8
9
  export function capabilitiesTable(op) {
9
10
  const vectors = defaultVectors();
10
11
  const ops = op !== undefined ? [op] : [...OPERATION_KINDS];
11
12
  return ops.map((kind) => ({
12
13
  op: kind,
14
+ undo: REVERSIBILITY[kind],
13
15
  vectors: vectors.map((v) => ({ vector: v.id, ...(v.matrix[kind] ?? { support: "no" }) })),
14
16
  }));
15
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/write/capabilities.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,eAAe,EAAsB,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAQvD,MAAM,UAAU,iBAAiB,CAAC,EAAkB;IAClD,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,MAAM,GAAG,GAAG,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC;IAC3D,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACxB,EAAE,EAAE,IAAI;QACR,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;KAC1F,CAAC,CAAC,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/write/capabilities.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,eAAe,EAAsB,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,aAAa,EAA2B,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAUvD,MAAM,UAAU,iBAAiB,CAAC,EAAkB;IAClD,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,MAAM,GAAG,GAAG,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC;IAC3D,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACxB,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC;QACzB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;KAC1F,CAAC,CAAC,CAAC;AACN,CAAC"}