Split each day's class into its own schedule entry #24

Merged
forgejo-admin merged 1 commit from split-schedule-sessions into main 2026-08-27 01:30:52 +00:00

Every day held one entry that mixed a class with the dance that followed it, so a dancer coming for the class and a dancer coming for the milonga read the same block and got one calendar file covering both. Each day now carries two entries, and each gets its own .ics.

Day Was Now
Friday Pride Glow Night, 7 PM–12 AM Evening Class 7–8 PM, Pride Glow Night 8 PM–12 AM
Saturday Afternoon Practica, 12–5 PM Afternoon Class 12–1 PM, Afternoon Practica 1–5 PM
Sunday Brunch & Farewell Milonga, 10 AM–5 PM Community Brunch 10 AM–12 PM, Farewell Milonga 12–4 PM

Seven session .ics files, up from five. pride-glow-night and afternoon-practica keep their slugs, so any link already out in the world still resolves. brunch-and-farewell is gone, replaced by community-brunch and farewell-milonga.

The Sunday farewell milonga runs 12–4 PM, not 12–5. That is a real time change, not just a reshuffle.

The two class entries now describe the step they teach, soltadas on Friday and colgadas on Saturday, with the Spanish root the step is named for set in italics. That italic is what the new optional term on a Session is for. splitSlot already cut a sentence around a credited name so the name could become a link, which is the same cut with a different tag, so it generalizes to splitAround and both call sites use it. The generic parameter keeps the needle's own type on the way out, so the slot call site still gets a BioName back and bioId type-checks. The .ics files stay plain text, because DESCRIPTION has no formatting.

A session with no DJ renders no credits row. The class and brunch entries have no DJ, and the empty row still carried its 1rem bottom margin, which left a gap under those headings.

Testing

Gates on this branch after npm ci:

  • astro check — 0 errors, 0 warnings, 0 hints across 17 files
  • lasertag check — no dead CSS in 6 files
  • astro build — complete, 2 pages

Verified in the built output rather than off the exit code. dist/index.html carries <i>soltar</i> and <i>colgar</i>. dist/events/ holds the seven files. farewell-milonga.ics reads DTSTART:20260913T190000Z / DTEND:20260913T230000Z, which is 12–4 PM PDT. Neither class .ics contains an <i> tag.

Reviewed on the dev server before commit.

Every day held one entry that mixed a class with the dance that followed it, so a dancer coming for the class and a dancer coming for the milonga read the same block and got one calendar file covering both. Each day now carries two entries, and each gets its own `.ics`. | Day | Was | Now | | --- | --- | --- | | Friday | Pride Glow Night, 7 PM–12 AM | Evening Class 7–8 PM, Pride Glow Night 8 PM–12 AM | | Saturday | Afternoon Practica, 12–5 PM | Afternoon Class 12–1 PM, Afternoon Practica 1–5 PM | | Sunday | Brunch & Farewell Milonga, 10 AM–5 PM | Community Brunch 10 AM–12 PM, Farewell Milonga 12–4 PM | Seven session `.ics` files, up from five. `pride-glow-night` and `afternoon-practica` keep their slugs, so any link already out in the world still resolves. `brunch-and-farewell` is gone, replaced by `community-brunch` and `farewell-milonga`. **The Sunday farewell milonga runs 12–4 PM, not 12–5.** That is a real time change, not just a reshuffle. **The two class entries now describe the step they teach**, soltadas on Friday and colgadas on Saturday, with the Spanish root the step is named for set in italics. That italic is what the new optional `term` on a `Session` is for. `splitSlot` already cut a sentence around a credited name so the name could become a link, which is the same cut with a different tag, so it generalizes to `splitAround` and both call sites use it. The generic parameter keeps the needle's own type on the way out, so the slot call site still gets a `BioName` back and `bioId` type-checks. The `.ics` files stay plain text, because DESCRIPTION has no formatting. **A session with no DJ renders no credits row.** The class and brunch entries have no DJ, and the empty row still carried its 1rem bottom margin, which left a gap under those headings. ## Testing Gates on this branch after `npm ci`: - `astro check` — 0 errors, 0 warnings, 0 hints across 17 files - `lasertag check` — no dead CSS in 6 files - `astro build` — complete, 2 pages Verified in the built output rather than off the exit code. `dist/index.html` carries `<i>soltar</i>` and `<i>colgar</i>`. `dist/events/` holds the seven files. `farewell-milonga.ics` reads `DTSTART:20260913T190000Z` / `DTEND:20260913T230000Z`, which is 12–4 PM PDT. Neither class `.ics` contains an `<i>` tag. Reviewed on the dev server before commit.
Every day held one entry that mixed a class with the dance that followed it,
so a dancer coming for the class and a dancer coming for the milonga read the
same block and got one calendar file covering both. Each day now carries two
entries, and each gets its own .ics: Evening Class and Pride Glow Night on
Friday, Afternoon Class and Afternoon Practica on Saturday, Community Brunch
and Farewell Milonga on Sunday. Seven session files, up from five.

The Sunday farewell milonga runs 12-4 PM, not 12-5.

The two class entries now describe the step they teach, soltadas on Friday
and colgadas on Saturday, with the Spanish root the step is named for set in
italics. That italic is what `term` on a Session is for. splitSlot already
cut a sentence around a credited name to link it, which is the same cut, so
it generalizes to splitAround and both call sites use it.

A session with no DJ renders no credits row. The empty row still carried its
bottom margin, which left a gap under the class headings.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xwj5wudydwZPF5mE8TsFu6
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
celilo/tango-nexus!24
No description provided.