# Upgrade Guide — v0.19.2

<!-- bump: patch -->
<!-- Valid values: patch, minor, major -->
<!-- patch = bug fixes, refactors, test additions, doc updates -->
<!-- minor = new features, new APIs, new capabilities (backwards-compatible) -->
<!-- major = breaking changes to existing APIs or major -->

## What Changed

### Fixed: Machine Reboots Now Use Shadow Install (macOS)

Previously, the launchd plist generated by `instar setup` hardcoded the global binary path. After a machine reboot, launchd would start your agent with the old global binary — even if the auto-updater had installed a newer version to `.instar/shadow-install/`. Your agent would run stale code until the auto-updater detected the mismatch and triggered a restart.

**What's fixed**: The plist now calls a boot wrapper script (`.instar/instar-boot.sh`) instead of the global binary directly. The wrapper checks for a shadow install at startup and falls back to the global binary if none exists. Machine reboots now always start with the latest auto-updated version.

**Action required for existing macOS agents**: Re-run `instar setup` to regenerate the launchd plist with the new wrapper. Until then, sessions work correctly; only machine reboots are affected (the agent temporarily runs the older global binary until the auto-updater triggers a restart).

## What to Tell Your User

- **More reliable after restarts**: If your machine reboots, your agent will now wake up on the latest version immediately, rather than briefly running an older version until the updater kicks in.

## Summary of New Capabilities

| Capability | How to Use |
|-----------|-----------|
| Reliable post-reboot version on macOS | Re-run setup to update the plist (one-time action) |
