calendar
Month/week/day calendar written from scratch — no FullCalendar, no upstream JS library at all (~24 KB bundle, 0 npm dependencies). The parts everyone gets wrong run in Go: RRULE expansion (DAILY/WEEKLY/MONTHLY with COUNT/UNTIL/BYDAY, wall-clock anchored, everything else rejected loudly), timezone resolution with an explicit gap/fold policy (spring-forward times carried past the gap, ambiguous hours resolved to the first occurrence — table-tested against America/New_York and Lord Howe's 30-minute step), and conflict detection over resolved instants. The frame renders server-resolved occurrences only and sends move INTENTS — a wall-clock delta — which the host re-resolves: a drag onto a DST boundary can come back with a different wall-clock delta than was dragged, and the demo's live readout shows requested vs wall vs elapsed.
Install and mount
go get github.com/DonaldMurillo/gofastr-plugins@v0.5.0
import "github.com/DonaldMurillo/gofastr-plugins/calendar"
app.RegisterPlugin(calendar.New())Isolation
Runs in an opaque-origin iframe
Manifest
- Plugin version
- 0.1.0
- Framework compat
- >=0.28.0
- Isolation
- sandbox-iframe-opaque
- Sandbox tokens
- allow-scripts
- Capabilities
- document:read, document:write, theme:read
- Optional capabilities
- none
- CSP additions
- none
- Route prefix
/__gofastr/plugin/calendar- Entry
/__gofastr/plugin/calendar/app.html- Schema
- calendar-v1
- Min height
- 620px
- Docs
- docs/calendar.md