Releases: colfin22/magpie
Release list
v0.18.1 β retries survive restarts (systemd timer)
Follow-up to #30.
- The short retry of a failed sleeve is now driven by the magpie-retry systemd timer (every few minutes) instead of an in-process timer, so a pending retry survives a container restart β consistent with Magpie's other timers.
- Retries are bounded by
CYCLE_RETRY_MAXconsecutive attempts (reset by each scheduled cycle) so a sustained outage can't retry forever;POST /api/cycle/retry?force=truebypasses the cap for a manual retry.
v0.18.0 β retry a failed sleeve in minutes, not hours
Follow-up to #30.
- Short auto-retry β when a sleeve errors on a transient upstream failure, its decision is retried again in a few minutes (
CYCLE_RETRY_MINS, default 10, up toCYCLE_RETRY_MAXtimes) instead of waiting for the next 6-hourly slot. - Retry now β new
POST /api/cycle/retryre-runs every currently-errored sleeve on demand, bypassing the cadence gate. - The dashboard's decision log shows
retrying in X minfrom the pending retry time.
v0.17.1 β resilient LLM calls + calmer error display
Fixes #30.
- Retry on transient failures β a momentary LLM overload (e.g. Gemini 503), rate-limit (429) or network/timeout blip is now retried with exponential backoff instead of throwing away the whole cycle. Genuine errors (auth 4xx, malformed responses) still fail fast to a safe HOLD.
- No raw errors on the dashboard β a failed cycle shows a calm
β³ RETRY β retrying at next decision Β· in Xh Ymnote instead of the raw provider error. API keys are also scrubbed from error strings so they can never reach the ledger or the page.
v0.17.0 β settings page tabs
The settings page is now organised into tabs β Brain Β· Exchange Β· Trading Β· Notifications Β· Security β so it's scannable instead of one long scroll. Everything still saves together; the tabs just filter which cards are visible. Closes #29.
v0.16.0 β more notification channels
Notifications are no longer Home-Assistant-only. notify() now fans every alert out to all configured channels:
- Home Assistant push (as before) Β· Pushover Β· Pushbullet Β· Discord (rich embed) Β· Telegram Β· ntfy
Set any you like on the Settings page (or in .env) β each fires only when its own keys are present, and one failing channel never blocks the others. The tap-to-open link is reused on every channel, and the Test button sends to all of them at once. 59 tests. Closes #28.
v0.15.0 β selectable timezone
The bot's decision slots are no longer hard-wired to Irish time. Set TIMEZONE (an IANA name like America/New_York, default Europe/Dublin) in .env or on the settings page, and the daily 06:00, Monday and 1st-of-month decision slots run on your local clock β line it up with the schedule you set. Validated on save; safe to change anytime (no money implication, so it isn't locked like the base currency). Default stays Europe/Dublin, so existing installs are unaffected. Closes #24.
v0.14.0 β selectable base currency
Magpie is no longer hard-wired to EUR β pick the currency it trades against and values everything in (EUR, USD, GBP, and more).
- Chosen once at initial setup (Settings β Base currency), then permanently locked. It also auto-locks the moment the bot has traded, so a running/funded instance can never have it switched β which would strand your holdings and balance in the wrong currency.
- Sets the quote on every pair, the cash asset in the sleeve books, the CoinGecko market lookup, the amounts sent to the LLM, and the β¬/$/Β£ shown everywhere.
- Setting it validates that Kraken actually lists the base pairs (BTC, ETH) in that currency first.
EUR remains the default, so existing installs are unaffected (and auto-lock to EUR on upgrade). 51 tests. Closes #22.
v0.13.0 β pin any coin manually
Add any coin to the tradeable universe by hand, not just the base pairs and the auto-tracked top-N.
- New Custom coins card on the settings page: type a symbol (
ADA) or pair (LINK/EUR) and it's validated against Kraken (must be an active EUR spot market) before it's saved. Remove with a click. - Effective universe is now base + your custom coins + the dynamic alts, so pinned coins work whether or not the dynamic universe is enabled.
- A manually-pinned coin is exempt from the sell floor β you chose it deliberately, so it's never force-sold when it leaves the top-N.
- Also settable via
MANUAL_PAIRSorPOST /api/pairs/add {symbol}Β·GET /api/pairsΒ·POST /api/pairs/remove.
47 tests. Closes #21.
v0.12.2 β settings page fix
Fixes the settings page. Since v0.12.0, a JavaScript escape (\n) inside the page template was being consumed before it reached the browser, leaving an unterminated string that broke the entire settings script β so the 2FA setup controls (and every other settings action) silently failed to render.
Now fixed, with an automated guard that syntax-checks every rendered page's JavaScript so this class of bug can't ship again.
If you're running Magpie, hard-refresh the settings page (Ctrl+Shift+R) to pick it up.
v0.12.1 β favicon
Adds a favicon so Magpie's tab is easy to spot: the π¦ββ¬ mark on the accent-green rounded square, which reads on both light and dark tab bars. Served inline at /favicon.svg (/favicon.ico redirects to it) and linked from the dashboard, login and settings pages β self-contained, no external requests. Closes #19.