Skip to content

fix: remove double border on content in chat#8545

Merged
matt2e merged 6 commits intomainfrom
remove-double-border
Apr 16, 2026
Merged

fix: remove double border on content in chat#8545
matt2e merged 6 commits intomainfrom
remove-double-border

Conversation

@matt2e
Copy link
Copy Markdown
Collaborator

@matt2e matt2e commented Apr 15, 2026

Tables

Before

Screenshot 2026-04-15 at 12 28 28 pm

After

Screenshot 2026-04-15 at 12 32 59 pm

Code Block

After

Screenshot 2026-04-15 at 1 22 19 pm

Summary

  • Remove double borders on streamdown table, code-block, and mermaid-block wrappers (inner content already provides its own border)
  • Place code block language label and action buttons on the same row using absolute positioning

Test plan

  • Verify table, code block, and mermaid blocks no longer show a double border
  • Verify code block language label and copy/action buttons appear on the same row

🤖 Generated with Claude Code

matt2e and others added 4 commits April 15, 2026 12:27
The table-wrapper element from streamdown had its own border, creating
a double-border effect with the inner table's border. Override with
border: none on the outer wrapper to keep only the inner border.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Code blocks and mermaid blocks have the same outer/inner double-border
pattern as table wrappers. Apply border: none to all three.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Override streamdown's code-block wrapper to use CSS grid, placing the
header (language label) and actions (download/copy buttons) in the same
grid row instead of relying on negative margin overlap.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace the fragile position: absolute approach with CSS grid to place
the language label and action buttons on the same row.

Resolves three issues from code review:

1. The + div sibling selector could match code-block-body when controls
   are disabled. Now guarded with :has([data-streamdown="code-block-actions"])
   so it only matches when the actions wrapper is actually present.

2. position: absolute removed streamdown's sticky scroll behavior on the
   actions wrapper, causing copy/download buttons to scroll out of view
   on tall code blocks. Grid placement preserves the original sticky
   positioning — only the -mt-10 negative margin is cancelled.

3. The previous commit message said "CSS grid" but used absolute
   positioning. This implementation actually uses CSS grid.

Signed-off-by: Matt Toohey <contact@matttoohey.com>
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ef578e7213

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread ui/goose2/src/shared/styles/globals.css Outdated
}
}

/* Remove outer border on streamdown wrappers (inner content already has one) */
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Remove comment that restates selector behavior

The root AGENTS.md rule for this repo says to avoid comments that restate what code does, but this newly added comment is just a plain-language duplicate of the selector plus border: none. Keeping this kind of comment increases drift risk when selectors evolve and violates the documented code-quality standard; remove it (and the similar comment below) or replace with a true "why" rationale.

Useful? React with 👍 / 👎.

matt2e and others added 2 commits April 15, 2026 15:28
The display: grid override on [data-streamdown="code-block"] had the
same specificity (0,1,0) as Tailwind's flex class, relying on CSS source
order to win. Double the attribute selector to [data-streamdown="code-block"][data-streamdown]
for specificity 0,2,0, making it resilient to Tailwind output order changes.

Resolves code review comment from e3c40763.

Signed-off-by: Matt Toohey <contact@matttoohey.com>
Remove the "what" comments that duplicate what the selectors and
declarations already express. Keep only the specificity-bump rationale
which explains a non-obvious technique.

Resolves code review feedback re AGENTS.md comment guidelines.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@matt2e matt2e changed the title fix: remove double border on streamdown wrappers and align code block header fix: remove double border on streamdown wrappers Apr 15, 2026
@matt2e matt2e changed the title fix: remove double border on streamdown wrappers fix: remove double border on content in chat Apr 15, 2026
@matt2e matt2e added this pull request to the merge queue Apr 16, 2026
Merged via the queue into main with commit dc052f4 Apr 16, 2026
23 checks passed
@matt2e matt2e deleted the remove-double-border branch April 16, 2026 00:34
jh-block added a commit to sunilkumarvalmiki/goose that referenced this pull request Apr 16, 2026
…l-placeholder

* origin/main: (64 commits)
  fix: expand tool calls by default when Response Style is Detailed (aaif-goose#8478)
  fix: create logs dir before writing llm request log (aaif-goose#8522)
  fix: enable token usage tracking and configurable stream timeout for Ollama provider (aaif-goose#8493)
  fix tauri-plugin-dialog version constraint to match other plugins (aaif-goose#8542)
  call goose serve from tauri frontend via goose-acp client (aaif-goose#8549)
  failed the script when bundle:default fails and cleanup "alpha"  (aaif-goose#8580)
  pass globally unique conversation identifier as sessionId in databricks api call (aaif-goose#8576)
  fix: use sqlx chrono decode for thread timestamps instead of manual parsing (aaif-goose#8575)
  docs: remove stale gemini-acp references (aaif-goose#8572)
  show individual untracked files in git changes widget (aaif-goose#8574)
  fix: update publishing flow to include new sdk dir (aaif-goose#8573)
  fix: remove double border on content in chat (aaif-goose#8545)
  chore(goose2): `just goose2 <command>` with the addition of `just goose2 kill` (aaif-goose#8570)
  Lifei/oltp data (aaif-goose#8458)
  Sidebar polish: search copy, dividers, project reorder, fix DnD (aaif-goose#8568)
  remove the workflow_dispatch check (aaif-goose#8563)
  fix: one more rename (aaif-goose#8562)
  fix(desktop): accept self-signed certs from configured external goosed host (aaif-goose#8400)
  alexhancock/npm-bumps (aaif-goose#8557)
  Remove npm publish from release for now (aaif-goose#8558)
  ...
michaelneale added a commit that referenced this pull request Apr 17, 2026
* main: (37 commits)
  polish: refine sidebar activity indicators, add placeholder token, and tidy search field (#8606)
  feat: add /edit command to cli for on-demand prompt editing (#8566)
  docs(mcp): add Rendex MCP Server extension tutorial (#8541)
  Lifei/delete tauri backend acp (#8582)
  chore: set goose binaries as executable in package.json (#8589)
  feat: add Novita AI as declarative provider (#8432)
  feat: add Kimi Code provider with OAuth device flow authentication (#8466)
  fix: chat loading-state model placeholder (#8431)
  fix: expand tool calls by default when Response Style is Detailed (#8478)
  fix: create logs dir before writing llm request log (#8522)
  fix: enable token usage tracking and configurable stream timeout for Ollama provider (#8493)
  fix tauri-plugin-dialog version constraint to match other plugins (#8542)
  call goose serve from tauri frontend via goose-acp client (#8549)
  failed the script when bundle:default fails and cleanup "alpha"  (#8580)
  pass globally unique conversation identifier as sessionId in databricks api call (#8576)
  fix: use sqlx chrono decode for thread timestamps instead of manual parsing (#8575)
  docs: remove stale gemini-acp references (#8572)
  show individual untracked files in git changes widget (#8574)
  fix: update publishing flow to include new sdk dir (#8573)
  fix: remove double border on content in chat (#8545)
  ...
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.

2 participants