v0.24.0
Added
- Comparisons subtab (ENG-8) — score the selected scanpath against other scanpaths of the same text, grouped by a Comparison column you pick (regime / repeated-reading id / model generation / participant / trial); closest shown, ranked by NLD. Line assignment (drift-correction grid) is now its own top-level subtab.
- Corpus Analysis (AN) — question-oriented views Per text · Per reader · Groups (profile one cohort or compare two): metric distributions + word profiles, per-text heatmaps pooled over readers, reader summaries, and group differences with effect sizes; shared measure / aggregation / spread pickers with 95% bootstrap CI bands.
- Image-based stimuli (VIZ-4) — show a stimulus image on any dataset: an upload overrides a dataset's built-in image;
image_path/image_x/image_ycolumns declare native per-trial images; Align to text (X/Y offset + scale) and an opacity slider fit/dim it. - Colour saccades by reading type (VIZ-8) — Uniform / By type (forward · skip · refixation · return-sweep · regression), editable class colours, optional legend.
- "Linear reading" view (VIZ-9) — arched saccades + snap each fixation above its word.
- Animated replay autoplays on load (VIZ-10) — at the configured speed; an Autoplay on load checkbox turns it off. Slider is now a linear time scrubber with an elapsed/total-seconds readout (VIZ-11).
- Vertical drift correction (PRE-3) — the ten Carr et al. (2021) line-assignment algorithms, applied in place or compared in the Line assignment subtab.
- Separable-layer export (VIZ-5) — one file per layer (boxes / fixations / saccades / heatmap / labels / image) that register when stacked.
- Heatmap colour scaling: Linear or Log (VIZ-3).
- Public OneStop corpus (DATA-3) — all four regimes, seven parts, two variants; shareable via deep link. The bundled demo now ships per-trial stimulus images.
- Data sidebar reorganized (DATA-8/9) — one flat source picker tagged by kind, one ordered ⚙️ Configure group, native folder picker; plus stable trial selectors + annotation markers (UX-5/6), a quick-view preset indicator (VIZ-12), a configurable word-hover measure (VIZ-13), and a px-vs-pt font note (VIZ-1).
Every feature reaches all surfaces: UI · deep-link + Share · Save & restore · CLI · headless API.
Changed
- Save & restore configs are versioned (ENG-11) — a schema version + migration on load; a newer config restores best-effort with a warning.
- Word labels are left-aligned in their AOI box (was centered) so they coincide with the stimulus image + fixations.
- Author list (ENG-14) — full co-author set with affiliations in the About panel,
CITATION.cff, and README. - Slightly larger small text (VIZ-2).
Fixed
- Branded theme applies from any launch directory (BUG-6) — injected as
--theme.*flags, sopython -m scanpath_studiofrom anywhere renders the pinned blue theme instead of Streamlit's default red. - Bulk export no longer skips trials whose words don't join (VIZ-5) — a fixations-only / non-joining-words dataset now exports instead of reporting "empty data".
- Large uploads no longer OOM-crash the hosted demo (BUG-5) — a pre-parse size guard warns and asks to confirm above ~25 MB.
- MultiplEYE stimulus text alignment (BUG-3), the bundled-demo stimulus-image vertical origin, and "No data found" when run outside the repo root (default data dirs anchored to the project root).
Docs
- True-to-scale rendering guide (ENG-12) — new
docs/rendering.md.
Install/upgrade: pip install -U scanpath-studio