Files
pad/web/e2e
xarmian 346a5c92a9 feat(web): Comment action on the selection toolbar, quoting into the composer (IDEA-2843)
GitHub #1228. Selecting a passage in an item's content now offers Comment
beside Extract; it quotes the selection as a markdown blockquote into the
comment composer under the content, appending after a blank line so an
in-progress draft survives. The selection is NOT consumed — unlike Extract,
which replaces it with a wiki-link — so a reader can quote the same passage
twice or keep reading.

- toBlockquote() prefixes EVERY line including blank ones. An unprefixed
  blank line ends a blockquote in markdown, so quoting two paragraphs
  without it silently drops the second out of the quote and leaves it
  looking like the commenter's own words.
- The action renders when the host supplies `onComment`. A composer to
  quote into IS the capability; a flag that is always true beside a
  callback that is always supplied would be two ways to say one thing.
- The button's accessible name is "Comment on selection". The composer's
  submit button is also named "Comment", and two identically-named buttons
  with different effects is a real ambiguity for name-based navigation —
  found by the first end-to-end run failing on a locator, not on behaviour.

A NEGATIVE result, measured and kept. The action was briefly gated
peek-independently, reasoning that a peeking master keeps a live composer
(BUG-2263) but could not act on a selection. That state does not exist: a
drag-selection in a peeking master RE-ACTIVATES it (focus-follows-editing,
PLAN-2179 DR-2), so a selection and a frozen master never coexist. The gate
is back on `mutationsEnabled`, and e2e/selection-comment-peek.spec.ts asserts
the re-activation so a future change that makes selections survive the freeze
turns red there instead of quietly reopening the question.

Gates: 119 files / 1998 unit tests, svelte-check 0 errors, and 37 e2e in
desktop-chromium — the 2 new ones plus the 35 in the four specs the comment
relocation touched, run against a binary built from this tree.

Claude-Session: https://claude.ai/code/session_011Q4b1iHtJtSyMs7BA2ySxo
2026-09-02 19:42:50 +00:00
..