github tqmane/gunshot v0.3.1

2 hours ago

Gunshot v0.3.1

This release improves backup reliability for large photo libraries, resolves critical crashes during uploads, and ensures edited media and RAW pairs are handled correctly.

Bug Fixes

  • Fix edited photos backing up as originals (#69): Prioritize current full-size PhotoKit resources (crops, adjustments, portrait effects) without re-encoding, preventing duplicate uploads in Google Photos.
  • Fix EXC_BAD_ACCESS / SIGSEGV crashes during chunked uploads (#70): Resolve object-lifetime and NSError autorelease pool issues in GunshotJailed.dylib.
  • Fix upload queue halting at 10,000 items (#71): The 10k limit now strictly applies to active/unfinished jobs instead of total history. Libraries with over 10,000 items can now back up continuously without manual queue clearing.

Media Handling

  • RAW + JPEG/HEIC:
    • Upload both RAW and rendered images as distinct assets under a single unified job progress tracker.
    • Prevent RAW+JPEG assets from being misidentified as Live Photos.
  • Live Photos:
    • Ensure edited Live Photos pair the edited still image with its corresponding edited video component.
    • Incomplete resource pairs now fail explicitly instead of silently falling back to unedited originals.

Improvements & Compatibility

  • Jailed / LiveContainer:
    • Improve Keychain initialization and Google account persistence.
    • Bundle official Cydia Substrate arm64 runtime into the Jailed .deb (standalone GunshotJailed.dylib remains dependency-free).
  • UI & Docs:
    • Add Discord community link under GoToHP settings.
    • Update Japanese localization and installation guides.
    • Expand test coverage across failure handling and large queue sizes.

Installation Notes

  • Sideloadly: The Jailed .deb bundles Substrate. Disable Sideloadly's Cydia Substrate, Substitute, and Sideload Spoofer options.
  • LiveContainer: Use the standalone GunshotJailed.dylib.
  • Note: Jailed environments still require Google Photos to remain in the foreground during backup.

大規模ライブラリにおけるバックアップの安定性向上、アップロード時のクラッシュ修正、編集済みメディアおよびRAWペアの処理改善を行いました。

バグ修正

  • 編集済み写真がオリジナルとしてバックアップされる問題を修正 (#69)
    • トリミングやポートレート効果などのPhotoKitリソースを再エンコードなしで優先取得し、Googleフォト側での重複アップロードを防止。
  • 分割アップロード時の EXC_BAD_ACCESS / SIGSEGV クラッシュを修正 (#70)
    • GunshotJailed.dylib におけるオブジェクト生存期間および NSError の autorelease pool 管理を是正。
  • アップロード履歴が1万件に達すると処理が停止する問題を修正 (#71)
    • 10,000件の上限を履歴全体ではなく「未完了ジョブ」のみに限定。大規模ライブラリでも履歴削除を行わずに継続バックアップが可能に。

メディア処理の改善

  • RAW + JPEG/HEIC:
    • RAWと現像済み画像を単一のジョブ内で進捗管理しつつ、個別アセットとしてアップロード。
    • RAW+JPEG の組み合わせが Live Photos として誤認識される問題を修正。
  • Live Photos:
    • 編集済み Live Photos において、編集後の静止画と対応する編集後動画を正しくペアリング。
    • リソースの不整合や欠落がある場合、未編集の元データへサイレントフォールバックせず明示的にエラーを返すよう変更。

互換性およびその他の改善

  • Jailed / LiveContainer:
    • キーチェーン初期化およびGoogleアカウントの保持処理を改善。
    • Jailed 版 .deb に Cydia Substrate (arm64) を同梱(単体 GunshotJailed.dylib は依存関係なしを維持)。
  • UI・ドキュメント:
    • GoToHP 設定画面の開発者セクションに Discord リンクを追加。
    • 日本語ローカライズおよび導入ドキュメントの更新。
    • 失敗時ハンドリングや大規模キュー処理に関する自動テストを拡充。

インストール時の注意点

  • Sideloadly: Jailed 版 .deb に Substrate が同梱されているため、Sideloadly 側の Cydia Substrate / Substitute / Sideload Spoofer オプションは無効化してください。
  • LiveContainer: 単体の GunshotJailed.dylib を使用してください。
  • ※ Jailed 環境では、バックアップ実行中に Google フォトをフォアグラウンドに維持する必要があります。

変更履歴: v0.3.0...v0.3.1 (PR: #72)

Don't miss a new gunshot release

NewReleases is sending notifications on new releases.