Skip to content

Bulk fixups from staff review#285

Merged
JacobCoffee merged 19 commits intomainfrom
bulk-fixups
Apr 30, 2026
Merged

Bulk fixups from staff review#285
JacobCoffee merged 19 commits intomainfrom
bulk-fixups

Conversation

@JacobCoffee
Copy link
Copy Markdown
Member

-use full "Long Beach Convention & Entertainment Center" name

  • rename map to maps
  • conf dates fix
  • session types wording fix for talks
  • , etc. see commits they are atomic

JacobCoffee and others added 19 commits April 30, 2026 08:58
Per organizer feedback — the official venue name includes
"& Entertainment Center". Updates the Venues & Hours hero and the
Wi-Fi availability note.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The conference-map page now hosts multiple maps (Floor Plans, 3D Tour,
Expo Hall) so the entry point label should be plural. Updates the side
menu, the Help page link, and the Venues & Hours quick-link.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Tutorials run May 13-14, the main conference May 13-17, and Sprints
May 18-19. The hero subtitle should cover the full attendee window.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…oard

Talk slots actually run 30-45 minutes. Open Space sign-ups happen on
the digital board, not a physical one — call that out so attendees
know where to look.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The previous handle (pycon.org) is broken — the official PyCon US
Bluesky account lives at @pycon.us.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Sponsors now points at python.org/psf/sponsors/ (the canonical page)
- Volunteer at PyCon US now points at us.pycon.org/2026/volunteer/volunteering/
  (the conference-year volunteer page) instead of the generic PSF page
- Adds a PSF LinkedIn entry under News & Social

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Organizers confirmed PyLadies Lunch is in Room 101AB, not 103AB. The
101A/101B room entries already advertise PyLadies Lunch, so the
dedicated 103AB entry added in 7687a5b was based on incorrect
upstream data and is no longer needed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Mirrors the treatment Open Spaces gets on the schedule list — a short
description of what Development Sprints are, plus a button to the
canonical Sprints page on us.pycon.org for full details.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The previous implementation passed `App-prefs:WIFI` (private iOS API)
and the bare action constant `android.settings.WIFI_SETTINGS` to
window.open — neither is a valid URL, so the button silently failed.

- Android: use the intent URL form
  `intent:#Intent;action=android.settings.WIFI_SETTINGS;end`,
  which the OS URL handler dispatches to Settings.ACTION_WIFI_SETTINGS.
