Skip to content

Commit bf1428c

Browse files
committed
release 4.10.1
1 parent 19af992 commit bf1428c

9 files changed

Lines changed: 56 additions & 27 deletions

File tree

docs/privacy.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# TaskNotes Privacy Policy
22

3-
Last updated: February 21, 2026
3+
Last updated: June 4, 2026
44

55
## Overview
66

@@ -17,11 +17,12 @@ Plugin settings are stored in Obsidian's local plugin configuration.
1717

1818
## Optional Network Features
1919

20-
TaskNotes is local-first. Network requests occur only when you enable features that require them.
20+
TaskNotes is local-first. Network requests occur only for enabled features that require them.
2121
Some enabled integrations perform periodic background refreshes, such as calendar provider sync and ICS subscription updates.
2222

2323
Optional network features:
2424

25+
- Release checks: when enabled, TaskNotes checks GitHub once on startup for newer compatible TaskNotes releases. This is enabled by default and can be disabled in TaskNotes settings.
2526
- OAuth calendar integration (Google/Microsoft): fetches and updates calendar events through provider APIs.
2627
- ICS subscriptions: fetches events from configured ICS URLs.
2728
- Webhooks: sends event payloads to webhook endpoints you configure.
@@ -37,6 +38,7 @@ Optional network features:
3738

3839
- Google APIs: https://policies.google.com/privacy
3940
- Microsoft APIs: https://privacy.microsoft.com/privacystatement
41+
- GitHub: https://docs.github.com/en/site-policy/privacy-policies/github-general-privacy-statement
4042
- Any ICS host or webhook endpoint you configure
4143

4244
## What TaskNotes Does Not Do

docs/releases.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ Welcome to the TaskNotes release notes. Here you can find detailed information a
66

77
### Version 4.x (Current)
88

9+
- [4.10.1](releases/4.10.1.md)
910
- [4.10.0](releases/4.10.0.md)
1011
- [4.9.2](releases/4.9.2.md)
1112
- [4.9.1](releases/4.9.1.md)

