ArtCraft brand marks: docs/brand logos with sidecars (ArtCraft trademark, all rights reserved, used with permission), AGENTS.md §1.8 first-party exception, wordmark in the About dialog and on the Home screen; README licence notes

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Brandon Thomas 2026-10-01 14:52:40 -04:00
parent 9f687f7b44
commit 3e834442ea
24 changed files with 153 additions and 4 deletions

View File

@ -43,6 +43,11 @@ reproduce an image (for example, point lists traced from someone else's icon).
`crates/media`, procedural looks in `crates/render`) are original work under the project licence
and are listed in `ATTRIBUTION.md`.
7. **When in doubt, leave it out** and draw or generate it yourself.
8. **The one exception: first-party ArtCraft brand marks.** The ArtCraft name and logos in `docs/brand/`
(supplied by the ArtCraft team) are trademarks, all rights reserved, used with permission. They still
need a sidecar and an `ATTRIBUTION.md` row (licence `LicenseRef-ArtCraft-Trademark`). No other
non-open asset is allowed, and this exception never covers third-party marks (Adobe, Discord, GitHub
and other logos stay out; draw a generic icon instead).
## 2. Clean-room code

View File

@ -77,3 +77,19 @@ is traced or derived from Adobe artwork.
| Demo footage (ocean sunset, aurora, city night, dunes, forest, plasma), bars and tone, counting leader, colour matte | `crates/media/src/generators.rs` |
| Lumetri "Look" presets (Teal & Orange, Warm Film, …) | `crates/render/src/effects.rs` (`apply_look`): procedural colour transforms, not LUT files |
| Colour palette and layout metrics | `crates/ui-egui/src/theme.rs`: colour values and sizes only; no artwork |
## First-party brand marks
The ArtCraft name and logo are trademarks of the ArtCraft team, used in FilmCraft with permission. They are not
openly licensed and are not covered by the project licence; forks must remove or replace them (AGENTS.md §1.8).
| File | Author | Source | Licence |
|---|---|---|---|
| `docs/brand/artcraft-logo-white.png` | ArtCraft team | Original work: first-party ArtCraft brand mark (ArtCraft wordmark, light ink for dark backgrounds) | ArtCraft trademark, all rights reserved; used with permission (not MIT/Apache) |
| `docs/brand/artcraft-logo-white.svg` | ArtCraft team | Original work: first-party ArtCraft brand mark (ArtCraft wordmark, light ink for dark backgrounds) | ArtCraft trademark, all rights reserved; used with permission (not MIT/Apache) |
| `docs/brand/artcraft-logo.png` | ArtCraft team | Original work: first-party ArtCraft brand mark (ArtCraft wordmark (symbol + "ARTCRAFT"), dark ink for light backgrounds) | ArtCraft trademark, all rights reserved; used with permission (not MIT/Apache) |
| `docs/brand/artcraft-logo.svg` | ArtCraft team | Original work: first-party ArtCraft brand mark (ArtCraft wordmark (symbol + "ARTCRAFT"), dark ink for light backgrounds) | ArtCraft trademark, all rights reserved; used with permission (not MIT/Apache) |
| `docs/brand/artcraft-mark-black.png` | ArtCraft team | Original work: first-party ArtCraft brand mark (ArtCraft symbol ("A" mark), black) | ArtCraft trademark, all rights reserved; used with permission (not MIT/Apache) |
| `docs/brand/artcraft-mark-black.svg` | ArtCraft team | Original work: first-party ArtCraft brand mark (ArtCraft symbol ("A" mark), black) | ArtCraft trademark, all rights reserved; used with permission (not MIT/Apache) |
| `docs/brand/artcraft-mark.png` | ArtCraft team | Original work: first-party ArtCraft brand mark (ArtCraft symbol ("A" mark), blue) | ArtCraft trademark, all rights reserved; used with permission (not MIT/Apache) |
| `docs/brand/artcraft-mark.svg` | ArtCraft team | Original work: first-party ArtCraft brand mark (ArtCraft symbol ("A" mark), blue) | ArtCraft trademark, all rights reserved; used with permission (not MIT/Apache) |

View File

