Skip to content

Commit 1210136

Browse files
committed
release 4.2.0
Added: - Korean language support (1911 localization keys) - Obsidian 1.11.0 API features with backwards compatibility - shortYear template variable for custom filename/folder templates - Option to prevent auto-creation of default Base view files - Shift+click on status icon to cycle backwards - Vim insert mode auto-start in task creation modal - Button tooltips to calendar view toolbar and task modal - Settings sync across devices via Obsidian Sync - Kanban view option for status icons in column headers only - Calendar view option to span tasks between scheduled and due dates - currentNotePath support for "Create new inline task" command - Option to open Pomodoro timer in mobile sidebar - Option to use ICS event end time as task due date - Option to use task duration for ICS calendar export Fixed: - Title sanitization when "Store Task Title in Filename" is disabled - Duplicate task entries in Agenda view - timeEstimateCategory formula for new tasks - Bases views resetting to Calendar view - Overdue strikethrough on completed tasks - Calendar view crash with invalid date formats - Today column styling in calendar week/day views - Drag-and-drop in Kanban view on mobile - Pomodoro task menu not showing new tasks - "Unsaved Changes" popup appearing randomly - Kanban swimlane column assignment with formula grouping - Date context menu time preservation with increment options - v3 saved views export to Bases format - Due date dragging in calendar view - Calendar view responsiveness for user interactions - Pomodoro timer button visibility - Views in pop-out windows (drag-and-drop, context menus, etc.) - "Convert current note to task" default values - Blocking view error with single dependency - Missing navigation link to Default Base Templates - "Go to today's note" command in positive UTC offset timezones
1 parent 2a70cf0 commit 1210136

25 files changed

+144
-19
lines changed

