post_upgrade() {
  # OpenRC: restart the system service if it's currently running.
  if command -v rc-service >/dev/null 2>&1 \
      && [ -e /run/openrc/started/claude-cowork ]; then
    echo ">>> Restarting claude-cowork OpenRC service..."
    rc-service claude-cowork restart >/dev/null 2>&1 \
      && echo "  Restarted" || echo "  Restart failed - restart manually"
    return 0
  fi

  echo ">>> Restarting claude-cowork service for active users..."

  command -v loginctl >/dev/null 2>&1 || return 0
  command -v runuser  >/dev/null 2>&1 || return 0

  loginctl list-users --no-legend 2>/dev/null | while read -r uid user _rest; do
    [ "$uid" -ge 1000 ] || continue

    XDG_RUNTIME_DIR="/run/user/$uid"

    if runuser -u "$user" -- env XDG_RUNTIME_DIR="$XDG_RUNTIME_DIR" \
        systemctl --user is-active claude-cowork.service >/dev/null 2>&1; then
      runuser -u "$user" -- env XDG_RUNTIME_DIR="$XDG_RUNTIME_DIR" \
        systemctl --user restart claude-cowork.service >/dev/null 2>&1 \
        && echo "  Restarted for user $user" || true
    fi
  done
}
