Branch from: issues/545 (Issue 1's branch)
GitHub dependency: Issue #545 must merge first; stacks on Issue 1.
Architectural refactoring — clipboard write ownership, pre-applied padding, preserver de-nesting. No user-visible behavior changes.
Context
Currently each R-* operation writes to the clipboard twice: once in the calling service (ClipboardRouter) and again inside the insert factory (AIAssistantInsertFactory / TerminalInsertFactory). There are also two nested ClipboardPreserver layers (outer in ClipboardRouter, inner in each factory). This is wasteful and confusing. The refactoring gives ClipboardRouter sole ownership of the clipboard write; insert factories only execute paste commands. Padding is pre-applied at the 4 call sites (LinkGenerator, TextSelectionPaster, FilePathPaster, TerminalSelectionService) so performPaste() is removed. A two-delay model replaces the old single delay: FOCUS_TO_PASTE_DELAY_MS for focus readiness before paste, CLIPBOARD_POST_PASTE_DELAY_MS for webview async clipboard read after paste.
Branch from:
issues/545(Issue 1's branch)GitHub dependency: Issue #545 must merge first; stacks on Issue 1.
Architectural refactoring — clipboard write ownership, pre-applied padding, preserver de-nesting. No user-visible behavior changes.
Context
Currently each R-* operation writes to the clipboard twice: once in the calling service (ClipboardRouter) and again inside the insert factory (AIAssistantInsertFactory / TerminalInsertFactory). There are also two nested ClipboardPreserver layers (outer in ClipboardRouter, inner in each factory). This is wasteful and confusing. The refactoring gives ClipboardRouter sole ownership of the clipboard write; insert factories only execute paste commands. Padding is pre-applied at the 4 call sites (LinkGenerator, TextSelectionPaster, FilePathPaster, TerminalSelectionService) so performPaste() is removed. A two-delay model replaces the old single delay: FOCUS_TO_PASTE_DELAY_MS for focus readiness before paste, CLIPBOARD_POST_PASTE_DELAY_MS for webview async clipboard read after paste.