Files
vu/vite.config.ts
T
will c25505cdc0
Deploy / deploy (push) Successful in 1m21s
Add the Patronage of St. Joseph as a new movable feast with octave
This Duplex I classis feast (instituted by Pius IX, 1847) didn't exist
anywhere in vu's calendar. Dated per the older, pre-1955 reckoning --
Wednesday after the 2nd Sunday after Easter (Easter+17) -- rather than the
1913 Pius X reform's later placement on the 3rd Sunday after Easter
itself, per direct instruction. Mechanism: one new temporal-feast record
plus a new EASTER_OFFSET_STARTS table entry (the only code change --
everything else is the existing generic anchor-driven resolution).

Authored the feast day's own Matins reading and its full 7-day octave
(days 2/3/4/6/7/8; day 5, the Sunday, has no override in the source at
all, correctly left unauthored).

Fixed one real collateral effect: an existing fixed-year calendar test
(St. Pudentiana vs. St. Peter Celestine, 2038-05-19) broke because that
date now falls on this octave's own closing day, tying Celestine's rank
against the octave's threshold -- the app's own documented tie-break
correctly favors the octave that year. Moved the proof date to 2033.
Also bumped the PWA precache file-size cap (6 MiB -> 8 MiB) since this
content pull pushed the main bundle past the previous limit.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PhysogLP9eCeKS7JEwRi6y
2026-08-28 07:12:08 -04:00

53 lines
1.8 KiB
TypeScript

/// <reference types="vitest/config" />
import { defineConfig } from 'vite';
import { VitePWA } from 'vite-plugin-pwa';
import yaml from '@rollup/plugin-yaml';
// Served under reground.org/vu (Caddy path_mount to the vu container) — every
// asset URL and the service worker's registration scope must be scoped to
// this path, or they'll resolve against the domain root instead.
const base = '/vu/';
export default defineConfig({
base,
plugins: [
yaml(),
VitePWA({
registerType: 'autoUpdate',
scope: base,
base,
manifest: {
name: 'vu',
short_name: 'vu',
start_url: base,
scope: base,
display: 'standalone',
background_color: '#f7f3ea',
theme_color: '#7a2e2e',
icons: [
{ src: 'icons/icon-192.png', sizes: '192x192', type: 'image/png' },
{ src: 'icons/icon-512.png', sizes: '512x512', type: 'image/png' },
],
},
workbox: {
// Precache everything the shell needs so a day's office renders
// fully offline once visited once.
globPatterns: ['**/*.{js,css,html,ico,png,svg,woff2}'],
// Default cap (2 MiB) is too small once the sanctoral pull's real
// propers/octave-reading text (all eagerly bundled, by design, for
// offline use) pushes the main chunk past it -- raised again
// (2026-08-28, was 6 MiB) once the movable-octave content (Ascension/
// Corpus Christi/Sacred Heart/Patronage of St. Joseph) pushed the
// bundle past the previous cap. Bump this again, with headroom, if
// a future content pull hits it -- this is deliberate bundling, not
// bloat to trim (see CLAUDE.md).
maximumFileSizeToCacheInBytes: 8 * 1024 * 1024,
},
}),
],
test: {
environment: 'jsdom',
globals: false,
},
});