Theme Almanac
Package docs status
Section titled “Package docs status”This page is generated from package source documentation in the Capell packages repository and the checked-in manifest. Source documentation is not distribution status. Before running a Composer command, verify that the exact package and compatible 1.x release are available through public Packagist or the authenticated marketplace account.
| Field | Value |
|---|---|
| Composer package | capell-app/theme-almanac |
| Package slug | theme-almanac |
| Product group | Capell Themes |
| Tier | premium |
| Bundle | themes |
| Runtime contexts | frontend |
| Capell version | ^1.0 |
| Catalogue role | extension |
| Release channel | Beta |
| Source repository | capell-app/packages |
| Source path | packages/theme-almanac |
| Docs source | packages/theme-almanac/docs |
| Manifest | capell.json |
What This Plugin Adds
Section titled “What This Plugin Adds”Theme Almanac is an Available, No schema impact Capell theme in the Capell Themes product group. It ships as capell-app/theme-almanac and extends these surfaces: frontend.
Theme Almanac adds a month-addressed living calendar, day ledgers, bounded season navigation, recurring-series discovery, honest booking fallbacks, and three vertical-distinct presets.
Use Preview Theme Almanac privately on existing content before Apply Theme Almanac changes the selected site’s public design; reapply its previous theme to restore that selection, remembering that shared Theme Studio settings saves can affect public pages. For fictional demo content, name a disposable target with —sites and review —url and —languages; unscoped setup refuses existing sites, scoped repeats preserve site configuration unless —force deliberately replaces its theme, enabled state, requested site translations and domains, while demo pages, widgets and demo layouts are rewritten on scoped repeats. Editors author sessions once in a shared Month Grid widget and publish ordinary month/day pages; the server renders sessions, quiet days and bounded navigation, with optional public Events occurrences taking precedence and authored fallback, as described in the admin overview.
Status details:
- Status: Available
- Tier: premium
- Bundle: themes
- Composer package:
capell-app/theme-almanac - Namespace:
Capell\ThemeAlmanac - Theme key:
almanac
Why It Matters
Section titled “Why It Matters”For developers: The package centralises calendar expansion in Actions, structured boundaries in Data objects, optional integrations in availability classes, and active-theme JavaScript in the shared frontend-resource seam. Calendar candidate dependencies are collected independently of public-link eligibility. URL, translation and optional Events membership changes invalidate cached calendars after commit through Core’s invalidation planner; new URLs use a conservative site-level membership dependency.
For teams: Recurring venues can publish sessions, ordinary hours, closures, past notes, and booking paths as one calendar-led website instead of maintaining a separate events microsite.
Screens And Workflow
Section titled “Screens And Workflow”Screenshot contract: docs/screenshots.json.


