openfox 2.0.86 → 2.0.88

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.
Files changed (53) hide show
  1. package/CHANGELOG.md +1048 -0
  2. package/dist/CHANGELOG.md +1048 -0
  3. package/dist/{chat-handler-AVGJQSYW.js → chat-handler-HB3XN6YE.js} +13 -13
  4. package/dist/{chunk-L4S5N3WV.js → chunk-2DWWLQVQ.js} +2 -2
  5. package/dist/{chunk-PUJO6ITQ.js → chunk-5UHHGQ7Q.js} +4 -4
  6. package/dist/{chunk-4YXILHQC.js → chunk-6YJ5W4KV.js} +75 -59
  7. package/dist/{chunk-BKH4SIWV.js → chunk-76ADL7EV.js} +7 -7
  8. package/dist/{chunk-5W2FIWDH.js → chunk-B53QORTX.js} +2 -2
  9. package/dist/{chunk-STFIEU5F.js → chunk-BNQTJFHQ.js} +3 -1
  10. package/dist/{chunk-FYYPQ27K.js → chunk-BOO6VR2T.js} +2 -2
  11. package/dist/{chunk-V5LOH363.js → chunk-DZGVDT2F.js} +4 -4
  12. package/dist/{chunk-B6VZS5SC.js → chunk-EWUDWUE3.js} +10 -10
  13. package/dist/chunk-FGK7QLCZ.js +7 -0
  14. package/dist/{chunk-3JYPDZT2.js → chunk-GLRBRQGJ.js} +2 -2
  15. package/dist/{chunk-CK7G2JLY.js → chunk-GO54OTGE.js} +11 -11
  16. package/dist/{chunk-ACL4YUJH.js → chunk-LD46ASP5.js} +2 -2
  17. package/dist/{chunk-SBVKT4GT.js → chunk-QMSTCWYK.js} +12 -12
  18. package/dist/{chunk-M6X72DYZ.js → chunk-SUT4OSXR.js} +3 -3
  19. package/dist/{chunk-OHKBGMLO.js → chunk-TW3PNLMA.js} +2 -2
  20. package/dist/{chunk-H765CIHN.js → chunk-TXGW36XL.js} +2 -2
  21. package/dist/{chunk-WVMOGE7U.js → chunk-V4V6UGZZ.js} +3 -3
  22. package/dist/{chunk-MTZ3PC6K.js → chunk-WWOZHM6D.js} +2 -2
  23. package/dist/{chunk-W23S3TU5.js → chunk-XNPVKFOJ.js} +2 -2
  24. package/dist/cli/dev.js +1 -1
  25. package/dist/cli/index.js +1 -1
  26. package/dist/{client-C2P67MA4.js → client-W3AYWMJM.js} +4 -4
  27. package/dist/{compactor-2YT66FDZ.js → compactor-7JU5CXSG.js} +9 -9
  28. package/dist/{events-OEDAFNEI.js → events-Z3AJVFSP.js} +6 -6
  29. package/dist/{folding-FGTCP73N.js → folding-LWKKC4RQ.js} +4 -4
  30. package/dist/{http-client-I52X7GQB.js → http-client-LITXNO6R.js} +3 -3
  31. package/dist/{manager-TD2UT62O.js → manager-657CWC5Z.js} +4 -4
  32. package/dist/{orchestrator-AGJ7EMFZ.js → orchestrator-KTOC65UU.js} +12 -12
  33. package/dist/package.json +3 -2
  34. package/dist/{path-security-DWL3R2SF.js → path-security-XXWK5ZCL.js} +7 -7
  35. package/dist/{platform-OYKGQ7Z3.js → platform-MVVEGKPE.js} +3 -3
  36. package/dist/{processor-VCDVG7RV.js → processor-3UTJE7EQ.js} +13 -13
  37. package/dist/{provider-YNYYAR6C.js → provider-YRNABOCC.js} +5 -5
  38. package/dist/{provider-manager-3DW3A2VC.js → provider-manager-W4MEPXB5.js} +5 -5
  39. package/dist/{serve-6GYDVM34.js → serve-AZ5QSSHE.js} +19 -19
  40. package/dist/server/index.js +18 -18
  41. package/dist/{server-3X46OIYC.js → server-T4YPLZDF.js} +14 -14
  42. package/dist/{sessions-V3BF2OTU.js → sessions-KDQ5TMHX.js} +4 -4
  43. package/dist/{settings-AGNYWEIE.js → settings-SM3K6S74.js} +2 -2
  44. package/dist/{tools-X65P65KF.js → tools-A2XBFPRO.js} +11 -11
  45. package/dist/{update-EOPW72IR.js → update-4D76LEVO.js} +2 -2
  46. package/dist/web/assets/index-BRy1cx3_.js +306 -0
  47. package/dist/web/assets/index-D8gCHkwE.css +32 -0
  48. package/dist/web/index.html +2 -2
  49. package/dist/web/sw.js +1 -1
  50. package/package.json +3 -2
  51. package/dist/chunk-2Y2K66PD.js +0 -7
  52. package/dist/web/assets/index-CsWZt1m8.css +0 -32
  53. package/dist/web/assets/index-xfwgrYl9.js +0 -305
