Skip to content

Release: dark-mode contrast overhaul#1437

Merged
zbigniewsobiecki merged 2 commits into
mainfrom
dev
Jun 23, 2026
Merged

Release: dark-mode contrast overhaul#1437
zbigniewsobiecki merged 2 commits into
mainfrom
dev

Conversation

@zbigniewsobiecki

Copy link
Copy Markdown
Member

Promotes the dark-mode contrast fix from dev to main (prod).

Included: #1436fix(web): overhaul dark-mode contrast in dashboard tables.

Fixes invisible dark-mode table headers (migrated 5 raw tables to the shadcn Table primitive), lifts the dark muted-foreground token, fixes the red-on-red destructive-foreground (Cancel/Delete buttons), and the "Unlinked" / status-fallback badges. Full suite green.

🤖 Generated with Claude Code

zbigniewsobiecki and others added 2 commits June 23, 2026 20:10
Dark mode read as "pretty terrible": the Global Runs table header text was
dark-gray on dark-gray (nearly invisible), secondary cells were dim, the
"Unlinked" pill was low-contrast, and destructive action buttons rendered
red-text-on-red-background.

Root cause was NOT missing `dark:` variants (a grep found zero) — it was
token-choice in 5 raw <table> components plus two bad dark token values.

Tokens (web/src/index.css):
- Lift dark --color-muted-foreground 0.708 → 0.75 for legible secondary text.
- Fix --color-destructive-foreground in both themes (was a saturated red on the
  red destructive bg → red-on-red) to near-white oklch(0.985). This un-breaks
  the Cancel/Delete buttons that use `bg-destructive text-destructive-foreground`.
- Define --radius (referenced by sonner.tsx but never declared).

Migrate the 5 raw tables to the shadcn Table primitive (runs-table,
work-item-runs-table, project-work-table, organizations-table,
webhooklogs-table). Its TableHead uses text-foreground instead of the dim
text-muted-foreground on bg-muted/50 — the invisible-header bug — and prevents
any new raw table from reintroducing it. Behavior preserved: clickable rows,
responsive hidden md:table-cell columns, alignment, tabular-nums, links, and
title wrapping (whitespace-normal where the primitive's default nowrap differs).

Badges: "Unlinked" pill → <Badge variant="outline">; status-badge unknown
fallback brightened to dark:bg-gray-700 dark:text-gray-100.

Verified: tsc -b, biome, vite build, and 562 web unit tests all green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RyBTx5JozjbpUko5SRyz4X
…rast

fix(web): overhaul dark-mode contrast in dashboard tables
@zbigniewsobiecki zbigniewsobiecki merged commit 7c7d23f into main Jun 23, 2026
8 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