From dc6211b61676fcea24aabd3300648cec699175fb Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Tue, 13 Oct 2026 10:40:51 +0200 Subject: fix(calendar): review findings in calctl and the editor An edit now rewrites only the fields that changed. A save with nothing changed used to rebuild the alarm, turning ACTION:AUDIO into DISPLAY and dropping ACKNOWLEDGED, re-anchor the start to the local zone, and strip SUMMARY's parameters; the test edits a foreign event unchanged and checks every one survives. get, edit and delete name the calendar the event is in. The same invite synced into two calendars has one UID, and the panel acted on whichever file came first, so editing one copy could overwrite or delete the other. A custom rule's date cannot be moved from the panel: BYDAY=MO stayed on Monday while the start moved, and the series lost the day shown. UNTIL is read back in local time, so a 22:30 series keeps its last occurrence. Files are written 0644 like vdirsyncer's. Enter in the title no longer bypasses the busy guard, which could create an event twice, and a throwing callback no longer leaks its Process. Co-Authored-By: Claude Opus 5.5 --- desktop/island/calendar/test_cal.js | 2 ++ 1 file changed, 2 insertions(+) (limited to 'desktop/island/calendar/test_cal.js') diff --git a/desktop/island/calendar/test_cal.js b/desktop/island/calendar/test_cal.js index d91966e..9d0d147 100644 --- a/desktop/island/calendar/test_cal.js +++ b/desktop/island/calendar/test_cal.js @@ -84,6 +84,7 @@ assert.strictEqual(d.endTime, "11:00"); assert.strictEqual(d.startDay, "2026-10-20"); assert.strictEqual(d.alarm, "1h"); assert.strictEqual(d.calendar, "home"); +assert.strictEqual(d.source, ""); assert.strictEqual(C.newDraft("2026-10-20", new Date(2026, 9, 13, 23, 10), "home").startTime, "22:00"); // From calctl's JSON. @@ -92,6 +93,7 @@ const fe = C.fromEvent({ uid: "u", calendar: "home", title: "Trip", allDay: true assert.strictEqual(fe.startDay, "2026-10-14"); assert.strictEqual(fe.endDay, "2026-10-16"); assert.strictEqual(fe.allDay, true); +assert.strictEqual(fe.source, "home"); // where it lives now, for edit and delete assert.strictEqual(C.fromEvent(Object.assign({}, timed, { title: "x" })).startTime, "14:30"); // Picking on the grid: a click moves the event and keeps its length in days; -- cgit v1.2.3