Skip to content

T3-26.25 Prod release - #166

Merged
qiyundai merged 45 commits into
mainfrom
stage
Jun 18, 2026
Merged

T3-26.25 Prod release#166
qiyundai merged 45 commits into
mainfrom
stage

Conversation

@sharmeebuilds

Copy link
Copy Markdown
Collaborator

Summary

This release includes enhancements and bug fixes across several blocks and utilities:

Sessions Hub

  • Redesigned toolbar, filter panel, and session conflict modal to match Figma spec
  • Mobile drill-in navigation for filter panel with Save button pinned to bottom
  • Active filter tags with count, See all / See less toggle
  • Keyboard accessibility and ARIA fixes for the filter panel
  • Fixed mobile toolbar layout, search expansion, dropdown width, and chevron alignment
  • Fixed filter panel overflow and mobile/tablet viewport interaction
  • Disabled Register button when session time slot is full

Profile Cards

  • Support for all speakers via type filter; empty type shows all
  • Explicit field-based sort via order config row
  • Deterministic localeCompare sort with edge-case test coverage

Speaker Hub

Sessions Catalogue

  • Unit tests: tab-toggle → view dropdown assertions, MWPW-195684 behaviour coverage, structural assertion cleanup

Timing Framework

  • Respect toggleTime when avoidStreamEndFlag is set
  • Prevent null toggleTime items from overriding timed schedule position
  • Align traditional worker with module worker
  • Fast-path optimisation for no-toggleTime items

Event Agenda

  • Prevent title text overlapping the toggle button

Mobile Rider

  • Skip streamend listener when avoidStreamEndFlag is set

Repo / Lint

Test plan

  • Smoke-test sessions hub on mobile and desktop: filter panel, toolbar, conflict modal, Register button state
  • Verify profile-cards sort order with and without explicit order row
  • Confirm timing-framework behaviour with avoidStreamEndFlag and toggleTime edge cases
  • Run npm test — all unit tests pass
  • Run npm run lint — no lint errors

🤖 Generated with Claude Code

hnvadobe and others added 30 commits May 13, 2026 14:51
Right-align all toolbar actions and update controls to the S2 design:
- Replace the All/My tab toggle with a view dropdown
- Add a My Sessions bulk schedule download button (multi-event .ics)
- Restyle the Filter button to an outline pill with an active state
- Make search collapsible (icon button expands to a pill field with clear)
- Map new toolbar colours to --color-* tokens with Figma hex fallbacks

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Heading "You are registered for a session at this time" + new subheading
- Pre-select the already-registered session with a blue "Registered" badge;
  the new session is the unselected radio option above it
- Add a Cancel button alongside the "Confirm session" CTA
- Badge uses a block-scoped --sh-badge-info token (Spectrum 2 informative
  blue) since no Milo page token exists; focus ring uses --color-accent

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Two-column filter overlay: category nav (Session type/Audience/Product)
  on the left, option-pill grid on the right, with Apply + Reset all
- Filtering is deferred — selections stage in the panel and commit on Apply
  (Reset all clears); reopening re-syncs checkboxes to applied filters
- Active filter tags render inline below the toolbar; each ✕ removes a single
  filter, with a Clear all action; row hides when empty
- Colours use --color-* tokens with Figma hex fallbacks; desktop/tablet
  two-column with a small-screen stack (mobile drill-in not implemented)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
avoidStreamEndFlag was reusing stream-ended early-advance paths, causing
the schedule to skip to the last timed fragment. Only disable MR blocking;
natural underrun and liveStreamEnd still apply when streams actually end.

Co-authored-by: Cursor <cursoragent@cursor.com>
Port fast schedule init, validateSchedulePosition, monotonic Akamai time
cache with drift detection, and MR underrun toggleTime guard so chrono-box
(production path) matches worker.js behavior without blocking on API at init.

Co-authored-by: Cursor <cursoragent@cursor.com>
On <=600px the filter panel becomes a drill-in: the category list shows
full-width rows with chevrons; tapping a category opens a detail screen
(back arrow + title + full-width option pills). Back returns to the list;
Apply/Reset all stay in the list footer. Desktop/tablet two-column layout
is unchanged (drill-in CSS is scoped under the mobile media query).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… set

When avoidStreamEndFlag=true the timing framework already bypasses MR
session checks. This change makes the mobile-rider block consistent:
the streamend listener that disposes the player is not attached, so the
player stays visible for testing even when the session is inactive.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace "Clear all" with a count indicator + See all/See less, matching the
Figma Tag group layout: count label row above the chips, See all chip at the
end of the tag row. Count + See all appear only once the active filter count
exceeds the collapsed threshold (3); at or below it, just the removable chips
show. Tighter positioning (8px 32px 0) and S2 chip styling via tokens.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
.sh-tab-toggle was replaced with .sh-view-dropdown in the toolbar
redesign; update the two tests that checked hidden/visible state.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Cover the new sessions-hub features introduced in this PR:

- View dropdown: hidden for unregistered, visible for registered, contains
  All/My options, toggle opens/closes the menu
- Download button: hidden by default, appears on My sessions, hides on All
- Collapsible search: expanded class toggled by search toggle click, clear
  collapses it
- Filter panel: two-column structure rendered, Apply/Reset buttons present,
  hidden on init and shown on filter button click, category nav switches the
  active option grid
- Staged filtering: checkbox does not filter until Apply; Apply commits and
  closes panel; Reset all restores all cards; reopen syncs checkboxes to
  applied state
- Active filter tags: row hidden when empty, chips appear after Apply, ✕
  removes a chip and re-filters, count + See all gated on threshold,
  See all expands and See less collapses