docs/releases/4.10.1.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# TaskNotes 4.10.1
2+
3+
## Added
4+
5+
- Added a startup check for new compatible TaskNotes releases. When a new release is available, TaskNotes shows a notice that opens the TaskNotes entry in Obsidian's Community Plugins browser.
6+
- (#1989) Added a command-palette action plus runtime and HTTP API actions for updating configured default `.base` files from the current TaskNotes templates. Thanks to @businessBoris for the request.
7+
- (#1115) Added API and MCP support for creating materialized occurrence notes from recurring tasks, and made headless recurring-instance completion respect occurrence notes when the parent uses Create next after completion. Thanks to @gsssr for the original request, @slipstyle for the follow-up, and @martin-forge for identifying the API/MCP gap.
8+
9+
## Fixed
10+
11+
- (#1985) Fixed embedded Calendar and Agenda time-grid views drifting out of alignment inside callouts and Reading mode. Thanks to @matesvecenik for reporting and sharing screenshots.
12+
- (#1986) Fixed the local HTTP API rejecting requests from the TaskNotes browser extension's Chrome extension origin. Thanks to @n1njaznutz for reporting this.
13+
- (#1980) Added mobile bottom spacing to Agenda Calendar views so the last visible tasks can scroll above Obsidian's bottom navigation bar. Thanks to @Jomo94 for reporting and sharing the screenshot.
14+
- (#1984) Fixed mobile task link overlays hiding configured inline task card properties such as scheduled date, due date, contexts, and projects. Thanks to @stil-sudo for reporting.
15+
- (#1979) Kept the left-positioned subtask chevron from overlapping the task status control on mobile task cards. Thanks to @Jomo94 for reporting and sharing the screenshot.
16+
- (#1903) Reduced the Edit Task modal's mobile action-button footer so Open note, Archive, Delete, Save, and Cancel take two rows instead of three on iPhone-sized screens. Thanks to @3zra47 for the original report and @krzyfu for the follow-up about the button area crowding the editor.
17+
- (#1982) Preserved scroll position in TaskNotes Bases after task edits and data refreshes, avoiding jumps back to the top on mobile. Thanks to @3zra47 for reporting.
18+
- (#1978) Restored Obsidian editor shortcuts such as insert link, headings, and list toggles inside the Edit Task modal's Details editor. Thanks to @krzyfu for reporting this.

docs/releases/unreleased.md

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -31,21 +31,3 @@ When a change has user-facing documentation, include a canonical tasknotes.dev l
3131
```
3232
3333
-->
34-
35-
## Added
36-
37-
- Added an enabled-by-default startup check for new compatible TaskNotes releases. When a new release is available, TaskNotes shows a notice that opens the TaskNotes entry in Obsidian's Community Plugins browser.
38-
- Added translations for the new startup release-check setting and update notice.
39-
- (#1989) Added a command-palette action plus runtime and HTTP API actions for updating configured default `.base` files from the current TaskNotes templates. Thanks to @businessBoris for the request.
40-
- (#1115) Added API and MCP support for creating materialized occurrence notes from recurring tasks, and made headless recurring-instance completion respect occurrence notes when the parent uses Create next after completion. Thanks to @martin-forge for identifying the API/MCP gap.
41-
42-
## Fixed
43-
44-
- (#1985) Fixed embedded Calendar and Agenda time-grid views drifting out of alignment inside callouts and Reading mode. Thanks to @matesvecenik for reporting and sharing screenshots.
45-
- (#1986) Fixed the local HTTP API rejecting requests from the TaskNotes browser extension's Chrome extension origin. Thanks to @n1njaznutz for reporting this.
46-
- (#1980) Added mobile bottom spacing to Agenda Calendar views so the last visible tasks can scroll above Obsidian's bottom navigation bar. Thanks to @Jomo94 for reporting and sharing the screenshot.
47-
- (#1984) Fixed mobile task link overlays hiding configured inline task card properties such as scheduled date, due date, contexts, and projects. Thanks to @stil-sudo for reporting.
48-
- (#1979) Kept the left-positioned subtask chevron from overlapping the task status control on mobile task cards. Thanks to @Jomo94 for reporting and sharing the screenshot.
49-
- (#1903) Reduced the Edit Task modal's mobile action-button footer so Open note, Archive, Delete, Save, and Cancel take two rows instead of three on iPhone-sized screens. Thanks to @3zra47 for the original report and @krzyfu for the follow-up about the button area crowding the editor.
50-
- (#1982) Preserved scroll position in TaskNotes Bases after task edits and data refreshes, avoiding jumps back to the top on mobile. Thanks to @3zra47 for reporting.
51-
- (#1978) Restored Obsidian editor shortcuts such as insert link, headings, and list toggles inside the Edit Task modal's Details editor. Thanks to @krzyfu for reporting this.

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.10.0",
4+
"version": "4.10.1",
55
"minAppVersion": "1.12.2",
66
"description": "Note-based task management with calendar, pomodoro and time-tracking integration.",
77
"author": "Callum Alpass",

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

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.10.0",
3+
"version": "4.10.1",
44
"description": "Note-based task management with calendar, pomodoro and time-tracking integration.",
55
"main": "main.js",
66
"scripts": {

tests/unit/bases/calendarMaterializedOccurrences.test.ts

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,21 @@
1+
jest.mock("../../../src/utils/helpers", () => ({
2+
...jest.requireActual("../../../src/utils/helpers"),
3+
generateRecurringInstances: jest.fn(),
4+
}));
5+
16
import {
27
generateCalendarEvents,
38
getTargetDateForEvent,
49
type CalendarEvent,
510
} from "../../../src/bases/calendar-core";
611
import type TaskNotesPlugin from "../../../src/main";
712
import { formatDateForStorage } from "../../../src/utils/dateUtils";
13+
import { generateRecurringInstances } from "../../../src/utils/helpers";
814
import { TaskFactory } from "../../helpers/mock-factories";
915

16+
const mockedGenerateRecurringInstances =
17+
generateRecurringInstances as jest.MockedFunction<typeof generateRecurringInstances>;
18+
1019
function createPlugin(): TaskNotesPlugin {
1120
return {
1221
priorityManager: {
@@ -22,6 +31,10 @@ function localDate(year: number, monthIndex: number, day: number): Date {
2231
return new Date(year, monthIndex, day);
2332
}
2433

34+
function localNoonDate(year: number, monthIndex: number, day: number): Date {
35+
return new Date(year, monthIndex, day, 12);
36+
}
37+
2538
function virtualOccurrenceDates(events: CalendarEvent[]): string[] {
2639
return events
2740
.filter(
@@ -37,8 +50,20 @@ function virtualOccurrenceDates(events: CalendarEvent[]): string[] {
3750

3851
describe("calendar materialized occurrences", () => {
3952
const plugin = createPlugin();
40-
const start = localDate(2026, 5, 1);
41-
const end = localDate(2026, 5, 4);
53+
const start = localNoonDate(2026, 5, 1);
54+
const end = localNoonDate(2026, 5, 4);
55+
56+
beforeEach(() => {
57+
mockedGenerateRecurringInstances.mockReturnValue([
58+
localNoonDate(2026, 5, 1),
59+
localNoonDate(2026, 5, 2),
60+
localNoonDate(2026, 5, 3),
61+
]);
62+
});
63+
64+
afterEach(() => {
65+
mockedGenerateRecurringInstances.mockReset();
66+
});
4267

4368
it("coalesces virtual recurrence events when a materialized occurrence exists", async () => {
4469
const parent = TaskFactory.createRecurringTask("FREQ=DAILY;INTERVAL=1", {

versions.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,6 @@
2525
"4.9.0": "1.12.2",
2626
"4.9.1": "1.12.2",
2727
"4.9.2": "1.12.2",
28-
"4.10.0": "1.12.2"
28+
"4.10.0": "1.12.2",
29+
"4.10.1": "1.12.2"
2930
}

0 commit comments

Comments
 (0)