Windows-only scope, working hotkeys, and unspooling that pastes - #16
Merged
Merged
Conversation
electron-builder substitutes stock placeholder tiles when build/appx is empty, and those placeholders are the Electron logo. The package built cleanly and would have reached the Store carrying someone else's mark, which is the kind of defect that only shows up if you open the artifact and look at it. The six assets are drawn from the same geometry and palette as build/icon.ico — cream flanges and core, three orange thread bands, on the #171614 ground — so the tiles, the installer icon and the tray icon are one design. Two sizes the defaults omitted, 71x71 and 310x310, are included. STORE.md records what Partner Center has to supply, why the Store build keeps the zero-network guarantee where an auto-updater would not, that arm64 needs the ARM64 MSVC toolset which is not installed here, and the two runtime questions that cannot be answered without an elevated machine. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Two of the four default hotkeys never worked. Probing all twenty-six Win+Alt+<letter> combinations on Windows 11 found thirteen already owned: N is OneNote's Quick Note, and M, R, G, B, T and W belong to the Xbox Game Bar, which ships with Windows. Win+Alt+M was not unlucky, it was dead for nearly every Windows 11 user. Registration had been failing honestly all along and the tray had been saying so, but nobody opens the tray to find out why a key they just pressed did nothing — which is the exact outcome PLAN.md 8 warned about. The keys are reallocated to say what they do: C for clipboard summons, U unspools the next clip, V pastes the whole spool the way Ctrl+V pastes one thing. Unspooling owns the repeat gesture, so pasting everything is not a double-press of anything — a repeated press means "give me the next one", and spending it on "give me everything" would hand that gesture to the action that makes FIFO and LIFO moot. Toggling the mode loses its hotkey entirely and becomes the mode pill: it is something you do while looking at the spool, not while typing elsewhere. But no default can be right on every machine, so the real fix is the rebinding UI PLAN.md 8 asked for and never got. The ? button opens it, carries a count of dead keys, and the footer strikes through any binding the OS refused. Rebinding is two dropdowns and an attempt rather than "press what you want", because the Windows shell eats Win-key presses before a renderer sees them. Ctrl+Alt is offered but is not the default: it measured completely free here and is AltGr abroad, where Ctrl+Alt+C types ć. Also fixes Clear spools, which counted the active spool and then skipped it, so "Clear 1 spool" did nothing when the only unstarred spool was the active one. It now clears the active spool and falls back to the default, because the button states what it spares and must not spare something it does not name. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Serving put the clip on the clipboard and stopped, leaving the user to press Ctrl+V themselves. That is two keystrokes for one intention, and unspooling into a form is the thing this app exists to do. PLAN.md 8 had rejected serve-and-paste, but the reason was entirely a macOS one: synthesizing input there needs Accessibility permission, which is permission to read every keystroke, and an app claiming it cannot spy on you must not ask for it. Windows SendInput is output rather than input and needs no permission, no elevation and no keyboard hook, so the objection does not reach this platform. The three secondary arguments survived the change instead of opposing it: no hook is needed, the clip stays on the clipboard so serve-once-paste-many still works, and the cursor still advances because the user pressed a key. The addon gains sendPaste, which refuses when Spool's own window is in front — pasting into ourselves is never what anyone meant. It is a setting rather than a law, because a synthesized Ctrl+V does nothing in terminals that paste with Ctrl+Shift+V. No new dependency: extending the addon we already own keeps the surface the zero-network gate has to check exactly as narrow as it was. Also records the scope this rests on. macOS is dropped: it costs an Apple membership, a Mac, and a second native clipboard implementation to reach a platform this was never built for, and the Microsoft Store asks nothing about it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Three things, found by using the app rather than by reading it: two of the four hotkeys never worked, Clear spools did nothing in the common case, and serving a clip made you press Ctrl+V yourself.
Two of the four hotkeys were dead on most machines
Probing all twenty-six
Win+Alt+<letter>combinations on Windows 11 found thirteen already owned by other applications:Nis OneNote's Quick Note.M,R,G,B,TandWbelong to the Xbox Game Bar, which ships with Windows — soWin+Alt+Mwas not unlucky, it was dead for nearly every Windows 11 user. Registration had been failing honestly the whole time and the tray had been reporting it, but nobody opens the tray to find out why a key they just pressed did nothing. That is precisely the outcome PLAN.md §8 was written to prevent.The keys now say what they do:
Win+Alt+CWin+Alt+UWin+Alt+VCtrl+Vpastes one thingUnspooling owns the repeat gesture: press
Uagain and again and clips come off in the mode's order. That is why pasting everything is not a double-press of anything — a repeated press means "give me the next one", and spending it on "give me everything at once" would hand the unspool gesture to the one action that makes the ordering moot. Toggling the mode loses its global key entirely; it is something you do while looking at the spool, not while typing somewhere else.But no default can be right on every machine, because which combinations are free depends on what else is installed. So the real fix is the rebinding UI §8 asked for and never got: the
?button opens it, carries a count badge when the OS refuses a key, and the footer strikes through any dead binding. Rebinding is two dropdowns and an attempt rather than "press what you want", because the Windows shell eatsWin-key presses before a renderer ever sees them.Ctrl+Altis offered but is not the default — it measured completely free here and isAltGrabroad, whereCtrl+Alt+Ctypesć.Clear spools counted a spool it then refused to touch
clearSpoolsLabelcounted every unstarred spool including the active one;clearSpoolsfiltered the active one out. With a single unstarred spool that happened to be active, the button said "Clear 1 spool" and did nothing. It now clears the active spool and falls back to the default, because the button states what it spares and must not spare something it does not name.Serving now pastes
PLAN.md §8 had rejected serve-and-paste, but the reason was entirely a macOS one: synthesizing input there needs Accessibility permission — permission to read every keystroke — and an app whose claim is that it cannot spy on you must not ask for it. Windows
SendInputis output, not input: no permission, no elevation, no keyboard hook. The objection does not reach this platform.Its three secondary arguments survived the change rather than opposing it. No hook is needed. The clip stays on the clipboard, so serve-once-paste-into-four-places still works — this adds the first paste rather than removing the others. And the cursor still advances because the user pressed a key.
The addon gains
sendPaste, which refuses when Spool's own window is in front, since pasting into ourselves is never what anyone meant. It is a setting rather than a law, because a synthesizedCtrl+Vdoes nothing in terminals that paste withCtrl+Shift+V. No new dependency — extending the addon we already own keeps the surface the zero-network gate checks exactly as narrow as it was.Scope: this is a Windows application
macOS is dropped. It costs an Apple Developer membership, a Mac to notarize from, and a second native clipboard implementation, to reach a platform this was never being built for — and the Microsoft Store asks nothing about it. Being Windows-only is what makes the paste above defensible, so the two decisions are recorded together. M14 is marked dropped.
Store tiles
electron-builder substitutes placeholder tiles when
build/appxis empty, and those placeholders are the Electron logo — the package built cleanly and would have reached the Store carrying someone else's mark. The six assets are drawn from the same geometry and palette asbuild/icon.ico.STORE.mdrecords what Partner Center must supply, why the Store build keeps the zero-network guarantee where an auto-updater would not, and that arm64 needs the ARM64 MSVC toolset.Verification
393 tests, typecheck, lint, and the zero-network gate pass. Beyond that, in the running app: both artifacts rebuilt, the installer installed, all three hotkeys confirmed live, and
Win+Alt+Upressed three times returnedalpha clip,beta clip,gamma clipin FIFO order, withWin+Alt+Vthen joining the whole spool. Paste-into-another-window was confirmed by spool text appearing in a window it was never typed into.Still open: the MSIX has not been installed and run, which needs Developer Mode or a trusted certificate — both require administrator rights.
🤖 Generated with Claude Code