Skip to content

fix: remove broken ad-hoc codesign + halve build time via single universal archive - #4

Merged
tukuyomil032 merged 2 commits into
mainfrom
fix/release-codesign-and-build-speed
Jun 5, 2026
Merged

fix: remove broken ad-hoc codesign + halve build time via single universal archive#4
tukuyomil032 merged 2 commits into
mainfrom
fix/release-codesign-and-build-speed

Conversation

@tukuyomil032

@tukuyomil032 tukuyomil032 commented Jun 5, 2026

Copy link
Copy Markdown
Owner

Summary

  • Fix 'damaged or incomplete' Gatekeeper error: Remove codesign --force --deep --sign - from Create DMGs step. Ad-hoc signing with --deep creates an invalid signature chain that macOS Sequoia treats as 'damaged', blocking app launch even after quarantine removal. Leaving the app unsigned results in the bypassable 'unidentified developer' dialog instead.
  • Halve build time (~12 min → ~6 min): Remove separate arm64 xcodebuild archive step. Derive arm64 via lipo -thin arm64 from the universal archive — same approach already used for x86_64. Only one full compile (universal) is now needed per release run.
  • Add DerivedData cache for Release builds: Separate cache key from Debug CI (-release- suffix) to avoid cross-contamination. Speeds up re-runs after hotfix pushes.

Test plan

  • Trigger workflow_dispatch with version=v0.3.0-beta-2 and verify build completes in ~6 min
  • Confirm "Build arm64 archive" step is gone, "Create arm64/x86_64 archive from universal" steps appear
  • Confirm no codesign/spctl warnings in Create DMGs
  • brew upgrade --cask perch-beta and verify app opens without prohibition sign

🤖 Generated with Claude Code

Summary by CodeRabbit

リリースノート

  • Chores
    • ビルドおよびリリースワークフローの最適化を実施しました。キャッシュメカニズムの改善とビルドプロセスの簡素化により、リリースパイプラインの効率を向上させています。

※ このリリースに含まれる変更はビルドプロセスの内部最適化であり、ユーザーが直接体験される機能的な変更はありません。

…DerivedData cache

- Remove codesign --force --deep from Create DMGs: was creating invalid signature causing 'damaged' Gatekeeper error on macOS Sequoia even after quarantine removal
- Remove separate arm64 xcodebuild archive: derive arm64 via lipo -thin from universal instead (same approach as x86_64), halving total compile time ~12min -> ~6min
- Add DerivedData cache for Release builds (separate key from Debug CI)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings June 5, 2026 07:01
@coderabbitai

coderabbitai Bot commented Jun 5, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@tukuyomil032, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 46 minutes and 51 seconds. Learn how PR review limits work.

Your organization has run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: a69afc1b-1c68-4dad-bb4b-c532ff1850a0

📥 Commits

Reviewing files that changed from the base of the PR and between 6bb46f9 and 67f97c4.

📒 Files selected for processing (1)
  • .github/workflows/release.yml
📝 Walkthrough

Walkthrough

リリースワークフローがDerivedDataキャッシュの活用によりビルド時間を短縮し、arm64アーカイブ生成をlipo統合へ統一し、DMG作成前のコード署名検証処理を削除して構成が簡素化されました。

Changes

リリースワークフロー最適化

Layer / File(s) Summary
DerivedDataキャッシュ設定
.github/workflows/release.yml
actions/cache@v4でDerivedDataをキャッシュキー(perch.xcodeproj/project.pbxprojハッシュ)に基づいて保存・復元し、Xcodeビルド前に実行してビルド高速化。
アーカイブ生成とarm64抽出の統一
.github/workflows/release.yml
arm64専用ビルドステップを削除してユニバーサルアーカイブへ集約し、findとfile判定で対象バイナリを抽出してlipo -thin arm64でarm64アーカイブを生成する統一処理を導入。
コード署名検証ステップの削除
.github/workflows/release.yml
DMG作成前のcodesign強制署名、codesign検証、spctl Gatekeeper評価ブロックを削除し、hdiutil createへ直接遷移。

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 キャッシュも追加、lipoで統一、
署名の検証は削り去って、
ワークフローはシンプルに、
ビルドはすばやく、
リリースの道がスムーズに✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed PRタイトルは、主な変更点(ad-hocコードサイン削除とユニバーサルアーカイブによるビルド時間短縮)を明確かつ具体的に要約しており、変更セットの主要な目的を正確に反映している。
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/release-codesign-and-build-speed

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adjusts the macOS release workflow to avoid broken ad-hoc deep signing (which can trigger Gatekeeper “damaged or incomplete” errors) and to speed up release builds by compiling only once and deriving per-arch archives from a universal archive.

Changes:

  • Add a Release-specific DerivedData cache entry to speed up reruns.
  • Remove the separate arm64 xcodebuild archive and instead create arm64/x86_64 archives by thinning the universal archive with lipo.
  • Remove ad-hoc codesign --deep and associated spctl verification from the DMG staging step.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +30 to +32
path: ~/Library/Developer/Xcode/DerivedData
key: ${{ runner.os }}-derived-data-release-${{ hashFiles('perch.xcodeproj/project.pbxproj') }}
restore-keys: |
Comment thread .github/workflows/release.yml Outdated
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@tukuyomil032
tukuyomil032 merged commit cdd5234 into main Jun 5, 2026
5 checks passed
@tukuyomil032
tukuyomil032 deleted the fix/release-codesign-and-build-speed branch June 9, 2026 08:00
tukuyomil032 added a commit that referenced this pull request Jun 24, 2026
…dView

RootIslandView now routes expanded state to ExpandedIslandView (preset-driven widget composition: tab bar + NowPlayingCard + AIUsageWidget footer per Image #4). Compact state renders the new NowPlayingCompactContent, which extracts the pill HStack (artwork + marquee + waveform) from the now-orphaned NowPlayingMorphContent.

AppState.expandedWindowHeight drops the activeCard == .nowPlaying short-circuit (264pt fixed) so height is purely preset-derived. With the Daily preset (NowPlaying standard 264 + AIUsage compact 52 + header 40) the expanded window resolves to ~356pt.

NowPlayingMorphContent is left in place but is no longer referenced anywhere — cleanup can land in a follow-up commit.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
tukuyomil032 added a commit that referenced this pull request Jun 24, 2026
twoColumnView already shows the large artwork plus full lyrics/track info up top. The second HStack — small waveform + Title — Artist text + music.note.list button — was being painted underneath it and read as a mini-widget stuck inside the expanded card (Image #11), well off from the Image #4 reference.

Drop the row entirely so the expanded layout is artwork+lyrics, then progressSection, then controlsSection. The full-lyrics overlay button goes with it; LyricsView is already inline in the main row, so the overlay isn't needed for the common path. showLyricsFullView remains unused for now — clean up in a follow-up if no other entry point appears.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
tukuyomil032 added a commit that referenced this pull request Jun 24, 2026
…) in twoColumnView

Reverts Fix 6 (60e0cb4). Dropping the HStack made the expanded card look thin and lost the lyrics overlay entry point — Image #11 was missing the waveform band and Title—Artist line that Image #4 expects. Put the row back exactly as it appears on main: WaveformView (real audio capture or synthetic fallback), the truncated Title — Artist label, and the music.note.list button that opens the lyricsFullView when lyrics are loaded.

showLyricsFullView is wired again because the button is back; no other call sites changed.

Co-Authored-By: Claude Opus 4.7 <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.

2 participants