v0.2.5 released


# Changelog

## v0.2.5 (2026-04-04)

### Fixed

- **GDD "not found" (root cause found)** — Tauri filesystem permission scope was blocking access to all user project directories. The `fs:scope` capability lacked a wildcard entry, so `TauriFsRead` and `TauriFsReadDir` calls to paths outside AppData were rejected with "forbidden path." Added `fs:scope` with `"path": "**"` to allow access to user project folders. This was the persistent GDD bug reported since v0.2.1.

- **Gemini CLI buffer deadlock (real root cause)** — The v0.2.4 node wrapper used `spawnSync` which blocks the Node event loop. When Gemini's streaming output filled the stdio buffer (~64KB), both processes deadlocked: Node waiting for Gemini to finish, Gemini waiting for Node to drain the buffer. Replaced `spawnSync` with async `spawn` + `stdout.pipe(process.stdout)` in both main tab and worktree tab code paths. Same fix applied to Codex CLI wrapper.

- **Terminal auto-scroll** — Terminal now calls `scrollToBottom()` after every stdout and stderr chunk, ensuring new output is always visible without manual scrolling or panel resizing.

### Changed

- **Version display shows patch number** — Boot screen, header, and footer now show the full version (e.g., "v0.2.5") instead of just "v0.2". Users can verify which build they have installed.

- **Quieter file diagnostics** — `readProjectFile()` verbose logging (directory listing, files compared, match results) now only fires for GDD files. Optional files like PENDING_TASKS.md and SESSION_NOTES.md fail silently instead of spamming the LOG panel.

### Infrastructure

- **Smoke test updated** — Gemini spawn test now verifies async `spawn` with piped stdio instead of old `spawnSync` pattern. 90 tests passing.

## v0.2.4 (2026-04-03)

### Fixed

- **Gemini CLI "Running forever" (root cause)** — three compounding bugs: (1) `spawnSync("gemini", ...)` in the node wrapper fails silently on Windows because `gemini` is a `.cmd` wrapper and `spawnSync` only resolves `.exe` files without `shell: true`; (2) the wrapper exited with code 0 on spawn failure (`c.status||0` where status is null); (3) special characters in assembled prompts broke cmd.exe when passed as `-p` arguments.

- **Gemini always uses temp file on Windows** — same fix as Aider. Assembled Devforge prompts contain markdown, code examples, and symbols that break cmd.exe argument parsing.

- **Gemini node wrapper uses `shell: true`** — resolves `.cmd` wrappers correctly on Windows. Added error checking: spawn failures now report to stderr and exit with code 1.

- **Codex node wrapper hardened** — same `shell: true` and error handling fixes applied to Codex CLI temp file path.

### Changed

- **Gemini CLI upgraded to stream-json output** — now uses `--output-format stream-json` like Claude Code. Activity feed shows tool calls, thinking, and file edits in real time instead of raw text.

- **Gemini auto-approves edits** — `--yolo` flag added (equivalent to Claude's `--permission-mode acceptEdits`). No more interactive approval prompts blocking automated workflows.

- **Gemini session resume** — `--resume` flag support enabled. Gemini sessions can now continue across prompts.

- **Gemini direct node execution** — added `npmPackage` and `nodeScript` to Gemini provider config. On Windows, Devforge spawns `node.exe gemini.js` directly instead of going through `cmd.exe` and `.cmd` wrappers. Eliminates an entire class of Windows shell escaping bugs.

### Infrastructure

- **Smoke test expanded to 90 checks** — 8 new Gemini-specific tests covering `npmPackage` config, stream-json output, `--yolo` flag, session resume, temp file `shell:true`, and spawn error handling.

## v0.2.3 (2026-04-03)

### Fixed

- **Aider "Running forever" (root cause)** — the temp file prompt path used `-f` (add file to chat context) instead of `--message-file` (read message from file). Aider started in interactive mode waiting for stdin input. Every Aider prompt on Windows triggered this path since assembled Devforge prompts exceed the cmd.exe limit.

- **Aider always uses temp file on Windows** — previously only applied when the prompt exceeded 6000 characters. Now always applied for Aider since assembled prompts are reliably large.

- **GDD "not found" — improved diagnostics** — `readProjectFile` now logs the full path attempted, the error when a read fails, directory listing results, and retry outcomes. When night__day's GDD fails next time, the LOG panel will show exactly why.

- **GDD fallback retries exact filename match** — the case-insensitive fallback previously skipped retrying when the directory listing found the exact requested filename. If `TauriFsRead` fails but the file appears in `TauriFsReadDir`, it now retries the read.

- **30-second watchdog timer** — if no stdout is received from the CLI after 30 seconds, a yellow warning appears in the terminal. Catches hung or broken CLI processes without requiring manual cancellation.

- **CLI deprecation detection** — stderr messages containing "native installer", "switched from npm", or "claude install" are now shown in yellow with a log entry: "CLI needs updating — run `claude install`."

### Infrastructure

- **Smoke test expanded to 82 checks** — 12 new tests covering Aider temp file path correctness, `--message-file` usage, diagnostic logging in `readProjectFile`, watchdog timer, and deprecation detection.

Files

devforge-v0.2.5-windows.zip 23 MB
9 hours ago

Get DEVFORGE

Buy Now$9.00 USD or more

Leave a comment

Log in with itch.io to leave a comment.