Currently I manually create each entry, and it's easy to miss adding new events. Instead we should generate them from the campus event aggregator's (#325) 120-day window instead, grouped under a ### Month YYYY heading (per the current pattern).
Requirements:
- Exclude Tue + Thu Office Hours—they stay as the curated "Coworking/Office Hours (ongoing)" blurb. Needs an "ongoing" marker on those sources/events.
- Per-month headings; each event entry built from feed fields (title, date/time, location, description, link).
- Proposed mechanism: a pre-build step (reusing scripts/events/sources.js/normalize.js) writes a partial that events/index.md includes via MyST {include}. The aggregator currently runs after myst build, so this needs to run before it.
Currently I manually create each entry, and it's easy to miss adding new events. Instead we should generate them from the campus event aggregator's (#325) 120-day window instead, grouped under a ### Month YYYY heading (per the current pattern).
Requirements: