diff --git a/docs/releases/unreleased.md b/docs/releases/unreleased.md index 3eee5db9..93f93035 100644 --- a/docs/releases/unreleased.md +++ b/docs/releases/unreleased.md @@ -26,6 +26,7 @@ Example: ## Fixed +- Updated generated `_types/task.md` mdbase schema output so `dateCreated` and `dateModified` include generated values (`now` and `now_on_write`) for automatic timestamp handling on create/write - Fixed documentation deployment CI failures caused by `docs-builder/src/js/main.js` being excluded by a broad `.gitignore` `main.js` rule - Added a specific unignore rule so the docs site client script is tracked and available in GitHub Actions builds - Reduced long-running performance risk from calendar sync token persistence by avoiding full runtime settings side-effects during background sync writes diff --git a/src/services/MdbaseSpecService.ts b/src/services/MdbaseSpecService.ts index c3a4a04c..4989e0d7 100644 --- a/src/services/MdbaseSpecService.ts +++ b/src/services/MdbaseSpecService.ts @@ -151,8 +151,15 @@ export class MdbaseSpecService { description: "Estimated time in minutes.", }); this.addRoleField(lines, "completedDate", { type: "date" }); - this.addRoleField(lines, "dateCreated", { type: "datetime", required: true }); - this.addRoleField(lines, "dateModified", { type: "datetime" }); + this.addRoleField(lines, "dateCreated", { + type: "datetime", + required: true, + generated: "now", + }); + this.addRoleField(lines, "dateModified", { + type: "datetime", + generated: "now_on_write", + }); this.addRoleField(lines, "recurrence", { type: "string" }); this.addRoleField(lines, "recurrenceAnchor", { type: "enum", @@ -290,6 +297,9 @@ export class MdbaseSpecService { if (def.required) { lines.push(`${pad}required: true`); } + if (def.generated) { + lines.push(`${pad}generated: ${def.generated}`); + } if (def.values) { lines.push(`${pad}values: [${def.values.join(", ")}]`); } @@ -458,6 +468,7 @@ export class MdbaseSpecService { interface FieldDef { type: string; required?: boolean; + generated?: string; values?: string[]; tn_completed_values?: string[]; default?: string; diff --git a/tests/unit/services/MdbaseSpecService.test.ts b/tests/unit/services/MdbaseSpecService.test.ts index 54433bfc..4bc042b0 100644 --- a/tests/unit/services/MdbaseSpecService.test.ts +++ b/tests/unit/services/MdbaseSpecService.test.ts @@ -391,11 +391,13 @@ describe("MdbaseSpecService", () => { const block = getFieldBlock(fm, "dateCreated"); expect(block).toContain("type: datetime"); expect(block).toContain("required: true"); + expect(block).toContain("generated: now"); }); it("should define dateModified as datetime", () => { const block = getFieldBlock(fm, "dateModified"); expect(block).toContain("type: datetime"); + expect(block).toContain("generated: now_on_write"); }); it("should define recurrence as string", () => {