Skip to content

fix(app): dead ⌘V — accessory app had no main menu to route edit shortcuts - #242

Merged
initcore0 merged 1 commit into
mainfrom
fix/edit-menu
Aug 2, 2026
Merged

fix(app): dead ⌘V — accessory app had no main menu to route edit shortcuts#242
initcore0 merged 1 commit into
mainfrom
fix/edit-menu

Conversation

@initcore0

Copy link
Copy Markdown
Owner

Reported: paste doesn't work in the Scratchpad. Root cause: NSApp.mainMenu was never set, and macOS routes ⌘V/⌘C/⌘X/⌘A/⌘Z through the main menu's key equivalents — so edit shortcuts were dead in EVERY window, latently, since day one. Fix: invisible standard App+Edit main menu with responder-chain selectors. 2305 tests green, clean build.

🤖 Generated with Claude Code

…nywhere

The accessory app never set NSApp.mainMenu; macOS routes standard edit
key equivalents through it, so paste was dead in every window (reported
in the Scratchpad; latent app-wide since day one). Add the invisible
standard main menu (App+Edit) with responder-chain selectors.

Co-Authored-By: Claude <noreply@anthropic.com>
@initcore0
initcore0 merged commit 79617ce into main Aug 2, 2026
initcore0 added a commit that referenced this pull request Aug 4, 2026
…cratchpad editor (#245)

Adds the 2026-08 release entry covering everything shipped after the
2026-07 entry (v1.0.19 → v1.1.0+177), and re-renders changelog.html from
the JSON.

18 entries — 9 features, 6 fixes, 3 improvements — verified against
`git log v1.0.18+173..v1.1.0+177`, docs/PLUGINS.md, and the manifest in
PluginRegistry.swift rather than from PR intent.

The lead story is the plugin system (#244 / MAK-100) split into three
entries, because "there are plugins now", "the first one makes memes",
and "you can drive it hands-free from refine" are three different things
a reader needs:

- Plugins are opt-in twice over — the pane defaults to nothing enabled,
  and the entry says so, along with the networkHosts disclosure being a
  label rather than a sandbox (the honest limit docs/PLUGINS.md states).
- The meme entry discloses the only network use: api.imgflip.com,
  i.imgflip.com and api.memegen.link serve the blank template image;
  captioning and rendering are local, and imported templates need no
  network at all. memegen.link's server-side captioning is deliberately
  unused, and the entry doesn't claim capability the plugin declines.
- The voice-command entry spells out both flows (selection vs. spoken
  remainder), the EN + RU triggers, and the strict prefix/word-boundary
  matching — the reason "create a memo about Q3" is never eaten.

Remaining entries cover the Scratchpad quality editor (MAK-95/96/97),
in-note find (#240), AI actions + file-transcript import (MAK-98/99),
model-readiness UX (MAK-94), the stream-overlay counter (#232), and the
fixes: vocabulary substitutions before translation (#238), ru/uk
detection (#235/#238), app-wide ⌘V (#242), per-keystroke Scratchpad
saves, "Model: Not checked", and the "in 0s" timestamp.

Every `howTo.availability` is "live" — each was checked against the
shipping code path, per the truth contract in docs/changelog/README.md.

stats.testsPassing = 2685 is the measured `swift test` count on this
tree, not a carried-forward number.

changelog.html renders only the latest release (its established
behavior), so July's entries move out of the reference render and stay
canonical in the JSON. The <style> block and page skeleton are
byte-identical; only the content under div.wrap is regenerated.

Gates: swift test 2685 passing, 0 failures (docs-only change — untouched).

Co-authored-by: Claude <noreply@anthropic.com>
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.

1 participant