Screen: Calendar
web/availability.html — nav label "Availability", on-screen title "Calendar". Combines team
free/busy with an internal Google Calendar event cache, so SABLE can show both open working time
and meeting context, deliberately at different levels of detail for different viewers.
Team rail
Filter people, switch day/week, and check sync health before relying on any open window.
Calendar intelligence
Admins, leads, and consultants can see upcoming internal event details, project-linked meetings, and unmatched meetings that may need routing. Admins and leads can correct a meeting's project match from this panel — see Calendar for how those manual overrides persist through future syncs instead of being wiped out.
Open windows
Shared openings are calculated from readable calendars only; a stale or errored calendar is never treated as free just because it stopped reporting.
Timeline: busy blocks only
The scheduling timeline uses opaque busy blocks — it shows when someone is unavailable, never what they're doing. This is the same privacy split documented on the Availability and Calendar API page: the timeline query selects only busy/free state, full stop.
Approval path for writes
Creating, updating, or cancelling a Google Calendar event is proposed through approvals and only
executes when the calendar-write switch (CALENDAR_ACT_WRITES_ENABLED) is armed.
Where the code lives
sable-agents-demo/web/availability.htmlsable-agents-demo/web/api/availability.js,_availability.jssable-agents-demo/web/api/calendar.js,_calendar.js