@clone/design
Brand assets shared across surfaces — logos, icons, social cards. The package is mostly static files; there is no code to import.
How surfaces consume it
apps/web/vite.config.ts aliases @clone/design to ../../packages/design. Public assets like favicons are exposed via symlinks under each surface's public/ directory, e.g. apps/web/public/*.{png,jpg,mp4,svg} symlink into packages/design/assets/. apps/desktop is Python — its assets live under apps/desktop/assets/{icon.png,CloneDesktop.ico,CloneDesktop.icns} and are bundled by Nuitka, separate from the JS surfaces.
The apps/web/Dockerfile mirrors that layout in the build container — see the comment in the Dockerfile for the exact reasoning. New surfaces that need brand assets follow the same pattern: add a Vite alias, mirror it in any container build context.
Updating an asset
- Drop the new file under
packages/design/assets/. - If a surface needs to reference it through
public/, update the symlink there (do not copy). - Run
apps/webbuild to confirm the bundler resolves the alias.apps/desktopconsumes its own assets directory directly; if you replace the Clone Desktop icon set, regenerateassets/CloneDesktop.{ico,icns}and rerun the Nuitka build.
The docs site (this repository) does not consume @clone/design yet — the favicon and social card are still Docusaurus defaults.