# Changelog All notable changes to Salior are documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [0.4.0] — 2026-05-11 ### Added - **Hooks event system** (`salior/hooks/`) - `hooks/registry.py` — `HookRegistry` with `on()` / `off()` / `emit()` and global instance - Built-in events: `on_signal`, `on_fill`, `on_execution`, `on_error`, `on_risk_breach`, `on_agent_health` - `HookEvent` dataclass: name, data, timestamp, source - **Scheduler** (`salior/scheduler.py`) - `Scheduler` — run multiple async tasks on independent fixed intervals - `IntervalTask` — wraps a coroutine, runs on a `loop_interval`, handles timeouts - `schedule(name, coro, interval)` to register tasks - **Telegram bot** (`salior/telegram_bot.py`) - `TelegramBot` — poll-based bot with `/start`, `/status`, `/signals`, `/pnl`, `/help` commands - Hook integration: fires alerts on `on_fill`, `on_risk_breach`, `on_error` - Chat IDs stored in `~/.salior/telegram_chats.txt` - `emit_signal()`, `emit_fill()`, `emit_risk_breach()` helpers for agents - **CLI groups fully wired** (`salior/cli.py`) - `salior agent [list|start]` — agent management - `salior dashboard serve` — web dashboard - `salior mcp serve` — MCP server - `salior daemon [start|stop|status]` — PID-file daemon - `salior telegram serve` — Telegram bot - `salior compute [list|add|remove|ping|deploy]` — node management - `salior plugin [list|enable|disable]` — plugin management - `salior skill [list|show]` — skill management - `salior hook [list|fire]` — hook event system - `salior status --verbose` — nodes + plugins summary - **Compute status module** (`salior/compute/status.py`) - `full_status()` — nodes + plugins overview - `node_status(name)` — per-node detail ### Changed - `agent start` remains: data + signal + exec + risk - `compute/__init__.py` now exports `Node`, `NodeManager`, `deploy_plugin`, `status_plugin`, `full_status`, `node_status` ### Known Limitations - `exec_agent` is a stub for live trading — requires HL API wallet private key (secp256k1 ECDSA) - `place_order` MCP tool requires wallet approval flow (frontend not wired yet) - Telegram bot requires `TELEGRAM_BOT_TOKEN` env var - Risk agent position sizing needs total portfolio value from DB to be fully functional ## [0.3.0] — 2026-05-11 ### Added - **Dashboard web UI** (`salior/dashboard/`) - `dashboard/server.py` — aiohttp server (`salior dashboard serve`) - `dashboard/templates/index.html` — Dark-themed trading dashboard (wallet bar, signal feed, portfolio, order form, agent health) - `dashboard/static/app.js` — Vanilla JS wallet connect + live data polling (30s signals, 10s agents) - `dashboard/static/favicon.svg` — SVG favicon - API endpoints: `/api/portfolio`, `/api/signals`, `/api/performance`, `/api/wallet/connect`, `/api/wallet/session`, `/api/wallet/auth-message`, `/api/order` - **Compute orchestration** (`salior/compute/`) - `node_manager.py` — Node registry (YAML at `~/.salior/nodes.yaml`), SSH ping/run, GPU filtering - `deploy.py` — `deploy_plugin()` via rsync to remote nodes - **Risk agent** (`salior/agents/risk/agent.py`) - `RiskAgent` — position sizing, max drawdown check, max daily loss pause - `pause()` / `resume()` / `is_paused()` circuit breaker controls - **Daemon** (`salior/daemon.py`) - `Daemon` class — PID file at `~/.salior/run/.pid`, graceful SIGTERM/SIGINT handling - **6 skills** (`salior/skills/`) - `plan.md` — task decomposition - `test.md` — red-green-refactor ## [0.2.0] — 2026-05-11 ### Added - **4 built-in plugins** (`plugins/`) - `llm_batcher/`, `backtest_engine/`, `rl_trainer/`, `ml_predictor/` ## [0.1.0] — 2026-05-11 ### Added - Core skeleton, 3 agents, database layer, LLM client, skills, MCP server, plugin system, wallet connect, CLI