From 190e4230c3a1c59b89a4c3ede29177e4f1a1be18 Mon Sep 17 00:00:00 2001 From: Clsan Date: Tue, 14 Jul 2026 10:13:55 +0900 Subject: [PATCH 1/3] feat: set GOPATH to consolidated XDG location Go was installed via mise but nothing configured GOPATH, so a fresh setup would default to ~/go instead of the relocated ~/.local/share/go. Co-Authored-By: Claude Sonnet 5 --- setup.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/setup.sh b/setup.sh index 2e4f177..cca44d7 100755 --- a/setup.sh +++ b/setup.sh @@ -90,6 +90,8 @@ eval "$(mise activate bash)" echo "🐹 Setting up Go..." mise use --global go@1.24 +append_line_if_missing "$HOME/.zshrc" 'export GOPATH="$HOME/.local/share/go"' +append_line_if_missing "$HOME/.zshrc" 'export PATH="$GOPATH/bin:$PATH"' echo "πŸ“¦ Setting up Node.js..." mise use --global node@lts From 94db08f5e817608e0c98617cde5a1f95fb3befe9 Mon Sep 17 00:00:00 2001 From: Clsan Date: Tue, 14 Jul 2026 10:39:23 +0900 Subject: [PATCH 2/3] fix: force re-fetch on cask checksum mismatch retry brew_install_cask retried failed cask installs after `brew update`, but that only refreshes cask definitions, not a bad cached download from the same run. Vendor CDNs for self-updating installers (e.g. Telegram) occasionally serve a binary that no longer matches the cask's pinned checksum, so the retry kept failing on the same stale artifact. Force a clean re-fetch before retrying. Co-Authored-By: Claude Sonnet 5 --- common.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/common.sh b/common.sh index 38bf8fa..b71eace 100644 --- a/common.sh +++ b/common.sh @@ -63,8 +63,11 @@ brew_install_cask() { echo " ↳ Installing cask $cask" brew install --cask "$cask" || { - echo "⚠️ Cask $cask install failed. Updating Homebrew and retrying..." + echo "⚠️ Cask $cask install failed. Updating Homebrew and retrying with a forced re-download..." brew update + # 체크섬 λΆˆμΌμΉ˜λŠ” λŒ€κ°œ 벀더 CDN 이 같은 URL 에 λ‹€λ₯Έ λ°”μ΄λ„ˆλ¦¬λ₯Ό μ˜¬λ €μ„œ μƒκΈ°λŠ” μΌμ‹œμ  ν˜„μƒ β€” + # μΊμ‹œλœ(잘λͺ»λœ) λ‹€μš΄λ‘œλ“œλ₯Ό 버리고 κ°•μ œλ‘œ λ‹€μ‹œ λ°›μ•„μ•Ό μž¬μ‹œλ„κ°€ 의미 있음 + brew fetch --force --cask "$cask" || true brew install --cask "$cask" } } From d7e89450b10d0f981a875f94c4a97e9e6100d4f9 Mon Sep 17 00:00:00 2001 From: Clsan Date: Tue, 14 Jul 2026 10:48:22 +0900 Subject: [PATCH 3/3] fix: survive headless CI and silence aws/tap trust warning MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Three GUI/session-dependent commands aborted setup.sh under `set -e` on the headless macOS runner: - open -a Rectangle: launching a GUI app exits non-zero without a desktop session. Skip the launch under SETUP_NONINTERACTIVE (keep the launchOnLogin default, which is worth smoke-testing). - killall Dock: exits non-zero ("No matching processes") if Dock isn't running. Make it best-effort β€” harmless even on a real Mac. - activateSettings -u: needs a GUI session to reload; make it best-effort for the same reason. Also pre-trust aws/tap (pre-tapped on GHA runners) so brew stops printing the "not trusted" warning on every install/update. Co-Authored-By: Claude Opus 4.8 (1M context) --- common.sh | 7 +++++++ setup.sh | 11 ++++++++--- system_setup.sh | 8 ++++---- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/common.sh b/common.sh index b71eace..c407426 100644 --- a/common.sh +++ b/common.sh @@ -20,6 +20,13 @@ caffeinate -disu & CAFFEINATE_PID=$! trap 'kill $CAFFEINATE_PID 2>/dev/null' EXIT +# ============================================ +# Homebrew tap trust +# - GitHub Actions macOS λŸ¬λ„ˆμ— aws/tap 이 기본으둜 미리 tap λ˜μ–΄ μžˆμ–΄μ„œ +# brew install/update ν•  λ•Œλ§ˆλ‹€ "not trusted" κ²½κ³ κ°€ 뜸 β€” μ‹ λ’°ν•˜λŠ” tap μ΄λ―€λ‘œ 미리 승인 +# ============================================ +brew trust --tap aws/tap 2>/dev/null || true + # ============================================ # Helper Functions # ============================================ diff --git a/setup.sh b/setup.sh index cca44d7..882a2cd 100755 --- a/setup.sh +++ b/setup.sh @@ -61,10 +61,15 @@ echo "βœ… Applications ready" # - launchOnLogin 만 미리 μ„€μ • (ν™˜μ˜ λ‹€μ΄μ–Όλ‘œκ·Έμ— μ—†μ–΄μ„œ 까먹기 쉬움) # - 단좕킀 프리셋, 타일링 끄기, Accessibility λŠ” 첫 μ‹€ν–‰ UI μ—μ„œ μ•ˆλ‚΄ # ============================================ -echo "πŸ“ Launching Rectangle..." +echo "πŸ“ Configuring Rectangle..." defaults write com.knollsoft.Rectangle launchOnLogin -bool true -open -a Rectangle -echo "βœ… Rectangle launched" +# GUI μ•± 싀행은 λ°μŠ€ν¬ν†±μ—μ„œλ§Œ 의미 있음 β€” ν—€λ“œλ¦¬μŠ€ CI λŸ¬λ„ˆμ—μ„  open -a κ°€ 비정상 μ’…λ£Œν•΄ set -e 둜 전체가 죽음 +if [[ -n "$SETUP_NONINTERACTIVE" ]]; then + echo " ↳ SETUP_NONINTERACTIVE β€” Rectangle μ‹€ν–‰ μŠ€ν‚΅" +else + open -a Rectangle +fi +echo "βœ… Rectangle ready" # ============================================ # Vim Settings diff --git a/system_setup.sh b/system_setup.sh index 5375846..c693089 100644 --- a/system_setup.sh +++ b/system_setup.sh @@ -60,8 +60,8 @@ defaults write com.apple.symbolichotkeys AppleSymbolicHotKeys -dict-add 60 \ " -# 변경사항 μ¦‰μ‹œ 적용 -/System/Library/PrivateFrameworks/SystemAdministration.framework/Resources/activateSettings -u +# 변경사항 μ¦‰μ‹œ 적용 (GUI μ„Έμ…˜ ν•„μš” β€” ν—€λ“œλ¦¬μŠ€ CI 에선 μ‹€νŒ¨ν•  수 μžˆμ–΄ best-effort) +/System/Library/PrivateFrameworks/SystemAdministration.framework/Resources/activateSettings -u || true echo "βœ… Keyboard shortcuts ready" @@ -154,8 +154,8 @@ defaults write com.apple.dock autohide-delay -float 0 # Auto-hide μ• λ‹ˆλ©”μ΄μ…˜ 속도 (λΉ λ₯΄κ²Œ) defaults write com.apple.dock autohide-time-modifier -float 0.3 -# Dock μž¬μ‹œμž‘ν•˜μ—¬ 변경사항 적용 -killall Dock +# Dock μž¬μ‹œμž‘ν•˜μ—¬ 변경사항 적용 (Dock λ―Έμ‹€ν–‰ μ‹œ killall 이 비정상 μ’…λ£Œ β†’ set -e νšŒν”Ό) +killall Dock || true echo "βœ… Dock configured"