From c791b24ea7f8f13bdc02a159a9fbd6d597da9517 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Normen=20Mu=CC=88ller?= Date: Sat, 3 Jan 2026 16:28:56 +0100 Subject: [PATCH 1/5] fix: refresh project card after subtask edits --- PR.md | 19 +++++++++++++++++++ src/modals/TaskEditModal.ts | 9 ++++++++- src/services/ProjectSubtasksService.ts | 8 ++++++++ 3 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 PR.md diff --git a/PR.md b/PR.md new file mode 100644 index 00000000..e891fbbc --- /dev/null +++ b/PR.md @@ -0,0 +1,19 @@ +# fix/project-card-refresh + +## Refresh project cards after subtask edits + +Project cards now refresh immediately when subtasks are added or removed via the edit modal. This ensures the project indicator and subtask list update without requiring a manual reload. + +Examples (illustrative): + +- Assigning subtasks to a task now turns it into a project card right after Save. +- Removing the last subtask now returns the card to a normal task immediately. + +## Changelog + +- Invalidate the project index after subtask edits in the task edit modal. +- Emit a task-updated event for the parent task to refresh visible views. + +## Tests + +- Not run (manual testing only) diff --git a/src/modals/TaskEditModal.ts b/src/modals/TaskEditModal.ts index 64f7b90e..7c819b61 100644 --- a/src/modals/TaskEditModal.ts +++ b/src/modals/TaskEditModal.ts @@ -2,7 +2,7 @@ import { App, Notice, TFile, TAbstractFile, setIcon, setTooltip } from "obsidian"; import TaskNotesPlugin from "../main"; import { TaskModal } from "./TaskModal"; -import { TaskDependency, TaskInfo } from "../types"; +import { TaskDependency, TaskInfo, EVENT_TASK_UPDATED } from "../types"; import { getCurrentTimestamp, formatDateForStorage, @@ -687,6 +687,13 @@ export class TaskEditModal extends TaskModal { if (hasSubtaskChanges) { await this.applySubtaskChanges(updatedTask); + this.plugin.projectSubtasksService?.invalidateProjectIndex(); + this.plugin.emitter.trigger(EVENT_TASK_UPDATED, { + path: updatedTask.path, + task: updatedTask, + taskInfo: updatedTask, + updatedTask, + }); } if (this.unresolvedBlockingEntries.length > 0) { diff --git a/src/services/ProjectSubtasksService.ts b/src/services/ProjectSubtasksService.ts index f1ca1bc2..21f83c01 100644 --- a/src/services/ProjectSubtasksService.ts +++ b/src/services/ProjectSubtasksService.ts @@ -238,6 +238,14 @@ export class ProjectSubtasksService { } } + /** + * Mark the project index as stale so it rebuilds on next access. + */ + invalidateProjectIndex(): void { + this.projectIndex.clear(); + this.indexLastBuilt = 0; + } + /** * Cleanup when service is destroyed */ From 3ab8add88d20a00b9c3a483b9156fca184d8ee4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Normen=20Mu=CC=88ller?= Date: Sun, 4 Jan 2026 12:03:16 +0100 Subject: [PATCH 2/5] fix: avoid duplicate task-updated event on subtask changes --- src/modals/TaskEditModal.ts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/modals/TaskEditModal.ts b/src/modals/TaskEditModal.ts index 7c819b61..5db85999 100644 --- a/src/modals/TaskEditModal.ts +++ b/src/modals/TaskEditModal.ts @@ -688,12 +688,14 @@ export class TaskEditModal extends TaskModal { if (hasSubtaskChanges) { await this.applySubtaskChanges(updatedTask); this.plugin.projectSubtasksService?.invalidateProjectIndex(); - this.plugin.emitter.trigger(EVENT_TASK_UPDATED, { - path: updatedTask.path, - task: updatedTask, - taskInfo: updatedTask, - updatedTask, - }); + if (!hasTaskChanges) { + this.plugin.emitter.trigger(EVENT_TASK_UPDATED, { + path: updatedTask.path, + task: updatedTask, + taskInfo: updatedTask, + updatedTask, + }); + } } if (this.unresolvedBlockingEntries.length > 0) { From 32b2bda5bd1b48f8c0a58752f7de53fdcd66b2cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Normen=20Mu=CC=88ller?= Date: Sun, 4 Jan 2026 13:33:58 +0100 Subject: [PATCH 3/5] docs: add risk notes --- PR.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/PR.md b/PR.md index e891fbbc..ed0d33b5 100644 --- a/PR.md +++ b/PR.md @@ -14,6 +14,11 @@ Examples (illustrative): - Invalidate the project index after subtask edits in the task edit modal. - Emit a task-updated event for the parent task to refresh visible views. +## Risks / Notes + +- This is a minimal fix and does not address the broader, system-wide refresh architecture. A more robust approach is under discussion in: https://github.com/callumalpass/tasknotes/issues/1423 +- The project index invalidation is global, which can be more expensive in large vaults. This is an intentional trade-off for immediate correctness. + ## Tests - Not run (manual testing only) From 53f6be9d9c09307cd9ecbe00990d99ffb177020b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Normen=20Mu=CC=88ller?= Date: Tue, 6 Jan 2026 16:15:21 +0100 Subject: [PATCH 4/5] chore: sync i18n manifest --- i18n.manifest.json | 7 +++- i18n.state.json | 88 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 94 insertions(+), 1 deletion(-) diff --git a/i18n.manifest.json b/i18n.manifest.json index f20fce2a..dc20758a 100644 --- a/i18n.manifest.json +++ b/i18n.manifest.json @@ -306,6 +306,8 @@ "settings.features.inlineTasks.description": "041baf632682261876d68fdfb557dcb820eeb505", "settings.features.overlays.taskLinkToggle.name": "e0fe20d0993bb1763bc91b38bd3adb779b7981be", "settings.features.overlays.taskLinkToggle.description": "1a6bb52dada7ea3bffc8652a0bbb906cb48e2921", + "settings.features.overlays.aliasExclusion.name": "36d9ba953266109308eb1cc36a268f4c1020f8e8", + "settings.features.overlays.aliasExclusion.description": "7ed83f518b02fcb0e04a538502fd3a22e9afed24", "settings.features.instantConvert.toggle.name": "16369b5153949a6d227abdbcd6c22892fba063a1", "settings.features.instantConvert.toggle.description": "eed5789a053bf142162f60467c1fa80c1ed7830c", "settings.features.instantConvert.folder.name": "ee5974b000e8f6a84b0ad1dae3a0b0f106b5e7b2", @@ -597,6 +599,7 @@ "settings.taskProperties.titleCard.filenameUpdatesWithTitle": "a8147abc0946656a21c019211aef50ecdd94cecf", "settings.taskProperties.titleCard.filenameFormat": "cf0cb55cf575b23cf5f0d5872fad7e82f6c1d028", "settings.taskProperties.titleCard.customTemplate": "39448a2ba1e6f74f53c856ae2b7c9ee2fd3029c9", + "settings.taskProperties.titleCard.legacySyntaxWarning": "1d18778142343b6959fb00f6acb0dbf4f575b40e", "settings.taskProperties.tagsCard.nativeObsidianTags": "c062ef944dbbfbde38a1c80dee244e9f0e38c6bf", "settings.taskProperties.remindersCard.defaultReminders": "e13cfba38fae5c297d5d7f45ab04dc912ca81600", "settings.taskProperties.taskStatuses.header": "849a366260293fbbf551890f279d4a159f207849", @@ -1020,6 +1023,8 @@ "settings.integrations.googleCalendarExport.includeDescription.description": "c9ec09dc2367e2c0d19ad6566383fbf753b0683e", "settings.integrations.googleCalendarExport.includeObsidianLink.name": "1ac2585ab0edb8f00817a26c527a5df87a6cf907", "settings.integrations.googleCalendarExport.includeObsidianLink.description": "1626ca927321e5cc96f77af547d7ccdd216beb35", + "settings.integrations.googleCalendarExport.defaultReminder.name": "dbc0eac1e4f3ec15ed81a6d9cd3da6ace61fc787", + "settings.integrations.googleCalendarExport.defaultReminder.description": "766fa723249615aeebf7d1cfe9b78e935bef79b6", "settings.integrations.googleCalendarExport.automaticSyncBehavior.header": "937fe30dfe4713c5d91f84d395517664cf8010ab", "settings.integrations.googleCalendarExport.syncOnCreate.name": "cdf7d8dcb913f846a0bc1ae998a20bb965cd8766", "settings.integrations.googleCalendarExport.syncOnCreate.description": "363883f674af81f3a81bef49d3d4a06c4755ad0b", @@ -1061,7 +1066,7 @@ "settings.integrations.googleCalendarExport.eventDescription.tags": "9d41a4fc02e860b193d42c45e064cf34d3f31ef6", "settings.integrations.googleCalendarExport.eventDescription.contexts": "11de90ff6721cf77203a3af33fd1b66b9e7c93a5", "settings.integrations.googleCalendarExport.eventDescription.projects": "5ef57f02b9e92b257e3c8aa971e3e80f90b99d9a", - "settings.integrations.googleCalendarExport.eventDescription.openInObsidian": "23f77b09dbf8506516c76fb6b9c96a8d6ef0900d", + "settings.integrations.googleCalendarExport.eventDescription.openInObsidian": "c2b1382216f3940af2be33ccbe4802667734c4e9", "settings.integrations.httpApi.header": "4c76df737782a8dc75169ed775fd7d6d4018f0bb", "settings.integrations.httpApi.description": "974c14ba988c907812f54d800e54fdee5532b4ac", "settings.integrations.httpApi.enable.name": "44314448701a9080ca0d5ec1df99dc6a340eb802", diff --git a/i18n.state.json b/i18n.state.json index 689fab02..853c7209 100644 --- a/i18n.state.json +++ b/i18n.state.json @@ -1228,6 +1228,14 @@ "source": "1a6bb52dada7ea3bffc8652a0bbb906cb48e2921", "translation": "3359dcad83a76df0be54e809b9540c77eb9790c0" }, + "settings.features.overlays.aliasExclusion.name": { + "source": "36d9ba953266109308eb1cc36a268f4c1020f8e8", + "translation": "e6d96c7b8d95c109d6b9c87d3492a7ca476a2487" + }, + "settings.features.overlays.aliasExclusion.description": { + "source": "7ed83f518b02fcb0e04a538502fd3a22e9afed24", + "translation": "9dd68bca25c7d0823851ae3b88cf91e100fef011" + }, "settings.features.instantConvert.toggle.name": { "source": "16369b5153949a6d227abdbcd6c22892fba063a1", "translation": "7df5b73a6b1ff8e8b2dc0a6acdcd0fa9d974ca61" @@ -2392,6 +2400,7 @@ "source": "39448a2ba1e6f74f53c856ae2b7c9ee2fd3029c9", "translation": "55699af1691e1de3404924db7ce4093c45874634" }, + "settings.taskProperties.titleCard.legacySyntaxWarning": null, "settings.taskProperties.tagsCard.nativeObsidianTags": { "source": "c062ef944dbbfbde38a1c80dee244e9f0e38c6bf", "translation": "ab3be06d574b88103cdbf39183e94d9ffc7e9f53" @@ -4009,6 +4018,8 @@ "settings.integrations.googleCalendarExport.includeDescription.description": null, "settings.integrations.googleCalendarExport.includeObsidianLink.name": null, "settings.integrations.googleCalendarExport.includeObsidianLink.description": null, + "settings.integrations.googleCalendarExport.defaultReminder.name": null, + "settings.integrations.googleCalendarExport.defaultReminder.description": null, "settings.integrations.googleCalendarExport.automaticSyncBehavior.header": null, "settings.integrations.googleCalendarExport.syncOnCreate.name": null, "settings.integrations.googleCalendarExport.syncOnCreate.description": null, @@ -8960,6 +8971,14 @@ "source": "1a6bb52dada7ea3bffc8652a0bbb906cb48e2921", "translation": "5560805b75f9ca6c3f4c7d4b5dc67c6646bc51da" }, + "settings.features.overlays.aliasExclusion.name": { + "source": "36d9ba953266109308eb1cc36a268f4c1020f8e8", + "translation": "f5add3d88eee7e037c53cc1b08c847c52ab0eac7" + }, + "settings.features.overlays.aliasExclusion.description": { + "source": "7ed83f518b02fcb0e04a538502fd3a22e9afed24", + "translation": "e9c7d076ebc400b1fc57fac202de2fb7891cd7cd" + }, "settings.features.instantConvert.toggle.name": { "source": "16369b5153949a6d227abdbcd6c22892fba063a1", "translation": "709183df80b086b808df842e0514286dfdcf5ab1" @@ -10124,6 +10143,7 @@ "source": "39448a2ba1e6f74f53c856ae2b7c9ee2fd3029c9", "translation": "2dbce0421bd41e3f20acd850ef0edc20261cb543" }, + "settings.taskProperties.titleCard.legacySyntaxWarning": null, "settings.taskProperties.tagsCard.nativeObsidianTags": { "source": "c062ef944dbbfbde38a1c80dee244e9f0e38c6bf", "translation": "b3a9646483d1d8da951934d38d01a4fa36991c9b" @@ -11741,6 +11761,8 @@ "settings.integrations.googleCalendarExport.includeDescription.description": null, "settings.integrations.googleCalendarExport.includeObsidianLink.name": null, "settings.integrations.googleCalendarExport.includeObsidianLink.description": null, + "settings.integrations.googleCalendarExport.defaultReminder.name": null, + "settings.integrations.googleCalendarExport.defaultReminder.description": null, "settings.integrations.googleCalendarExport.automaticSyncBehavior.header": null, "settings.integrations.googleCalendarExport.syncOnCreate.name": null, "settings.integrations.googleCalendarExport.syncOnCreate.description": null, @@ -16692,6 +16714,14 @@ "source": "1a6bb52dada7ea3bffc8652a0bbb906cb48e2921", "translation": "de2fbdefad879f53a036d83e837991d22d01c576" }, + "settings.features.overlays.aliasExclusion.name": { + "source": "36d9ba953266109308eb1cc36a268f4c1020f8e8", + "translation": "80af3725ead4d10dcf05ba1f2a484b1fe507eb53" + }, + "settings.features.overlays.aliasExclusion.description": { + "source": "7ed83f518b02fcb0e04a538502fd3a22e9afed24", + "translation": "ae0530050f2bb3d0a128adeb6bbb7a05f34b4787" + }, "settings.features.instantConvert.toggle.name": { "source": "16369b5153949a6d227abdbcd6c22892fba063a1", "translation": "b228a2b3e9bc93a8daaad83924b64ff32ddb234b" @@ -17856,6 +17886,7 @@ "source": "39448a2ba1e6f74f53c856ae2b7c9ee2fd3029c9", "translation": "41e93d835d4d8e8026d0f40adf05dd4fbe8c8923" }, + "settings.taskProperties.titleCard.legacySyntaxWarning": null, "settings.taskProperties.tagsCard.nativeObsidianTags": { "source": "c062ef944dbbfbde38a1c80dee244e9f0e38c6bf", "translation": "4798205e0784697c88ad582e92e23c929f8b4c3d" @@ -19473,6 +19504,8 @@ "settings.integrations.googleCalendarExport.includeDescription.description": null, "settings.integrations.googleCalendarExport.includeObsidianLink.name": null, "settings.integrations.googleCalendarExport.includeObsidianLink.description": null, + "settings.integrations.googleCalendarExport.defaultReminder.name": null, + "settings.integrations.googleCalendarExport.defaultReminder.description": null, "settings.integrations.googleCalendarExport.automaticSyncBehavior.header": null, "settings.integrations.googleCalendarExport.syncOnCreate.name": null, "settings.integrations.googleCalendarExport.syncOnCreate.description": null, @@ -24424,6 +24457,14 @@ "source": "1a6bb52dada7ea3bffc8652a0bbb906cb48e2921", "translation": "5d05953e7c032593e70cdfe0e72449dc89be55e1" }, + "settings.features.overlays.aliasExclusion.name": { + "source": "36d9ba953266109308eb1cc36a268f4c1020f8e8", + "translation": "3241d7ce1a3880c9dbb4dffe85950a16e21a0e67" + }, + "settings.features.overlays.aliasExclusion.description": { + "source": "7ed83f518b02fcb0e04a538502fd3a22e9afed24", + "translation": "291bb764cd0a9532ef0cabd0787d94cba1bd26ca" + }, "settings.features.instantConvert.toggle.name": { "source": "16369b5153949a6d227abdbcd6c22892fba063a1", "translation": "6e573765a0221000ace248f7a29474291f44d04b" @@ -25588,6 +25629,7 @@ "source": "39448a2ba1e6f74f53c856ae2b7c9ee2fd3029c9", "translation": "4efd3016bc7cf636c29551cc9e95a4cf8dd6ac12" }, + "settings.taskProperties.titleCard.legacySyntaxWarning": null, "settings.taskProperties.tagsCard.nativeObsidianTags": { "source": "c062ef944dbbfbde38a1c80dee244e9f0e38c6bf", "translation": "0b406fa8c0ba75b47acf7a433b7e50d66c0ade13" @@ -27205,6 +27247,8 @@ "settings.integrations.googleCalendarExport.includeDescription.description": null, "settings.integrations.googleCalendarExport.includeObsidianLink.name": null, "settings.integrations.googleCalendarExport.includeObsidianLink.description": null, + "settings.integrations.googleCalendarExport.defaultReminder.name": null, + "settings.integrations.googleCalendarExport.defaultReminder.description": null, "settings.integrations.googleCalendarExport.automaticSyncBehavior.header": null, "settings.integrations.googleCalendarExport.syncOnCreate.name": null, "settings.integrations.googleCalendarExport.syncOnCreate.description": null, @@ -32156,6 +32200,14 @@ "source": "1a6bb52dada7ea3bffc8652a0bbb906cb48e2921", "translation": "6d48bc4a4cf6707cc1ef03d046c150cfc7879d05" }, + "settings.features.overlays.aliasExclusion.name": { + "source": "36d9ba953266109308eb1cc36a268f4c1020f8e8", + "translation": "b8c0f8304c1c20fbf4ead910d422637d9c428a35" + }, + "settings.features.overlays.aliasExclusion.description": { + "source": "7ed83f518b02fcb0e04a538502fd3a22e9afed24", + "translation": "62f482dc6273e9c0c0356e92722546d448c893a8" + }, "settings.features.instantConvert.toggle.name": { "source": "16369b5153949a6d227abdbcd6c22892fba063a1", "translation": "c6c7c0a6e02a346b9ad948bdc309feab828f1207" @@ -33320,6 +33372,7 @@ "source": "39448a2ba1e6f74f53c856ae2b7c9ee2fd3029c9", "translation": "d9a54c4034666e0ff204bbbe58a09cc7e3c94cda" }, + "settings.taskProperties.titleCard.legacySyntaxWarning": null, "settings.taskProperties.tagsCard.nativeObsidianTags": { "source": "c062ef944dbbfbde38a1c80dee244e9f0e38c6bf", "translation": "70b84dd5e8cad86c892f3d0be03b119a4fdac69b" @@ -34937,6 +34990,8 @@ "settings.integrations.googleCalendarExport.includeDescription.description": null, "settings.integrations.googleCalendarExport.includeObsidianLink.name": null, "settings.integrations.googleCalendarExport.includeObsidianLink.description": null, + "settings.integrations.googleCalendarExport.defaultReminder.name": null, + "settings.integrations.googleCalendarExport.defaultReminder.description": null, "settings.integrations.googleCalendarExport.automaticSyncBehavior.header": null, "settings.integrations.googleCalendarExport.syncOnCreate.name": null, "settings.integrations.googleCalendarExport.syncOnCreate.description": null, @@ -39888,6 +39943,14 @@ "source": "1a6bb52dada7ea3bffc8652a0bbb906cb48e2921", "translation": "ee23dee27c2660512041e6347fec9b563fbf5c62" }, + "settings.features.overlays.aliasExclusion.name": { + "source": "36d9ba953266109308eb1cc36a268f4c1020f8e8", + "translation": "75f60da4d3d9d169516a8a5fc57b83a7083c44e9" + }, + "settings.features.overlays.aliasExclusion.description": { + "source": "7ed83f518b02fcb0e04a538502fd3a22e9afed24", + "translation": "679c4169a47d23a6c01e5b7ae73abbf90229ab58" + }, "settings.features.instantConvert.toggle.name": { "source": "16369b5153949a6d227abdbcd6c22892fba063a1", "translation": "dcc2038ba444d1427120dc24f37b20574045f06f" @@ -41052,6 +41115,7 @@ "source": "39448a2ba1e6f74f53c856ae2b7c9ee2fd3029c9", "translation": "0b9c58bf49e2c93f5dadf0509b18407c92fe8f35" }, + "settings.taskProperties.titleCard.legacySyntaxWarning": null, "settings.taskProperties.tagsCard.nativeObsidianTags": { "source": "c062ef944dbbfbde38a1c80dee244e9f0e38c6bf", "translation": "dd3534cec3d201d4da70dea73123c094285734bd" @@ -42669,6 +42733,8 @@ "settings.integrations.googleCalendarExport.includeDescription.description": null, "settings.integrations.googleCalendarExport.includeObsidianLink.name": null, "settings.integrations.googleCalendarExport.includeObsidianLink.description": null, + "settings.integrations.googleCalendarExport.defaultReminder.name": null, + "settings.integrations.googleCalendarExport.defaultReminder.description": null, "settings.integrations.googleCalendarExport.automaticSyncBehavior.header": null, "settings.integrations.googleCalendarExport.syncOnCreate.name": null, "settings.integrations.googleCalendarExport.syncOnCreate.description": null, @@ -47620,6 +47686,14 @@ "source": "1a6bb52dada7ea3bffc8652a0bbb906cb48e2921", "translation": "9dd59cfa99308687e6fba34ccb0dab93a0735753" }, + "settings.features.overlays.aliasExclusion.name": { + "source": "36d9ba953266109308eb1cc36a268f4c1020f8e8", + "translation": "901f851eb98d4954adaa8dde0dd8e0c3e3b8dc92" + }, + "settings.features.overlays.aliasExclusion.description": { + "source": "7ed83f518b02fcb0e04a538502fd3a22e9afed24", + "translation": "91e30004e5b36d37522f2dae638a1eb72631a80c" + }, "settings.features.instantConvert.toggle.name": { "source": "16369b5153949a6d227abdbcd6c22892fba063a1", "translation": "0b80a70cc7b685af112d88f8a6888ea230a9cb17" @@ -48784,6 +48858,7 @@ "source": "39448a2ba1e6f74f53c856ae2b7c9ee2fd3029c9", "translation": "96f9dc23f5b09eb71f2ae37f7f6747de5aa61059" }, + "settings.taskProperties.titleCard.legacySyntaxWarning": null, "settings.taskProperties.tagsCard.nativeObsidianTags": { "source": "c062ef944dbbfbde38a1c80dee244e9f0e38c6bf", "translation": "41e43d9282de7af6f5acc815614810ec0f3dad31" @@ -50401,6 +50476,8 @@ "settings.integrations.googleCalendarExport.includeDescription.description": null, "settings.integrations.googleCalendarExport.includeObsidianLink.name": null, "settings.integrations.googleCalendarExport.includeObsidianLink.description": null, + "settings.integrations.googleCalendarExport.defaultReminder.name": null, + "settings.integrations.googleCalendarExport.defaultReminder.description": null, "settings.integrations.googleCalendarExport.automaticSyncBehavior.header": null, "settings.integrations.googleCalendarExport.syncOnCreate.name": null, "settings.integrations.googleCalendarExport.syncOnCreate.description": null, @@ -55352,6 +55429,14 @@ "source": "1a6bb52dada7ea3bffc8652a0bbb906cb48e2921", "translation": "255fc47feda4b290634318dbff469eff35e5e91a" }, + "settings.features.overlays.aliasExclusion.name": { + "source": "36d9ba953266109308eb1cc36a268f4c1020f8e8", + "translation": "526c2d3c887929c20f7f9eaa955faf7f79b34357" + }, + "settings.features.overlays.aliasExclusion.description": { + "source": "7ed83f518b02fcb0e04a538502fd3a22e9afed24", + "translation": "da66afc0dfc605e546ce3c43884e00fe4ea02ffa" + }, "settings.features.instantConvert.toggle.name": { "source": "16369b5153949a6d227abdbcd6c22892fba063a1", "translation": "d2fe636ff89a7dd3a1a03153fbe41a3a57f571f5" @@ -56516,6 +56601,7 @@ "source": "39448a2ba1e6f74f53c856ae2b7c9ee2fd3029c9", "translation": "f535a5ae7a35b295d1162c855633a1438235adaf" }, + "settings.taskProperties.titleCard.legacySyntaxWarning": null, "settings.taskProperties.tagsCard.nativeObsidianTags": { "source": "c062ef944dbbfbde38a1c80dee244e9f0e38c6bf", "translation": "525f5b80d3cc32aca9e618a998b998dcf4d41ea0" @@ -58133,6 +58219,8 @@ "settings.integrations.googleCalendarExport.includeDescription.description": null, "settings.integrations.googleCalendarExport.includeObsidianLink.name": null, "settings.integrations.googleCalendarExport.includeObsidianLink.description": null, + "settings.integrations.googleCalendarExport.defaultReminder.name": null, + "settings.integrations.googleCalendarExport.defaultReminder.description": null, "settings.integrations.googleCalendarExport.automaticSyncBehavior.header": null, "settings.integrations.googleCalendarExport.syncOnCreate.name": null, "settings.integrations.googleCalendarExport.syncOnCreate.description": null, From d12354279465d72efcc02262ef49c5ea508aa3ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Normen=20Mu=CC=88ller?= Date: Wed, 28 Jan 2026 21:15:27 +0100 Subject: [PATCH 5/5] docs: update test results (fix-project-card-refresh) --- PR.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/PR.md b/PR.md index ed0d33b5..5213be6a 100644 --- a/PR.md +++ b/PR.md @@ -21,4 +21,12 @@ Examples (illustrative): ## Tests -- Not run (manual testing only) +- `npm run i18n:sync` +- `npm run lint` (warnings only; matches `upstream/main`) +- `node generate-release-notes-import.mjs` +- `npm run typecheck` +- `npm run test:ci -- --verbose` (fails in `upstream/main`: `tests/unit/issues/due-date-timezone-inconsistency.test.ts`) +- `npm run test:integration` +- `npm run test:performance` (no tests found) +- `npm run build` (missing OAuth IDs: `GOOGLE_OAUTH_CLIENT_ID`, `MICROSOFT_OAUTH_CLIENT_ID`) +- `npm run test:build`