Repository navigation
fix(calendar): show occurrence dates read-only on list cards (#2503) - #2505
Merged
Merged
Conversation
Calendar list and Agenda cards for occurrences other than the pending one were built from the series task, so they showed its dates and their chips wrote to the series. Selecting a date on a later occurrence's card moved the current occurrence. Those cards now show their own occurrence's scheduled date as read-only text and leave out the series' due date, which the model treats as a standalone deadline. The calendar has no way to move one projected occurrence: a pattern drop edits DTSTART's clock for the whole series, and gestures never materialize a note.
…2503) The read-only chip still took completion from the series' status, so a completed or skipped past occurrence was marked as past. Use the occurrence's own complete_instances and skipped_instances, as the card's state already does. Adds an e2e case for a timed daily series with matching scheduled and due dates, reported on the issue by a second user.
…currence-chips # Conflicts: # docs/releases/unreleased.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refs #2503
Problem
In a Bases calendar in list mode, and the Agenda view, which uses the same cards, each occurrence other than the pending one got a card built from the series task. Reproduced on
106a0551ein an isolated Obsidian withscheduled: 2026-11-08and a weekly rule:scheduled: Nov 8, and past occurrences did the same.edit-datecontrol. Choosing Tomorrow on that card wrotescheduled: 2026-11-06andrecurrence_original_date: 2026-11-08, moving the current occurrence.duechip behaved the same way.scheduledanddue: every row showed the first occurrence's date, marked past and overdue. Reproduced on unfixed main (Received: scheduled: Nov 4 19:00 (past)).Change
occurrenceScheduled, built from theinstanceDateandrecurringTemplateTimethe model already provides, using the model's own placement rule.complete_instancesandskipped_instances, not the series' status, so a completed or skipped past occurrence is not marked as past.Why read-only
There is no single-occurrence move to reuse. A pattern drop only rewrites DTSTART's clock for the whole series and ignores the target date.
recurrence_original_dateholds one identity, for the pending occurrence. The model and docs say gestures never materialize a note. Acting on the occurrence would therefore be a new feature, and the existing way to give one occurrence its own dates is an occurrence note.Why no due date
The model treats due as a standalone deadline rather than projecting it onto each recurrence date, so a projected occurrence has no due date of its own. The series' due date still appears on the pending card and as its own calendar row.
Testing
e2e/issues/issue-2503-projected-occurrence-dates.spec.ts: fails on the unfixed build (Received: scheduled: Nov 8) and passes with the fix. It includes a control that the pending occurrence's chip still moves it, and a timed daily series, where the pending occurrence alone stays past and overdue.npm run lint,npm run typecheck, the full Jest suite andcheck:bundle-sizepass. So do the related e2e specs (calendar-batch, 685, 983,pr-2492); 603 and 921 aretest.fixme, so they skipped.check-docs.mjs, because thedocs/specsubmodule isn't checked out in this worktree.Not changed here
These are the same class of problem but need separate decisions or fixes:
occurrenceDate. From the 15 Nov card, Skip instance recordedskipped_instances: [2026-11-08]and advanced the series. The docs say a selected pattern instance acts on its own date, and the grid's right-click menu already passesoccurrenceDate. The Mark complete options are built without it too, but were not tested.