Skip to content

Add a page listing the year's feasts and fasting seasons - #283

Merged
brianglass merged 5 commits into
mainfrom
feasts-page
Nov 6, 2026
Merged

brianglass merged 5 commits into
mainfrom
feasts-page

Conversation

@brianglass

@brianglass brianglass commented Nov 6, 2026 •

Copy link
Copy Markdown
Owner

This adds a page for planning a year around the Church's feasts: one January-to-December list for the civil year.

The page is at /feasts/<tradition>/<cal>/<year>/, with /feasts/ for this year. It's in the menu as Feasts. The list includes:

  • Pascha and the Twelve Great Feasts (feast levels 7 and 8), in bold red. Pascha is a little larger.
  • The other great feasts (level 6): the Circumcision, the Nativity and Beheading of the Forerunner, Peter and Paul and, for Slavic only, the Protection.
  • The fasting seasons, shown as date ranges with their length: Great Lent, and the Apostles, Dormition and Nativity Fasts. Feasts that fall within a season get a lighter shade of the season's background.

Each feast shows its weekday and links to that day's readings. The page has previous and next year buttons, plus the tradition and calendar switches.

How it's computed. It steps through the year's 365 days using the same Day logic as the readings pages, so traditions, the Julian calendar's civil dates and the moveable feasts all match the rest of the site. Two details:

  • Feast names: each feast is named after the highest-ranked commemoration of its day. Palm Sunday has no feast_name, and in 2027 St Mark falls on the same day.
  • Seasons across New Year: a season already under way on January 1 or still running on December 31 is shown in full. The Julian Nativity Fast, for example, appears as Nov 28, 2026 – Jan 6, 2027.

St Matthew's rank. The data had St Matthew at level 6, the great-feast sign, which put him on this list alone among the apostles. The Holy Trinity Monastery calendar gives him the polyeleos cross (level 4), as it does Luke, Philip and Andrew, and the Antiochian typikon serves him exactly as it does Luke and Philip. He's now at level 4, and the misspelled "Mathew" is fixed. Fasting and readings for November 16 are unchanged from 2000 to 2100; the API's feast_level for that day changes from 6 to 4.

Menu. The Feasts link widened the menu enough to run into the title between 1201px and about 1230px. Between 1201px and 1300px the menu's gaps now shrink from 1.4em to 1em, leaving at least 30px; the hamburger still takes over at 1200px. Moving the hamburger up to 1300px instead would have hidden the menu on 1280px screens, which are 14% of desktop visits in GoatCounter.

A year takes 0.2–0.3s to compute, and the page is cached like the month calendar.

API. The same data is at /api/<tradition>/<cal>/feasts/<year>/: feasts and fasts with civil dates, weekday, level and Pascha distance.

Crawlers and search.

  • Sitemap: lists the feasts pages for last year through two years ahead.
  • Crawler limit: far-off years are already turned away from crawlers by the existing check, since the URL has a year.

Testing.

  • New tests (9): Gregorian and Julian 2027 dates, seasons crossing New Year, the Greek tradition, the last supported year, the view, the remembered calendar, and the API's response shape.
  • Full suite: all 309 tests pass. The fasting snapshot changes only in the recorded level for November 16.
  • Screens: checked at 390px and 1200px.

🤖 Generated with Claude Code

brianglass and others added 5 commits November 6, 2026 10:02
/feasts/<tradition>/<cal>/<year>/ lists a civil year January to December,
for planning around the feasts: Pascha and the Twelve Great Feasts
(feast levels 7 and 8, in red), the other great feasts (level 6), and the
fasting seasons as date ranges, each feast linking to its readings. It
steps through the year's days with the same Day logic as the rest of the
site, so the traditions, the Julian calendar's civil dates, and the
moveable feasts all come out as they do on the readings pages. A season
already under way at New Year (the Julian Nativity Fast ends on civil
January 6) is given in full, with its days in the neighboring year.

The same data is at /api/<tradition>/<cal>/feasts/<year>/. The page is in
the menu and the sitemap, for this year and the next two.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The data had him at level 6, the great-feast sign, which put him on the
feasts page alone among the apostles. The Holy Trinity Monastery calendar
gives him the polyeleos cross (4), as it does Luke, Philip and Andrew, and
the Antiochian typikon serves him exactly as it does Luke and Philip.
Fasting and readings are unchanged for 2000-2100. Also fixes the spelling
of his name.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Feasts within a fasting season get a background between the page and the
season rows. The Feasts link widened the menu enough to run into the title
between 1201px and about 1230px.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Switching to the hamburger below 1300px would have given it to every
1280px screen, a seventh of desktop visits. Instead the menu's gaps
shrink from 1.4em to 1em between 1201px and 1300px, which leaves at
least 30px between the menu and the title.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@brianglass
brianglass merged commit 8cfdb5f into main Nov 6, 2026
4 checks passed
@brianglass
brianglass deleted the feasts-page branch November 6, 2026 17:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant