main
Calendar Tools
Inspect, repair, and reconcile calendars locally in the browser.
Calendar Tools is a standalone local-first application in the add·ideas Toolbox. Inputs are processed in the browser and are not uploaded.
Version 0.1 scope
- RFC 5545 parsing and inspection for events, recurrence, attendees, calendar metadata, and embedded VTIMEZONE definitions
- VTODO tasks, VJOURNAL entries, VFREEBUSY intervals, and nested VALARM inventory with focused diagnostics
- Bounded RRULE/RDATE/EXDATE occurrence preview, including moved or cancelled RECURRENCE-ID instances, changed durations, and RANGE=THISANDFUTURE, plus overlap/duplicate diagnostics
- Merge and deduplication by UID plus RECURRENCE-ID, preferring SEQUENCE and then DTSTAMP
- Conservative canonical repair: BOM/NUL removal, CRLF serialization, VERSION and PRODID normalization
- Browser-IANA timezone offset/transition reports and explicit DST gap/overlap classification
- Agenda and month occurrence views, bounded event/task authoring, and a local working-hours/free-slot planner over event and VFREEBUSY intervals
- Lossless iCalendar component-tree import/export through RFC 7265 jCal, plus a focused RFC 8984 JSCalendar Event/Task adapter with explicit loss warnings
- Relocatable offline PWA, local-only processing, and deterministic release packaging
Input is limited to 4 MiB, 100,000 physical lines, 10,000 components, and 5,000 events. Recurrence is limited to 500 occurrences per series, a 3,650-day horizon, and 5,000 displayed occurrences. See docs/ARCHITECTURE.md and docs/PRIVACY-SECURITY.md.
Development
Requires Node.js 22 and npm 11.
npm ci
npm run check
npm run test:browser
Release
npm run release:artifact creates a deterministic release/calendar-tools-0.2.0.zip and checksum sidecar.
Licence
GPL-3.0-or-later. Runtime dependencies retain their own licences; see THIRD_PARTY_NOTICES.md.
Releases
2
Calendar Tools 0.2.0
Latest
Languages
TypeScript
77.6%
JavaScript
11.9%
CSS
10%
HTML
0.5%