@ -332,11 +332,11 @@ And [**ArtCraft**](https://getartcraft.com/) itself, our AI image and video stud
**Footage and music in the screenshots:** NASA's Apollo 11 film and television footage from [images.nasa.gov](https://images.nasa.gov) (launch, Launch Control Center, lunar surface and recovery) and the Apollo 11 air-to-ground voice transcript, all US Government works in the public domain (NASA does not endorse this project); *Night of the Living Dead* (1968), *Carnival of Souls* (1962) and *Charade* (1963), all in the US public domain; *Earth Views from the ISS* by NASA; Chopin's Nocturne Op. 48 No. 1 and Ballade No. 1, performed for Musopen and released under CC0. The media itself is not in this repository. Sources and details for every asset are in [ATTRIBUTION.md](ATTRIBUTION.md).
FilmCraft is an independent implementation. It contains no Adobe code, icons, images, presets or LUTs, and no GPL or LGPL code; every icon is drawn in code and every asset is openly licensed and attributed ([AGENTS.md](AGENTS.md)). ffmpeg is used only as an external test oracle. Adobe and Premiere Pro are trademarks of Adobe Inc.; FilmCraft is not affiliated with Adobe.
FilmCraft is an independent implementation. It contains no Adobe code, icons, images, presets or LUTs, and no GPL or LGPL code; every icon is drawn in code and every asset is openly licensed and attributed ([AGENTS.md](AGENTS.md)), apart from the ArtCraft name and logo, which are trademarks of the ArtCraft team used with permission. ffmpeg is used only as an external test oracle. Adobe and Premiere Pro are trademarks of Adobe Inc.; FilmCraft is not affiliated with Adobe.
## License
FilmCraft is dual-licensed under [MIT](LICENSE-MIT) or [Apache-2.0](LICENSE-APACHE), at your option. Bundled assets keep their own open licences, listed in [ATTRIBUTION.md](ATTRIBUTION.md).
FilmCraft is dual-licensed under [MIT](LICENSE-MIT) or [Apache-2.0](LICENSE-APACHE), at your option. Bundled assets keep their own open licences, listed in [ATTRIBUTION.md](ATTRIBUTION.md). The ArtCraft name and logos in `docs/brand/` are trademarks of the ArtCraft team and are not covered by this licence.
<br>

View File

@ -28,6 +28,8 @@ serde = { workspace = true }
serde_json = { workspace = true }
log = { workspace = true }
rayon = { workspace = true }
# ArtCraft wordmark (PNG) for the About dialog and Home screen.
image = { version = "0.25", default-features = false, features = ["png"] }
# Thread/process CPU clocks for frame-job profiling (safe wrappers; see frames.rs).
[target.'cfg(unix)'.dependencies]
@ -37,4 +39,3 @@ rustix = { version = "1", default-features = false, features = ["std", "time"] }
pollster = "0.4"
filmcraft-codecs = { workspace = true }
egui_kittest = { workspace = true, features = ["eframe", "wgpu"] }
image = { version = "0.25", default-features = false, features = ["png"] }

View File

@ -0,0 +1,33 @@
//! The ArtCraft wordmark (first-party trademark, used with permission; see `docs/brand/` and
//! AGENTS.md §1.8), decoded once and kept as a texture.
const LOGO_LIGHT_INK: &[u8] = include_bytes!("../../../docs/brand/artcraft-logo-white.png");
const LOGO_DARK_INK: &[u8] = include_bytes!("../../../docs/brand/artcraft-logo.png");
/// The wordmark for a dark (`dark = true`) or light UI: light ink on dark themes. Its aspect
/// ratio is width / height of the returned texture.
pub fn wordmark(ctx: &egui::Context, dark: bool) -> Option<egui::TextureHandle> {
let id = egui::Id::new(("artcraft-wordmark", dark));
if let Some(t) = ctx.data(|d| d.get_temp::<egui::TextureHandle>(id)) {
return Some(t);
}
let bytes = if dark { LOGO_LIGHT_INK } else { LOGO_DARK_INK };
let img = image::load_from_memory_with_format(bytes, image::ImageFormat::Png).ok()?;
// Large enough to stay sharp at 2x for the sizes we draw (≤ 320 pt wide).
let img = img.resize(1024, 1024, image::imageops::FilterType::Lanczos3).to_rgba8();
let color = egui::ColorImage::from_rgba_unmultiplied([img.width() as usize, img.height() as usize], img.as_raw());
let tex = ctx.load_texture("artcraft-wordmark", color, egui::TextureOptions::LINEAR);
ctx.data_mut(|d| d.insert_temp(id, tex.clone()));
Some(tex)
}
/// Draw the wordmark `height` points tall with its left edge at `left_center` (vertically centred).
/// Returns the drawn rect.
pub fn paint_wordmark(ui: &egui::Ui, left_center: egui::Pos2, height: f32, dark: bool) -> Option<egui::Rect> {
let tex = wordmark(ui.ctx(), dark)?;
let [w, h] = tex.size();
let width = height * w as f32 / h.max(1) as f32;
let r = egui::Rect::from_min_size(egui::pos2(left_center.x, left_center.y - height / 2.0), egui::vec2(width, height));
ui.painter().image(tex.id(), r, egui::Rect::from_min_max(egui::pos2(0.0, 0.0), egui::pos2(1.0, 1.0)), egui::Color32::WHITE);
Some(r)
}

View File

@ -5,6 +5,7 @@
//! control-channel handlers. Swap it for another toolkit without touching the engine.
pub mod automation;
pub mod brand;
pub mod control;
pub mod dock;
pub mod frames;

View File

@ -138,6 +138,10 @@ fn about(app: &mut FilmcraftApp, ui: &mut egui::Ui) {
use crate::links;
let t = app.tokens;
ui.set_width(380.0);
// ArtCraft wordmark (first-party trademark, docs/brand/).
let (r, _) = ui.allocate_exact_size(egui::vec2(ui.available_width(), 30.0), egui::Sense::hover());
crate::brand::paint_wordmark(ui, egui::pos2(r.min.x, r.center().y), 20.0, app.ui.dark);
ui.add_space(6.0);
ui.heading("FilmCraft");
ui.label(format!("Version {}", env!("CARGO_PKG_VERSION")));
ui.label("A clean-room, pure-Rust non-linear video editor. Part of the ArtCraft family.");

View File

@ -45,7 +45,10 @@ pub fn show(app: &mut FilmcraftApp, ui: &mut egui::Ui, rect: Rect) {
}
// Community and project links.
let y = 90.0 + 150.0 + 36.0;
ui.painter().text(rect.min + vec2(24.0, y), Align2::LEFT_CENTER, "Community", Tokens::semibold(15.0), t.text);
// ArtCraft wordmark (first-party trademark, docs/brand/), then the section title.
let logo = crate::brand::paint_wordmark(ui, rect.min + vec2(24.0, y), 15.0, app.ui.dark);
let tx = logo.map_or(rect.min.x + 24.0, |r| r.max.x + 12.0);
ui.painter().text(pos2(tx, rect.min.y + y), Align2::LEFT_CENTER, "Community", Tokens::semibold(15.0), t.text);
let mut x = rect.min.x + 24.0;
for (i, (id, label, url)) in crate::links::ALL.iter().take(4).enumerate() {
let primary = i == 0;

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

View File

@ -0,0 +1,8 @@
asset: artcraft-logo-white.png
title: ArtCraft wordmark, light ink for dark backgrounds
author: ArtCraft team (Storyteller)
source: original work (first-party ArtCraft brand asset supplied by the ArtCraft team)
license: LicenseRef-ArtCraft-Trademark — ArtCraft name and logo are trademarks of the ArtCraft team, all rights reserved; used in FilmCraft with permission. Not covered by the project's MIT OR Apache-2.0 licence.
license-file:
added: 2026-10-01 by Claude (agent) for Brandon Thomas
notes: 3200x333 PNG. Bundled in the app (About dialog, Home screen) and shown in the README header. First-party brand mark: the one exception to the open-licence rule (AGENTS.md §1.8). Forks and redistributions must remove or replace it unless they have permission.

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.3 KiB

View File

@ -0,0 +1,8 @@
asset: artcraft-logo-white.svg
title: ArtCraft wordmark, light ink for dark backgrounds
author: ArtCraft team (Storyteller)
source: original work (first-party ArtCraft brand asset supplied by the ArtCraft team)
license: LicenseRef-ArtCraft-Trademark — ArtCraft name and logo are trademarks of the ArtCraft team, all rights reserved; used in FilmCraft with permission. Not covered by the project's MIT OR Apache-2.0 licence.
license-file:
added: 2026-10-01 by Claude (agent) for Brandon Thomas
notes: SVG. Bundled in the app (About dialog, Home screen) and shown in the README header. First-party brand mark: the one exception to the open-licence rule (AGENTS.md §1.8). Forks and redistributions must remove or replace it unless they have permission.

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

View File

@ -0,0 +1,8 @@
asset: artcraft-logo.png
title: ArtCraft wordmark (symbol + "ARTCRAFT"), dark ink for light backgrounds
author: ArtCraft team (Storyteller)
source: original work (first-party ArtCraft brand asset supplied by the ArtCraft team)
license: LicenseRef-ArtCraft-Trademark — ArtCraft name and logo are trademarks of the ArtCraft team, all rights reserved; used in FilmCraft with permission. Not covered by the project's MIT OR Apache-2.0 licence.
license-file:
added: 2026-10-01 by Claude (agent) for Brandon Thomas
notes: 3200x333 PNG. Bundled in the app (About dialog, Home screen) and shown in the README header. First-party brand mark: the one exception to the open-licence rule (AGENTS.md §1.8). Forks and redistributions must remove or replace it unless they have permission.

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.3 KiB

View File

@ -0,0 +1,8 @@
asset: artcraft-logo.svg
title: ArtCraft wordmark (symbol + "ARTCRAFT"), dark ink for light backgrounds
author: ArtCraft team (Storyteller)
source: original work (first-party ArtCraft brand asset supplied by the ArtCraft team)
license: LicenseRef-ArtCraft-Trademark — ArtCraft name and logo are trademarks of the ArtCraft team, all rights reserved; used in FilmCraft with permission. Not covered by the project's MIT OR Apache-2.0 licence.
license-file:
added: 2026-10-01 by Claude (agent) for Brandon Thomas
notes: SVG. Bundled in the app (About dialog, Home screen) and shown in the README header. First-party brand mark: the one exception to the open-licence rule (AGENTS.md §1.8). Forks and redistributions must remove or replace it unless they have permission.

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

View File

@ -0,0 +1,8 @@
asset: artcraft-mark-black.png
title: ArtCraft symbol ("A" mark), black
author: ArtCraft team (Storyteller)
source: original work (first-party ArtCraft brand asset supplied by the ArtCraft team)
license: LicenseRef-ArtCraft-Trademark — ArtCraft name and logo are trademarks of the ArtCraft team, all rights reserved; used in FilmCraft with permission. Not covered by the project's MIT OR Apache-2.0 licence.
license-file:
added: 2026-10-01 by Claude (agent) for Brandon Thomas
notes: 1024x1024 PNG. Kept for brand use (README, docs). First-party brand mark: the one exception to the open-licence rule (AGENTS.md §1.8). Forks and redistributions must remove or replace it unless they have permission.

View File

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-10 -19.42 136.34 136.34" role="img" aria-label="ArtCraft">
<title>ArtCraft</title>
<path fill="#0b0b0c" d="M104.28,49.49L81.55,0h-31.23l-3.17,4.76L14.75,53.63,0,75.85l21.55,21.55,63.79-36.94,16.99,37.04,14.01-21.74-12.06-26.27ZM32.89,65.66l32.42-48.87,10.91,23.77-43.32,25.09Z"/>
</svg>

After

Width:  |  Height:  |  Size: 341 B

View File

@ -0,0 +1,8 @@
asset: artcraft-mark-black.svg
title: ArtCraft symbol ("A" mark), black
author: ArtCraft team (Storyteller)
source: original work (first-party ArtCraft brand asset supplied by the ArtCraft team)
license: LicenseRef-ArtCraft-Trademark — ArtCraft name and logo are trademarks of the ArtCraft team, all rights reserved; used in FilmCraft with permission. Not covered by the project's MIT OR Apache-2.0 licence.
license-file:
added: 2026-10-01 by Claude (agent) for Brandon Thomas
notes: SVG. Kept for brand use (README, docs). First-party brand mark: the one exception to the open-licence rule (AGENTS.md §1.8). Forks and redistributions must remove or replace it unless they have permission.

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@ -0,0 +1,8 @@
asset: artcraft-mark.png
title: ArtCraft symbol ("A" mark), blue
author: ArtCraft team (Storyteller)
source: original work (first-party ArtCraft brand asset supplied by the ArtCraft team)
license: LicenseRef-ArtCraft-Trademark — ArtCraft name and logo are trademarks of the ArtCraft team, all rights reserved; used in FilmCraft with permission. Not covered by the project's MIT OR Apache-2.0 licence.
license-file:
added: 2026-10-01 by Claude (agent) for Brandon Thomas
notes: 1024x1024 PNG. Bundled in the app (About dialog, Home screen) and shown in the README header. First-party brand mark: the one exception to the open-licence rule (AGENTS.md §1.8). Forks and redistributions must remove or replace it unless they have permission.

View File

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-10 -19.42 136.34 136.34" role="img" aria-label="ArtCraft">
<title>ArtCraft</title>
<path fill="#4e7bfb" d="M104.28,49.49L81.55,0h-31.23l-3.17,4.76L14.75,53.63,0,75.85l21.55,21.55,63.79-36.94,16.99,37.04,14.01-21.74-12.06-26.27ZM32.89,65.66l32.42-48.87,10.91,23.77-43.32,25.09Z"/>
</svg>

After

Width:  |  Height:  |  Size: 341 B

View File

@ -0,0 +1,8 @@
asset: artcraft-mark.svg
title: ArtCraft symbol ("A" mark), blue
author: ArtCraft team (Storyteller)
source: original work (first-party ArtCraft brand asset supplied by the ArtCraft team)
license: LicenseRef-ArtCraft-Trademark — ArtCraft name and logo are trademarks of the ArtCraft team, all rights reserved; used in FilmCraft with permission. Not covered by the project's MIT OR Apache-2.0 licence.
license-file:
added: 2026-10-01 by Claude (agent) for Brandon Thomas
notes: SVG. Bundled in the app (About dialog, Home screen) and shown in the README header. First-party brand mark: the one exception to the open-licence rule (AGENTS.md §1.8). Forks and redistributions must remove or replace it unless they have permission.