Skip to content

Settings and help work on a phone, and three chat fixes - #331

Merged
mattshax merged 1 commit into
mainfrom
sol-cap-and-mobile
Sep 8, 2026
Merged

Settings and help work on a phone, and three chat fixes#331
mattshax merged 1 commit into
mainfrom
sol-cap-and-mobile

Conversation

@mattshax

@mattshax mattshax commented Sep 8, 2026

Copy link
Copy Markdown
Member

Four things found on a phone.

Settings and Help on mobile. Their 220px section rail sat beside a scrolling article; on a phone it took most of the width, and with the page itself no longer scrolling (the viewport fix) the article had nowhere to go, so the page looked frozen. The rail becomes a horizontal strip of section chips above the article, and views scroll inside themselves with overscroll-behavior: contain.

Chat controls overlapping the model picker. They float over the package's header; on a phone the picker grew under them. Labels drop to icons there and the picker gets max-width: calc(100vw - 190px) with truncation (written defensively against the package's class names).

A retry duplicated the answer. The client accumulates content events and cannot unsay them, so a retry after text had already streamed appended a second reply. A turn that has spoken is no longer retried; the error is surfaced.

Sol's first turn always failed. That provider rejects every token-cap spelling (max_output_tokens explicitly, max_tokens and max_completion_tokens behind the masked 400; no cap works). The rejection is now remembered on disk, so only the first turn a deployment ever runs pays to learn it, and that retry keeps streaming, since a rejected parameter is not a generation failure and the unstreamed retry left the reader on a still "Thinking" line for the whole reply.

Voice now opens at top level instead of in an iframe: the deployment is its own platform session on its own domain, so the frame demanded a second sign-in that mobile browsers cannot carry a cookie into. Proxying it from the Studio's origin needs a base path in Unmute's frontend build; noted for next.

Four things a phone found.

The section rail on Settings and Help is 220px beside a scrolling
article; on a phone it took most of the width, and with the page itself
no longer scrolling the article had nowhere to go, so the page looked
frozen. The rail is now a horizontal strip of section chips above the
article, and every view scrolls inside itself.

The chat controls float over the package's header, and on a phone the
model picker grew under them. Every label drops to its icon there and
the picker is given a ceiling and allowed to truncate.

A retried turn appended a second answer to the first, because the client
accumulates content events and cannot unsay them. A turn that has
already spoken is no longer retried; the error is surfaced instead. And
a provider that refuses a token cap is now remembered on disk, so only
the first turn a deployment ever runs pays for learning it, and that
retry keeps streaming, since a rejected parameter is not a streaming
failure and answering without it left the reader watching a still
Thinking line.

Voice opens at top level rather than in an iframe: the deployment is its
own platform session on its own domain, so the frame asked for a second
sign-in that mobile browsers cannot carry a cookie into. Serving it from
the Studio's own origin needs a proxy and a base path in Unmute's
frontend build; the panel says what it is until that lands.
@mattshax
mattshax merged commit 431255d into main Sep 8, 2026
1 check passed
@mattshax
mattshax deleted the sol-cap-and-mobile branch September 8, 2026 03:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant