From 4a931a3400678b1f4c3d22af5bc8baa8237aaeee Mon Sep 17 00:00:00 2001
From: Brandon Thomas
Date: Fri, 2 Oct 2026 09:52:46 -0400
Subject: [PATCH] app icon: owl with ear tufts (owner's ArtCraft drawing),
Dock/taskbar/launcher wiring, palette docs
- assets/app-icon/: canonical SVG + light SVG, 1024 PNG, macOS runtime PNG, .icns, .ico,
hicolor theme, LICENSE.txt and README (palette, geometry, provenance, regeneration).
- packaging/icons.sh regenerates everything with resvg, iconutil and the new `cargo xtask ico`.
- Native app sets the window icon (with_icon) and the Wayland app id; build.rs embeds the .ico
and VERSIONINFO into filmcraft.exe on Windows (winresource, Windows-host build-dep only).
- packaging/linux/ai.storyteller.filmcraft.desktop with Icon=ai.storyteller.filmcraft.
- Web app: favicon.svg replaced by favicon.png from the same artwork; sidecars and
ATTRIBUTION.md updated.
Co-Authored-By: Claude Opus 5.5
---
ATTRIBUTION.md | 17 ++-
Cargo.lock | 19 ++++
README.md | 4 +
apps/filmcraft-web/web/favicon.png | Bin 0 -> 17152 bytes
.../filmcraft-web/web/favicon.png.attribution | 8 ++
apps/filmcraft-web/web/favicon.svg | 16 ---
.../filmcraft-web/web/favicon.svg.attribution | 9 --
apps/filmcraft-web/web/index.html | 4 +-
apps/filmcraft/Cargo.toml | 5 +
apps/filmcraft/build.rs | 43 ++++++++
apps/filmcraft/src/main.rs | 19 +++-
assets/app-icon/LICENSE.txt | 13 +++
assets/app-icon/README.md | 60 ++++++++++
assets/app-icon/filmcraft-1024.png | Bin 0 -> 399999 bytes
.../app-icon/filmcraft-1024.png.attribution | 8 ++
assets/app-icon/filmcraft-macos-512.png | Bin 0 -> 125210 bytes
.../filmcraft-macos-512.png.attribution | 8 ++
assets/app-icon/filmcraft-small.svg | 1 +
.../app-icon/filmcraft-small.svg.attribution | 8 ++
assets/app-icon/filmcraft.icns | Bin 0 -> 738627 bytes
assets/app-icon/filmcraft.icns.attribution | 8 ++
assets/app-icon/filmcraft.ico | Bin 0 -> 91228 bytes
assets/app-icon/filmcraft.ico.attribution | 8 ++
assets/app-icon/filmcraft.svg | 1 +
assets/app-icon/filmcraft.svg.attribution | 8 ++
.../128x128/apps/ai.storyteller.filmcraft.png | Bin 0 -> 17152 bytes
.../ai.storyteller.filmcraft.png.attribution | 8 ++
.../16x16/apps/ai.storyteller.filmcraft.png | Bin 0 -> 685 bytes
.../ai.storyteller.filmcraft.png.attribution | 8 ++
.../24x24/apps/ai.storyteller.filmcraft.png | Bin 0 -> 1108 bytes
.../ai.storyteller.filmcraft.png.attribution | 8 ++
.../256x256/apps/ai.storyteller.filmcraft.png | Bin 0 -> 58560 bytes
.../ai.storyteller.filmcraft.png.attribution | 8 ++
.../32x32/apps/ai.storyteller.filmcraft.png | Bin 0 -> 1781 bytes
.../ai.storyteller.filmcraft.png.attribution | 8 ++
.../48x48/apps/ai.storyteller.filmcraft.png | Bin 0 -> 3280 bytes
.../ai.storyteller.filmcraft.png.attribution | 8 ++
.../512x512/apps/ai.storyteller.filmcraft.png | Bin 0 -> 164182 bytes
.../ai.storyteller.filmcraft.png.attribution | 8 ++
.../64x64/apps/ai.storyteller.filmcraft.png | Bin 0 -> 5230 bytes
.../ai.storyteller.filmcraft.png.attribution | 8 ++
.../apps/ai.storyteller.filmcraft.svg | 1 +
.../ai.storyteller.filmcraft.svg.attribution | 8 ++
packaging/icons.sh | 63 +++++++++++
.../linux/ai.storyteller.filmcraft.desktop | 13 +++
xtask/src/ico.rs | 104 ++++++++++++++++++
xtask/src/main.rs | 10 +-
47 files changed, 500 insertions(+), 30 deletions(-)
create mode 100644 apps/filmcraft-web/web/favicon.png
create mode 100644 apps/filmcraft-web/web/favicon.png.attribution
delete mode 100644 apps/filmcraft-web/web/favicon.svg
delete mode 100644 apps/filmcraft-web/web/favicon.svg.attribution
create mode 100644 apps/filmcraft/build.rs
create mode 100644 assets/app-icon/LICENSE.txt
create mode 100644 assets/app-icon/README.md
create mode 100644 assets/app-icon/filmcraft-1024.png
create mode 100644 assets/app-icon/filmcraft-1024.png.attribution
create mode 100644 assets/app-icon/filmcraft-macos-512.png
create mode 100644 assets/app-icon/filmcraft-macos-512.png.attribution
create mode 100644 assets/app-icon/filmcraft-small.svg
create mode 100644 assets/app-icon/filmcraft-small.svg.attribution
create mode 100644 assets/app-icon/filmcraft.icns
create mode 100644 assets/app-icon/filmcraft.icns.attribution
create mode 100644 assets/app-icon/filmcraft.ico
create mode 100644 assets/app-icon/filmcraft.ico.attribution
create mode 100644 assets/app-icon/filmcraft.svg
create mode 100644 assets/app-icon/filmcraft.svg.attribution
create mode 100644 assets/app-icon/hicolor/128x128/apps/ai.storyteller.filmcraft.png
create mode 100644 assets/app-icon/hicolor/128x128/apps/ai.storyteller.filmcraft.png.attribution
create mode 100644 assets/app-icon/hicolor/16x16/apps/ai.storyteller.filmcraft.png
create mode 100644 assets/app-icon/hicolor/16x16/apps/ai.storyteller.filmcraft.png.attribution
create mode 100644 assets/app-icon/hicolor/24x24/apps/ai.storyteller.filmcraft.png
create mode 100644 assets/app-icon/hicolor/24x24/apps/ai.storyteller.filmcraft.png.attribution
create mode 100644 assets/app-icon/hicolor/256x256/apps/ai.storyteller.filmcraft.png
create mode 100644 assets/app-icon/hicolor/256x256/apps/ai.storyteller.filmcraft.png.attribution
create mode 100644 assets/app-icon/hicolor/32x32/apps/ai.storyteller.filmcraft.png
create mode 100644 assets/app-icon/hicolor/32x32/apps/ai.storyteller.filmcraft.png.attribution
create mode 100644 assets/app-icon/hicolor/48x48/apps/ai.storyteller.filmcraft.png
create mode 100644 assets/app-icon/hicolor/48x48/apps/ai.storyteller.filmcraft.png.attribution
create mode 100644 assets/app-icon/hicolor/512x512/apps/ai.storyteller.filmcraft.png
create mode 100644 assets/app-icon/hicolor/512x512/apps/ai.storyteller.filmcraft.png.attribution
create mode 100644 assets/app-icon/hicolor/64x64/apps/ai.storyteller.filmcraft.png
create mode 100644 assets/app-icon/hicolor/64x64/apps/ai.storyteller.filmcraft.png.attribution
create mode 100644 assets/app-icon/hicolor/scalable/apps/ai.storyteller.filmcraft.svg
create mode 100644 assets/app-icon/hicolor/scalable/apps/ai.storyteller.filmcraft.svg.attribution
create mode 100755 packaging/icons.sh
create mode 100644 packaging/linux/ai.storyteller.filmcraft.desktop
create mode 100644 xtask/src/ico.rs
diff --git a/ATTRIBUTION.md b/ATTRIBUTION.md
index 3fc73c92..32c3b7de 100644
--- a/ATTRIBUTION.md
+++ b/ATTRIBUTION.md
@@ -25,7 +25,22 @@ iconography, images or other Adobe assets; open licences only; every asset attri
| `docs/images/filmcraft-scopes.png` | FilmCraft contributors | Original work: FilmCraft UI crop (scopes of a Charade (1963) frame, public domain) | MIT OR Apache-2.0 |
| `docs/images/filmcraft-effects.png` | FilmCraft contributors | Original work: FilmCraft screenshot crop; NASA Earth Views (US Government work, public domain) | MIT OR Apache-2.0; footage public domain |
| `docs/images/filmcraft-timeline.png` | FilmCraft contributors | Original work: FilmCraft UI crop; thumbnails from Night of the Living Dead (1968) and Carnival of Souls (1962), CC0 Chopin waveform | MIT OR Apache-2.0; film frames public domain |
-| `apps/filmcraft-web/web/favicon.svg` | FilmCraft contributors | Original work: web app icon (disc, sprocket ring, play triangle) drawn from basic SVG shapes | MIT OR Apache-2.0 |
+| `assets/app-icon/filmcraft.svg` | Brandon Thomas (FilmCraft owner) | Original work: FilmCraft app icon (owl with ear tufts), drawn by the owner in ArtCraft and vectorised; canonical vector | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
+| `assets/app-icon/filmcraft-small.svg` | Brandon Thomas (FilmCraft owner) | Original work: FilmCraft app icon (owl with ear tufts), drawn by the owner in ArtCraft and vectorised; lighter vector | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
+| `assets/app-icon/filmcraft-1024.png` | Brandon Thomas (FilmCraft owner) | Original work: FilmCraft app icon (owl with ear tufts), drawn by the owner in ArtCraft and vectorised; 1024 px render | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
+| `assets/app-icon/filmcraft-macos-512.png` | Brandon Thomas (FilmCraft owner) | Original work: FilmCraft app icon (owl with ear tufts), drawn by the owner in ArtCraft and vectorised; macOS runtime Dock icon (512 px) | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
+| `assets/app-icon/filmcraft.icns` | Brandon Thomas (FilmCraft owner) | Original work: FilmCraft app icon (owl with ear tufts), drawn by the owner in ArtCraft and vectorised; macOS .icns | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
+| `assets/app-icon/filmcraft.ico` | Brandon Thomas (FilmCraft owner) | Original work: FilmCraft app icon (owl with ear tufts), drawn by the owner in ArtCraft and vectorised; Windows .ico (16-256 px) | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
+| `assets/app-icon/hicolor/16x16/apps/ai.storyteller.filmcraft.png` | Brandon Thomas (FilmCraft owner) | Original work: FilmCraft app icon (owl with ear tufts), drawn by the owner in ArtCraft and vectorised; Linux hicolor theme 16 px | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
+| `assets/app-icon/hicolor/24x24/apps/ai.storyteller.filmcraft.png` | Brandon Thomas (FilmCraft owner) | Original work: FilmCraft app icon (owl with ear tufts), drawn by the owner in ArtCraft and vectorised; Linux hicolor theme 24 px | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
+| `assets/app-icon/hicolor/32x32/apps/ai.storyteller.filmcraft.png` | Brandon Thomas (FilmCraft owner) | Original work: FilmCraft app icon (owl with ear tufts), drawn by the owner in ArtCraft and vectorised; Linux hicolor theme 32 px | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
+| `assets/app-icon/hicolor/48x48/apps/ai.storyteller.filmcraft.png` | Brandon Thomas (FilmCraft owner) | Original work: FilmCraft app icon (owl with ear tufts), drawn by the owner in ArtCraft and vectorised; Linux hicolor theme 48 px | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
+| `assets/app-icon/hicolor/64x64/apps/ai.storyteller.filmcraft.png` | Brandon Thomas (FilmCraft owner) | Original work: FilmCraft app icon (owl with ear tufts), drawn by the owner in ArtCraft and vectorised; Linux hicolor theme 64 px | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
+| `assets/app-icon/hicolor/128x128/apps/ai.storyteller.filmcraft.png` | Brandon Thomas (FilmCraft owner) | Original work: FilmCraft app icon (owl with ear tufts), drawn by the owner in ArtCraft and vectorised; Linux hicolor theme 128 px | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
+| `assets/app-icon/hicolor/256x256/apps/ai.storyteller.filmcraft.png` | Brandon Thomas (FilmCraft owner) | Original work: FilmCraft app icon (owl with ear tufts), drawn by the owner in ArtCraft and vectorised; Linux hicolor theme 256 px | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
+| `assets/app-icon/hicolor/512x512/apps/ai.storyteller.filmcraft.png` | Brandon Thomas (FilmCraft owner) | Original work: FilmCraft app icon (owl with ear tufts), drawn by the owner in ArtCraft and vectorised; Linux hicolor theme 512 px | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
+| `assets/app-icon/hicolor/scalable/apps/ai.storyteller.filmcraft.svg` | Brandon Thomas (FilmCraft owner) | Original work: FilmCraft app icon (owl with ear tufts), drawn by the owner in ArtCraft and vectorised; Linux hicolor theme scalable | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
+| `apps/filmcraft-web/web/favicon.png` | Brandon Thomas (FilmCraft owner) | Original work: FilmCraft app icon (owl with ear tufts), drawn by the owner in ArtCraft and vectorised; 128 px | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
## Golden test images
diff --git a/Cargo.lock b/Cargo.lock
index 946a9963..21917c02 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1671,6 +1671,7 @@ dependencies = [
"rfd",
"serde_json",
"winit",
+ "winresource",
]
[[package]]
@@ -5777,10 +5778,12 @@ version = "1.1.6+spec-1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "920602543f0911ab71da12c50d59701da54c196d1a2bf5cb4b75667f137a406a"
dependencies = [
+ "indexmap",
"serde_core",
"serde_spanned 1.1.1",
"toml_datetime 1.1.1+spec-1.1.0",
"toml_parser",
+ "toml_writer",
"winnow 1.0.4",
]
@@ -5847,6 +5850,12 @@ dependencies = [
"winnow 1.0.4",
]
+[[package]]
+name = "toml_writer"
+version = "1.1.2+spec-1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7d56353a2a665ad0f41a421187180aab746c8c325620617ad883a99a1cbe66d2"
+
[[package]]
name = "tracing"
version = "0.1.44"
@@ -6967,6 +6976,16 @@ dependencies = [
"memchr",
]
+[[package]]
+name = "winresource"
+version = "0.1.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0986a8b1d586b7d3e4fe3d9ea39fb451ae22869dcea4aa109d287a374d866087"
+dependencies = [
+ "toml 1.1.6+spec-1.1.0",
+ "version_check",
+]
+
[[package]]
name = "wit-bindgen"
version = "0.57.1"
diff --git a/README.md b/README.md
index 60f0871c..1c159994 100644
--- a/README.md
+++ b/README.md
@@ -7,6 +7,10 @@
+
+
+
+
FilmCraft
diff --git a/apps/filmcraft-web/web/favicon.png b/apps/filmcraft-web/web/favicon.png
new file mode 100644
index 0000000000000000000000000000000000000000..3c217317bffd21c7d1183d7b339617588f0effde
GIT binary patch
literal 17152
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 Yn;w_d}yKy>b(W2CEm~%u(=5QB3JP
zay(sde#Y$(2j0#;V*TDDIJVk>n_+!?|Dtr+9d=~Z=#vuQx_)vQgV80Q_a2eOFef~W(;RnGBVUDfv1Nnfn&Jj+>A$BP2?eo#$3&aAS2x?K^hlo;;93*%(R~
z2$9ltN7VgkdwNCuSmo1V8#-WFv`_IJ$V!<4$Z9+Pyl$lsW$%&ISvL~g$lCcsSvktJ
zUlkl-YxFqufK4QBp8wWa*_Jmrcak+RJ}ez{1EspFAXZ*KwWd=dhju|3HfWrkGyWPI
zRrxnob>O7tbn4gf@Ff@Ti%#!*(F6d5NLY|u$2T1*LKx70xQ(2!&k@Y3VReCEwN)j<
zhsgv1io3HiR!8g`JDfxbnOdq9@T{Jw;8lVKpblgpOFnu`Oo$64X-5yM3U6@e)T
zhLs7zF+J5S#9PSHr>IXRMsPf#s7V|^r1EXF1*@0804qcL1+}*9w>M3Ex0Rkb%?9mz
zj~(CZeCySIyb%9heETnyHow0T>d|*VXWV0&VT;EOQE=qbGdeW
zy7rOB9`x%4yZ5yCvHpE){dev^=f5%?V`RD~$2f;$>afA@`VMg4-Fq@lRXoSYs5kL`cxTJkz$AOM%
zr7jzhh#4pQi1c@o9fcPIIN>%V1T7
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/apps/filmcraft-web/web/favicon.svg.attribution b/apps/filmcraft-web/web/favicon.svg.attribution
deleted file mode 100644
index 68ec8135..00000000
--- a/apps/filmcraft-web/web/favicon.svg.attribution
+++ /dev/null
@@ -1,9 +0,0 @@
-asset: favicon.svg
-title: FilmCraft web app icon (favicon / install icon)
-author: FilmCraft contributors
-source: original work
-license: MIT OR Apache-2.0
-added: 2026-10-01 by FilmCraft contributors (Claude agent, M13 web app)
-notes: Hand-written SVG: a dark teal disc, an orange ring with eight sprocket dots and a play
- triangle, drawn from scratch from basic shapes. Not derived from any other product's
- icon.
diff --git a/apps/filmcraft-web/web/index.html b/apps/filmcraft-web/web/index.html
index 72ddb88f..73307f44 100644
--- a/apps/filmcraft-web/web/index.html
+++ b/apps/filmcraft-web/web/index.html
@@ -5,7 +5,7 @@
FilmCraft
-
+
|