Skip to content

File actions, in-app auto-update, and titlebar focus-bug fix#4

Merged
sethbang merged 17 commits into
mainfrom
feat/file-actions-and-auto-update
May 19, 2026
Merged

File actions, in-app auto-update, and titlebar focus-bug fix#4
sethbang merged 17 commits into
mainfrom
feat/file-actions-and-auto-update

Conversation

@sethbang
Copy link
Copy Markdown
Owner

Summary

  • Copy Markdown Source (⌘⇧C) — copies the file's raw Markdown to the clipboard, read fresh from disk. In the File menu and the preview right-click menu.
  • Reveal in Finder (⌘⇧R) — reveals the current file in Finder. In the File menu and the preview right-click menu.
  • Preview context menu — new MarkeeWebView (WKWebView subclass) appends the two commands to the native right-click menu.
  • In-app auto-update — new Updater: checks the GitHub Releases API on launch (throttled to once/24h) and via "Check for Updates…" in the app menu; on a newer release it downloads Markee.app.zip, unzips with ditto, validates the bundle, strips the quarantine xattr, and a detached helper swaps the running bundle and relaunches. Falls back to opening the release page when the install path isn't writable.
  • Bug fix — the custom titlebar vanished after a window focus loss/regain. AppKit resets titlebarAppearsTransparent to false during reactivation; WindowAccessor now KVO-observes the property and re-applies the config synchronously whenever it's clobbered.

Grouped/tabbed windows were considered and deferred. The app remains ad-hoc signed (not notarized), so the updater stays out of Sparkle's path and strips quarantine itself.

Test Plan

  • make test — 43 Swift + 24 Node tests pass
  • Titlebar fix verified manually: custom titlebar stays through repeated focus loss/regain cycles
  • Copy Markdown Source / Reveal in Finder via menu and right-click
  • Full update flow end-to-end: temporarily lower CFBundleShortVersionString, run, Check for Updates → Update Now → confirm download/swap/relaunch with no Gatekeeper prompt and no leftover Markee.app.old

🤖 Generated with Claude Code

sethbang and others added 16 commits May 18, 2026 20:24
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… cleanup, wait cap, non-dismissable panel

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…sion

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
AppKit resets `titlebarAppearsTransparent` to `false` during window
reactivation — a beat after the didBecomeKey/didBecomeMain notifications
fire — which lets the opaque system titlebar overdraw the custom one.
Re-applying on those notifications loses the race.

WindowAccessor now KVO-observes `titlebarAppearsTransparent` and
re-applies the window config synchronously whenever the property is
knocked back to `false`, regardless of when AppKit does it. KVO
callbacks run synchronously inside the property-set, so the value is
corrected within the same runloop turn, before the window draws.

Also: make `configureWindow` skip reassigning `styleMask` when it is
already correct (avoids needless NSThemeFrame rebuilds now that the
config re-applies on activation).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@cloudflare-workers-and-pages
Copy link
Copy Markdown

cloudflare-workers-and-pages Bot commented May 19, 2026

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
markee 41b8329 Commit Preview URL

Branch Preview URL
May 19 2026, 04:10 AM

SwiftLint --strict (run in CI) flags `String.data(using:)!` via the
non_optional_string_data_conversion rule. Switch the two JSON-fixture
literals to `Data(string.utf8)`.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@sethbang sethbang merged commit 4874a0a into main May 19, 2026
4 checks passed
@sethbang sethbang deleted the feat/file-actions-and-auto-update branch May 19, 2026 04:33
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