Conversation
Every built-in theme ships a matching scenic backdrop that paints behind the app. Main canvas fills re-derive from the theme's solid colors at partial alpha so the interface reads as tinted glass over the scene, and nested bg-background containers stop re-painting so the glass stays one layer. Pick the scene in Settings > Appearance: Theme scene follows the active theme, a specific scene sticks across theme changes, None turns it off. Dark mode keeps the scene subtle to preserve text contrast.
This branch has not been deployed
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.
Problem
T3 Code's themes set colors, but the workspace is always a flat opaque surface. Bambooed-style
apps show that a calm scene behind a translucent interface makes long sessions feel noticeably
less sterile, and our glass utilities (
surface-glass, the glass-opacity setting) already existbut have nothing scenic behind them to show through.
Change
Every built-in theme ships a matching scenic backdrop (
apps/web/public/backgrounds/, one webpper theme, generated with image generation and compressed to 23-125 KB each). When a scene is
active, a fixed dimmed image paints under every surface, and the main canvas fills re-derive
from the theme's solid colors at partial alpha, so the interface reads as tinted glass over the
scene:
themeBackgroundclient setting (auto/none/ a built-in theme id) lands inpackages/contracts.Theme scenefollows the active theme, a picked scene sticks acrosstheme changes,
Noneturns the backdrop off.body::beforeunder all content; large surfaces get nobackdrop-filter(one blurred layer that big repaints on every streaming frame). The scenesare generated softly defocused instead.
bg-backgroundcontainers stop re-painting while a scene is active, so the glass staysa single layer instead of stacking into opacity.
the dark palettes is preserved.
Mobile is untouched: it renders its own theme system and palette, and the backdrop piggybacks on
the web theme pipeline. Desktop picks this up automatically since it wraps the web client.
Evidence
Before/after captures of the running client (same workspace, same threads; "before" is the
candidate with the scene set to None, which renders the identical base path):
After (Ocean theme, scene visible through the interface):
After (T3 Chat theme):
Before (scene off):
Settings entry point:
Gap: the screenshot files are captured and ready (
/tmp/t3-pr-evidence/) but the file-dropupload credential was not available in this session, so the images are not yet attached. They
will be uploaded and linked here before the draft leaves draft state.
Verification
vp test run apps/web/src/themeBackground.test.ts packages/contracts/src/settings.test.ts apps/web/src/components/settings/settingsSearch.test.ts apps/web/src/hooks/useTheme.test.ts— 210 passed.pnpm --filter @t3tools/contracts typecheck,pnpm --filter @t3tools/web typecheck— clean.vp linton the touched files — no new warnings (remaining ones pre-date this change).vp run devin an isolated worktree, paired browser,real workspace data): scene follows theme switches and appearance flips, picker updates live,
None restores the base rendering, browser chrome theme sync stays correct with the body fill
cleared.
Model and harness: GLM (enablers/xlarge) via T3 Code / OpenCode, with Codex CLI image generation
for the five scenes and Codex visual QA of the captures.