Skip to content

[issues/559] Fix paste pipeline regression — restore multi-command fallback for AI assistant webview delivery#566

Merged
couimet merged 1 commit into
mainfrom
issues/559
May 14, 2026
Merged

[issues/559] Fix paste pipeline regression — restore multi-command fallback for AI assistant webview delivery#566
couimet merged 1 commit into
mainfrom
issues/559

Conversation

@couimet
Copy link
Copy Markdown
Owner

@couimet couimet commented May 14, 2026

Summary

The "single clipboard write per R-* operation" refactor (PR #556, issues/547) inadvertently reduced a three-command paste fallback chain to a single editor.action.clipboardPasteAction. That command only reaches VS Code text editors — for webview-hosted chat inputs (Claude Code, Cursor AI, GitHub Copilot Chat, custom AI Tier 1/2 webview targets) the system-level fallbacks execPaste / paste were what actually delivered content. Without them the dispatch returned success, but no content arrived in the chat input. This PR restores the fallback chain, logs the successful command for diagnostics, and converts the silent-pass claude-code-004/005 tests to verdict-based assertions so the same class of regression cannot land green in the future.

Changes

  • Renamed src/constants/pasteTimingConstants.tsaiAssistantPasteConstants.ts and added AI_ASSISTANT_PASTE_COMMANDS = ['editor.action.clipboardPasteAction', 'execPaste', 'paste'] alongside the existing delay constants. The file now correctly reflects its scope (was a name-vs-content drift from [issues/547] Single clipboard write per R-* operation #556 that removed the commands).
  • VscodeAdapter.pasteTextFromClipboard() now iterates AI_ASSISTANT_PASTE_COMMANDS and stops on the first success. The command field is included in the Clipboard paste succeeded log so tests can assert which command delivered the paste. Per-command failures log at debug with Paste command failed, trying next; an all-failed path logs at warn with allCommandsFailed: true.
  • Inline JSDoc on pasteTextFromClipboard explains WHY the fallback chain exists — non-obvious enough that the next refactor would otherwise repeat the same mistake.
  • Added assertPasteCommandLogged(lines, { command }) helper to logBasedUiAssertions.ts for integration-test assertions on which paste command succeeded.
  • Updated VscodeAdapter.test.ts pasteTextFromClipboard describe block: 5 tests now cover the fallback chain (first-success, fall-through-to-second, all-fail, default post-paste delay, custom post-paste delay). All assertions include the command field per the test contract.
  • Converted claude-code-004 and claude-code-005 from waitForHuman to waitForHumanVerdict. The silent-pass trap is closed for these specific TCs (broader audit tracked in Silent-pass trap audit — waitForHuman used for visual verification #560). Setup is now programmatic (file open + selection via vscode.workspace.openTextDocument + editor.selection) and the send fires via executeCommand(CMD_COPY_LINK_RELATIVE) rather than asking the human to press the chord.
  • Added the wave-1 Claude Code TCs from Wave 2: Log-based automation for QuickPick and remaining toast TCs #483: claude-code-001 (automated picker-inspection in standardSuite, uses openAndDismiss from [issues/557] Automate 33 assisted integration tests via closeQuickOpen dismissal #561), claude-code-002 (assisted send-delivery with waitForHumanVerdict), and the deletion of claude-code-003 (superseded by claude-code-005's richer warm-path scenario). YAML flips for 001 → automated: true and 002 → automated: assisted.

Key Discoveries

  • The 547 refactor's "Test Plan" claimed pnpm test:release passes — technically true, but the with-extensions tests were not in that baseline AND claude-code-004/005 used waitForHuman (Cancel-to-resolve) rather than waitForHumanVerdict (PASS/FAIL-to-resolve). Code-side log assertions stayed green even though the webview received nothing. The regression therefore landed undetected. The verdict-helper conversion in this PR closes that specific silent-pass trap; the broader audit lives in Silent-pass trap audit — waitForHuman used for visual verification #560.
  • The dummy-ai-extension fixture is already webview-based and exposes dummyAi.getText for reading what landed in the webview textareas — the missing piece for a fully automated webview paste-delivery test. Adding one is blocked on a new programmatic bind command for custom AI assistants (the current bind path requires a human picker selection); that command is out of scope here and will be filed as a follow-up issue.
  • The 547 paste pipeline was audited beyond the bug-fix change: padding is correctly pre-applied at all 4 call sites (LinkGenerator, TextSelectionPaster, FilePathPaster, TerminalSelectionService); the two-delay model is used consistently in the single pasteTextFromClipboard chokepoint; the focusCommands fallback iteration in AIAssistantFocusCapability is intact. No additional regressions found.

Test Plan

  • All existing unit tests pass — 107 suites, 228 tests in VscodeAdapter.test.ts (including 5 new fallback tests), 98.42% statement coverage.
  • pnpm test:release:automated — 165 of 175 passing. The 10 failures are pre-existing flakes (langswitch-binding-*, smart-padding-*, stale-viewcolumn-001) on non-AI-assistant code paths, same as noted in PR [issues/557] Automate 33 assisted integration tests via closeQuickOpen dismissal #561's description. My changes don't touch terminal/editor paste paths.
  • QA coverage validator passes — 121 automated / 115 assisted / 12 false markers all align with integration tests.
  • Assisted verification (definitive bug-fix proof): pnpm test:release:with-extensions --grep "claude-code-00[245]" runs claude-code-002 (cleanest reproduction), claude-code-004 (cold panel paste), and claude-code-005 (cold→warm sequence). Each prompts PASS/FAIL on whether the RangeLink actually arrived in Claude Code's chat input. All three must produce PASS verdicts.
  • CI test-with-extensions job (from [issues/562] Add CI job for integration tests with marketplace extensions #564) runs green on the PR.

Related

Summary by CodeRabbit

  • Bug Fixes

    • Improved clipboard paste reliability for AI assistant destinations with automatic retry logic and optimized timing delays.
  • Tests

    • Enhanced integration tests for Claude Code and AI assistant clipboard operations.
    • Expanded test coverage for paste command success verification and fallback handling.
  • Refactor

    • Reorganized paste timing configuration constants for better maintainability.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 14, 2026

Warning

Rate limit exceeded

@couimet has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 30 minutes and 2 seconds before requesting another review.

You’ve run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: d8da5a80-dc72-48a5-aa17-296b97ae868f

📥 Commits

Reviewing files that changed from the base of the PR and between f6ad9b1 and 18bfc5d.

📒 Files selected for processing (12)
  • packages/rangelink-vscode-extension/qa/qa-test-cases-v1.1.0.yaml
  • packages/rangelink-vscode-extension/src/__integration-tests__/helpers/index.ts
  • packages/rangelink-vscode-extension/src/__integration-tests__/helpers/logBasedUiAssertions.ts
  • packages/rangelink-vscode-extension/src/__integration-tests__/suite/builtInAiAssistants.test.ts
  • packages/rangelink-vscode-extension/src/__tests__/destinations/ComposablePasteDestination.integration.test.ts
  • packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/insertFactories/aiAssistantInsertFactory.test.ts
  • packages/rangelink-vscode-extension/src/__tests__/ide/vscode/VscodeAdapter.test.ts
  • packages/rangelink-vscode-extension/src/constants/aiAssistantPasteConstants.ts
  • packages/rangelink-vscode-extension/src/constants/index.ts
  • packages/rangelink-vscode-extension/src/constants/pasteTimingConstants.ts
  • packages/rangelink-vscode-extension/src/destinations/capabilities/insertFactories/aiAssistantInsertFactory.ts
  • packages/rangelink-vscode-extension/src/ide/vscode/VscodeAdapter.ts

Walkthrough

This PR refactors the AI assistant clipboard-paste flow by introducing multi-command iteration with pre and post delays. Constants are reorganized into a dedicated AI assistant paste module, VscodeAdapter.pasteClipboardToAiAssistant() replaces the single-command paste, and test coverage is updated throughout. Integration tests shift from manual key chords to programmatic commands.

Changes

AI Assistant Clipboard Paste Flow

Layer / File(s) Summary
Paste timing and command constants
src/constants/aiAssistantPasteConstants.ts, src/constants/index.ts, src/constants/pasteTimingConstants.ts
New aiAssistantPasteConstants module exports pre-paste delay, post-paste delay, and an ordered list of fallback paste commands (editor.action.clipboardPasteActionexecPastepaste). Previous pasteTimingConstants module is deprecated and re-export removed from constants index.
VscodeAdapter clipboard-to-AI-assistant implementation
src/ide/vscode/VscodeAdapter.ts, src/__tests__/ide/vscode/VscodeAdapter.test.ts
New pasteClipboardToAiAssistant(postPasteDelayMs?) method replaces pasteTextFromClipboard(). Iterates through paste commands with fallback logic, enforces pre-paste delay, logs per-command outcomes, returns true on first success, applies post-paste delay, and returns false only after all commands fail. Test suite verifies delay sequencing, command iteration order, fallback behavior, and logging payloads.
Factory and destination integration
src/destinations/capabilities/insertFactories/aiAssistantInsertFactory.ts, src/__tests__/destinations/capabilities/insertFactories/aiAssistantInsertFactory.test.ts, src/__tests__/destinations/ComposablePasteDestination.integration.test.ts
AIAssistantInsertFactory calls ideAdapter.pasteClipboardToAiAssistant() instead of pasteTextFromClipboard(). Related factory and destination integration tests updated to spy on and assert the new method.
Integration test helper and assertions
src/__integration-tests__/helpers/logBasedUiAssertions.ts, src/__integration-tests__/helpers/index.ts
New assertPasteCommandLogged() helper verifies a log line indicates successful clipboard paste to AI assistant by matching message and command field against expected value. Re-exported from helpers index.
Integration and QA test updates
src/__integration-tests__/suite/builtInAiAssistants.test.ts, qa/qa-test-cases-v1.1.0.yaml
builtInAiAssistants.test.ts replaces manual key-chord prompting with programmatic CMD_COPY_LINK_RELATIVE sends, adds human verdicts via waitForHumanVerdict(), asserts bind status messages, and validates paste logs using new assertion helper. Local constants for AI Assistants group label and Claude Code display name introduced. QA YAML updates claude-code-001 automation from false to true and claude-code-002 from false to assisted.

Sequence Diagram

sequenceDiagram
    participant Test as Integration Test
    participant Adapter as VscodeAdapter
    participant VSCode as VS Code Commands
    participant Webview as AI Assistant Webview

    Test->>Adapter: pasteClipboardToAiAssistant()
    Adapter->>Adapter: wait FOCUS_TO_PASTE_DELAY_MS
    loop For each command in AI_ASSISTANT_PASTE_COMMANDS
        Adapter->>VSCode: dispatch editor.action.clipboardPasteAction
        alt Command succeeds
            VSCode-->>Adapter: resolved
            Adapter->>Webview: clipboard content pasted
            Adapter->>Adapter: wait CLIPBOARD_POST_PASTE_DELAY_MS
            Adapter-->>Test: return true
        else Command fails
            VSCode-->>Adapter: rejected
            Adapter->>Adapter: try next command in sequence
        end
    end
    alt All commands failed
        Adapter->>Adapter: log warning
        Adapter-->>Test: return false
    end
Loading

Estimated Code Review Effort

🎯 3 (Moderate) | ⏱️ ~30 minutes

Possibly Related Issues

Poem

🐰 A multi-command hop through the paste commands we go,
Delay before, delay after, let the webviews flow,
From editor to fallback, each step tried with care,
AI assistants now paste with precision and flair! 🎯✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: restoring a multi-command fallback for AI assistant paste delivery, which directly relates to the primary code changes throughout the PR.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch issues/559

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 14, 2026

⚠️ QA Coverage Gap Detected

The PR introduces changes to the behavior of the Claude Code Chat integration, specifically regarding clipboard pasting and the logging of paste commands. There are also updates to test cases related to these features.

Suggested test cases:

  • Built-in AI Assistants: Verify clipboard content is pasted into Claude Code Chat after binding (manual — Requires verification of the content in the Claude Code Chat panel, which cannot be automated due to UI interaction limitations.)
  • Built-in AI Assistants: Check that paste command logging works correctly for AI Assistants (automatable)

Generated by QA Gap Check (GPT-4o-mini via GitHub Models)

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
packages/rangelink-vscode-extension/src/__tests__/ide/vscode/VscodeAdapter.test.ts (1)

780-912: ⚡ Quick win

Replace repeated semantic delay literals with named constants.

The new tests hardcode 200 in multiple places; use SCREAMING_SNAKE_CASE constants (or import paste-delay constants) to keep assertions resilient and guideline-compliant.

Proposed cleanup
 describe('pasteClipboardToAiAssistant', () => {
+  const PRE_PASTE_DELAY_MS = 200;
+  const DEFAULT_POST_PASTE_DELAY_MS = 200;
+
   it('should enforce 200 pre-paste delay and dispatch the first command on success', async () => {
@@
       expect(callOrder).toStrictEqual([
-        'delay-200',
+        `delay-${PRE_PASTE_DELAY_MS}`,
         'cmd-editor.action.clipboardPasteAction',
-        'delay-200',
+        `delay-${DEFAULT_POST_PASTE_DELAY_MS}`,
       ]);
@@
-          delay: 200,
-          prePasteDelay: 200,
+          delay: PRE_PASTE_DELAY_MS,
+          prePasteDelay: PRE_PASTE_DELAY_MS,
@@
-          delay: 200,
-          prePasteDelay: 200,
+          delay: DEFAULT_POST_PASTE_DELAY_MS,
+          prePasteDelay: PRE_PASTE_DELAY_MS,

As per coding guidelines, "Define named constants for all numeric literals with semantic meaning using SCREAMING_SNAKE_CASE".

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@packages/rangelink-vscode-extension/src/__tests__/ide/vscode/VscodeAdapter.test.ts`
around lines 780 - 912, Replace the hardcoded 200 ms literals in these tests
with a named constant (e.g., PRE_PASTE_DELAY_MS or DEFAULT_PRE_PASTE_DELAY_MS)
or import the existing paste-delay constants and use them in expectations and
spy calls related to adapter.pasteClipboardToAiAssistant; update references in
assertions that check delay calls, callOrder entries that expect 'delay-200',
and logger expects (where delay: 200 or prePasteDelay: 200) so they assert
against the constant instead of the numeric literal while keeping identifiers
like pasteClipboardToAiAssistant, adapter.delay, delaySpy, and mockLogger
unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In
`@packages/rangelink-vscode-extension/src/__tests__/ide/vscode/VscodeAdapter.test.ts`:
- Around line 780-912: Replace the hardcoded 200 ms literals in these tests with
a named constant (e.g., PRE_PASTE_DELAY_MS or DEFAULT_PRE_PASTE_DELAY_MS) or
import the existing paste-delay constants and use them in expectations and spy
calls related to adapter.pasteClipboardToAiAssistant; update references in
assertions that check delay calls, callOrder entries that expect 'delay-200',
and logger expects (where delay: 200 or prePasteDelay: 200) so they assert
against the constant instead of the numeric literal while keeping identifiers
like pasteClipboardToAiAssistant, adapter.delay, delaySpy, and mockLogger
unchanged.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 8dd22e80-f348-451e-a6c1-4fe4049e28d3

📥 Commits

Reviewing files that changed from the base of the PR and between b818dd1 and f6ad9b1.

📒 Files selected for processing (12)
  • packages/rangelink-vscode-extension/qa/qa-test-cases-v1.1.0.yaml
  • packages/rangelink-vscode-extension/src/__integration-tests__/helpers/index.ts
  • packages/rangelink-vscode-extension/src/__integration-tests__/helpers/logBasedUiAssertions.ts
  • packages/rangelink-vscode-extension/src/__integration-tests__/suite/builtInAiAssistants.test.ts
  • packages/rangelink-vscode-extension/src/__tests__/destinations/ComposablePasteDestination.integration.test.ts
  • packages/rangelink-vscode-extension/src/__tests__/destinations/capabilities/insertFactories/aiAssistantInsertFactory.test.ts
  • packages/rangelink-vscode-extension/src/__tests__/ide/vscode/VscodeAdapter.test.ts
  • packages/rangelink-vscode-extension/src/constants/aiAssistantPasteConstants.ts
  • packages/rangelink-vscode-extension/src/constants/index.ts
  • packages/rangelink-vscode-extension/src/constants/pasteTimingConstants.ts
  • packages/rangelink-vscode-extension/src/destinations/capabilities/insertFactories/aiAssistantInsertFactory.ts
  • packages/rangelink-vscode-extension/src/ide/vscode/VscodeAdapter.ts
💤 Files with no reviewable changes (1)
  • packages/rangelink-vscode-extension/src/constants/pasteTimingConstants.ts

…llback for AI assistant webview delivery

## Summary

The "single clipboard write per R-* operation" refactor (PR #556, `issues/547`) inadvertently reduced a three-command paste fallback chain to a single `editor.action.clipboardPasteAction`. That command only reaches VS Code text editors — for webview-hosted chat inputs (Claude Code, Cursor AI, GitHub Copilot Chat, custom AI Tier 1/2 webview targets) the system-level fallbacks `execPaste` / `paste` were what actually delivered content. Without them the dispatch returned success, but no content arrived in the chat input. This PR restores the fallback chain, logs the successful command for diagnostics, and converts the silent-pass `claude-code-004/005` tests to verdict-based assertions so the same class of regression cannot land green in the future.

## Changes

- Renamed `src/constants/pasteTimingConstants.ts` → `aiAssistantPasteConstants.ts` and added `AI_ASSISTANT_PASTE_COMMANDS = ['editor.action.clipboardPasteAction', 'execPaste', 'paste']` alongside the existing delay constants. The file now correctly reflects its scope (was a name-vs-content drift from #556 that removed the commands).
- `VscodeAdapter.pasteTextFromClipboard()` now iterates `AI_ASSISTANT_PASTE_COMMANDS` and stops on the first success. The `command` field is included in the `Clipboard paste succeeded` log so tests can assert which command delivered the paste. Per-command failures log at `debug` with `Paste command failed, trying next`; an all-failed path logs at `warn` with `allCommandsFailed: true`.
- Inline JSDoc on `pasteTextFromClipboard` explains WHY the fallback chain exists — non-obvious enough that the next refactor would otherwise repeat the same mistake.
- Added `assertPasteCommandLogged(lines, { command })` helper to `logBasedUiAssertions.ts` for integration-test assertions on which paste command succeeded.
- Updated `VscodeAdapter.test.ts` `pasteTextFromClipboard` describe block: 5 tests now cover the fallback chain (first-success, fall-through-to-second, all-fail, default post-paste delay, custom post-paste delay). All assertions include the `command` field per the test contract.
- Converted `claude-code-004` and `claude-code-005` from `waitForHuman` to `waitForHumanVerdict`. The silent-pass trap is closed for these specific TCs (broader audit tracked in #560). Setup is now programmatic (file open + selection via `vscode.workspace.openTextDocument` + `editor.selection`) and the send fires via `executeCommand(CMD_COPY_LINK_RELATIVE)` rather than asking the human to press the chord.
- Added the wave-1 Claude Code TCs from #483: `claude-code-001` (automated picker-inspection in `standardSuite`, uses `openAndDismiss` from #561), `claude-code-002` (assisted send-delivery with `waitForHumanVerdict`), and the deletion of `claude-code-003` (superseded by `claude-code-005`'s richer warm-path scenario). YAML flips for 001 → `automated: true` and 002 → `automated: assisted`.

## Key Discoveries

- The 547 refactor's "Test Plan" claimed `pnpm test:release passes` — technically true, but the with-extensions tests were not in that baseline AND `claude-code-004/005` used `waitForHuman` (Cancel-to-resolve) rather than `waitForHumanVerdict` (PASS/FAIL-to-resolve). Code-side log assertions stayed green even though the webview received nothing. The regression therefore landed undetected. The verdict-helper conversion in this PR closes that specific silent-pass trap; the broader audit lives in #560.
- The `dummy-ai-extension` fixture is already webview-based and exposes `dummyAi.getText` for reading what landed in the webview textareas — the missing piece for a fully automated webview paste-delivery test. Adding one is blocked on a new programmatic bind command for custom AI assistants (the current bind path requires a human picker selection); that command is out of scope here and will be filed as a follow-up issue.
- The 547 paste pipeline was audited beyond the bug-fix change: padding is correctly pre-applied at all 4 call sites (`LinkGenerator`, `TextSelectionPaster`, `FilePathPaster`, `TerminalSelectionService`); the two-delay model is used consistently in the single `pasteTextFromClipboard` chokepoint; the `focusCommands` fallback iteration in `AIAssistantFocusCapability` is intact. No additional regressions found.

## Test Plan

- [x] All existing unit tests pass — 107 suites, 228 tests in `VscodeAdapter.test.ts` (including 5 new fallback tests), 98.42% statement coverage.
- [x] `pnpm test:release:automated` — 165 of 175 passing. The 10 failures are pre-existing flakes (`langswitch-binding-*`, `smart-padding-*`, `stale-viewcolumn-001`) on non-AI-assistant code paths, same as noted in PR #561's description. My changes don't touch terminal/editor paste paths.
- [x] QA coverage validator passes — 121 automated / 115 assisted / 12 false markers all align with integration tests.
- [ ] **Assisted verification (definitive bug-fix proof):** `pnpm test:release:with-extensions --grep "claude-code-00[245]"` runs `claude-code-002` (cleanest reproduction), `claude-code-004` (cold panel paste), and `claude-code-005` (cold→warm sequence). Each prompts PASS/FAIL on whether the RangeLink actually arrived in Claude Code's chat input. All three must produce PASS verdicts.
- [ ] CI `test-with-extensions` job (from #564) runs green on the PR.

## Related

- Closes #559
- Resolves the regression introduced by #556
- Companion to #560 (silent-pass-trap audit) — this PR fixes the 547-introduced subset (`claude-code-004/005`); the broader audit remains open.
- Folds in the Wave-1 Claude Code work from #483 (`claude-code-001` / `claude-code-002` integration tests + the `claude-code-003` deletion).
- Complements #563 — this PR fixes the bug; #563 backfills coverage that would have caught it. They land independently; whichever merges first, the other rebases.
- Follow-up issue to be filed: a programmatic bind command for custom AI assistants (currently the bind path requires a human picker selection), which would unblock a fully automated webview paste-delivery test using the dummy-ai-extension's `dummyAi.getText` reader.
@couimet couimet merged commit 2b2db26 into main May 14, 2026
4 checks passed
@couimet couimet deleted the issues/559 branch May 14, 2026 01:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

issues/547 regression — paste-to-AI-assistant logs success but webview receives nothing

1 participant