Skip to content

Forge 0.5.2

Choose a tag to compare

@windingcreek windingcreek released this 28 Sep 02:21
· 26 commits to main since this release

Forge 0.5.2

Windows and Linux arrive, as source installs. macOS remains the only platform
with a downloadable image — see
Platforms for what has been
verified per component.

Windows and Linux

The editor and the terminal client build and run natively on Windows. The
terminal client could not compile there at all — its platform layer was
Unix-only in its entirety — and now has a console-API implementation covering
raw mode, reading keys, terminal size and resize. install.ps1 (or
install.cmd) puts both in place, with optional shortcuts; WINDOWS.md says
what is verified and what is not. Linux gets install.sh for a fresh Ubuntu
system and LINUX.md.

Failure behaviour, exercised rather than assumed

Eleven provider and process fault cases against two streaming formats, on both
platforms, plus SSH disconnection against a loopback server. Streams now require
a completion signal, incomplete tool arguments are never executed, partial
answers survive an error exactly once, transient server failures take part in
bounded retries, and a dropped SSH connection cannot silently move remote work
onto the local machine — the editor offers Reconnect and keeps the remote
workspace and pending conversation.

That matrix runs under cargo test now, including on Windows CI, rather than
being a script someone had to remember to run.

Three ways the agent could stop being useful while looking fine

A message sent while the agent was talking could be discarded. Stdin was
read with a future that is not cancellation-safe, racing the agent's own
outgoing events. An event arriving mid-line dropped the read and the bytes it
had already consumed
; what was left failed to parse and went to stderr. The
client had sent something the agent never saw, and then waited for an answer to
it — more likely the more the agent had to say.

An approved plan could leave nothing legal to do. Approving without clearing
context cleared the plan-mode flag but left PLAN MODE ACTIVE — you CANNOT modify files standing in the transcript, while exit_plan_mode was no longer
offered. The agent refused to implement the plan it had just written and asked
to be taken out of a mode it was no longer in. Both correct, and no move left.

ChatGPT Codex sign-in failed naming a key you never supplied. Forge
exchanged your OAuth token for an sk- API key — on login, on every refresh,
on every token check — and then preferred it for one request that the backend
rejects. Nothing mints it now, and one left by an older build is dropped when
the token file is read.

Knowing where you stand

For ChatGPT Codex, the only provider that reports it, /usage now shows how
much of your weekly allowance is left and when it resets; the editor says so in
the agent panel. An endpoint that reports no allowance says that, rather than
staying silent — silence reads as good news.

Running out used to arrive as API error: Responses API error (429 Too Many Requests) wrapped around a JSON blob, which reads as something broken. It now
reads: "ChatGPT pro plan: the weekly limit is used up. It resets in 5d 14h.
Nothing is wrong with the connection or the login — this allowance is spent."

When a credential is rejected, the error now says which endpoint it went to
and what kind of credential it was — never the secret itself.


Note: WINDOWS.md in this release's source tarball shows an install path under a specific user's home directory. Use a relative path (.\install.ps1) or %USERPROFILE%. Fixed on main; the .dmg is unaffected.