Files
Paul LütznerandClaude Opus 5.5 77fa3f496d fix(ai): a summary no longer reports a lost connection at its first heartbeat
Every summary that took more than ten seconds to start writing ended with
"The connection to plMail was lost … the model host is not involved", ten
seconds in, while the server went on to finish and store it: reload and it
was there.

The connection was fine. The first heartbeat frame renders the elapsed time,
and it called this.constructor.#clock(). Stimulus registers a subclass of
every controller, so this.constructor is that subclass, and a private static
is not reachable through it: TypeError "Receiver must be class default". The
fetch's catch took every error for a network error and said so. Broken since
the heartbeat arrived on 2026-09-03; the "connection dropped 40 s into a full
run" measured that day was very likely this too.

- #clock is an instance method.
- readFrames() no longer lets a throwing frame handler end the read. The
  error goes to reportError(), and so to the admin browser-errors list with
  its file and line, and the frame is skipped. Both readers put a failed read
  down to the network, which is what hid this one.
- The reading line said "Nothing appears until it has finished", which reads
  as "until the summary is finished". It meant the reading: the words stream
  as they are written, and the line now says so. EN, DE, en_PI.

The new browser test serves the server's frames without a model: a heartbeat
before the first word must neither end the run nor throw.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 13:52:40 +02:00
..