amicode: fix chat prose clipping + restore AMICO identity on every assistant turn - #18
Merged
Conversation
…n the assistant-message flex column + text parts — the container chain had it, the message column was the gap); AMICO signature heads EVERY assistant turn, not only interview receipt cards (brand identity shouldn't vanish in plain chat) — reuses Kate's amc-sig restyle Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ery assistant turn - assistant-message flex column + its text parts lacked min-width:0, so a long line pushed the message past the viewport and clipped (the 'overlapping transfers' cutoff). Add min-width:0 / max-width:100%. - the AMICO mark+wordmark only appeared on interview receipt cards; it now heads plain-prose assistant turns too (suppressed when a turn already has an amicode_* card, which carries its own signature). Reuses Kate's restyle untouched — presence, not repaint. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This was referenced Jul 27, 2026
jack-champagne
added a commit
that referenced
this pull request
Jul 28, 2026
Our base (sst/opencode v1.17.3, 2026-06-10) predates Sonnet 5 and Opus 5.
anthropicOpus47OrLater() required both a major and a minor version in the
model id, so claude-opus-5 and claude-sonnet-5 never matched and fell back
to legacy thinking:{type:"enabled",budgetTokens:16000} with only high/max
tiers instead of the 5-tier adaptive path.
Ports the end state of upstream's provider/model files rather than the 112
commits behind them, which would drag in the layer-node -> app-node refactor
and the @opencode-ai/schema extraction:
- provider/transform.ts + its test: replaced wholesale (fork never touched
either; 0 conflicts). Also brings prompt-cache keys by SDK and the
Grok/GLM/Bedrock-Mantle variant fixes.
- core/models-dev.ts: additive reasoning_options field the transform reads.
- session/llm/request.ts: 3-way merged, 0 conflicts; amicode patch #18
preserved. Brings strict:false on OpenAI Responses-family tools.
Measured over all 454 reasoning models in the live models.dev catalog:
418 identical, 36 changed, 0 errors. Claude 4.8/4.6/4.1 unchanged.
Verified: tsgo green on opencode + core; test/provider 503 pass / 0 fail;
test/session + test/server identical before and after (3 pre-existing
llm-native-recorded failures reproduce on the unported tree).
jack-champagne
added a commit
that referenced
this pull request
Jul 28, 2026
Our base (sst/opencode v1.17.3, 2026-06-10) predates Sonnet 5 and Opus 5.
anthropicOpus47OrLater() required both a major and a minor version in the
model id, so claude-opus-5 and claude-sonnet-5 never matched and fell back
to legacy thinking:{type:"enabled",budgetTokens:16000} with only high/max
tiers instead of the 5-tier adaptive path.
Ports the end state of upstream's provider/model files rather than the 112
commits behind them, which would drag in the layer-node -> app-node refactor
and the @opencode-ai/schema extraction:
- provider/transform.ts + its test: replaced wholesale (fork never touched
either; 0 conflicts). Also brings prompt-cache keys by SDK and the
Grok/GLM/Bedrock-Mantle variant fixes.
- core/models-dev.ts: additive reasoning_options field the transform reads.
- session/llm/request.ts: 3-way merged, 0 conflicts; amicode patch #18
preserved. Brings strict:false on OpenAI Responses-family tools.
Measured over all 454 reasoning models in the live models.dev catalog:
418 identical, 36 changed, 0 errors. Claude 4.8/4.6/4.1 unchanged.
Verified: tsgo green on opencode + core; test/provider 503 pass / 0 fail;
test/session + test/server identical before and after (3 pre-existing
llm-native-recorded failures reproduce on the unported tree).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two chat bugs, fresh branch off
local/amicode.1. Prose clips on the right edge
Long assistant lines (e.g. "…overlappingtransfers" running past the viewport) were cut off with no wrap — see the reported screenshot. Root cause: the
assistant-messageflex column and itstext-partchildren had nomin-width: 0, so a long line's intrinsic width prevented the flex child from shrinking and it overflowed the container (the outer container chain already hadmin-width: 0; the message column + text parts were the gap). Fix:min-width: 0/max-width: 100%on[data-component="assistant-message"]and itstext-part/text-part-body. The markdown component already wraps correctly — this was purely the flex container.2. AMICO identity vanished from plain chat
The AMICO mark + wordmark only rendered on interview receipt cards (card.tsx), so ordinary prose replies showed no Amico identity — the brand disappeared for most of a conversation. Fix:
AssistantPartsnow heads each assistant turn with the AMICO signature, suppressed when the turn already contains anamicode_*tool card (those bring their own signature — no double-up). This is presence, not a repaint: it reuses Kate's existingamc-sig/amc-wordmarkstyling untouched (her de-gold restyle stays; the mark just shows up everywhere again).Verification
ui + app typecheck clean; 68 ui tests green; built + relaunched, live in the dev host.
🤖 Generated with Claude Code