feat: import boss-ui components + Tailwind v4 upgrade#69
feat: import boss-ui components + Tailwind v4 upgrade#69tellaho wants to merge 16 commits intoblock:mainfrom
Conversation
- Upgrade Tailwind CSS v3 → v4 with @tailwindcss/postcss, tw-animate-css - Replace tailwind.config.js with CSS @theme blocks in globals.css - Import boss-ui token system (semantic backgrounds, borders, text, shadows, shapes, typography scale, animations, layout tokens) - Import 49 shared UI components from squareup/boss-ui - Import 48 AI element components from squareup/boss-ui - Import 4 hooks from squareup/boss-ui - Install all required dependencies (Radix UI primitives, UI libs, content libs, form/utility libs) - Migrate all 35+ feature files from custom tokens to standard shadcn/boss-ui tokens (bg-background, text-foreground, bg-accent, text-muted-foreground, border-border, etc.) - Align to boss-ui visual language: flat border-driven design, no elevation on sidebars/inputs, shadow-popover for menus, shadow-card for dialogs - Fix low-contrast text by removing opacity modifiers on text-muted-foreground - Update biome.json, tsconfig.json, check-file-sizes.mjs for imported code - Re-add custom Button variants (toolbar, xs, icon-sm, icon-lg) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Replace hand-rolled dialogs with Dialog/DialogContent in CreateSkillDialog, CreateProjectDialog, PersonaEditor - Replace delete confirmations with AlertDialog in AgentsView, ProjectsView, SkillsView, SettingsModal, DoctorCheckRow - Replace raw <input> with Input component (6 instances) - Replace raw <textarea> with Textarea component (3 instances) - Replace raw <select> with Select/SelectTrigger/SelectContent/ SelectItem (5 instances) - Replace raw <label> with Label component throughout - Replace <input type="checkbox"> with Checkbox component - Replace div border-t dividers with Separator in settings - Fix Radix SelectItem empty-string value crash by using sentinel - Set sidebar to bg-background Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…tarea Use the boss-ui Button default variant (bg-primary) for the send button instead of custom bg-foreground overrides. Suppress the global focus-visible ring on the chat textarea to prevent the black outline. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 1f1ebfe198
ℹ️ 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".
| @import "tailwindcss"; | ||
| @import "tw-animate-css"; |
There was a problem hiding this comment.
Re-register Tailwind typography plugin
After upgrading to Tailwind v4, this stylesheet no longer registers @tailwindcss/typography (and the JS config that previously loaded it is deleted), so prose* utilities used by src/features/chat/ui/MarkdownContent.tsx are no longer generated. In practice, markdown messages lose their intended typography/table/code styling even though those classes are still present in the JSX.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Fixed in cab3b86 — added @plugin "@tailwindcss/typography"; to globals.css to register the prose utilities for Tailwind v4.
- Download Cash Sans Wide font files (5 weights) from boss-ui - Add @font-face declarations in globals.css - Switch page titles, settings headings, home clock/greeting, and chat empty state to font-display (Cash Sans Wide) with tracking-tight - Use Badge component with secondary variant for PersonaCard pills - Remove redundant "Personas" section subtitle - Upgrade "Active Agents" heading to display font Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace ~56 raw <button> elements across 20 files with the Button component, hand-rolled toggle groups with ToggleGroup, img/div avatar patterns with Avatar, animate-pulse skeletons with Skeleton, and a raw <input> with Input. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Relocate src/components/ai-elements/ to src/shared/ui/ai-elements/ to colocate with the rest of the boss-ui component library. No import updates needed as these components are not yet consumed. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Use default sans-serif for skill names in the list and create dialog to match persona card styling. Keep mono only for instructions textarea. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace hand-rolled ToolCallCard, ThinkingBlock, and MarkdownContent with the ai-elements Tool, Reasoning, and MessageResponse compounds. Action buttons now use MessageAction with built-in tooltip support. Add @source for streamdown so Tailwind generates its utility classes. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Merges 7 commits from main into tho/boss-ui: - Image paste support in chat input (block#68) - Tab name text unselectable (block#67) - Chat title immediate update on send (block#66) - Artifact v1 file viewing (block#63) - Cmd+W tab close (block#64) - Chat activity/unread state tracking (block#62) - Sidebar hierarchy polish + faster reloads (block#61) Key conflict resolutions: - Keep Tailwind v4 CSS-based config (delete tailwind.config.js) - Keep boss-ui dialog.tsx, add showCloseButton prop from main - Add text-foreground-subtle token to boss-ui theme system - Keep ToolCallAdapter (boss-ui), adopt ToolChainCards pattern from main - Delete MarkdownContent/ToolCallCard (replaced by boss-ui ai-elements) - Adopt SessionActivityIndicator from main into sidebar - Adopt ClickableImage/ImageLightbox from main - Merge drag-and-drop image support into ChatInput - Keep boss-ui hover:bg-accent/50 treatment throughout sidebar Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Merge origin/main (tabs removal refactor block#70) and fix two code review items: - Register @tailwindcss/typography plugin via @plugin directive for prose classes - Fix accordion keyframes to use --radix-accordion-content-height (not --bits-) - Remove GooseIcon home button from sidebar header (removed upstream) - Adopt tab→session rename throughout sidebar components Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: cab3b8642d
ℹ️ 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".
| <ToolContent> | ||
| {Object.keys(args).length > 0 && <ToolInput input={args} />} | ||
| <ToolOutput | ||
| output={isError ? undefined : result} | ||
| errorText={isError ? result : undefined} | ||
| /> |
There was a problem hiding this comment.
Preserve artifact quick-open actions on tool results
This adapter only renders generic ToolInput/ToolOutput, but the previous ToolCallCard integrated resolveToolCardDisplay and openResolvedPath to surface “Open file/folder/path” actions for tool outputs. As a result, tool calls that create or reference artifacts now regress to plain text output with no direct open action, which breaks the artifact-viewing workflow introduced in earlier chat changes.
Useful? React with 👍 / 👎.
Add overflow-hidden to main content area so the flex layout chain properly constrains scrolling to the MessageTimeline, keeping the chat input and status bar pinned at the bottom. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Two issues caused the entire page to scroll when viewing chat: 1. scrollIntoView() in MessageTimeline scrolls all ancestors including the document. Replaced with container.scrollTo() which only scrolls within the message timeline container. 2. Tailwind v4 preflight doesn't set height/overflow on html/body like v3 did. Added height: 100% + overflow: hidden on html, body, #root outside @layer base so the cascade can't override them. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add min-w-0 and w-full to message content containers so flex items respect the max-w-[85%] boundary. Wrap tool output pre blocks with whitespace-pre-wrap so result text flows within the code block. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The previous selection background (#1a1a1a) was nearly invisible against the dark input background. Now uses the user's accent color at 60% opacity. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Strip visual noise from collapsed tool calls: remove wrench icon (via optional showIcon prop), remove border/rounded container, replace status pill with plain text, hide "Completed" status entirely, and use inline chevron caret next to the tool name. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
Superseded — reopening from origin now that I have push access. #85 |



Summary
bossui.-.Screen.Recording.2026-04-01.at.8.40.44.PM.trimmed.mov
Test plan
accent/50across all interactive elements🤖 Generated with Claude Code