From c56a114791696c7828f76dfec8d83780d86efd8f Mon Sep 17 00:00:00 2001 From: Jacob Coffee Date: Thu, 30 Apr 2026 19:18:11 -0500 Subject: [PATCH] fix(schedule): don't collapse same-named breaks across the day MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The collapsedGroups key was \`kind-day-slotName\`, so Friday's 10:30 "Break" and 16:00 "Break" merged into one entry spanning 10:30-16:30 (earliest start, latest end across all matches). Same for any other days where multiple Break/Lunch/Poster slots share a name but sit at different times. Include the slot start in the key. Per-room same-start slots — the intended use case, e.g. five 13:00 "Lunch (Hall AB)" entries across talk rooms — still merge into one row. Cross-time slots no longer do. Co-Authored-By: Claude Opus 4.7 (1M context) --- src/app/providers/conference-data.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/app/providers/conference-data.ts b/src/app/providers/conference-data.ts index a7f6a2db..64e41395 100644 --- a/src/app/providers/conference-data.ts +++ b/src/app/providers/conference-data.ts @@ -261,7 +261,12 @@ export class ConferenceData { data.schedule.filter((s: any) => collapseKinds.includes(s.kind)).forEach((slot: any) => { const day = new Date(slot.start).toLocaleDateString('en-us', {timeZone: environment.timezone, weekday: 'short'}); const slotName = markdownToTxt(slot.name); - const key = `${slot.kind}-${day}-${slotName}`; + // Include start time in the key so morning and afternoon "Break" + // entries don't collapse into a single 10:30-4:30 row that spans + // the lunches and afternoon talks. Per-room same-start slots + // (e.g. all the 13:00 Lunch (Hall AB) entries across talk rooms) + // still share a key and merge correctly. + const key = `${slot.kind}-${day}-${slotName}-${slot.start}`; if (!collapsedGroups.has(key)) { // Rename lunchtime breaks let name = slot.kind === 'poster' ? 'Posters' : markdownToTxt(slot.name);