#!/bin/zsh
# YellowMellow mini — finish launchd fix (run via: ssh YellowMellow zsh ~/finish-immich-launchd.sh)
set -e
U=$(id -u)

# 1. Rewrite immich-server plist to run via ssh-localhost (real login session => SMB libuv I/O works)
cat > ~/Library/LaunchAgents/com.yellowmellow.immich-server.plist << 'PLIST'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key><string>com.yellowmellow.immich-server</string>
  <key>ProgramArguments</key><array>
    <string>/usr/bin/ssh</string><string>-T</string>
    <string>-o</string><string>BatchMode=yes</string>
    <string>-o</string><string>StrictHostKeyChecking=accept-new</string>
    <string>-o</string><string>ServerAliveInterval=30</string>
    <string>-o</string><string>ExitOnForwardFailure=yes</string>
    <string>localhost</string>
    <string>/opt/homebrew/bin/node /Users/yellowmellow/immich-start-server.js</string>
  </array>
  <key>WorkingDirectory</key><string>/Users/yellowmellow/src/immich/server</string>
  <key>EnvironmentVariables</key><dict>
    <key>PATH</key><string>/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
    <key>HOME</key><string>/Users/yellowmellow</string>
  </dict>
  <key>RunAtLoad</key><true/>
  <key>KeepAlive</key><dict><key>SuccessfulExit</key><false/></dict>
  <key>ThrottleInterval</key><integer>30</integer>
  <key>StandardOutPath</key><string>/Users/yellowmellow/data/immich-server.log</string>
  <key>StandardErrorPath</key><string>/Users/yellowmellow/data/immich-server-err.log</string>
  <key>UserName</key><string>yellowmellow</string>
</dict>
</plist>
PLIST

# 2. Remove trace patches (restore clean dist)
cd /Users/yellowmellow/src/immich/server/dist/services
cp storage.service.js.bak storage.service.js
# revert metadata.service traces (remove TRACE-META lines)
sed -i '' '/TRACE-META/d' metadata.service.js
# revert storage.repository traces (remove TRACE-READFILE lines)
sed -i '' '/TRACE-READFILE/d' ../repositories/storage.repository.js

# 3. Kill any stray immich processes, ensure SMB mount up
pkill -f immich-start-server 2>/dev/null || true
pkill -x immich-api 2>/dev/null || true
pkill -x immich 2>/dev/null || true
sleep 3
mount | grep -q "YellowMellowDrive" || { mkdir -p /Volumes/YellowMellowDrive; mount_smbfs //yellowmellow:yellow@192.168.2.111/YellowMellowDrive /Volumes/YellowMellowDrive; }

# 4. Restart server agent
launchctl bootout gui/$U/com.yellowmellow.immich-server 2>/dev/null || true
sleep 3
launchctl bootstrap gui/$U ~/Library/LaunchAgents/com.yellowmellow.immich-server.plist
echo "RESTARTED — check immich-server-err.log for hang; UI at :22838"
