Skip to content
Goatfied

Changelog

What's new in Goatfied.

What shipped, why it matters, and how to use it. Updated as releases land — roughly weekly.

Aug 18, 2026

A long answer is not a broken one

Turns that took more than three minutes were being cut off and reported as a network fault. They now run as long as they need to.

A model call had two clocks on it. One ended the connection after 90 seconds of total silence, which is right — a gateway that accepts a request and then says nothing is dead. The other ended it after three minutes no matter what, including while tokens were arriving perfectly well. A large context at high reasoning effort passes three minutes routinely, so those turns were killed mid-answer.

That explains the shape of it: the failure was deterministic, so all four retries died at the same point and the turn could never succeed, while a shorter session on the same model was completely unaffected. The total cap is now a half-hour backstop and liveness is left to the silence watchdog, which is the clock that can actually tell a stalled connection from a slow one.

The error text was also hiding its own cause. The network library reports a timed-out read as “error decoding response body” and keeps the real reason one layer down, which was thrown away. The whole chain is kept now, so a timeout says it timed out.

Build 2.31.7

Aug 18, 2026

A dropped connection is not a failed run

A brief network fault gets a few seconds to recover instead of a few hundred milliseconds, and says what happened in plain words.

When the connection to the model drops mid-reply the turn is retried, which is right — no tool has run yet, so re-asking is safe. But the waits between attempts totalled under three seconds, which is less than a wifi handover, a VPN re-key or a gateway restart, so a blip that would have cleared on its own became a failed turn. The window is now about fifteen seconds across four attempts.

If it still cannot recover, the run says the connection dropped and that nothing was lost, rather than showing the network library's own words — “error decoding response body” describes a decoder, not the connection that actually went away. The retries are also recorded in the log now; previously they were shown only while they happened and left nothing behind to explain a run that recovered, or one that did not.

Session titles were cut at exactly forty-eight characters, mid-word. That title is also used as a name in the sentence that reports where a build ended up, which is how you could be told that ‘look into the “4. Dynamic Programming” fol is ready at’ somewhere. Titles now end on a word, and that line no longer borrows your prompt as its subject.

Build 2.31.6

Aug 17, 2026

Whose model, not whose pipe

Google, Meta, Kimi, Qwen, DeepSeek and Mistral models now carry their makers' marks instead of the router's.

Every model reached through OpenRouter wore OpenRouter's logo, which names the plumbing rather than the model. A mark is chosen from the model itself now, so Gemini shows Google's, Llama shows Meta's, and Kimi, Qwen, DeepSeek and Mistral each show their own — whoever happens to be carrying them today. A model we cannot place still gets no mark at all, which is better than a confident wrong one.

The marks are generated from the vendors' published artwork rather than copied by hand, so they cannot drift into being subtly wrong.

The name and its mark are now left-aligned together, and the commit button has lost its blue for the same grey as everything around it. It also refuses to be pressed when the session has no repository folder to act in, instead of accepting the click and failing.

Build 2.31.5

Aug 17, 2026

The real logos

Each model now carries its vendor's actual mark, sitting beside the name instead of stranded at the far edge of the menu.

The marks in the model picker were our own approximations of each vendor's logo. They are now the vendors' published artwork, so a model is introduced by the mark you already recognise rather than by something that merely gestures at it. They stay grey, because a list you scan should not be a list you look at.

The marks also sat at the far left of each row while the model name sat at the right, with the width of the menu between them — the two halves of one label, as far apart as the row allowed. The mark now sits directly beside the name it belongs to.

Build 2.31.4

Aug 17, 2026

Marks that tell you whose model you are running

Every model wears its own house mark, our family wears ours, and the pinned prompt finally sits flush against the top of the thread.

The model picker's marks were placeholders, and one of them was doing real harm: the whole GOAT family was wearing Auto's robot, because the catalog reports the family as automatically routed and the mark was chosen from that rather than from the family itself. Our models now carry the AIARCO rosette, Auto keeps the machine that stands for choosing on your behalf, and Claude and the rest carry their own house marks. They are drawn in grey rather than colour: a mark you scan down a list should not compete with the tick that says which one you picked.

The pinned prompt has moved out of the scrolling area and now sits above it. It was a sticky element inside the transcript, which meant fighting that panel's own padding with negative margins — hence the gap above it and the strip of empty space before the right edge. As its own row it simply spans the column.

The file chips in a run are slimmer, with less border and padding around them and a larger file-type icon, so a list of touched files reads as a list rather than a row of buttons.

Build 2.31.3

Changelog · Page 2 · Goatfied