Chat replies no longer cut off mid-answer on slow turns
A long reasoning phase or a slow tool round-trip could leave the connection between the browser and Portail's server silent long enough for a proxy in between to treat it as idle and close it. That looked exactly like the model finishing its answer early, with no error shown, so a reply could just stop mid-sentence for no visible reason. The chat stream now sends a small keep-alive signal every 15 seconds while it waits on the model, and an aborted reply is now logged with how much text had already streamed, so a genuine drop is distinguishable from a deliberate stop.
485 words
Chat streaming now sends a periodic keep-alive so long silent gaps in a reply no longer risk an early, silent cutoff from an idle-timing-out connection.
Aborted chat replies are now logged with how much text had streamed, so infrastructure-level drops are diagnosable instead of invisible.
Portail v2.2.2 shipped on 2026-09-23 as a patch release focused on chat replies no longer cut off mid-answer on slow turns. A long reasoning phase or a slow tool round-trip could leave the connection between the browser and Portail's server silent long enough for a proxy in between to treat it as idle and close it. That looked exactly like the model finishing its answer early, with no error shown, so a reply could just stop mid-sentence for no visible reason. The chat stream now sends a small keep-alive signal every 15 seconds while it waits on the model, and an aborted reply is now logged with how much text had already streamed, so a genuine drop is distinguishable from a deliberate stop. The work is recorded here because small releases are still product history. They change how people sign in, read responses, pay for access, share conversations, open files, or trust the system when something goes wrong.
The main changes were direct: chat streaming now sends a periodic keep-alive so long silent gaps in a reply no longer risk an early, silent cutoff from an idle-timing-out connection, and aborted chat replies are now logged with how much text had streamed, so infrastructure-level drops are diagnosable instead of invisible. That list is intentionally plain. It names what changed without turning the release into theatre. When a release fixes a build, a redirect, a storage path, or a UI edge case, the value is often that users stop noticing the problem. The archive keeps that invisible work visible enough for future debugging and for anyone checking whether Portail has cared about the details over time.
This version also fits into the wider Portail contract. One account, one chat history, and one model picker only work if the smaller pieces keep their promises. Authentication has to fail clearly. Billing has to count honestly. Uploads have to arrive in a form models can read. Admin tools have to show the operator what happened instead of hiding it behind a blank screen. v2.2.2 moved that contract forward in its own narrow lane.
The screenshots attached to this entry show the public release record as it now appears on portail.cc. For older releases, this archive was rebuilt from the git history, package version changes, release modal text, and commit subjects. That means the page is honest about its source: it documents the shipped change and preserves the record going forward, even when the exact old production screen cannot be recreated from a single saved image.
The practical result is simple. Someone landing on this page can see the version number, date, release tier, headline, highlights, and a real rendered screenshot of the archive page. Search engines can index the post through the canonical URL, sitemap entry, and structured data. Future releases now have a standard to meet before deploy, so the history should get cleaner from here instead of fuzzier.
Screenshots
