Skip to content

feat(web): ask questions one at a time, with step tabs and keys - #131

Merged
TheGreatAxios merged 5 commits into
mainfrom
cl-12074-ask-the-coordinators-questions-one-at-a-time-with-step-tabs
Nov 4, 2026
Merged

TheGreatAxios merged 5 commits into
mainfrom
cl-12074-ask-the-coordinators-questions-one-at-a-time-with-step-tabs

Conversation

@TheGreatAxios

@TheGreatAxios TheGreatAxios commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • By default the questions card asks one question at a time. Step tabs, named from each question id (first_version reads "First version"), end in Submit and follow the person; a tab opens once reached and is checked once passed.
  • Keys: ↑↓ move, Enter picks a single choice and moves on, Space ticks a multi choice and Enter moves on, ← and → step back and forward. Submit lists every answer; Enter sends.
  • "Other" is an option of its own; choosing it turns it into a focused field with "Other" as its placeholder, in both layouts.
  • Settings › Appearance › "Ask questions one at a time" switches back to all at once (kept per browser).
  • The heading counts the questions ("A question for you", "A couple of…", "A few…"); the "Needs you · form" label is hidden.
  • While questions are open the composer reads "Type here to respond to the above question"; a message sent from it overrides the card as before.
  • A done card settles the same in both layouts: a quiet box headed "Answered" listing each question and its answer, or "Answered in the conversation" / "Replaced by the questions that followed" with no list.
  • The answer message keeps its format and the ask_questions contract is unchanged.

Verification

  • bun run lint, format:check, typecheck, test pass.
  • New questions-card.test.tsx; composer placeholder test for open questions.
  • Drove the real card in headless Chrome with key events: single, Other typed, multi ticks, review, ← back, → forward, Enter send; the sent reply matched the existing answer format.

Notes

  • The label is hidden with CSS because react-ui's GateBlock has no option for it; its accessible name still reads "Needs you · form".
  • The card does not take focus when it appears, so the composer keeps it; the person clicks or tabs into the card, then every step after takes focus.

Closes CL-12074

@linear-code

linear-code Bot commented Nov 4, 2026

Copy link
Copy Markdown

CL-12074

@corbits-triage corbits-triage Bot left a comment •

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Triage requests changes:

  • Conventions: added code matches a code pattern
    • apps/web/src/config.ts:965-969 nested-ternary: Nested ternary; use if statements or a lookup.
    • apps/web/src/pages/workspace/questions-card.tsx:249-280 nested-ternary: Nested ternary; use if statements or a lookup.
  • Invented fallbacks: added code matches a code pattern
    • apps/web/src/pages/workspace/questions-card.tsx:390 empty-fallback: Invented fallback (an empty string, list, object or zero); handle the missing value instead.

@TheGreatAxios

Copy link
Copy Markdown
Contributor Author

Screenshots from driving the real card in headless Chrome with key events (gist). Left: one at a time. Right: all at once.

First step
First step

Enter picked "Just me" and moved on
Second step

Other typed in place
Other typed

Space ticks on a multi-choice question
Multi choice

Submit lists every answer
Review

Sent and settled
Answered

All at once: Other becomes the field
All at once, Other

@TheGreatAxios

Copy link
Copy Markdown
Contributor Author

All at once (Settings › "Ask questions one at a time" off), answered and sent the same way.

Filled in: Other on the dropdown opens a field; the Other checkbox becomes the field
All at once, filled

Sent and settled
All at once, answered

@TheGreatAxios

Copy link
Copy Markdown
Contributor Author

Updated screenshots after 228fc91: a done card now settles into a quiet box listing each answer, the same in both layouts. These replace the earlier comments.

Both layouts, settled: identical
Both settled

One at a time: first step
First step

Other typed in place
Other typed

Space ticks on a multi-choice question
Multi choice

Submit lists every answer; the settled box uses the same list
Review

All at once, filled in: Other opens a field
All at once, filled

@corbits-triage corbits-triage Bot left a comment •

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Triage requests changes:

  • Conventions: added code matches a code pattern
    • apps/web/src/config.ts:965-969 nested-ternary: Nested ternary; use if statements or a lookup.
    • apps/web/src/pages/workspace/questions-card.tsx:116-120 nested-ternary: Nested ternary; use if statements or a lookup.
    • apps/web/src/pages/workspace/questions-card.tsx:269-300 nested-ternary: Nested ternary; use if statements or a lookup.
  • Invented fallbacks: added code matches a code pattern
    • apps/web/src/pages/workspace/questions-card.tsx:410 empty-fallback: Invented fallback (an empty string, list, object or zero); handle the missing value instead.

@corbits-triage

corbits-triage Bot commented Nov 4, 2026 •

Copy link
Copy Markdown

Triage: Pass

No changes needed from you. A maintainer will review this pull request.

@corbits-triage
corbits-triage Bot dismissed stale reviews from themself November 4, 2026 06:19

Nothing triage asked to change still fails, so this request no longer stands.

Comment thread apps/web/src/config.ts Resolved
corbits-triage[bot]
corbits-triage Bot previously approved these changes Nov 4, 2026
corbits-triage[bot]
corbits-triage Bot previously approved these changes Nov 4, 2026

@corbits-triage corbits-triage Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No defects reported.

@TheGreatAxios
TheGreatAxios added this pull request to the merge queue Nov 4, 2026
Merged via the queue into main with commit 4027e14 Nov 4, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant