Extracted file fields shown in a searchable, filterable grid
Product Updates

Search Modes, 255 Character Filenames, and Windowed PDFs

Search by filename, content, or both. Filenames now run to 255 characters and count real characters. Huge PDFs open page by page.


This release is mostly about text: how you search it, how it gets counted, and what happens when there is too much of it. Three changes you will feel immediately, plus the fixes that went out alongside them.

Search Now Has a Mode

Search used to be one thing. Now you pick what you are searching.

  • Filename matches on names only, with precise filename matching for when you know exactly what the file is called.
  • Content searches inside the documents themselves.
  • Both does what it says.

The mode travels as a search_in parameter, and all three are available on every surface. In the fastio CLI you also get glob matching, so pattern-style queries work the way they do in a shell.

Filenames Can Be 255 Characters

The filename limit was 100 characters. It is now 255, everywhere.

The more interesting half of that change is how the characters are counted. Length limits were measuring UTF-16 code units rather than characters. For plain ASCII names the two numbers are identical, which is why this went unnoticed for so long. For anything else they diverge. An emoji is two code units. Non-Latin scripts run into the same gap when a limit measures bytes instead of characters. The result was names that got cut at the wrong point and came back corrupted.

That truncation bug is fixed, and the counting is now consistent across filenames, paths, comments, and room fields:

  • Uploads validate filenames and paths by character count, with per-segment caps so no single folder name can run past the limit.
  • Comment, room message, and rename inputs count real characters. What the input tells you is what the server will accept.
  • Room roster display text no longer splits a surrogate pair when it truncates, which was mangling the character at the cut point.
  • Upload folder paths are guarded against segments the server would otherwise have silently merged.

Huge PDFs Open Instead of Showing a White Page

PDF rendering is now windowed, with pages loaded one at a time as you get to them. A document large enough to defeat the old renderer would leave you looking at a white page. Now the visible pages render right away and the rest load as you scroll.

The AI Tells You When It Ran Out of Room

If a reply hits the token limit, AI chat now shows a “response was cut off” notice. Before, a truncated answer looked exactly like a complete one, which is a bad thing to be wrong about when you are reading a summary of a contract.

The truncated flag also rides the live streaming answer frame, so the notice shows up while the response is still coming in rather than only after it lands.

AI jobs also decode retry hints properly now, and they fail fast when credits are exhausted instead of grinding through retries that cannot succeed.

CLI

  • The token refreshes automatically before each command. The forced hourly re-login is gone.
  • Comment and room message validation counts characters, matching the server contract, so the CLI stops accepting input the API would reject.

Other Fixes

  • Raw network failures are classified as transient instead of permanently failing a render, so a momentary blip no longer kills the result.
  • Document conversion rate limits retry on a shared cooldown rather than failing outright.
  • Export downloads no longer truncate, and the render retry loop no longer holds on to a stale error state.
  • An analytics bug that could crash the entire page is fixed.
  • Row status in the Collaboration Rooms list refreshes after load. Rows used to freeze at whatever live status they showed when the list first rendered.
  • An OAuth bug is closed. An unrecognized scope was being treated as a grant of full access. It no longer is.
  • Error responses carry the machine readable failure reason field again, so clients can branch on the reason instead of parsing a message string.
  • The search queue drops index events for deleted profiles instead of retrying them forever.

The search modes are the change you will go looking for. The rest is the counting bug behind them, which had been cutting names at the wrong character for as long as the 100 character limit existed.

Ready to get started?

Start with a 14-day Business Trial.