Repository navigation
Update afternoon schedule and add Engineering Loteria session - #14
Conversation
Sessions now end at 14:00 to make room for the Engineering Loteria activity, and closing remarks plus the techie hour shift a half hour earlier, wrapping the day at 17:00 instead of 18:00. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Kckqqm3FepYjhVFPFjU5aG
Regenerated from Sanity: the Level Up panel picks up its final title and a shorter description organized by participating org, and SHPE Detroit's Engineering Loteria is added as a 14:00 session in the Main Room. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Kckqqm3FepYjhVFPFjU5aG
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
| content: null, | ||
| time: '13:00', | ||
| timeEnd: '16:00', | ||
| timeEnd: '14:00', |
There was a problem hiding this comment.
Schedule shows an unexplained afternoon gap
Changing schedule-sessions-afternoon to end at 14:00 leaves the 14:00–15:30 Level Up session unavailable to SessionsSection and NavRunOfShow, since they filter by the active Schedule track, so the timeline has a gap — should we add an explicit Schedule-track break/transition or represent that interval in those consumers?
Want Baz to fix this for you? Activate Fixer
Other fix methods
Prompt for AI Agents
Before applying, verify this suggestion against the current code. In
`src/data/2026/conferenceActivities.js` around lines 61-61, update the conference
schedule data so the new 14:00 end time for `Sessions` does not leave an unrepresented
14:00–15:30 gap. Add an explicit `Schedule`-track break or transition activity for
that interval, following the existing data conventions, and verify that
`SessionsSection` and `NavRunOfShow` include and display it when filtering by the
active/`Schedule` track.
There was a problem hiding this comment.
Commit 438f3d5 addressed this comment by adding a Schedule-track “Engineering Loteria” activity from 14:00–15:00 and shifting subsequent schedule activities earlier, eliminating the gap.
| }, | ||
| { | ||
| "id": 1001125532, | ||
| "name": "SHPE Detroit", | ||
| "avatar": "https://cdn.sanity.io/images/d1h6cagq/production/b4ac13262059c2f3857fad8f263e05917cb09bfd-2667x4252.jpg", |
There was a problem hiding this comment.
Partial builds drop Engineering Loteria
The committed Engineering Loteria row is overwritten when a non-empty Sanity response omits that session, so the public roster loses it while the write reports success — should we guard partial results against the expected session or preserve/reject the row before replacing the file?
Want Baz to fix this for you? Activate Fixer
Other fix methods
Prompt for AI Agents
Before applying, verify this suggestion against the current code. In
`src/data/2026/speakers.generated.json` around lines 313-317, protect the `Engineering
Loteria` session from being removed by partial regeneration. Update the roster
generation/write logic to validate that expected sessions such as this one are present,
or merge/preserve the existing record when Sanity returns an incomplete non-empty
result; reject the replacement and report an error instead of treating it as a
successful write.
| "title": "Engineering Loteria", | ||
| "abstract": "", | ||
| "description": "Celebrate Hispanic Heritage Month through an interactive, culturally rooted spin on the classic game of chance. Replace the traditional chalupa and catrín with engineering icons, software terms, hardware components, and technical milestones. Attendees network, test their STEM trivia, and compete for prizes in a lively community atmosphere.\n⚬\tInteractive Gameplay: Custom Lotería cards spotlight engineering concepts, technical tools, and historic Hispanic innovators.\n⚬\tCommunity Connection: Connect students, seasoned technologists, and industry leaders across disciplines.\n⚬\tPrizes and Trivia: Earn recognition and take home gear while celebrating culture, craft, and technical problem-solving.", | ||
| "tags": ["STEM Pipeline", "Tech Trivia", "Diversity", ""], |
There was a problem hiding this comment.
Blank topic chip in speaker modal
The Engineering Loteria record at src/data/2026/speakers.generated.json:329-329 includes an empty tags value, so SpeakerDetails renders a blank Topics chip for SHPE Detroit — should we remove it from the authoritative data or filter empty labels before rendering?
Guidelines: .claude/agents/code-review.md
Want Baz to fix this for you? Activate Fixer
Other fix methods
Prompt for AI Agents
Before applying, verify this suggestion against the current code. In
`src/data/2026/speakers.generated.json` around lines 329-329, fix the Engineering
Loteria record’s `tags` array by removing the empty string so `SpeakerDetails` cannot
render a blank Topics chip. Update the authoritative source and regenerate this
generated artifact if applicable; also consider filtering empty tag labels before
mapping them to topic spans as a defensive safeguard.
There was a problem hiding this comment.
Commit 438f3d5 addressed this comment by removing the empty tag from SHPE Detroit’s Engineering Loteria record, preventing a blank Topics chip.
| "tags": ["STEM Pipeline", "Tech Trivia", "Diversity", ""], | ||
| "track": "Level Up", | ||
| "time": "14:00", | ||
| "room": "Main Room", |
There was a problem hiding this comment.
New session advertises noncanonical room
The new Level Up session hardcodes Main Room instead of the canonical VENUE_ROOMS.LEVEL_UP (Engineering Building), so schedule and calendar exports forward an unverified location — should we use the canonical room in the source and regenerate, or update the venue registry first if Main Room is confirmed?
Guidelines: .claude/agents/code-review.md
Want Baz to fix this for you? Activate Fixer You can also update your AI coding guidelines based on this comment by apply pr to [branch name]
Other fix methods
Prompt for AI Agents
Before applying, verify this suggestion against the current code. In
`src/data/2026/speakers.generated.json` around lines 332-332, update the new Level Up
session’s `room` value from the unverified `Main Room` label to the canonical
`VENUE_ROOMS.LEVEL_UP` value, `Engineering Building`. Locate and edit the authoritative
source, then regenerate this generated JSON; only add or change the venue registry first
if `Main Room` has been confirmed as the approved canonical label.
The afternoon Sessions block ended at 14:00 while the Loteria runs 14:00-15:00 in the Level Up track, so the Schedule tab and the mobile run-of-show jumped straight from 14:00 to Closing Remarks at 15:30 and never accounted for the new session. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DgrmHLBfXRaPCzK9tdvfRd
The Loteria session carries an empty tag in Sanity, which SpeakerDetails rendered as an empty Topics chip. Normalize tags in the importer so blank and non-string entries are dropped for every session, and mirror the result into the generated roster. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DgrmHLBfXRaPCzK9tdvfRd
Sessions now run to 15:00, so pull Closing Remarks & Prizes to 15:00-15:30 and Techie Hour & Networking to 15:30-16:30. The run-of-show is continuous from 09:00 to 16:30 and the day wraps 30 minutes earlier. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DgrmHLBfXRaPCzK9tdvfRd
Fitness Yoga is unpublished in Sanity — it runs before opening remarks and is already covered by the Morning Mindfulness & Meditative Yoga entry in the run-of-show, so it does not need to be a Level Up session. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DgrmHLBfXRaPCzK9tdvfRd
Replace the afternoon Sessions umbrella with the panel discussion (13:00-14:00) and the Engineering Loteria (14:00-15:00) as their own Schedule-track entries, so the run-of-show names both activities before it returns to closing remarks. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DgrmHLBfXRaPCzK9tdvfRd
| }, | ||
| { | ||
| "id": 1293748638, | ||
| "id": 377718030, |
There was a problem hiding this comment.
Saved selections disappear after ID changes
Changing William Bowen’s ID to 377718030 and the panel activity ID to schedule-panel leaves existing 1293748638 and schedule-sessions-afternoon selections unchanged because canonicalizeSessionId returns unknown values as-is, so exact filtering hides the replacement entries — should we add canonical aliases for both old identifiers or migrate persisted selections?
Want Baz to fix this for you? Activate Fixer
Other fix methods
Prompt for AI Agents
Before applying, verify this suggestion against the current code. In
`src/data/2026/speakers.generated.json` around line 136 and
`src/data/2026/conferenceActivities.js` around line 56, preserve backward compatibility
for William Bowen’s old ID `1293748638` and the old activity ID
`schedule-sessions-afternoon`, which were replaced by `377718030` and `schedule-panel`.
Update `canonicalizeSessionId` or the persisted-data migration layer to map both legacy
identifiers to their new canonical IDs before My Schedule, sidebar, and export filtering
runs. Add or update tests to verify existing saved selections resolve to the replacement
speaker session and panel.
| id: 'schedule-loteria', | ||
| track: SCHEDULE_TRACK, | ||
| title: 'Engineering Loteria', | ||
| content: null, | ||
| time: '14:00', | ||
| timeEnd: '15:00', |
There was a problem hiding this comment.
Duplicate Loteria calendar events
The shared save flow stores activity ID schedule-loteria and generated session ID 1001125532 as unrelated because activity IDs do not resolve through speakersData, so SessionsSection exports both and the ICS generator emits duplicate Engineering Loteria VEVENTs — should we give them one canonical identity or exclude one from save/export?
Want Baz to fix this for you? Activate Fixer
Other fix methods
Prompt for AI Agents
Before applying, verify this suggestion against the current code. In
`src/data/2026/conferenceActivities.js` around lines 65-70, the `schedule-loteria`
activity duplicates SHPE Detroit’s generated speaker session but uses an unrelated ID,
so the shared save flow and `SessionsSection` export it as a second event. Refactor the
save/export logic to give this activity the same canonical identity as the generated
session (including overlap detection), or explicitly mark the static activity as
non-saveable and exclude it from exports. Add or update tests to verify that saving
Engineering Loteria produces only one saved item and one ICS VEVENT.
| time: '15:30', | ||
| timeEnd: '16:30', |
There was a problem hiding this comment.
JSON-LD outlasts published schedule
The homepage’s SEOStructuredData still emits endDate: 2026-09-19T17:00:00-04:00 even though the visible run-of-show ends at 16:30, so public information advertises a later event end — should we derive it from the authoritative schedule or update the structured metadata?
Guidelines: .claude/agents/code-review.md
Want Baz to fix this for you? Activate Fixer You can also update your AI coding guidelines based on this comment by apply pr to [branch name]
Other fix methods
Prompt for AI Agents
Before applying, verify this suggestion against the current code. In
`src/data/2026/conferenceActivities.js` around lines 87-88, the `Techie Hour &
Networking` entry establishes the visible schedule end at 16:30, while
`SEOStructuredData` still advertises a 17:00 `endDate`. Update the structured-data
end-time source to match the authoritative schedule, preferably by deriving it from the
latest activity rather than retaining a separate hardcoded boundary, and verify the
generated metadata uses 16:30 on September 19, 2026.
| .map((tag) => (typeof tag === 'string' ? tag.trim() : '')) | ||
| .filter(Boolean) | ||
| : [] | ||
| return labels.length ? labels : [DEFAULT_TRACK] |
There was a problem hiding this comment.
Fallback ignores session track
The empty-label branch hard-codes DEFAULT_TRACK, and buildRow doesn't pass session.track, so tagless, whitespace-only, or non-string CMS tags on an Innovation session yield ['Level Up'] as the visible type label in schedules.js — should we pass the resolved track into the helper?
Want Baz to fix this for you? Activate Fixer
Other fix methods
Prompt for AI Agents
Before applying, verify this suggestion against the current code. In
`scripts/fetch-event-data.mjs` around lines 141-147 and 170-174, fix `normalizeTags` and
its `buildRow` call so empty, whitespace-only, or non-string tags fall back to the
session’s resolved track rather than hard-coded `DEFAULT_TRACK`. Pass `session.track
|| DEFAULT_TRACK` into the helper, and use that argument as the fallback label while
preserving the existing tag normalization.
|
@ -0,0 +1,45 @@ Baz review — fixed vs. skippedVerified each finding against the code before acting. Two were real and needed for the Loteria; two are out of scope for this PR. Fixed1. Schedule shows an unexplained afternoon gap — real, and introduced by this PR (
The afternoon now names both activities instead of hiding them behind a
The run-of-show is continuous from 09:00 through 16:30 with no gap — the day wraps 30 minutes earlier than the original 17:00. Checked programmatically for gaps and overlaps; the only overlap left is the deliberate morning one, where Check-In runs 08:00–09:00 alongside yoga and opening remarks. 2. Blank topic chip in speaker modal — real ( The Loteria's The Sanity document still holds the stray empty tag — harmless now that the importer drops it, but worth clearing in the Studio. Also in this branch
Skipped3. Partial builds drop Engineering Loteria — no change. The importer already refuses to replace real data with an empty result ( 4. New session advertises noncanonical room — premise doesn't hold.
Verification
|
User description
Summary
Two content updates for the 2026 summit:
conferenceActivities.js): Sessions now end at 14:00 rather than 16:00, freeing the 14:00 slot for the Engineering Loteria. Closing Remarks & Prizes moves to 15:30–16:00 and Techie Hour & Networking to 16:00–17:00, so the day wraps an hour earlier than before.speakers.generated.json, regenerated from Sanity): the Level Up panel is retitled to "Detroit Latin Heritage Month Innovation Summit Panel Discussion" with a shorter description broken out by participating organization, and SHPE Detroit's Engineering Loteria is added as a 14:00 Main Room session.Test plan
pnpm buildsucceeds🤖 Generated with Claude Code
https://claude.ai/code/session_01Kckqqm3FepYjhVFPFjU5aG
Generated description
Below is a concise technical summary of the changes proposed in this PR:
Update the 2026 summit schedule and session data to add
Engineering Loteria, retitle and revise the Latin Heritage Month panel, and shift afternoon activities earlier. Normalize Sanity session tags so schedule chips and type labels always have usable values.Modified files (1)
Latest Contributors(1)
Engineering Loteriaat 14:00 in the Main Room, revise the Latin Heritage Month panel content, and update the afternoon schedule through networking.Modified files (2)
Latest Contributors(2)
Customize your next review