CL-6376/CL-6377: timeline polish + single Connect action - #122
Merged
Merged
Conversation
…greeting copy, hover toolbar anchor - Failed-turn notice now renders as a quiet inline system row (.chat-turn-failed) in the timeline's own idiom instead of PrFailedTurnStrip's bordered banner: muted danger text, a ghost Retry, "What happened" as an inline disclosure. - The three-dot typing pulse now also clears on a chat.message carrying postUndeliveredNotice's turnFailed part — the one failure path with no chat.agent events of its own to clear it otherwise. - The message-actions row (reaction chips + pin toggle) no longer mounts for an unpinned message just because pinActions is wired — it only shows once there's something to show. Pinning stays reachable through the ellipsis/context menu. - Fixed "Welcome in alice" -> "Welcome in, alice." in the canned greeting template. - The hover toolbar now anchors to .chat-message-row (this message's own content) rather than .chat-message-group as a whole, so it no longer floats up into a day divider's space on the first message of a new day. CL-6377: connect flow — single Connect action, no separate test step - Collapsed the two-call "test key, then save" flow into the one /complete call everywhere (Connections settings, workbench plugins panel, plugins-ui connect card) — /complete already proves the key against the connector's own probe before storing it, so the separate client-driven /credential/test round-trip was redundant. - Removed the POST /:connectorId/credential/test route and its client helpers (testConnectorCredential) entirely — no fallback path left behind. - Renamed button copy to "Connect"/"Connecting…" throughout; a rejected key surfaces inline from the same connect call. CL-6378 (tool_use rendering as raw JSON): investigated, not started — didn't fit this box. The tool-trace part type already renders through react-ui's ToolBlock lifecycle component, not raw text; the leak is in how a turn's final text content gets assembled upstream (chat-orchestrator paired with @corbits/folded-runs' connectorReplyContent) or possibly in a different message path. Needs its own investigation pass.
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.
Summary
CL-6376 (chat timeline polish,
packages/chat-ui):.chat-turn-failed) instead ofPrFailedTurnStrip's bordered banner — muted danger text, a small ghost Retry, "What happened" as an inline disclosure. Auto-retry-once semantics and consumer copy unchanged.postUndeliveredNotice(achat.messagewith aturnFailedpart) — previously that path emitted nochat.agentevents, so the pulse stayed stranded until a 120s backstop.pinActions— it only renders once there's something to show (a reaction, or an already-pinned message needing a visible unpin). Pinning stays reachable via the ellipsis/context menu's "Pin message" entry..chat-message-group(which could include a leading day divider) — it no longer floats up into the divider's space on the first message of a new day.CL-6377 (connect flow,
packages/connections+settings-ui+plugins-ui+chat-ui):POST /:connectorId/completealready proves the key against the connector's own probe before storing it, so the separate client-driven/credential/testround-trip was dead weight.POST /:connectorId/credential/testroute and its client helpers (testConnectorCredential) entirely, server and client — no fallback path left behind.CL-6378 (tool_use rendering as raw JSON): investigated but not started — didn't fit this box.
tool-traceparts already render through react-ui'sToolBlocklifecycle component, not raw text, so the leak is upstream of the renderer (how a turn's final text content is assembled inchat-orchestrator.ts/@corbits/folded-runs'connectorReplyContent, or a different message path) and needs its own investigation pass.Test plan
bun test+bunx tsc --noEmitgreen inpackages/chat-ui,packages/chat,packages/settings-ui,packages/connections,packages/plugins-uibunx eslint srcclean in touched packages (pre-existing warnings elsewhere untouched)turnFailed(streaming-reply.test.ts), failed-turn row selectors, pin-toggle-hidden-until-pinned + reachable via context menu, connect-dialog single round-trip + inline 422 error