# Application resources `assets/` is the design resource home for SolidCraft. [ATTRIBUTION.md](../ATTRIBUTION.md) is the file inventory and provenance record. Keep one editable master per resource and place shipped derivatives in `exports/`. ```text assets/ icons/ app/ shared/source/ # original Rust mark and executable ICO encoder macos/source/SolidCraft.icon/ # approved Composer project and linked SVGs macos/exports/ # paired Assets.car and icon.icns windows/exports/ # executable DIB ICO and installer PNG ICO linux/exports/hicolor/ # Linux/FreeBSD package images, 16–512 px ui/source/ # original drawing library and other UI glyphs branding/web/source/og.png # shared social preview card styles/ui/palettes.rs # light/dark defaults styles/web/loading.css # web loading/canvas styles appearances/library.rs # built-in visual presets materials/library.rs # physical defaults and colours shaders/viewport.wgsl # original viewport shader fonts/{liberation-sans,biz-udp-gothic}/ # unmodified fonts and OFL licences locales/{en,de,ja,ko}.json # shared offline catalogs platforms/{macos,linux,windows}/ # bundle, freedesktop and WiX templates archive/icons/macos-v1/ source/icon.vectorcraft # earlier editable work, retained exports/ # all historical SVG, PNG and iconset exports ``` ## Editing and regeneration [UI artwork](icons/ui/README.md) identifies the drawing masters and their consumers. Edit geometry and IDs together in the original Rust source and review changes in both application themes. Palettes and model presets are also editable Rust data. The current macOS master is `icons/app/macos/source/SolidCraft.icon/`, including its linked SVG layers and appearance settings. The earlier VectorCraft document is preserved in the archive. No other native design projects were available for the current UI set or preview card. Keep any future `.vectorcraft`, `.ai` or other native work and linked inputs under that resource's `source/work/`, with an attribution row; retain the editable document alongside its exports. Regenerate all exports of the shared Windows/Linux/FreeBSD mark together: ```sh cargo xtask app-icons ``` For macOS, use Xcode with Icon Composer support: ```sh mkdir -p target/resources/macos-icon xcrun actool assets/icons/app/macos/source/SolidCraft.icon \ --compile target/resources/macos-icon --platform macosx \ --minimum-deployment-target 11.0 --app-icon SolidCraft \ --output-partial-info-plist target/resources/macos-icon/icon-info.plist \ --output-format human-readable-text cp target/resources/macos-icon/Assets.car assets/icons/app/macos/exports/Assets.car cp target/resources/macos-icon/SolidCraft.icns assets/icons/app/macos/exports/icon.icns ``` Review and commit source changes and required exports together. Temporary renders, tool caches and package staging belong under ignored `target/` or `dist/`. Normal builds use the committed exports and require no design applications. The CLI still supports arbitrary PNG/ICO exports with `solidcraft-cli icon`. ## Platform bindings | Platform | Resources and output paths | | --- | --- | | macOS | Composer master and paired exports; bundle installs `Assets.car` and `SolidCraft.icns` | | Windows executable | `solidcraft-executable.ico`: original DIB/mask representations at 16/24/32/48/64/128/256 px | | Windows installer | `solidcraft.ico`: PNG representations at 16/20/24/32/40/48/64/128/256 px; `SOLIDCRAFT_ICONS` override retained | | Linux, Nix, deb/rpm, tar, Flatpak, Snap | Copy canonical hicolor images; icon name stays `ai.storyteller.solidcraft` | | AppImage | Uses the Linux 256 px image and `.DirIcon` alias | | FreeBSD | Shares Linux hicolor images and freedesktop metadata | | Web | HTML/Trunk and `manifest.webmanifest` stay in `apps/solidcraft-web/`; copies Japanese font/licence to `fonts/`, uses the collected CSS, and copies the Linux 32/256/512 px images to `icons/` for the favicon and installed app | | Docs and link previews | `xtask book` copies the shared card to the existing `/solidcraft/og.png` public path | ## Code and provenance Resources remain compiled by their owning layer through existing APIs: `ui-egui::icons::paint` and `Tokens` at L5, model presets in L2 `doc`, and sketch fonts at L1. State, projection, interaction, commands and GPU bindings stay in their current modules. Embedded data uses `CARGO_MANIFEST_DIR`; application code needs no runtime resource registry or repository lookup. `cargo xtask assets` requires an exact attribution row for every collected file except Markdown documentation, and continues checking file assets elsewhere in the repository. This includes native work, Rust masters, catalogs, shaders and platform templates. Packaging selects explicit current files and fails when required inputs are absent. Archived artwork has no production consumers. Dependency-owned egui fonts and vendored renderer shaders stay with their libraries; their licences remain in `THIRD-PARTY-LICENSES.txt` and `ATTRIBUTION.md`. System fonts, optional packs, user fonts/canvases/decals/materials and native OS controls retain external ownership. Root licence/notice texts stay canonical.