docs/releases/unreleased.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,13 @@ Example:
3838
- (#59) Added `shortYear` template variable for custom filename and folder templates
3939
- Use `{shortYear}` in filename templates (e.g., "25" for 2025)
4040
- Use `{{shortYear}}` in folder templates
41-
- Thanks to @Konosprod for the feature request
41+
- Thanks to @Pixeltica for the feature request
4242

4343
- (#1393) Option to prevent auto-creation of default Base view files on startup
4444
- New "Auto-create default files" toggle in Settings → Integrations → Bases Integration
4545
- When disabled, deleted sample Base files will not be recreated on plugin load
4646
- The manual "Create Default Files" button remains available for on-demand recreation
47-
- Thanks to @LookGoodFeelGood for the feature request
47+
- Thanks to @wealthychef1 for the feature request
4848

4949
- (#1408) Shift+click on status icon to cycle backwards through statuses
5050
- Normal click cycles forward through status order

i18n.manifest.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -979,6 +979,8 @@
979979
"settings.integrations.autoExport.interval.name": "556715bd2aecbd24fb83bc1f8cef895487c2d007",
980980
"settings.integrations.autoExport.interval.description": "f2ac976e77283d803014730f8dd19fdb897eba3a",
981981
"settings.integrations.autoExport.interval.placeholder": "e6c3dd630428fd54834172b8fd2735fed9416da4",
982+
"settings.integrations.autoExport.useDuration.name": "87b3743ae17a08768a0038a59fb29249cd2ca8d8",
983+
"settings.integrations.autoExport.useDuration.description": "7f0c434c37cc2a0cc72d5e0d915b7f17d161ab93",
982984
"settings.integrations.autoExport.exportNow.name": "7cfc9635a969797678683f0e868769f62939f193",
983985
"settings.integrations.autoExport.exportNow.description": "eb9687ed62a459d30cf760ae509e36cdd4508294",
984986
"settings.integrations.autoExport.exportNow.buttonText": "85696d318a1845ba3adc3909da38cea00db8b298",

i18n.state.json

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3920,6 +3920,14 @@
39203920
"source": "e6c3dd630428fd54834172b8fd2735fed9416da4",
39213921
"translation": "e6c3dd630428fd54834172b8fd2735fed9416da4"
39223922
},
3923+
"settings.integrations.autoExport.useDuration.name": {
3924+
"source": "87b3743ae17a08768a0038a59fb29249cd2ca8d8",
3925+
"translation": "ffb078be6e4ff10c2a1fc17a0a8571de74238dfc"
3926+
},
3927+
"settings.integrations.autoExport.useDuration.description": {
3928+
"source": "7f0c434c37cc2a0cc72d5e0d915b7f17d161ab93",
3929+
"translation": "ce1acda2cd8f23fe178b3011cee2624e4e1af1ee"
3930+
},
39233931
"settings.integrations.autoExport.exportNow.name": {
39243932
"source": "7cfc9635a969797678683f0e868769f62939f193",
39253933
"translation": "56a4bf9a1d4c031fc7b827cde93098049fb9aca7"
@@ -11574,6 +11582,14 @@
1157411582
"source": "e6c3dd630428fd54834172b8fd2735fed9416da4",
1157511583
"translation": "e6c3dd630428fd54834172b8fd2735fed9416da4"
1157611584
},
11585+
"settings.integrations.autoExport.useDuration.name": {
11586+
"source": "87b3743ae17a08768a0038a59fb29249cd2ca8d8",
11587+
"translation": "4de1b7ff833f94a673a073d5dae03cd9dd56e2d3"
11588+
},
11589+
"settings.integrations.autoExport.useDuration.description": {
11590+
"source": "7f0c434c37cc2a0cc72d5e0d915b7f17d161ab93",
11591+
"translation": "2975a0d8204499b302f876a62af476d55638f365"
11592+
},
1157711593
"settings.integrations.autoExport.exportNow.name": {
1157811594
"source": "7cfc9635a969797678683f0e868769f62939f193",
1157911595
"translation": "5c471a5924e97ae10983310eeabe4e27eaa940c2"
@@ -19228,6 +19244,14 @@
1922819244
"source": "e6c3dd630428fd54834172b8fd2735fed9416da4",
1922919245
"translation": "e6c3dd630428fd54834172b8fd2735fed9416da4"
1923019246
},
19247+
"settings.integrations.autoExport.useDuration.name": {
19248+
"source": "87b3743ae17a08768a0038a59fb29249cd2ca8d8",
19249+
"translation": "707b71ac33bb87573ac2d436c574a9b1baa7ebfe"
19250+
},
19251+
"settings.integrations.autoExport.useDuration.description": {
19252+
"source": "7f0c434c37cc2a0cc72d5e0d915b7f17d161ab93",
19253+
"translation": "0f86445ffee2678c980bfd6c280dd129e3f4b477"
19254+
},
1923119255
"settings.integrations.autoExport.exportNow.name": {
1923219256
"source": "7cfc9635a969797678683f0e868769f62939f193",
1923319257
"translation": "43a57aaa3715ba7cccd669b005599ea9f78b5e05"
@@ -26882,6 +26906,14 @@
2688226906
"source": "e6c3dd630428fd54834172b8fd2735fed9416da4",
2688326907
"translation": "e6c3dd630428fd54834172b8fd2735fed9416da4"
2688426908
},
26909+
"settings.integrations.autoExport.useDuration.name": {
26910+
"source": "87b3743ae17a08768a0038a59fb29249cd2ca8d8",
26911+
"translation": "87c2f65e12aa9f604f983a35b37964bb8fbc93b7"
26912+
},
26913+
"settings.integrations.autoExport.useDuration.description": {
26914+
"source": "7f0c434c37cc2a0cc72d5e0d915b7f17d161ab93",
26915+
"translation": "562338567eeb47f13daa52712ce38ca1ec917a6b"
26916+
},
2688526917
"settings.integrations.autoExport.exportNow.name": {
2688626918
"source": "7cfc9635a969797678683f0e868769f62939f193",
2688726919
"translation": "bc24df47585c2f461779a31b0ea4f64035cfec49"
@@ -34536,6 +34568,14 @@
3453634568
"source": "e6c3dd630428fd54834172b8fd2735fed9416da4",
3453734569
"translation": "e6c3dd630428fd54834172b8fd2735fed9416da4"
3453834570
},
34571+
"settings.integrations.autoExport.useDuration.name": {
34572+
"source": "87b3743ae17a08768a0038a59fb29249cd2ca8d8",
34573+
"translation": "0555b2095b3968b18fdfc5ffa157d29c3d1adb83"
34574+
},
34575+
"settings.integrations.autoExport.useDuration.description": {
34576+
"source": "7f0c434c37cc2a0cc72d5e0d915b7f17d161ab93",
34577+
"translation": "20a416cff1e02e5bb151cd51bf68a2fdac4b2bf3"
34578+
},
3453934579
"settings.integrations.autoExport.exportNow.name": {
3454034580
"source": "7cfc9635a969797678683f0e868769f62939f193",
3454134581
"translation": "bc1f813743b8ed3976b732481936f339118862fa"
@@ -42190,6 +42230,14 @@
4219042230
"source": "e6c3dd630428fd54834172b8fd2735fed9416da4",
4219142231
"translation": "e6c3dd630428fd54834172b8fd2735fed9416da4"
4219242232
},
42233+
"settings.integrations.autoExport.useDuration.name": {
42234+
"source": "87b3743ae17a08768a0038a59fb29249cd2ca8d8",
42235+
"translation": "38113122ef0060797059245825fd0b9a4a120e77"
42236+
},
42237+
"settings.integrations.autoExport.useDuration.description": {
42238+
"source": "7f0c434c37cc2a0cc72d5e0d915b7f17d161ab93",
42239+
"translation": "3e383bfde00a14969eb9aa0b845342fa3327d48c"
42240+
},
4219342241
"settings.integrations.autoExport.exportNow.name": {
4219442242
"source": "7cfc9635a969797678683f0e868769f62939f193",
4219542243
"translation": "60c8f5c35148d24d1701bbdb480e1223d527d4c0"
@@ -49844,6 +49892,14 @@
4984449892
"source": "e6c3dd630428fd54834172b8fd2735fed9416da4",
4984549893
"translation": "e6c3dd630428fd54834172b8fd2735fed9416da4"
4984649894
},
49895+
"settings.integrations.autoExport.useDuration.name": {
49896+
"source": "87b3743ae17a08768a0038a59fb29249cd2ca8d8",
49897+
"translation": "79eb17a244def77706d8aced3ed664bbb1551ed5"
49898+
},
49899+
"settings.integrations.autoExport.useDuration.description": {
49900+
"source": "7f0c434c37cc2a0cc72d5e0d915b7f17d161ab93",
49901+
"translation": "ddb96f9a30382595e19c9e8afecfe86c19af117f"
49902+
},
4984749903
"settings.integrations.autoExport.exportNow.name": {
4984849904
"source": "7cfc9635a969797678683f0e868769f62939f193",
4984949905
"translation": "665a1aca073518fb8a998bed874bf864c7243015"
@@ -57498,6 +57554,14 @@
5749857554
"source": "e6c3dd630428fd54834172b8fd2735fed9416da4",
5749957555
"translation": "e6c3dd630428fd54834172b8fd2735fed9416da4"
5750057556
},
57557+
"settings.integrations.autoExport.useDuration.name": {
57558+
"source": "87b3743ae17a08768a0038a59fb29249cd2ca8d8",
57559+
"translation": "c909406db35651c1be15a854990974fae2628356"
57560+
},
57561+
"settings.integrations.autoExport.useDuration.description": {
57562+
"source": "7f0c434c37cc2a0cc72d5e0d915b7f17d161ab93",
57563+
"translation": "43318be69b51eeb674e8a433b501c63e8cb27061"
57564+
},
5750157565
"settings.integrations.autoExport.exportNow.name": {
5750257566
"source": "7cfc9635a969797678683f0e868769f62939f193",
5750357567
"translation": "6ca53cdd7653a857960ce31372b3550bcba0223e"

manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"id": "tasknotes",
33
"name": "TaskNotes",
4-
"version": "4.1.3",
4+
"version": "4.2.0",
55
"minAppVersion": "1.10.1",
66
"description": "Note-based task management with calendar, pomodoro and time-tracking integration.",
77
"author": "Callum Alpass",

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "tasknotes",
3-
"version": "4.1.3",
3+
"version": "4.2.0",
44
"description": "Note-based task management with calendar, pomodoro and time-tracking integration.",
55
"main": "main.js",
66
"scripts": {

src/editor/RelationshipsDecorations.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -444,16 +444,16 @@ async function injectReadingModeWidget(
444444
// Get the file's frontmatter to check if it's a task or project
445445
let isTaskNote = false;
446446
let isProjectNote = false;
447-
const metadata = this.plugin.app.metadataCache.getFileCache(file);
447+
const metadata = plugin.app.metadataCache.getFileCache(file);
448448
if (!metadata?.frontmatter) {
449449
// Check if this is a project note (referenced by tasks via the project property)
450450
// Some project notes will not have frontmatter
451-
isProjectNote = this.plugin.dependencyCache?.isFileUsedAsProject(file.path) || false;
451+
isProjectNote = plugin.dependencyCache?.isFileUsedAsProject(file.path) || false;
452452
} else {
453453
// Check if this is a task note
454-
isTaskNote = this.plugin.cacheManager.isTaskFile(metadata.frontmatter);
454+
isTaskNote = plugin.cacheManager.isTaskFile(metadata.frontmatter);
455455
// Check if this is a project note (referenced by tasks via the project property)
456-
isProjectNote = this.plugin.dependencyCache?.isFileUsedAsProject(file.path) || false;
456+
isProjectNote = plugin.dependencyCache?.isFileUsedAsProject(file.path) || false;
457457
}
458458

459459
if (!isTaskNote && !isProjectNote) {

src/i18n/resources/de.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1638,6 +1638,11 @@ export const de: TranslationTree = {
16381638
description: "Wie oft die Export-Datei aktualisiert werden soll",
16391639
placeholder: "60",
16401640
},
1641+
useDuration: {
1642+
name: "Aufgabendauer für Eventlänge verwenden",
1643+
description:
1644+
"Wenn aktiviert, wird die geschätzte Dauer der Aufgabe anstelle des Fälligkeitsdatums für die Endzeit des Kalenderevents verwendet. Dies ist nützlich für GTD-Workflows, bei denen geplant + Dauer die Arbeitsplanung darstellt, während das Fälligkeitsdatum Fristen repräsentiert.",
1645+
},
16411646
exportNow: {
16421647
name: "Jetzt exportieren",
16431648
description: "Sofortigen Export manuell auslösen",

src/i18n/resources/es.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1638,6 +1638,11 @@ export const es: TranslationTree = {
16381638
description: "Con qué frecuencia actualizar el archivo de exportación",
16391639
placeholder: "60",
16401640
},
1641+
useDuration: {
1642+
name: "Usar duración de la tarea para la longitud del evento",
1643+
description:
1644+
"Cuando está habilitado, usa la estimación de tiempo (duración) de la tarea en lugar de la fecha de vencimiento para la hora de finalización del evento del calendario. Esto es útil para flujos de trabajo GTD donde programado + duración representa la planificación del trabajo, mientras que la fecha de vencimiento representa plazos.",
1645+
},
16411646
exportNow: {
16421647
name: "Exportar ahora",
16431648
description: "Activar manualmente una exportación inmediata",

src/i18n/resources/fr.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1638,6 +1638,11 @@ export const fr: TranslationTree = {
16381638
description: "Fréquence de mise à jour du fichier d'export",
16391639
placeholder: "60",
16401640
},
1641+
useDuration: {
1642+
name: "Utiliser la durée de la tâche pour la longueur de l'événement",
1643+
description:
1644+
"Lorsque activé, utilise l'estimation de temps (durée) de la tâche au lieu de la date d'échéance pour l'heure de fin de l'événement du calendrier. Ceci est utile pour les flux de travail GTD où planifié + durée représente la planification du travail, tandis que la date d'échéance représente les délais.",
1645+
},
16411646
exportNow: {
16421647
name: "Exporter maintenant",
16431648
description: "Déclencher manuellement un export immédiat",

src/i18n/resources/ja.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1638,6 +1638,11 @@ export const ja: TranslationTree = {
16381638
description: "エクスポートファイルを更新する頻度",
16391639
placeholder: "60",
16401640
},
1641+
useDuration: {
1642+
name: "タスクの所要時間をイベントの長さに使用",
1643+
description:
1644+
"有効にすると、カレンダーイベントの終了時刻に期日ではなくタスクの見積時間(所要時間)を使用します。これは、予定 + 所要時間が作業計画を表し、期日が締め切りを表すGTDワークフローに便利です。",
1645+
},
16411646
exportNow: {
16421647
name: "今すぐエクスポート",
16431648
description: "即座にエクスポートを手動でトリガー",

0 commit comments

Comments
 (0)