[Design] WS4 Prepare step stories - #276
Merged
Merged
Conversation
Adds a pure-props PrepareSteps component and co-located stories for the Prepare design pass (WS4). Stories render inside the real AppShell chrome at location='prepare' using fixtures derived from real experiment content and params files. Stories: - Overview, Background, Protocol (with parameter-driven flow infographic) - PreviewStopped, PreviewRunning, PreviewFinished - DirectCollect, CustomDesign, ImportedConfigure - OliverSacksFallback - ProtocolStroop, ProtocolSearch No runtime wiring; design-only.
…step actions, outline Stop preview, single shell in DirectCollect
Contributor
Author
|
Review fixes (Main):
|
…sign, shared PreviewLabel - Local stepper current step is a small gold pill (bg-accent, ink text) in the secondary bar - Overview/Background/Protocol/Preview in one centered 800px column; action row aligned to it - Protocol: static stimulus → key diagram + vertical task timeline from flow; condition cards, pacing callout and key chips removed; Stroop (r/g/b/y) and Search (b/n) fixtures - New PreviewLabel (eye glyph · PREVIEW · not recording) replaces the PreviewRunning card - Sacks stand-in sits in Background's video slot at 16:9 - Drop CustomDesign/ImportedConfigure stories and their fixtures
…atching workspaces in their Protocol stories
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Design pass for Workstream 4 per
docs/uxr/2026-09-24-ws4-design-brief.mdand plan §10.2 ("Experiment Prepare"), §11 WS4. Storybook fixtures only, no runtime wiring. Engineering integrates after approval.Round 2 (product feedback)
Decisions applied
bg-accent, ink text) with a white number bubble. It stays subordinate to the global bar: the global bar marks location with a 4px gold underline on a 64px bar with uppercase labels, while the local step is a pill at 13px in the secondary bar, aligned to the content column rather than the shell's left edge. Visited (teal check onbrand-light) and upcoming (white, muted) are unchanged; gold did not clash with either, so the only change is the current step. Connectors stay teal up to the current step.max-w-[800px], 24px inner padding) with side whitespace. The local stepper and the sticky action row align to the same column, so the page reads as one column from top to bottom. The action row stays sticky and is visible in every story at both sizes.Face1.jpg,House1.jpg, the SearchconditionOrangeT/conditionNoOrangeTimages; Stroop draws the colored words) shows its label, then an arrow down to its keycap, with "Sees" / "Presses" row labels. Keycaps match the feat(design): WS5 participant screens + run outcome Storybook states #273 participant-screen look (ink outline, heavy bottom edge). It is a<figure>, has no hover or focus state, and ends with "Just a diagram. You can try it for real in Preview." That line is aimed at the playtester who pressed 1 on the old page.flowinput ({ label, count? }[]). Counted phases get a filled teal node and a bold count. Counts: Faces/Houses 6 practice / 120 recorded (params); Stroop 8 / 96 (stroop/experiment.ts: 8 templateParameters in 'Practice task',sample: { n: '96' }in 'Stroop task'); Visual Search 8 / 80 (search/utils.ts:constructTrials(1, …)/constructTrials(10, …), 8 trials per block).responses: { key, label, stimulus }[], drives both the diagram and the Preview key legend. It replacesexpectedKeys, which had been derived fromparams.stimuliand gave Stroop and Search the wrong keys (1/9). Stroop now shows r/g/b/y (ink ≠ word, colors fromstroop/experiment.ts). Search shows b/n.ProtocolStroop/ProtocolSearchrender inside their own Stroop / Visual Search workspace in the shell.src/renderer/components/PreviewLabel.tsx(+PreviewLabel.stories.tsx). It uses RunBar's run-status vocabulary: glyph, bold uppercase label, muted detail.[eye] PREVIEW · not recording. The outline eye glyph is distinct from the red EEG dot and the square behavior-only glyph, and the status is always spelled out in words, never color alone. PreviewRunning drops the old "PREVIEW · Nothing is being recorded" card and showsPreviewLabelnext to Stop preview in the action row. At integration, engineering will replacePreviewButtonComponent's inlinePREVIEW · nothing is being recordedstatus withPreviewLabel, so the app has one preview label.CustomDesignandImportedConfigurestories, plus theCUSTOM/IMPORTEDfixtures and theheadingprop that only they used. Custom Prepare is an editable authoring flow (Overview = research question / hypothesis / methods; Conditions; Trials; Parameters; Instructions; Preview). Imported is Overview / Markers / Preview. Neither uses the built-in lesson steps, so each gets its own brief later.h2, not a secondh1. The plainBackgroundstory keeps the real CNN link.Also removed the unused
modalityprop and the step-transition wrapper.Review agenda (Storybook → Domain/PrepareSteps, Domain/PreviewLabel)
Overview: does the gold pill read as "step in this lesson" next to the global gold underline?BackgroundandOliverSacksFallback: centered reading column; is the video slot the right size and position?Protocol,ProtocolStroop,ProtocolSearch: the response diagram and vertical timeline. Is it explanatory enough, and does it read as non-interactive?PreviewStopped,PreviewRunning,PreviewFinished: thePreviewLabelin the action row.Domain/PreviewLabel: glyph choice (eye) vs RunBar's dot and square.DirectCollect: unchanged behavior (nothing locked; Collect marked Next).Open questions
#ffe32aon white, so the example word is faint. The diagram draws it the way the task does; the label "Yellow ink" carries the meaning. Keep it that way?stroop/content_protocol.js) spells out the keys that the diagram now shows. Should the copy be shortened in a content pass?Integration notes
params.nbTrials, which is stale for Stroop/Search.PreviewButtonComponent's inline preview status withPreviewLabel(one preview label app-wide).Constraints / deviations
app.global.cssis untouched (keycaps reproduce the feat(design): WS5 participant screens + run outcome Storybook states #273 look with utilities).package.jsonandpackage-lock.jsonare untouched.OliverSacksFallback's main area scrolls internally (16:9 slot + transcript-length text); the document itself never scrolls and the sticky action row stays visible.Verification
npx tsc --noEmitclean.OliverSacksFallback, which scrolls internally by 631/679px for its long reading content./tmp/ws4-design/round2/