Skip to content

Overview

Almanac presents a recurring programme as a printed ledger. One shared Month Grid widget supplies published month and day pages, with ordinary hours, rest days and closed seasons rendered on the server.

  1. Open the theme-management entry for Theme Almanac, note the site’s current theme, and select only the site you intend to review.
  2. Choose Preview Theme Almanac to view this theme privately on that site’s existing content without changing its selected theme. Check available page areas, sections and the mobile layout; create a page first if there is nothing to preview.
  3. When ready, choose Apply Theme Almanac for that site. This changes its public design immediately, including already-published pages.
  4. Choose Spring Tide, Projection Room, or Harvest Table in Theme Studio and create a calendar layout.
  5. Create a widget with the normal component picker: Month Grid (capell.widget.almanac.month-grid-living-ledger). Save it, then open Appearance → Calendar programme. Existing widget view and update permissions control access to the programme. No additional advanced-presentation permission is required to edit sessions.
  6. Enable Build month and day pages from this programme. Set Calendar path to /calendar (or your own path) and Session source to Authored sessions.
  7. Add each occurrence once under Authored sessions. Supply a title, start date/time with its local UTC offset, an availability band and optional summary/booking link. For example, 2026-08-14T09:30:00+01:00. Enter recurring occurrences separately; this editor does not generate recurrence rules.
  8. Place that same widget in the calendar layout. Create ordinary pages using this layout and publish their URLs as /calendar/2026-08 and /calendar/2026-08/14. Repeat for the months and days you want to publish. Reuse the widget rather than copying its programme into each page.
  9. Publish the widget and pages, then visit the anonymous month and day URLs. The month links only to published day pages. Previous/next navigation uses the nearest published month in this site and language, skipping gaps; it never invents an adjacent month URL.
  10. Preview keyboard navigation, mobile agenda layout, no-JavaScript output, and reduced motion before publishing.

To recover the previous design, reopen the previous theme’s management entry, select the same site and choose its Apply button. This restores the theme selection; it does not undo content or shared Theme Studio settings. Saving those settings can affect public pages using that theme, so do not treat settings edits as private preview changes.

Ordinary hours for days without sessions supplies quiet-day text. Without it, a day is a rest day. A month with no explicit sessions displays the closed-season state. A published day shows all of that day’s sessions, ordered by local start time. None of this needs JavaScript. JavaScript only enhances navigation, previews and date styling.

Choose Public Events occurrences, with authored fallback to consume already-generated, published public Events occurrences for the page’s site. Only occurrences with an event translation in the current language qualify; private, cancelled, draft, expired and other-site content is excluded. Occurrence times use their stored timezone. The editor explains whether Events is currently available.

Matching Events occurrences take precedence for the whole month. If none qualify, or Events is absent/disabled, that month uses the authored entries. Enabling or disabling Events invalidates cached calendar output, exported pages and their surrogate keys for programmes using Events. Selecting Authored sessions always uses authored entries, even with Events installed. Almanac does not generate Events recurrence and does not import live registration counts. Events sessions have no live availability claim or booking button; use their event page for registration. Authored sessions use the three editorial availability bands.

Existing demo/legacy widgets with meta.type, pre-expanded days/sessions and explicit variants continue to render. The new programme path is opt-in through meta.calendar.enabled; it does not rewrite existing payloads or implicitly enable demo content. Every registered Almanac component also renders from its picker key, including a key inherited from its blueprint. Unknown keys render no public content and cannot select arbitrary views.

  • Do not write “three places left” into calendar content. Use the three availability bands; live capacity belongs inside the booking flow.
  • A month with no explicit entries becomes a closed-season interstitial, not an empty grid.
  • Archive footnotes appear only when an editor supplied them.
  • Comments appear only when the day entry enables commentary and Comments is available. The theme never guesses from the date.
  • Saltern Sea Baths, its people, programme, email address, and history are fictional demo content. Replace all of them before publishing.
  • Publish only the month/day URLs you intend visitors to open. Disabled, redirected, unpublished, deleted, other-site and other-language pages do not become calendar links.
  • Calendar data is hydrated before Blade, with cache fingerprints and model dependencies. It does not classify sessions from the current visitor, authentication or clock.
  • Other Almanac widgets keep their existing prepared-content contracts. Their placement does not automatically query this programme.

Use private theme Preview for existing content. Ask a developer to follow safe demo setup in a disposable local site when you want fictional sample pages instead.

A scoped demo run writes sample pages, widgets and demo layouts, including on repeats, and can adopt the site recovery page. An unscoped run refuses existing sites; a scoped run preserves site configuration unless the developer deliberately chooses the documented overwrite option. Review the target, languages and domains together before setup.


For developers: see the README.