github vava-nessa/free-coding-models v0.5.96

latest releases: v0.5.98, v0.5.97
20 days ago

Community release: 3 issues fixed, 5 pull requests merged (4 new contributors), 1 declined with reason. The catalog moves to 25 providers / 259 models with the addition of onomeo and 2 Mistral coding models, minus 6 Pollinations models that silently left the free tier.

Added

  • 🇨🇳 Simplified Chinese localization (PR #193 by @Mavlan): the TUI and the Web Dashboard now share one i18n layer, English stays the default and zh-CN is one setting away. The language preference is persisted in the shared config and exposed through the web Settings API. CLI help, settings, router, install, search and command-palette text are all localized, and CJK display-width handling is reused for TUI columns and overlay clipping.
  • onomeo provider (PR #187 by @Owaid0723666, who also disclosed operating the service): 9 free coding models behind a daily check-in credit system (50k credits on day 1, up to 200k/day with a streak, no card). Wired end to end: env var ONOMEO_API_KEY, key test against GET /v1/models, quota badge limited, theme colors, Docker env passthrough and provider card on the website. Model ids verified live against the public catalog; premium models deliberately not listed.
  • Mistral coding model aliases (PR #192 by @MrTodone): mistral-code-latest and mistral-code-fim-latest join the Mistral provider (both live-verified aliases of codestral-2508, 256k context), handy for clients that address the mistral-code-* family directly.

Fixed

  • Daemon dashboard "[object Object]" toast on every open (issue #189): the daemon's embedded dashboard only stubbed GET /api/tool-mode, so the frontend's POST (URL write-back of ?toolMode=) fell through to the OpenAI-style 404 catch-all. The daemon now handles GET and POST like web/server.js: GET returns the persisted settings.preferredToolMode instead of a hardcoded opencode, POST validates and persists the mode, and the frontend hook extracts nested error.message so any future failure reads as a sentence, not [object Object]. Covered by 4 new integration tests.
  • "Unrecognized flag: --model" when launching OpenCode v2 (issue #194): OpenCode v2 rejects flags its entry points don't know, and opencode web never accepted --model at all. FCM already wrote your pick into opencode.json (config.model) before every launch, so the flag was redundant: all launch paths (CLI, Web, Desktop, snap/flatpak) now spawn bare and let the config default apply. Works identically on OpenCode v1 and v2.
  • 6 Pollinations models that quietly became paid (issue #190, reported by @holakoyad): minimax-m2.7, qwen/qwen3.8-max, google/gemini-3.1-pro-preview, nvidia/nemotron-3-ultra, qwen/qwen3-coder-next and gemma-4-31b answer HTTP 200 with the error text embedded in the completion content on free keys, so status-code probes saw them as healthy. All 6 are removed (free alternatives remain on their original providers), and probes now sniff pollinations completions for the paid-Pollen message and report 402 instead of a fake 200. Covered by 4 new unit tests.
  • Router v2 failover settings wiped on restart (PR #191 by @MrTodone): lastResortModel, bodyReadTimeoutMs, totalBudgetMs and contentValidation were silently stripped by the config normalizer on every load() → save() round-trip. Unknown failover keys now survive normalization (the daemon still sanitizes them at read time), with round-trip regression tests.
  • Web Settings API key deletion could resurrect itself (PR #195 by @ming076): /api/settings saved keys with a plain saveConfig() whose on-disk merge could restore a just-deleted key. Key add/update/delete now goes through the provider-scoped persistApiKeysForProvider() helper, and persistence failures return a real error instead of a fake success.

Changed

  • Provider counts: 24 → 25 providers, 254 → 259 models (minus 6 paid Pollinations, plus 9 onomeo, plus 2 Mistral aliases). docs/providers.md regenerated from sources.js, README counts and Top-8 table refreshed, website catalog mirror synced.
  • Declined the chalk 5 → 6 dependabot bump (PR #183): chalk 6 requires Node 22 while FCM supports Node 18+ and CI tests Node 20. It will be revisited when the minimum Node version moves to 22.

Don't miss a new free-coding-models release

NewReleases is sending notifications on new releases.