things-api 0.16.0 → 0.17.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.
- package/README.md +1 -1
- package/dist/cli/commands/repeat-flags.d.ts +3 -3
- package/dist/cli/commands/repeat-flags.js +90 -33
- package/dist/cli/commands/repeat-flags.js.map +1 -1
- package/dist/cli/commands/writes.js +59 -5
- package/dist/cli/commands/writes.js.map +1 -1
- package/dist/cli/help.js +9 -2
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/interrupt.d.ts +42 -0
- package/dist/cli/interrupt.js +105 -0
- package/dist/cli/interrupt.js.map +1 -0
- package/dist/cli/main.js +5 -0
- package/dist/cli/main.js.map +1 -1
- package/dist/client.js +3 -0
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +39 -0
- package/dist/config.js +16 -1
- package/dist/config.js.map +1 -1
- package/dist/contracts.d.ts +9 -2
- package/dist/contracts.js +1 -1
- package/dist/contracts.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/model/occurrences.d.ts +14 -1
- package/dist/model/occurrences.js +20 -4
- package/dist/model/occurrences.js.map +1 -1
- package/dist/model/recurrence.d.ts +60 -9
- package/dist/model/recurrence.js +76 -19
- package/dist/model/recurrence.js.map +1 -1
- package/dist/paths.d.ts +8 -0
- package/dist/paths.js +10 -0
- package/dist/paths.js.map +1 -1
- package/dist/sync-health.js +2 -1
- package/dist/sync-health.js.map +1 -1
- package/dist/trace/tracer.d.ts +87 -0
- package/dist/trace/tracer.js +167 -0
- package/dist/trace/tracer.js.map +1 -0
- package/dist/write/clear-reminder.js +24 -21
- package/dist/write/clear-reminder.js.map +1 -1
- package/dist/write/commands.js +50 -45
- package/dist/write/commands.js.map +1 -1
- package/dist/write/completion-context.d.ts +57 -0
- package/dist/write/completion-context.js +49 -0
- package/dist/write/completion-context.js.map +1 -0
- package/dist/write/failure-hints.d.ts +10 -1
- package/dist/write/failure-hints.js +8 -0
- package/dist/write/failure-hints.js.map +1 -1
- package/dist/write/guards.d.ts +1 -1
- package/dist/write/guards.js +10 -0
- package/dist/write/guards.js.map +1 -1
- package/dist/write/operations.d.ts +12 -3
- package/dist/write/pipeline.d.ts +39 -0
- package/dist/write/pipeline.js +230 -17
- package/dist/write/pipeline.js.map +1 -1
- package/dist/write/pre-state.d.ts +1 -1
- package/dist/write/pre-state.js +2 -2
- package/dist/write/pre-state.js.map +1 -1
- package/dist/write/promote-clone.js +260 -13
- package/dist/write/promote-clone.js.map +1 -1
- package/dist/write/repeat-anchor.d.ts +110 -0
- package/dist/write/repeat-anchor.js +238 -0
- package/dist/write/repeat-anchor.js.map +1 -0
- package/dist/write/repeat-asserts.d.ts +28 -0
- package/dist/write/repeat-asserts.js +169 -0
- package/dist/write/repeat-asserts.js.map +1 -0
- package/dist/write/repeat-rule.js +27 -12
- package/dist/write/repeat-rule.js.map +1 -1
- package/dist/write/vectors/session-reachability.d.ts +78 -0
- package/dist/write/vectors/session-reachability.js +103 -0
- package/dist/write/vectors/session-reachability.js.map +1 -0
- package/dist/write/vectors/simulator.js +68 -29
- package/dist/write/vectors/simulator.js.map +1 -1
- package/dist/write/vectors/types.d.ts +117 -10
- package/dist/write/vectors/ui-recipes.d.ts +8 -0
- package/dist/write/vectors/ui-recipes.js +120 -22
- package/dist/write/vectors/ui-recipes.js.map +1 -1
- package/dist/write/vectors/ui.d.ts +79 -13
- package/dist/write/vectors/ui.js +415 -59
- package/dist/write/vectors/ui.js.map +1 -1
- package/dist/write/verify/delta.d.ts +12 -14
- package/dist/write/verify/delta.js +35 -34
- package/dist/write/verify/delta.js.map +1 -1
- package/package.json +1 -1
- package/schema/envelope.schema.json +22 -0
- package/skills/things-cli/SKILL.md +5 -2
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { undoToken } from "../audit/schema.js";
|
|
2
|
+
import { addDaysIso, decodePackedDate } from "../model/dates.js";
|
|
2
3
|
import { byUuid } from "../read/detail.js";
|
|
3
4
|
import { resolveProjectWriteTarget, resolveTaskUuidPrefix } from "../read/queries.js";
|
|
4
5
|
import { runCloneProject, runCloneTodo } from "./clone.js";
|
|
5
6
|
import { promoteProjectViaGui } from "./make-repeating-project.js";
|
|
6
7
|
import { fingerprintLabel, runMutation, } from "./pipeline.js";
|
|
8
|
+
import { deriveFixedAnchor, isIsoDate } from "./repeat-anchor.js";
|
|
7
9
|
import { assertRepeatRule, ruleToInverseParams } from "./repeat-rule.js";
|
|
8
10
|
import { createDbReader } from "./verify/delta.js";
|
|
11
|
+
import { H_UI_SESSION_UNREACHABLE } from "./vectors/session-reachability.js";
|
|
9
12
|
const PLACEMENT_NOTE = "the series' current instance lands at its container's default position — its prior slot was " +
|
|
10
13
|
"not automatically restored (best-effort placement is not yet wired for this container); " +
|
|
11
14
|
"reposition it with `things reorder` if the order matters";
|
|
@@ -50,8 +53,78 @@ function blockedUiDrive(op) {
|
|
|
50
53
|
"`things config set ui-enabled true` and Accessibility granted to this process (see docs/setup.md)",
|
|
51
54
|
};
|
|
52
55
|
}
|
|
53
|
-
/**
|
|
54
|
-
|
|
56
|
+
/**
|
|
57
|
+
* SESSGATE (#480) pre-seed reachability gate. A promote composite is NOT atomic:
|
|
58
|
+
* it SEEDS a row (clone / add) before the GUI promote leg drives the dialog. If
|
|
59
|
+
* the Mac's session is AX-blind (screen locked / full-screen Space), the dialog
|
|
60
|
+
* would open on an unreachable window and the drive would fail — leaving an
|
|
61
|
+
* orphan seed. So probe the live session BEFORE seeding and refuse fast (zero
|
|
62
|
+
* mutation) on the certain-failure LOCKED signature. Only "session" scope refuses
|
|
63
|
+
* here: a window merely on another Space is left for the in-drive relocation (the
|
|
64
|
+
* reveal has not run yet, so refusing before the seed would be a false positive).
|
|
65
|
+
* No ui vector (simulator / bench), ui disabled, or a fail-open probe → proceed
|
|
66
|
+
* (the promote leg's own gate + cleanup remain the backstop).
|
|
67
|
+
*/
|
|
68
|
+
async function gateSessionReachability(deps, op) {
|
|
69
|
+
if (!deps.config.ui.enabled)
|
|
70
|
+
return null;
|
|
71
|
+
const ui = deps.vectors.find((v) => v.probeReachability !== undefined);
|
|
72
|
+
if (ui?.probeReachability === undefined)
|
|
73
|
+
return null;
|
|
74
|
+
const verdict = await ui.probeReachability();
|
|
75
|
+
if (verdict.reachable || verdict.scope !== "session")
|
|
76
|
+
return null;
|
|
77
|
+
return {
|
|
78
|
+
kind: "blocked",
|
|
79
|
+
op,
|
|
80
|
+
reason: "hazard",
|
|
81
|
+
hazard: H_UI_SESSION_UNREACHABLE,
|
|
82
|
+
detail: verdict.detail,
|
|
83
|
+
remediation: verdict.remediation,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Auto-trash a promote composite's own seeded item after its promote leg failed
|
|
88
|
+
* (RATIFIED RULING 2026-08-15, issue #480). The add/add-repeating legs are NOT
|
|
89
|
+
* atomic: the seed persists even when the promote no-ops. The seed is OUR
|
|
90
|
+
* artifact — recreatable verbatim from the command args — and the Trash is
|
|
91
|
+
* recoverable, so we trash it inside the same txn and disclose it. The
|
|
92
|
+
* distinction the failure MUST make honest: an auto-trash that SUCCEEDS points
|
|
93
|
+
* the caller at `restore` (the row is in the Trash); one that FAILS points at
|
|
94
|
+
* `delete` with the seed's REAL, resolvable uuid (never a buried, non-actionable
|
|
95
|
+
* uuid — the #480 second bug). Returns a `detail` patch appended to the promote
|
|
96
|
+
* result's own message (best-effort: a non-`detail` result shape is left as-is).
|
|
97
|
+
*/
|
|
98
|
+
async function cleanupSeed(deps, kind, createdUuid, promote, options, txnId) {
|
|
99
|
+
const expectedType = kind === "project" ? "project" : "to-do";
|
|
100
|
+
const trashOp = kind === "project" ? "project.delete" : "todo.delete";
|
|
101
|
+
const trashed = await runMutation(deps, trashOp, { uuid: createdUuid }, legOptions(options, txnId));
|
|
102
|
+
const cleanupNote = trashed.kind === "ok"
|
|
103
|
+
? `the seeded ${expectedType} (uuid ${createdUuid}) was created but the promote did not land, ` +
|
|
104
|
+
`so it was moved to the Trash — recreate it from the command args, or restore it with ` +
|
|
105
|
+
`\`things ${kind} restore ${createdUuid}\``
|
|
106
|
+
: `the seeded ${expectedType} (uuid ${createdUuid}) was created but the promote did not land, ` +
|
|
107
|
+
`and it could NOT be auto-trashed — remove it with \`things ${kind} delete ${createdUuid}\``;
|
|
108
|
+
return "detail" in promote
|
|
109
|
+
? { detail: `${promote.detail} — ${cleanupNote}` }
|
|
110
|
+
: {};
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Pick the rule fields (frequency/interval + calendar anchors + deadline offset)
|
|
114
|
+
* as a RepeatRuleParams, plus the requested first-occurrence date to drive into
|
|
115
|
+
* the dialog's "Next:" field (ANCH2, issue #476). `nextIso` is the item's
|
|
116
|
+
* scheduled date; omitted (or after-completion) leaves Next at the app default.
|
|
117
|
+
*
|
|
118
|
+
* The `rule` bag is the SUPERSET the make/add legs actually carry: make-repeating
|
|
119
|
+
* passes a full {@link RepeatRuleParams} (rule-level `deadline`/`startDaysEarlier`
|
|
120
|
+
* included), add-repeating an {@link AddRepeatingRuleFields} (which OMITS those —
|
|
121
|
+
* the base add owns the item's own deadline). Every field is copied THROUGH so
|
|
122
|
+
* neither is silently dropped: an earlier version keyed the param type to
|
|
123
|
+
* AddRepeatingRuleFields and stripped `deadline`/`startDaysEarlier` from the
|
|
124
|
+
* make-repeating promote entirely (the same class as the RRX1 reminder drop —
|
|
125
|
+
* a deadlined make-repeating produced a NON-deadlined template, YANCH1 #493).
|
|
126
|
+
*/
|
|
127
|
+
function ruleParamsFor(uuid, rule, nextIso) {
|
|
55
128
|
return {
|
|
56
129
|
uuid,
|
|
57
130
|
frequency: rule.frequency,
|
|
@@ -61,6 +134,82 @@ function ruleParamsFor(uuid, rule) {
|
|
|
61
134
|
...(rule.monthly !== undefined && { monthly: rule.monthly }),
|
|
62
135
|
...(rule.yearly !== undefined && { yearly: rule.yearly }),
|
|
63
136
|
...(rule.ends !== undefined && { ends: rule.ends }),
|
|
137
|
+
// The repeat reminder picker is drivable (ANCH2). make-repeating carries a
|
|
138
|
+
// rule-level reminder through; add-repeating threads the base to-do's
|
|
139
|
+
// --reminder here too (ADR1 #480), since the dialog conversion otherwise drops
|
|
140
|
+
// the seed's one-off reminder from the series.
|
|
141
|
+
...(rule.reminder !== undefined && { reminder: rule.reminder }),
|
|
142
|
+
// The deadline offset is a rule-level field on make-repeating (the "Add
|
|
143
|
+
// deadlines" checkbox + "start N days earlier"); it must ride the promote or a
|
|
144
|
+
// `make-repeating --deadline` lands a non-deadlined series (YANCH1 #493).
|
|
145
|
+
...(rule.deadline !== undefined && { deadline: rule.deadline }),
|
|
146
|
+
...(rule.startDaysEarlier !== undefined && { startDaysEarlier: rule.startDaysEarlier }),
|
|
147
|
+
...(nextIso !== undefined && rule.afterCompletion !== true && { next: nextIso }),
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
const UNIT_SINGULAR = {
|
|
151
|
+
daily: "day",
|
|
152
|
+
weekly: "week",
|
|
153
|
+
monthly: "month",
|
|
154
|
+
yearly: "year",
|
|
155
|
+
};
|
|
156
|
+
const UNIT_PLURAL = {
|
|
157
|
+
daily: "days",
|
|
158
|
+
weekly: "weeks",
|
|
159
|
+
monthly: "months",
|
|
160
|
+
yearly: "years",
|
|
161
|
+
};
|
|
162
|
+
/**
|
|
163
|
+
* A one-line echo of the LANDED series so a caller can eyeball what actually
|
|
164
|
+
* committed — the cadence, the verified first-occurrence START, and the deadline
|
|
165
|
+
* offset (YANCH1 #493 item 5). It rides the verified data (the anchor is asserted
|
|
166
|
+
* == requested by the post-drive verify), so it describes the START date rather
|
|
167
|
+
* than the internal deadline anchor, which for a deadlined rule is N days later.
|
|
168
|
+
*/
|
|
169
|
+
function landedRuleEcho(rule, startIso) {
|
|
170
|
+
const cadence = rule.interval === 1
|
|
171
|
+
? `every ${UNIT_SINGULAR[rule.frequency]}`
|
|
172
|
+
: `every ${rule.interval} ${UNIT_PLURAL[rule.frequency]}`;
|
|
173
|
+
if (rule.afterCompletion === true) {
|
|
174
|
+
return `landed: the series repeats ${cadence} after each occurrence is completed`;
|
|
175
|
+
}
|
|
176
|
+
const first = startIso !== null ? `; the first occurrence is ${startIso}` : "";
|
|
177
|
+
const offset = rule.startDaysEarlier ?? 0;
|
|
178
|
+
const deadlineNote = offset > 0
|
|
179
|
+
? `, with a deadline ${offset} day${offset === 1 ? "" : "s"} later`
|
|
180
|
+
: rule.deadline === true
|
|
181
|
+
? ", with a deadline on each occurrence"
|
|
182
|
+
: "";
|
|
183
|
+
return `landed: the series repeats ${cadence}${first}${deadlineNote}`;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* The template's app-materialized first occurrence (`rt1_instanceCreationStartDate`
|
|
187
|
+
* = the date the current instance is dated at) as an ISO date, for the post-drive
|
|
188
|
+
* Next-honored check. `null` when the row/date is absent.
|
|
189
|
+
*/
|
|
190
|
+
function firstOccurrenceOf(db, templateUuid) {
|
|
191
|
+
const row = db
|
|
192
|
+
.prepare("SELECT rt1_instanceCreationStartDate AS ic FROM TMTask WHERE uuid = ?")
|
|
193
|
+
.get(templateUuid);
|
|
194
|
+
if (row === undefined || row.ic === null)
|
|
195
|
+
return null;
|
|
196
|
+
return decodePackedDate(row.ic);
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* The verify-failed result when the driven "Next:" first occurrence did not land
|
|
200
|
+
* (issue #476, ANCH2). The series exists but on the wrong phase — report it
|
|
201
|
+
* fail-closed rather than as a silent ok.
|
|
202
|
+
*/
|
|
203
|
+
function nextMismatch(op, templateUuid, requestedIso, landedIso) {
|
|
204
|
+
return {
|
|
205
|
+
kind: "verify-failed",
|
|
206
|
+
op,
|
|
207
|
+
reason: "mismatch",
|
|
208
|
+
expected: { mode: "update", uuid: templateUuid, assert: [] },
|
|
209
|
+
observed: null,
|
|
210
|
+
detail: `the repeating series was created but its first occurrence landed on ` +
|
|
211
|
+
`${landedIso ?? "an undetermined date"}, not the requested ${requestedIso} — the Next-field ` +
|
|
212
|
+
"drive did not take; the series exists and can be corrected with `things reschedule-repeat`",
|
|
64
213
|
};
|
|
65
214
|
}
|
|
66
215
|
/** The discovered template/instance from a promote leg's result. */
|
|
@@ -159,6 +308,33 @@ async function makeRepeatingViaClone(deps, kind, params, options) {
|
|
|
159
308
|
: "verify the uuid with `things show <uuid>`, or use `things project make-repeating` for a project",
|
|
160
309
|
};
|
|
161
310
|
}
|
|
311
|
+
// ANCH2 (issue #476): the app's Repeat dialog HAS a "Next:" first-occurrence
|
|
312
|
+
// field; its default is the today-anchored next match, but it is editable and
|
|
313
|
+
// honored (docs/lab/anch2-next-field.md). Drive it with the requested first
|
|
314
|
+
// occurrence — an explicit `--when` if given, else the item's own scheduled
|
|
315
|
+
// date. YANCH1 (issue #493): also DERIVE the calendar anchor (weekly weekday /
|
|
316
|
+
// monthly day / yearly month+day) from that date when no explicit anchor was
|
|
317
|
+
// given, and drive the anchor pop-ups — otherwise the recurring rule keeps the
|
|
318
|
+
// dialog's untouched default (weekly Sunday, monthly 1st, yearly January 1) and
|
|
319
|
+
// only the first occurrence is correct (the #493 anchor-drop).
|
|
320
|
+
//
|
|
321
|
+
// DEADLINE-MODE ANCHORING (YANCH1 #493, in-lab golden-v3): a deadlined rule
|
|
322
|
+
// anchors on the DEADLINE, and each instance's START = anchor − startDaysEarlier
|
|
323
|
+
// (probe: anchor+Next driven to Oct-16 with start-14 → of=[Oct-16], instance
|
|
324
|
+
// start = Oct-02). `--when` is the scheduled START, so the date the dialog's
|
|
325
|
+
// anchor pop-ups + "Next:" field must carry is when + startDaysEarlier (the
|
|
326
|
+
// deadline); the app then back-shifts the start to `when`. For a non-deadlined
|
|
327
|
+
// rule the shift is 0 and the drive date equals `--when` (unchanged).
|
|
328
|
+
const whenIso = isIsoDate(params.next) ? params.next : src.startDate;
|
|
329
|
+
const deadlineShift = params.deadline === true || (params.startDaysEarlier ?? 0) > 0
|
|
330
|
+
? (params.startDaysEarlier ?? 0)
|
|
331
|
+
: 0;
|
|
332
|
+
const driveIso = isIsoDate(whenIso) ? addDaysIso(whenIso, deadlineShift) : undefined;
|
|
333
|
+
// The dialog is driven with the deadline-adjusted date; the verify below expects
|
|
334
|
+
// the START to land back on the requested `--when`.
|
|
335
|
+
const nextIso = driveIso;
|
|
336
|
+
const expectedStartIso = isIsoDate(whenIso) ? whenIso : undefined;
|
|
337
|
+
const effParams = { ...params, ...deriveFixedAnchor(params, driveIso) };
|
|
162
338
|
// The promote leg drives the GUI — block before minting a clone if the ack is missing.
|
|
163
339
|
if (options.dangerouslyDriveGui !== true && options.dryRun !== true) {
|
|
164
340
|
return blockedUiDrive(op);
|
|
@@ -172,7 +348,7 @@ async function makeRepeatingViaClone(deps, kind, params, options) {
|
|
|
172
348
|
vector: "ui",
|
|
173
349
|
tier: 3,
|
|
174
350
|
invocation: `clone ${srcUuid} (--preserve-created) → make-repeating the clone (Repeat… → ` +
|
|
175
|
-
`frequency=${
|
|
351
|
+
`frequency=${effParams.frequency}, interval=${effParams.interval}) → trash the original ${srcUuid}`,
|
|
176
352
|
expectedDelta: {
|
|
177
353
|
mode: "create",
|
|
178
354
|
probe: { title: src.title, type: expectedType, sinceEpoch: 0 },
|
|
@@ -182,6 +358,12 @@ async function makeRepeatingViaClone(deps, kind, params, options) {
|
|
|
182
358
|
},
|
|
183
359
|
};
|
|
184
360
|
}
|
|
361
|
+
// SESSGATE (#480): refuse a locked / full-screen session BEFORE minting a clone
|
|
362
|
+
// — otherwise the promote's dialog opens on an unreachable window and the whole
|
|
363
|
+
// compound fails, stranding a disposable clone. Zero mutation on refusal.
|
|
364
|
+
const gate = await gateSessionReachability(deps, op);
|
|
365
|
+
if (gate !== null)
|
|
366
|
+
return gate;
|
|
185
367
|
const startedAt = now;
|
|
186
368
|
const txnId = newTxnId(startedAt);
|
|
187
369
|
// 1. Clone the source as a disposable, embedded leg (--preserve-created). The
|
|
@@ -235,8 +417,8 @@ async function makeRepeatingViaClone(deps, kind, params, options) {
|
|
|
235
417
|
: {}),
|
|
236
418
|
};
|
|
237
419
|
}
|
|
238
|
-
// 3. Native-promote the clone.
|
|
239
|
-
const rule = ruleParamsFor(cloneUuid,
|
|
420
|
+
// 3. Native-promote the clone (with the ANCH2 Next drive + derived weekday).
|
|
421
|
+
const rule = ruleParamsFor(cloneUuid, effParams, nextIso);
|
|
240
422
|
const promote = kind === "project"
|
|
241
423
|
? await promoteProjectViaGui(deps, rule, legOptions(options, txnId, "ui"))
|
|
242
424
|
: await runMutation(deps, "todo.make-repeating", rule, legOptions(options, txnId, "ui"));
|
|
@@ -260,7 +442,19 @@ async function makeRepeatingViaClone(deps, kind, params, options) {
|
|
|
260
442
|
};
|
|
261
443
|
}
|
|
262
444
|
const { templateUuid, instanceUuid } = discoveryOf(promote);
|
|
445
|
+
// Post-drive verify (ANCH2 + YANCH1): the instance START must have landed on the
|
|
446
|
+
// requested `--when` — for a deadlined rule the driven Next is the deadline
|
|
447
|
+
// (when + startDaysEarlier) and the app back-shifts the start to `--when`, so the
|
|
448
|
+
// check is against `expectedStartIso`, not the raw drive date. Fail closed on
|
|
449
|
+
// mismatch rather than report a wrong-phase ok.
|
|
450
|
+
if (expectedStartIso !== undefined) {
|
|
451
|
+
const landed = firstOccurrenceOf(deps.db, templateUuid);
|
|
452
|
+
if (landed !== expectedStartIso) {
|
|
453
|
+
return nextMismatch(op, templateUuid, expectedStartIso, landed);
|
|
454
|
+
}
|
|
455
|
+
}
|
|
263
456
|
const warnings = [
|
|
457
|
+
landedRuleEcho(effParams, expectedStartIso ?? firstOccurrenceOf(deps.db, templateUuid)),
|
|
264
458
|
`the original ${expectedType} (uuid ${srcUuid}) was moved to the Trash; \`things undo\` ` +
|
|
265
459
|
"removes the new series (trash-both) and restores it",
|
|
266
460
|
PLACEMENT_NOTE,
|
|
@@ -275,7 +469,7 @@ async function makeRepeatingViaClone(deps, kind, params, options) {
|
|
|
275
469
|
instanceUuid,
|
|
276
470
|
originalUuid: srcUuid,
|
|
277
471
|
invocation: `${op}: clone ${srcUuid} → trash ${srcUuid} → promote ${cloneUuid} → template ${templateUuid}`,
|
|
278
|
-
requested:
|
|
472
|
+
requested: effParams,
|
|
279
473
|
...(preserveModified && preUmd !== null && { preModDates: { [srcUuid]: preUmd } }),
|
|
280
474
|
});
|
|
281
475
|
return promoteOk({
|
|
@@ -303,6 +497,27 @@ export function runMakeRepeatingProject(deps, params, options = {}) {
|
|
|
303
497
|
async function addRepeatingViaCreate(deps, kind, addParams, rule, title, options) {
|
|
304
498
|
const op = kind === "project" ? "project.add-repeating" : "todo.add-repeating";
|
|
305
499
|
assertRepeatRule(rule);
|
|
500
|
+
// ANCH2 (issue #476): drive the Repeat dialog's "Next:" field with --when so the
|
|
501
|
+
// series starts on the requested date (the field's default is today-anchored but
|
|
502
|
+
// it is editable and honored). YANCH1 (issue #493): also DERIVE the calendar
|
|
503
|
+
// anchor (weekly weekday / monthly day / yearly month+day) from --when when no
|
|
504
|
+
// explicit anchor was given, and drive the anchor pop-ups — otherwise the
|
|
505
|
+
// recurring rule keeps the dialog's untouched default (weekly Sunday, monthly
|
|
506
|
+
// 1st, yearly January 1) and only the first occurrence is correct.
|
|
507
|
+
const anchorIso = isIsoDate(addParams["when"]) ? addParams["when"] : null;
|
|
508
|
+
const nextIso = anchorIso ?? undefined;
|
|
509
|
+
const effRule = { ...rule, ...deriveFixedAnchor(rule, anchorIso) };
|
|
510
|
+
// ADR1 (issue #480, requested behavior #3): carry the base to-do's --reminder
|
|
511
|
+
// onto the SERIES. The create leg sets a one-off reminderTime on the seed, but
|
|
512
|
+
// the Repeat-dialog conversion does NOT preserve it — the dialog OWNS the repeat
|
|
513
|
+
// reminder via its "Add reminders" control — so a base reminder was silently
|
|
514
|
+
// dropped from the template (verified empty on golden-v2,
|
|
515
|
+
// docs/lab/adr1-add-repeating-reveal.md). Drive the dialog's reminder with the
|
|
516
|
+
// base time so every spawned occurrence carries it (ANCH2: the reminder picker
|
|
517
|
+
// commits reminderTime deterministically). Projects have no reminder vocabulary,
|
|
518
|
+
// so addParams never carries one there.
|
|
519
|
+
const baseReminder = typeof addParams["reminder"] === "string" ? addParams["reminder"] : undefined;
|
|
520
|
+
const effRuleWithReminder = baseReminder !== undefined ? { ...effRule, reminder: baseReminder } : effRule;
|
|
306
521
|
// The promote leg drives the GUI — block before creating anything if the ack is missing.
|
|
307
522
|
if (options.dangerouslyDriveGui !== true && options.dryRun !== true) {
|
|
308
523
|
return blockedUiDrive(op);
|
|
@@ -327,6 +542,12 @@ async function addRepeatingViaCreate(deps, kind, addParams, rule, title, options
|
|
|
327
542
|
},
|
|
328
543
|
};
|
|
329
544
|
}
|
|
545
|
+
// SESSGATE (#480): refuse a locked / full-screen session BEFORE seeding the row
|
|
546
|
+
// (the two legs are not atomic — a doomed promote would strand the seed). Zero
|
|
547
|
+
// mutation on refusal; a window merely on another Space is relocated in-drive.
|
|
548
|
+
const gate = await gateSessionReachability(deps, op);
|
|
549
|
+
if (gate !== null)
|
|
550
|
+
return gate;
|
|
330
551
|
const startedAt = deps.now?.() ?? new Date();
|
|
331
552
|
const txnId = newTxnId(startedAt);
|
|
332
553
|
// 1. Create the item (full add vocabulary) as an embedded leg.
|
|
@@ -349,17 +570,38 @@ async function addRepeatingViaCreate(deps, kind, addParams, rule, title, options
|
|
|
349
570
|
: { ...add, op };
|
|
350
571
|
}
|
|
351
572
|
const createdUuid = add.uuid;
|
|
352
|
-
// 2. Native-promote the fresh row
|
|
353
|
-
|
|
573
|
+
// 2. Native-promote the fresh row (ANCH2 Next drive + derived weekday + the
|
|
574
|
+
// base reminder driven onto the series, ADR1).
|
|
575
|
+
const ruleParams = ruleParamsFor(createdUuid, effRuleWithReminder, nextIso);
|
|
354
576
|
const promote = kind === "project"
|
|
355
577
|
? await promoteProjectViaGui(deps, ruleParams, legOptions(options, txnId, "ui"))
|
|
356
578
|
: await runMutation(deps, "todo.make-repeating", ruleParams, legOptions(options, txnId, "ui"));
|
|
357
579
|
if (promote.kind !== "ok") {
|
|
358
|
-
//
|
|
359
|
-
|
|
580
|
+
// The seed persists (the two legs are not atomic) but the promote did not
|
|
581
|
+
// land. RATIFIED RULING (2026-08-15, issue #480): auto-trash our OWN seed
|
|
582
|
+
// inside the txn — it is our artifact, recreatable verbatim from the command
|
|
583
|
+
// args, and the Trash is recoverable — then disclose it. If the auto-trash
|
|
584
|
+
// itself fails, the result carries the seed's REAL, resolvable uuid with a
|
|
585
|
+
// working `delete` remediation, so cleanup is never ambiguous (the #480
|
|
586
|
+
// second bug: a failed add-repeating left a residue whose reported uuid was
|
|
587
|
+
// not actionable).
|
|
588
|
+
const patch = await cleanupSeed(deps, kind, createdUuid, promote, options, txnId);
|
|
589
|
+
return { ...promote, op, ...patch };
|
|
360
590
|
}
|
|
361
591
|
const { templateUuid, instanceUuid } = discoveryOf(promote);
|
|
362
|
-
|
|
592
|
+
// Post-drive verify (ANCH2): the driven Next must have landed as the first
|
|
593
|
+
// occurrence — fail closed on mismatch rather than report a wrong-phase ok.
|
|
594
|
+
// The series EXISTS here (promote landed) but on the wrong phase, so this is a
|
|
595
|
+
// genuine partial success, NOT a seed to trash — reported for correction.
|
|
596
|
+
if (nextIso !== undefined) {
|
|
597
|
+
const landed = firstOccurrenceOf(deps.db, templateUuid);
|
|
598
|
+
if (landed !== nextIso)
|
|
599
|
+
return nextMismatch(op, templateUuid, nextIso, landed);
|
|
600
|
+
}
|
|
601
|
+
const warnings = [
|
|
602
|
+
landedRuleEcho(ruleParams, nextIso ?? firstOccurrenceOf(deps.db, templateUuid)),
|
|
603
|
+
PLACEMENT_NOTE,
|
|
604
|
+
];
|
|
363
605
|
if (promote.warnings !== undefined)
|
|
364
606
|
warnings.push(...promote.warnings);
|
|
365
607
|
appendPromoteSummary(deps, {
|
|
@@ -369,7 +611,7 @@ async function addRepeatingViaCreate(deps, kind, addParams, rule, title, options
|
|
|
369
611
|
templateUuid,
|
|
370
612
|
instanceUuid,
|
|
371
613
|
invocation: `${op}: add "${title}" ${createdUuid} → template ${templateUuid}`,
|
|
372
|
-
requested: { title, ...
|
|
614
|
+
requested: { title, ...effRule },
|
|
373
615
|
});
|
|
374
616
|
return promoteOk({
|
|
375
617
|
op,
|
|
@@ -453,7 +695,7 @@ function blockedCloneSource(op, detail, remediation) {
|
|
|
453
695
|
* produce: two simultaneous end bounds, and a multi-anchor month/year rule.
|
|
454
696
|
*/
|
|
455
697
|
function inexpressibleReason(rule) {
|
|
456
|
-
if (rule.endDate !== null && rule.
|
|
698
|
+
if (rule.endDate !== null && rule.occurrenceCount !== null) {
|
|
457
699
|
return ("the source rule ends on BOTH a date and an occurrence count, which the repeat vocabulary " +
|
|
458
700
|
"cannot express (its Ends bound is a single choice)");
|
|
459
701
|
}
|
|
@@ -531,6 +773,11 @@ export async function cloneTemplateViaRepromote(deps, kind, src, srcUuid, params
|
|
|
531
773
|
},
|
|
532
774
|
};
|
|
533
775
|
}
|
|
776
|
+
// SESSGATE (#480): refuse a locked / full-screen session BEFORE minting the
|
|
777
|
+
// plain clone (a doomed promote would strand it). Zero mutation on refusal.
|
|
778
|
+
const gate = await gateSessionReachability(deps, op);
|
|
779
|
+
if (gate !== null)
|
|
780
|
+
return gate;
|
|
534
781
|
const startedAt = deps.now?.() ?? new Date();
|
|
535
782
|
const txnId = newTxnId(startedAt);
|
|
536
783
|
// 4. Mint the plain clone as an embedded leg — cloneTemplateAsPlain reaches the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"promote-clone.js","sourceRoot":"","sources":["../../src/write/promote-clone.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"promote-clone.js","sourceRoot":"","sources":["../../src/write/promote-clone.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The FIXED-recurrence DEFAULT-anchor law + the weekly-weekday derivation the
|
|
3
|
+
* promote verbs use (issue #476; evidence: docs/lab/anch2-next-field.md +
|
|
4
|
+
* anch1-repeat-anchor.md, golden-v2 / Things 3.22.12).
|
|
5
|
+
*
|
|
6
|
+
* DEFAULT LAW (ANCH1, still valid as the DEFAULT). Left untouched, the Repeat
|
|
7
|
+
* dialog's "Next:" field defaults the first occurrence to the next calendar match
|
|
8
|
+
* ON OR AFTER TODAY (interval-independent), and a weekday-less weekly rule
|
|
9
|
+
* defaults to SUNDAY. ANCH2 then showed the "Next:" field is EDITABLE and honored
|
|
10
|
+
* (docs/lab/anch2-next-field.md) — so the promote verbs DRIVE it with the item's
|
|
11
|
+
* scheduled date rather than refuse a wrong-phase series. This module no longer
|
|
12
|
+
* carries a phase-refusal (the ANCH1 `H-REPEAT-ANCHOR` premise — "no drivable
|
|
13
|
+
* first-occurrence control" — was false).
|
|
14
|
+
*
|
|
15
|
+
* What it still provides:
|
|
16
|
+
* 1. {@link deriveWeeklyWeekdays} — when a weekly rule omits `weekdays` but a
|
|
17
|
+
* concrete anchor date is known, derive the recurring weekday FROM that date
|
|
18
|
+
* so the series fires on the intended weekday (not the app's Sunday default).
|
|
19
|
+
* Driving "Next:" fixes the FIRST occurrence; this fixes the recurring day.
|
|
20
|
+
* 2. {@link fixedSpawnPlan} — the DEFAULT spawn shape (used by the simulator
|
|
21
|
+
* when no explicit first occurrence is requested): first occurrence = next
|
|
22
|
+
* match ≥ today, an instance spawns only when today is itself an occurrence.
|
|
23
|
+
*
|
|
24
|
+
* Daily/weekly follow the probed default law; monthly/yearly keep the caller's
|
|
25
|
+
* today+interval model for the default (their default-anchor law is unprobed).
|
|
26
|
+
*/
|
|
27
|
+
import { type IsoDate } from "../model/dates.ts";
|
|
28
|
+
import type { MonthlyAnchor, RepeatRuleParams, Weekday, YearlyAnchor } from "./operations.ts";
|
|
29
|
+
/** True iff `v` is a concrete `YYYY-MM-DD` date (not a list keyword / undefined). */
|
|
30
|
+
export declare function isIsoDate(v: unknown): v is IsoDate;
|
|
31
|
+
/** Weekday of an ISO date, 0 = Sunday … 6 = Saturday (evaluated at UTC noon, tz-invariant). */
|
|
32
|
+
export declare function weekdayOfIso(iso: IsoDate): number;
|
|
33
|
+
/**
|
|
34
|
+
* When a WEEKLY rule omits its weekday set but a concrete anchor date is known,
|
|
35
|
+
* the weekday to drive explicitly (so the series fires on the anchor date's
|
|
36
|
+
* weekday, not the app's Sunday default). Returns `undefined` when nothing should
|
|
37
|
+
* change (non-weekly, weekdays already given, or no concrete anchor date).
|
|
38
|
+
*/
|
|
39
|
+
export declare function deriveWeeklyWeekdays(rule: Pick<RepeatRuleParams, "frequency" | "interval" | "weekdays" | "afterCompletion">, anchorIso: IsoDate | null | undefined): Weekday[] | undefined;
|
|
40
|
+
/**
|
|
41
|
+
* When a MONTHLY rule omits its day anchor but a concrete first-occurrence date
|
|
42
|
+
* is known, the day-of-month anchor to drive EXPLICITLY (so the series recurs on
|
|
43
|
+
* that day, not the Repeat dialog's untouched default). Returns `undefined` when
|
|
44
|
+
* nothing should change (non-monthly, an explicit anchor already given, or no
|
|
45
|
+
* concrete date). Mirrors {@link deriveWeeklyWeekdays} for the monthly unit —
|
|
46
|
+
* the same day-of-month the read-path decoder / composeOffsets derives from the
|
|
47
|
+
* occurrence date, so the derived anchor is byte-consistent with the rule blob.
|
|
48
|
+
*/
|
|
49
|
+
export declare function deriveMonthlyAnchor(rule: Pick<RepeatRuleParams, "frequency" | "monthly" | "afterCompletion">, anchorIso: IsoDate | null | undefined): MonthlyAnchor | undefined;
|
|
50
|
+
/**
|
|
51
|
+
* When a YEARLY rule omits its month+day anchor but a concrete first-occurrence
|
|
52
|
+
* date is known, the {month, day} anchor to drive EXPLICITLY (so the series recurs
|
|
53
|
+
* on that month/day, not the dialog's untouched January-1 default — the ANCH2-c /
|
|
54
|
+
* issue #493 anchor-drop). Returns `undefined` when nothing should change
|
|
55
|
+
* (non-yearly, an explicit anchor already given, or no concrete date).
|
|
56
|
+
*/
|
|
57
|
+
export declare function deriveYearlyAnchor(rule: Pick<RepeatRuleParams, "frequency" | "yearly" | "afterCompletion">, anchorIso: IsoDate | null | undefined): YearlyAnchor | undefined;
|
|
58
|
+
/**
|
|
59
|
+
* The date to drive into the Repeat dialog's "Next:" field for a rule whose
|
|
60
|
+
* `next` is the scheduled START (`--when`). A DEADLINED rule anchors on the
|
|
61
|
+
* DEADLINE — the dialog's "Next:" is the next deadline and the instance START =
|
|
62
|
+
* deadline − startDaysEarlier — so it is driven with `next + startDaysEarlier` and
|
|
63
|
+
* the app back-shifts the start to `next` (YANCH1 #493, golden-v3 probe: Next
|
|
64
|
+
* driven to a date with start-N lands the instance start N days earlier). A
|
|
65
|
+
* non-deadlined rule (or one with no concrete `next`) drives `next` verbatim.
|
|
66
|
+
* Returns `undefined` when `next` is absent/non-concrete.
|
|
67
|
+
*/
|
|
68
|
+
export declare function deadlineDriveNext(p: Pick<RepeatRuleParams, "next" | "deadline" | "startDaysEarlier">): IsoDate | undefined;
|
|
69
|
+
/**
|
|
70
|
+
* The calendar-anchor fields to drive EXPLICITLY for a fixed weekly/monthly/yearly
|
|
71
|
+
* rule when the caller supplied a concrete first-occurrence date but NO explicit
|
|
72
|
+
* anchor — each derived from that date by the SAME refIso law composeOffsets uses
|
|
73
|
+
* (weekly → weekday, monthly → day-of-month, yearly → month+day). Driving the
|
|
74
|
+
* anchor pop-ups makes the series RECUR on the intended calendar placement;
|
|
75
|
+
* leaving the anchor to the "Next:" first-occurrence field alone fixes only the
|
|
76
|
+
* FIRST occurrence and leaves the dialog's untouched default as the recurring rule
|
|
77
|
+
* (weekly → Sunday, monthly → 1st, yearly → January 1 — ANCH2 cell c / issue
|
|
78
|
+
* #493). Returns only the fields that need driving; an explicit anchor, an
|
|
79
|
+
* after-completion rule, daily, or no concrete date yields an empty patch. This
|
|
80
|
+
* completes the derive-and-drive family the weekly weekday-derivation began
|
|
81
|
+
* post-ANCH1 (decisions.md).
|
|
82
|
+
*/
|
|
83
|
+
export declare function deriveFixedAnchor(rule: Pick<RepeatRuleParams, "frequency" | "interval" | "weekdays" | "monthly" | "yearly" | "afterCompletion">, anchorIso: IsoDate | null | undefined): Partial<Pick<RepeatRuleParams, "weekdays" | "monthly" | "yearly">>;
|
|
84
|
+
/**
|
|
85
|
+
* The app's first occurrence of a FIXED daily/weekly rule = the next calendar
|
|
86
|
+
* match on or after today. `null` for after-completion (no calendar) or an
|
|
87
|
+
* unguarded frequency (monthly/yearly). Weekly uses `weekdays` (caller should
|
|
88
|
+
* pass the DERIVED set); with no weekdays it falls back to the app's Sunday default.
|
|
89
|
+
*/
|
|
90
|
+
export declare function fixedFirstOccurrence(rule: Pick<RepeatRuleParams, "frequency" | "interval" | "weekdays" | "afterCompletion">, todayIso: IsoDate): IsoDate | null;
|
|
91
|
+
/**
|
|
92
|
+
* The smallest occurrence STRICTLY AFTER today (the template's cursor,
|
|
93
|
+
* rt1_nextInstanceStartDate). Daily/weekly only. Returns `null` for other
|
|
94
|
+
* frequencies / after-completion.
|
|
95
|
+
*/
|
|
96
|
+
export declare function nextFixedOccurrenceAfter(rule: Pick<RepeatRuleParams, "frequency" | "interval" | "weekdays" | "afterCompletion">, todayIso: IsoDate): IsoDate | null;
|
|
97
|
+
/**
|
|
98
|
+
* The spawn shape a FIXED daily/weekly `make-repeating` produces under the ANCH1
|
|
99
|
+
* law: the calendar-offset reference date, the current-occurrence instance start
|
|
100
|
+
* (null when today is not an occurrence → no instance spawns), the template
|
|
101
|
+
* cursor (next occurrence strictly after today), and the instance-creation count.
|
|
102
|
+
* MONTHLY/YEARLY are unprobed — callers keep their prior today+interval model.
|
|
103
|
+
*/
|
|
104
|
+
export interface FixedSpawnPlan {
|
|
105
|
+
refIso: IsoDate;
|
|
106
|
+
instanceStartIso: IsoDate | null;
|
|
107
|
+
cursorIso: IsoDate;
|
|
108
|
+
instanceCount: 0 | 1;
|
|
109
|
+
}
|
|
110
|
+
export declare function fixedSpawnPlan(rule: Pick<RepeatRuleParams, "frequency" | "interval" | "weekdays" | "afterCompletion">, todayIso: IsoDate): FixedSpawnPlan;
|