You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Router now respects your priority order (fixes #120, reported by @jammin1911). Previously, priority was only 20% of the routing score, so a healthy low-priority model (e.g. GPT-OSS 120B) could serve traffic even when higher-priority models you deliberately ranked above it were also healthy. Routing is now strict priority-first: #1 is always tried first while it is healthy, and the health score is only used as a tiebreaker between models that share the same priority (e.g. cold-start ties). Circuit-breaker safety is preserved — closed (healthy) models always come before half-open (recovering) ones. Your fallback chain is now authoritative.
Daemon startup errors are now surfaced instead of swallowed. The TUI captures --daemon-bg stdout/stderr and shows the real failure reason (port in use, config corruption, etc.) as a dashboard notice, instead of silently flipping back to "stopped".
Dev checkouts no longer clash with production installs. A git checkout now auto-enables dev mode (FCM_DEV=1) so its router daemon uses dev ports/files (29280, -dev suffixed PID/port/log files) and never collides with a globally-installed free-coding-models running on the same machine. Dynamic path resolvers pick up FCM_DEV changes that happen after module load.
Added
routingOrder field in /stats — exposes the exact attempt order the daemon will use for the next request (priority-first among healthy models). routingOrder[0] is the model that will serve the next chat completion. Dashboards use it to show which model is active.
Clearer priority indicators in the Router UI (all surfaces) so users understand the fallback chain at a glance:
Web Dashboard: the active-set list now labels #1 as a highlighted Primary badge (accent-colored) and the rest as numbered fallbacks. A one-line legend explains "Primary tries first → Fallback on failure / rate-limit". The model that will serve the next request gets a green accent border + tint (Next up badge in the legend). Tooltips on every badge explain the semantics.
TUI Dashboard: a ▶ NEXT marker (green) is drawn on the exact model the daemon will route to next, so the top of your fallback chain is obvious. Empty-state copy now explains "Favorites become your router fallback chain — #1 is tried first."
Always-visible Quick Setup card on the Router dashboard (Web + TUI) with sensible defaults (localhost:19280/v1, model fcm, key fcm-local), so you can copy your tool config even before starting the daemon. The Web version adds a one-click Copy all button and a hero glow when running.
Better empty states across the Web Router view: the active-set list and request log now show helpful guidance ("No models in the active set → Add models or Sync best", "No requests yet. Start coding to see traffic here.") instead of disappearing.
Auto-expanding request log — the Web request log expands automatically the first time traffic appears, so you don't have to click to see your routed requests.
More prominent Start button — the stopped-state "Start Router" CTA is now larger and easier to hit.
Changed
Router candidate sorting changed from score DESC, priority ASC to priority ASC, score DESC — the user's explicit ranking now wins. The scoring weights config is retained (still used for the health table and same-tier tiebreaks), so existing user configs and config normalization are unaffected.