Sessions · s1 and s3 recorded in speaker view, s2 in gallery view
Sessions
ID
Speakers
Start · User journey
Sentiment
Duration
Commentary
What the slice is
First sketch — trued 6 Oct 2026. The shipped design is recorded in experiments/session-tapestry/README.md; this page is kept as the starting point. What changed: the top lane is sections, not s08 topics; the speaker-view colour flip was measured false (no call changed its picture with the speaker), so the clip is the per-turn scene colour; themes are spans with their names in full on fading chips, not truncated tags; the scale is fit-to-longest clamped to 1–4 s/px, so a short project does not fill the width; a click jumps to the transcript rather than seeking video, the playhead covers the speaker and sentiment lanes, and there is no barcode thumbnail tooltip. A session with no video still gets a slice, with neutral clips.
One time axis, read top to bottom. (1) Topic flags (s08) in the top border, a pennant at the start of each segment. The label is truncated to the space before the next flag, and the full name shows on hover. (2) Speaker clips, Final Cut style: one rounded clip per turn, on a moderator track and a participant track. The track says who is talking. The clip's fill is the mean colour of the video frames during that turn, which is secondary. In speaker view the call flips to whoever is talking and the colour flips with it (s1, s3). In gallery view or during a screen-share it does not (s2, and the pale clips in s1). The colour also shows screen-share stretches without any analysis. (3) Sentiment: one bar per quote at its timecode, in the shipped --bn-sentiment-* colour. Positive goes above the line and negative below. Surprise, the neutral flag, is a dot on the line. (4) Theme tags (s11) in the bottom border, one per theme at its first quote, packed into two rows and truncated. Hovering a tag fades every bar except that theme's.
Common scale across rows. The longest session fills the width and shorter ones stop early, so expanded slices compare by eye: who went below the line at Checkout, and who ran out of time before the last task.
Update, 6 Oct 2026: clip colour is settled and computed in the pipeline. The colour lab (experiments/session-tapestry/colour-lab.html) tested 25 real recordings. No call changed its picture with the speaker: gallery view and screen shares show the same frame whoever talks. So a clip's colour is the scene during that turn, not a colour for the speaker. It is the most colourful cluster filling at least 15% of the frame, with black bars cropped and the result lifted out of the dark range. bristlenose/utils/scene_colour.py computes it per turn. The track, not the colour, says who is speaking.
Interaction (proposed): hover anywhere on the slice for a playhead through all four lanes. A click seeks the video (the barcode gets a thumbnail tooltip), and a click on a sentiment bar opens that quote. The disclosure is a plain chevron. Enter or Space toggles it, and Option-click expands all rows, as in a Finder outline.
The collapsed row is unchanged. The sparkline already gives sentiment counts. The slice adds when they happened. The thumbnail could become a tiny barcode, which would make the collapsed row hint at the slice.
Ideas to borrow from
Movie barcodes (the "moviebarcode" project; Charlie Clark's The Colors of Motion): a whole film as one strip of averaged frames. The direct source for lane 1. We'd sample about one frame a second with ffmpeg at thumbnail time, which is cheap because the keyframe pass already exists (utils/video.py).
The Bayeux tapestry: captioned scenes in a top border, asides in the margins, and a narrative you read by walking along it.
SoundCloud's waveform with timed comments: annotations pinned to a timeline the reader scrubs. This is the closest precedent for quotes on a strip.
YouTube's "Most replayed" graph over the scrubber: a quantity drawn over time, sitting directly on top of the seek control.
NLE timelines (Final Cut, Premiere): a filmstrip lane, audio lanes and markers stacked on one shared axis. Researchers who edit clips already read this layout.
Diarisation lanes in Descript and Otter: who spoke when, as per-speaker bars.
Story-shape arcs (Vonnegut; Reagan et al. 2016, The emotional arcs of stories): sentiment as a line over narrative time. Bars stay honest about each quote, where a smoothed arc implies a continuity we did not measure.
Strava's elevation profile with segments: a profile under a map, with named segments you can compare across efforts. This is the same move as lane 2 over lane 4 across rows.
Tufte small multiples: the same encoding on the same scale, stacked. This is why the axis is shared across rows and not fitted per row.
New vs existing
Existing: grid columns, the sentiment sparkline, the sentiment tokens, s08 topic segments, s09 quote timecodes, the keyframe extraction.
New: the disclosure column, the slice, and the per-frame colour sample (a new artefact, cached beside the thumbnails). The lane labels shown here are owner-written, not locale keys.
Not attempted: dark-palette tuning of the barcode, or a slice for sessions with no video. Audio-only would drop lane 1 and keep the rest.
What the slice is
First sketch — trued 6 Oct 2026. The shipped design is recorded in
experiments/session-tapestry/README.md; this page is kept as the starting point. What changed: the top lane is sections, not s08 topics; the speaker-view colour flip was measured false (no call changed its picture with the speaker), so the clip is the per-turn scene colour; themes are spans with their names in full on fading chips, not truncated tags; the scale is fit-to-longest clamped to 1–4 s/px, so a short project does not fill the width; a click jumps to the transcript rather than seeking video, the playhead covers the speaker and sentiment lanes, and there is no barcode thumbnail tooltip. A session with no video still gets a slice, with neutral clips.--bn-sentiment-*colour. Positive goes above the line and negative below. Surprise, the neutral flag, is a dot on the line. (4) Theme tags (s11) in the bottom border, one per theme at its first quote, packed into two rows and truncated. Hovering a tag fades every bar except that theme's.experiments/session-tapestry/colour-lab.html) tested 25 real recordings. No call changed its picture with the speaker: gallery view and screen shares show the same frame whoever talks. So a clip's colour is the scene during that turn, not a colour for the speaker. It is the most colourful cluster filling at least 15% of the frame, with black bars cropped and the result lifted out of the dark range.bristlenose/utils/scene_colour.pycomputes it per turn. The track, not the colour, says who is speaking.Ideas to borrow from
utils/video.py).New vs existing