Desktop, tablet, and mobile variants remain defined in the screenshot contract; this list groups them by workflow.
- Almanac canonical month homepage (frontend, required evidence).
- Almanac programme directory (frontend, required evidence).
- Almanac day ledger detail (frontend, required evidence).
- Almanac contact and year heatmap (frontend, required evidence).
- Almanac closed-season state (frontend, required evidence).
- Almanac missing-date recovery (frontend, required evidence).
- Almanac next-opening conversion surface (frontend, required evidence).
Technical Shape
Section titled “Technical Shape”Service providers
Section titled “Service providers”Capell\ThemeAlmanac\AlmanacThemeServiceProviderCapell\ThemeAlmanac\Providers\ConsoleServiceProvider
Filament classes
Section titled “Filament classes”CalendarWidgetSchemaExtender
Actions
Section titled “Actions”BuildCalendarSectionActionExpandOccurrencesForMonthActionInstallAlmanacThemeDemoActionInvalidateCalendarMembershipActionInvalidateEventsCalendarWidgetsActionInvalidateEventsCalendarsActionResolveAlmanacSectionActionResolveCalendarHomepageRedirectActionResolveCalendarMonthPageAction
Data objects
Section titled “Data objects”AlmanacSectionDataCalendarDayDataCalendarEntriesDataCalendarMonthDataCalendarSectionResultDataCalendarSessionData
InvalidateEventsCalendarsJob
Command signatures
Section titled “Command signatures”capell:theme-almanac-demo
Console command classes
Section titled “Console command classes”DemoCommand
Manifest contributions
Section titled “Manifest contributions”admin-page: Capell\ThemeAlmanac\Manifest\ThemeManagementPageContributionpublic-render-data: Capell\ThemeAlmanac\Support\CalendarRenderDataContributorschema-extender: Capell\ThemeAlmanac\Filament\Extenders\CalendarWidgetSchemaExtender
Health checks
Section titled “Health checks”Capell\ThemeAlmanac\Health\ThemeAlmanacHealthCheck
Blade views
Section titled “Blade views”packages/theme-almanac/resources/views/components/booking-slot-action.blade.phppackages/theme-almanac/resources/views/components/comments-thread.blade.phppackages/theme-almanac/resources/views/components/contact-channel.blade.phppackages/theme-almanac/resources/views/components/newsletter-capture.blade.phppackages/theme-almanac/resources/views/components/site-search.blade.phppackages/theme-almanac/resources/views/sections/booking-slot-card.blade.phppackages/theme-almanac/resources/views/sections/contact.blade.phppackages/theme-almanac/resources/views/sections/countdown-next-opening.blade.phppackages/theme-almanac/resources/views/sections/cta--seasonline.blade.phppackages/theme-almanac/resources/views/sections/cta.blade.phppackages/theme-almanac/resources/views/sections/day-ledger-session-rail.blade.phppackages/theme-almanac/resources/views/sections/footer.blade.phppackages/theme-almanac/resources/views/sections/hero--almanac.blade.phppackages/theme-almanac/resources/views/sections/hero.blade.phppackages/theme-almanac/resources/views/sections/listing--ledger.blade.phppackages/theme-almanac/resources/views/sections/listing.blade.phppackages/theme-almanac/resources/views/sections/month-grid-living-ledger.blade.phppackages/theme-almanac/resources/views/sections/navigation.blade.phppackages/theme-almanac/resources/views/sections/next-sessions-strip.blade.phppackages/theme-almanac/resources/views/sections/season-archive-patina-wall.blade.phppackages/theme-almanac/resources/views/sections/season-band-month-scroller.blade.phppackages/theme-almanac/resources/views/sections/series-recurring-index.blade.phppackages/theme-almanac/resources/views/sections/year-heatmap-glance.blade.phppackages/theme-almanac/resources/views/widget/resolved-section.blade.phppackages/theme-almanac/resources/views/widget/section.blade.php
Cache tags
Section titled “Cache tags”theme-almanac
Data Model
Section titled “Data Model”This theme has no schema impact. It relies on core Capell site, page, locale, and theme records instead of declaring package-owned tables.
Install Impact
Section titled “Install Impact”- Required packages:
capell-app/core,capell-app/theme-foundation,capell-app/frontend,capell-app/layout-builder. - Admin navigation: declares
admin-page: ThemeManagementPageContribution; each Filament page or resource controls its own navigation visibility. - Admin/editor extensions:
schema-extender: CalendarWidgetSchemaExtender. - Permissions: no package permission declarations or Shield gates detected; host access rules still apply.
- Public routes: none declared.
- Database changes: no package migrations declared.
- Config: no package config files.
- Settings: no package settings declared.
- Queues or schedules: queue jobs
InvalidateEventsCalendarsJob. - Cache tags:
theme-almanac. - Commands:
capell:theme-almanac-demo.
Common Pitfalls
Section titled “Common Pitfalls”- Keep required Capell packages on compatible v4 releases:
capell-app/core,capell-app/theme-foundation,capell-app/frontend,capell-app/layout-builder. - Keep public Blade and cached HTML free of authoring markers, model IDs, permissions, signed editor URLs, and lazy database queries.
- Custom write integrations must preserve invalidation for
theme-almanaccache tags.
Troubleshooting
Section titled “Troubleshooting”| Symptom | Likely cause | Check | Fix |
|---|---|---|---|
| Package surface is missing after install | Provider or manifest is not loaded | Confirm capell.json, package composer.json, and provider registration | Reinstall the package, refresh Composer autoload, and clear host caches |
| Background work does not run | Queue worker or declared schedule is not active | Check the jobs and scheduled commands listed in Technical Shape | Start the queue worker or host scheduler, then run the focused command or package test |
| Public output leaks unexpected state | Render data, cache variation, or authoring boundary has regressed | Check public Blade, cache tags, and public-output safety tests | Move data loading out of Blade and rerun the package public-output tests |
Quick Start
Section titled “Quick Start”- Install the package:
composer require capell-app/theme-almanac. - See it working on a disposable site: run
php artisan capell:theme-almanac-demo --sites="Theme demo". Choose a new site name for your demo; keep customer sites for the Preview → Apply workflow above. - Run
php artisan listand verify the package command signatures are registered.
Upgrading
Section titled “Upgrading”No manual steps between minor versions.
Read CHANGELOG.md before upgrading.