Versions
v1.6.32026-09-06patch release

Office and PDF uploads stop getting silently rejected

Attaching a PDF or Word document to a chat could fail before it ever reached the model, because the upload filter required the browser's reported file type to match its extension, and browsers are unreliable about that for office documents. The extension alone now decides, which is what actually controls how the file is served back. AI-generated file downloads also stopped opening the file inline instead of downloading it.

439 words

Fixed PDF and Word uploads being rejected when the browser reported a generic or incorrect MIME type.

Fixed AI-generated document downloads opening inline instead of downloading, by reusing the Content-Disposition query pattern from Canvas.

Portail v1.6.3 shipped on 2026-09-06 as a patch release focused on office and pdf uploads stop getting silently rejected. Attaching a PDF or Word document to a chat could fail before it ever reached the model, because the upload filter required the browser's reported file type to match its extension, and browsers are unreliable about that for office documents. The extension alone now decides, which is what actually controls how the file is served back. AI-generated file downloads also stopped opening the file inline instead of downloading it. 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: fixed pdf and word uploads being rejected when the browser reported a generic or incorrect mime type, and fixed ai-generated document downloads opening inline instead of downloading, by reusing the content-disposition query pattern from canvas. 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. v1.6.3 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

Portail v1.6.3 release post
The indexed release record for v1.6.3.