The Quotes lens's grouping chosen at the top of the content sidebar with the shipped split control. Sections & themes is the default and comes first; Sessions, the second choice, borrows the Sessions lens's web session list. Click the split control or a session in any frame; every frame follows.
What moved. The grouping control leaves the zone heading and becomes the sidebar's header: the slot left empty when the sidebar's “Contents” title was removed (
SidebarLayout.tsx:437). The heading keeps naming the view (“Sections” or “Sessions”) with no action beside it while the sidebar is open; when it is closed, the control comes back to the heading. The default, Sections & themes, sits first in the control; Sessions is the second choice, so it sits second. Today the control lists them the other way round. The control is the shipped.dimension-toggle, run full width as the person picker runs it (person-picker.css), so there is no new CSS for the control.What Sessions lists. The Sessions lens's web list, unchanged:
.session-entryrows fromSessionsSidebar.tsx, in both its study shapes. A 1:1 study shows the participant's code and name, then date. A study with several people per session shows the session number and a row per participant. The same width rules apply as in that lens: duration from 260px, weekday from 320px, full names and thumbnails from 360px (the defaults atSessionsSidebar.tsx:184; the live component measures the names). A click scrolls the quotes to that session's group, which already carries an anchor (session-quotes-<id>inQuoteSessions.tsx). It does not navigate to the transcript, which is what the same row does in the Sessions lens.Same lens, same interactions. Sessions and Sections & themes are two arrangements of one lens of quotes, so nothing on a quote changes with the grouping: both build the same
QuoteCardthroughQuoteGroup. The timecode still opens the video, the speaker badge still opens the transcript at that moment, and starring, tagging, hiding and editing are unchanged. Only the group's own header differs: “Session 3” is a fact, not something the researcher wrote, so it has no rename and no description. The rule for the build: change an interaction only where the new arrangement needs it.The sidebar rows: what they keep, what they drop. They behave as the Sections and Themes links do: a smooth scroll to the group's anchor, the scroll spy marking the session in view (
aria-current="location"), a click winning over the spy, the active row kept in view inside the sidebar, and the hover panel's auto-close. Cmd-click does what it does on a section link: the TOC's click handler takes every click, so it scrolls rather than opening a tab, for both. They drop the three things the same row does in the Sessions lens: opening the transcript, Cmd-click opening a transcript tab, and marking the session whose page you are on. The jump does not flash its target, as a section jump does not. The focus-on-open selector inSidebarLayout.tsxlooks for.toc-linkand needs.session-entrytoo.Empty groups. The quote column already leaves out a group with no visible quotes, keeping one whose quotes are all hidden so its hidden-count badge can bring them back. The sidebar list must use that same filtered set. Today the Sections & themes list ignores filters altogether (
TocSidebar.tsxfetches its own), so it should take the same fix in the same change.On the Mac this is the web list, not the native session switcher: inside the Quotes lens the sidebar is HTML, and moving between the native and web versions as the grouping changes would be the expensive part. The Sessions lens keeps its native switcher.
Open, for the build
flex: auto) instead of the person picker's equal split.panelFit(…).tocOpen), so a sidebar the fit has auto-closed on a narrow window also brings the control to the heading. View-menu rows on the Mac stay a nice-to-have, not a need.Strings
One change, the owner's:
quotes.groupBy.sessiongoes from “By session” to “Sessions”, in the control and the zone heading alike (QuoteSessions.tsxreads the same key for its heading). Rewording anenvalue is a change in all 21 locales, and most already have a translated “Sessions” innav.sessionsto lift from. Everything else is shipped:quotes.groupBy.label,quotes.groupBy.sectionsAndThemes,quotes.sections,quotes.themes,dashboard.coverageSession,nav.sessions.