free-coding-models 0.3.66 → 0.3.68
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +111 -12
- package/bin/free-coding-models.js +1 -9
- package/changelog/v0.1.1.md +3 -0
- package/changelog/v0.1.10.md +3 -0
- package/changelog/v0.1.11.md +10 -0
- package/changelog/v0.1.12.md +16 -0
- package/changelog/v0.1.13.md +3 -0
- package/changelog/v0.1.14.md +3 -0
- package/changelog/v0.1.15.md +3 -0
- package/changelog/v0.1.16.md +13 -0
- package/changelog/v0.1.17.md +3 -0
- package/changelog/v0.1.18.md +3 -0
- package/changelog/v0.1.19.md +3 -0
- package/changelog/v0.1.2.md +3 -0
- package/changelog/v0.1.20.md +14 -0
- package/changelog/v0.1.21.md +12 -0
- package/changelog/v0.1.22.md +6 -0
- package/changelog/v0.1.23.md +16 -0
- package/changelog/v0.1.24.md +9 -0
- package/changelog/v0.1.25.md +13 -0
- package/changelog/v0.1.26.md +6 -0
- package/changelog/v0.1.27.md +6 -0
- package/changelog/v0.1.28.md +5 -0
- package/changelog/v0.1.29.md +5 -0
- package/changelog/v0.1.3.md +3 -0
- package/changelog/v0.1.31.md +10 -0
- package/changelog/v0.1.32.md +8 -0
- package/changelog/v0.1.33.md +5 -0
- package/changelog/v0.1.34.md +6 -0
- package/changelog/v0.1.35.md +5 -0
- package/changelog/v0.1.36.md +16 -0
- package/changelog/v0.1.37.md +5 -0
- package/changelog/v0.1.38.md +9 -0
- package/changelog/v0.1.39.md +3 -0
- package/changelog/v0.1.4.md +3 -0
- package/changelog/v0.1.40.md +3 -0
- package/changelog/v0.1.41.md +11 -0
- package/changelog/v0.1.42.md +3 -0
- package/changelog/v0.1.43.md +3 -0
- package/changelog/v0.1.44.md +17 -0
- package/changelog/v0.1.45.md +6 -0
- package/changelog/v0.1.46.md +9 -0
- package/changelog/v0.1.47.md +6 -0
- package/changelog/v0.1.48.md +11 -0
- package/changelog/v0.1.49.md +10 -0
- package/changelog/v0.1.5.md +3 -0
- package/changelog/v0.1.50.md +7 -0
- package/changelog/v0.1.51.md +4 -0
- package/changelog/v0.1.52.md +10 -0
- package/changelog/v0.1.54.md +41 -0
- package/changelog/v0.1.55.md +3 -0
- package/changelog/v0.1.56.md +11 -0
- package/changelog/v0.1.57.md +7 -0
- package/changelog/v0.1.58.md +7 -0
- package/changelog/v0.1.59.md +7 -0
- package/changelog/v0.1.6.md +3 -0
- package/changelog/v0.1.60.md +7 -0
- package/changelog/v0.1.61.md +9 -0
- package/changelog/v0.1.62.md +9 -0
- package/changelog/v0.1.63.md +15 -0
- package/changelog/v0.1.64.md +22 -0
- package/changelog/v0.1.65.md +15 -0
- package/changelog/v0.1.66.md +22 -0
- package/changelog/v0.1.67.md +40 -0
- package/changelog/v0.1.68.md +38 -0
- package/changelog/v0.1.69.md +3 -0
- package/changelog/v0.1.7.md +3 -0
- package/changelog/v0.1.70.md +7 -0
- package/changelog/v0.1.71.md +7 -0
- package/changelog/v0.1.72.md +7 -0
- package/changelog/v0.1.73.md +7 -0
- package/changelog/v0.1.74.md +3 -0
- package/changelog/v0.1.75.md +9 -0
- package/changelog/v0.1.76.md +13 -0
- package/changelog/v0.1.77.md +13 -0
- package/changelog/v0.1.78.md +7 -0
- package/changelog/v0.1.79.md +8 -0
- package/changelog/v0.1.8.md +3 -0
- package/changelog/v0.1.80.md +7 -0
- package/changelog/v0.1.81.md +19 -0
- package/changelog/v0.1.82.md +9 -0
- package/changelog/v0.1.83.md +22 -0
- package/changelog/v0.1.84.md +25 -0
- package/changelog/v0.1.85.md +19 -0
- package/changelog/v0.1.86.md +17 -0
- package/changelog/v0.1.87.md +7 -0
- package/changelog/v0.1.88.md +167 -0
- package/changelog/v0.1.89.md +22 -0
- package/changelog/v0.1.9.md +3 -0
- package/changelog/v0.2.0.md +30 -0
- package/changelog/v0.2.1.md +17 -0
- package/changelog/v0.2.10.md +7 -0
- package/changelog/v0.2.11.md +6 -0
- package/changelog/v0.2.12.md +16 -0
- package/changelog/v0.2.13.md +16 -0
- package/changelog/v0.2.14.md +6 -0
- package/changelog/v0.2.15.md +6 -0
- package/changelog/v0.2.17.md +14 -0
- package/changelog/v0.2.2.md +16 -0
- package/changelog/v0.2.3.md +7 -0
- package/changelog/v0.2.4.md +7 -0
- package/changelog/v0.2.5.md +12 -0
- package/changelog/v0.2.7.md +3 -0
- package/changelog/v0.2.8.md +107 -0
- package/changelog/v0.2.9.md +10 -0
- package/changelog/v0.3.0.md +30 -0
- package/changelog/v0.3.1.md +17 -0
- package/changelog/v0.3.11.md +20 -0
- package/changelog/v0.3.12.md +18 -0
- package/changelog/v0.3.13.md +4 -0
- package/changelog/v0.3.14.md +6 -0
- package/changelog/v0.3.15.md +4 -0
- package/changelog/v0.3.16.md +3 -0
- package/changelog/v0.3.17.md +4 -0
- package/changelog/v0.3.18.md +12 -0
- package/changelog/v0.3.19.md +12 -0
- package/changelog/v0.3.2.md +5 -0
- package/changelog/v0.3.21.md +13 -0
- package/changelog/v0.3.22.md +29 -0
- package/changelog/v0.3.23.md +12 -0
- package/changelog/v0.3.24.md +34 -0
- package/changelog/v0.3.25.md +40 -0
- package/changelog/v0.3.26.md +85 -0
- package/changelog/v0.3.28.md +3 -0
- package/changelog/v0.3.29.md +107 -0
- package/changelog/v0.3.3.md +11 -0
- package/changelog/v0.3.30.md +3 -0
- package/changelog/v0.3.31.md +113 -0
- package/changelog/v0.3.32.md +123 -0
- package/changelog/v0.3.33.md +129 -0
- package/changelog/v0.3.34.md +156 -0
- package/changelog/v0.3.35.md +173 -0
- package/changelog/v0.3.36.md +186 -0
- package/changelog/v0.3.37.md +182 -0
- package/changelog/v0.3.38.md +3 -0
- package/changelog/v0.3.39.md +3 -0
- package/changelog/v0.3.4.md +9 -0
- package/changelog/v0.3.40.md +18 -0
- package/changelog/v0.3.41.md +7 -0
- package/changelog/v0.3.42.md +9 -0
- package/changelog/v0.3.43.md +13 -0
- package/changelog/v0.3.44.md +10 -0
- package/changelog/v0.3.45.md +12 -0
- package/changelog/v0.3.46.md +5 -0
- package/changelog/v0.3.47.md +4 -0
- package/changelog/v0.3.48.md +10 -0
- package/changelog/v0.3.49.md +18 -0
- package/changelog/v0.3.5.md +5 -0
- package/changelog/v0.3.50.md +41 -0
- package/changelog/v0.3.51.md +37 -0
- package/changelog/v0.3.52.md +43 -0
- package/changelog/v0.3.54.md +55 -0
- package/changelog/v0.3.55.md +62 -0
- package/changelog/v0.3.56.md +53 -0
- package/changelog/v0.3.57.md +61 -0
- package/changelog/v0.3.58.md +10 -0
- package/changelog/v0.3.59.md +3 -0
- package/changelog/v0.3.6.md +12 -0
- package/changelog/v0.3.60.md +3 -0
- package/changelog/v0.3.61.md +3 -0
- package/changelog/v0.3.62.md +3 -0
- package/changelog/v0.3.63.md +20 -0
- package/changelog/v0.3.64.md +10 -0
- package/changelog/v0.3.65.md +10 -0
- package/{CHANGELOG.md → changelog/v0.3.66.md} +2 -0
- package/changelog/v0.3.67.md +45 -0
- package/changelog/v0.3.68.md +18 -0
- package/changelog/v0.3.9.md +10 -0
- package/package.json +3 -3
- package/sources.js +6 -8
- package/src/changelog-loader.js +41 -41
- package/src/cli-help.js +2 -3
- package/src/router-daemon.js +351 -15
- package/web/dist/assets/{index-BKwbbLPp.js → index-Cfy_uz7_.js} +1 -1
- package/web/dist/index.html +1 -1
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
# Changelog v0.1.88 - 2026-03-09
|
|
2
|
+
|
|
3
|
+
## 🎯 Release Overview
|
|
4
|
+
|
|
5
|
+
This is a significant stability and usability release that combines two important feature branches (0.1.88 + 0.1.89) into a single polished 0.2.0 release. The focus is on hardening the public launcher ecosystem, improving visual feedback through dynamic filter coloring, and delivering robust integration with Crush including proper proxy support and model selection persistence.
|
|
6
|
+
|
|
7
|
+
## ✨ Major Features
|
|
8
|
+
|
|
9
|
+
### 🛡️ Hardened Multi-Tool Launcher Ecosystem
|
|
10
|
+
|
|
11
|
+
**Public Z-Cycle (stable, battle-tested):**
|
|
12
|
+
- `OpenCode CLI` (default at startup)
|
|
13
|
+
- `OpenCode Desktop`
|
|
14
|
+
- `OpenClaw` (autonomous agent daemon)
|
|
15
|
+
- `Crush` (with new proxy & config improvements)
|
|
16
|
+
- `Goose` (lightweight agent)
|
|
17
|
+
|
|
18
|
+
**Internal Support (temporarily disabled from public cycle, pending hardening):**
|
|
19
|
+
- Aider, Claude Code, Codex CLI, Gemini CLI, Qwen Code, OpenHands, Amp, Pi
|
|
20
|
+
|
|
21
|
+
This narrowing from 13 to 5 public launchers in the Z-cycle reduces user confusion and ensures we only expose flows that have been thoroughly tested and validated in the field.
|
|
22
|
+
|
|
23
|
+
### 🎨 Dynamic Visual Feedback for Active Filters
|
|
24
|
+
|
|
25
|
+
**Tier Filter Badges:**
|
|
26
|
+
- S+ / S: Bright green [57, 255, 20]
|
|
27
|
+
- A+ / A: Gold [255, 224, 130]
|
|
28
|
+
- A- / B+: Orange [255, 171, 64]
|
|
29
|
+
- B / C: Red / Purple gradients
|
|
30
|
+
- Active tier always visible in both header badges and footer hotkeys
|
|
31
|
+
|
|
32
|
+
**Provider Filter Badges:**
|
|
33
|
+
- Each provider (NIM, Groq, Cerebras, etc.) now displays with its brand color
|
|
34
|
+
- Active provider instantly recognizable across the table
|
|
35
|
+
- Color coding helps users mentally organize multi-provider workflows
|
|
36
|
+
|
|
37
|
+
### 🧰 Crush Integration Overhaul
|
|
38
|
+
|
|
39
|
+
**Configuration Improvements:**
|
|
40
|
+
- Now writes `config.models.large` with actual selected model ID instead of relying on CLI argument parsing
|
|
41
|
+
- Sets `disable_default_providers: true` to force reliance on FCM's configured providers
|
|
42
|
+
- Model selection persists across Crush sessions via the config file
|
|
43
|
+
|
|
44
|
+
**Proxy Awareness:**
|
|
45
|
+
- Detects when proxy mode is enabled in Settings
|
|
46
|
+
- Routes requests through `http://127.0.0.1:<port>/v1` instead of direct provider
|
|
47
|
+
- Properly substitutes auth tokens and base URLs based on proxy vs. direct mode
|
|
48
|
+
- Provides user feedback on which config path is active
|
|
49
|
+
|
|
50
|
+
**Spawn Robustness:**
|
|
51
|
+
- Removed `--model` CLI argument (was causing parsing conflicts)
|
|
52
|
+
- All configuration now driven through `crush.json` for cleaner process spawning
|
|
53
|
+
- Fixed shell spawning: `shell: true` only on Windows; Unix systems use direct spawn
|
|
54
|
+
|
|
55
|
+
### 🧹 OpenCode Proxy Lifecycle
|
|
56
|
+
|
|
57
|
+
**New CLI Command:**
|
|
58
|
+
- `free-coding-models --clean-proxy` — Remove persisted `fcm-proxy` config from OpenCode safely
|
|
59
|
+
- Available in Settings screen (`P` key) under Maintenance
|
|
60
|
+
|
|
61
|
+
**Opt-In Architecture:**
|
|
62
|
+
- Proxy mode disabled by default
|
|
63
|
+
- Users explicitly enable in Settings (`P` key) → Proxy settings section
|
|
64
|
+
- Control over proxy persistence and preferred port
|
|
65
|
+
- `S` in Settings to sync proxy into OpenCode only when explicitly requested
|
|
66
|
+
|
|
67
|
+
### 📚 Documentation & Help Synchronization
|
|
68
|
+
|
|
69
|
+
**In-App Help Refreshed:**
|
|
70
|
+
- Z-cycle hotkey help now shows only hardened launchers (OpenCode CLI/Desktop, OpenClaw, Crush, Goose)
|
|
71
|
+
- CLI flag examples (`--opencode`, `--openclaw`, `--crush`, `--goose`) reflect public set
|
|
72
|
+
- Removed references to temporarily disabled launchers (Aider, Claude Code, etc.)
|
|
73
|
+
|
|
74
|
+
**JSDoc Header Updated:**
|
|
75
|
+
- Clarified startup behavior (no menu → direct OpenCode CLI)
|
|
76
|
+
- Documented ping cadence states: 2s startup burst (60s), 10s steady state, 30s idle fallback, forced 4s via W
|
|
77
|
+
- Removed "promptModeSelection" references
|
|
78
|
+
- Explained multi-tool action on Enter key press
|
|
79
|
+
|
|
80
|
+
**README Synchronized:**
|
|
81
|
+
- Model count, filter descriptions, and default behaviors match current implementation
|
|
82
|
+
- Hardened launcher set documented with Z-cycle order
|
|
83
|
+
- Proxy documentation updated with opt-in architecture
|
|
84
|
+
|
|
85
|
+
## 🔧 Technical Highlights
|
|
86
|
+
|
|
87
|
+
### Code Refactoring & Modularity
|
|
88
|
+
- Extracted TUI overlays and key handling into dedicated modules
|
|
89
|
+
- Shared integration helpers for OpenCode/OpenClaw flows
|
|
90
|
+
- Runtime state moved to shared locations for clearer ownership
|
|
91
|
+
- Improved color constants (ACTIVE_FILTER_BG_BY_TIER, PROVIDER_COLOR maps)
|
|
92
|
+
|
|
93
|
+
### Performance & Stability
|
|
94
|
+
- Rolling averages calculated from ALL successful pings (even 401 responses)
|
|
95
|
+
- Stability score refined: p95 (30%) + jitter (30%) + spike rate (20%) + reliability (20%)
|
|
96
|
+
- Ping cadence adapts: fast startup (2s/60s), steady state (10s), idle slowdown (30s/5m)
|
|
97
|
+
- Timeout models continuously retried, never abandoned
|
|
98
|
+
|
|
99
|
+
### Platform Compatibility
|
|
100
|
+
- Shell spawning fixed for cross-platform (Windows vs. Unix)
|
|
101
|
+
- Proper process isolation on non-Windows systems
|
|
102
|
+
- Environment variable substitution for all launchers
|
|
103
|
+
|
|
104
|
+
## 📊 Data Integrity Improvements
|
|
105
|
+
|
|
106
|
+
**Token Usage Tracking:**
|
|
107
|
+
- Request log overlay (`X` key) shows proxy-only transactions
|
|
108
|
+
- Per-exact-provider/model accounting (no contamination across providers)
|
|
109
|
+
- `Used` column aggregates prompt+completion tokens from startup logs
|
|
110
|
+
- Green dot shown when quota telemetry unavailable or unreliable
|
|
111
|
+
|
|
112
|
+
**Uptime & Health Metrics:**
|
|
113
|
+
- Health states: UP ✅, NO KEY 🔑, Timeout ⏳, Overloaded 🔥, Not Found 🚫
|
|
114
|
+
- Verdict combines avg latency + stability analysis
|
|
115
|
+
- Persistent favorites (`F` key) with ⭐ prefix
|
|
116
|
+
- Configured-only mode (`E` key) filters to providers with API keys
|
|
117
|
+
|
|
118
|
+
## 🎬 User Experience Polish
|
|
119
|
+
|
|
120
|
+
**Visual Clarity:**
|
|
121
|
+
- Tier and Provider filter values display directly inside highlighted pills
|
|
122
|
+
- Header badges show active tool mode (`Z Tool: [selected]`)
|
|
123
|
+
- Footer shortcut colors unified and consistent
|
|
124
|
+
- Provider-colored model names in the main table
|
|
125
|
+
- Selected row uses punchier pink-violet highlight
|
|
126
|
+
|
|
127
|
+
**Default Behavior:**
|
|
128
|
+
- Configured-only mode enabled by default (press `E` to toggle)
|
|
129
|
+
- Empty state tells users to press `P` to add first API key
|
|
130
|
+
- Terminal width warning shown (centered) when too narrow for table
|
|
131
|
+
- In-app help (`K` key) provides full reference
|
|
132
|
+
|
|
133
|
+
## ✅ Testing Checklist
|
|
134
|
+
|
|
135
|
+
- [ ] Z-cycle correctly loops through hardened launchers only
|
|
136
|
+
- [ ] Tier/Provider filter badges display with appropriate colors
|
|
137
|
+
- [ ] Crush launches successfully with direct provider config
|
|
138
|
+
- [ ] Crush launches successfully with FCM proxy when enabled
|
|
139
|
+
- [ ] `--clean-proxy` flag removes proxy config as expected
|
|
140
|
+
- [ ] Help overlay and flag examples show only stable launchers
|
|
141
|
+
- [ ] Filter state persists across all transitions
|
|
142
|
+
- [ ] Rolling averages update correctly on every ping
|
|
143
|
+
- [ ] Favorites saved and restored across restarts
|
|
144
|
+
- [ ] Config profiles capture and restore all settings
|
|
145
|
+
|
|
146
|
+
## 📦 Files Changed
|
|
147
|
+
|
|
148
|
+
- `CHANGELOG.md` — Unified 0.1.88 + 0.1.89 → 0.2.0 release notes
|
|
149
|
+
- `README.md` — Synchronized with hardened launcher set and current behavior
|
|
150
|
+
- `package.json` — Version bumped to 0.2.0
|
|
151
|
+
- `bin/free-coding-models.js` — Updated JSDoc; clarified startup and multi-tool behavior
|
|
152
|
+
- `src/overlays.js` — Cleaned up help overlay; only hardened launchers shown
|
|
153
|
+
- `src/render-table.js` — Added dynamic color support for Tier/Provider filter badges
|
|
154
|
+
- `src/tool-launchers.js` — Enhanced Crush config logic; added proxy detection and routing
|
|
155
|
+
- `src/tool-metadata.js` — Hardened launchers active; unstable launchers commented out
|
|
156
|
+
|
|
157
|
+
## 🚀 Next Steps
|
|
158
|
+
|
|
159
|
+
1. All 20 providers remain supported: NVIDIA NIM, Groq, Cerebras, SambaNova, OpenRouter, Hugging Face, Replicate, DeepInfra, Fireworks AI, Codestral, Hyperbolic, Scaleway, Google AI, SiliconFlow, Together AI, Cloudflare Workers AI, Perplexity, ZAI, DashScope (Alibaba), iFlow
|
|
160
|
+
2. 159 coding models across 8 tiers (S+, S, A+, A, A-, B+, B, C)
|
|
161
|
+
3. Proxy system available for unified account management when needed
|
|
162
|
+
4. Launcher ecosystem available for hardening on demand
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
**Release date:** 2026-03-09
|
|
167
|
+
**Commit:** 0.2.0 — Unified stable release
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Changelog v0.1.89 - 2026-03-09
|
|
2
|
+
|
|
3
|
+
### Added
|
|
4
|
+
|
|
5
|
+
- 🎨 Dynamic color coding for active Tier and Provider filter badges — each tier/provider now displays with its signature color directly in the header and footer pills for better visual feedback.
|
|
6
|
+
- 📖 Comprehensive documentation refresh across JSDoc headers in `bin/free-coding-models.js` to clarify the new default startup behavior, ping cadence states, and removal of the startup menu.
|
|
7
|
+
|
|
8
|
+
### Changed
|
|
9
|
+
|
|
10
|
+
- 🛡️ **Hardened public launcher set** — Narrowed the Z-cycle to only the stable, tested integrations: `OpenCode CLI` → `OpenCode Desktop` → `OpenClaw` → `Crush` → `Goose`. Aider, Claude Code, Codex CLI, Gemini CLI, Qwen Code, OpenHands, Amp, and Pi are now temporarily disabled pending flow hardening.
|
|
11
|
+
- 🎯 **Improved Crush configuration** — Now writes proper `config.models.large` default selection (instead of relying on CLI args), respects proxy enablement state, and uses `disable_default_providers` to rely on FCM's provider configuration.
|
|
12
|
+
- 🔧 **Crush launcher robustness** — Spawn call simplified to not pass `--model` argument; model selection now driven entirely through `crush.json` to avoid CLI parsing conflicts.
|
|
13
|
+
- 📚 **Synchronized in-app help** — Removed references to temporarily disabled launchers from the Z-cycle hint and CLI flag examples to reduce user confusion and match the hardened set.
|
|
14
|
+
- ✅ **Refined filter UI responsiveness** — Active Tier and Provider filter values now visually highlight in the main table footer hotkeys with tier-matched or provider-matched colors for instant recognition.
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
|
|
18
|
+
- 🪪 **Crush proxy support** — Crush now correctly detects when proxy mode is enabled and routes through the local FCM proxy (`http://127.0.0.1:<port>/v1`) with appropriate token/URL substitution instead of attempting direct provider connection.
|
|
19
|
+
- 📖 **Shell compatibility** — Fixed spawning command for external tools to use `shell: true` only on Windows; Linux/macOS now spawn without shell wrapper for cleaner process trees.
|
|
20
|
+
- 🎛 **Filter state persistence** — Tier and Provider filter badges in the footer now correctly calculate and display their active state across all state transitions.
|
|
21
|
+
|
|
22
|
+
---
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Changelog v0.2.0 - 2026-03-09
|
|
2
|
+
|
|
3
|
+
### Added
|
|
4
|
+
|
|
5
|
+
- 🧰 Added direct launch modes for `Crush` and `Goose` as hardened public launchers, with additional internal support for `Aider`, `Claude Code`, `Codex CLI`, `Gemini CLI`, `Qwen Code`, `OpenHands`, `Amp`, and `Pi` (temporarily disabled from public cycle pending hardening).
|
|
6
|
+
- 🧹 Added OpenCode proxy cleanup in Settings plus a `--clean-proxy` CLI command to remove persisted `fcm-proxy` config safely.
|
|
7
|
+
- 🎨 Dynamic color coding for active Tier and Provider filter badges — each tier/provider now displays with its signature color directly in the header and footer pills for better visual feedback.
|
|
8
|
+
- 📖 Comprehensive documentation refresh across JSDoc headers in `bin/free-coding-models.js` to clarify the new default startup behavior, ping cadence states, and removal of the startup menu.
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- 🧭 Extended the `Z` tool cycle, CLI flag parser, help overlay, and header mode badge so the active target tool is visible and switchable across all supported launchers.
|
|
13
|
+
- 🔀 Made the multi-account proxy opt-in and disabled by default, added Settings controls for proxy enablement, OpenCode persistence, and preferred port, and restored direct OpenCode launch as the default path.
|
|
14
|
+
- 🎛 Active Tier and Provider filters now show their current value directly inside the highlighted pills, while Crush now writes a real default selected model into `crush.json` and uses either direct provider config or the local FCM proxy depending on the current proxy setting.
|
|
15
|
+
- 📚 Audited and synchronized the public documentation, in-app help, and footer hints so they now describe the hardened launcher set (`OpenCode CLI`, `OpenCode Desktop`, `OpenClaw`, `Crush`, `Goose`), the real default startup behavior, the current ping cadence, the Settings shortcuts, and the proxy-only request log semantics.
|
|
16
|
+
- 🛡️ **Hardened public launcher set** — Narrowed the Z-cycle to only the stable, tested integrations: `OpenCode CLI` → `OpenCode Desktop` → `OpenClaw` → `Crush` → `Goose`. Aider, Claude Code, Codex CLI, Gemini CLI, Qwen Code, OpenHands, Amp, and Pi are now temporarily disabled pending flow hardening.
|
|
17
|
+
- 🎯 **Improved Crush configuration** — Now writes proper `config.models.large` default selection (instead of relying on CLI args), respects proxy enablement state, and uses `disable_default_providers` to rely on FCM's provider configuration.
|
|
18
|
+
- 🔧 **Crush launcher robustness** — Spawn call simplified to not pass `--model` argument; model selection now driven entirely through `crush.json` to avoid CLI parsing conflicts.
|
|
19
|
+
- 📚 **Synchronized in-app help** — Removed references to temporarily disabled launchers from the Z-cycle hint and CLI flag examples to reduce user confusion and match the hardened set.
|
|
20
|
+
- ✅ **Refined filter UI responsiveness** — Active Tier and Provider filter values now visually highlight in the main table footer hotkeys with tier-matched or provider-matched colors for instant recognition.
|
|
21
|
+
|
|
22
|
+
### Fixed
|
|
23
|
+
|
|
24
|
+
- 🪫 Temporarily removed unstable external launchers (`Aider`, `Claude Code`, `Codex CLI`, `Gemini CLI`, `Qwen Code`, `OpenHands`, `Amp`, `Pi`) from the public mode cycle/help so only the currently hardened integrations remain exposed.
|
|
25
|
+
- 🧭 Corrected stale docs that still advertised the removed startup picker, mislabeled the `X` overlay as a live activity/error log viewer, and listed public commands or tips that no longer matched the current UI.
|
|
26
|
+
- 🪪 **Crush proxy support** — Crush now correctly detects when proxy mode is enabled and routes through the local FCM proxy (`http://127.0.0.1:<port>/v1`) with appropriate token/URL substitution instead of attempting direct provider connection.
|
|
27
|
+
- 📖 **Shell compatibility** — Fixed spawning command for external tools to use `shell: true` only on Windows; Linux/macOS now spawn without shell wrapper for cleaner process trees.
|
|
28
|
+
- 🎛 **Filter state persistence** — Tier and Provider filter badges in the footer now correctly calculate and display their active state across all state transitions.
|
|
29
|
+
|
|
30
|
+
---
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Changelog v0.2.1 - 2026-03-09
|
|
2
|
+
|
|
3
|
+
### Added
|
|
4
|
+
|
|
5
|
+
- 🚨 Added a footer warning that highlights outdated installs with a red banner and the message `This version is outdated .` once a newer npm version is detected.
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- 💾 The `Z` launcher choice is now persisted in config, so the app restarts on the last tool used instead of always falling back to OpenCode CLI.
|
|
10
|
+
- 📋 The request log overlay now highlights proxy fallback reroutes with a dedicated `SWITCHED ↻` route badge and shows `requested → actual` model transitions inline.
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- 🔀 Fixed the footer proxy status so an active proxy now renders as running instead of incorrectly showing `Proxy not configured`.
|
|
15
|
+
- ⚙️ Fixed the footer proxy status so a proxy enabled in Settings now shows as configured even before the local proxy process is started.
|
|
16
|
+
- 🧭 Fixed the main TUI footer so the outdated-version warning appears directly under the proxy status line where users can see it immediately.
|
|
17
|
+
- 🧠 Fixed proxy-backed launcher model selection so `Crush` and `Goose` now use the universal `fcm-proxy` model slug instead of stale provider-specific ids when proxy mode is enabled.
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
# Changelog v0.2.11 - 2026-03-14
|
|
2
|
+
|
|
3
|
+
### Added
|
|
4
|
+
- **Pi Coding Agent support**: Enabled Pi (pi.dev) as a launchable mode in the Z key cycle. Select a model and press Enter to configure Pi's config file and spawn the PI coding agent CLI with the chosen model and API endpoint.
|
|
5
|
+
|
|
6
|
+
---
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Changelog v0.2.12 - 2026-03-14
|
|
2
|
+
|
|
3
|
+
### Added
|
|
4
|
+
- **Auto-select models for all external tools**: All 10 supported tools (Aider, Crush, Goose, Claude Code, Codex, Gemini, Qwen, OpenHands, Amp, Pi) now automatically configure and pre-select the chosen model on launch — no manual model selection needed after pressing Enter.
|
|
5
|
+
- **Changelog loader utility**: New `src/changelog-loader.js` module parses CHANGELOG.md for future TUI integration to display changes directly in the app instead of opening a browser.
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
- **Infinite update loop on startup**: Disabled forced auto-update that caused the app to detect the same update repeatedly after restarting. The app now checks for updates in the background without forcing installation.
|
|
9
|
+
- **Removed disruptive browser window**: The auto-update process no longer opens a browser window to show the changelog — it now shows update information in the terminal only.
|
|
10
|
+
- **Update failure tracking**: If update checks fail 3+ times, the app displays a prominent red footer warning: `⚠ OUTDATED version, please update` with manual update instructions instead of crashing.
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
- **OpenHands integration improved**: Now sets `LLM_MODEL` and `LLM_API_KEY` environment variables for proper model pre-selection on launch.
|
|
14
|
+
- **Amp integration improved**: Now writes `amp.model` to config file with the selected model ID.
|
|
15
|
+
|
|
16
|
+
---
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Changelog v0.2.13 - 2026-03-14
|
|
2
|
+
|
|
3
|
+
### Added
|
|
4
|
+
- **Persist UI view settings**: Tier filter (T key), provider filter (D key), and sort order now persist across session restarts — settings are saved to `~/.free-coding-models.json` under `config.settings` and automatically restored on next startup. Settings also mirror into active profiles so profile switching captures live view preferences.
|
|
5
|
+
- When T cycles tier: S+ tier is now remembered for next session
|
|
6
|
+
- When D cycles provider: Filtered provider is now remembered
|
|
7
|
+
- When sort keys (R/O/M/L/A/S/C/H/V/B/U) change order: Sort column and direction are now remembered
|
|
8
|
+
- Profile loading has priority over global `config.settings` so saved profiles override global defaults
|
|
9
|
+
- **Reset view settings (Shift+R)**: New keyboard shortcut to instantly reset tier filter, provider filter, and sort order to defaults (All tier, no provider filter, avg sort ascending). Also clears persisted settings from `config.settings` so next restart returns to factory defaults.
|
|
10
|
+
- Useful when you've customized your view but want a fresh start
|
|
11
|
+
- Does not affect favorites, API keys, or other settings — only view state
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
- **Help overlay (K key)**: Updated to document new Shift+R keybinding for resetting view settings
|
|
15
|
+
|
|
16
|
+
---
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
# Changelog v0.2.14 - 2026-03-14
|
|
2
|
+
|
|
3
|
+
### Fixed
|
|
4
|
+
- **Changelog scrolling viewport**: Scrolling in changelog details (N key) now respects viewport boundaries — content no longer scrolls beyond visible area. Down/PageDown/End keys now properly clamp to max scroll offset so you can view all content without it disappearing off screen.
|
|
5
|
+
|
|
6
|
+
---
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
# Changelog v0.2.15 - 2026-03-15
|
|
2
|
+
|
|
3
|
+
### Changed
|
|
4
|
+
- **Changelog scrolling experience**: Circular wrap-around scrolling in changelog details (N key) — up at the top now wraps to the bottom, down at the bottom wraps to the top. PageUp/PageDown also wrap for seamless infinite browsing, just like the main TUI list navigation. Home/End still jump to absolute first/last positions for quick access.
|
|
5
|
+
|
|
6
|
+
---
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Changelog v0.2.17 - 2026-03-16
|
|
2
|
+
|
|
3
|
+
### Added
|
|
4
|
+
- **All coding tools re-enabled in Z-cycle**: Aider, Claude Code, Codex CLI, Gemini CLI, Qwen Code, OpenHands, and Amp are now back in the public tool mode cycle alongside OpenCode, OpenClaw, Crush, Goose, and Pi — 13 tools total.
|
|
5
|
+
- **All coding tools available in Install Endpoints (Y key)**: The endpoint installer now supports all 13 tools as install targets, not just the original 5. Each tool gets its proper config format (JSON, YAML, or env file).
|
|
6
|
+
- **Connection mode choice in Install flow**: When installing endpoints (Y key), users now choose between **Direct Provider** (pure API connection) or **FCM Proxy** (local proxy with key rotation and usage tracking) — new Step 3 in the 5-step flow.
|
|
7
|
+
- **Install support for new tools**: Pi (models.json + settings.json), Aider (.aider.conf.yml), Amp (settings.json), Gemini (settings.json), Qwen (modelProviders config), Claude Code/Codex/OpenHands (sourceable env files at ~/.fcm-*-env).
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
- **Install Endpoints flow is now 5 steps**: Provider → Tool → Connection Mode → Scope → Models (was 4 steps without connection mode choice).
|
|
11
|
+
- **Tool labels in install overlay use metadata**: Tool names and emojis in the Y overlay now come from `tool-metadata.js` instead of hard-coded ternary chains — easier to maintain and always in sync.
|
|
12
|
+
- **Help overlay updated**: Z-cycle hint and CLI flag examples now list all 13 tools.
|
|
13
|
+
|
|
14
|
+
---
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Changelog v0.2.2 - 2026-03-10
|
|
2
|
+
|
|
3
|
+
### Added
|
|
4
|
+
|
|
5
|
+
- 🔌 Added a new `Y` install flow that pushes one configured provider directly into `OpenCode CLI`, `OpenCode Desktop`, `OpenClaw`, `Crush`, or `Goose`, with either the full catalog or a curated model subset.
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- 🔄 Tracked endpoint installs are now refreshed automatically on future launches so managed tool catalogs stay aligned when provider model lists evolve.
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- 🔐 Clarified provider auth failures in the main table so configured keys rejected by a provider no longer appear as `NO KEY`.
|
|
14
|
+
- 🔁 Hardened Settings key tests with multi-model retries plus detailed diagnostics under Setup Instructions when a provider probe fails.
|
|
15
|
+
- 🏷️ Fixed Settings provider badges so configured keys show `Test` before the first probe, while providers without a key now show `Missing Key`.
|
|
16
|
+
- 🤗 Clarified the Hugging Face setup hint in Settings to require a fine-grained token with `Make calls to Inference Providers`.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Changelog v0.2.3 - 2026-03-10
|
|
2
|
+
|
|
3
|
+
### Fixed
|
|
4
|
+
|
|
5
|
+
- 🔧 Fixed Codestral API endpoint URL from `codestral.mistral.ai/v1` to `api.mistral.ai/v1` to align with Mistral AI's unified API platform. This resolves authentication failures when testing Codestral API keys in Settings.
|
|
6
|
+
|
|
7
|
+
---
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Changelog v0.2.4 - 2026-03-10
|
|
2
|
+
|
|
3
|
+
### Fixed
|
|
4
|
+
|
|
5
|
+
- 🔧 Fixed Configured Only filter (E key) not being applied at startup. The flag was initialized correctly but the filter function was never called on first render, causing all models to appear visible even when Configured Only mode was enabled.
|
|
6
|
+
|
|
7
|
+
---
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Changelog v0.2.5 - 2026-03-10
|
|
2
|
+
|
|
3
|
+
### Fixed
|
|
4
|
+
|
|
5
|
+
- 🔒 **Improved config save reliability** - API keys are now much safer from corruption and loss:
|
|
6
|
+
- Automatic backups before each save (keeps last 5 versions in `~/.free-coding-models.backups/`)
|
|
7
|
+
- Post-write verification confirms file was written correctly and data wasn't lost
|
|
8
|
+
- Explicit error handling instead of silent failures
|
|
9
|
+
- Auto-repair on startup if config is corrupted (restores from latest backup)
|
|
10
|
+
- Console notifications when backup is used or config is repaired
|
|
11
|
+
|
|
12
|
+
---
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# Changelog v0.2.8 - 2026-03-13
|
|
2
|
+
|
|
3
|
+
### Updated
|
|
4
|
+
|
|
5
|
+
- 📊 **Provider quota information refreshed** – Updated free‑tier request limits for NVIDIA NIM, Groq, Cerebras, Replicate, DeepInfra, and Fireworks AI in `src/provider-metadata.js` and the README.
|
|
6
|
+
- 📖 **README requirements section** – Added the latest quota details for each provider (40 req/min for NVIDIA, 30‑50 RPM for Groq, generous dev tier for Cerebras, 6 req/min free Replicate, 200 concurrent DeepInfra, 10 req/min free Fireworks) and clarified payment‑method dependent limits.
|
|
7
|
+
- 🛠️ **No functional code changes** – Metadata updates only; all tests continue to pass.
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- 📊 **Added `--json` flag for scriptable output** - Output model results as JSON for automation, CI/CD, and monitoring dashboards. Example: `free-coding-models --tier S --json | jq '.[0].modelId'`
|
|
12
|
+
|
|
13
|
+
- 💾 **Added persistent ping cache** - Cache ping results for 5 minutes to speed up subsequent runs:
|
|
14
|
+
- Cache stored in `~/.free-coding-models.cache.json`
|
|
15
|
+
- Automatic cache refresh on startup if stale
|
|
16
|
+
- Saves API rate limits and reduces wait time
|
|
17
|
+
- Cache is saved on exit for next run
|
|
18
|
+
|
|
19
|
+
- 🔐 **Added config file security check with auto-fix** - Warns if `~/.free-coding-models.json` has insecure permissions:
|
|
20
|
+
- Checks file permissions on startup
|
|
21
|
+
- Warns if file is readable by others (security risk)
|
|
22
|
+
- Offers one-click auto-fix with `chmod 600`
|
|
23
|
+
- Shows manual fix command if auto-fix fails or is declined
|
|
24
|
+
|
|
25
|
+
- 🎨 **Added provider colors to logs and settings** - Provider names are now colored the same way as in the main table:
|
|
26
|
+
- Settings overlay (P) shows colored provider names
|
|
27
|
+
- Fiable mode output uses colored provider names
|
|
28
|
+
- Tool launcher messages use colored provider names
|
|
29
|
+
- Request log overlay (X) shows colored provider names
|
|
30
|
+
- Consistent visual experience across all UI elements
|
|
31
|
+
|
|
32
|
+
### Changed
|
|
33
|
+
|
|
34
|
+
- 📝 **Increased default log limit from 200 to 500 entries** - Request log overlay now shows up to 500 entries by default (previously 200)
|
|
35
|
+
- 🔀 **Added toggle for unlimited logs** - Press `A` in request log overlay to toggle between showing 500 entries or ALL logs
|
|
36
|
+
- ❌ **Enhanced visual failure indication in logs** - Failed requests with zero tokens now have:
|
|
37
|
+
- Dark red background (`rgb(40, 0, 0)`) on the entire row
|
|
38
|
+
- Model name in red
|
|
39
|
+
- Token column shows red cross emoji (✗) instead of token count
|
|
40
|
+
- Quick visual identification of errors vs successful requests
|
|
41
|
+
- 📝 **Updated documentation** - Added `--json` flag to CLI flags table in README.md with usage examples
|
|
42
|
+
|
|
43
|
+
- 🔌 Added `terminalcp` MCP server configuration for Claude Code to spawn and interact with the TUI headlessly. Agents can now visually test the terminal interface by capturing output and sending keystrokes programmatically. See AGENTS.md → "Testing the TUI with terminalcp" for usage.
|
|
44
|
+
- 🎨 **Added consistent branding header to all overlays** - Each overlay (Settings, Help, Log, Install Endpoints, Recommend, Feature Request, Bug Report) now displays:
|
|
45
|
+
- Free-coding-models logo with rocket emoji (🚀)
|
|
46
|
+
- Version number display
|
|
47
|
+
- Clean title on a separate line
|
|
48
|
+
- Consistent visual styling across all screens
|
|
49
|
+
- **Main table title now uses rocket emoji (🚀) and cyanBright color** for consistency with overlays
|
|
50
|
+
|
|
51
|
+
### Changed
|
|
52
|
+
|
|
53
|
+
- 📝 **Updated documentation** - Added `--json` flag to CLI flags table in README.md with usage examples
|
|
54
|
+
|
|
55
|
+
- 📊 **Improved ping progress visibility** - Moved ping completion counter from the W badge to the main status bar:
|
|
56
|
+
- Now shows as `📦 49/59` next to model status counts (up/timeout/down)
|
|
57
|
+
- More prominent placement makes it easier to see ping progress at a glance
|
|
58
|
+
- W badge still shows interval, mode, and countdown to next ping
|
|
59
|
+
|
|
60
|
+
- 🧹 **Removed unnecessary blank line** - Overlays (Settings P, Help K, Log X) no longer have a blank line at the top, giving more vertical space for content
|
|
61
|
+
|
|
62
|
+
- 🔽 **Removed duplicate "CONFIGURED ONLY" badge** - The header no longer shows the "CONFIGURED ONLY" indicator since it's already displayed in the footer hints. This reduces header clutter while keeping the information visible.
|
|
63
|
+
|
|
64
|
+
- 🎨 **Enhanced Request Log (X) with colors and visual indicators**:
|
|
65
|
+
- **Latency gradient**: Green (<500ms) → Orange (<1000ms) → Yellow (<1500ms) → Red (≥1500ms) for quick performance assessment
|
|
66
|
+
- **Token opacity**: Light green (low usage) → Medium green → Bright green (high usage, >30k tokens)
|
|
67
|
+
- **Model coloring**: Matches status color for visual consistency
|
|
68
|
+
- **Status colors** - Distinct colors for each HTTP code:
|
|
69
|
+
- `200` ✅ → Bright green
|
|
70
|
+
- `400` → Dark magenta (#8B008B)
|
|
71
|
+
- `401` → Dark orchid (#9932CC)
|
|
72
|
+
- `403` → Medium orchid (#BA55D3)
|
|
73
|
+
- `404` → Dark red (crimson)
|
|
74
|
+
- `413` → Tomato red (#FF6347)
|
|
75
|
+
- `429` → Dark orange (#FFB90F)
|
|
76
|
+
- `500` → Crimson (#DC143C)
|
|
77
|
+
- `502` → Medium violet red (#C71585)
|
|
78
|
+
- `503` → Medium purple (#9370DB)
|
|
79
|
+
- `5xx` → Magenta (other 5xx errors)
|
|
80
|
+
- `0` → Dim gray (timeout/unknown)
|
|
81
|
+
- **Fixed token display bug**: Corrected chalk function calls that were showing JavaScript code instead of token counts
|
|
82
|
+
|
|
83
|
+
- 💖 **Added "Buy me a coffee" link to footer**:
|
|
84
|
+
- Added in main TUI footer next to Contributors link (buymeacoffee.com/vavanessadev)
|
|
85
|
+
- Added in Settings overlay (P) footer with credits "Made with 💖 & ☕ by vava-nessa"
|
|
86
|
+
- Warm orange color for the coffee link to match the cozy theme
|
|
87
|
+
|
|
88
|
+
### Fixed
|
|
89
|
+
|
|
90
|
+
- 🖥️ **Overlays now use 100% terminal width** - All overlays (Settings P, Help K, Log X, Recommend Q, Feature J, Bug I) now dynamically adapt to full terminal width instead of fixed 116-column panels:
|
|
91
|
+
- Rate limits text is no longer truncated (full descriptions visible)
|
|
92
|
+
- Diagnostic messages wrap using available terminal width
|
|
93
|
+
- Separator lines extend to full terminal width
|
|
94
|
+
- Better readability on wider terminals
|
|
95
|
+
|
|
96
|
+
- 🔒 **Fixed profile loading to preserve API keys** - Loading a profile now MERGES apiKeys instead of replacing them:
|
|
97
|
+
- Keys in the profile override existing keys (allows profile-specific overrides)
|
|
98
|
+
- Keys NOT in the profile are preserved (prevents key loss when switching profiles)
|
|
99
|
+
- Fixes bug where switching profiles would cause API keys disappear
|
|
100
|
+
- Added test to verify merge behavior
|
|
101
|
+
|
|
102
|
+
- 📝 **Updated OpenRouter rate limits information**:
|
|
103
|
+
- README now includes detailed explanation of free tier quotas (50/day <$10 credits, 1000/day ≥$10)
|
|
104
|
+
- Settings overlay displays accurate rate limit text
|
|
105
|
+
- Added note about failed requests counting toward daily quota
|
|
106
|
+
|
|
107
|
+
---
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Changelog v0.2.9 - 2026-03-14
|
|
2
|
+
|
|
3
|
+
### Fixed
|
|
4
|
+
- **Discord link**: Updated expired invite URL to `https://discord.gg/f2AjwV2AN` in README and TUI footer
|
|
5
|
+
|
|
6
|
+
### Added
|
|
7
|
+
- **Discord link health-check workflow**: New GitHub Actions workflow (`check-discord-link.yml`) runs every 12 hours, validates the Discord invite via the Discord API, and auto-opens an issue labeled `discord-link` if the link becomes invalid
|
|
8
|
+
- **Pi provider metadata**: Added `pi` provider entry to `src/provider-metadata.js` with light blue color, pi.dev signup URL, and setup hint for `@mariozechner/pi-coding-agent` integration
|
|
9
|
+
|
|
10
|
+
---
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Changelog v0.3.0 - 2026-03-16
|
|
2
|
+
|
|
3
|
+
## 🚀 FCM Proxy V2 — Always-on background proxy service
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
- **Always-on background proxy service** — `launchd` (macOS) / `systemd` (Linux). All tools get free model access 24/7 without the TUI.
|
|
7
|
+
- **Anthropic wire format translation** — Claude Code works natively through FCM Proxy V2 (no external Python proxy needed).
|
|
8
|
+
- **`J` key shortcut** — Opens FCM Proxy V2 settings directly. Footer shows `📡 FCM Proxy V2 On/Off` badge.
|
|
9
|
+
- **Dedicated proxy overlay** — Full-page manager with status, restart, stop, force-kill, and log viewer.
|
|
10
|
+
- **CLI daemon subcommand** — `free-coding-models daemon [status|install|uninstall|restart|stop|logs]`
|
|
11
|
+
- **Stable proxy identity** — Persistent token & port (`18045`) survive restarts.
|
|
12
|
+
- **`GET /v1/health` + `/v1/stats`** — Health and stats endpoints for monitoring.
|
|
13
|
+
- **Hot-reload** — Config changes picked up automatically without restart.
|
|
14
|
+
- **Generalized proxy sync** (`src/proxy-sync.js`) — Single-endpoint config sync for 12 tools.
|
|
15
|
+
- **Retry backoff with jitter** — Progressive delays (0ms, 300ms, 800ms + jitter).
|
|
16
|
+
- **Automatic account cooldown** — 3+ consecutive failures → graduated cooldown (30s → 60s → 120s).
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
- **Rebranded to FCM Proxy V2** across all CLI messages, overlays, and services.
|
|
20
|
+
- **Proxy overlay generalized** — Tool selector, auto-sync toggle, and cleanup for any of 12 tools.
|
|
21
|
+
- **Feedback overlay redesigned** — `I` key opens unified "Feedback, bugs & requests".
|
|
22
|
+
- **Claude Code / Codex / Gemini require proxy** — Clear error message + instructions when proxy is off.
|
|
23
|
+
- **Goose launcher rewritten** — Writes `config.yaml` with `GOOSE_PROVIDER`/`GOOSE_MODEL` (replaces obsolete `OPENAI_HOST` env vars).
|
|
24
|
+
- **Crush launcher improved** — Removed `disable_default_providers`, sets both `models.large` + `models.small`.
|
|
25
|
+
- **Pi launcher improved** — Uses `--provider` and `--model` CLI flags for guaranteed auto-selection.
|
|
26
|
+
|
|
27
|
+
### Fixed
|
|
28
|
+
- 20+ security & stability fixes including body size limits, stack trace leak prevention, SSE buffer overflow guards, `execSync` timeout safety, crash protections, and more.
|
|
29
|
+
|
|
30
|
+
**Full changelog:** https://github.com/vava-nessa/free-coding-models/blob/main/CHANGELOG.md
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Changelog v0.3.1 - 2026-03-16
|
|
2
|
+
|
|
3
|
+
### Added
|
|
4
|
+
- **CLI `--help` output**: `free-coding-models --help` now prints the full launcher, analysis, config, and daemon command matrix in a non-interactive format.
|
|
5
|
+
|
|
6
|
+
### Fixed
|
|
7
|
+
- **Outdated-version footer alert**: The main TUI now shows a full-width red footer line with manual `npm install -g free-coding-models@latest` recovery instructions, but only when a newer npm version is actually known.
|
|
8
|
+
- **Claude Code proxy auth conflict**: Proxy launches now sanitize inherited env vars and use only `ANTHROPIC_AUTH_TOKEN` + `ANTHROPIC_BASE_URL`, matching the `free-claude-code` contract instead of mixing Anthropic auth modes.
|
|
9
|
+
- **Codex CLI proxy routing**: Codex launches now force an explicit custom provider config and the proxy now supports `POST /v1/responses`, so `codex-cli 0.114.0` no longer depends on the broken built-in OAuth/base-url path.
|
|
10
|
+
- **Anthropic token counting**: Added `POST /v1/messages/count_tokens` with a fast local estimate so Claude-compatible clients keep their budgeting flow through FCM Proxy V2.
|
|
11
|
+
- **Gemini proxy failure mode**: Gemini launch now preflights the installed CLI/config, blocks incompatible builds like `0.33.0`, and surfaces `~/.gemini/settings.json` schema errors instead of pretending proxy mode works.
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
- **Proxy auto-sync now follows the current tool**: The proxy overlay no longer asks for a separate active tool; cleanup and auto-sync now target the current `Z` mode whenever that tool supports persisted proxy config.
|
|
15
|
+
- **Install Endpoints (`Y`) is narrower on purpose**: `Claude Code`, `Codex`, and `Gemini` were removed from the install-target menu so the flow only lists tools with a stable persisted-config contract.
|
|
16
|
+
- **Proxy model listing is more Codex-friendly**: `GET /v1/models` now returns both the usual OpenAI `data` array and a `models` array with `slug` fields for clients that expect a richer catalog shape.
|
|
17
|
+
- **Launcher diagnostics now mention the beta state clearly**: Proxy-backed external tools now remind users that the integration is still stabilizing when a launch is blocked.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Changelog v0.3.11 - 2026-03-16
|
|
2
|
+
|
|
3
|
+
### Fixed
|
|
4
|
+
- Added early 404 response when a requested model has no registered accounts, ensuring clear error handling.
|
|
5
|
+
|
|
6
|
+
### Removed
|
|
7
|
+
- **Profile system**: Entire profile system removed to ensure API keys persist permanently across all sessions. No more profile switching causing API key loss.
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
- **`--proxy` foreground mode**: New `--proxy` flag starts FCM Proxy V2 in the current terminal with a live dashboard showing status, accounts, provider breakdown, and real-time request log. No daemon install needed — works from dev checkout too.
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- **Claude Code proxy auth**: Proxy now accepts `x-api-key` header (used by Anthropic SDK / Claude Code) in addition to `Authorization: Bearer`
|
|
14
|
+
- **Claude model fallback**: When `anthropicRouting` is all null, Claude model names now fall back to the first available account instead of returning "Model not found"
|
|
15
|
+
- **Proxy sync for Claude Code**: Added `claude-code` to `PROXY_SYNCABLE_TOOLS` so the env file is properly written/updated by proxy sync
|
|
16
|
+
- **Correct env var name**: Claude Code env file now exports `ANTHROPIC_API_KEY` (SDK standard) instead of `ANTHROPIC_AUTH_TOKEN`
|
|
17
|
+
- **Auto-source shell profile**: Claude Code env file is now automatically sourced in `.zshrc` / `.bashrc` / `.bash_profile`
|
|
18
|
+
- **Removed deleted profile functions from tests**: Cleaned up test imports after profile system removal from config.js
|
|
19
|
+
|
|
20
|
+
---
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Changelog v0.3.12 - 2026-03-17
|
|
2
|
+
|
|
3
|
+
> **Proxy / bridge update:** the current legacy proxy stack is now officially discontinued while we rebuild that whole layer from zero. This cleanup is intentional: Claude Code support, a smarter router, and a much more reliable external-tools bridge are being reworked as a separate, cleaner system and will come back in a future release. In the meantime, FCM has been cleaned up and narrowed to the stable direct-launch surface so the app stays solid for day-to-day usage.
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
- **Legacy proxy cleanup action**: Settings now includes a one-shot cleanup that removes discontinued proxy leftovers from older installs and explains that a more stable replacement is in progress.
|
|
7
|
+
|
|
8
|
+
### Changed
|
|
9
|
+
- **Stable direct-launch surface**: The app now documents and exposes only the supported direct-provider launcher workflow while the old bridge is rebuilt.
|
|
10
|
+
- **README reset**: Rewrote the documentation to match the real product surface, current tools, and current test commands.
|
|
11
|
+
- **Footer transparency**: The main TUI now shows an explicit magenta notice that the old proxy is disabled while the replacement bridge is being rebuilt.
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
- **Selected model now really becomes the launched tool default**: external tool launch prep now writes the chosen model into each tool config before spawn, and OpenClaw no longer hardcodes `nvidia/*` when another provider was selected.
|
|
15
|
+
|
|
16
|
+
### Removed
|
|
17
|
+
- **Global proxy stack**: Deleted the old proxy runtime, daemon flow, request-log flow, and related orphaned helpers/tests.
|
|
18
|
+
- **Hidden launcher bridges**: Claude Code, Codex, and Gemini are no longer exposed in the app while their integrations are being rewritten.
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
# Changelog v0.3.13 - 2026-03-17
|
|
2
|
+
|
|
3
|
+
### Fixed
|
|
4
|
+
- **Small Width Warnings toggle actually works again**: the Settings row now shows `Small Width Warnings` with clear enabled/disabled status, the startup overlay reacts immediately to the toggle, and the narrow-terminal warning now auto-hides after 2 seconds instead of 4.
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
# Changelog v0.3.14 - 2026-03-17
|
|
2
|
+
|
|
3
|
+
### Changed
|
|
4
|
+
- **Massive TUI Controller Extraction:** Extracted the main UI event loop and state machine out of `bin/free-coding-models.js` into a dedicated `src/app.js` controller. This cuts the main executable size drastically and makes the TUI architecture more modular and testable.
|
|
5
|
+
- **Robust Error Boundaries:** Wrapped all critical asynchronous operations, keypress handlers, UI render timers, and polling cycles with comprehensive `try/catch` blocks. Instead of the TUI crashing and destroying the terminal scrollback on unexpected errors, it will now gracefully exit the alternate screen buffer, print a formatted stack trace, and point users to the GitHub issue tracker and feedback form.
|
|
6
|
+
- **Global Crash Resiliency:** Added `uncaughtException` and `unhandledRejection` listeners at the entry point to guarantee terminal restoration even if a library fails catastrophically.
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
# Changelog v0.3.17 - 2026-03-18
|
|
2
|
+
|
|
3
|
+
### Added
|
|
4
|
+
- **Auto Light/Dark Theme**: Implemented automatic detection of the user's terminal theme (dark or light) so that the TUI is always readable. Added semantic color tokens, and users can override the theme as `dark`, `light`, or `auto` via the Settings interface.
|