Skip to content

Cannot paste screenshots directly into the input field (Ctrl+V / Cmd+V does nothing) #1267

Open

Description

@a-drop-of-tears

Title: Cannot paste screenshots directly into the input field (Ctrl+V / Cmd+V does nothing)

Problem

After taking a screenshot, I cannot paste the image directly into the input field / chat box / editor, which hurts productivity.

Steps to reproduce:

  1. Take a screenshot using the system screenshot tool and copy it to the clipboard.
  2. Focus the input field/editor in this application.
  3. Press Ctrl+V (or Cmd+V on macOS).
  4. No image is inserted into the input field, and no feedback is shown.

Actual behavior:

  • Pasting text works normally.
  • Pasting a screenshot does nothing.
  • Uploading an image via “Choose file” or drag-and-drop works.
  • The clipboard does contain image content.

Motivation:
Pasting a screenshot directly after capturing it is a high-frequency workflow. Currently, users must save the screenshot as a file first and then upload it, which adds unnecessary steps and creates a disjointed experience.

Proposed solution

Support pasting images directly from the clipboard, for example:

  1. Listen for the paste event on the input field/editor.
  2. Detect image/* content from clipboardData.items.
  3. Convert the image into a File/Blob and add it to the upload queue or show a preview.
  4. If clipboard image access is unavailable or unsupported by the browser, show a clear message.
  5. Support both Windows Ctrl+V and macOS Cmd+V.

Expected behavior: After taking a screenshot, the user can focus the input field and press Ctrl+V to see an image preview and upload it directly.

Alternatives considered

  • Keep “Choose file” upload as a fallback.
  • Support drag-and-drop image upload.
  • Add a “Paste image” button that reads from the clipboard when clicked.
  • Ask users to save the screenshot first and then upload it, but this is a poor experience and should only be a temporary workaround.

Additional context

  • Browser/environment: Chrome / Edge / Safari (specific versions can be added).
  • Operating system: Windows / macOS (specific versions can be added).
  • Screenshot tool: system screenshot tool / WeChat screenshot / QQ screenshot, etc.
  • Reproducibility: consistently reproducible / intermittent.
  • No console errors observed (attach any errors if available).
  • Relevant capabilities may involve the Clipboard API, the paste event, clipboardData.items, and browser clipboard permissions.

Activity

  1. danyaberezun commented on Nov 12, 2026

    @danyaberezun
    Collaborator

    Could you check whether this still happens on the current release, v0.4.0? The composer already attaches pasted images, but only when the clipboard exposes the screenshot as a file. That depends on the screenshot tool and on the browser or desktop webview, so we need a few details. If it's still reproducible, please share your OS, whether you use the desktop app or a browser (and which one), the screenshot tool, and your ThinkRail version; otherwise we'll close this.

  2. a-drop-of-tears commented on Nov 13, 2026

    @a-drop-of-tears
    Author

    Still reproducible on v0.4.0.

    • OS: Deepin 25 (Crimson), X11
    • Client: ThinkRail desktop app, not a browser. Version 0.4.0 (stable, hash 25klkb0x7q6br)
    • Screenshot tool: Deepin Screenshot & Screen Recorder (deepin-screen-recorder 6.6.39), launched with Ctrl+Alt+A, then “Copy to clipboard” (or double-click)

    Pasting a screenshot does not attach it. Pasting or dropping an image file does. Deepin’s copy action puts a pixmap on the clipboard (image/png / application/x-qt-image) rather than a file, and the composer still only reads clipboardData.files.

    Same machine, same screenshot tool: the ChatGPT desktop app (26.1103.60933, Chromium 157) pastes the screenshot fine. So the clipboard does contain an image Chromium can read. ThinkRail 0.4.0 still does not attach it. Dragging or pasting an image file into ThinkRail works.

    The composer only reads clipboardData.files and returns when that list is empty. It never reads clipboardData.items for image/png. Deepin's "Copy to clipboard" puts a pixmap on the clipboard (image/png / application/x-qt-image), not a file, which is the case ChatGPT handles and ThinkRail does not.
    danyaberezun

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or improvement (feature-request template)

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions