feat(ui): Eclipse Minimal v2 — 全前端设计语言替换#145
Merged
Merged
Conversation
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
…peline, zero-blur enforcement - globals.css rewritten to Eclipse Minimal v2: pure-black canvas + moonrise halo on <html>, matte charcoal surfaces, moon-white ink, tint-only glow (--sg-tint* + bloom/edge/well/lift/scrim light grammar); sg-* names kept so ~5k call sites re-skin by value - tailwind: backdropBlur/Saturate core plugins disabled, fontWeight semibold/bold flattened to 500, primary/ring routed to var(--sg-tint), MiSans/M PLUS 1/JetBrains Mono stacks, st-* radius/spacing tiers - fonts self-hosted in app/fonts (MiSans Latin subsets pulled from the design project, JBM VF, M PLUS 1 latin-500) via next/font/local - lib/tint.ts replaces accent.ts + theme-studio.ts: data-tint presets (dawn/ice/rose/moss/iris) + locked-L/C custom hue; BOOT purges Spatial Glass era localStorage CSS; accent-picker rewritten as tint picker - deleted: aurora-background, cursor-light, tilt-card, use-specular - repo sweep: zero backdrop-* classes, zero lg-* optics, sg-noise gone, sg-grad-text confined to login/onboard heroes - enforcement tests rewritten for the Eclipse invariants + new tint tests
…react - components/icons/sprite.ts: 149 symbols, 24 grid / 1.8 stroke / round caps / currentColor; signature glyphs (spark, chevrons, arrows, warning, trash, pin, doc, mic, menu, download, offline…) transcribed verbatim from the design project's assets/icons.js, the rest re-set from lucide outlines (ISC) at the Eclipse stroke; directional family unified at stroke 2 per the design chevrons - components/icons/index.tsx: <Icon name> over an inline <use> sprite + drop-in PascalCase exports and LucideIcon-compatible type, so all 152 importing files switch via a one-line import change - sprite inlined once in app/layout.tsx (static-export safe) - lucide-react dependency removed; enforcement test forbids reimport
- button: solid tint pill (whitelisted glow) / ghost-border outline / matte secondary + quiet ghost / muted err destructive; weight 500; 50px lg tier - new presence-orb primitive (eclipse pearl, sm/md/hero, eclipse-turn) - card/glass-panel/empty-state: resting surfaces carry the moon edge only; primary variant = selected treatment (edge + inset tint glow) - dialog/drawer/command-palette/cmdk: floating tier unified on .sg-glass-overlay (opaque #111 + strong edge + elev-4) - alert: matte charcoal band + 2px status left rule - switch: checked = solid tint w/ tint-ink thumb; unchecked = well - stat-chip/filter-chip: active state = nav-active selected treatment - skeleton shimmer is now an opacity pulse (CSS-level, wave 0)
- sidebar: matte charcoal rail with moon edge only; elevation earned only while the mobile drawer floats; active item = nav-active selected treatment; indicator bar = tint + bloom-1; user chip = eclipse pearl - topnav: canvas-colored .c-appbar (hairline bottom border + downward scrim) replacing the glass card - brand-mark: mascot.png replaced by a static eclipse pearl + display-face wordmark
- message-bubble: user = raised charcoal bubble w/ bottom-right tail + strong moon edge; assistant = .c-bubble agent (600px cap, bottom-left tail); streaming = luminous thread + light seep via CSS; role-row assistant dot = tiny eclipse pearl; edit-in-place = sunken well with solid-tint save - markdown caret: tint + bloom-1 (whitelisted) - tool-call-card: running state = static tint dot (thread owns the motion budget); sunken well container - reasoning-block: dashed quiet chip + left-rule body; shimmer/italic dropped - composer: sunken input well (radius 24, well shadow), no lens/scale; send = solid tint circle w/ soft glow; segmented control selected = tint; emoji active = tint-soft - chat-sidebar: active row = nav-active selected treatment; new-chat = solid tint pill; pin/rename de-accented - approval-prompt: undecided = opaque sheet treatment (strong edge + elev); allow = solid tint pill / deny + always = ghost pills - chat-area header: .c-appbar + app-bar pearl doubling as the typing indicator (spins while streaming); status dot static - chat empty state: hero eclipse pearl replaces the mascot
- login/onboard: nebula/starfield/noise layers removed (moonrise on <html> is the canvas); hero = spinning eclipse pearl + the app's only grad-text (display face, 26px, +1% tracking); onboard steps = solid tint - status page: page-local backdrop removed; hero pill/avatar de-glowed to edge treatments - 404: eclipse pearl + display-face numerals; mascot.tsx deleted - font-serif → font-display everywhere; GlassPanel lively prop usages stripped (stat-chip API simplified) - glow demotions outside the whitelist (dashboard CTA, cost footer, env-var rows, message-list jump pill, status pill); dashboard hero nebula blobs removed; persona avatar fallback matte
…se pearl - presence-orb: display inline-block (span width/height was collapsing to 0 outside flex parents — the hero pearl was invisible) - breadcrumbs: current page label nowrap (vertical squeeze in narrow bars) - README: product-tour GIF removed (9MB), mascot = the eclipse pearl (docs/assets/eclipse-pearl.png, rendered from the design token CSS) - visual QA pass (playwright, throwaway gateway): login/dashboard/chat/ security dark + Paper light + data-tint=ice all verified; e2e baseline parity confirmed — the 12 failing specs fail identically on main (pre-existing local-stack issues, no redesign regressions)
Cute moon-white eyes (with pupils + periodic blink), a smile that breathes, a slowly turning corona and a gentle bob — all CSS inside the SVG so it animates right in the GitHub README <img>; reduced-motion disables everything. Replaces the static PNG tile.
…aptures) A git add -A sweep in an earlier iteration of this branch briefly committed local audit/playwright artifacts (history rewritten to purge them); ignore the recurring patterns so it cannot happen again.
sweetcornna
force-pushed
the
redesign/eclipse-minimal-v2
branch
from
July 18, 2026 10:54
7fb859d to
445b291
Compare
Findings from the 8-angle review pass: - CRITICAL: bg-sg-card-grad token now carries fill + sheen in one background-image stack. tailwind-merge was silently dropping the base bg-* class wherever the pair was composed via cn() (GlassPanel, Card, EmptyState), and ~8 unmigrated bare consumers (session detail sub-surfaces) rendered transparent on the black canvas - shadow-sg-selected token (--sg-shadow-selected) = single source for the selected treatment; .nav-active + GlassPanel primary now share it - dangling var(--font-geist-mono) → var(--font-jetbrains-mono) in config raw view, agents detail, runner-node SVG labels (mono was silently falling back to sans/system) - sidebar avatar initial forced white — the pearl disc is always #000, theme ink vanished on Paper light - BOOT tint generator re-synced with buildTintCss (Math.round on hue) - icon sprite externalized to public/icons-sprite.svg + <use href> — removes ~106KB of duplicated inline+flight sprite markup from every exported route's HTML - dead recipe CSS removed (.thread/.caret/.c-tool/.c-reason/.c-composer/ .c-banner/.c-sheet/.ghost-pill/.solid-pill had zero consumers); Paper light shadow overrides for chat bubbles; stat-chip dead ternary + tone map remapped to Eclipse; empty-state JS reduced-motion gate dropped (CSS owns it); className sweep residue cleaned - switch tests now pin the tint-ink thumb contract; ui/README design section rewritten (was two design languages stale)
sweetcornna
added a commit
that referenced
this pull request
Jul 18, 2026
Full-frontend design-language replacement (PR #145): pure-black monochrome Eclipse system with the tint pipeline, eclipse-pearl signature, self-drawn icon sprite, self-hosted MiSans/M PLUS 1/ JetBrains Mono, zero backdrop-filter, weight-500 discipline — all vitest-enforced. README rides the animated eclipse-pearl mascot.
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.
概要
把 web 管理台的设计语言从 Spatial Glass(visionOS 彩色玻璃)整体替换为 Eclipse Minimal v2(claude.ai/design 设计项目
Corlinman Client的现行语言,月之暗面/moonshot 风):纯黑画布 + 月升光晕、哑光炭面、月白五级墨阶、tint 只染"光"、日食珠签名、M PLUS 1 + MiSans + JetBrains Mono。波次(每波一 commit,逐波门禁)
验证