Skip to content

Calendar

Calendar is Herald’s schedule workspace. It uses the same terminal-native chrome as Timeline: top tabs, a left rail, a dense main view, a right inspector or command panel, bottom status, and context-sensitive hints.

Press 3 to open Calendar when a calendar source is configured or when Herald is running in demo mode. Calendar can show a week time-grid, a focused day agenda, a 3-day command view, agenda/search lists, and event detail. The left rail groups enabled calendars by source, uses colored swatches for each calendar, and lets you filter visible events without exposing provider IDs.

Calendar week time-grid with source rail and inspector

AreaWhat it shows
Calendar railMini month, source groups, colored calendar swatches, enabled/disabled state, visible counts, and filter scope.
Week Time-GridSeven days of timed events with half-hour guide rows, selected event focus, RSVP markers, and source colors.
Day AgendaOne selected day with full-width timed event rows and a persistent detail drawer.
3-Day CommandToday, tomorrow, and the next day with a command panel for selected event, next-up, open slots, and conflicts.
Agenda/Search listCompact cached event rows with source labels, RSVP markers, and a detail panel.
Event detailTime, local/event timezone, location, attendees, RSVP state, recurrence, attachments, notes, and available actions.

Week view is the spatial planning view. Use it to spot dense days, open blocks, conflicts, and events requiring a response.

Calendar week time-grid with source rail and inspector

Day view narrows the schedule to one day while keeping the selected event drawer visible.

Calendar day agenda with detail drawer

The 3-day command view bridges today, tomorrow, and the following day. Its side panel summarizes next-up context, open slots, and conflicts for the current enabled calendar scope.

Calendar 3-day command view with open slots

Calendar search is cache-backed and searches event titles, notes, locations, organizers, attendees, recurrence, attachments, and source labels while keeping provider internals hidden.

Calendar search results with selected event detail

KeyContextPreconditionsResult
3Main UICalendar is available.Opens Calendar.
tab / shift+tabCalendarMultiple panels are visible.Cycles focus between rail, main view, and detail/command panel.
j / downCalendar main panelEvents are visible.Moves to the next visible event, crossing day boundaries where useful.
k / upCalendar main panelEvents are visible.Moves to the previous visible event.
h / leftCalendar main panelA date-ranged view is active.Moves to the previous day, week, or 3-day range.
l / rightCalendar main panelA date-ranged view is active.Moves to the next day, week, or 3-day range.
wCalendarAny calendar view.Switches to Week Time-Grid.
dCalendarAny calendar view.Switches to Day Agenda.
tCalendarAny calendar view.Switches to 3-Day Command.
aCalendarAny calendar view.Switches to Agenda List.
/CalendarCalendar search is closed.Opens Calendar Search.
xCalendarCross-source search is available.Opens blended mail-and-calendar search.
enterCalendar eventAn event is selected.Opens full event detail.
eCalendar eventThe selected source supports editing.Opens Event Edit.
y / m / nRSVP action pickerSelected event supports RSVP.Accepts, tentatively accepts, or declines.
spaceCalendar railRail has focus.Shows or hides the highlighted calendar.
pAgendaHidden past events exist.Shows or hides past agenda rows.
escCalendar detail, search, or editA transient state is active.Returns to the prior Calendar view without losing range and selection.
  1. Press 3.
  2. Press w for Week Time-Grid.
  3. Use h/l to move week ranges.
  4. Use j/k to move through events.
  5. Read the inspector for timezone, RSVP, location, and notes context.
  1. Press d.
  2. Use h/l to move between days.
  3. Move through the day’s rows with j/k.
  4. Press enter when the drawer is not enough and you need full event detail.
  1. Press t.
  2. Review the command panel’s selected-event, next-up, open-slot, and conflict sections.
  3. Use h/l to slide the 3-day window.
  4. Press w, d, or a to jump into another Calendar view with the same event context.
  1. Press /.
  2. Type a query such as design.
  3. Press enter.
  4. Move through results with j/k.
  5. Read the detail panel, or press enter for the full event reader.
StateWhat happens
Calendar unavailableMail-only sessions do not advertise the Calendar tab. Add a calendar source from Settings or use demo mode to explore it.
LoadingCalendar shows cached data when available while the provider refresh continues.
Rail filteringDisabled calendars immediately disappear from the visible event set while date range and selection are preserved when possible.
Read-only sourceEvents remain readable, but mutation and RSVP actions are hidden or disabled with a clear reason.
Provider-backed editEvent edits write through Google Calendar or CalDAV first, then update the cache only after provider success.
Conflict or unsupported recurrenceHerald keeps the edit/error visible and does not rewrite cached event rows on failed provider writes.
Narrow terminalCalendar collapses to a compact layout or the global minimum-size guard instead of clipping columns.

Calendar reads cached event metadata, notes, attendees, reminders, recurrence, attachments, and source labels from configured calendar sources. Provider IDs, CalDAV URLs, Google event IDs, sync tokens, and internal scoped refs stay out of the TUI. Event edits, RSVP changes, and invitation imports can write to the selected provider-backed calendar source.

If Calendar is missing, open Settings and add a calendar source under Accounts, or run ./bin/herald --demo to see the deterministic demo calendar.

If a view looks empty, check the mini month, range header, enabled calendars in the rail, and whether Agenda has hidden past rows. Search still looks across cached events even when the current date range has no visible rows.