None of these fails loudly and two of them correct themselves if you reload, which is why five were found by reading rather than by anybody reporting them. The reply that lost its author is the one worth knowing about: the frame that replaces a bubble when a reply lands was looking the models up as nobody, and "no user" answers "no models" rather than "all models" -- so every finished reply swapped the model's avatar for the plain mark and put the instance's name where the model's should be, until the next page load put it back. Beside it: a concurrency quota enforced on two of the six paths that start a reply, including neither of the two most used; a custom theme whose success and warning colours moved the text and left the background behind; a phone shell sized to one viewport inside a document sized to another, which is the reported scroll past the bottom of Settings; a whole conversation's Markdown rendered on every page load and read by nothing; a skip guard inert since it was written; and an endpoint nothing has ever called. The scroll fix folded five near-identical scroller rules into one, which is also where the containment they were all missing now lives. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
37 lines
1.3 KiB
HTML
37 lines
1.3 KiB
HTML
{% from "_macros.html" import icon %}
|
|
{#
|
|
The whole thread. Returned after a rewind or a compaction, either of which
|
|
changes an arbitrary number of messages at once -- replacing the lot is
|
|
simpler and less error-prone than working out which individual bubbles to
|
|
remove. Also included by chat/index.html, so the conversation is described in
|
|
exactly one place.
|
|
|
|
Deliberately has no root element: it is swapped with innerHTML into #thread,
|
|
and an outerHTML swap would take the container with it.
|
|
#}
|
|
{% if compacted %}
|
|
{# Summarised turns are kept and still readable -- they have only stopped being
|
|
sent. A compaction that summarised badly is then a bad turn rather than a
|
|
lost conversation. #}
|
|
<details class="compacted">
|
|
<summary class="compacted__summary">
|
|
{{ icon("archive", "icon--sm") }}
|
|
<span>{{ compacted | length }} earlier messages, summarised</span>
|
|
{{ icon("chevron-down", "icon--sm reasoning__chevron") }}
|
|
</summary>
|
|
<p class="compacted__note">
|
|
These are no longer sent to the model; a summary of them goes instead. They
|
|
are kept here so nothing is lost.
|
|
</p>
|
|
<div class="compacted__body">
|
|
{% for message in compacted %}
|
|
{% include "chat/_message.html" %}
|
|
{% endfor %}
|
|
</div>
|
|
</details>
|
|
{% endif %}
|
|
|
|
{% for message in messages %}
|
|
{% include "chat/_message.html" %}
|
|
{% endfor %}
|