From a0013e4f28893d09014a16bfdc0e4cac8740e0de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Padez?= Date: Sun, 16 Aug 2026 22:57:00 +0000 Subject: [PATCH] note that theme asset packaging is deferred, not solved MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A theme references its wallpaper and logo by path because the CSS bundler cannot resolve a runtime `public/` file at build time. That is fine for themes we ship and says nothing about where a third party's assets live. The owner's intent is a convention under `public/` — recorded so the workaround is not mistaken for a design. Co-Authored-By: Claude Opus 5 --- THEMES-NOTES.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/THEMES-NOTES.md b/THEMES-NOTES.md index 051d979c..210148fe 100644 --- a/THEMES-NOTES.md +++ b/THEMES-NOTES.md @@ -97,7 +97,14 @@ Left alone. **5. `rebuildFrontend()` reports `"Bundle failed"` and discards the bundler's actual errors.** Cost twenty minutes tonight. Same shape as the agent bugs from earlier — a failure that refuses to say why. -**6. Landing and marketplace are untouched.** They have their own copies of the palette; `duck-teal` has +**6. Theme ASSETS have no packaging story yet — deferred deliberately.** A theme publishes an asset as a +quoted path (`--logo-src: '/officer-logo.svg'`) and `useThemeAsset` wraps it, because Bun's CSS bundler +resolves `url()` at build time while these files are served from `public/` at runtime. That works for +themes we ship. It does not answer where a THIRD PARTY's wallpaper and logo live. The owner's intent is a +convention under `public/` — something like `public/themes//` — so an author drops files in a known +structure and references them by path. Not designed yet; the token shape above already fits it. + +**7. Landing and marketplace are untouched.** They have their own copies of the palette; `duck-teal` has three different definitions across the three apps. Folding them into this layer is a natural follow-up and was not in tonight's scope.