Repository navigation
Replies: 8 comments
|
I'd like to put up a PR for this. The minimal slice I have in mind:
One question before I build it: as a data URI the image would live inside the |
|
Draft PR up at #5911 — the minimal slice described above ( |
|
Following up on @Williawar's voluntarily closed #5911: I've implemented a focused replacement locally against main ( The slice stays on web/desktop: imported/exported theme JSON supports embedded PNG/JPEG/WebP/AVIF/GIF, a 192 KB complete data-URI cap, and opacity 0–1 (default 0.15), with fixed cover/center rendering. It preserves the existing grain layer and theme colors, drops malformed stored wallpapers, preserves wallpaper through color edits/duplicates/merges, and clears it when switching to a normal theme or cancelling its preview. The editor now includes a small image picker to choose, replace, or remove a wallpaper, with live preview and cancellation. Explicit picker edits take precedence when merging. No shared/mobile/server changes. Validation: all 4,170 web unit tests pass; web typecheck and lint pass (lint retains existing warnings). Browser checks covered import/export, color edits, preview cancellation, duplication, and merge precedence. Five files changed, including a short user-guide addition. No replacement PR opened yet; keeping the follow-up here in the existing discussion. Same palette, route, 1440 × 1000 viewport, and glass settings. The after image uses an embedded PNG at 0.15 opacity.
|
|
This gist is a demonstration of how this feature could be built or customized with the Qt/QML branch. It is an example to try and adapt, not a complete implementation of the discussion request or a feature shipped in upstream T3 Code. I put together a Qt-shell wallpaper example with a local SVG included, adjustable image strength, and a tinted timeline card. The opt-in It also accepts local image URLs and data URIs. This doesn't change the web theme-file format, so web theme export alone won't carry the wallpaper. Share the gist files together. Corrected wallpaper example on workspace 5. The image now shows through the conversation timeline; text and message backgrounds retain their normal opacity. The conversation uses demo data. Code and checks assisted by Codex. |
|
Sorry for the lack of context this is showing how using this technique in the linked discussion would help with your issue #10708 |
|
Proposal: a static, opt-in background scene for built-in themes (narrowed from #12897) The need in this thread still stands: people spend whole days in T3 Code, and some want the workspace to feel less flat. On current main (
My larger version (#12897: 15 scenes plus a new transparency slider) was closed for missing direction approval. This is the smallest version I think is still useful. Scope
Performance budget (proposed acceptance criteria)
Measured on the ready branch with headless Chrome (Metal GPU compositing) at 1440×900. Each figure is the median of three 5-second runs. "Streaming" appends text to the timeline on every frame. Machine load differed between the two sessions, so compare rows within a session.
With the switch off, the code path matches main: none of the new CSS applies, so the gap between those two rows is run-to-run noise. With the scene on, paint rises by at most about 0.12 ms per frame, with no dropped frames and no idle repaints. I haven't measured this in the Electron shell or on a low-end GPU. Raw numbers
Turning it on, switching theme, changing glass opacity, and turning it off: recording How this relates to #10412: that PR lets you import your own chat wallpaper, with blur and custom CSS. This proposal is the narrower built-in option: no image import, no storage budget, and no blur. If you'd rather go the import route, I'll drop this one. Verification plan for a PR: focused contract and settings tests, before/after screenshots plus a short recording, this perf table re-run on the PR head, and one pass in the Electron shell. The decision I need: do you want a built-in, off-by-default background scene in this shape? If yes, I'll open one PR from the ready branch ( |
|
Adding a use case for the theme-CSS half of #10412. I'm building a custom dark theme (Starry Night) as a theme file. Colors get me most of the way, but the built-in themes also get per-theme styling a custom theme can't reach: the composer outline and highlight and the surface grain (T3 Chat), and the sidebar stage-art palette (all five built-ins). Those are hard-coded The optional Would maintainers approve the |
|
A background image variant to weigh next to #10412, not a competing PR. It has no theme CSS, and the image covers the whole window instead of the chat column. The #10412 column comes from reading its diff. Corrections welcome.
At a Fade of 70%, secondary, link, and status text keep 4.5:1 contrast with the default theme, even over a solid black photo in light mode or a solid white one in dark mode. Custom themes are not tested. It is off by default. While it is off, nothing reads from IndexedDB, and every new CSS rule is scoped to an attribute that is not set. The image also stays hidden under My question for the maintainers is which of these you want:
I won't open a PR without a yes in this thread. Written with Claude Opus 5.5 via Claude Code in T3 Code. |











Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
The new theming system in the nightlies (
.1025+) is excellent — I moved mywhole custom palette into it the day it appeared. This is a request for the
one visual layer it can't express yet: a background image behind the canvas.
What I built (works today, via CSS patching)
A desktop wallpaper that sits under the whole app, with the existing glass
surfaces doing all the work of keeping content readable. The composer is the
star: its translucent glass lets the image ghost through the prompt box, and
the native glass-opacity slider already gives users the control they need.
Mechanically it's small — which is why I think it would make a clean native
feature:
html::before,position: fixed,cover, with a theme-colored gradient over it to set the ghosting level —the equivalent of a wallpaper opacity setting).
bg-background/80layers currently bury it (the inner flexcontainer, the scroll container,
main, andbody). They need to betransparent when a wallpaper is active — everything above them (cards,
bubbles, composer, popovers, sidebar) keeps its own paint and stays
readable with zero further changes.
That's the entire mechanism. No component changes needed — the app's existing
glass design language already composes beautifully with an image behind it.
Proposed shape
An optional field on the theme file (or a standalone appearance setting):
{ "version": 1, "name": "Deep Veil", "appearance": "light", "colors": { /* ... */ }, "wallpaper": { "image": "<data URI or file path>", "opacity": 0.15, // how much image shows through the canvas color "fit": "cover", "position": "center" } }opacityas "image strength" (canvas color over image) matches how peoplereason about wallpapers, and keeps every theme readable by default.
file (data URI), which is a lovely property for sharing themes.
Happy to share the working CSS, screenshots, or test nightlies. Thanks for
the theme system — funny how being able to theme it the way I want made me use
t3code a lot more.
All reactions