Get it for macOS

Dress bb in the ChatGPT desktop app's look, from the canvas and sidebar down to every button state, in light and dark. Both palettes ship, so switching modes changes the light and not the layout. Hover, active, focus-visible, and disabled states are themed across buttons, menu rows, tabs, switches, chips, and icon buttons. Menus, dialogs, popovers, tooltips, and the command palette share one surface ramp, and matching code themes carry the palette into syntax highlighting. No account and no network request: bb reads the stylesheet straight from the plugin directory.


Overview

View source

Light and dark palettes that reproduce the ChatGPT desktop app's surface ramp, text ladder, and accent, each with a matching code theme for syntax highlighting.

What you get

Every interaction state is themed, not only the resting look: hover, active, focus-visible, and disabled across buttons, menu rows, tabs, switches, chips, and icon buttons.

Menus, dialogs, popovers, tooltips, and the command palette share one surface ramp, so an overlay opened from anywhere in bb lands on the same material.

How it works

bb's interface is token-driven. A button renders hover:bg-state-hover, an input border-input, a dialog bg-background, so setting the token restyles every component that consumes it, including components added after the theme was written.

The palette is declarative: bb reads the stylesheet straight from the plugin directory. There is no runtime script, no injected code, and no network request.

Every value was measured from the real application rather than eyeballed. Computed custom properties, component styles, and each component's interaction states were read out of the running app. The few ChatGPT details bb's token set cannot express are a short, explicit list of narrow rules at the end of the stylesheet, each carrying the measurement that justifies it.

Requirements

bb 0.43 or newer. Install the plugin, then choose ChatGPT in the theme picker and pick light or dark.

Source and installation

More from Euan Guo

Agent RetryRetry a failed turn instead of accepting it as the end of the work. It retries any failure a provider reports, including one with no error classification at all — a gateway error, a process that died mid-stream, a request refused at the door — which bb's own retry declines. The wait grows with each attempt, up to 50 by default, and can be scoped by project, provider, thread, or the half of the failure space where the provider never took the request. Every decision is recorded with the rule behind it, and `bb agent-retry log`, `explain` and `simulate` show a retry before or after it happens. Disable BB's bundled Provider Retry plugin: both queue retries for the same failed turn.15NestGive every project a stable place in the sidebar, with its worktrees and agent threads underneath it. A thread family expands inline under the workspace it runs in, so work starting never reorders the row you were about to click. Each row reports the worst state under it, which puts a failed child agent on the project row without opening anything. Snooze a thread until a time you pick, or settle it when the work is done, and both shelves collapse to one counted header. Eighteen semantic colours, three ready-made presets and a Custom palette, each colour drawn as the thing it paints. Nest also reads which repository each workspace really belongs to from the machine holding it, and reports worktrees bb has no environment for. No account and no network request; requires bb 0.36 or newer and uses bb's experimental thread-list slot.New

More in Themes & Appearance 64

Personalize how bb looks and feels.

View all