chore: debrand ArtCraft and Discord references
Remove Discord button, Help menu links, sibling-app links and brand assets; rewrite docs and packaging URLs. Add .debrand rules. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@@ -0,0 +1,24 @@
|
||||
# Strip upstream (ArtCraft / Discord) branding. Run: perl tools/craft-skills/skills/debrand/debrand.pl . (--check in CI)
|
||||
delete docs/brand
|
||||
# MIT/Apache texts stay verbatim. The copyright holder line stays everywhere (legal requirement).
|
||||
keep ^(LICENSE-(MIT|APACHE)|\.debrand)$
|
||||
dropline ^ATTRIBUTION\.md$ :: \|\s*`docs/brand/
|
||||
sub (?s)\nThe ArtCraft name, wordmark and logos in docs/brand/.*?LICENSE-brand\.txt\.\n =>
|
||||
sub drawn in ArtCraft, vectorised => drawn by hand, vectorised
|
||||
sub drawing by the project owner in ArtCraft\) => drawing by the project owner)
|
||||
sub made for this project by the project owner in ArtCraft, then => made for this project by the project owner by hand, then
|
||||
sub the project owner drew it in ArtCraft => the project owner drew it by hand
|
||||
sub owner's ArtCraft unicorn drawing => owner's unicorn drawing
|
||||
sub The owner's ArtCraft drawing => The owner's drawing
|
||||
sub https://getartcraft\.com/apps/effectcraft => https://github.com/storytold/effectcraft
|
||||
sub https://discord\.gg/artcraft => https://github.com/storytold/effectcraft/issues
|
||||
sub https://getartcraft\.com => https://example.com
|
||||
sub \[Discord\]\(https://github\.com/storytold/effectcraft/issues\) and in\nGitHub issues => GitHub issues
|
||||
sub Come tell us what matters most to you on \[Discord\]\(https://github\.com/storytold/effectcraft/issues\)\. => Tell us what matters most to you in [GitHub issues](https://github.com/storytold/effectcraft/issues).
|
||||
sub links \(Help menu, Discord, Settings\) => links (Help menu, Settings)
|
||||
sub the Discord and other links do nothing => the links do nothing
|
||||
sub \(6 October, on Discord\) => (6 October)
|
||||
sub the Tools bar and About dialog carry the ArtCraft mark => the Tools bar and About dialog carry the app mark
|
||||
forbid (?i)artcraft(?! Team and the EffectCraft contributors)
|
||||
forbid (?i)discord
|
||||
sub ffmpeg export, Discord presence, => ffmpeg export,
|
||||
@@ -0,0 +1,3 @@
|
||||
[submodule "tools/craft-skills"]
|
||||
path = tools/craft-skills
|
||||
url = https://git.marcospaulo.dev.br/storytold/craft-skills.git
|
||||
@@ -76,12 +76,6 @@ reproduce an image (for example, point lists traced from someone else's icon).
|
||||
`crates/engine/src/demo.rs`, generators in `crates/effects`) 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/`
|
||||
are trademarks of the ArtCraft Team, not open source, usable only unmodified and only in the context of
|
||||
EffectCraft under `docs/brand/LICENSE-brand.txt` (forks and modified versions must remove them). 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
|
||||
|
||||
|
||||
@@ -18,21 +18,21 @@ iconography, images or other Adobe assets; open licences only; every asset attri
|
||||
| `assets/fonts/JetBrainsMono-Regular.ttf` | The JetBrains Mono Project Authors | https://github.com/JetBrains/JetBrainsMono | OFL-1.1 (`assets/fonts/OFL-JetBrainsMono.txt`) |
|
||||
| `apps/effectcraft-web/web/favicon.svg` | EffectCraft contributors | Original work: web app icon, a copy of `assets/app-icon/effectcraft-small.svg` (the unicorn app icon) | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
|
||||
| `packaging/macos/dmg/background.svg` | @XusBadia | Original work: macOS DMG Finder window background, derived from the EffectCraft app icon (`assets/app-icon/effectcraft.svg`); rendered to a TIFF by `packaging/macos/package.sh` at package time | MIT OR Apache-2.0 (`LICENSE-MIT`, `LICENSE-APACHE`) |
|
||||
| `assets/app-icon/effectcraft-1024.png` | EffectCraft contributors | Original work: effectCraft app icon, 1024 px (owner's ArtCraft unicorn drawing, vectorised) | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
|
||||
| `assets/app-icon/effectcraft-macos-512.png` | EffectCraft contributors | Original work: effectCraft runtime Dock icon (macOS) (owner's ArtCraft unicorn drawing, vectorised) | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
|
||||
| `assets/app-icon/effectcraft-small.svg` | EffectCraft contributors | Original work: effectCraft app icon, light vector (owner's ArtCraft unicorn drawing, vectorised) | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
|
||||
| `assets/app-icon/effectcraft.icns` | EffectCraft contributors | Original work: effectCraft macOS app icon (owner's ArtCraft unicorn drawing, vectorised) | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
|
||||
| `assets/app-icon/effectcraft.ico` | EffectCraft contributors | Original work: effectCraft Windows app icon (owner's ArtCraft unicorn drawing, vectorised) | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
|
||||
| `assets/app-icon/effectcraft.svg` | EffectCraft contributors | Original work: effectCraft app icon, master vector (owner's ArtCraft unicorn drawing, vectorised) | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
|
||||
| `assets/app-icon/hicolor/128x128/apps/ai.storyteller.effectcraft.png` | EffectCraft contributors | Original work: effectCraft app icon, Linux hicolor 128x128 (owner's ArtCraft unicorn drawing, vectorised) | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
|
||||
| `assets/app-icon/hicolor/16x16/apps/ai.storyteller.effectcraft.png` | EffectCraft contributors | Original work: effectCraft app icon, Linux hicolor 16x16 (owner's ArtCraft unicorn drawing, vectorised) | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
|
||||
| `assets/app-icon/hicolor/24x24/apps/ai.storyteller.effectcraft.png` | EffectCraft contributors | Original work: effectCraft app icon, Linux hicolor 24x24 (owner's ArtCraft unicorn drawing, vectorised) | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
|
||||
| `assets/app-icon/hicolor/256x256/apps/ai.storyteller.effectcraft.png` | EffectCraft contributors | Original work: effectCraft app icon, Linux hicolor 256x256 (owner's ArtCraft unicorn drawing, vectorised) | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
|
||||
| `assets/app-icon/hicolor/32x32/apps/ai.storyteller.effectcraft.png` | EffectCraft contributors | Original work: effectCraft app icon, Linux hicolor 32x32 (owner's ArtCraft unicorn drawing, vectorised) | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
|
||||
| `assets/app-icon/hicolor/48x48/apps/ai.storyteller.effectcraft.png` | EffectCraft contributors | Original work: effectCraft app icon, Linux hicolor 48x48 (owner's ArtCraft unicorn drawing, vectorised) | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
|
||||
| `assets/app-icon/hicolor/512x512/apps/ai.storyteller.effectcraft.png` | EffectCraft contributors | Original work: effectCraft app icon, Linux hicolor 512x512 (owner's ArtCraft unicorn drawing, vectorised) | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
|
||||
| `assets/app-icon/hicolor/64x64/apps/ai.storyteller.effectcraft.png` | EffectCraft contributors | Original work: effectCraft app icon, Linux hicolor 64x64 (owner's ArtCraft unicorn drawing, vectorised) | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
|
||||
| `assets/app-icon/hicolor/scalable/apps/ai.storyteller.effectcraft.svg` | EffectCraft contributors | Original work: effectCraft app icon, Linux hicolor scalable (owner's ArtCraft unicorn drawing, vectorised) | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
|
||||
| `assets/app-icon/effectcraft-1024.png` | EffectCraft contributors | Original work: effectCraft app icon, 1024 px (owner's unicorn drawing, vectorised) | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
|
||||
| `assets/app-icon/effectcraft-macos-512.png` | EffectCraft contributors | Original work: effectCraft runtime Dock icon (macOS) (owner's unicorn drawing, vectorised) | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
|
||||
| `assets/app-icon/effectcraft-small.svg` | EffectCraft contributors | Original work: effectCraft app icon, light vector (owner's unicorn drawing, vectorised) | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
|
||||
| `assets/app-icon/effectcraft.icns` | EffectCraft contributors | Original work: effectCraft macOS app icon (owner's unicorn drawing, vectorised) | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
|
||||
| `assets/app-icon/effectcraft.ico` | EffectCraft contributors | Original work: effectCraft Windows app icon (owner's unicorn drawing, vectorised) | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
|
||||
| `assets/app-icon/effectcraft.svg` | EffectCraft contributors | Original work: effectCraft app icon, master vector (owner's unicorn drawing, vectorised) | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
|
||||
| `assets/app-icon/hicolor/128x128/apps/ai.storyteller.effectcraft.png` | EffectCraft contributors | Original work: effectCraft app icon, Linux hicolor 128x128 (owner's unicorn drawing, vectorised) | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
|
||||
| `assets/app-icon/hicolor/16x16/apps/ai.storyteller.effectcraft.png` | EffectCraft contributors | Original work: effectCraft app icon, Linux hicolor 16x16 (owner's unicorn drawing, vectorised) | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
|
||||
| `assets/app-icon/hicolor/24x24/apps/ai.storyteller.effectcraft.png` | EffectCraft contributors | Original work: effectCraft app icon, Linux hicolor 24x24 (owner's unicorn drawing, vectorised) | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
|
||||
| `assets/app-icon/hicolor/256x256/apps/ai.storyteller.effectcraft.png` | EffectCraft contributors | Original work: effectCraft app icon, Linux hicolor 256x256 (owner's unicorn drawing, vectorised) | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
|
||||
| `assets/app-icon/hicolor/32x32/apps/ai.storyteller.effectcraft.png` | EffectCraft contributors | Original work: effectCraft app icon, Linux hicolor 32x32 (owner's unicorn drawing, vectorised) | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
|
||||
| `assets/app-icon/hicolor/48x48/apps/ai.storyteller.effectcraft.png` | EffectCraft contributors | Original work: effectCraft app icon, Linux hicolor 48x48 (owner's unicorn drawing, vectorised) | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
|
||||
| `assets/app-icon/hicolor/512x512/apps/ai.storyteller.effectcraft.png` | EffectCraft contributors | Original work: effectCraft app icon, Linux hicolor 512x512 (owner's unicorn drawing, vectorised) | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
|
||||
| `assets/app-icon/hicolor/64x64/apps/ai.storyteller.effectcraft.png` | EffectCraft contributors | Original work: effectCraft app icon, Linux hicolor 64x64 (owner's unicorn drawing, vectorised) | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
|
||||
| `assets/app-icon/hicolor/scalable/apps/ai.storyteller.effectcraft.svg` | EffectCraft contributors | Original work: effectCraft app icon, Linux hicolor scalable (owner's unicorn drawing, vectorised) | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) |
|
||||
| `crates/lottie/tests/fixtures/bouncing-ball.json` | EffectCraft contributors | Original work: hand-written Lottie test fixture (bouncing ball, eased position keys) | MIT OR Apache-2.0 |
|
||||
| `crates/lottie/tests/fixtures/shapes-gradient.json` | EffectCraft contributors | Original work: hand-written Lottie test fixture (star, rectangle, gradient fill, dashed stroke, trim paths) | MIT OR Apache-2.0 |
|
||||
| `crates/lottie/tests/fixtures/precomp-matte-text.json` | EffectCraft contributors | Original work: hand-written Lottie test fixture (precomp, track matte, parented text) | MIT OR Apache-2.0 |
|
||||
@@ -103,22 +103,4 @@ configuration from these Apache-2.0 projects:
|
||||
- `crates/segment/src/mobilesam.rs` follows the MobileSAM, TinyViT and Segment Anything
|
||||
architectures and their Apache-2.0 reference code.
|
||||
|
||||
## First-party brand marks
|
||||
|
||||
The ArtCraft name, wordmark and logos are trademarks of the ArtCraft Team. They are not open source and are not
|
||||
covered by the project licence; they may be used only unmodified and only as part of this repository and EffectCraft,
|
||||
under [`docs/brand/LICENSE-brand.txt`](docs/brand/LICENSE-brand.txt). Forks and modified versions must remove 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 brand terms, not open source (`docs/brand/LICENSE-brand.txt`) |
|
||||
| `docs/brand/artcraft-logo-white.svg` | ArtCraft Team | Original work: first-party ArtCraft brand mark (ArtCraft wordmark, light ink for dark backgrounds) | ArtCraft brand terms, not open source (`docs/brand/LICENSE-brand.txt`) |
|
||||
| `docs/brand/artcraft-logo.png` | ArtCraft Team | Original work: first-party ArtCraft brand mark (ArtCraft wordmark (symbol + "ARTCRAFT"), dark ink for light backgrounds) | ArtCraft brand terms, not open source (`docs/brand/LICENSE-brand.txt`) |
|
||||
| `docs/brand/artcraft-logo.svg` | ArtCraft Team | Original work: first-party ArtCraft brand mark (ArtCraft wordmark (symbol + "ARTCRAFT"), dark ink for light backgrounds) | ArtCraft brand terms, not open source (`docs/brand/LICENSE-brand.txt`) |
|
||||
| `docs/brand/artcraft-mark-black.png` | ArtCraft Team | Original work: first-party ArtCraft brand mark (ArtCraft symbol ("A" mark), black) | ArtCraft brand terms, not open source (`docs/brand/LICENSE-brand.txt`) |
|
||||
| `docs/brand/artcraft-mark-black.svg` | ArtCraft Team | Original work: first-party ArtCraft brand mark (ArtCraft symbol ("A" mark), black) | ArtCraft brand terms, not open source (`docs/brand/LICENSE-brand.txt`) |
|
||||
| `docs/brand/artcraft-mark.png` | ArtCraft Team | Original work: first-party ArtCraft brand mark (ArtCraft symbol ("A" mark), blue) | ArtCraft brand terms, not open source (`docs/brand/LICENSE-brand.txt`) |
|
||||
| `docs/brand/artcraft-mark.svg` | ArtCraft Team | Original work: first-party ArtCraft brand mark (ArtCraft symbol ("A" mark), blue) | ArtCraft brand terms, not open source (`docs/brand/LICENSE-brand.txt`) |
|
||||
|
||||
- Appearance theme previews, drawn procedurally from original shapes: `crates/ui-egui/src/panels/settings.rs` (original work, MIT OR Apache-2.0).
|
||||
|
||||
@@ -19,7 +19,7 @@ EffectCraft is a clean-room, open-source, pure-Rust motion graphics and visual e
|
||||
- **Property tree:** everything animatable is a `Property` in the layer's `PropGroup` tree, addressed by paths (`transform/position`, `effects/#1/blurriness`, `@uid`).
|
||||
- **Everything is a command** (`crates/engine`): id, label, menu path, shortcut, params, enabled(), run(). UI, CLI, control channel and MCP dispatch by id.
|
||||
- **Everything is agent-drivable:** every interactive widget registers an automation id; UI state is serde.
|
||||
- **Community links** (Help menu, About, header Discord button): https://discord.gg/artcraft, https://getartcraft.com, https://getartcraft.com/apps/effectcraft, https://github.com/storytold/effectcraft.
|
||||
- **Project links** (Help menu, About): https://github.com/storytold/effectcraft.
|
||||
- **Quality gates** before every commit: `cargo xtask ci` (fmt, clippy -D warnings, tests, layers, assets, wasm).
|
||||
- **Commits:** one task id per commit (`M6.3: trim paths`). Only green states.
|
||||
|
||||
|
||||
@@ -42,5 +42,4 @@ cargo xtask ci # what every commit must pass
|
||||
|
||||
## Talk to us
|
||||
|
||||
Questions, ideas and bug reports are welcome on [Discord](https://discord.gg/artcraft) and in
|
||||
GitHub issues.
|
||||
Questions, ideas and bug reports are welcome on GitHub issues.
|
||||
|
||||
@@ -3,10 +3,6 @@ Copyright (c) 2026 ArtCraft Team and the EffectCraft contributors.
|
||||
Licensed under the MIT License or the Apache License, Version 2.0, at your option
|
||||
(LICENSE-MIT, LICENSE-APACHE).
|
||||
|
||||
The ArtCraft name, wordmark and logos in docs/brand/ are trademarks of the ArtCraft Team. They are
|
||||
not open source and are not covered by the license above; their terms are in
|
||||
docs/brand/LICENSE-brand.txt.
|
||||
|
||||
Third-party material
|
||||
|
||||
This product bundles third-party material under its own licenses, listed below. The per-file
|
||||
|
||||
@@ -1,13 +1,3 @@
|
||||
<p align="center">
|
||||
<a href="https://getartcraft.com/">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="docs/brand/artcraft-logo-white.svg">
|
||||
<img alt="ArtCraft" src="docs/brand/artcraft-logo.svg" width="200">
|
||||
</picture>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
|
||||
<h1 align="center">EffectCraft</h1>
|
||||
|
||||
<p align="center">
|
||||
@@ -26,26 +16,12 @@
|
||||
<img alt="License: MIT OR Apache-2.0" src="https://img.shields.io/badge/license-MIT%20%2F%20Apache--2.0-555?style=flat-square">
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://discord.gg/artcraft"><img alt="Join the ArtCraft community on Discord" src="https://img.shields.io/badge/Join%20us%20on%20Discord-5865F2?style=for-the-badge&logo=discord&logoColor=white" height="40"></a>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://getartcraft.com/apps/effectcraft"><b>EffectCraft on getartcraft.com</b></a> ·
|
||||
<a href="https://getartcraft.com/">ArtCraft</a> ·
|
||||
<a href="https://getartcraft.com/apps">All Crafting Apps</a>
|
||||
</p>
|
||||
|
||||
<br>
|
||||
|
||||
<p align="center">
|
||||
<img src="docs/images/effectcraft-hero.png" alt="EffectCraft's main window: the animated demo composition in the Composition panel, the Project panel, a Timeline with text, shape and solid layers, and the Properties panel showing the selected text layer's transform, font and paragraph settings" width="100%">
|
||||
</p>
|
||||
|
||||
> [!NOTE]
|
||||
> **ArtCraft is a community of artists from all walks of life.** Digital, generative, music,
|
||||
> games — if you make things, you're one of us. **[Come say hi on Discord](https://discord.gg/artcraft).**
|
||||
|
||||
<p align="center">
|
||||
<a href="#what-effectcraft-is">What it is</a> ·
|
||||
<a href="#animate">Animate</a> ·
|
||||
@@ -254,7 +230,7 @@ send us right now.
|
||||
|
||||
## Downloads
|
||||
|
||||
**New to EffectCraft?** Download it from the [EffectCraft page on getartcraft.com](https://getartcraft.com/apps/effectcraft). That's the easiest way to install it.
|
||||
**New to EffectCraft?** Download it from the [latest release](https://github.com/storytold/effectcraft/releases/latest). That's the easiest way to install it.
|
||||
|
||||
**Want a specific build or format?** On GitHub, the [latest release](https://github.com/storytold/effectcraft/releases/latest) has every build listed below, and [all releases](https://github.com/storytold/effectcraft/releases) has earlier versions and their notes. `<ver>` in the file names is the version number, and `SHA256SUMS.txt` lists a checksum for every file.
|
||||
|
||||
@@ -317,43 +293,18 @@ File ▸ Import fallback instead.
|
||||
|
||||
## The Crafting Apps
|
||||
|
||||
EffectCraft is one of the **Crafting Apps**: free, open-source creative tools from the
|
||||
[ArtCraft](https://getartcraft.com/) team, each written from scratch in Rust and each able to
|
||||
EffectCraft is one of the **Crafting Apps**: free, open-source creative tools, each written from scratch in Rust and each able to
|
||||
stand on its own.
|
||||
|
||||
| | App | What it's for | Code | Learn more |
|
||||
|:-:|---|---|---|---|
|
||||
| <img src="https://raw.githubusercontent.com/storytold/photocraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.photocraft.png" alt="" width="32" height="32"> | **PhotoCraft** | Image editing: layers, masks, type and real PSD files | [GitHub](https://github.com/storytold/photocraft) | [Website](https://getartcraft.com/apps/photocraft) |
|
||||
| <img src="https://raw.githubusercontent.com/storytold/vectorcraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.vectorcraft.png" alt="" width="32" height="32"> | **VectorCraft** | Vector illustration | [GitHub](https://github.com/storytold/vectorcraft) | [Website](https://getartcraft.com/apps/vectorcraft) |
|
||||
| <img src="https://raw.githubusercontent.com/storytold/filmcraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.filmcraft.png" alt="" width="32" height="32"> | **FilmCraft** | Video editing, color and sound | [GitHub](https://github.com/storytold/filmcraft) | [Website](https://getartcraft.com/apps/filmcraft) |
|
||||
| <img src="https://raw.githubusercontent.com/storytold/lightcraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.lightcraft.png" alt="" width="32" height="32"> | **LightCraft** | Photo library and raw development | [GitHub](https://github.com/storytold/lightcraft) | [Website](https://getartcraft.com/apps/lightcraft) |
|
||||
| <img src="https://raw.githubusercontent.com/storytold/pdfcraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.pdfcraft.png" alt="" width="32" height="32"> | **PdfCraft** | Reading, organizing and protecting PDFs | [GitHub](https://github.com/storytold/pdfcraft) | [Website](https://getartcraft.com/apps/pdfcraft) |
|
||||
| <img src="https://raw.githubusercontent.com/storytold/effectcraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.effectcraft.png" alt="" width="32" height="32"> | **EffectCraft** | **Motion graphics and visual effects · you are here** | [GitHub](https://github.com/storytold/effectcraft) | [Website](https://getartcraft.com/apps/effectcraft) |
|
||||
| <img src="https://raw.githubusercontent.com/storytold/designcraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.designcraft.png" alt="" width="32" height="32"> | **DesignCraft** | Page layout and publishing | [GitHub](https://github.com/storytold/designcraft) | [Website](https://getartcraft.com/apps/designcraft) |
|
||||
|
||||
And [**ArtCraft**](https://getartcraft.com/) itself, our AI image and video studio for artists who want real control.
|
||||
|
||||
<br>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://discord.gg/artcraft"><img alt="Join the ArtCraft community on Discord" src="https://img.shields.io/badge/Join%20us%20on%20Discord-5865F2?style=for-the-badge&logo=discord&logoColor=white" height="40"></a>
|
||||
</p>
|
||||
|
||||
<h3 align="center">Come make things with us</h3>
|
||||
|
||||
<p align="center">
|
||||
Our Discord is where artists of every kind hang out: people who paint, shoot, draw, cut film,
|
||||
set type, and people still figuring out what they like to make. Share what you're working on,
|
||||
ask for help, tell us what's broken, or tell us what you wish these tools could do.
|
||||
Whatever your medium and however long you've been at it, you're welcome here.
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://discord.gg/artcraft"><b>discord.gg/artcraft</b></a> ·
|
||||
<a href="https://getartcraft.com/">getartcraft.com</a> ·
|
||||
<a href="https://getartcraft.com/apps">The Crafting Apps</a> ·
|
||||
<a href="https://getartcraft.com/apps/effectcraft">EffectCraft</a>
|
||||
</p>
|
||||
| | App | What it's for | Code |
|
||||
|:-:|---|---|---|
|
||||
| <img src="https://raw.githubusercontent.com/storytold/photocraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.photocraft.png" alt="" width="32" height="32"> | **PhotoCraft** | Image editing: layers, masks, type and real PSD files | [GitHub](https://github.com/storytold/photocraft) |
|
||||
| <img src="https://raw.githubusercontent.com/storytold/vectorcraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.vectorcraft.png" alt="" width="32" height="32"> | **VectorCraft** | Vector illustration | [GitHub](https://github.com/storytold/vectorcraft) |
|
||||
| <img src="https://raw.githubusercontent.com/storytold/filmcraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.filmcraft.png" alt="" width="32" height="32"> | **FilmCraft** | Video editing, color and sound | [GitHub](https://github.com/storytold/filmcraft) |
|
||||
| <img src="https://raw.githubusercontent.com/storytold/lightcraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.lightcraft.png" alt="" width="32" height="32"> | **LightCraft** | Photo library and raw development | [GitHub](https://github.com/storytold/lightcraft) |
|
||||
| <img src="https://raw.githubusercontent.com/storytold/pdfcraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.pdfcraft.png" alt="" width="32" height="32"> | **PdfCraft** | Reading, organizing and protecting PDFs | [GitHub](https://github.com/storytold/pdfcraft) |
|
||||
| <img src="https://raw.githubusercontent.com/storytold/effectcraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.effectcraft.png" alt="" width="32" height="32"> | **EffectCraft** | **Motion graphics and visual effects · you are here** | [GitHub](https://github.com/storytold/effectcraft) |
|
||||
| <img src="https://raw.githubusercontent.com/storytold/designcraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.designcraft.png" alt="" width="32" height="32"> | **DesignCraft** | Page layout and publishing | [GitHub](https://github.com/storytold/designcraft) |
|
||||
|
||||
## License and credits
|
||||
|
||||
@@ -363,18 +314,8 @@ Copyright (c) 2026 ArtCraft Team and the EffectCraft contributors. Required noti
|
||||
Bundled fonts, icons, images and other assets keep their own open licenses; each one is listed
|
||||
with its author, source and license in [ATTRIBUTION.md](ATTRIBUTION.md).
|
||||
|
||||
The ArtCraft name, wordmark and logos in [`docs/brand/`](docs/brand/) are trademarks of the
|
||||
ArtCraft Team and are not covered by this license. They may be used only unmodified, and only as
|
||||
part of this repository and EffectCraft, under [`docs/brand/LICENSE-brand.txt`](docs/brand/LICENSE-brand.txt).
|
||||
Forks and modified versions must remove them.
|
||||
|
||||
<sub>Adobe, Photoshop, Illustrator, Premiere Pro, Lightroom, Acrobat, After Effects and InDesign are trademarks or registered trademarks of Adobe Inc. in the United States and/or other countries. EffectCraft is an independent, open-source project and is not affiliated with, sponsored by or endorsed by Adobe Inc.; these names are used only to describe the workflows it is compatible with.</sub>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://getartcraft.com/"><img alt="ArtCraft" src="docs/brand/artcraft-mark.svg" width="28"></a><br>
|
||||
<sub>Made by the <a href="https://getartcraft.com/">ArtCraft</a> team and community.</sub>
|
||||
</p>
|
||||
|
||||
## Star history
|
||||
|
||||
[](https://www.star-history.com/?repos=storytold%2Feffectcraft&type=date&legend=top-left)
|
||||
|
||||
@@ -113,7 +113,7 @@ Ranked; detail in [docs/roadmap.md](docs/roadmap.md) and [docs/gaps.md](docs/gap
|
||||
| 5 | Performance: benchmarks at 1080p / 4K, real-time cached playback, hardware video (G5) | 50–100 |
|
||||
| 6 | Localization depth: effect names, all panels, French / German / Korean (G9) | 60–110 |
|
||||
|
||||
Come tell us what matters most to you on [Discord](https://discord.gg/artcraft).
|
||||
Tell us what matters most to you in [GitHub issues](https://github.com/storytold/effectcraft/issues).
|
||||
|
||||
## Progress log
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
asset: favicon.svg
|
||||
title: EffectCraft web app icon (favicon)
|
||||
author: EffectCraft contributors (drawing by the project owner in ArtCraft)
|
||||
author: EffectCraft contributors (drawing by the project owner)
|
||||
source: original work
|
||||
license: MIT OR Apache-2.0
|
||||
license-file: assets/app-icon/LICENSE.txt
|
||||
|
||||
@@ -14,7 +14,7 @@ effectcraft-engine = { workspace = true }
|
||||
effectcraft-host = { workspace = true }
|
||||
effectcraft-ui-egui = { workspace = true }
|
||||
egui = { workspace = true }
|
||||
# `links`: links (Help menu, Discord, Settings) open in the system browser.
|
||||
# `links`: links (Help menu, Settings) open in the system browser.
|
||||
eframe = { workspace = true, features = ["default_fonts", "wgpu", "accesskit", "links", "wayland", "x11"] }
|
||||
serde = { workspace = true }
|
||||
serde_json = { workspace = true }
|
||||
|
||||
@@ -2,7 +2,7 @@ EffectCraft app icon (effectcraft.svg, effectcraft-small.svg and every file deri
|
||||
this directory: effectcraft-1024.png, effectcraft-macos-512.png, effectcraft.icns, effectcraft.ico,
|
||||
hicolor/), and the web favicon apps/effectcraft-web/web/favicon.svg.
|
||||
|
||||
Original artwork made for this project by the project owner in ArtCraft, then vectorised (no
|
||||
Original artwork made for this project by the project owner by hand, then vectorised (no
|
||||
third-party material). Licensed like the rest of EffectCraft, under either of
|
||||
|
||||
* Apache License, Version 2.0 (https://www.apache.org/licenses/LICENSE-2.0)
|
||||
|
||||
@@ -15,7 +15,7 @@ full-bleed colour field, tight head-and-shoulders crop, the body running off the
|
||||
| Paper | `#efe9dc` | the figure |
|
||||
| Ink | `#0b0b0c` | line work and contour |
|
||||
|
||||
**Provenance:** the project owner drew it in ArtCraft (a 2880 px engraving-style image, kept in
|
||||
**Provenance:** the project owner drew it by hand (a 2880 px engraving-style image, kept in
|
||||
craftrules at `assets/app-icons/effectcraft/source.png`). It was vectorised with craftrules
|
||||
`assets/logo-options/_tools/vectorize_tile.py`, which keys out the field and traces the ink with potrace.
|
||||
Licence: see [LICENSE.txt](LICENSE.txt) (MIT OR Apache-2.0, like the repo).
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
asset: effectcraft-1024.png
|
||||
title: EffectCraft app icon, 1024 px
|
||||
author: EffectCraft contributors (drawing by the project owner in ArtCraft)
|
||||
author: EffectCraft contributors (drawing by the project owner)
|
||||
source: original work
|
||||
license: MIT OR Apache-2.0
|
||||
license-file: assets/app-icon/LICENSE.txt
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
asset: effectcraft-macos-512.png
|
||||
title: EffectCraft runtime Dock icon (macOS)
|
||||
author: EffectCraft contributors (drawing by the project owner in ArtCraft)
|
||||
author: EffectCraft contributors (drawing by the project owner)
|
||||
source: original work
|
||||
license: MIT OR Apache-2.0
|
||||
license-file: assets/app-icon/LICENSE.txt
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
asset: effectcraft-small.svg
|
||||
title: EffectCraft app icon, light vector
|
||||
author: EffectCraft contributors (drawing by the project owner in ArtCraft)
|
||||
author: EffectCraft contributors (drawing by the project owner)
|
||||
source: original work
|
||||
license: MIT OR Apache-2.0
|
||||
license-file: assets/app-icon/LICENSE.txt
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
asset: effectcraft.icns
|
||||
title: EffectCraft macOS app icon
|
||||
author: EffectCraft contributors (drawing by the project owner in ArtCraft)
|
||||
author: EffectCraft contributors (drawing by the project owner)
|
||||
source: original work
|
||||
license: MIT OR Apache-2.0
|
||||
license-file: assets/app-icon/LICENSE.txt
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
asset: effectcraft.ico
|
||||
title: EffectCraft Windows app icon
|
||||
author: EffectCraft contributors (drawing by the project owner in ArtCraft)
|
||||
author: EffectCraft contributors (drawing by the project owner)
|
||||
source: original work
|
||||
license: MIT OR Apache-2.0
|
||||
license-file: assets/app-icon/LICENSE.txt
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
asset: effectcraft.svg
|
||||
title: EffectCraft app icon, master vector
|
||||
author: EffectCraft contributors (drawing by the project owner in ArtCraft)
|
||||
author: EffectCraft contributors (drawing by the project owner)
|
||||
source: original work
|
||||
license: MIT OR Apache-2.0
|
||||
license-file: assets/app-icon/LICENSE.txt
|
||||
added: 2026-10-02 by EffectCraft contributors (Claude agent, app icon)
|
||||
notes: The owner's ArtCraft drawing of an engraved unicorn bust, vectorised at 2048 px with craftrules assets/logo-options/_tools/vectorize_tile.py (potrace; three colours). Canonical artwork; the other icon files derive from it.
|
||||
notes: The owner's drawing of an engraved unicorn bust, vectorised at 2048 px with craftrules assets/logo-options/_tools/vectorize_tile.py (potrace; three colours). Canonical artwork; the other icon files derive from it.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
asset: ai.storyteller.effectcraft.png
|
||||
title: EffectCraft app icon, Linux hicolor 128x128
|
||||
author: EffectCraft contributors (drawing by the project owner in ArtCraft)
|
||||
author: EffectCraft contributors (drawing by the project owner)
|
||||
source: original work
|
||||
license: MIT OR Apache-2.0
|
||||
license-file: assets/app-icon/LICENSE.txt
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
asset: ai.storyteller.effectcraft.png
|
||||
title: EffectCraft app icon, Linux hicolor 16x16
|
||||
author: EffectCraft contributors (drawing by the project owner in ArtCraft)
|
||||
author: EffectCraft contributors (drawing by the project owner)
|
||||
source: original work
|
||||
license: MIT OR Apache-2.0
|
||||
license-file: assets/app-icon/LICENSE.txt
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
asset: ai.storyteller.effectcraft.png
|
||||
title: EffectCraft app icon, Linux hicolor 24x24
|
||||
author: EffectCraft contributors (drawing by the project owner in ArtCraft)
|
||||
author: EffectCraft contributors (drawing by the project owner)
|
||||
source: original work
|
||||
license: MIT OR Apache-2.0
|
||||
license-file: assets/app-icon/LICENSE.txt
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
asset: ai.storyteller.effectcraft.png
|
||||
title: EffectCraft app icon, Linux hicolor 256x256
|
||||
author: EffectCraft contributors (drawing by the project owner in ArtCraft)
|
||||
author: EffectCraft contributors (drawing by the project owner)
|
||||
source: original work
|
||||
license: MIT OR Apache-2.0
|
||||
license-file: assets/app-icon/LICENSE.txt
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
asset: ai.storyteller.effectcraft.png
|
||||
title: EffectCraft app icon, Linux hicolor 32x32
|
||||
author: EffectCraft contributors (drawing by the project owner in ArtCraft)
|
||||
author: EffectCraft contributors (drawing by the project owner)
|
||||
source: original work
|
||||
license: MIT OR Apache-2.0
|
||||
license-file: assets/app-icon/LICENSE.txt
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
asset: ai.storyteller.effectcraft.png
|
||||
title: EffectCraft app icon, Linux hicolor 48x48
|
||||
author: EffectCraft contributors (drawing by the project owner in ArtCraft)
|
||||
author: EffectCraft contributors (drawing by the project owner)
|
||||
source: original work
|
||||
license: MIT OR Apache-2.0
|
||||
license-file: assets/app-icon/LICENSE.txt
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
asset: ai.storyteller.effectcraft.png
|
||||
title: EffectCraft app icon, Linux hicolor 512x512
|
||||
author: EffectCraft contributors (drawing by the project owner in ArtCraft)
|
||||
author: EffectCraft contributors (drawing by the project owner)
|
||||
source: original work
|
||||
license: MIT OR Apache-2.0
|
||||
license-file: assets/app-icon/LICENSE.txt
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
asset: ai.storyteller.effectcraft.png
|
||||
title: EffectCraft app icon, Linux hicolor 64x64
|
||||
author: EffectCraft contributors (drawing by the project owner in ArtCraft)
|
||||
author: EffectCraft contributors (drawing by the project owner)
|
||||
source: original work
|
||||
license: MIT OR Apache-2.0
|
||||
license-file: assets/app-icon/LICENSE.txt
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
asset: ai.storyteller.effectcraft.svg
|
||||
title: EffectCraft app icon, Linux hicolor scalable
|
||||
author: EffectCraft contributors (drawing by the project owner in ArtCraft)
|
||||
author: EffectCraft contributors (drawing by the project owner)
|
||||
source: original work
|
||||
license: MIT OR Apache-2.0
|
||||
license-file: assets/app-icon/LICENSE.txt
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//! Help menu: community and project links (the frontend opens `Event::OpenUrl`).
|
||||
//! Help menu: project links (the frontend opens `Event::OpenUrl`).
|
||||
|
||||
use serde_json::{Value, json};
|
||||
|
||||
@@ -11,11 +11,6 @@ fn open(s: &mut Session, url: String) -> Result<Value> {
|
||||
Ok(json!({"url": url}))
|
||||
}
|
||||
|
||||
fn sibling(s: &mut Session, p: &Value) -> Result<Value> {
|
||||
let slug = str_p(p, "app").unwrap_or("photocraft").to_ascii_lowercase();
|
||||
if str_p(p, "kind") == Some("github") { open(s, links::github_of(&slug)) } else { open(s, links::page_of(&slug)) }
|
||||
}
|
||||
|
||||
/// Help ▸ EffectCraft Help / Scripting Help / Expression Reference / Effect Reference.
|
||||
fn docs(s: &mut Session, p: &Value) -> Result<Value> {
|
||||
let page = match str_p(p, "page").unwrap_or("help") {
|
||||
@@ -31,25 +26,13 @@ fn docs(s: &mut Session, p: &Value) -> Result<Value> {
|
||||
pub fn specs() -> Vec<CommandSpec> {
|
||||
vec![
|
||||
cmd!("help.docs", "EffectCraft Help...", [], Some("F1"), "{page?: help|scripting|expressions|effects|agents}", always, docs),
|
||||
cmd!("help.discord", "Join the ArtCraft Discord...", ["Help"], None, "{}", always, |s, _| open(s, links::DISCORD.into())),
|
||||
cmd!("help.website", "ArtCraft Website", ["Help"], None, "{}", always, |s, _| open(s, links::WEBSITE.into())),
|
||||
cmd!("help.appPage", "EffectCraft Home Page", ["Help"], None, "{}", always, |s, _| open(s, links::APP_PAGE.into())),
|
||||
cmd!("help.github", "EffectCraft on GitHub", ["Help"], None, "{}", always, |s, _| open(s, links::GITHUB.into())),
|
||||
cmd!("help.onlineTutorials", "Online Tutorials...", ["Help"], None, "{}", always, |s, _| open(s, links::APP_PAGE.into())),
|
||||
cmd!("help.onlineTutorials", "Online Tutorials...", ["Help"], None, "{}", always, |s, _| open(s, links::GITHUB.into())),
|
||||
cmd!("help.inAppTutorials", "In-App Tutorials...", ["Help"], None, "{} → the Home screen's Learn tab", always, |s, p| super::frontend(
|
||||
s,
|
||||
"help.inAppTutorials",
|
||||
p
|
||||
)),
|
||||
cmd!("help.reportIssue", "Provide Feedback...", ["Help"], None, "{}", always, |s, _| open(s, links::ISSUES.into())),
|
||||
cmd!(
|
||||
"help.sibling",
|
||||
"Other ArtCraft Apps",
|
||||
[],
|
||||
None,
|
||||
"{app: photocraft|vectorcraft|filmcraft|lightcraft|pdfcraft|designcraft, kind?: page|github}",
|
||||
always,
|
||||
sibling
|
||||
),
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,27 +1,6 @@
|
||||
//! Community and project links (shown in Help ▸, the About dialog, the start screen and the
|
||||
//! header's Discord button).
|
||||
//! Project links (shown in Help ▸, the About dialog and the start screen).
|
||||
|
||||
pub const APP_NAME: &str = "EffectCraft";
|
||||
pub const APP_SLUG: &str = "effectcraft";
|
||||
pub const DISCORD: &str = "https://discord.gg/artcraft";
|
||||
pub const WEBSITE: &str = "https://getartcraft.com";
|
||||
pub const APP_PAGE: &str = "https://getartcraft.com/apps/effectcraft";
|
||||
pub const GITHUB: &str = "https://github.com/storytold/effectcraft";
|
||||
pub const ISSUES: &str = "https://github.com/storytold/effectcraft/issues";
|
||||
|
||||
/// Sibling apps of the ArtCraft family: (name, what it is, GitHub repo, app page).
|
||||
pub const SIBLINGS: &[(&str, &str)] = &[
|
||||
("PhotoCraft", "photocraft"),
|
||||
("VectorCraft", "vectorcraft"),
|
||||
("FilmCraft", "filmcraft"),
|
||||
("LightCraft", "lightcraft"),
|
||||
("PdfCraft", "pdfcraft"),
|
||||
("DesignCraft", "designcraft"),
|
||||
];
|
||||
|
||||
pub fn github_of(slug: &str) -> String {
|
||||
format!("https://github.com/storytold/{slug}")
|
||||
}
|
||||
pub fn page_of(slug: &str) -> String {
|
||||
format!("https://getartcraft.com/apps/{slug}")
|
||||
}
|
||||
|
||||
@@ -1230,11 +1230,8 @@ Help
|
||||
Enable Logging | help.enableLogging
|
||||
Reveal Logging File | help.revealLogFile
|
||||
---
|
||||
Join the ArtCraft Discord... | help.discord
|
||||
Provide Feedback... | help.reportIssue
|
||||
---
|
||||
ArtCraft Website | help.website
|
||||
EffectCraft Home Page | help.appPage
|
||||
EffectCraft on GitHub | help.github
|
||||
Open Demo Project | file.openDemoProject
|
||||
[!mac] ---
|
||||
|
||||
@@ -379,9 +379,8 @@ fn save_and_open_roundtrip() {
|
||||
#[test]
|
||||
fn help_links_emit_urls() {
|
||||
let mut s = Session::default();
|
||||
let r = s.execute("help.discord", json!({})).unwrap();
|
||||
assert_eq!(r["url"], "https://discord.gg/artcraft");
|
||||
assert!(s.drain_events().iter().any(|e| matches!(e, crate::Event::OpenUrl(u) if u.contains("discord"))));
|
||||
s.execute("help.github", json!({})).unwrap();
|
||||
assert!(s.drain_events().iter().any(|e| matches!(e, crate::Event::OpenUrl(u) if u.contains("github"))));
|
||||
assert_eq!(s.execute("help.github", json!({})).unwrap()["url"], "https://github.com/storytold/effectcraft");
|
||||
}
|
||||
|
||||
|
||||
@@ -74,7 +74,7 @@ fn help_tutorials() {
|
||||
s.execute("help.onlineTutorials", json!({})).unwrap();
|
||||
s.execute("help.inAppTutorials", json!({})).unwrap();
|
||||
let ev = s.drain_events();
|
||||
assert!(ev.iter().any(|e| matches!(e, Event::OpenUrl(u) if u == crate::links::APP_PAGE)));
|
||||
assert!(ev.iter().any(|e| matches!(e, Event::OpenUrl(u) if u == crate::links::GITHUB)));
|
||||
assert!(ev.iter().any(|e| matches!(e, Event::Frontend { command, .. } if command == "help.inAppTutorials")));
|
||||
}
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ fn comp_marker_dialog_fields_and_undo() {
|
||||
let r = s
|
||||
.execute(
|
||||
"markers.set",
|
||||
json!({"index": 0, "time": 1.51, "duration": 0.5, "comment": "Intro", "chapter": "One", "url": "https://getartcraft.com", "frameTarget": "_blank",
|
||||
json!({"index": 0, "time": 1.51, "duration": 0.5, "comment": "Intro", "chapter": "One", "url": "https://example.com", "frameTarget": "_blank",
|
||||
"cuePoint": {"name": "cue", "navigation": true, "params": [["k", "v"]]}, "protected": true, "label": "Aqua"}),
|
||||
)
|
||||
.unwrap();
|
||||
@@ -25,7 +25,7 @@ fn comp_marker_dialog_fields_and_undo() {
|
||||
assert!((m["duration"].as_f64().unwrap() - 0.5).abs() < 1e-9);
|
||||
assert_eq!(m["comment"], "Intro");
|
||||
assert_eq!(m["chapter"], "One");
|
||||
assert_eq!(m["url"], "https://getartcraft.com");
|
||||
assert_eq!(m["url"], "https://example.com");
|
||||
assert_eq!(m["frameTarget"], "_blank");
|
||||
assert_eq!(m["cuePoint"]["name"], "cue");
|
||||
assert_eq!(m["cuePoint"]["navigation"], true);
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
//! The Tools bar: home, the tool slots, tool options, snapping, workspaces and the community
|
||||
//! buttons (Discord is always one click away).
|
||||
//! The Tools bar: home, the tool slots, tool options, snapping, workspaces and the project
|
||||
//! buttons.
|
||||
|
||||
use crate::i18n::{tr, tr_args};
|
||||
use egui::{Align2, Color32, Rect, Sense, Stroke, StrokeKind, pos2, vec2};
|
||||
use serde_json::json;
|
||||
|
||||
use crate::icons::{self, Icon};
|
||||
use crate::icons::Icon;
|
||||
use crate::state::Tool;
|
||||
use crate::theme::Tokens;
|
||||
use crate::widgets;
|
||||
@@ -182,32 +182,15 @@ pub fn show(app: &mut EffectcraftApp, ui: &mut egui::Ui, rect: Rect) {
|
||||
let label = p.text(pos2(snap.max.x + 4.0, cy), Align2::LEFT_CENTER, tr("Snapping"), Tokens::ui(12.0), t.text_dim);
|
||||
snapping_options(app, ui, Rect::from_min_size(pos2(label.max.x + 2.0, cy - 9.0), vec2(18.0, 18.0)));
|
||||
|
||||
// Right side: community buttons, workspaces.
|
||||
// Right side: project buttons, workspaces.
|
||||
let mut rx = rect.max.x - 10.0;
|
||||
// The pill fits its label (icon, gap, text) with even padding: it was a fixed 104 px with the
|
||||
// text at its left, which left a wide gap on the right (#581).
|
||||
let label = p.layout_no_wrap(tr("Discord").to_string(), Tokens::semibold(12.0), Color32::WHITE);
|
||||
let discord = Rect::from_min_max(pos2(rx - (10.0 + 14.0 + 6.0 + label.size().x + 12.0), cy - 13.0), pos2(rx, cy + 13.0));
|
||||
let dresp = ui.interact(discord, egui::Id::new("hdr-discord"), Sense::click());
|
||||
let dc = Color32::from_rgb(0x58, 0x65, 0xf2);
|
||||
p.rect_filled(discord, 13.0, if dresp.hovered() { dc.gamma_multiply(1.2) } else { dc });
|
||||
icons::paint(&p, Rect::from_center_size(pos2(discord.min.x + 17.0, cy), vec2(14.0, 14.0)), Icon::Chat, Color32::WHITE);
|
||||
p.galley(pos2(discord.min.x + 30.0, cy - label.size().y / 2.0), label, Color32::WHITE);
|
||||
app.auto.add("header.discord", discord, "Join the ArtCraft Discord");
|
||||
if dresp.on_hover_text(tr("Join the ArtCraft community on Discord")).clicked() {
|
||||
let _ = app.session.execute("help.discord", json!({}));
|
||||
}
|
||||
rx = discord.min.x - 6.0;
|
||||
for (id, icon, tip, cmd) in
|
||||
[("hdr-github", Icon::Code, "EffectCraft on GitHub", "help.github"), ("hdr-web", Icon::Globe, "EffectCraft on getartcraft.com", "help.appPage")]
|
||||
{
|
||||
let r = Rect::from_min_max(pos2(rx - 26.0, cy - 13.0), pos2(rx, cy + 13.0));
|
||||
if widgets::icon_button(ui, r, icon, false, &t, egui::Id::new(id)).on_hover_text(tip).clicked() {
|
||||
let _ = app.session.execute(cmd, json!({}));
|
||||
}
|
||||
app.auto.add(&format!("header.{}", &id[4..]), r, tip);
|
||||
rx = r.min.x - 4.0;
|
||||
let tip = "EffectCraft on GitHub";
|
||||
let r = Rect::from_min_max(pos2(rx - 26.0, cy - 13.0), pos2(rx, cy + 13.0));
|
||||
if widgets::icon_button(ui, r, Icon::Code, false, &t, egui::Id::new("hdr-github")).on_hover_text(tip).clicked() {
|
||||
let _ = app.session.execute("help.github", json!({}));
|
||||
}
|
||||
app.auto.add("header.github", r, tip);
|
||||
rx = r.min.x - 4.0;
|
||||
// Appearance: Sync with System, Light, Dark (a monitor, sun or moon), one click to the next.
|
||||
let (icon, mode) = match app.session.prefs.appearance.appearance_mode.as_str() {
|
||||
"auto" => (Icon::Monitor, tr("Sync with System")),
|
||||
@@ -654,20 +637,19 @@ fn ws_menu(app: &mut EffectcraftApp, ui: &mut egui::Ui) {
|
||||
}
|
||||
}
|
||||
|
||||
/// The ArtCraft mark as supplied in `docs/brand` (the README's and getartcraft.com's logo; used
|
||||
/// unmodified, see `docs/brand/LICENSE-brand.txt`).
|
||||
static ARTCRAFT_MARK: &[u8] = include_bytes!("../../../docs/brand/artcraft-mark.png");
|
||||
/// The EffectCraft app icon (`assets/app-icon`).
|
||||
static APP_MARK: &[u8] = include_bytes!("../../../assets/app-icon/hicolor/128x128/apps/ai.storyteller.effectcraft.png");
|
||||
|
||||
/// The ArtCraft mark in `r` (decoded once into a mipmapped texture, so it stays crisp from the
|
||||
/// The app mark in `r` (decoded once into a mipmapped texture, so it stays crisp from the
|
||||
/// 24 px Tools bar to the About dialog). Nothing is drawn if it can't be decoded.
|
||||
pub fn paint_logo(p: &egui::Painter, r: Rect) {
|
||||
let ctx = p.ctx();
|
||||
let id = egui::Id::new("artcraft-mark");
|
||||
let id = egui::Id::new("app-mark");
|
||||
let tex = ctx.data(|d| d.get_temp::<Option<egui::TextureHandle>>(id)).unwrap_or_else(|| {
|
||||
let tex = image::load_from_memory_with_format(ARTCRAFT_MARK, image::ImageFormat::Png).ok().map(|img| {
|
||||
let tex = image::load_from_memory_with_format(APP_MARK, image::ImageFormat::Png).ok().map(|img| {
|
||||
let img = img.to_rgba8();
|
||||
let ci = egui::ColorImage::from_rgba_unmultiplied([img.width() as usize, img.height() as usize], img.as_raw());
|
||||
ctx.load_texture("artcraft-mark", ci, egui::TextureOptions::LINEAR.with_mipmap_mode(Some(egui::TextureFilter::Linear)))
|
||||
ctx.load_texture("app-mark", ci, egui::TextureOptions::LINEAR.with_mipmap_mode(Some(egui::TextureFilter::Linear)))
|
||||
});
|
||||
ctx.data_mut(|d| d.insert_temp(id, tex.clone()));
|
||||
tex
|
||||
|
||||
@@ -875,10 +875,7 @@ const SIMPLIFIED_CHINESE: &[(&str, &str, &str)] = &[
|
||||
("help.systemReport", "System Compatibility Report...", "系统兼容性报告..."),
|
||||
("help.enableLogging", "Enable Logging", "启用日志记录"),
|
||||
("help.revealLogFile", "Reveal Logging File", "显示日志记录文件"),
|
||||
("help.discord", "Join the ArtCraft Discord...", "加入 ArtCraft 的 Discord 社区..."),
|
||||
("help.reportIssue", "Provide Feedback...", "提供反馈..."),
|
||||
("help.website", "ArtCraft Website", "ArtCraft 网站"),
|
||||
("help.appPage", "EffectCraft Home Page", "EffectCraft 主页"),
|
||||
("help.github", "EffectCraft on GitHub", "GitHub 上的 EffectCraft"),
|
||||
("file.openDemoProject", "Open Demo Project", "打开示例项目"),
|
||||
];
|
||||
@@ -1505,10 +1502,7 @@ const TRADITIONAL_CHINESE: &[(&str, &str, &str)] = &[
|
||||
("help.systemReport", "System Compatibility Report...", "系統相容性報告..."),
|
||||
("help.enableLogging", "Enable Logging", "啟用日誌記錄"),
|
||||
("help.revealLogFile", "Reveal Logging File", "顯示日誌檔案"),
|
||||
("help.discord", "Join the ArtCraft Discord...", "加入 ArtCraft 的 Discord 社群..."),
|
||||
("help.reportIssue", "Provide Feedback...", "提供意見..."),
|
||||
("help.website", "ArtCraft Website", "ArtCraft 網站"),
|
||||
("help.appPage", "EffectCraft Home Page", "EffectCraft 首頁"),
|
||||
("help.github", "EffectCraft on GitHub", "GitHub 上的 EffectCraft"),
|
||||
("file.openDemoProject", "Open Demo Project", "開啟範例專案"),
|
||||
];
|
||||
@@ -2132,10 +2126,7 @@ const JAPANESE: &[(&str, &str, &str)] = &[
|
||||
("help.systemReport", "System Compatibility Report...", "システム互換性レポート..."),
|
||||
("help.enableLogging", "Enable Logging", "ログ記録を有効化"),
|
||||
("help.revealLogFile", "Reveal Logging File", "ログファイルを表示"),
|
||||
("help.discord", "Join the ArtCraft Discord...", "ArtCraft Discordに参加..."),
|
||||
("help.reportIssue", "Provide Feedback...", "フィードバックを送信..."),
|
||||
("help.website", "ArtCraft Website", "ArtCraftウェブサイト"),
|
||||
("help.appPage", "EffectCraft Home Page", "EffectCraftホームページ"),
|
||||
("help.github", "EffectCraft on GitHub", "GitHubのEffectCraft"),
|
||||
("file.openDemoProject", "Open Demo Project", "デモプロジェクトを開く"),
|
||||
];
|
||||
@@ -2762,10 +2753,7 @@ const UKRAINIAN: &[(&str, &str, &str)] = &[
|
||||
("help.systemReport", "System Compatibility Report...", "Звіт про сумісність системи..."),
|
||||
("help.enableLogging", "Enable Logging", "Увімкнути журналювання"),
|
||||
("help.revealLogFile", "Reveal Logging File", "Показати файл журналу"),
|
||||
("help.discord", "Join the ArtCraft Discord...", "Приєднатися до Discord ArtCraft..."),
|
||||
("help.reportIssue", "Provide Feedback...", "Надіслати відгук..."),
|
||||
("help.website", "ArtCraft Website", "Вебсайт ArtCraft"),
|
||||
("help.appPage", "EffectCraft Home Page", "Домашня сторінка EffectCraft"),
|
||||
("help.github", "EffectCraft on GitHub", "EffectCraft на GitHub"),
|
||||
("file.openDemoProject", "Open Demo Project", "Відкрити демонстраційний проєкт"),
|
||||
];
|
||||
@@ -3393,10 +3381,7 @@ const SPANISH: &[(&str, &str, &str)] = &[
|
||||
("help.systemReport", "System Compatibility Report...", "Informe de compatibilidad del sistema..."),
|
||||
("help.enableLogging", "Enable Logging", "Habilitar registro"),
|
||||
("help.revealLogFile", "Reveal Logging File", "Mostrar archivo de registro"),
|
||||
("help.discord", "Join the ArtCraft Discord...", "Unirse al Discord de ArtCraft..."),
|
||||
("help.reportIssue", "Provide Feedback...", "Enviar comentarios..."),
|
||||
("help.website", "ArtCraft Website", "Sitio web de ArtCraft"),
|
||||
("help.appPage", "EffectCraft Home Page", "Página de inicio de EffectCraft"),
|
||||
("help.github", "EffectCraft on GitHub", "EffectCraft en GitHub"),
|
||||
("file.openDemoProject", "Open Demo Project", "Abrir proyecto de demostración"),
|
||||
];
|
||||
@@ -4022,10 +4007,7 @@ const PORTUGUESE: &[(&str, &str, &str)] = &[
|
||||
("help.systemReport", "System Compatibility Report...", "Relatório de compatibilidade do sistema..."),
|
||||
("help.enableLogging", "Enable Logging", "Ativar registro em log"),
|
||||
("help.revealLogFile", "Reveal Logging File", "Revelar arquivo de log"),
|
||||
("help.discord", "Join the ArtCraft Discord...", "Entrar no Discord do ArtCraft..."),
|
||||
("help.reportIssue", "Provide Feedback...", "Enviar comentários..."),
|
||||
("help.website", "ArtCraft Website", "Site do ArtCraft"),
|
||||
("help.appPage", "EffectCraft Home Page", "Página inicial do EffectCraft"),
|
||||
("help.github", "EffectCraft on GitHub", "EffectCraft no GitHub"),
|
||||
("file.openDemoProject", "Open Demo Project", "Abrir projeto de demonstração"),
|
||||
];
|
||||
|
||||
@@ -95,8 +95,8 @@ const JAPANESE: &[(&str, &str)] = &[
|
||||
("360 View Orientation", "360度ビューの方向"),
|
||||
("3:2 Pulldown: {}", "3:2プルダウン:{}"),
|
||||
(
|
||||
"A clean-room, open-source compositor for motion graphics and visual effects: native on macOS, Windows and Linux, and in the browser. Part of the ArtCraft family of creative apps.",
|
||||
"モーショングラフィックスとビジュアルエフェクト向けの、クリーンルーム方式で開発されたオープンソースのコンポジットソフトウェアです。macOS、Windows、Linuxでネイティブに動作し、ブラウザーでも使えます。ArtCraftクリエイティブアプリファミリーの一員です。",
|
||||
"A clean-room, open-source compositor for motion graphics and visual effects: native on macOS, Windows and Linux, and in the browser.",
|
||||
"モーショングラフィックスとビジュアルエフェクト向けの、クリーンルーム方式で開発されたオープンソースのコンポジットソフトウェアです。macOS、Windows、Linuxでネイティブに動作し、ブラウザーでも使えます。",
|
||||
),
|
||||
("About EffectCraft", "EffectCraftについて"),
|
||||
("About...", "情報..."),
|
||||
@@ -195,7 +195,6 @@ const JAPANESE: &[(&str, &str)] = &[
|
||||
("Delete selected project items", "選択したプロジェクト項目を削除"),
|
||||
("Delete this template", "このテンプレートを削除"),
|
||||
("Depth of Field", "被写界深度"),
|
||||
("Discord", "Discord"),
|
||||
("Distribute Layers:", "レイヤーの分布:"),
|
||||
("Don't Recover", "復元しない"),
|
||||
("Don't Save", "保存しない"),
|
||||
@@ -267,7 +266,6 @@ const JAPANESE: &[(&str, &str)] = &[
|
||||
("Install from File…", "ファイルからインストール…"),
|
||||
("Intensity", "強度"),
|
||||
("Inverted", "反転"),
|
||||
("Join the ArtCraft community on Discord", "DiscordでArtCraftコミュニティに参加"),
|
||||
("Key: {}", "キー:{}"),
|
||||
("LEARN", "学習"),
|
||||
("Label", "ラベル"),
|
||||
@@ -304,7 +302,6 @@ const JAPANESE: &[(&str, &str)] = &[
|
||||
("Models folder: {}", "モデルフォルダー:{}"),
|
||||
("Modifiers:", "修飾キー:"),
|
||||
("More", "その他"),
|
||||
("More ArtCraft apps", "ほかのArtCraftアプリ"),
|
||||
("More tutorials", "ほかのチュートリアル"),
|
||||
("Motion Blur", "モーションブラー"),
|
||||
("Motion Blur: {}", "モーションブラー:{}"),
|
||||
@@ -538,8 +535,8 @@ const SIMPLIFIED_CHINESE: &[(&str, &str)] = &[
|
||||
("360 View Orientation", "360 视图方向"),
|
||||
("3:2 Pulldown: {}", "3:2 折叠:{}"),
|
||||
(
|
||||
"A clean-room, open-source compositor for motion graphics and visual effects: native on macOS, Windows and Linux, and in the browser. Part of the ArtCraft family of creative apps.",
|
||||
"一款从零编写、开源的动态图形与视觉效果合成软件:原生支持 macOS、Windows 和 Linux,也可在浏览器中运行。属于 ArtCraft 创意应用家族。",
|
||||
"A clean-room, open-source compositor for motion graphics and visual effects: native on macOS, Windows and Linux, and in the browser.",
|
||||
"一款从零编写、开源的动态图形与视觉效果合成软件:原生支持 macOS、Windows 和 Linux,也可在浏览器中运行。",
|
||||
),
|
||||
("About EffectCraft", "关于 EffectCraft"),
|
||||
("About...", "关于..."),
|
||||
@@ -639,7 +636,6 @@ const SIMPLIFIED_CHINESE: &[(&str, &str)] = &[
|
||||
("Delete selected project items", "删除所选的项目项"),
|
||||
("Delete this template", "删除此模板"),
|
||||
("Depth of Field", "景深"),
|
||||
("Discord", "Discord"),
|
||||
("Distribute Layers:", "分布图层:"),
|
||||
("Don't Recover", "不恢复"),
|
||||
("Don't Save", "不保存"),
|
||||
@@ -712,7 +708,6 @@ const SIMPLIFIED_CHINESE: &[(&str, &str)] = &[
|
||||
("Install from File…", "从文件安装…"),
|
||||
("Intensity", "强度"),
|
||||
("Inverted", "反转"),
|
||||
("Join the ArtCraft community on Discord", "加入 ArtCraft 的 Discord 社区"),
|
||||
("Key: {}", "按键:{}"),
|
||||
("LEARN", "学习"),
|
||||
("Label", "标签"),
|
||||
@@ -751,7 +746,6 @@ const SIMPLIFIED_CHINESE: &[(&str, &str)] = &[
|
||||
("Models folder: {}", "模型文件夹:{}"),
|
||||
("Modifiers:", "修饰键:"),
|
||||
("More", "更多"),
|
||||
("More ArtCraft apps", "更多 ArtCraft 应用"),
|
||||
("More tutorials", "更多教程"),
|
||||
("Motion Blur", "运动模糊"),
|
||||
("Motion Blur: {}", "运动模糊:{}"),
|
||||
@@ -1016,7 +1010,6 @@ const SIMPLIFIED_CHINESE: &[(&str, &str)] = &[
|
||||
("Import PDF / Illustrator File", "导入 PDF / Illustrator 文件"),
|
||||
("Import Photoshop File", "导入 Photoshop 文件"),
|
||||
("Interpret Unlabeled Alpha As", "将未标记的 Alpha 解释为"),
|
||||
("Join the ArtCraft Discord", "加入 ArtCraft Discord"),
|
||||
("Mercury GPU Acceleration ({})", "Mercury GPU 加速({})"),
|
||||
("Mercury Software Only", "仅 Mercury 软件"),
|
||||
("OCIO (built-in ACES config)", "OCIO(内置 ACES 配置)"),
|
||||
@@ -1033,7 +1026,6 @@ const SIMPLIFIED_CHINESE: &[(&str, &str)] = &[
|
||||
("New Project", "新建项目"),
|
||||
("Open Project…", "打开项目…"),
|
||||
("Templates", "模板"),
|
||||
("EffectCraft home page", "EffectCraft 主页"),
|
||||
("EffectCraft on GitHub", "GitHub 上的 EffectCraft"),
|
||||
("Motion graphics and visual effects · version {}", "动态图形和视觉效果 · 版本 {}"),
|
||||
("New Composition", "新建合成"),
|
||||
@@ -1073,8 +1065,8 @@ const TRADITIONAL_CHINESE: &[(&str, &str)] = &[
|
||||
("360 View Orientation", "360 檢視方向"),
|
||||
("3:2 Pulldown: {}", "3:2 摺疊:{}"),
|
||||
(
|
||||
"A clean-room, open-source compositor for motion graphics and visual effects: native on macOS, Windows and Linux, and in the browser. Part of the ArtCraft family of creative apps.",
|
||||
"一款從零編寫、開源的動態圖形與視覺效果合成軟件:原生支援 macOS、Windows 和 Linux,也可在瀏覽器中執行。屬於 ArtCraft 創意應用家族。",
|
||||
"A clean-room, open-source compositor for motion graphics and visual effects: native on macOS, Windows and Linux, and in the browser.",
|
||||
"一款從零編寫、開源的動態圖形與視覺效果合成軟件:原生支援 macOS、Windows 和 Linux,也可在瀏覽器中執行。",
|
||||
),
|
||||
("About EffectCraft", "關於 EffectCraft"),
|
||||
("About...", "關於..."),
|
||||
@@ -1174,7 +1166,6 @@ const TRADITIONAL_CHINESE: &[(&str, &str)] = &[
|
||||
("Delete selected project items", "刪除所選的專案項"),
|
||||
("Delete this template", "刪除此範本"),
|
||||
("Depth of Field", "景深"),
|
||||
("Discord", "Discord"),
|
||||
("Distribute Layers:", "分佈圖層:"),
|
||||
("Don't Recover", "不恢復"),
|
||||
("Don't Save", "不儲存"),
|
||||
@@ -1247,7 +1238,6 @@ const TRADITIONAL_CHINESE: &[(&str, &str)] = &[
|
||||
("Install from File…", "從文件安裝…"),
|
||||
("Intensity", "強度"),
|
||||
("Inverted", "反轉"),
|
||||
("Join the ArtCraft community on Discord", "加入 ArtCraft 的 Discord 社區"),
|
||||
("Key: {}", "按鍵:{}"),
|
||||
("LEARN", "學習"),
|
||||
("Label", "標籤"),
|
||||
@@ -1286,7 +1276,6 @@ const TRADITIONAL_CHINESE: &[(&str, &str)] = &[
|
||||
("Models folder: {}", "模型資料夾:{}"),
|
||||
("Modifiers:", "修飾鍵:"),
|
||||
("More", "更多"),
|
||||
("More ArtCraft apps", "更多 ArtCraft 應用"),
|
||||
("More tutorials", "更多教學"),
|
||||
("Motion Blur", "運動模糊"),
|
||||
("Motion Blur: {}", "動態模糊:{}"),
|
||||
@@ -1546,7 +1535,6 @@ const TRADITIONAL_CHINESE: &[(&str, &str)] = &[
|
||||
("Import PDF / Illustrator File", "Import PDF / Illustrator File"),
|
||||
("Import Photoshop File", "Import Photoshop File"),
|
||||
("Interpret Unlabeled Alpha As", "Interpret Unlabeled Alpha As"),
|
||||
("Join the ArtCraft Discord", "加入 ArtCraft Discord"),
|
||||
("Mercury GPU Acceleration ({})", "Mercury GPU Acceleration ({})"),
|
||||
("Mercury Software Only", "Mercury Software Only"),
|
||||
("OCIO (built-in ACES config)", "OCIO (built-in ACES config)"),
|
||||
@@ -1563,7 +1551,6 @@ const TRADITIONAL_CHINESE: &[(&str, &str)] = &[
|
||||
("New Project", "新增專案"),
|
||||
("Open Project…", "開啟專案…"),
|
||||
("Templates", "範本"),
|
||||
("EffectCraft home page", "EffectCraft 首頁"),
|
||||
("EffectCraft on GitHub", "GitHub 上的 EffectCraft"),
|
||||
("Motion graphics and visual effects · version {}", "動態圖形與視覺效果 · 版本 {}"),
|
||||
("New Composition", "新增合成"),
|
||||
@@ -1605,8 +1592,8 @@ const UKRAINIAN: &[(&str, &str)] = &[
|
||||
("360 View Orientation", "Орієнтація огляду 360°"),
|
||||
("3:2 Pulldown: {}", "Перетворення кадрів 3:2: {}"),
|
||||
(
|
||||
"A clean-room, open-source compositor for motion graphics and visual effects: native on macOS, Windows and Linux, and in the browser. Part of the ArtCraft family of creative apps.",
|
||||
"Незалежно розроблена програма з відкритим кодом для компонування анімованої графіки та візуальних ефектів: працює на macOS, Windows і Linux, а також у браузері. Належить до родини творчих програм ArtCraft.",
|
||||
"A clean-room, open-source compositor for motion graphics and visual effects: native on macOS, Windows and Linux, and in the browser.",
|
||||
"Незалежно розроблена програма з відкритим кодом для компонування анімованої графіки та візуальних ефектів: працює на macOS, Windows і Linux, а також у браузері.",
|
||||
),
|
||||
("About EffectCraft", "Про EffectCraft"),
|
||||
("About...", "Про програму..."),
|
||||
@@ -1712,7 +1699,6 @@ const UKRAINIAN: &[(&str, &str)] = &[
|
||||
("Delete selected project items", "Видалити виділені елементи проєкту"),
|
||||
("Delete this template", "Видалити цей шаблон"),
|
||||
("Depth of Field", "Глибина різкості"),
|
||||
("Discord", "Discord"),
|
||||
("Distribute Layers:", "Розподілити шари:"),
|
||||
("Don't Recover", "Не відновлювати"),
|
||||
("Don't Save", "Не зберігати"),
|
||||
@@ -1785,7 +1771,6 @@ const UKRAINIAN: &[(&str, &str)] = &[
|
||||
("Install from File…", "Встановити з файлу…"),
|
||||
("Intensity", "Інтенсивність"),
|
||||
("Inverted", "Інвертовано"),
|
||||
("Join the ArtCraft community on Discord", "Приєднайтеся до спільноти ArtCraft у Discord"),
|
||||
("Key: {}", "Клавіша: {}"),
|
||||
("LEARN", "НАВЧАННЯ"),
|
||||
("Label", "Мітка"),
|
||||
@@ -1824,7 +1809,6 @@ const UKRAINIAN: &[(&str, &str)] = &[
|
||||
("Models folder: {}", "Тека моделей: {}"),
|
||||
("Modifiers:", "Модифікатори:"),
|
||||
("More", "Більше"),
|
||||
("More ArtCraft apps", "Інші програми ArtCraft"),
|
||||
("More tutorials", "Інші уроки"),
|
||||
("Motion Blur", "Розмиття руху"),
|
||||
("Motion Blur: {}", "Розмиття руху: {}"),
|
||||
|
||||
@@ -295,39 +295,17 @@ fn about_main(app: &mut EffectcraftApp, ui: &mut egui::Ui, t: &Tokens, cmd: &mut
|
||||
t.text_dim,
|
||||
);
|
||||
ui.add_space(12.0);
|
||||
ui.label(tr("A clean-room, open-source compositor for motion graphics and visual effects: native on macOS, Windows and Linux, and in the browser. Part of the ArtCraft family of creative apps."));
|
||||
ui.label(tr("A clean-room, open-source compositor for motion graphics and visual effects: native on macOS, Windows and Linux, and in the browser."));
|
||||
ui.add_space(14.0);
|
||||
let links: [(Icon, &str, &str, &'static str); 4] = [
|
||||
(Icon::Chat, "Join the ArtCraft Discord", effectcraft_engine::links::DISCORD, "help.discord"),
|
||||
(Icon::Globe, "ArtCraft website", effectcraft_engine::links::WEBSITE, "help.website"),
|
||||
(Icon::Sparkle, "EffectCraft home page", effectcraft_engine::links::APP_PAGE, "help.appPage"),
|
||||
(Icon::Code, "Source code on GitHub", effectcraft_engine::links::GITHUB, "help.github"),
|
||||
];
|
||||
let links: [(Icon, &str, &str, &'static str); 1] = [(Icon::Code, "Source code on GitHub", effectcraft_engine::links::GITHUB, "help.github")];
|
||||
for (icon, label, url, c) in links {
|
||||
let (r, resp) = ui.allocate_exact_size(vec2(ui.available_width(), 30.0), Sense::click());
|
||||
let p = ui.painter();
|
||||
let discord = c == "help.discord";
|
||||
p.rect_filled(
|
||||
r,
|
||||
6.0,
|
||||
if discord {
|
||||
Color32::from_rgb(0x58, 0x65, 0xf2)
|
||||
} else if resp.hovered() {
|
||||
t.hover
|
||||
} else {
|
||||
t.field_bg
|
||||
},
|
||||
);
|
||||
let foreground = if discord { Color32::WHITE } else { t.text };
|
||||
p.rect_filled(r, 6.0, if resp.hovered() { t.hover } else { t.field_bg });
|
||||
let foreground = t.text;
|
||||
icons::paint(p, Rect::from_center_size(pos2(r.min.x + 18.0, r.center().y), vec2(15.0, 15.0)), icon, foreground);
|
||||
p.text(pos2(r.min.x + 36.0, r.center().y), Align2::LEFT_CENTER, tr(label), Tokens::medium(12.5), foreground);
|
||||
p.text(
|
||||
pos2(r.max.x - 12.0, r.center().y),
|
||||
Align2::RIGHT_CENTER,
|
||||
url,
|
||||
Tokens::ui(11.0),
|
||||
if discord { Color32::from_white_alpha(200) } else { t.text_dim },
|
||||
);
|
||||
p.text(pos2(r.max.x - 12.0, r.center().y), Align2::RIGHT_CENTER, url, Tokens::ui(11.0), t.text_dim);
|
||||
app.auto.add(&format!("about.{c}"), r, label);
|
||||
if resp.clicked() {
|
||||
*cmd = Some(c);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//! The Home screen, laid out like After Effects' (shown over the whole workspace at launch, from
|
||||
//! the Tools bar's Home button and by the Learn workspace). A left rail holds New Project / Open
|
||||
//! Project, the Home / Templates / Learn pages and, at its foot, the ArtCraft community links.
|
||||
//! Project, the Home / Templates / Learn pages and, at its foot, the project links.
|
||||
//! The Home page welcomes you with quick-start tiles (New Composition, the demo project, Import,
|
||||
//! New from Template) over the recent projects (File ▸ Open Recent, from Settings): a filterable
|
||||
//! table with thumbnails and Name / Opened / Size / Kind columns. Templates is the New from
|
||||
@@ -270,16 +270,9 @@ fn rail_ui(app: &mut EffectcraftApp, ui: &mut egui::Ui, p: &egui::Painter, rail:
|
||||
}
|
||||
y += 38.0;
|
||||
}
|
||||
// Community links at the foot (below the pages when the window is short).
|
||||
let links = [
|
||||
(Icon::Chat, "Join the ArtCraft Discord", "help.discord"),
|
||||
(Icon::Globe, "getartcraft.com", "help.website"),
|
||||
(Icon::Globe, "EffectCraft home page", "help.appPage"),
|
||||
(Icon::Code, "EffectCraft on GitHub", "help.github"),
|
||||
];
|
||||
let sib = effectcraft_engine::links::SIBLINGS;
|
||||
let sib_rows = sib.len().div_ceil(2) as f32;
|
||||
let foot_h = 22.0 + links.len() as f32 * 30.0 + 22.0 + sib_rows * 26.0;
|
||||
// Project link at the foot (below the pages when the window is short).
|
||||
let links = [(Icon::Code, "EffectCraft on GitHub", "help.github")];
|
||||
let foot_h = 22.0 + links.len() as f32 * 30.0;
|
||||
let mut cy = (rail.max.y - 16.0 - foot_h).max(y + 16.0);
|
||||
p.line_segment([pos2(x0, cy - 10.0), pos2(x0 + w, cy - 10.0)], Stroke::new(1.0, t.separator));
|
||||
p.text(pos2(x0, cy + 6.0), Align2::LEFT_CENTER, tr("Community"), Tokens::semibold(12.0), t.text_dim);
|
||||
@@ -287,34 +280,17 @@ fn rail_ui(app: &mut EffectcraftApp, ui: &mut egui::Ui, p: &egui::Painter, rail:
|
||||
for (icon, label, cmd) in links {
|
||||
let r = Rect::from_min_size(pos2(x0, cy), vec2(w, 26.0));
|
||||
let resp = ui.interact(r, egui::Id::new(("home-link", cmd)), Sense::click());
|
||||
let discord = cmd == "help.discord";
|
||||
if discord {
|
||||
p.rect_filled(r, 13.0, Color32::from_rgb(0x58, 0x65, 0xf2));
|
||||
} else if resp.hovered() {
|
||||
if resp.hovered() {
|
||||
p.rect_filled(r, 13.0, t.hover);
|
||||
}
|
||||
let col = if discord { Color32::WHITE } else { t.text };
|
||||
icons::paint(p, Rect::from_center_size(pos2(r.min.x + 16.0, r.center().y), vec2(13.0, 13.0)), icon, col);
|
||||
p.text(pos2(r.min.x + 30.0, r.center().y), Align2::LEFT_CENTER, tr(label), Tokens::medium(12.0), col);
|
||||
icons::paint(p, Rect::from_center_size(pos2(r.min.x + 16.0, r.center().y), vec2(13.0, 13.0)), icon, t.text);
|
||||
p.text(pos2(r.min.x + 30.0, r.center().y), Align2::LEFT_CENTER, tr(label), Tokens::medium(12.0), t.text);
|
||||
app.auto.add(&format!("home.{cmd}"), r, label);
|
||||
if resp.clicked() {
|
||||
let _ = app.session.execute(cmd, json!({}));
|
||||
}
|
||||
cy += 30.0;
|
||||
}
|
||||
p.text(pos2(x0, cy + 8.0), Align2::LEFT_CENTER, tr("More ArtCraft apps"), Tokens::ui(11.0), t.text_faint);
|
||||
cy += 20.0;
|
||||
let sw = (w - 6.0) / 2.0;
|
||||
for (i, (name, slug)) in sib.iter().enumerate() {
|
||||
let r = Rect::from_min_size(pos2(x0 + (i % 2) as f32 * (sw + 6.0), cy + (i / 2) as f32 * 26.0), vec2(sw, 22.0));
|
||||
let resp = ui.interact(r, egui::Id::new(("sib", *slug)), Sense::click());
|
||||
p.rect_filled(r, 11.0, if resp.hovered() { t.hover } else { t.field_bg });
|
||||
p.text(r.center(), Align2::CENTER_CENTER, *name, Tokens::ui(11.0), t.text);
|
||||
app.auto.add(&format!("home.sibling.{slug}"), r, name);
|
||||
if resp.clicked() {
|
||||
let _ = app.session.execute("help.sibling", json!({"app": slug}));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// The Home page: the welcome, quick-start tiles and the recent projects table.
|
||||
@@ -569,7 +545,6 @@ mod tests {
|
||||
"home.file.open",
|
||||
"home.app.newComp",
|
||||
"home.file.openDemoProject",
|
||||
"home.help.discord",
|
||||
"home.help.github",
|
||||
"home.recent.0",
|
||||
"home.filter",
|
||||
|
||||
@@ -486,7 +486,7 @@ mod tests {
|
||||
assert_eq!(effectcraft_engine::color::Label::ALL[d.label].name(), "Blue");
|
||||
d.duration = 0.5;
|
||||
d.chapter = "Ch".into();
|
||||
d.url = "https://getartcraft.com".into();
|
||||
d.url = "https://example.com".into();
|
||||
d.frame_target = "_self".into();
|
||||
d.protected = true;
|
||||
d.cue = false;
|
||||
|
||||
@@ -225,7 +225,7 @@ fn theme_preview(ui: &mut egui::Ui, kind: ThemeKind, width: f32) {
|
||||
painter.rect_filled(rect, 3.0, p.app_bg);
|
||||
let bar = Rect::from_min_size(rect.min, vec2(rect.width(), 13.0));
|
||||
painter.rect_filled(bar, 0.0, p.header_bg);
|
||||
// The brand mark, the tools (the Selection tool is active) and the Discord pill.
|
||||
// The brand mark, the tools (the Selection tool is active).
|
||||
painter.rect_filled(Rect::from_min_size(bar.min + vec2(4.0, 3.0), vec2(7.0, 7.0)), 2.0, p.accent);
|
||||
for i in 0..7 {
|
||||
let c = if i == 0 { p.accent } else { p.icon };
|
||||
|
||||
@@ -37,17 +37,6 @@ fn click(h: &mut Harness<'_, EffectcraftApp>, id: &str) {
|
||||
h.run_steps(2);
|
||||
}
|
||||
|
||||
/// #581: the header's Discord pill fits its label with even padding (it was a fixed 104 px with
|
||||
/// the text at its left).
|
||||
#[test]
|
||||
fn discord_pill_fits_its_label() {
|
||||
let h = harness();
|
||||
let e = h.state().auto.find("header.discord").expect("the Discord pill").clone();
|
||||
let text = h.ctx.fonts_mut(|f| f.layout_no_wrap("Discord".into(), effectcraft_ui_egui::theme::Tokens::semibold(12.0), egui::Color32::WHITE).size().x);
|
||||
// Padding 10, the 14 px icon, a 6 px gap, the text, padding 12.
|
||||
assert!((e.rect[2] - (text + 42.0)).abs() < 0.5, "{} for a {text} px label", e.rect[2]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn window_menu_opens_the_new_panels() {
|
||||
let mut h = harness();
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
ArtCraft brand assets: license
|
||||
|
||||
The ArtCraft name, wordmark and mark (the "ArtCraft Marks"), including every file in this
|
||||
directory in every color, size and format, are owned by the ArtCraft Team. They are trademarks
|
||||
and are NOT open source. They are not covered by EffectCraft's MIT OR Apache-2.0 license, and nothing in
|
||||
that license, in NOTICE or in any other file of this repository grants any right to them.
|
||||
|
||||
Permission
|
||||
|
||||
The ArtCraft Team grants a limited, non-exclusive, non-transferable, revocable, royalty-free
|
||||
permission to use the ArtCraft Marks only:
|
||||
|
||||
1. as part of copies of this repository; and
|
||||
2. within EffectCraft itself, its documentation and its official builds, to identify EffectCraft as made
|
||||
by the ArtCraft team and community and to link to getartcraft.com and its community.
|
||||
|
||||
Conditions
|
||||
|
||||
The permission holds only while every one of these is true:
|
||||
|
||||
- The marks are used exactly as supplied in this directory. Do not redraw, recolor, crop,
|
||||
stretch, rotate, animate, outline or add effects to them, extract parts of them, or combine
|
||||
them with any other name, mark or artwork.
|
||||
- They are used only in the context of EffectCraft, and only to say that the ArtCraft team makes it.
|
||||
They must never suggest that the ArtCraft Team made, sponsors, endorses, certifies or supports
|
||||
any other product, service, fork, modified version, plug-in, organization or person.
|
||||
- Neither the marks nor the ArtCraft name appear in the name, logo, icon, domain, social media
|
||||
handle, app-store listing, advertising or marketing of anything other than EffectCraft.
|
||||
|
||||
Forks and modified versions
|
||||
|
||||
If you distribute or publish a modified version of EffectCraft, or any work derived from it, you must
|
||||
remove the ArtCraft Marks from it (or replace them with your own) and must not call it ArtCraft or
|
||||
present it as an ArtCraft product. You may say, in plain text, that your work is based on EffectCraft by
|
||||
the ArtCraft team. A fork kept only to propose changes back to this repository may keep the marks
|
||||
unchanged.
|
||||
|
||||
Everything else
|
||||
|
||||
Any use not expressly permitted here needs prior written permission from the ArtCraft Team
|
||||
(https://getartcraft.com/). The permission ends automatically for anyone who breaks these terms.
|
||||
All other rights are reserved.
|
||||
|
Before Width: | Height: | Size: 31 KiB |
@@ -1,8 +0,0 @@
|
||||
asset: artcraft-logo-white.png
|
||||
title: ArtCraft wordmark, light ink for dark backgrounds
|
||||
author: ArtCraft Team
|
||||
source: original work (first-party ArtCraft brand asset supplied by the ArtCraft Team)
|
||||
license: LicenseRef-ArtCraft-Trademark — ArtCraft name, wordmark and logos are trademarks of the ArtCraft Team, not open source and not covered by EffectCraft's MIT OR Apache-2.0 license; usable only unmodified and only in the context of EffectCraft, under docs/brand/LICENSE-brand.txt.
|
||||
license-file: docs/brand/LICENSE-brand.txt
|
||||
added: 2026-10-01 by Claude (agent) for Brandon Thomas
|
||||
notes: First-party ArtCraft brand mark owned by the ArtCraft Team, kept in docs/brand for the README and brand use: the one exception to the open-licence rule (AGENTS.md §1.8). Forks and modified versions must remove it (docs/brand/LICENSE-brand.txt).
|
||||
|
Before Width: | Height: | Size: 5.3 KiB |
@@ -1,8 +0,0 @@
|
||||
asset: artcraft-logo-white.svg
|
||||
title: ArtCraft wordmark, light ink for dark backgrounds
|
||||
author: ArtCraft Team
|
||||
source: original work (first-party ArtCraft brand asset supplied by the ArtCraft Team)
|
||||
license: LicenseRef-ArtCraft-Trademark — ArtCraft name, wordmark and logos are trademarks of the ArtCraft Team, not open source and not covered by EffectCraft's MIT OR Apache-2.0 license; usable only unmodified and only in the context of EffectCraft, under docs/brand/LICENSE-brand.txt.
|
||||
license-file: docs/brand/LICENSE-brand.txt
|
||||
added: 2026-10-01 by Claude (agent) for Brandon Thomas
|
||||
notes: First-party ArtCraft brand mark owned by the ArtCraft Team, kept in docs/brand for the README and brand use: the one exception to the open-licence rule (AGENTS.md §1.8). Forks and modified versions must remove it (docs/brand/LICENSE-brand.txt).
|
||||
|
Before Width: | Height: | Size: 31 KiB |
@@ -1,8 +0,0 @@
|
||||
asset: artcraft-logo.png
|
||||
title: ArtCraft wordmark (symbol + "ARTCRAFT"), dark ink for light backgrounds
|
||||
author: ArtCraft Team
|
||||
source: original work (first-party ArtCraft brand asset supplied by the ArtCraft Team)
|
||||
license: LicenseRef-ArtCraft-Trademark — ArtCraft name, wordmark and logos are trademarks of the ArtCraft Team, not open source and not covered by EffectCraft's MIT OR Apache-2.0 license; usable only unmodified and only in the context of EffectCraft, under docs/brand/LICENSE-brand.txt.
|
||||
license-file: docs/brand/LICENSE-brand.txt
|
||||
added: 2026-10-01 by Claude (agent) for Brandon Thomas
|
||||
notes: First-party ArtCraft brand mark owned by the ArtCraft Team, kept in docs/brand for the README and brand use: the one exception to the open-licence rule (AGENTS.md §1.8). Forks and modified versions must remove it (docs/brand/LICENSE-brand.txt).
|
||||
|
Before Width: | Height: | Size: 5.3 KiB |
@@ -1,8 +0,0 @@
|
||||
asset: artcraft-logo.svg
|
||||
title: ArtCraft wordmark (symbol + "ARTCRAFT"), dark ink for light backgrounds
|
||||
author: ArtCraft Team
|
||||
source: original work (first-party ArtCraft brand asset supplied by the ArtCraft Team)
|
||||
license: LicenseRef-ArtCraft-Trademark — ArtCraft name, wordmark and logos are trademarks of the ArtCraft Team, not open source and not covered by EffectCraft's MIT OR Apache-2.0 license; usable only unmodified and only in the context of EffectCraft, under docs/brand/LICENSE-brand.txt.
|
||||
license-file: docs/brand/LICENSE-brand.txt
|
||||
added: 2026-10-01 by Claude (agent) for Brandon Thomas
|
||||
notes: First-party ArtCraft brand mark owned by the ArtCraft Team, kept in docs/brand for the README and brand use: the one exception to the open-licence rule (AGENTS.md §1.8). Forks and modified versions must remove it (docs/brand/LICENSE-brand.txt).
|
||||
|
Before Width: | Height: | Size: 26 KiB |
@@ -1,8 +0,0 @@
|
||||
asset: artcraft-mark-black.png
|
||||
title: ArtCraft symbol ("A" mark), black
|
||||
author: ArtCraft Team
|
||||
source: original work (first-party ArtCraft brand asset supplied by the ArtCraft Team)
|
||||
license: LicenseRef-ArtCraft-Trademark — ArtCraft name, wordmark and logos are trademarks of the ArtCraft Team, not open source and not covered by EffectCraft's MIT OR Apache-2.0 license; usable only unmodified and only in the context of EffectCraft, under docs/brand/LICENSE-brand.txt.
|
||||
license-file: docs/brand/LICENSE-brand.txt
|
||||
added: 2026-10-01 by Claude (agent) for Brandon Thomas
|
||||
notes: First-party ArtCraft brand mark owned by the ArtCraft Team, kept in docs/brand for the README and brand use: the one exception to the open-licence rule (AGENTS.md §1.8). Forks and modified versions must remove it (docs/brand/LICENSE-brand.txt).
|
||||
@@ -1,4 +0,0 @@
|
||||
<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>
|
||||
|
Before Width: | Height: | Size: 341 B |
@@ -1,8 +0,0 @@
|
||||
asset: artcraft-mark-black.svg
|
||||
title: ArtCraft symbol ("A" mark), black
|
||||
author: ArtCraft Team
|
||||
source: original work (first-party ArtCraft brand asset supplied by the ArtCraft Team)
|
||||
license: LicenseRef-ArtCraft-Trademark — ArtCraft name, wordmark and logos are trademarks of the ArtCraft Team, not open source and not covered by EffectCraft's MIT OR Apache-2.0 license; usable only unmodified and only in the context of EffectCraft, under docs/brand/LICENSE-brand.txt.
|
||||
license-file: docs/brand/LICENSE-brand.txt
|
||||
added: 2026-10-01 by Claude (agent) for Brandon Thomas
|
||||
notes: First-party ArtCraft brand mark owned by the ArtCraft Team, kept in docs/brand for the README and brand use: the one exception to the open-licence rule (AGENTS.md §1.8). Forks and modified versions must remove it (docs/brand/LICENSE-brand.txt).
|
||||
|
Before Width: | Height: | Size: 24 KiB |
@@ -1,8 +0,0 @@
|
||||
asset: artcraft-mark.png
|
||||
title: ArtCraft symbol ("A" mark), blue
|
||||
author: ArtCraft Team
|
||||
source: original work (first-party ArtCraft brand asset supplied by the ArtCraft Team)
|
||||
license: LicenseRef-ArtCraft-Trademark — ArtCraft name, wordmark and logos are trademarks of the ArtCraft Team, not open source and not covered by EffectCraft's MIT OR Apache-2.0 license; usable only unmodified and only in the context of EffectCraft, under docs/brand/LICENSE-brand.txt.
|
||||
license-file: docs/brand/LICENSE-brand.txt
|
||||
added: 2026-10-01 by Claude (agent) for Brandon Thomas
|
||||
notes: First-party ArtCraft brand mark owned by the ArtCraft Team, kept in docs/brand for the README and brand use: the one exception to the open-licence rule (AGENTS.md §1.8). Forks and modified versions must remove it (docs/brand/LICENSE-brand.txt).
|
||||
@@ -1,4 +0,0 @@
|
||||
<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>
|
||||
|
Before Width: | Height: | Size: 341 B |
@@ -1,8 +0,0 @@
|
||||
asset: artcraft-mark.svg
|
||||
title: ArtCraft symbol ("A" mark), blue
|
||||
author: ArtCraft Team
|
||||
source: original work (first-party ArtCraft brand asset supplied by the ArtCraft Team)
|
||||
license: LicenseRef-ArtCraft-Trademark — ArtCraft name, wordmark and logos are trademarks of the ArtCraft Team, not open source and not covered by EffectCraft's MIT OR Apache-2.0 license; usable only unmodified and only in the context of EffectCraft, under docs/brand/LICENSE-brand.txt.
|
||||
license-file: docs/brand/LICENSE-brand.txt
|
||||
added: 2026-10-01 by Claude (agent) for Brandon Thomas
|
||||
notes: First-party ArtCraft brand mark owned by the ArtCraft Team, kept in docs/brand for the README and brand use: the one exception to the open-licence rule (AGENTS.md §1.8). Forks and modified versions must remove it (docs/brand/LICENSE-brand.txt).
|
||||
@@ -252,7 +252,7 @@ agent-generated maintainer replies:
|
||||
list of Mac issues, so people are trying it on real work.
|
||||
- **Open issues (136):** ≈ 95 are core-path bugs (masks, keyframes, timeline, preview, audio,
|
||||
text, render, crashes; this includes 15 community `fix(...)` proposals), ≈ 40 are feature
|
||||
requests or niche (plug-in hosting, OpenFX, ffmpeg export, Discord presence, Store listing,
|
||||
requests or niche (plug-in hosting, OpenFX, ffmpeg export, Store listing,
|
||||
rigging tools). Mostly core-path bugs, which matches the discounts above.
|
||||
|
||||
## Out of scope by design
|
||||
@@ -828,7 +828,7 @@ meanwhile. Footage, solids, proxies and the project settings are hashed by value
|
||||
states are kept, so a long drag doesn't hold on to every intermediate state. The disk cache's
|
||||
content key now also covers proxies and Use Proxy.
|
||||
|
||||
Since (M13.30–M13.31): the Tools bar and About dialog carry the ArtCraft mark. The
|
||||
Since (M13.30–M13.31): the Tools bar and About dialog carry the app mark. The
|
||||
Home screen is laid out like After Effects' and covers the whole workspace. A left rail holds New
|
||||
Project / Open Project, the Home, Templates and Learn pages and, at its foot, the community
|
||||
links. The Home page has a "Welcome to EffectCraft" heading, quick-start tiles (New Composition,
|
||||
|
||||
@@ -20,10 +20,10 @@
|
||||
<launchable type="desktop-id">ai.storyteller.effectcraft.desktop</launchable>
|
||||
<icon type="stock">ai.storyteller.effectcraft</icon>
|
||||
<!-- Only url types known to appstream 0.15 (Ubuntu 22.04, where CI validates): no vcs-browser. -->
|
||||
<url type="homepage">https://getartcraft.com/apps/effectcraft</url>
|
||||
<url type="homepage">https://github.com/storytold/effectcraft</url>
|
||||
<url type="bugtracker">https://github.com/storytold/effectcraft/issues</url>
|
||||
<url type="help">https://github.com/storytold/effectcraft</url>
|
||||
<url type="contact">https://discord.gg/artcraft</url>
|
||||
<url type="contact">https://github.com/storytold/effectcraft/issues</url>
|
||||
<categories>
|
||||
<category>Graphics</category>
|
||||
<category>RasterGraphics</category>
|
||||
|
||||
@@ -14,7 +14,7 @@ section: graphics
|
||||
priority: optional
|
||||
maintainer: ${EFFECTCRAFT_MAINTAINER}
|
||||
vendor: Learning Machines LLC
|
||||
homepage: https://getartcraft.com/apps/effectcraft
|
||||
homepage: https://github.com/storytold/effectcraft
|
||||
license: MIT OR Apache-2.0
|
||||
description: |-
|
||||
Open-source motion graphics and visual effects compositor.
|
||||
|
||||
@@ -27,9 +27,9 @@
|
||||
|
||||
<Icon Id="EffectcraftIcon.ico" SourceFile="$(var.IconPath)" />
|
||||
<Property Id="ARPPRODUCTICON" Value="EffectcraftIcon.ico" />
|
||||
<Property Id="ARPURLINFOABOUT" Value="https://getartcraft.com/apps/effectcraft" />
|
||||
<Property Id="ARPURLUPDATEINFO" Value="https://getartcraft.com/apps/effectcraft" />
|
||||
<Property Id="ARPHELPLINK" Value="https://discord.gg/artcraft" />
|
||||
<Property Id="ARPURLINFOABOUT" Value="https://github.com/storytold/effectcraft" />
|
||||
<Property Id="ARPURLUPDATEINFO" Value="https://github.com/storytold/effectcraft" />
|
||||
<Property Id="ARPHELPLINK" Value="https://github.com/storytold/effectcraft/issues" />
|
||||
|
||||
<!-- An upgrade, repair or silent reinstall goes where the installed copy already is: the App Paths
|
||||
"Path" value written below, or for releases before this installer change (no Path value; they
|
||||
|
||||