# Upgrade Guide — v0.12.9

<!-- 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 behavior -->

## What Changed

- **Dashboard pin rotation**: Old pinned messages are unpinned before pinning the latest dashboard link, preventing pin clutter in the Dashboard topic.
- **First-run mute guidance**: On first dashboard pin, a guidance message is sent explaining how to mute the Dashboard topic for a cleaner notification experience.
- **Update loop breaker**: AutoUpdater now tracks `lastAppliedVersion` to prevent re-applying the same version in a loop.
- **Lifeline rate-limiting**: "Server went down" notifications are rate-limited to 1 per 30 minutes to prevent notification spam during crash loops.
- **Restart notification dedup**: "Just updated to vX" messages are sent only once per version, not on every restart.
- **12 regression tests** for notification spam prevention scenarios.

## What to Tell Your User

- **Quieter notifications**: "Dashboard and restart notifications are now smarter — no more duplicate pins or repeated update messages. Your Telegram topics should be much less noisy."
- **Mute guidance**: "When the dashboard first pins, you'll get a one-time tip on how to mute that topic if you prefer a quieter setup."

## Summary of New Capabilities

| Capability | How to Use |
|-----------|-----------|
| Dashboard pin rotation | Automatic — old pins cleared before new ones |
| Mute guidance | Automatic — sent once on first dashboard pin |
| Update loop prevention | Automatic — no action needed |
| Notification rate-limiting | Automatic — server-down alerts max 1/30min |