package/CHANGELOG.md ADDED
@@ -0,0 +1,1048 @@
1
+ # Changelog
2
+
3
+ ## 2.0.88 - 2026-07-23
4
+
5
+ ### Features
6
+
7
+ - Changelog modal shows "What's New" on update, toggleable in settings
8
+ - Ctrl+D toggles the criteria sidebar (right sidebar)
9
+ - Ctrl+S closes the left sidebar when search is already focused
10
+ - 10 new customizable theme tokens for LLM response colors
11
+
12
+ ### Enhancements
13
+
14
+ - 8 new built-in theme presets (Catppuccin, Night Owl, Rose Pine, etc.)
15
+ - Syntax highlighting adapts to your selected theme preset
16
+ - System theme mode lets you choose separate presets for dark and light
17
+ - Theme editor groups presets by dark/light mode
18
+ - Header tooltips show live keyboard shortcut hints
19
+ - Keybindings settings includes "Toggle Criteria Sidebar" binding
20
+
21
+ ### Bug Fixes
22
+
23
+ - Error banner persists until dismissed or new message sent
24
+ - Selecting a user preset while in system theme mode works correctly
25
+ - Active user preset is properly highlighted in theme picker
26
+ - CHANGELOG.md now ships with the npm package, fixing production builds
27
+
28
+ ## 2.0.87 - 2026-07-22
29
+
30
+ ### Bug Fixes
31
+
32
+ - **AskUserCard no longer crashes when the LLM returns options as a string** — if the model produces a malformed `options` field (a string instead of an array), the card gracefully falls back to a free-text input instead of throwing `options.map is not a function`.
33
+
34
+ ## 2.0.86 - 2026-07-22
35
+
36
+ ### Enhancements
37
+
38
+ - **Unified time formatting across the UI** — consistent human-readable durations (decimals for <10s, integer seconds for 10-59s, m/s for <1h, h/m/s for ≥1h).
39
+
40
+ ### Bug Fixes
41
+
42
+ - **Dev server "Open" button works after workspace switch** — resolved URL and inspect proxy port now propagate correctly through WebSocket state updates.
43
+ - **Mode-switch race condition fixed** — commands sent with an agent mode switch now await the mode change before dispatching, preventing execution in the wrong mode.
44
+
45
+ ## 2.0.85 - 2026-07-22
46
+
47
+ ### Features
48
+
49
+ - **Clickable session links** — error messages and tool outputs that reference a session now include a clickable link to open it directly.
50
+ - **Force-delete workspaces** — delete a workspace even when another session is using it. Conflicting sessions are shown as clickable links.
51
+ - **Configurable default agent** — choose which agent type (builder, planner, etc.) new sessions default to, from Settings, config file, or env var.
52
+
53
+ ### Enhancements
54
+
55
+ - **Agent display names shown instead of internal IDs** — the agent selector now shows human-readable names.
56
+ - **Delete confirmation for custom agents** — prevents accidental deletion of custom agent definitions.
57
+ - **Slug validation for custom agents** — built-in agent IDs cannot be reused as custom agent slugs.
58
+
59
+ ### Bug Fixes
60
+
61
+ - **Snapshot metadata no longer silently lost** — metadata entries (criteria, test cases, review findings) are now merged instead of replaced when post-snapshot events exist.
62
+ - **Advanced model params preserved when reopening provider modal** — temperature, topP, topK, maxTokens, compactionThreshold no longer silently reset to defaults when editing a model.
63
+
64
+ ## 2.0.84 - 2026-07-22
65
+
66
+ ### Features
67
+
68
+ - **Search sessions in the sidebar** — type to instantly filter your session list by title or recent prompts. Matching text is highlighted, a match counter shows results, and you can navigate with Arrow Up/Down and press Enter to open one. Press Ctrl+S from anywhere to jump straight to the search box.
69
+
70
+ ### Enhancements
71
+
72
+ - **Graceful handling of non-git projects** — when a project isn't a git repository, workspace and branch management options are hidden from the sidebar with a clear explanation.
73
+
74
+ ### Bug Fixes
75
+
76
+ - **Path confirmation buttons now below tool output** — the Deny/Allow/Allow Everything buttons appear after the tool's rendered content, so you see what you're approving before deciding.
77
+ - **Message search no longer scrolls the timeline to the bottom** — navigating between search results keeps the matched message centered in view.
78
+ - **New workspace branches use the right starting point** — creating a workspace branch without specifying a source branch now forks from your currently active branch rather than the remote's default.
79
+
80
+ ## 2.0.83 - 2026-07-22
81
+
82
+ ### Bug Fixes
83
+
84
+ - **Windows reliability fix** — `FileNotReadError` on newly created files resolved by fixing cache key normalization for Windows paths.
85
+ - **Git operations fully isolated from hook environment** — all inherited `GIT_*` environment variables are now stripped from spawned git processes, preventing husky/pre-commit interference.
86
+ - **step_done UI consistency** — border and spacing added to match the visual treatment of regular tool call displays.
87
+
88
+ ## 2.0.82 - 2026-07-21
89
+
90
+ ### Features
91
+
92
+ - **HTTP proxy support for LLM providers** — route LLM traffic through an HTTP proxy, configured per provider or globally.
93
+ - **Provider name display and autocomplete search** — the provider selector now shows the provider name next to the model and supports autocomplete-style search.
94
+ - **Keyboard navigation and configurable Ctrl+M shortcut** — navigate the provider selector with arrow keys; Ctrl+M shortcut is now configurable in Settings → Keybindings.
95
+
96
+ ### Enhancements
97
+
98
+ - **Removed redundant branch consistency check** — the check that compared local vs remote branch state on every action was removed, speeding up common operations.
99
+
100
+ ### Bug Fixes
101
+
102
+ - **Parallel sub-agent calls no longer fragment display groups** — multiple sub-agent results appearing at the same time now stay grouped correctly in the chat feed.
103
+
104
+ ## 2.0.81 - 2026-07-21
105
+
106
+ ### Enhancements
107
+
108
+ - **Workspace and git confirmations are now opt-in** — the agent moves faster without unnecessary interruption. Enable "Confirm on workspace & git actions" in Settings → Tools if you want an extra layer of approval.
109
+ - **Removed redundant escape-detection logic** — the path sandbox already prevents any file access outside the project directory, so noisy checks for `cd ..`, `git -C`, etc. served no purpose and are removed.
110
+
111
+ ### Bug Fixes
112
+
113
+ - **File-read previews consistently cap at max height** — code, text, and image previews in the chat now respect their height limit even when a tool call is expanded, fixing a layout issue where previews could grow without bounds.
114
+
115
+ ## 2.0.80 - 2026-07-21
116
+
117
+ ### Features
118
+
119
+ - **Per-model auto-compaction threshold** — configure when context compaction kicks off independently for each model in the provider settings UI. A built-in safety ceiling guarantees at least 5K tokens of headroom regardless of your setting.
120
+
121
+ ### Enhancements
122
+
123
+ - **Fewer false-positive security prompts** — running `cd` to an absolute path inside your project directory no longer triggers an unnecessary confirmation dialog. The escape detector is now workdir-aware.
124
+ - **Softer tool descriptions** — the `run_command` tool no longer threatens users with warnings about prepending `cd`, reducing confusion for newcomers.
125
+
126
+ ### Bug Fixes
127
+
128
+ - **Agent mode no longer silently reverts to Planner** — switching to Builder or Chat mode now sticks. Previously, navigating away from a session and coming back could reset the mode.
129
+ - **Content no longer jumps when scrollbars appear** — the chat feed, sidebars, log viewer, and readonly session view now reserve space for the scrollbar gutter, eliminating jarring layout shifts.
130
+ - **Sequential security confirmations no longer collide** — when a single tool action triggers multiple confirmation prompts, each now gets its own unique ID.
131
+ - **Path confirmation errors are now surfaced** — if the server fails to process a path confirmation, the error is logged to the console instead of being silently swallowed.
132
+
133
+ ## 2.0.79 - 2026-07-21
134
+
135
+ ### Bug Fixes
136
+
137
+ - **F5 refresh restored on deep SPA routes** — pressing F5 on a page like `/p/my-project/s/some-session` no longer breaks. The Vite base was reverted to `'/'` with `OPENFOX_BASE_PATH` env override for subpath deployments.
138
+
139
+ ### Enhancements
140
+
141
+ - **`OPENFOX_BASE_PATH` documented in README** — enabling subpath deployments behind a reverse proxy is now discoverable.
142
+
143
+ ## 2.0.78 - 2026-07-21
144
+
145
+ ### Features
146
+
147
+ - **Custom workspace root directory per project** — instead of always storing workspaces under the global directory, you can now configure any path as the workspace root. The UI validates the path and warns if existing workspaces would become orphaned.
148
+ - **Git mutation safety with user confirmation** — dangerous git commands (checkout, push, reset, rebase, etc.) and attempts to escape the workspace now pop a confirmation dialog instead of being silently blocked.
149
+ - **Branch persistence across reloads** — the currently checked-out branch survives page refreshes and session restarts.
150
+ - **Source branch selection when branching** — when creating a new branch, you can now specify which branch to fork from.
151
+
152
+ ### Enhancements
153
+
154
+ - **Massively faster session loading** — sessions with thousands of messages load 13x faster for message processing and 29% faster HTTP responses. Large conversations are truncated server-side before reaching the UI.
155
+ - **Terminal opens in your workspace directory** — the integrated terminal now defaults to the active workspace path instead of the project root.
156
+
157
+ ### Bug Fixes
158
+
159
+ - **Reverse proxy subpath deployments now work** — all API calls, WebSocket connections, and asset paths are automatically prefixed when hosted at a subpath.
160
+ - **No more "vv2.0.77" version display** — the auto-update panel no longer doubles the "v" prefix.
161
+ - **`npm install -g openfox` succeeds on Debian 13 / npm v12+** — systems that require explicit `allowScripts` declarations for native modules no longer fail during installation.
162
+
163
+ ## 2.0.77 - 2026-07-20
164
+
165
+ ### Features
166
+
167
+ - **PDFs with embedded images are now fully understood** — diagrams, screenshots, and figures inside PDFs are extracted and sent to vision-capable models as images, or described via a fallback vision model for non-vision models. Previously, embedded images were silently lost.
168
+ - **Configure a timeout for slow MCP tools** — set a per-server timeout (in seconds) from the Tools settings tab or via the `mcp_config` tool. Hanging or slow tool calls now abort gracefully instead of blocking indefinitely.
169
+ - **View and manage session metadata in a full-screen modal** — click any metadata section in the sidebar (acceptance criteria, review findings, todos, etc.) to open a spacious modal where you can add, edit, delete, and cycle status on entries without truncation.
170
+
171
+ ### Enhancements
172
+
173
+ - **Message bubble expands during Edit & Resend** — when editing a message, the input area now stretches to full width, giving you far more room to work with long prompts.
174
+
175
+ ### Bug Fixes
176
+
177
+ - **Agent no longer stalls after a failed tool call on LM Studio / Qwen** — the agent loop now recovers and continues generating normally instead of silently stopping.
178
+ - **MCP servers with broken outputSchema references now connect successfully** — servers like Stitch that include malformed `$ref` values in their tool schemas no longer crash AJV validation.
179
+ - **Workflow button cosmetics fixed** — the three-dot menu button now has comfortable padding, and standalone workflow buttons show clean rounded corners.
180
+
181
+ ## 2.0.76 - 2026-07-20
182
+
183
+ ### Features
184
+
185
+ - **Google Antigravity plugin** — new plugin with browser-based auth flow for Google providers.
186
+
187
+ ### Bug Fixes
188
+
189
+ - **Sub-agent alias tool calls transformed before event emission** — tool calls made through aliased names are now correctly mapped before reaching the event system.
190
+ - **@ file autocomplete shows files beyond depth 5** — the file autocomplete in the chat input now searches deeper than 5 directory levels.
191
+
192
+ ## 2.0.75 - 2026-07-19
193
+
194
+ ### Features
195
+
196
+ - **VSCode integration for workspace and git panel links** — click to open files in VSCode directly from the OpenFox UI, with WSL path translation support.
197
+ - **Cross-session confirmation broadcast** — confirmations (like path approvals) now broadcast across all sessions, so you approve once and it applies everywhere.
198
+ - **Native browser dialogs replaced with React Modal components** — all remaining `alert()`, `confirm()`, and `prompt()` calls are now rendered as proper modals within the app.
199
+
200
+ ### Bug Fixes
201
+
202
+ - **Persistent launcher installation in CLI** — `openfox install-launcher` now correctly registers the desktop entry and survives system updates.
203
+
204
+ ## 2.0.74 - 2026-07-18
205
+
206
+ ### Features
207
+
208
+ - **Update check feedback and global availability badge** — the update checker now shows a badge in the header when a new version is available.
209
+ - **Keyboard shortcut removal in settings** — you can now remove (not just reassign) keyboard shortcuts in Settings → Keybindings.
210
+ - **Inline message editing with visible action buttons** — user messages now show Edit and Resend buttons on hover, making it obvious you can modify your prompts.
211
+ - **Improved dev mode version check and page title** — the page title now reflects the current version and dev mode status.
212
+
213
+ ### Bug Fixes
214
+
215
+ - **Session-scoped branch operations** — branch operations are now correctly scoped to the session's workspace, preventing cross-session git conflicts.
216
+ - **Config directory created before auth.key write** — ensures the config directory exists before writing the authentication key during first-time setup.
217
+
218
+ ## 2.0.73 - 2026-07-18
219
+
220
+ ### Bug Fixes
221
+
222
+ - **Renamed worktree to workspace in builtin agent definitions** — all built-in agent configurations now use the term "workspace" consistently, fixing tool access issues after the worktree → workspace rename.
223
+
224
+ ## 2.0.72 - 2026-07-18
225
+
226
+ ### Features
227
+
228
+ - **Windows support** — OpenFox now runs natively on Windows. Fixed: visible console windows popping up per command, broken path handling on Windows-style paths, orphaned cmd.exe processes, and silent command failures from incorrect shell quoting. The full test suite (2200+ tests) passes on Windows 11.
229
+ - **Workspaces are now named clones, not git worktrees** — a workspace is a full `git clone --shared` copy of your project, independent of any branch name. You pick the name, you pick the branch. Switching is a single action.
230
+ - **Simplified workspace tool actions** — the workspace tool now has just three actions: `switch`, `list`, and `delete`. The old `status` and `list_branches` actions are removed.
231
+ - **Automatic staleness hints** — when you switch to a workspace that has fallen behind, the agent tells you how many commits behind you are and suggests pulling.
232
+
233
+ ### Enhancements
234
+
235
+ - **Compact `step_done` display** — the `step_done` tool call now renders as a tiny inline pill instead of a bulky collapsible card.
236
+
237
+ ### Bug Fixes
238
+
239
+ - **Stable message ordering** — messages no longer appear out of sequence when a tool result arrives at the exact same moment as a user message.
240
+ - **Correct sub-agent token display** — sub-agent context usage no longer overwrites the main agent's displayed counters.
241
+ - **Accurate staleness detection** — the behind-count comparison now fetches remote refs before checking, so the staleness hint reflects real divergence.
242
+
243
+ ## 2.0.71 - 2026-07-18
244
+
245
+ ### Enhancements
246
+
247
+ - **Windows is now fully supported** — `openfox update`, `openfox service`, and `openfox pwa install` all work on Windows. Previously they relied on bash scripts, systemd, and curl.
248
+
249
+ ### Bug Fixes
250
+
251
+ - **File attachments no longer silently dropped** with transport-based LLM providers (e.g. GitHub Copilot proxy). Text files, PDFs, and images are now resolved into the message content before reaching the provider.
252
+ - **Cancelling or timing out a command with background processes no longer hangs** — the entire process tree is killed reliably and the tool returns promptly.
253
+ - **Workflow shell commands that time out now clean up all child processes** — previously only the top-level shell was killed, leaving orphans.
254
+ - **The chat no longer appears stuck when the agent asks a question** — the client now receives a proper `waiting_for_user` signal.
255
+ - **Long provider URLs no longer break the onboarding card layout** — URLs are truncated with ellipsis instead of overflowing.
256
+
257
+ ## 2.0.70 - 2026-07-17
258
+
259
+ ### Bug Fixes
260
+
261
+ - **Plugin registry path resolution fixed** — the plugin registry now loads correctly in production builds (was looking in the wrong directory).
262
+ - **MCP form logic deduplicated** — internal refactoring of MCP form validation with no user-facing change.
263
+
264
+ ## 2.0.69 - 2026-07-17
265
+
266
+ ### Features
267
+
268
+ - **Plugin Management UI** — browse the built-in plugin registry (ChatGPT, GitHub Copilot), install, update, and remove plugins directly from Settings. Add custom plugins from any GitHub URL.
269
+ - **PDF, text, and SVG file attachments** — drag-and-drop or upload PDFs, text files, SVGs, JSON, XML, YAML, JS, shell scripts alongside images. Non-image files appear as compact file cards with extension icon, size, and inline text preview.
270
+ - **Windows shell picker** — choose between cmd, PowerShell, or Git Bash for the agent's shell in Settings → Tools. The system prompt tells the model which shell is active.
271
+ - **Edit existing MCP server configurations** — modify the command, arguments, environment variables, or transport type of any configured MCP server from the UI. No more delete-and-re-add.
272
+ - **Multiline acceptance criteria paste** — paste a block of text into the criteria editor; each non-empty line becomes a separate criterion.
273
+ - **Session metadata visible in sidebar** — custom metadata keys set by the agent or tools now appear in the session sidebar alongside built-in fields.
274
+ - **Workspace system overhaul** — workspaces are now named clones (`git clone --shared`) instead of git worktrees. A workspace name is independent of its branch. Configure per-workspace setup commands via `.openfox/workspace.json`.
275
+
276
+ ### Enhancements
277
+
278
+ - **Long-session performance** — chat feeds with hundreds of messages now render faster and stay responsive during scrolling and hovering.
279
+ - **Sub-agent history always visible** — collapsed sub-agent panels show the full message history again.
280
+ - **Workspace staleness hints** — when switching to a workspace that's behind its source branch, the agent sees a hint and can suggest pulling.
281
+ - **Simplified workspace tool** — three actions: `list`, `switch`, `delete`. The old `status` and `list_branches` actions are gone.
282
+ - **Delete workspaces from the UI** — with inline confirmation. If you're in the deleted workspace, you're automatically switched back to the original project.
283
+
284
+ ### Bug Fixes
285
+
286
+ - **Windows: folder selection, CLI commands, LSP servers, unit tests all fixed** — OpenFox now runs fully on Windows.
287
+ - **Provider: local toggle not saving, stale adapters on engine switch, file attachments lost with transport plugins** — all resolved.
288
+ - **Messages: scrambled order on fast replies, sub-agent token counts overwriting main agent, step_done renders as compact pill, empty tool arguments handled gracefully** — all fixed.
289
+ - **Commands: abort no longer hangs with backgrounded processes, timeouts kill full process tree** — clean teardown guaranteed.
290
+ - **Dev server: port collisions eliminated, lifecycle tied to workspace** — no more orphaned processes.
291
+ - **Git: wrong-repo corruption from inherited env vars fixed, accurate staleness info** — git operations are now safe.
292
+ - **Path security: paths containing "s/" no longer corrupted** — false confirmation prompts eliminated.
293
+
294
+ ## 2.0.68 - 2026-07-17
295
+
296
+ ### Features
297
+
298
+ - **Plugin Management UI** — browse the built-in plugin registry, install plugins from GitHub, manage installed plugins from Settings.
299
+ - **PDF, text, and SVG file attachments** — drag-and-drop or upload non-image files alongside images. Non-image files appear as compact file cards.
300
+ - **Windows shell picker** — choose between cmd, PowerShell, or Git Bash for the agent's shell.
301
+ - **Configurable worktree asset strategy** — control how `.gitignored` files are handled in git worktrees via `.openfox/worktree.json`.
302
+
303
+ ### Enhancements
304
+
305
+ - **Multiline acceptance criteria paste** — paste multiple lines at once; each becomes a separate criterion.
306
+ - **Worktree strategy UI polished** — matches the app's danger-level pill-button pattern.
307
+
308
+ ### Bug Fixes
309
+
310
+ - **Stale provider state when switching inference engines** — adapter settings from the previous engine are now cleared.
311
+ - **Local provider toggle not saved when unchecked** — now persists across restarts.
312
+ - **Crash on empty tool call arguments** — handled gracefully with a parse error logged.
313
+ - **False "outside workdir" prompts on Windows** — command switches like `dir /s` no longer trigger spurious confirmations.
314
+ - **Folder selection broken on Windows** — backslash paths now work correctly.
315
+ - **False path-confirmation prompts from "s/" in paths** — sed-substitution sanitizer no longer corrupts paths containing "s/".
316
+ - **Non-vision models lose image filename context** — image descriptions now include `[Image: filename]` wrapper.
317
+ - **Worktree asset default changed to `skip`** — nothing is symlinked or copied unless explicitly configured.
318
+ - **Symlink corruption during worktree asset copy** — symlink targets are now preserved verbatim.
319
+ - **Per-worktree dev server lifecycle** — closing a worktree session stops its dev server. Git status refreshes immediately on worktree change.
320
+ - **Inspect proxy port collisions** — port probing now uses actual bind attempts instead of stale tracking.
321
+ - **Git command interference from inherited environment** — `GIT_DIR`, `GIT_INDEX_FILE`, etc. are stripped from spawned git commands.
322
+
323
+ ## 2.0.67 - 2026-07-17
324
+
325
+ ### Features
326
+
327
+ - **Windows shell picker** — choose between cmd.exe, PowerShell, or Git Bash for agent commands and integrated terminals. Git Bash gives the agent a Unix-like toolset.
328
+ - **Configurable worktree asset strategy** — control how .gitignored files are handled when creating git worktrees: symlink, copy, or skip.
329
+
330
+ ### Bug Fixes
331
+
332
+ - **Safer worktree default** — default strategy changed from symlink to skip. Nothing is linked or copied unless you explicitly configure it.
333
+ - **Fixed gitignored directory detection** — `git ls-files` now correctly identifies ignored directories.
334
+ - **Symlinks preserved during copy** — relative symlinks inside node_modules are now preserved as relative symlinks when copying into a worktree.
335
+ - **No more orphaned dev servers on worktree close** — closing a git worktree now stops its associated dev server process.
336
+ - **Reliable inspect proxy ports** — port allocation now uses real bind probes instead of stale tracking, eliminating race conditions.
337
+
338
+ ## 2.0.66 - 2026-07-17
339
+
340
+ ### Features
341
+
342
+ - **Git worktrees for parallel sessions** — run multiple sessions on the same project simultaneously using git worktrees. Each session gets its own isolated branch and working directory. The dev server automatically detects worktrees and assigns free ports.
343
+ - **Multiline acceptance criteria paste** — paste a list from your issue tracker; each line becomes a separate criterion.
344
+
345
+ ### Bug Fixes
346
+
347
+ - **Switching inference engines no longer leaves stale adapters** — auth and transport adapters are properly cleared on engine switch.
348
+ - **Empty tool call arguments handled gracefully** — no more crashes when the LLM emits malformed JSON.
349
+ - **Windows folder selection works** — backslash-separated paths are now parsed correctly.
350
+ - **Windows command switches no longer trigger false security prompts** — `dir /s` and similar are correctly distinguished from absolute paths.
351
+ - **Local provider toggle saves correctly** — unchecked state is now persisted.
352
+ - **Running inside a git hook no longer corrupts the parent repo** — inherited `GIT_DIR` etc. are stripped.
353
+ - **Colored command output no longer prematurely truncated** — ANSI codes are stripped before measuring output limits.
354
+ - **Context token counts no longer stuck at 0** — compaction counters work correctly.
355
+ - **Workflow executor uses correct worktree directory** — operates on the worktree root instead of the project root.
356
+
357
+ ## 2.0.65 - 2026-07-16
358
+
359
+ ### Features
360
+
361
+ - **RTK auto-rewrite for shell commands** — enable in Settings → Tools → Token Optimization, and every `run_command` invocation is piped through `rtk rewrite` for leaner, token-efficient output.
362
+
363
+ ### Enhancements
364
+
365
+ - **Model selector dropdown now flexes to fit content** — no more truncated provider or model labels.
366
+
367
+ ## 2.0.64 - 2026-07-15
368
+
369
+ ### Bug Fixes
370
+
371
+ - **Sub-agents no longer hang on out-of-project file reads** — path confirmation dialogs that scrolled out of view in the small sub-agent window are now skipped. Access is denied immediately with a clear error.
372
+
373
+ ### Enhancements
374
+
375
+ - **Sub-agent tool alias resolution is now more reliable** — handled as an explicit dispatch stage rather than a fallback error handler.
376
+
377
+ ## 2.0.63 - 2026-07-15
378
+
379
+ ### Features
380
+
381
+ - **Connect your ChatGPT Plus/Pro account** — install the `openfox-chatgpt` plugin to authenticate with your OpenAI account via device authorization. Unlocks models like GPT-5.6 with WebSocket streaming.
382
+ - **Third-party provider plugin system** — anyone can write a plugin that adds custom authentication flows, API transports, and provider presets. Plugins appear as tiles in the "Add Provider" wizard.
383
+ - **Reasoning effort dropdown** — when a model supports reasoning effort levels, you get a dropdown selector instead of a free-text field.
384
+
385
+ ### Enhancements
386
+
387
+ - **Rich tool output in the chat feed** — `call_sub_agent`, `web_search`, `web_fetch`, `load_skill`, `mcp_config`, `dev_server`, `background_process`, and `trace_code` results now render in human-readable formats instead of raw JSON.
388
+ - **Truncation warnings** — when a tool's output is cut off, a prominent "Output truncated" badge appears inline.
389
+ - **Auto-expand all tools in verbose mode** — every tool call expands automatically for full visibility.
390
+ - **Cleaner `step_done` display** — completed steps show as a simple header row.
391
+ - **More readable collapsed tool headers** — tool argument summaries now show meaningful labels.
392
+ - **Increased result viewport** — generic fallback results grew from `max-h-32` to `max-h-[60vh]`.
393
+ - **Onboarding navigates to home after setup** — instead of going back in history.
394
+ - **Closing "Add Provider" without saving cleans up** — no orphaned providers left behind.
395
+ - **Provider names from catalog** — model lists show human-readable names instead of raw model IDs.
396
+
397
+ ### Bug Fixes
398
+
399
+ - **SSE errors no longer crash the orchestrator** — error messages are surfaced instead of crashing with a missing-choices exception.
400
+ - **Session-scoped provider clients preserve auth context** — each session creates its own LLM client, ensuring plugin-based transports apply correctly.
401
+ - **Auto model resolution persisted to sessions** — the resolved concrete model is written back to the session record.
402
+ - **Provider config changes rebuild the active client** — editing a provider takes effect immediately.
403
+ - **Memory leak fixed in provider modals** — timer intervals for device-code auth are properly cleaned up on unmount.
404
+ - **Custom global config paths respected** — auth flows now use the configured path instead of hard-coding the default.
405
+
406
+ ## 2.0.62 - 2026-07-15
407
+
408
+ ### Features
409
+
410
+ - **PDF text extraction** — `read_file` and `web_fetch` now detect PDF files and extract their text content page by page, including document metadata. Password-protected and scanned PDFs are handled with clear error messages.
411
+
412
+ ### Enhancements
413
+
414
+ - **MCP config changes now ask you to confirm** — adding, removing, or toggling MCP tools no longer silently rebuilds the system prompt. You control when to apply changes.
415
+
416
+ ### Bug Fixes
417
+
418
+ - **No more false path-confirmation popups from git commit messages** — path-like strings inside `-m`/`--message` arguments are now correctly ignored during path extraction.
419
+
420
+ ## 2.0.61 - 2026-07-15
421
+
422
+ ### Features
423
+
424
+ - **Web search tool** — the agent can now search the web using Tavily or SearXNG, configured in Settings → Tools.
425
+
426
+ ### Enhancements
427
+
428
+ - **Web search test button** — test your search configuration with a success/failure indicator.
429
+ - **Web search config moved to Tools tab** — alongside other tool settings for discoverability.
430
+
431
+ ### Bug Fixes
432
+
433
+ - **Portable skill packages now included in build** — skills created in the portable format are correctly copied to the distribution directory.
434
+
435
+ ## 2.0.60 - 2026-07-15
436
+
437
+ ### Features
438
+
439
+ - **Drag-and-drop skill installation** — drop a folder containing `SKILL.md` plus assets onto the Skills panel to install it as a portable skill package.
440
+ - **External skill libraries** — pick any directory on your filesystem as a shared skill library. Skills stored there appear alongside your built-in and user skills.
441
+ - **Enable/disable skills without deleting** — each skill has a toggle switch. Disabling keeps the skill file intact but removes it from the active set.
442
+ - **Portable skill format** — skills are now directories (`my-skill/SKILL.md`) instead of flat `.skill.md` files. Assets live alongside the instructions.
443
+
444
+ ### Enhancements
445
+
446
+ - **Directory browser overhaul** — breadcrumbs and search bar stay pinned while the folder list scrolls. Each folder has its own "Select" button. Keyboard navigation reworked with Enter to select, Shift+Enter to navigate in.
447
+ - **Skill diagnostics** — warnings appear for naming convention violations, ID/directory mismatches, and duplicate skills.
448
+
449
+ ### Bug Fixes
450
+
451
+ - **Accidental folder selection eliminated** — clicking a folder row only navigates; selection requires an explicit button press.
452
+
453
+ ## 2.0.59 - 2026-07-15
454
+
455
+ ### Enhancements
456
+
457
+ - **File search skips junk directories** — `node_modules`, `.git`, `dist`, `.next`, `build`, `coverage` are automatically excluded. Results respect your `.gitignore`.
458
+
459
+ ### Bug Fixes
460
+
461
+ - **Heredoc comments no longer trigger false path-confirmation prompts** — lines like `// @vitest-environment` inside multi-line commands are correctly ignored.
462
+ - **Windows no longer flashes a console window for every child process** — shell commands, git operations, LSP servers, and auto-updates run silently.
463
+
464
+ ## 2.0.58 - 2026-07-14
465
+
466
+ ### Features
467
+
468
+ - **Search sessions on the homepage** — type any keyword to instantly filter your sessions. Matches are found in titles, recent prompts, and project names, with relevance ranking and character highlighting.
469
+
470
+ ### Enhancements
471
+
472
+ - **LM Studio is now a first-class backend** — a dedicated LM Studio button (port 1234) in the provider setup modal. OpenFox queries LM Studio's native API for accurate context length detection.
473
+
474
+ ## 2.0.57 - 2026-07-14
475
+
476
+ ### Bug Fixes
477
+
478
+ - **Model settings no longer leak between concurrent sessions** — running two sessions in parallel with different providers no longer causes parameters to flip unpredictably.
479
+ - **Speculative cache warming now respects the session's provider and model** — warmup requests use the correct parameters, so the cache is actually primed for the right configuration.
480
+ - **Aborting a shell command now kills the process tree immediately** — SIGKILL is sent instantly instead of waiting 200ms between SIGTERM and SIGKILL.
481
+
482
+ ## 2.0.56 - 2026-07-14
483
+
484
+ ### Features
485
+
486
+ - **Syntax highlighting for any programming language** — Shiki dynamically loads language definitions on demand. PHP, Rust, Go, and dozens of other languages render correctly instead of throwing "Language not found" errors.
487
+ - **Timeline search shows image attachment badges** — messages with images are labeled "[Image attached]" in search results.
488
+ - **Image-only messages accepted** — you can share a screenshot without typing anything.
489
+
490
+ ### Bug Fixes
491
+
492
+ - **Syntax highlighter no longer crashes under rapid concurrent UI updates** — during streaming responses with multiple code blocks.
493
+ - **Long unbroken text no longer overflows message bubbles** — URLs, file paths, and code now wrap properly.
494
+ - **Logout button navigates smoothly instead of hard-reloading** — no more full page refresh.
495
+ - **macOS symlinked system directories handled correctly** — `/tmp → /private/tmp`, `/etc → /private/etc` no longer cause incorrect file access decisions.
496
+
497
+ ## 2.0.55 - 2026-07-13
498
+
499
+ ### Bug Fixes
500
+
501
+ - **Sessions no longer leak across projects with nested workdirs** — sessions are matched to their project by a stable project ID instead of a string prefix check.
502
+ - **Provider configuration is no longer discarded when clicking outside the modal** — the dialog stays open until you explicitly close it.
503
+
504
+ ## 2.0.54 - 2026-07-13
505
+
506
+ ### Bug Fixes
507
+
508
+ - **No more orphaned processes left behind after aborting or timing out a command** — OpenFox now hunts down every descendant process via the process tree and kills them all, ensuring a clean teardown every time.
509
+
510
+ ## 2.0.53 - 2026-07-13
511
+
512
+ ### Bug Fixes
513
+
514
+ - **Syntax highlighting setting now works everywhere** — disabling it suppresses highlighting across all code display surfaces (diffs, file previews, edit contexts, read-file views).
515
+ - **Configured default model no longer overridden by auto-detection on startup** — your chosen model stays put.
516
+
517
+ ## 2.0.52 - 2026-07-13
518
+
519
+ ### Features
520
+
521
+ - **Pick which models to use from a provider** — search through the list and check only the ones you want. Unchecked models won't clutter the model selector.
522
+ - **Faster, simpler provider setup** — the provider modal went from 3 steps down to 2. The review step is gone; you save directly from the test-and-configure screen.
523
+
524
+ ### Enhancements
525
+
526
+ - **Smarter auto-configuration** — runs only when you select a model, not for every model at once.
527
+ - **Your default model survives provider edits** — adding or editing a provider no longer resets your default model.
528
+ - **See sensible defaults immediately** — profile defaults (temperature, top_p, etc.) are filled in so the UI shows real values instead of empty fields.
529
+ - **Accidental provider deletion is harder** — removing a provider now requires a two-click confirmation.
530
+
531
+ ### Bug Fixes
532
+
533
+ - **Replay now replays the right message** — uses the message's unique ID instead of a display index that could mismatch across context windows.
534
+ - **Cloud provider responses no longer come back garbled** — removed the global HTTP/2 dispatcher that was corrupting gzip-compressed responses.
535
+ - **OpenAI and Anthropic backends no longer crash** — proper capability definitions added for these backends.
536
+
537
+ ## 2.0.51 - 2026-07-13
538
+
539
+ ### Bug Fixes
540
+
541
+ - **Conversation history order preserved after parallel tool calls** — tool results are now always stored in the same order they were called, keeping the model's prefix cache intact and responses fast.
542
+
543
+ ## 2.0.50 - 2026-07-10
544
+
545
+ ### Features
546
+
547
+ - **Per-session model selection** — each session remembers its own model independently of the global default. A dot indicator tells you when the current session uses a non-default model.
548
+ - **Dedicated global default model control** — set your preferred default model via a star icon in the provider selector.
549
+
550
+ ### Bug Fixes
551
+
552
+ - **Manual compaction is now abortable** — aborting a session cancels manual compaction immediately instead of letting it run to completion.
553
+
554
+ ## 2.0.49 - 2026-07-09
555
+
556
+ ### Features
557
+
558
+ - **New "Add criteria" builtin command** — ask the planner agent to define and record acceptance criteria for a task using the `session_metadata` tool.
559
+
560
+ ### Enhancements
561
+
562
+ - **Faster commit-push flow** — the agent no longer runs `npm test` before every commit. Tests are still verified after rebasing if a push fails due to upstream changes.
563
+
564
+ ## 2.0.48 - 2026-07-09
565
+
566
+ ### Bug Fixes
567
+
568
+ - **Deleting a running session now stops the agent immediately** — no more orphaned LLM calls or tool executions after deleting a session.
569
+ - **`openfox update` no longer produces "Cannot find package" errors** — now does a clean install instead of relying on `npm update -g`.
570
+
571
+ ## 2.0.47 - 2026-07-09
572
+
573
+ ### Enhancements
574
+
575
+ - **Clean file content from `read_file`** — text files are returned without `N|` line-number prefixes. The line range is still available in metadata for those who need it.
576
+
577
+ ## 2.0.46 - 2026-07-09
578
+
579
+ ### Features
580
+
581
+ - **Speculative cache warming** — when enabled in Settings > Advanced, the LLM cache is pre-filled on your first keystroke in an empty session. The next response starts streaming faster.
582
+
583
+ ### Enhancements
584
+
585
+ - **Opt out of automatic session naming** — set `OPENFOX_DISABLE_AUTO_SESSION_TITLE=true` or add `"disableAutoSessionTitle": true` to config.json.
586
+
587
+ ## 2.0.45 - 2026-07-08
588
+
589
+ ### Features
590
+
591
+ - **LLM timeout configuration in global config** — persist `llm.timeout` and `llm.idleTimeout` in your global config JSON instead of requiring environment variables.
592
+
593
+ ### Bug Fixes
594
+
595
+ - **Migration no longer incorrectly strips the `llm` config key** — when the key contains valid timeout settings, it's preserved during migration.
596
+
597
+ ## 2.0.44 - 2026-07-08
598
+
599
+ ### Features
600
+
601
+ - **Configure LLM timeout via environment variables** — `OPENFOX_LLM_TIMEOUT` and `OPENFOX_LLM_IDLE_TIMEOUT` replace the previously hardcoded 5-minute defaults.
602
+
603
+ ### Enhancements
604
+
605
+ - **All environment variables documented in README** — no more digging through source code to discover what you can configure.
606
+
607
+ ### Bug Fixes
608
+
609
+ - **Models no longer confuse line-number separators with code indentation** — eliminating spurious edit failures when editing indented code.
610
+
611
+ ## 2.0.43 - 2026-07-08
612
+
613
+ ### Bug Fixes
614
+
615
+ - **Stop session is now fully reliable** — hitting stop/cancel during an agent response had a tiny timing window where a new LLM request could slip through. That window is now closed.
616
+
617
+ ## 2.0.42 - 2026-07-08
618
+
619
+ ### Bug Fixes
620
+
621
+ - **CLI no longer crashes on startup** — fixed a runtime dependency resolution failure that caused the CLI to crash when attempting interactive prompts.
622
+
623
+ ## 2.0.41 - 2026-07-08
624
+
625
+ ### Enhancements
626
+
627
+ - **More reliable code tracing** — the AI agent now understands that the `file` parameter for `trace_code` is just a seed for LSP. It can use any file that references a symbol, not just the definition file.
628
+
629
+ ## 2.0.40 - 2026-07-08
630
+
631
+ ### Features
632
+
633
+ - **Session picker inside the feedback popup** — when inspecting an element, choose which OpenFox session receives your feedback directly from the popup on the page.
634
+ - **Project-scoped session list** — only sessions belonging to your current project appear in the picker.
635
+ - **Auto-selects most recent session** — the latest session is pre-selected. Your choice is remembered across page refreshes.
636
+
637
+ ### Enhancements
638
+
639
+ - **Self-sufficient inspect widget** — fetches sessions directly from the dev server proxy instead of relying on fragile postMessage communication. Works even if you close the OpenFox UI tab.
640
+
641
+ ### Bug Fixes
642
+
643
+ - **Inspect widget now appears on gzip-compressed and chunked+gzip pages** — the proxy no longer corrupts binary data during chunk decoding.
644
+ - **Dev server proxy no longer hangs on unreachable targets** — returns a clear 502 Bad Gateway error.
645
+ - **Inspect widget injects into uncompressed HTML** — the modified HTML is now written to the response correctly.
646
+ - **Pages without `</body>` or `</head>` no longer fail silently** — the proxy passes through the original response.
647
+
648
+ ## 2.0.39 - 2026-07-08
649
+
650
+ ### Features
651
+
652
+ - **New `trace_code` tool** — ask the AI to trace any symbol (function, variable, class, interface) through your codebase. Finds definitions, references, and type definitions, returning results as an interactive graph with inline code snippets. Control depth (1–5 hops) and direction (definitions, references, or both).
653
+
654
+ ## 2.0.38 - 2026-07-07
655
+
656
+ ### Features
657
+
658
+ - **MCP tool definitions cached to disk** — if an MCP server becomes unreachable, its tools remain available from cache. No more disappearing tools mid-session.
659
+
660
+ ### Enhancements
661
+
662
+ - **Live vs cache indicator** — the `/mcp-config list` view shows whether tools are served live or from cache.
663
+
664
+ ### Bug Fixes
665
+
666
+ - **Transient MCP server outages no longer destabilize prompt assembly** — tools no longer flicker in and out of the context window.
667
+
668
+ ## 2.0.37 - 2026-07-07
669
+
670
+ ### Features
671
+
672
+ - **@-mention file autocomplete in chat input** — type `@` followed by a filename to fuzzy-search your project files. Navigate with arrow keys, press Enter or Tab to insert the path. The model treats @-prefixed paths as relative to the working directory.
673
+
674
+ ### Bug Fixes
675
+
676
+ - **Image descriptions now survive page refresh** — when using a non-vision model, image descriptions are saved permanently alongside the attachment instead of being stuffed into message text.
677
+ - **Model settings no longer leak between providers** — each provider's settings are correctly scoped so the right config always applies.
678
+
679
+ ## 2.0.36 - 2026-07-06
680
+
681
+ ### Features
682
+
683
+ - **OpenAI-compatible backend for vision fallback** — switch the vision fallback backend from Ollama to OpenAI-compatible format, supporting standard `/v1/chat/completions` endpoints.
684
+
685
+ ### Enhancements
686
+
687
+ - **Backend selector in onboarding UI** — choose between Ollama and OpenAI-compatible vision fallback during setup.
688
+
689
+ ## 2.0.35 - 2026-07-06
690
+
691
+ ### Enhancements
692
+
693
+ - **Acceptance criteria now appear as individual messages** — instead of being collapsed into a single opaque batch, you can see exactly what each agent is doing at a glance.
694
+
695
+ ### Bug Fixes
696
+
697
+ - **Chat feed flickering and scroll disruption fixed** — the feed now keeps DOM nodes stable, preserving scroll position, animations, and input focus as the conversation grows.
698
+
699
+ ## 2.0.34 - 2026-07-05
700
+
701
+ ### Features
702
+
703
+ - **Clear all review findings** — new "Clear all" button with confirmation to bulk-remove review findings in one click.
704
+
705
+ ### Enhancements
706
+
707
+ - **Auto-restart after update** — updates applied to a running service now trigger automatic restart + page reload. No more waiting to click a button.
708
+
709
+ ## 2.0.33 - 2026-07-05
710
+
711
+ ### Features
712
+
713
+ - **Browse history search** — filter results by category (User prompts / Thinking / Responses). Press Ctrl+F (or Cmd+F) to open search instantly. Navigate with keyboard arrows. Filter preferences persist across sessions.
714
+
715
+ ### Bug Fixes
716
+
717
+ - **WebSocket reconnects automatically** — when the server restarts, the client now reconnects instead of treating connection drops as authentication failures.
718
+ - **Aborting a workflow mid-execution picks the correct agent mode** — no longer defaults to planner when it should be builder.
719
+ - **Notification overrides for sub-agents now apply correctly** — sub-agent completion events are properly tagged and respect per-agent notification settings.
720
+
721
+ ## 2.0.32 - 2026-07-05
722
+
723
+ ### Enhancements
724
+
725
+ - **Prompt cache survives server restarts** — the system prompt + tools cache is stored in SQLite instead of in-memory, persisting across restarts.
726
+
727
+ ### Bug Fixes
728
+
729
+ - **`return_value` tool no longer leaks into top-level agent tool lists** — correctly filtered per agent's allowedTools.
730
+
731
+ ## 2.0.31 - 2026-07-05
732
+
733
+ ### Bug Fixes
734
+
735
+ - **PWA WebSocket recovery** — running OpenFox as a Progressive Web App no longer gets permanently stuck after repeated server restarts. Stale service workers are detected and unregistered.
736
+ - **Update banner no longer reappears after auto-dismiss** — the underlying state is cleaned up so the banner stays gone until the next real update.
737
+
738
+ ## 2.0.30 - 2026-07-04
739
+
740
+ ### Features
741
+
742
+ - **Feed truncation** — set a maximum number of visible items in Settings → Display (default: 300). Older messages are clipped automatically.
743
+ - **View full history** — when items are truncated, a "View full history" button opens a read-only popup with the complete session.
744
+ - **Dedicated read-only session page** — sessions can be opened at a standalone URL that loads via REST only. Print-friendly styling included.
745
+
746
+ ### Bug Fixes
747
+
748
+ - **`run_command` outputs now visible after page refresh** — completed command outputs auto-expand immediately instead of staying collapsed.
749
+
750
+ ## 2.0.29 - 2026-07-04
751
+
752
+ ### Bug Fixes
753
+
754
+ - **Stopping a running generation no longer leaves tools stuck in "pending" state** — every tool call receives a clean "interrupted by user" result, and indicators clear as soon as the message completes.
755
+ - **Race conditions in tool call results eliminated** — the dual-copy architecture that caused desyncs has been eliminated. All message state lives in a single source of truth.
756
+
757
+ ## 2.0.28 - 2026-07-03
758
+
759
+ ### Enhancements
760
+
761
+ - **Update notification banner auto-dismisses in 8 seconds** instead of 30, getting out of your way faster.
762
+
763
+ ### Bug Fixes
764
+
765
+ - **Tool calls no longer get stuck showing "pending..." indefinitely** — tool states stay in sync properly during streaming.
766
+ - **Pressing Escape or clicking abort no longer triggers a persistent red error banner** — aborting is now clean with just an "Aborted" badge.
767
+
768
+ ## 2.0.27 - 2026-07-03
769
+
770
+ ### Features
771
+
772
+ - **First model auto-selected after provider setup** — no more "detecting..." state. The first available model is selected by default.
773
+
774
+ ### Enhancements
775
+
776
+ - **Full model name shown in stats bar** — you can see exactly which model is active at a glance.
777
+ - **Sidebar auto-opens on project pages** — the hamburger menu is hidden when the sidebar is pinned.
778
+
779
+ ### Bug Fixes
780
+
781
+ - **LLM client now always recreated on provider switch** — fixes stale connections when no API key is set.
782
+
783
+ ## 2.0.26 - 2026-07-02
784
+
785
+ ### Enhancements
786
+
787
+ - **Increased LLM idle timeout** — from 30–60 seconds to 120 seconds for remote backends. Fewer timeouts with slow models or during peak API latency.
788
+
789
+ ### Bug Fixes
790
+
791
+ - **Path-confirmation false positives with regex patterns fixed** — commands like `grep '/api/sessions.*message'` no longer trigger unnecessary confirmation dialogs.
792
+
793
+ ## 2.0.25 - 2026-07-02
794
+
795
+ ### Features
796
+
797
+ - **Provider auto-configuration** — when adding a new provider, OpenFox automatically probes the backend to detect working thinking and non-thinking parameters, context window size, and vision support.
798
+ - **Per-model "Test thinking" / "Test non-thinking" buttons** — test whether your configurations produce valid responses before saving, with the option to inspect the raw API response.
799
+
800
+ ### Enhancements
801
+
802
+ - **Automatic output token clamping** — `max_tokens` is capped so the prompt plus completion always fits within the model's context window.
803
+ - **Simplified provider setup UI** — extra kwargs and query params merged into a single field per mode. Advanced settings collapsed into a details section.
804
+
805
+ ### Bug Fixes
806
+
807
+ - **Session titles no longer trigger thinking output** — title generation no longer sends `reasoning_effort` that some backends reject.
808
+ - **Local providers keep their model selection when switching** — the model detected at startup is preserved.
809
+ - **Session titles work with custom provider configs** — title generation correctly resolves the provider configuration for non-default providers.
810
+
811
+ ## 2.0.24 - 2026-07-01
812
+
813
+ ### Bug Fixes
814
+
815
+ - **Speed sparkline charts no longer show a negative Y-axis** — the chart baseline is clamped to zero, so the visual always makes physical sense.
816
+
817
+ ### Enhancements
818
+
819
+ - **Config file and database locations documented** — helps self-hosters and developers navigate the system.
820
+
821
+ ## 2.0.23 - 2026-07-01
822
+
823
+ ### Bug Fixes
824
+
825
+ - **Stream freeze on page reload fixed** — the streaming message is restored from the REST response when loading a session.
826
+ - **Auto-scroll re-enabled on send** — sending a message now scrolls to the bottom as expected.
827
+ - **Toolbar buttons readable with frosted-glass background** — when auto-scroll is paused, the toolbar has a visible background.
828
+
829
+ ### Enhancements
830
+
831
+ - **Unified workflow launch** — no more forced mode-switch between planner and builder when launching workflows.
832
+
833
+ ## 2.0.22 - 2026-06-29
834
+
835
+ _No user-facing changes._ Internal test infrastructure improvements.
836
+
837
+ ## 2.0.21 - 2026-06-29
838
+
839
+ ### Bug Fixes
840
+
841
+ - **LSP code intelligence restored in installed builds** — language server features (go-to-definition, hover, diagnostics, autocomplete) were completely broken when running from an installed package. The `languages.json` config file is now included in the distribution.
842
+
843
+ ## 2.0.20 - 2026-06-29
844
+
845
+ _No user-facing changes._ Pure internal refactor — large files split, static data extracted to JSON, deprecated APIs removed.
846
+
847
+ ## 2.0.19 - 2026-06-29
848
+
849
+ ### Bug Fixes
850
+
851
+ - **`run_command` no longer discards output on timeout** — partial stdout/stderr is returned along with exit code 124 and a clear `[Process timed out after Xms]` marker. Agents can act on partial results instead of getting a blank failure.
852
+
853
+ ## 2.0.18 - 2026-06-29
854
+
855
+ ### Features
856
+
857
+ - **Per-agent tool policies enforced** — the Planner agent can no longer write or edit files. It's restricted to planning tools (read, search, ask questions, configure MCP, start dev servers). The Builder agent keeps full write access.
858
+
859
+ ### Enhancements
860
+
861
+ - **Project selector visible on the homepage** — when no session is active, the project dropdown appears in the header.
862
+ - **Agent settings UI streamlined** — always-allowed tools are hidden from the tool picker. Switching an agent to sub-agent type automatically removes top-level-only tools.
863
+
864
+ ### Bug Fixes
865
+
866
+ - **Project-level commands and workflows now appear in the More Menu** — custom commands and workflows stored in `.openfox/` directories are included with correct override priority.
867
+ - **"Open in VSCode" links use resolved absolute paths** — works reliably regardless of whether the original path was relative or absolute.
868
+ - **Agent tool selection actually saves** — the tool toggle in the agent editor now works correctly.
869
+
870
+ ## 2.0.17 - 2026-06-27
871
+
872
+ ### Bug Fixes
873
+
874
+ - **Selecting a folder that already belongs to an existing project no longer crashes the server** — returns the existing project and navigates to it seamlessly.
875
+
876
+ ### Enhancements
877
+
878
+ - **Directory browser overhaul** — single-click selects a folder, hover-revealed arrow navigates into subdirectories. Breadcrumb header and footer are sticky.
879
+ - **Opening a project is now immediate** — navigating to the project workspace happens the moment you select a folder.
880
+
881
+ ## 2.0.16 - 2026-06-26
882
+
883
+ ### Features
884
+
885
+ - **Encoding-aware file tools** — `read_file` auto-detects file encoding (Windows-1252, ISO-8859-1, Shift-JIS, etc.). `write_file` accepts an optional `encoding` parameter.
886
+
887
+ ### Enhancements
888
+
889
+ - **`edit_file` preserves original encoding** — through edit cycles.
890
+ - **`read_file` returns encoding metadata** — so you know what encoding was detected.
891
+
892
+ ### Bug Fixes
893
+
894
+ - **BOM handling corrected** — BOM is stripped from display but preserved through edit cycles.
895
+
896
+ ## 2.0.15 - 2026-06-26
897
+
898
+ ### Features
899
+
900
+ - **Connect to MCP servers over HTTP** — add remote MCP servers (e.g., Context7) with a URL and optional custom headers.
901
+ - **Agent-managed MCP configuration** — the AI can add, remove, or configure MCP servers mid-conversation using the `mcp_config` tool.
902
+
903
+ ### Enhancements
904
+
905
+ - **Smaller installation footprint** — `sql-language-server` is no longer bundled. Installed on-demand when you work with SQL files.
906
+
907
+ ### Bug Fixes
908
+
909
+ - **Missing language server install hints** — editing or writing a file now shows a clear install hint instead of silently failing with no diagnostics.
910
+
911
+ ## 2.0.14 - 2026-06-26
912
+
913
+ ### Features
914
+
915
+ - **Connect to external MCP servers** — extend the LLM's capabilities with custom tools: web search, file operations, database queries, API integrations.
916
+ - **MCP management tab in Settings** — add, configure, test, and remove MCP servers visually.
917
+ - **Enable or disable individual tools per server** — with live token estimates so you control context consumption.
918
+
919
+ ### Enhancements
920
+
921
+ - **MCP configurations persist across restarts** — saved to global settings.
922
+ - **"Update system prompt" banner** — adding or removing MCP tools shows a banner instead of silently invalidating the conversation cache.
923
+ - **Tool names scoped by server** — prevents naming collisions between different MCP servers.
924
+
925
+ ## 2.0.13 - 2026-06-26
926
+
927
+ ### Bug Fixes
928
+
929
+ - **Manual compaction no longer leaves the session stuck in "running" state** — the running state is properly cleared after compaction, allowing you to continue chatting normally.
930
+
931
+ ## 2.0.12 - 2026-06-25
932
+
933
+ ### Bug Fixes
934
+
935
+ - **Manual compaction no longer slows down subsequent responses** — now runs through the same unified path as auto-compaction, preserving the vLLM prefix cache.
936
+ - **Auto-scroll in dev server logs works reliably** — scrolling up pauses auto-scroll, scrolling near the bottom re-enables it. Toggle state stays in sync between inline panel and hover popup.
937
+
938
+ ## 2.0.11 - 2026-06-24
939
+
940
+ ### Features
941
+
942
+ - **Models can call sub-agents by name** — even when the model hallucinates the tool name, the system transparently redirects through `call_sub_agent`.
943
+
944
+ ### Enhancements
945
+
946
+ - **`run_command` returns a clear error for backgrounded commands** — points the agent to the `background_process` tool instead of failing silently.
947
+
948
+ ### Bug Fixes
949
+
950
+ - **Dev server logs: pause and resume auto-scroll** — a "live" toggle appears on hover, letting you freeze the viewport to inspect older output while new logs keep streaming.
951
+
952
+ ## 2.0.10 - 2026-06-24
953
+
954
+ ### Bug Fixes
955
+
956
+ - **Auto-update modal no longer shows a false warning about interrupted sessions** — the update process does not interrupt active sessions. That warning has been removed.
957
+ - **Button text corrected from "Restarting in 10s…" to "Reloading in 10s…"** — accurately describes what happens (a graceful reload), reducing confusion.
958
+
959
+ ## 2.0.9 - 2026-06-24
960
+
961
+ _No user-facing changes._ Developer documentation update only.
962
+
963
+ ## 2.0.8 - 2026-06-24
964
+
965
+ ### Features
966
+
967
+ - **Restart service from the web UI** — after an update, service users can restart via a "Restart Service" button instead of SSH-ing in.
968
+ - **Synchronous update API with real feedback** — the UI now shows real success/failure instead of polling blindly.
969
+
970
+ ### Enhancements
971
+
972
+ - **No more `--service` flag needed** — `openfox update` auto-detects service mode.
973
+
974
+ ### Bug Fixes
975
+
976
+ - **`openfox service logs -f` now works** — the `-f`/`--follow` flag is properly registered in the CLI argument parser.
977
+
978
+ ## 2.0.7 - 2026-06-23
979
+
980
+ ### Bug Fixes
981
+
982
+ - **Provider onboarding now sends API key when fetching models** — adding a provider that requires authentication previously showed "No models found" because the API key was silently dropped.
983
+
984
+ ## 2.0.6 - 2026-06-23
985
+
986
+ ### Enhancements
987
+
988
+ - **Reduced duplicate output from sub-agents** — sub-agents now deliver results through a single channel instead of echoing summaries both as chat text and structured data.
989
+
990
+ ## 2.0.5 - 2026-06-23
991
+
992
+ ### Features
993
+
994
+ - **Questions from the AI now appear inline** — instead of blocking modal overlays. Three question types: free-text, confirm (Yes/No/Skip), and choice (pick from options or type custom). Pending questions survive page reloads.
995
+
996
+ ### Bug Fixes
997
+
998
+ - **Session statistics now report accurate timing** — tool time reflects real wall-clock duration instead of summing parallel tool durations.
999
+ - **Fixed a rare infinite loop** — that could freeze a session when a chat turn failed during processing.
1000
+
1001
+ ## 2.0.4 - 2026-06-23
1002
+
1003
+ ### Features
1004
+
1005
+ - **`openfox service logs` now accepts `-f` / `--follow`** — tail service logs in real time, matching the familiar journalctl experience.
1006
+
1007
+ ### Enhancements
1008
+
1009
+ - **Workflow steps calling `step_done` now terminate the agent turn immediately** — no more wasted LLM round-trips. Workflow transitions are snappier.
1010
+
1011
+ ## 2.0.3 - 2026-06-22
1012
+
1013
+ ### Features
1014
+
1015
+ - **Per-model custom query parameters** — send arbitrary JSON fields in the request body to your LLM provider (e.g., vLLM guided decoding params, custom sampling settings), configured separately for thinking and non-thinking modes.
1016
+
1017
+ ### Enhancements
1018
+
1019
+ - **Provider setup modal streamlined** — renamed "API URL" → "Provider URL", added backend type placeholder, displays unknown backends as "Other", removed OpenAI/Anthropic/OpenCode Go from local-backend dropdown.
1020
+ - **Browser autofill no longer interferes** with provider name and API key fields.
1021
+ - **URL input auto-focuses** when adding a new provider.
1022
+ - **"Edit URL" button appears** when a provider connection fails.
1023
+ - **All model settings save correctly** — temperature, topP, topK, maxTokens were silently dropped on save; now they persist.
1024
+
1025
+ ### Bug Fixes
1026
+
1027
+ - **Manual compaction uses the cached system prompt** — preserving vLLM prefix cache benefits so compaction is faster.
1028
+ - **Fixed event ordering during manual compaction** — where `message.start` was emitted after streaming began, causing visual glitches.
1029
+
1030
+ ## 2.0.2 - 2026-06-21
1031
+
1032
+ ### Bug Fixes
1033
+
1034
+ - **Queued messages no longer lost on abort** — when you typed a message while the assistant was already responding and then hit Stop, your message was silently discarded. Now the queued text is restored into the chat input.
1035
+
1036
+ ## [2.0.0] - 2026-06-21
1037
+
1038
+ ### Multi-Turn Agent Engine (MTAE)
1039
+
1040
+ The agent loop has been completely rewritten around a simpler, composable architecture where the EventStore is the single source of truth.
1041
+
1042
+ - **Unified agent loop** — All modes (builder, planner, verifier, sub-agents, compaction) run through the same `runAgentTurn` loop. No more nested loops, no hardcoded planner.
1043
+ - **EventStore as SSOT** — The loop never imports the EventStore directly. State is derived from events, not persisted directly.
1044
+ - **Compaction in the same loop** — Compaction reuses the same agent loop with `mode: 'compaction'`. No separate compaction loop.
1045
+ - **System prompt caching decoupled** — Moved out of the agent loop into its own concern.
1046
+ - **Drain queue extracted** — `drainQueue` is now a standalone function.
1047
+ - **Dead code removed** — `nudge-helpers.ts`, `verifier-helpers.ts`, `orchestrator-verifier.test.ts`, `runVerifierTurn`, `toolMode`, custom sub-agent loop all deleted.
1048
+ - **Agent definition injection simplified** — Event-driven, no state tracking, `getAllEvents` API.