Skip to main content

@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

  1. Drop the new file under packages/design/assets/.
  2. If a surface needs to reference it through public/, update the symlink there (do not copy).
  3. Run apps/web build to confirm the bundler resolves the alias. apps/desktop consumes its own assets directory directly; if you replace the Clone Desktop icon set, regenerate assets/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.