From 6cc5bd35abfc8b7bcd733a7f70b2c1f2337a9bc6 Mon Sep 17 00:00:00 2001 From: Jacob Coffee Date: Thu, 30 Apr 2026 19:15:09 -0500 Subject: [PATCH] fix(rooms): normalize "Hall AB" to "Expo Hall AB" for plenary slots MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Opening Reception, Posters, and similar plenary slots name the venue in their title as "(Hall AB)", so after the parens-extraction they end up with location="Hall AB". Sponsor booths, lunches, and the existing collapsed break/poster path all canonicalize bare "Hall …" to "Expo Hall …" — but the plenary path didn't, so Opening Reception landed in a stub "Hall AB" room while the user-facing "Expo Hall AB" room view showed nothing on Thursday night. Mirror the same normalization here so all the Expo Hall content collapses into one room bucket. Co-Authored-By: Claude Opus 4.7 (1M context) --- src/app/providers/conference-data.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/app/providers/conference-data.ts b/src/app/providers/conference-data.ts index a7f6a2db..60a235d8 100644 --- a/src/app/providers/conference-data.ts +++ b/src/app/providers/conference-data.ts @@ -355,6 +355,16 @@ export class ConferenceData { sessionLocation = roomMatch[1]; slot.name = slot.name.replace(roomMatch[0], '').trim(); } + // Normalize bare "Hall AB"/"Hall C" to canonical "Expo Hall …" so + // plenaries that name the venue as "Hall AB" (Opening Reception, + // Posters, etc.) land in the same room bucket as sponsor booths / + // posters / lunches that all live under the "Expo Hall AB" name. + // Without this, Opening Reception ends up in a separate "Hall AB" + // room with no other context, and the Expo Hall AB room view looks + // like the reception isn't scheduled at all. + if (sessionLocation && /^Hall\s/i.test(sessionLocation)) { + sessionLocation = `Expo ${sessionLocation}`; + } // Strip track prefix like "Keynote — ", "Keynote: " from name since badge shows it const trackPrefix = new RegExp('^' + slot.kind.replace(/-/g, '[- ]') + '\\s*[—:\\-–]\\s*', 'i'); slot.name = slot.name.replace(trackPrefix, '').trim();