Skip to content

Charmera v1.3.0

Choose a tag to compare

@timncox timncox released this 02 May 22:23
· 46 commits to main since this release

The agentic release. Charmera now ships an MCP server alongside the menu-bar app, so Claude can drive the camera-import pipeline directly.

New

  • charmera-mcp server (/Applications/Charmera.app/Contents/MacOS/charmera-mcp) — 12 tools covering camera detection, file copy, photo + video orientation review, gallery push, and Photos.app delegation. Register with Claude Code via claude mcp add charmera /Applications/Charmera.app/Contents/MacOS/charmera-mcp.
  • Curated import flow. prepare_camera_import copies from the camera without auto-orienting or uploading. The model can then read_photo / read_video_frame each file, call rotate_photo / rotate_video where needed, and finish with push_to_gallery + import_to_photos.
  • Video orientation auto-detection. convertAVItoMP4 now samples the first frame, runs the same Vision-based orientation detector used for stills, and bakes the rotation into the ffmpeg re-encode via -vf transpose. The Charmera has no accelerometer, so videos previously shipped sideways forever — they don't anymore.
  • Photos.app delegation from MCP. A new --import-photos <paths…> CLI mode on the main app lets the MCP helper push to Photos.app without claiming its own TCC scope.

Fixes

  • Review rotate-collision corruption. The Review window's resolveRepoPath keyed its data.json lookup off the local file's current size, but Step 1 of applyChanges already rotated the file in place — so the post-rotation size missed the mapping and rotated content got written to the wrong remote file (e.g. today's PICT0040_2026-05-02.jpg rotation overwriting an unrelated April 4 PICT0040.jpg). Fixed by snapshotting originalSize at ReviewPhoto.init.
  • Keychain partition list. KeychainHelper.save now whitelists any tool signed by the team via security set-key-partition-list, so the bundled charmera-mcp reads tokens without ACL prompts.

Refactor

  • Code split into a CharmeraCore SwiftPM library shared by Charmera.app and charmera-mcp. No behavior change — sets up the foundation for the helper.

Upgrade notes

  • brew upgrade --cask charmera (cask bumped to 1.3.0).
  • Existing keychain items were saved before the partition-list relax. If charmera-mcp prompts you for keychain access on first call, click Always Allow once or run:
    security set-key-partition-list -S apple-tool:,apple:,teamid:P5EK689L33 -s com.charmera.app -a github_token
    security set-key-partition-list -S apple-tool:,apple:,teamid:P5EK689L33 -s com.charmera.app -a github_username
    
    Re-authing in the menu-bar app would also do it.