Sync the self-hosting stack

This commit is contained in:
2026-09-11 22:38:53 +02:00
parent a366e5098c
commit 376c980b9a
+59
View File
@@ -9,6 +9,65 @@ one of them changed. An entry says which artefact and which version, so `web 0.1
Every version published to a channel appears here. Nothing is written from memory afterwards: a build
cannot be published without its entry.
## 2026-09-11 — The assistant was reading the first and last pages of a file and nothing in between `api 0.110.0`
Anything the assistant read — a document in a conversation's workspace, a config file on one of your
machines — was cut down to about 12,000 characters before it reached the model. That cut was the
problem rather than the size: it kept the beginning and the end and deleted the middle, then joined
the two halves together. What the assistant received looked like a complete file. It read as
continuous text, with nothing to indicate that 97% of a long document was missing, so the assistant
had no way to know it was answering about text it had never seen — and neither did you.
**`read_document` now returns the document itself.** Up to 60,000 characters by default and 200,000
on request, always a single unbroken run starting where the assistant asked, with a line at the end
saying how much is left and where to continue. On a document longer than that the assistant reads it
in order, page after page, instead of receiving a collage. This matters most for editing: a patch has
to quote the existing text exactly, and text welded together from two ends of a document cannot be
quoted.
**`ssh_read_file` and `agent_read_file` had the same fault**, plus one of their own: both offered a
`maxBytes` setting that went up to two megabytes, and everything above roughly 12,000 was discarded
after being read. They now return what they were asked for — 60,000 bytes by default, 200,000 at
most — always from the start of the file, with a note saying how much of it is left. Asking for more
than they can return is now refused with a message, instead of accepted and quietly ignored, and the
note points at `head`, `tail`, `sed` or `grep` when a file is genuinely too large to read whole.
**Every other tool is unchanged.** A command's output, a directory listing, a query result — these
are still cut at the same place as before, because for a log or a table the beginning and the end are
usually the answer. The larger budget belongs only to the tools whose result is meant to be a file.
**Self-hosters:** nothing to do. No schema, no configuration. Note that a large read now genuinely
occupies the model's context, which it previously only appeared to — if your `OPENAI_MODEL` has a
small context window, the assistant will be reading in more, smaller pages.
## 2026-09-11 — Pinning a conversation appeared to do nothing `web 0.132.0`
The rail on the left of a conversation held two ideas that were never explained apart: a "working set"
that the product called something else everywhere you actually touched it, and a pin whose effect was
invisible. Pinning a conversation left the list looking exactly as it had a moment earlier — same
rows, same order, no mark on the one just pinned — so the only reasonable conclusion was that the
pin had not worked.
**It had worked, and the list was refusing to redraw.** The rail deliberately holds its order still
for a moment after you touch it, so a row never slides out from under a tap. Pinning was the one
action where nothing came along afterwards to release the hold: the pin was saved, the freeze was
applied by the same click, and the rail then went on drawing the pre-pin order for as long as the tab
stayed open. It now lets go on its own the moment the pause is over.
**Pinned conversations have their own section**, above the ones you have merely been in, and a
conversation stays under "Pinned" even while it is the one you are reading. A pin that moves somewhere
else when you open it is a pin you cannot find at the moment you go looking for it.
**The pin is now visible without hovering.** It was drawn only when the pointer was over the row,
which on a touch screen means never, and on a mouse means the state of the list changes depending on
where the cursor happens to rest.
**One name for one thing.** "Working set" is gone; the rail, the panel, its tooltips and the remove
action all say "dock", in English, French and German.
**Self-hosters:** nothing to do. Pins and recents are stored in the browser as before, and no pin is
lost by the upgrade.
## 2026-09-11 — Fixing one paragraph meant resending the whole document `api 0.109.0`
The assistant could write a document into a conversation and replace its body, but replacing was the