Skip to content

amicode: fix chat prose clipping + restore AMICO identity on every assistant turn - #18

Merged
Rchari1 merged 2 commits into
local/amicodefrom
rchari/chat-fixes
Jul 10, 2026
Merged

amicode: fix chat prose clipping + restore AMICO identity on every assistant turn#18
Rchari1 merged 2 commits into
local/amicodefrom
rchari/chat-fixes

Conversation

@Rchari1

@Rchari1 Rchari1 commented Jul 10, 2026

Copy link
Copy Markdown
Member

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-message flex column and its text-part children had no min-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 had min-width: 0; the message column + text parts were the gap). Fix: min-width: 0 / max-width: 100% on [data-component="assistant-message"] and its text-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: AssistantParts now heads each assistant turn with the AMICO signature, suppressed when the turn already contains an amicode_* tool card (those bring their own signature — no double-up). This is presence, not a repaint: it reuses Kate's existing amc-sig/amc-wordmark styling 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

Rchari1 and others added 2 commits July 10, 2026 15:03
…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>
@Rchari1
Rchari1 merged commit 566e285 into local/amicode Jul 10, 2026
0 of 4 checks passed
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).
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