Skip to content

fix(web): keep pasted link text when the clipboard also carries an image - #28

Open
gfsaaser24 wants to merge 32 commits into
mainfrom
t3code/fix-paste-link-with-image
Open

gfsaaser24 wants to merge 32 commits into
mainfrom
t3code/fix-paste-link-with-image

Conversation

@gfsaaser24

Copy link
Copy Markdown
Owner

Pasting a link copied from a browser or chat app frequently sends both the URL text and a preview image to the clipboard. onComposerPaste saw the image file, called preventDefault() to route it into the attachment flow, and the text half of the clipboard was silently discarded — the pasted link never entered the message, so users sent messages missing their links and had to paste again.

     event.preventDefault();
     void addComposerImages(imageFiles);
+    const text = event.clipboardData.getData("text/plain");
+    if (text.length > 0) {
+      composerEditorRef.current?.insertText(text);
+    }

Adds an insertText method to ComposerPromptEditorHandle (Lexical insertRawText at the current selection, falling back to end-of-document) so the composer can re-insert the text after attaching the images. tsgo --noEmit clean on apps/web.

Fable 5 via T3 Turbo (claudeAgent).

🤖 Generated with Claude Code

Gabe Fletcher and others added 30 commits August 2, 2026 18:29
Blacksmith isn't provisioned for this repo, causing Release workflow
jobs to queue indefinitely. Swap all hardcoded blacksmith-* labels for
GitHub-hosted equivalents (ubuntu-24.04 / macos-26 / windows-2025).
Co-authored-by: Jarvis (OpenClaw) <jarvis@detailinggrowth.com>
…Axiom/APNs) (#2)

* feat(relay): make hosted services optional

* docs(relay): document minimal Supabase stack

---------

Co-authored-by: Jarvis (OpenClaw) <jarvis@detailinggrowth.com>
…p) (#3)

* feat(infra): add T3 Turbo self-host runbooks

* docs(infra): root README banner for the infra branch

* fix(relay): plumb --yes to alchemy updateStateStore so first-deploy state-store bootstrap runs in CI

---------

Co-authored-by: Jarvis (OpenClaw) <jarvis@detailinggrowth.com>
listZones({}) returns only the first page (20 zones); accounts with more
zones failed with 'Could not infer Cloudflare Zone'. Use the client
paginator (.pages) to enumerate all pages.

Co-authored-by: Jarvis (OpenClaw) <jarvis@detailinggrowth.com>
* fix(deps): pnpm patch alchemy — paginate zone inference for >20-zone accounts

* style: fmt pnpm-workspace.yaml

---------

Co-authored-by: Jarvis (OpenClaw) <jarvis@detailinggrowth.com>
…licy) (#10)

* chore: T3 Turbo branding per fork policy + release naming + skip npm publish

- Brand all user-facing surfaces T3 Turbo (desktop app, web shell, relay, installer productName)
- Nightly releases named 'T3 Turbo MM-DD-YY' (date = 11PM ET ingestion cutoff)
- Installer artifact name T3-Turbo-<version>-<arch>.exe
- Remove npm publish job (policy: skip NPM publishing); unblocks GitHub Release + web deploy
- Legacy userData migration paths preserved

* style: fix release.yml formatting after publish job removal

* test: update release smoke expectations for T3 Turbo MM-DD-YY naming

* fix(branding): rename legacy userData dir to T3 Turbo (Dev/Alpha)

---------

Co-authored-by: Jarvis <jarvis@t3turbo.pro>
Co-authored-by: Jarvis <jarvis@openclaw.local>
* chore: brand web + server CLI surfaces as T3 Turbo (sidebar, splash, dialogs, CLI output)

* style: fix formatting in KeybindingsSettings.tsx

---------

Co-authored-by: Jarvis <jarvis@t3turbo.pro>
Co-authored-by: Jarvis (OpenClaw) <jarvis@openclaw.local>
…n Windows

Windows builds skipped the t3code:// scheme registration that mac and
linux already had, so browser OAuth callbacks could not return to the
app, and shortcut creation relied on NSIS defaults that a prior install
lost. Declare the protocols for the NSIS installer and force desktop
plus start-menu shortcuts.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…loyment

The self-host relay runbook told operators to apply the relay SQL
migrations without giving a procedure, and the external-database deploy
path never applies them itself - a fresh fork relay 500s on every
persistence call. Document the manual application with runner-compatible
bookkeeping, add a runbook for deploying the hosted web app to
Cloudflare Workers (build flags, custom domain, Clerk allowed_origins,
Access pitfall), and check in the wrangler config it references.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The self-host material was split across runbooks without saying what
order the pieces must be assembled in, and most of the failure modes
only surface two steps after their cause. Add the ordering guide with
the hard dependency chain (domains -> database+migrations -> Clerk ->
relay -> baked client builds -> hosted app), per-step verification
gates, and a symptom-to-cause index from a real first deployment.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Every chat-header action collapses its text label to sr-only below the
@3xl/header-actions container breakpoint except the not-a-repo
Initialize Git button, which kept its full-width label inside the
shrink-0 actions row. In split chat panes the row's minimum width then
exceeded the pane and the button overflowed into neighboring header UI.
Apply the same container-query collapse the sibling git buttons use.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Markdown links whose destinations used Windows-style backslashes, or
whose exact href the raw-text pre-scan regex missed (titled links,
reference links), fell through to plain external anchors while the same
paths in inline code spans became clickable file chips. Normalize
relative backslash destinations like the inline-code resolver already
does, and give the anchor renderer the same render-time resolver
fallback the code renderer has, so both notations share one detection
path.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
fix(desktop): register t3code protocols and NSIS shortcuts on Windows
fix(web): collapse Initialize Git label in narrow chat headers
fix(web): resolve more agent file references into clickable file chips
docs(operations): relay migration runbook + Cloudflare hosted-app deployment
Copying a link from a browser or chat app often puts the URL text and a
preview image on the clipboard together. The composer's paste handler
saw the image, prevented the default paste to route the file into the
attachment flow, and silently discarded the text half - the pasted link
never entered the message. Expose an insertText handle on the prompt
editor and re-insert the clipboard text after attaching the images.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:S labels Aug 5, 2026

This branch has not been deployed

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

Labels

size:M vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant