Files
time-tools/public/docs/ARCHITECTURE.md
T
zemion 5e462f881d
Verify / verify (push) Canceled after 0s
Release Time Tools 0.2.0
2026-09-02 05:05:59 +02:00

1.9 KiB

Architecture

Time Tools is a static React/Vite application wrapped in the shared Toolbox shell. Its pure modules separate exact epoch parsing, named-zone resolution/transition inspection, calendar-versus-elapsed arithmetic, bounded recurrence preview, business-day calculation, UTC iCalendar generation and bounded iCalendar inspection.

temporal-polyfill supplies Temporal semantics while the browser runtime supplies IANA time-zone data. Croner handles explicitly selected 5/6/7-field cron syntax; rrule-temporal parses strict RFC 5545 recurrence rules with bounded iterations/candidate evaluations. iCalendar export resolves one named-zone wall time and writes escaped/folded UTC DTSTART/DTEND fields rather than an incomplete VTIMEZONE.

time/recurrence.ts places an explicit dialect adapter in front of Croner. It validates field counts, portable subsets, UTC-only schedulers, day-of-month/day-of-week semantics and scheduler-specific caveats before generating a bounded preview. time/meeting.ts advances a bounded instant range at a declared step, projects each candidate into every participant's IANA zone, and accepts it only when the fixed elapsed interval stays inside all entered same-day work windows.

time/ics-inspect.ts unfolds and tokenises imported calendars into a bounded component tree, validates calendar/event structure, inventories VTIMEZONE observances, and previews multiple recurring events with RDATE, EXDATE, and moved or cancelled RECURRENCE-ID overrides. It preserves floating/all-day semantics during preview. Unsupported custom-zone recurrence and RANGE=THISANDFUTURE overrides produce diagnostics and withheld occurrences instead of guessed instants. URLs and attachments remain inert metadata records.

Version 0.2 operations are synchronous and bounded, so the app creates no worker and has no persistence or server API. Relative entry and asset URLs keep the build relocatable below a nested portal path.