- Conflict modal: heading, subtitle, pre-selected registered session,
  Registered badge, unselected new session, Cancel + Confirm session footer,
  radio selection switching
- filterSessions: My sessions tab filters to registered IDs; All shows all

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Remove the Jira ticket reference from the describe block name; use a
plain functional label instead.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…haviour only

Replace CSS-class and DOM-existence checks with assertions on observable
outcomes: visible card counts, hidden state of the filter row, chip counts,
See all/See less text, search filtering sessions by title.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add padding-inline-end to collapsible agenda-title-detail-container so
text doesn't run under the absolutely-positioned agenda-toggle. A
combined .collapsible.background selector is needed because the
background variant's shorthand padding overrides the collapsible rule.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The 'all' keyword is removed — an empty type cell is the correct way
to show all speakers, matching standard UX filtering behaviour where
no filter selected means no restriction.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
When sessionTimes[0].isFull is true and the user is not already
registered or waitlisted for that session, the Register button is
rendered disabled so users cannot attempt registration that would
fail silently.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
[MWPW-196040] : [Speaker hub] Support all speakers in profile cards
[MWPW-197632 ] fix(event-agenda): prevent title text overlapping toggle button
…timed schedule position

A null-toggleTime item appearing between two timed entries (e.g. a
transition slot interleaved mid-schedule) unconditionally overwrote
the `start` pointer in getStartScheduleItemByToggleTime. With
serverTime inside the first XF's period, the function returned the
transition item instead of the first timed XF, causing the wrong
fragment to load immediately.

Track lastTimedStart separately and return it (over any trailing null
item) when a future-timed entry stops traversal. When the list ends
naturally the final item — timed or null (post-event) — is still
returned correctly.

Also fix validateSchedulePosition to compare by pathToFragment instead
of object reference; currentScheduleItem is always a spread copy so the
reference check was always true, causing a needless nextScheduleItem
reset on every validation cycle.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ig row

Add asc/desc class-driven sorting by any speaker field. Config rows are
now parsed as a position-independent key/value map so type and order rows
can appear in any order. Falls back to ordinal sort when no order row is
present.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
qiyundai and others added 15 commits June 10, 2026 08:48
fix(timing-framework): avoidStreamEndFlag and traditional worker alignment
Pass explicit sensitivity option to localeCompare so sort order is
consistent across runtime locales. Add tests for unknown order field
and type filter matching zero speakers.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…n tablet/mobile viewports

- Anchor filter panel to sh-toolbar-inner (position: relative) instead of sh-filter-wrap, so panel width is bounded by the toolbar container at all viewports without a custom breakpoint
- Change panel width from calc(100vw - 48px) to min(1133px, 100%) to respect toolbar-inner bounds
- Fix mobile bottom-sheet: add z-index: 1 to sh-filter-sidebar and sh-filter-options so they sit above the absolute-positioned backdrop, fixing unclickable rows and options incorrectly closing the modal
- Remove 1180px custom breakpoint

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
[MWPW-196656] fix(sessions-hub): disable Register button when session time is full
Adds a sticky Save button at the bottom of the mobile drill-in options
view that applies filters and closes the panel, matching the Figma spec
and mirroring the behaviour of the desktop Apply button.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…r drill-in

Add missing display:block override so the Save footer renders at ≤600px,
and use margin-top:auto so it sticks to the bottom of the flex column
regardless of content height.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
[MWPW-195684] : Session Catalog Enhancements - Filter Panel, Bulk Schedule Download & Conflict Modal
[MWPW-196040] feat(profile-cards): support explicit field-based sort
… Figma spec

- Search input moved to sh-search-row (sibling of sh-search-wrap) so the
  toggle stays visible in the top row while the pill expands onto a new row
  on mobile
- Desktop: pill appears inline in the actions row; toggle hides when expanded
- Mobile: actions row stretches full width; dropdown grows to fill space;
  search row wraps to a full-width row below on expand
- Unregistered mobile: filter button grows to fill remaining space and shows
  Filter label; search toggle stays at right
- Removed grey border from search toggle (not in Figma spec)
- Fixed blue focus ring on filter items: :focus-within → :has(input:focus-visible)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…nment

- Stretch sh-view-toggle to fill the growing dropdown container on mobile
- Add justify-content: space-between so the chevron sits at the trailing edge

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ter panel

- Add Enter/Space key handling to drill into filter categories, with focus moved to the first checkbox on keyboard activation
- Expand keydown handler to handle both Escape (close panel, return focus to filter button) and Enter/Space (drill-in)
- Fix aria-hidden: remove attribute entirely when panel is shown (aria-hidden="false" is invalid; absent is correct)
- Refactor category click into activateCategoryDrillIn() shared by click and keyboard handlers
- Simplify updateActiveFilters() — remove unused listEl/state params
- Move sidebar actions append after optionsWrap build to fix DOM ordering for Save button visibility
- Fix drawer.css: remove -webkit- prefix from display:box (non-standard prefixed form was a no-op)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Reverts an unintended change from the previous commit that removed the
-webkit- prefix from display:box, which broke line-clamp in WebKit browsers.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
[MWPW-195684] fix(sessions-hub): fix mobile toolbar layout and search
T3-26.25 - Stage Release - Cut 2
@aem-code-sync

aem-code-sync Bot commented Jun 18, 2026

Copy link
Copy Markdown

Hello, I'm the AEM Code Sync Bot and I will run some actions to deploy your branch and validate page speed.
In case there are problems, just click a checkbox below to rerun the respective action.

  • Re-run all PSI checks
  • Re-run failed PSI checks
  • Re-sync branch
Commits

@qiyundai
qiyundai merged commit 0cd6832 into main Jun 18, 2026
10 of 12 checks passed
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.

3 participants