Skip to content

Chat polish: fix loader/header overlap, retry auto-resends - #307

Merged
TheGreatAxios merged 3 commits into
mainfrom
cl-6624-chat-polish
Aug 22, 2026
Merged

Chat polish: fix loader/header overlap, retry auto-resends#307
TheGreatAxios merged 3 commits into
mainfrom
cl-6624-chat-polish

Conversation

@TheGreatAxios

Copy link
Copy Markdown
Contributor

Summary

Fixes CL-6624, two owner-reported chat-ui issues:

  • Loader overlapped the header divider. .chat-workbench-loading (the
    "Getting your workbench ready…" three-dot loader) sat flush under
    .chat-workbench-header with zero gap, so the dots rendered right on top
    of the header's bottom rule instead of below it. It now takes flex: 1
    of the room's remaining space and centers within it, with its own padding
    and overflow: auto so it can never bleed past its own box at a short
    viewport height. Applied the same overflow containment to
    .chat-workspace-frame (the pre-workbench loading screen).
  • Retry pasted into the composer instead of resending. Clicking Retry
    on a failed-turn strip now sends the recovered request text straight
    through the normal send path — same as typing it and hitting Enter —
    instead of handing it back into the composer for the person to send by
    hand. The Retry button disables itself for the duration of that resend
    so a double-click can't fire two sends. The strip's cause-aware failure
    text is unchanged.

Test plan

  • WORKBENCH_CHECK_SINCE=origin/main bun run typecheck — passes for
    @corbits/chat-ui
  • WORKBENCH_CHECK_SINCE=origin/main bun run test@corbits/chat-ui:
    666 pass, 0 fail
  • bun run lint — clean (0 errors)
  • Live-verified against the running stack (:3000): logged in as
    dana.reyes, opened a pre-CL-6586 broken workbench ("invalid quirks"),
    confirmed two live failed-turn strips and reproduced the header-overlap
    bug exactly (dots sitting on the divider). That stack serves main
    (pre-fix), so the old paste-into-composer Retry behavior was confirmed
    live there for contrast; the new auto-resend behavior is covered by the
    updated unit tests since this branch isn't deployed to that stack.

The three-dot "Getting your workbench ready…" loader sat flush under
.chat-workbench-header with no gap, so the dots rendered on top of the
header's bottom rule instead of below it. Give the loader flex:1 so it
claims the room's remaining space and centers within it, with its own
padding and overflow: auto for containment at short viewport heights;
apply the same overflow containment to .chat-workspace-frame, the
pre-workbench loading screen's outer frame.
Rewrites the old paste-into-composer assertion: Retry should hand the
recovered text straight to the host's resend action, and the button
should disable itself while that resend is in flight so a double-click
can't fire two sends.
Retry used to hand the recovered request text back into the composer
for the person to send again by hand. It now sends that text straight
through the normal send path itself, same as if they had typed it and
hit Enter. The strip disables its own Retry button for the duration of
that resend so a double-click can't fire it twice; the cause-aware
failure text is unchanged.
@TheGreatAxios
TheGreatAxios merged commit d9ea305 into main Aug 22, 2026
5 checks passed
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