3 Commits
Author SHA1 Message Date
nesquena-hermesandsantastabber 299fab5631 feat(#4372): attach large composer text pastes as .md files
Pastes over 4000 chars or 100 lines attach as a timestamped pasted-text-*.md in
the upload tray instead of flooding the composer. Image-paste path unchanged; an
oversize paste that exceeds MAX_UPLOAD_BYTES falls through to a normal inline
paste so nothing is lost.

Co-authored-by: santastabber <204424800+santastabber@users.noreply.github.com>
2026-06-18 05:09:11 +00:00
kaishi00 d882095ca5 test: update #1620 test for new text+image paste contract
- Rename test_handler_skips_attach_when_text_present to
  test_handler_skips_preventDefault_when_text_present: asserts
  early-return on text-only clipboards and that preventDefault is
  gated on !hasText (the new contract)
- Add test_handler_attaches_image_when_both_text_and_image_present:
  positive assertion that addFiles() is reached when both text and
  image items are in the clipboard (the headline fix)

Addresses review feedback: tests now reflect the new behavior matrix
instead of the old if(!imageItems.length || hasText) return guard.
2026-06-17 04:37:29 +00:00
Jash Lee 1ad0ab42e5 Fix #1620: don't attach image on paste when clipboard also has text
When the clipboard carries both text and an image (rich-text sources like
Notes, Word, Slack, browser selection attach a rendered preview alongside
the plain text), the paste handler in static/boot.js unconditionally
called e.preventDefault() and routed the image into addFiles(), silently
discarding the text payload.

Fix:
  - Detect text in the clipboard via items[].kind === 'string' &&
    (type === 'text/plain' || type === 'text/html'). When present, return
    early so the browser's default text-paste runs.
  - Tighten the image filter to kind === 'file' && type.startsWith('image/')
    so string items advertising an image MIME (e.g. text/html with an
    embedded data URI) are not misclassified as a true screenshot paste.

Pure-screenshot paste (image-only clipboard, e.g. Cmd+Shift+Ctrl+4 on macOS)
is unchanged.

Adds tests/test_1620_paste_text_with_image.py with 6 static-analysis checks
on the handler shape, matching the pattern of test_issue1095_pasted_images.py.
2026-05-04 10:48:36 -04:00