From 6e52c53017112ab7e60650c5ed3a5e841aebdbe0 Mon Sep 17 00:00:00 2001 From: Lorite Date: Sun, 8 Mar 2026 16:40:34 +0100 Subject: [PATCH] Fix a bug about resetting the calendar view to today incorrectly --- docs/releases/unreleased.md | 1 + src/bases/CalendarView.ts | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/releases/unreleased.md b/docs/releases/unreleased.md index 3eee5db9..7de84bb0 100644 --- a/docs/releases/unreleased.md +++ b/docs/releases/unreleased.md @@ -26,6 +26,7 @@ Example: ## Fixed +- Fixed a calendar view issue where creating or modifying events, timeblocks, etc. could reset the visible date back to today - 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/bases/CalendarView.ts b/src/bases/CalendarView.ts index 8f8bf36a..3d379c03 100644 --- a/src/bases/CalendarView.ts +++ b/src/bases/CalendarView.ts @@ -113,6 +113,8 @@ export class CalendarView extends BasesViewBase { // Flag to indicate config changed and calendar needs recreation private _configChangedNeedsRecreate = false; + // Preserve visible date when calendar is re-created. + private _recreateTargetDate: Date | null = null; private viewOptions: { // Events @@ -617,6 +619,7 @@ export class CalendarView extends BasesViewBase { this._configChangedNeedsRecreate = false; this.readViewOptions(); if (this.calendar) { + this._recreateTargetDate = this.calendar.getDate(); this.calendar.destroy(); this.calendar = null; } @@ -675,7 +678,7 @@ export class CalendarView extends BasesViewBase { if (!this.calendarEl) return; // Determine initial date - const initialDate = this.determineInitialDate(taskNotes); + const initialDate = this._recreateTargetDate ?? this.determineInitialDate(taskNotes); // Build calendar options const calendarOptions: CalendarOptions = { @@ -822,6 +825,7 @@ export class CalendarView extends BasesViewBase { // Create calendar this.calendar = new Calendar(this.calendarEl, calendarOptions); this.calendar.render(); + this._recreateTargetDate = null; // Apply showTodayHighlight option via CSS this.applyTodayHighlightStyling();