- iOS: Apple doesn't allow third-party apps to deep-link to the Wi-Fi
  pane. Open `app-settings:` (the sanctioned URL scheme that lands on
  the app's own Settings page) and surface a toast pointing the user
  one tap further: "Tap Wi-Fi from Settings to connect to PyConUS26".
- Web/PWA fallback: show a toast instructing the user to open device
  settings manually, since there's no programmatic path off the page.

Each branch is wrapped in try/catch with a friendly fallback toast so
the button is never just dead.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The CMS-side wifi content is just SSID/password, so the sponsor mention
has to live in the app shell. Subscribes to the sponsor list, finds
the first sponsor whose name contains "temporal" (case-insensitive),
and renders a small card under the password card linking to the
sponsor detail page. If the sponsor list is missing or doesn't include
Temporal, the card simply doesn't render.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Per organizer ask. The CMS markdown for Venues & Hours doesn't carry
sponsor info, so this attaches a sponsor binding in the section
builder: when a section heading matches "quiet room", look up the
sponsor named (case-insensitive contains) "google" from the conference
sponsor list and render a small card next to the Quiet Room map that
links to the Google sponsor detail page.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Tapping the calendar icon was silently doing nothing for a lot of
users. Three causes covered here:

1. On web/PWA, @ebarooni/capacitor-calendar is a no-op that resolves
   silently. Detect non-hybrid platforms and skip the native plugin
   entirely — open Google Calendar's prefilled `render?action=TEMPLATE`
   URL in the system browser instead.
2. On native, wrap the plugin calls in try/catch. On any failure
   (permission denied, plugin throw), fall back to the same Google
   Calendar URL with a toast: "Opening Google Calendar instead…".
3. Validate session.startUtc / session.endUtc up front. If either
   parses to NaN, show a toast and bail rather than handing garbage to
   the plugin or the URL.

Description now also includes the session URL so the resulting
calendar event still links back to the schedule entry.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds a "Job Fair" segment alongside Floor Plans / 3D Tour / Expo Hall
that renders the Job Fair & Community Showcase floor plan in a
pinch-zoom view. Reuses the same pinch-zoom config as the floor-plan
modal so behaviour matches the existing maps. The *ngIf binding
recreates the pinch-zoom on tab switch, which resets zoom state for
free.

Source PNG was 6600×8400 / 4.3 MB; resized to 1700×2200 JPG (~340 KB)
for the full view and 618×800 thumb (~64 KB) — same sizing budget as
the existing floor-plans.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
When a session is the Job Fair (matched on name + content_override
containing "job fair"), show a compact card under the hero with the
floor-plan thumbnail and a "View Job Fair Floor Plan" affordance.
Tapping opens the existing FloorPlanModalComponent zoomed view, so the
same pinch-zoom UI used on the conference-map tab.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Tapping a sponsor's booth pill sometimes zoomed the Expo Hall map to a
DIFFERENT sponsor's booth. Three prior commits chased this in the map
component (queryParamMap subscribe + router.events fallback +
lastZoomedBoothId). It was never a map-side problem.

Root cause is in sponsor-detail. IonicRouteStrategy reuses the same
component instance across different :sponsorId values (the routeConfig
is identical), so `this.sponsor` from the previous sponsor lingers.
The old lookup loop had `if (this.sponsor) break` after the inner
loop, so once it stayed truthy from the prior sponsor it skipped the
remaining levels — never finding the new sponsor and rendering the
OLD sponsor's data (including booth_number) on the new sponsor's URL.
Tapping the booth pill then navigated to the wrong booth.

Fix:
- sponsor-detail.ts now resets sponsor/jobListings on entry, and the
  level scan uses a labelled `break outer` so a real new match exits
  cleanly (not a stale-state short-circuit).
- expo-hall-map.component.ts: while in there, drop the
  queryParamMap + router.events + lastZoomedBoothId triple. Replace
  with a public zoomToBoothId(id) the parent can call, plus a
  zoomToken to invalidate superseded async zooms (rare race when a
  second tap arrives while the first awaits image load).
- conference-map.page.ts gains an ionViewWillEnter that reads
  ?booth=<id> off route.snapshot, flips the segment to expo-hall, and
  calls expoMap.zoomToBoothId(). Ionic guarantees ionViewWillEnter
  fires on every entry — first nav, cached re-entry with a new booth,
  tab-switch, cold-start deeplink — so the dual-subscription dance is
  unnecessary.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Mirrors the affordance added to the Job Fair session-detail page in
6775a89 — a compact card under the search bar with the floor-plan
thumbnail opens the existing FloorPlanModalComponent zoom view. Every
listing on this page is a job-fair-adjacent role, so the card is
always rendered (no per-row guard).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
All summits (Typing, Packaging, Maintainers, etc.) require advance
registration just like tutorials, but the preRegistered flag was only
firing for kind="tutorial" or names that literally contained
"pre-registration". Summits got neither, so the "Pre-registration
required" badge never showed up for them on the schedule list, room
detail, or session detail pages.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Schedule list and session detail render the "Pre-registration required"
badge from session.preRegistered, but the room-detail list omitted it.
Tutorials/summits/PyLadies Lunch in a room view now match the badge
treatment elsewhere in the app.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Per organizer ask. The CMS-driven body was already addressed in the
content-update script, but the page hero, ion-title, and side-menu
entry are hardcoded in the app and were still plural.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@JacobCoffee JacobCoffee merged commit 77ef9f6 into main Apr 30, 2026
2 checks passed
@JacobCoffee JacobCoffee deleted the bulk-fixups branch April 30, 2026 21:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant