← Back to blog

Conol 0.52.0 — Bigger files, and failures that explain themselves

Conol

  • release-notes

Two threads run through this release. The first is about size: the composer stopped being the bottleneck for anything bigger than a screenshot. The second is about honesty — several places where the product knew something had gone wrong and told you nothing useful, or nothing at all.

Attach files up to 200MB

Why. The composer capped attachments at 20MB, which rules out most of what you'd actually want an agent to look at: a recorded meeting, a full CSV export, a zipped-up project. The cap was not really the interesting part, though. Every attachment was read into memory and posted through the app itself, so a large file became a much larger string in your browser before it went anywhere. Raising the number alone would have traded a clear error for a hung tab.

How to use it. Click the paperclip in the composer, or drag a file onto it, or paste one. Anything from about 4MB up now uploads straight to storage and the message carries a link to it, so the bytes never squeeze through the app. Smaller files behave exactly as before.

The agent reads the file with its tools rather than swallowing it whole, which is what makes a 200MB attachment sensible: the size of the file no longer competes with the space your conversation needs.

Tip

Images are the exception and still cap at 25MB. They get read directly by the model rather than opened with a tool, so they occupy space in the conversation in a way other files don't.

An upload that fails now says so. It used to drop the attachment silently, which meant you'd send a message referring to a file that was never there.

Jump straight back to the newest message

Why. In a long thread, reading back through what the agent did meant scrolling — and then scrolling all the way down again to get back to the live end of the conversation. The further back you'd read, the more it cost to return, so people stopped scrolling up at all.

How to use it. Scroll up in any conversation and a button appears just above the composer. Click it and you're back at the newest message, following along again as the agent writes. It appears only when you've actually scrolled away, and it sits clear of the composer in the full-page view, the side panel and the floating panel alike.

Failed turns say what actually went wrong

Why. When a turn failed, you got one muted line containing whatever string the failure happened to carry — The specified queue does not exist, or 400 Reasoning is mandatory for this endpoint and cannot be disabled. Both are real examples. Neither tells you what to do, and one of them names an internal queue that means nothing to anyone outside our infrastructure.

This had a cost we could measure. A tester hit the second error and reported it, reasonably, as "Qwen 3.8 Max doesn't work" — because that was the entirety of what the product had communicated. The one string that named the root cause was on screen the whole time and was too unreadable to be worth quoting. Finding it again took a reproduction and a probe of nineteen models.

How to use it. Nothing to turn on. A failed turn now leads with a cause in your own language — the conversation outgrew its context window, the provider refused the request, the model is temporarily rate-limited — and keeps the original text behind a disclosure for when you want to quote it in a bug report. Nothing is hidden; the summary is a summary.

Paste any file into the composer, not just images

Why. Pasting a PDF or a CSV into the message box did nothing at all. The clipboard handler only recognised images, so everything else fell through and vanished. The attach button had always accepted those files — only pasting was restricted, which made it look broken rather than unsupported.

How to use it. Copy a file anywhere on your system and paste it into the composer. It attaches as a chip exactly as if you'd picked it with the paperclip. Pasting text still types text.

Your bot tells you when a turn dies

Why. This is the same problem as the failed-turn notice above, in the place where it does the most damage. In Telegram, Slack, WeChat, Discord and WhatsApp there is no chat panel to render an error into — results reach you only when the agent sends them. So a turn that died before it could answer sent nothing at all. You asked the bot a question and the bot never replied, which is indistinguishable from the bot being broken, and is the single least reportable way for software to fail.

How to use it. Nothing to turn on. If a turn fails before it can answer, the bot now tells you it failed and why, in the same conversation you were already having.

Fixes

  • Single tildes are text again — a message like 大约~10~20 分钟 rendered with the middle struck through, because a pair of single tildes was being read as strikethrough. A tilde is a range separator and a stylistic elongation in Chinese writing, so this fired constantly on ordinary messages. Fixed in chat and in notes, which shared the same pipeline. Real ~~strikethrough~~ still works.
  • Word and character counts measure what you can see — both counts were computed from a note's markdown, so a link counted its URL, bold text counted its asterisks, and an image counted 44 characters of syntax for something that isn't text at all. Plain prose counted correctly, which is why it looked right in every quick check.
  • Qwen 3.8 Max answers — the model shipped in 0.51.0 but returned a provider error on every message, because its endpoint requires reasoning to stay enabled and we were switching it off by default.
  • Deleted workspaces stop haunting a session — a workspace deleted partway through a conversation still looked readable to your agent while writes failed, which presented as an unexplained read-only mode. Workspaces created since the conversation started are now visible too, without starting over.
  • A billing hiccup can't discard your answer — if recording usage failed, the completed answer was thrown away with it. The model had already been called and paid for at that point, so this only cost you the reply — and, since people re-send after a failure, turned one paid call into several.
  • Shared links stopped repeating themselves — every shared note's browser tab and link preview read <note> · Conol · Conol.
  • iOS shows the current release — the "What's new" sheet on iOS had drifted nine versions behind, so nobody on the app was told about multi-account, Slack channels or Qwen. A test now fails when it falls behind again.
  • Desktop OAuth is stricter about what it opens — the connector sign-in popup would hand any URL scheme to the system to open. It's now limited to web addresses, matching the rule the main window already applied.

← Back to blog