fix(web): move composer working-strip into the message pane (stop clipping the input)
Some checks failed
ci / build-test (push) Has been cancelled
ci / docker-build (push) Has been cancelled
ci / web (push) Has been cancelled
Desktop App / Build Linux (amd64) (push) Has been cancelled
Desktop App / Attach to Release (push) Has been cancelled

The "Working — message will queue" strip lived inside the sized input Pane, so
appearing/disappearing ate the textarea's fixed height and clipped it, forcing
a resize. Move it into the message Pane alongside the connection/error banners
— those correctly consume transcript space (flex-1) rather than the input's
fixed height. The input Pane is now stable whether or not a background turn is
running. Styling/idiom unchanged.

VERSION: 0.17.2 -> 0.17.3
This commit is contained in:
2026-08-03 22:58:47 +02:00
parent 2b73290994
commit 058f1afcdc
2 changed files with 22 additions and 18 deletions

View File

@@ -404,11 +404,31 @@
<button
class="ml-1 text-muted-foreground hover:text-foreground"
onclick={() => onDismissError(err.id)}
aria-label="Dismiss">×</button
aria-label="Dismiss">×</button>
>
</div>
</div>
{/each}
{#if working && !streaming}
<!-- Background/autonomous turn in progress (no live stream to watch):
keep the composer open so the operator can queue a follow-up
(plan 2026-08-03 F1/F2). Lives in the message pane (alongside the
connection/error banners) so it consumes transcript space, NOT the
input pane's fixed height — otherwise appearing/disappearing would
clip the textarea and force a resize. Terminal status strip:
spinner + fg label + primary-tinted hairline border, aligned to the
textarea column. -->
<div class="mx-auto w-full max-w-3xl px-4">
<div class="composer-status mb-2">
<Spinner class="size-3 shrink-0 text-primary" />
<span class="composer-status-label">Working</span>
<span class="composer-status-text"
>message will queue — runs when Nomos is free</span
>
</div>
</div>
{/if}
</Pane>
<Pane bind:size={inputSize} minSize={inputMinSize} maxSize={45} class="flex flex-col">
@@ -416,22 +436,6 @@
class="flex h-full min-h-0 flex-col border-t bg-card/50 p-3 input-ornament relative"
bind:this={inputWrapperRef}
>
{#if working && !streaming}
<!-- Background/autonomous turn in progress (no live stream to watch):
keep the composer open so the operator can queue a follow-up
(plan 2026-08-03 F1/F2). Styled as a terminal status strip that
mirrors AgentTrace's running idiom (spinner + fg label + a
primary-tinted hairline border) and aligns to the textarea's
column, so it reads as part of the working state rather than a
floating footnote. -->
<div class="composer-status mx-auto mb-2 w-full max-w-3xl">
<Spinner class="size-3 shrink-0 text-primary" />
<span class="composer-status-label">Working</span>
<span class="composer-status-text"
>message will queue — runs when Nomos is free</span
>
</div>
{/if}
<form
class="relative mx-auto flex h-full w-full max-w-3xl"
onsubmit={(e) => {