SpecificationsnormativeSheet 09 of 18
calendar@0.1
A sequence of human-readable days and events that opens as a proper month calendar, switches to an agenda, and travels anywhere as deterministic iCalendar.
- File
*.calendar.md- Views
- month + agenda
- Export
- RFC 5545-style
.ics - Codes
- MDTO900–999
§ 01
Yes: it renders like a pretty calendar
Days become a real seven-column month grid with compact event chips. The same standalone page carries a Month / Agenda switch; the alternate view is a calm chronological list for smaller screens and busy days.
--- markdownto: [email protected] title: Studio week timezone: America/Los_Angeles --- # Studio week ## 2026-08-10 - Lighting review [start:: 09:00] [end:: 09:45] [location:: North studio] [notes:: Confirm the dimmer map before the client arrives.] - Open house [start:: 18:00] [end:: 20:00] [url:: https://example.com/open-house] ## 2026-08-11 - Team offsite [all-day:: true] [location:: Mendocino]
Studio week
3 eventsacross 2 days · America/Los_Angelesportable calendar
2026
August
§ 02
Appointments are events, not fake tasks
Clicking an event opens an in-page detail sheet with its time, place, and notes. An external website, when present, remains a secondary action inside that sheet.
timezone:- An IANA zone, default UTC. Local clock times retain daylight-saving meaning.
## YYYY-MM-DD- A real, unique day.
[start:: HH:MM]- Timed events require start and a later end.
[all-day:: true]- An all-day event has no fake midnight clock time.
[notes:: …]- Plain-text event detail shown in the modal and exported as an iCalendar description.
§ 03
Portable without pretending to synchronize
Verb
Meaning
Source edit
export
Writes deterministic VCALENDAR with CRLF folding, stable UIDs, VALUE=DATE all-day events, and timezone-aware local values.
None. Writes .ics or prints with --stdout.
notes
Adds, replaces, or removes the selected event’s one-line notes field.
Local edit. Changes only that event’s [notes:: value] field.
§ 04
A calendar never guesses a missing time
--- markdownto: [email protected] --- ## 2026-08-10 - [all-day:: true] - Missing end [start:: 09:00] - Missing start [end:: 10:00] - Bad clock [start:: 25:00] [end:: 26:00] - Backwards [start:: 14:00] [end:: 13:00] - Maybe all day [all-day:: perhaps]
-
MDTO905 error line 6
- [all-day:: true]Event has no display text.
-
MDTO906 error line 7
- Missing end [start:: 09:00]Timed event is missing
end. -
MDTO906 error line 8
- Missing start [end:: 10:00]Timed event is missing
start. -
MDTO907 error line 9
- Bad clock [start:: 25:00] [end:: 26:00]Event time must be a real 24-hour
HH:MMvalue. -
MDTO908 error line 10
- Backwards [start:: 14:00] [end:: 13:00]Event end
13:00is not later than start14:00. -
MDTO909 error line 11
- Maybe all day [all-day:: perhaps]all-daymust betrueorfalse, foundperhaps.
Read calendar.md or run mdto spec calendar for the complete contract.