Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 60f15e5c72 | |||
| 874f7ded26 | |||
| 3d8fb0078e | |||
| 701f78ea2e | |||
| 25ef65c81e |
@@ -0,0 +1,17 @@
|
||||
# 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 ^crates/ui-egui/locales/.*\.json$ :: \s*".*(?:ArtCraft|Discord)
|
||||
dropline ^assets/ATTRIBUTION\.md$ :: \|\s*`docs/brand/
|
||||
sub (?s)\nThe ArtCraft name, wordmark and logos in docs/brand/.*?LICENSE-brand\.txt\.\n =>
|
||||
sub (?s)- \*\*Exception: `docs/brand/`\.\*\*.*?derive from them\.\n =>
|
||||
sub drawn in ArtCraft\) => drawn by hand)
|
||||
sub made in ArtCraft \( => drawn by hand (
|
||||
sub owner in ArtCraft \(no => owner, drawn by hand (no
|
||||
sub https://getartcraft\.com/apps/lightcraft => https://github.com/storytold/lightcraft
|
||||
sub get it from getartcraft\.com/apps/photocraft => get it from github.com/storytold/photocraft
|
||||
sub Get it from getartcraft\.com/apps/photocraft => Get it from github.com/storytold/photocraft
|
||||
sub https://discord\.gg/artcraft => https://github.com/storytold/lightcraft/issues
|
||||
forbid (?i)artcraft(?! Team and the LightCraft contributors)
|
||||
forbid (?i)discord
|
||||
@@ -0,0 +1,3 @@
|
||||
[submodule "tools/craft-skills"]
|
||||
path = tools/craft-skills
|
||||
url = https://git.marcospaulo.dev.br/storytold/craft-skills.git
|
||||
@@ -74,7 +74,6 @@ of it. Full standard: `../craftrules/standards/never-crash.md`
|
||||
text, because nearly every OFL Chinese face derives from it. Use it unmodified under its OFL; this does not open the
|
||||
door to Source Han under Adobe's name or to any other Adobe asset.
|
||||
- Every asset in the repository must be one of: **our own original work** (e.g. icons drawn in code as vectors, procedurally generated demo photos), **public domain / CC0**, **Creative Commons** (CC-BY / CC-BY-SA with attribution honoured), **OFL** (fonts), or **permissive open-source** (MIT/Apache-2.0/BSD/ISC) — or contributed by a person who created the asset and licenses it openly.
|
||||
- **Exception: `docs/brand/`.** The ArtCraft name, wordmark and logos there are ArtCraft Team trademarks, not open source and not covered by LightCraft's MIT OR Apache-2.0 licence (`LICENSE-MIT`, `LICENSE-APACHE`, `NOTICE`); their terms are in `docs/brand/LICENSE-brand.txt`. Use them only unmodified and never redraw, recolour or derive from them.
|
||||
- **Every asset must have an entry in `assets/ATTRIBUTION.md`** (path, title, author/creator, source URL or "original work", licence, date added, modifications) and its licence text when required (e.g. `assets/fonts/OFL-*.txt`). Add the entry in the same commit as the asset. Assets without an attribution entry must not be committed.
|
||||
- **Fonts live in [storytold/craft-fonts](https://github.com/storytold/craft-fonts), never in this repo.** Don't commit
|
||||
font files here (Inter, already in `assets/fonts/`, is the one exception); add new fonts to craft-fonts. LightCraft
|
||||
|
||||
@@ -78,7 +78,6 @@ of it. Full standard: `../craftrules/standards/never-crash.md`
|
||||
text, because nearly every OFL Chinese face derives from it. Use it unmodified under its OFL; this does not open the
|
||||
door to Source Han under Adobe's name or to any other Adobe asset.
|
||||
- Every asset in the repository must be one of: **our own original work** (e.g. icons drawn in code as vectors, procedurally generated demo photos), **public domain / CC0**, **Creative Commons** (CC-BY / CC-BY-SA with attribution honoured), **OFL** (fonts), or **permissive open-source** (MIT/Apache-2.0/BSD/ISC) — or contributed by a person who created the asset and licenses it openly.
|
||||
- **Exception: `docs/brand/`.** The ArtCraft name, wordmark and logos there are ArtCraft Team trademarks, not open source and not covered by LightCraft's MIT OR Apache-2.0 licence (`LICENSE-MIT`, `LICENSE-APACHE`, `NOTICE`); their terms are in `docs/brand/LICENSE-brand.txt`. Use them only unmodified and never redraw, recolour or derive from them.
|
||||
- **Every asset must have an entry in `assets/ATTRIBUTION.md`** (path, title, author/creator, source URL or "original work", licence, date added, modifications) and its licence text when required (e.g. `assets/fonts/OFL-*.txt`). Add the entry in the same commit as the asset. Assets without an attribution entry must not be committed.
|
||||
- **Fonts live in [storytold/craft-fonts](https://github.com/storytold/craft-fonts), never in this repo.** Don't commit
|
||||
font files here (Inter, already in `assets/fonts/`, is the one exception); add new fonts to craft-fonts. LightCraft
|
||||
|
||||
@@ -1075,7 +1075,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "craft-ui"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/storytold/craft-libs?rev=5c874d51eeb3de70e735c8ce87a59a7dedd47675#5c874d51eeb3de70e735c8ce87a59a7dedd47675"
|
||||
source = "git+https://git.marcospaulo.dev.br/masi/craft-libs?rev=22544b6d619d4f16779b8bdfa3f0b642a86fc065#22544b6d619d4f16779b8bdfa3f0b642a86fc065"
|
||||
dependencies = [
|
||||
"egui",
|
||||
"serde",
|
||||
@@ -3073,7 +3073,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "lightcraft"
|
||||
version = "0.6.0"
|
||||
version = "0.7.2"
|
||||
dependencies = [
|
||||
"eframe",
|
||||
"egui",
|
||||
@@ -3097,7 +3097,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "lightcraft-catalog"
|
||||
version = "0.6.0"
|
||||
version = "0.7.2"
|
||||
dependencies = [
|
||||
"crc32fast",
|
||||
"lightcraft-develop",
|
||||
@@ -3114,7 +3114,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "lightcraft-cli"
|
||||
version = "0.6.0"
|
||||
version = "0.7.2"
|
||||
dependencies = [
|
||||
"dhat",
|
||||
"lightcraft-codecs",
|
||||
@@ -3130,7 +3130,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "lightcraft-codecs"
|
||||
version = "0.6.0"
|
||||
version = "0.7.2"
|
||||
dependencies = [
|
||||
"avif-serialize",
|
||||
"bytemuck",
|
||||
@@ -3159,7 +3159,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "lightcraft-color"
|
||||
version = "0.6.0"
|
||||
version = "0.7.2"
|
||||
dependencies = [
|
||||
"lightcraft-geom",
|
||||
"proptest",
|
||||
@@ -3168,7 +3168,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "lightcraft-denoise"
|
||||
version = "0.6.0"
|
||||
version = "0.7.2"
|
||||
dependencies = [
|
||||
"faer-core",
|
||||
"lightcraft-denoise-core",
|
||||
@@ -3185,7 +3185,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "lightcraft-denoise-core"
|
||||
version = "0.6.0"
|
||||
version = "0.7.2"
|
||||
dependencies = [
|
||||
"lightcraft-raster",
|
||||
"miniz_oxide 0.8.9",
|
||||
@@ -3200,7 +3200,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "lightcraft-develop"
|
||||
version = "0.6.0"
|
||||
version = "0.7.2"
|
||||
dependencies = [
|
||||
"lightcraft-color",
|
||||
"lightcraft-geom",
|
||||
@@ -3212,7 +3212,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "lightcraft-engine"
|
||||
version = "0.6.0"
|
||||
version = "0.7.2"
|
||||
dependencies = [
|
||||
"ab_glyph",
|
||||
"harfrust",
|
||||
@@ -3252,7 +3252,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "lightcraft-faces"
|
||||
version = "0.6.0"
|
||||
version = "0.7.2"
|
||||
dependencies = [
|
||||
"matrixmultiply",
|
||||
"ndarray",
|
||||
@@ -3266,7 +3266,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "lightcraft-fetch"
|
||||
version = "0.6.0"
|
||||
version = "0.7.2"
|
||||
dependencies = [
|
||||
"log",
|
||||
"rustls",
|
||||
@@ -3277,7 +3277,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "lightcraft-geocode"
|
||||
version = "0.6.0"
|
||||
version = "0.7.2"
|
||||
dependencies = [
|
||||
"miniz_oxide 0.8.9",
|
||||
"serde",
|
||||
@@ -3285,7 +3285,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "lightcraft-geom"
|
||||
version = "0.6.0"
|
||||
version = "0.7.2"
|
||||
dependencies = [
|
||||
"proptest",
|
||||
"serde",
|
||||
@@ -3293,7 +3293,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "lightcraft-gpu"
|
||||
version = "0.6.0"
|
||||
version = "0.7.2"
|
||||
dependencies = [
|
||||
"bytemuck",
|
||||
"lightcraft-color",
|
||||
@@ -3311,7 +3311,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "lightcraft-heif"
|
||||
version = "0.6.0"
|
||||
version = "0.7.2"
|
||||
dependencies = [
|
||||
"heic-rs",
|
||||
"rayon",
|
||||
@@ -3319,14 +3319,14 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "lightcraft-inpaint"
|
||||
version = "0.6.0"
|
||||
version = "0.7.2"
|
||||
dependencies = [
|
||||
"rayon",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "lightcraft-lensdb"
|
||||
version = "0.6.0"
|
||||
version = "0.7.2"
|
||||
dependencies = [
|
||||
"lightcraft-develop",
|
||||
"lightcraft-geom",
|
||||
@@ -3335,7 +3335,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "lightcraft-mcp"
|
||||
version = "0.6.0"
|
||||
version = "0.7.2"
|
||||
dependencies = [
|
||||
"lightcraft-codecs",
|
||||
"lightcraft-engine",
|
||||
@@ -3346,7 +3346,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "lightcraft-merge"
|
||||
version = "0.6.0"
|
||||
version = "0.7.2"
|
||||
dependencies = [
|
||||
"lightcraft-codecs",
|
||||
"lightcraft-color",
|
||||
@@ -3362,7 +3362,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "lightcraft-meta"
|
||||
version = "0.6.0"
|
||||
version = "0.7.2"
|
||||
dependencies = [
|
||||
"lightcraft-geom",
|
||||
"lightcraft-tiff",
|
||||
@@ -3374,7 +3374,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "lightcraft-pipeline"
|
||||
version = "0.6.0"
|
||||
version = "0.7.2"
|
||||
dependencies = [
|
||||
"image",
|
||||
"lightcraft-color",
|
||||
@@ -3392,7 +3392,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "lightcraft-preview"
|
||||
version = "0.6.0"
|
||||
version = "0.7.2"
|
||||
dependencies = [
|
||||
"jpeg-encoder",
|
||||
"lightcraft-raster",
|
||||
@@ -3404,7 +3404,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "lightcraft-raster"
|
||||
version = "0.6.0"
|
||||
version = "0.7.2"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"lightcraft-color",
|
||||
@@ -3416,7 +3416,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "lightcraft-raw"
|
||||
version = "0.6.0"
|
||||
version = "0.7.2"
|
||||
dependencies = [
|
||||
"jpeg-encoder",
|
||||
"jxl-oxide",
|
||||
@@ -3438,7 +3438,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "lightcraft-scenes"
|
||||
version = "0.6.0"
|
||||
version = "0.7.2"
|
||||
dependencies = [
|
||||
"image",
|
||||
"lightcraft-color",
|
||||
@@ -3449,7 +3449,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "lightcraft-segment"
|
||||
version = "0.6.0"
|
||||
version = "0.7.2"
|
||||
dependencies = [
|
||||
"candle-core",
|
||||
"candle-nn",
|
||||
@@ -3462,11 +3462,11 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "lightcraft-sysmem"
|
||||
version = "0.6.0"
|
||||
version = "0.7.2"
|
||||
|
||||
[[package]]
|
||||
name = "lightcraft-tiff"
|
||||
version = "0.6.0"
|
||||
version = "0.7.2"
|
||||
dependencies = [
|
||||
"proptest",
|
||||
"serde",
|
||||
@@ -3475,7 +3475,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "lightcraft-ui-egui"
|
||||
version = "0.6.0"
|
||||
version = "0.7.2"
|
||||
dependencies = [
|
||||
"craft-ui",
|
||||
"egui",
|
||||
@@ -3502,7 +3502,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "lightcraft-web"
|
||||
version = "0.6.0"
|
||||
version = "0.7.2"
|
||||
dependencies = [
|
||||
"crc32fast",
|
||||
"eframe",
|
||||
@@ -6972,7 +6972,7 @@ checksum = "e450f9b2ed1dff33c94c12589a87338689467b9c4f5d8a5710bd09a847d2c8a7"
|
||||
|
||||
[[package]]
|
||||
name = "xtask"
|
||||
version = "0.6.0"
|
||||
version = "0.7.2"
|
||||
dependencies = [
|
||||
"brotli",
|
||||
"flate2",
|
||||
|
||||
@@ -3,14 +3,14 @@ resolver = "3"
|
||||
members = ["crates/*", "apps/*", "xtask"]
|
||||
|
||||
[workspace.package]
|
||||
version = "0.6.0"
|
||||
version = "0.7.2"
|
||||
edition = "2024"
|
||||
license = "MIT OR Apache-2.0"
|
||||
rust-version = "1.90"
|
||||
repository = "https://github.com/storytold/lightcraft"
|
||||
|
||||
[workspace.dependencies]
|
||||
craft-ui = { git = "https://github.com/storytold/craft-libs", rev = "5c874d51eeb3de70e735c8ce87a59a7dedd47675", features = ["serde"] }
|
||||
craft-ui = { git = "https://git.marcospaulo.dev.br/masi/craft-libs", rev = "22544b6d619d4f16779b8bdfa3f0b642a86fc065", features = ["serde"] }
|
||||
# internal
|
||||
lightcraft-denoise-core = { path = "crates/denoise-core" }
|
||||
lightcraft-denoise = { path = "crates/denoise", default-features = false }
|
||||
|
||||
@@ -3,10 +3,6 @@ Copyright (c) 2026 ArtCraft Team and the LightCraft 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">LightCraft</h1>
|
||||
|
||||
<h3 align="center">Your photos. Your pixels. Your machine.</h3>
|
||||
@@ -30,16 +20,6 @@
|
||||
<a href="ROADMAP.md"><img alt="Status: young and moving fast" src="https://img.shields.io/badge/status-young%20%26%20moving%20fast-f2a516?style=flat-square"></a>
|
||||
</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/lightcraft"><b>LightCraft 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">
|
||||
@@ -48,10 +28,6 @@
|
||||
<sub><i>Ansel Adams, "The Tetons and the Snake River" (1942). Public domain, U.S. National Archives. Developed in LightCraft.</i></sub>
|
||||
</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="#edit-like-you-mean-it">Editing</a> ·
|
||||
<a href="#color-grading-the-cinematic-way">Color grading</a> ·
|
||||
@@ -452,14 +428,11 @@ Humans and agents follow the same rules, so read [AGENTS.md](AGENTS.md) first. T
|
||||
`unsafe`, checked indexing on anything derived from input, and a regression test with every crash fix. Details in
|
||||
[AGENTS.md](AGENTS.md#never-crash-outranks-feature-work).
|
||||
|
||||
Questions, ideas or a bug you'd like to talk through first? Bring them to [Discord](https://discord.gg/artcraft).
|
||||
|
||||
<br>
|
||||
|
||||
## Downloads
|
||||
|
||||
**New to LightCraft?** Download it from the [LightCraft page on getartcraft.com](https://getartcraft.com/apps/lightcraft). That's the easiest way to install it.
|
||||
|
||||
**Want a specific build or format?** On GitHub, the [latest release](https://github.com/storytold/lightcraft/releases/latest) has every build listed below, and [all releases](https://github.com/storytold/lightcraft/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.
|
||||
|
||||
### Windows
|
||||
@@ -513,42 +486,18 @@ windows file drag-and-drop; set `LIGHTCRAFT_WAYLAND=1` to use native Wayland (sh
|
||||
## The Crafting Apps
|
||||
|
||||
LightCraft 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
|
||||
[storytold](https://github.com/storytold) team, 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 · you are here** | [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 | [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/lightcraft">LightCraft</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 · you are here** | [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 | [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) |
|
||||
|
||||
<br>
|
||||
|
||||
@@ -567,18 +516,8 @@ Inter (SIL OFL 1.1). Builds made with [craft-fonts](https://github.com/storytold
|
||||
also embed its Chinese and Japanese fonts (Noto Sans CJK SC, BIZ UDPGothic, BIZ UDMincho, Shippori Mincho; SIL OFL 1.1), listed in its
|
||||
[ATTRIBUTION.md](https://github.com/storytold/craft-fonts/blob/main/ATTRIBUTION.md). All icons are original.
|
||||
|
||||
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 LightCraft, 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. LightCraft 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%2Flightcraft&type=date&legend=top-left)
|
||||
|
||||
@@ -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">LightCraft</h1>
|
||||
|
||||
<h3 align="center">Your photos. Your pixels. Your machine.</h3>
|
||||
@@ -30,16 +20,6 @@
|
||||
<a href="ROADMAP.md"><img alt="Status: young and moving fast" src="https://img.shields.io/badge/status-young%20%26%20moving%20fast-f2a516?style=flat-square"></a>
|
||||
</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/lightcraft"><b>getartcraft.com 上的 LightCraft</b></a> ·
|
||||
<a href="https://getartcraft.com/">ArtCraft</a> ·
|
||||
<a href="https://getartcraft.com/apps">全部 Crafting Apps</a>
|
||||
</p>
|
||||
|
||||
<br>
|
||||
|
||||
<p align="center">
|
||||
@@ -48,10 +28,6 @@
|
||||
<sub><i>安塞尔·亚当斯,《特顿山脉与蛇河》(1942)。公有领域,美国国家档案馆。在 LightCraft 中显影。</i></sub>
|
||||
</p>
|
||||
|
||||
> [!NOTE]
|
||||
> **ArtCraft 是一个由形形色色的创作者组成的社区。** 数字艺术、生成艺术、音乐、游戏 —
|
||||
> 只要你在创作,你就是我们中的一员。**[来 Discord 打个招呼吧](https://discord.gg/artcraft)。**
|
||||
|
||||
<p align="center">
|
||||
<a href="#edit-like-you-mean-it">编辑</a> ·
|
||||
<a href="#color-grading-the-cinematic-way">颜色分级</a> ·
|
||||
@@ -441,14 +417,11 @@ egui 前端是一个可替换的 crate;它下面没有任何东西知道 UI
|
||||
`unsafe`,对任何来自输入的数据都做受检索引,并且每个崩溃修复都带一个回归测试。细节见
|
||||
[AGENTS.md](AGENTS.md#never-crash-outranks-feature-work)。
|
||||
|
||||
有问题、想法,或者想先讨论一个 bug?来 [Discord](https://discord.gg/artcraft)。
|
||||
|
||||
<br>
|
||||
|
||||
## Downloads
|
||||
|
||||
**第一次用 LightCraft?** 从 [getartcraft.com 的 LightCraft 页面](https://getartcraft.com/apps/lightcraft)下载。那是最简单的安装方式。
|
||||
|
||||
**想要特定的构建或格式?** 在 GitHub 上,[最新发布](https://github.com/storytold/lightcraft/releases/latest)包含下面列出的所有构建,[全部发布](https://github.com/storytold/lightcraft/releases)则有更早的版本及其说明。文件名中的 `<ver>` 是版本号,`SHA256SUMS.txt` 列出了每个文件的校验和。
|
||||
|
||||
### Windows
|
||||
@@ -496,42 +469,18 @@ egui 前端是一个可替换的 crate;它下面没有任何东西知道 UI
|
||||
|
||||
## The Crafting Apps
|
||||
|
||||
LightCraft 是 **Crafting Apps** 之一:来自 [ArtCraft](https://getartcraft.com/) 团队的免费开源创作工具,
|
||||
LightCraft 是 **Crafting Apps** 之一:来自 [storytold](https://github.com/storytold) 团队的免费开源创作工具,
|
||||
每一个都用 Rust 从零编写,每一个都能独立使用。
|
||||
|
||||
| | 应用 | 用途 | 代码 | 了解更多 |
|
||||
|:-:|---|---|---|---|
|
||||
| <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** | 图像编辑:图层、蒙版、文字和真正的 PSD 文件 | [GitHub](https://github.com/storytold/photocraft) | [网站](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** | 矢量插画 | [GitHub](https://github.com/storytold/vectorcraft) | [网站](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** | 视频剪辑、调色与声音 | [GitHub](https://github.com/storytold/filmcraft) | [网站](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** | **照片图库与 raw 显影 · 你在这里** | [GitHub](https://github.com/storytold/lightcraft) | [网站](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** | 阅读、整理和保护 PDF | [GitHub](https://github.com/storytold/pdfcraft) | [网站](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** | 动态图形与视觉特效 | [GitHub](https://github.com/storytold/effectcraft) | [网站](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** | 页面排版与出版 | [GitHub](https://github.com/storytold/designcraft) | [网站](https://getartcraft.com/apps/designcraft) |
|
||||
|
||||
以及 [**ArtCraft**](https://getartcraft.com/) 本身,我们为想要真正掌控力的创作者打造的 AI 图像与视频工作室。
|
||||
|
||||
<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">
|
||||
我们的 Discord 是各种创作者聚集的地方:画画的人、拍照的人、做动画的人、剪片子的人、
|
||||
排版的人,还有仍在摸索自己喜欢做什么的人。分享你在做的东西,
|
||||
寻求帮助,告诉我们哪里坏了,或者告诉我们你希望这些工具能做什么。
|
||||
无论你用什么媒介,无论你做了多久,这里都欢迎你。
|
||||
</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/lightcraft">LightCraft</a>
|
||||
</p>
|
||||
|:-:|---|---|---|
|
||||
| <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** | 图像编辑:图层、蒙版、文字和真正的 PSD 文件 | [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** | 矢量插画 | [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** | 视频剪辑、调色与声音 | [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** | **照片图库与 raw 显影 · 你在这里** | [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** | 阅读、整理和保护 PDF | [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** | 动态图形与视觉特效 | [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** | 页面排版与出版 | [GitHub](https://github.com/storytold/designcraft) |
|
||||
|
||||
<br>
|
||||
|
||||
@@ -550,18 +499,8 @@ Inter(SIL OFL 1.1)。用 [craft-fonts](https://github.com/storytold/craft-fo
|
||||
还会内嵌它的中文和日文字体(Noto Sans CJK SC、BIZ UDPGothic、BIZ UDMincho、Shippori Mincho;SIL OFL 1.1),列在其
|
||||
[ATTRIBUTION.md](https://github.com/storytold/craft-fonts/blob/main/ATTRIBUTION.md) 中。所有图标均为原创。
|
||||
|
||||
[`docs/brand/`](docs/brand/) 中的 ArtCraft 名称、字标和标志是
|
||||
ArtCraft 团队的商标,不在本许可范围内。它们只能在未修改的情况下,作为
|
||||
本仓库和 LightCraft 的一部分,按 [`docs/brand/LICENSE-brand.txt`](docs/brand/LICENSE-brand.txt) 使用。
|
||||
分支和修改版本必须移除它们。
|
||||
|
||||
<sub>Adobe、Photoshop、Illustrator、Premiere Pro、Lightroom、Acrobat、After Effects 和 InDesign 是 Adobe Inc. 在美国和/或其他国家的商标或注册商标。LightCraft 是一个独立的开源项目,与 Adobe Inc. 无隶属关系,也未获其赞助或认可;这些名称仅用于说明它所兼容的工作流。</sub>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://getartcraft.com/"><img alt="ArtCraft" src="docs/brand/artcraft-mark.svg" width="28"></a><br>
|
||||
<sub>由 <a href="https://getartcraft.com/">ArtCraft</a> 团队和社区制作。</sub>
|
||||
</p>
|
||||
|
||||
## Star history
|
||||
|
||||
[](https://www.star-history.com/?repos=storytold%2Flightcraft&type=date&legend=top-left)
|
||||
|
||||
@@ -79,7 +79,7 @@ fn launcher(app: &str) -> Result<Launcher, String> {
|
||||
return Ok(if cfg!(target_os = "macos") { Launcher::MacApp(app.to_string()) } else { Launcher::Program(PathBuf::from(app)) });
|
||||
}
|
||||
find_photocraft().ok_or_else(|| {
|
||||
"PhotoCraft isn't installed. Get it from getartcraft.com/apps/photocraft, or give where it is in Settings ▸ External Editing.".to_string()
|
||||
"PhotoCraft isn't installed. Get it from github.com/storytold/photocraft, or give where it is in Settings ▸ External Editing.".to_string()
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@ impl eframe::App for App {
|
||||
// Quit from the menu bar: save exactly what closing the window saves (settings and
|
||||
// library, after the unsaved-changes check; otherwise its prompt shows), then end the
|
||||
// process instead of closing the viewport while AppKit is terminating (PR #444).
|
||||
eframe::App::on_exit(self);
|
||||
eframe::App::on_exit(self, None);
|
||||
std::process::exit(0);
|
||||
}
|
||||
self.0.logic(ctx);
|
||||
|
||||
@@ -9,7 +9,7 @@ covers a whole directory), or if a licence file referenced in the Licence column
|
||||
| Path | Asset | Creator | Source | Licence | Added | Modifications |
|
||||
|---|---|---|---|---|---|---|
|
||||
| `assets/fonts/Inter-*.ttf` (Regular, Medium, SemiBold) | Inter | Rasmus Andersson | https://github.com/rsms/inter | SIL Open Font License 1.1 (`assets/fonts/OFL-Inter.txt`) | 2026-09-30 | none |
|
||||
| `assets/app-icon/` (`lightcraft.svg` and the PNG/ICNS/ICO/SVG files derived from it) | LightCraft app icon (lynx) | LightCraft project owner (drawn in ArtCraft) | original work (vectorised from the owner's drawing; see `assets/app-icon/README.md`) | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) | 2026-10-02 | vectorised to SVG; rendered to PNG/ICNS/ICO by `packaging/icons.sh` |
|
||||
| `assets/app-icon/` (`lightcraft.svg` and the PNG/ICNS/ICO/SVG files derived from it) | LightCraft app icon (lynx) | LightCraft project owner (drawn by hand) | original work (vectorised from the owner's drawing; see `assets/app-icon/README.md`) | MIT OR Apache-2.0 (`assets/app-icon/LICENSE.txt`) | 2026-10-02 | vectorised to SVG; rendered to PNG/ICNS/ICO by `packaging/icons.sh` |
|
||||
| `assets/camera-profiles/*.json` | Camera colour profiles (matrix + hue/saturation/value table), built into LightCraft | ILCE-7M4: Harald Hoyer | original work: fitted by `lightcraft-cli calibrate` to the contributor's own raw photos and their in-camera JPEGs (597 ILCE-7M4 photos, 2026); aggregate colour statistics only, no image content; no Adobe or third-party profile data | MIT OR Apache-2.0 | 2026-10-07 | none |
|
||||
| `packaging/macos/dmg/` (`background.svg`, the `background.tiff` rendered from it by `generate.py`, and the `dmg-layout.DS_Store` layout file) | LightCraft macOS DMG window background | @XusBadia | original work for this repository, derived from the LightCraft app icon (`assets/app-icon/lightcraft.svg`, referenced via `<image>`, not copied); text is outlined Inter / JetBrains Mono glyph paths | MIT OR Apache-2.0 | 2026-10-08 | none (original); used for the Finder window of the macOS DMG, `packaging/macos/dmg/generate.py` renders it to `background.tiff` |
|
||||
| `assets/camera-profiles/ILCE-7CR.json` | Sony ILCE-7CR camera colour profile (matrix + hue/saturation/value table), built into LightCraft | LightCraft contributors; source photographs supplied by @AlexChambers | original work: fitted by `lightcraft-cli calibrate` to 125 usable ILCE-7CR ARWs (of 131, September 2025 to September 2026, Standard creative style) and their in-camera JPEGs; aggregate colour statistics only, no image content; no Adobe or third-party profile data | MIT OR Apache-2.0 | 2026-10-09 | none |
|
||||
@@ -23,7 +23,7 @@ covers a whole directory), or if a licence file referenced in the Licence column
|
||||
| `docs/images/*-earthrise.jpg`, `docs/images/grid-pd.jpg` | "Earthrise" (AS08-14-2383) | NASA / Bill Anders, Apollo 8 (1968) | https://commons.wikimedia.org/wiki/File:NASA-Apollo8-Dec24-Earthrise.jpg | Public domain (NASA) | 2026-09-30 | developed in LightCraft; shown inside app screenshots |
|
||||
| `docs/images/*-blue-marble.jpg`, `docs/images/grid-pd.jpg` | "The Blue Marble" (AS17-148-22727) | NASA, Apollo 17 crew (1972) | https://commons.wikimedia.org/wiki/File:The_Earth_seen_from_Apollo_17.jpg | Public domain (NASA) | 2026-09-30 | developed in LightCraft; shown inside app screenshots |
|
||||
| `docs/images/*.jpg` (UI) | LightCraft application screenshots | LightCraft contributors | original work (captured with `docs/showcase/`) | MIT OR Apache-2.0 | 2026-09-30 | n/a |
|
||||
| `docs/brand/` (artcraft-logo and artcraft-mark, SVG and PNG) | ArtCraft wordmark and mark | ArtCraft Team | original work (https://getartcraft.com/) | ArtCraft trademark, see `docs/brand/LICENSE-brand.txt` (not open source) | 2026-10-01 | none |
|
||||
| `crates/ui-egui/src/theme_catppuccin.rs` (Catppuccin palettes) | Catppuccin Latte, Frappé, Macchiato and Mocha colours used by the Catppuccin themes | Catppuccin | <https://catppuccin.com/palette> | MIT, [`LICENSE-catppuccin.txt`](../crates/ui-egui/src/LICENSE-catppuccin.txt) | 2026-10-11 | none |
|
||||
| craft-fonts: optional build input, not files in this repository | BIZ UDPGothic (Regular, Bold), BIZ UDMincho Regular, Shippori Mincho Regular, Noto Sans CJK SC Regular | Morisawa Inc. / The BIZ UDGothic and BIZ UDMincho Project Authors; The Shippori Mincho Project Authors; Google and Adobe (Noto Sans CJK, maintainer-approved exception; see AGENTS.md) (per craft-fonts' attribution) | https://github.com/storytold/craft-fonts/blob/main/ATTRIBUTION.md | SIL Open Font License 1.1 (each font's OFL.txt in craft-fonts; release packages ship it as OFL-<family>.txt) | 2026-10-06 | none; native builds made with `CRAFT_FONTS_DIR` embed the manifest fonts (all official releases); the web build embeds BIZ UDPGothic Regular and ships Noto Sans CJK SC Regular as a separate font file |
|
||||
| `crates/ui-egui/locales/uk.json`, `crates/ui-egui/locales/uk-formats.json` | Ukrainian interface catalogs | @dmatviichuk with Codex; PhotoCraft, FilmCraft and VectorCraft translation contributors for reused labels | original translations from English source; 337 initial English-key matches reviewed from [PhotoCraft 69c41f3](https://github.com/storytold/photocraft/blob/69c41f3523e147eb215da8c7b4c29b18b35d1c63/crates/ui-egui/src/i18n/uk.tsv), [FilmCraft 4854c27](https://github.com/storytold/filmcraft/blob/4854c277536fe8118257362304b6a7d82d8e704b/crates/ui-egui/src/i18n/uk.tsv), [VectorCraft 4b44265](https://github.com/storytold/vectorcraft/blob/4b44265965fdd6ffedfd6182a892c1a6c360d344/crates/ui-egui/src/i18n/uk.tsv) | MIT OR Apache-2.0 (`LICENSE-MIT`, `LICENSE-APACHE`, also the source repositories' licences) | 2026-10-09 | adapted to LightCraft photo-development context, completed catalogs, reviewed spelling and placeholders |
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ LightCraft app icon (lightcraft.svg and every file derived from it in this direc
|
||||
lightcraft-small.svg, lightcraft-1024.png, lightcraft-macos-512.png, lightcraft.icns,
|
||||
lightcraft.ico, hicolor/).
|
||||
|
||||
Original artwork made for this project by the LightCraft project owner in ArtCraft (no
|
||||
Original artwork made for this project by the LightCraft project owner, drawn by hand (no
|
||||
third-party material). Licensed like the rest of LightCraft, under either of
|
||||
|
||||
* Apache License, Version 2.0 (https://www.apache.org/licenses/LICENSE-2.0)
|
||||
|
||||
@@ -20,7 +20,7 @@ Windows and Linux files use the full-bleed tile so the lynx reads at 16-48 px.
|
||||
|
||||
## Provenance
|
||||
|
||||
The owner's original drawing, made in ArtCraft (2880 px, keyed to the three colours), vectorised with
|
||||
The owner's original drawing, drawn by hand (2880 px, keyed to the three colours), vectorised with
|
||||
craftrules `assets/logo-options/_tools/vectorize_tile.py`. The source drawing stays in craftrules at
|
||||
`assets/app-icons/lightcraft/source.png`; `lightcraft.svg` here is the canonical artwork. Licence:
|
||||
`LICENSE.txt` (MIT OR Apache-2.0, like the repo).
|
||||
|
||||
@@ -95,8 +95,6 @@
|
||||
"Aqua Luminance": "Aquamarin – Luminanz",
|
||||
"Aqua Saturation": "Aquamarin – Sättigung",
|
||||
"Arrange Panel": "Bereich anordnen",
|
||||
"ArtCraft Website": "ArtCraft-Website",
|
||||
"ArtCraft — more creative apps": "ArtCraft — weitere Kreativ-Apps",
|
||||
"As Shot": "Wie Aufnahme",
|
||||
"As shot": "Wie Aufnahme",
|
||||
"Ascending": "Aufsteigend",
|
||||
@@ -728,9 +726,6 @@
|
||||
"JPEG (Large)": "JPEG (groß)",
|
||||
"JPEG (Small)": "JPEG (klein)",
|
||||
"JPEG with the same name (`IMG_0001.CR3` + `IMG_0001.JPG`) no longer share one sidecar: the raw keeps `IMG_0001.xmp`,": "JPEG mit gleichem Namen (`IMG_0001.CR3` + `IMG_0001.JPG`) keine Begleitdatei mehr: RAW verwendet `IMG_0001.xmp`,",
|
||||
"Join the ArtCraft Discord": "ArtCraft auf Discord beitreten",
|
||||
"Join the ArtCraft Discord…": "ArtCraft auf Discord beitreten…",
|
||||
"Join the ArtCraft community on Discord": "Der ArtCraft-Community auf Discord beitreten",
|
||||
"Keep in Local": "In „Lokal“ behalten",
|
||||
"Keep it on a drive with room: smart previews are about 1 MB per photo. The thumbnail cache stays in the library.": "Wähle ein Laufwerk mit genügend Platz: Smart-Vorschauen benötigen etwa 1 MB pro Foto. Der Miniaturbild-Cache bleibt in der Bibliothek.",
|
||||
"Keyboard Shortcuts": "Tastenkürzel",
|
||||
@@ -2043,6 +2038,10 @@
|
||||
"Midnight": "Mitternacht",
|
||||
"Silver": "Silber",
|
||||
"Paper": "Papier",
|
||||
"Catppuccin Latte": "Catppuccin Latte",
|
||||
"Catppuccin Frappé": "Catppuccin Frappé",
|
||||
"Catppuccin Macchiato": "Catppuccin Macchiato",
|
||||
"Catppuccin Mocha": "Catppuccin Mocha",
|
||||
"Show less": "Weniger anzeigen",
|
||||
"Quit while tasks are running?": "Beenden, während Aufgaben laufen?",
|
||||
"Exporting contact sheet": "Kontaktabzug wird exportiert",
|
||||
|
||||
@@ -80,8 +80,6 @@
|
||||
"Aqua Luminance": "Luminancia aguamarina",
|
||||
"Aqua Saturation": "Saturación aguamarina",
|
||||
"Arrange Panel": "Organizar panel",
|
||||
"ArtCraft Website": "Sitio web de ArtCraft",
|
||||
"ArtCraft — more creative apps": "ArtCraft: más aplicaciones creativas",
|
||||
"As Shot": "Como se tomó",
|
||||
"As shot": "Como se tomó",
|
||||
"Ascending": "Ascendente",
|
||||
@@ -691,9 +689,6 @@
|
||||
"Invert Mask": "Invertir máscara",
|
||||
"JPEG (Large)": "JPEG (grande)",
|
||||
"JPEG (Small)": "JPEG (pequeño)",
|
||||
"Join the ArtCraft Discord": "Unirse al Discord de ArtCraft",
|
||||
"Join the ArtCraft Discord…": "Unirse al Discord de ArtCraft…",
|
||||
"Join the ArtCraft community on Discord": "Unirse a la comunidad de ArtCraft en Discord",
|
||||
"Keep in Local": "Conservar en Local",
|
||||
"Keep it on a drive with room: smart previews are about 1 MB per photo. The thumbnail cache stays in the library.": "Conviene un disco con espacio: las vistas previas inteligentes ocupan aproximadamente 1 MB por foto. La caché de miniaturas permanece en la biblioteca.",
|
||||
"Keyboard Shortcuts": "Métodos abreviados de teclado",
|
||||
@@ -1888,6 +1883,10 @@
|
||||
"Midnight": "Medianoche",
|
||||
"Silver": "Plata",
|
||||
"Paper": "Papel",
|
||||
"Catppuccin Latte": "Catppuccin Latte",
|
||||
"Catppuccin Frappé": "Catppuccin Frappé",
|
||||
"Catppuccin Macchiato": "Catppuccin Macchiato",
|
||||
"Catppuccin Mocha": "Catppuccin Mocha",
|
||||
"Show less": "Mostrar menos",
|
||||
"Quit while tasks are running?": "¿Salir con tareas en curso?",
|
||||
"Exporting contact sheet": "Exportando hoja de contactos",
|
||||
|
||||
@@ -79,8 +79,6 @@
|
||||
"Aqua Hue": "Teinte aigue-marine",
|
||||
"Aqua Luminance": "Luminance aigue-marine",
|
||||
"Aqua Saturation": "Saturation aigue-marine",
|
||||
"ArtCraft Website": "Site web d'ArtCraft",
|
||||
"ArtCraft — more creative apps": "ArtCraft : d'autres applications créatives",
|
||||
"As Shot": "Tel quel",
|
||||
"As shot": "Tel quel",
|
||||
"Ascending": "Croissant",
|
||||
@@ -688,9 +686,6 @@
|
||||
"Invert Mask": "Inverser le masque",
|
||||
"JPEG (Large)": "JPEG (grand)",
|
||||
"JPEG (Small)": "JPEG (petit)",
|
||||
"Join the ArtCraft Discord": "Rejoindre le Discord d'ArtCraft",
|
||||
"Join the ArtCraft Discord…": "Rejoindre le Discord d'ArtCraft…",
|
||||
"Join the ArtCraft community on Discord": "Rejoindre la communauté ArtCraft sur Discord",
|
||||
"Keep in Local": "Conserver dans Local",
|
||||
"Keep it on a drive with room: smart previews are about 1 MB per photo. The thumbnail cache stays in the library.": "Choisissez un disque avec de la place : les aperçus dynamiques font environ 1 Mo par photo. Le cache des miniatures reste dans la bibliothèque.",
|
||||
"Keyboard Shortcuts": "Raccourcis clavier",
|
||||
@@ -1947,6 +1942,10 @@
|
||||
"Midnight": "Minuit",
|
||||
"Silver": "Argent",
|
||||
"Paper": "Papier",
|
||||
"Catppuccin Latte": "Catppuccin Latte",
|
||||
"Catppuccin Frappé": "Catppuccin Frappé",
|
||||
"Catppuccin Macchiato": "Catppuccin Macchiato",
|
||||
"Catppuccin Mocha": "Catppuccin Mocha",
|
||||
"Add to Apple Photos": "Ajouter à Apple Photos",
|
||||
"Adding to Apple Photos…": "Ajout à Apple Photos…",
|
||||
"not added to Apple Photos (cancelled)": "non ajouté à Apple Photos (annulé)",
|
||||
|
||||
@@ -82,8 +82,6 @@
|
||||
"Aqua Luminance": "アクアの輝度",
|
||||
"Aqua Saturation": "アクアの彩度",
|
||||
"Arrange Panel": "パネルを配置",
|
||||
"ArtCraft Website": "ArtCraftのウェブサイト",
|
||||
"ArtCraft — more creative apps": "ArtCraft — その他のクリエイティブアプリ",
|
||||
"As Shot": "撮影時の設定",
|
||||
"As shot": "撮影時の設定",
|
||||
"Ascending": "昇順",
|
||||
@@ -536,9 +534,6 @@
|
||||
"Invert Component": "構成要素を反転",
|
||||
"JPEG (Large)": "JPEG(大)",
|
||||
"JPEG (Small)": "JPEG(小)",
|
||||
"Join the ArtCraft Discord": "ArtCraftのDiscordに参加",
|
||||
"Join the ArtCraft Discord…": "ArtCraftのDiscordに参加…",
|
||||
"Join the ArtCraft community on Discord": "DiscordのArtCraftコミュニティに参加",
|
||||
"Keywords (K)": "キーワード(K)",
|
||||
"Label": "ラベル",
|
||||
"Label Set": "ラベルセット",
|
||||
@@ -1890,6 +1885,10 @@
|
||||
"Midnight": "ミッドナイト",
|
||||
"Silver": "シルバー",
|
||||
"Paper": "ペーパー",
|
||||
"Catppuccin Latte": "Catppuccin Latte",
|
||||
"Catppuccin Frappé": "Catppuccin Frappé",
|
||||
"Catppuccin Macchiato": "Catppuccin Macchiato",
|
||||
"Catppuccin Mocha": "Catppuccin Mocha",
|
||||
"Show less": "表示を減らす",
|
||||
"Quit while tasks are running?": "タスクの実行中に終了しますか?",
|
||||
"Exporting contact sheet": "コンタクトシートを書き出し中",
|
||||
|
||||
@@ -85,8 +85,6 @@
|
||||
"Aqua Luminance": "Luminância do ciano",
|
||||
"Aqua Saturation": "Saturação do ciano",
|
||||
"Arrange Panel": "Organizar painel",
|
||||
"ArtCraft Website": "Site do ArtCraft",
|
||||
"ArtCraft — more creative apps": "ArtCraft — mais aplicativos criativos",
|
||||
"As Shot": "Como capturado",
|
||||
"As shot": "Como capturado",
|
||||
"Ascending": "Crescente",
|
||||
@@ -697,9 +695,6 @@
|
||||
"Invert Mask": "Inverter máscara",
|
||||
"JPEG (Large)": "JPEG (grande)",
|
||||
"JPEG (Small)": "JPEG (pequeno)",
|
||||
"Join the ArtCraft Discord": "Entrar no Discord do ArtCraft",
|
||||
"Join the ArtCraft Discord…": "Entrar no Discord do ArtCraft…",
|
||||
"Join the ArtCraft community on Discord": "Participe da comunidade ArtCraft no Discord",
|
||||
"Keep in Local": "Manter em Local",
|
||||
"Keep it on a drive with room: smart previews are about 1 MB per photo. The thumbnail cache stays in the library.": "Guarde em um disco com espaço: as pré-visualizações inteligentes ocupam cerca de 1 MB por foto. O cache de miniaturas permanece na biblioteca.",
|
||||
"Keyboard Shortcuts": "Atalhos de teclado",
|
||||
@@ -1888,6 +1883,10 @@
|
||||
"Midnight": "Meia-noite",
|
||||
"Silver": "Prata",
|
||||
"Paper": "Papel",
|
||||
"Catppuccin Latte": "Catppuccin Latte",
|
||||
"Catppuccin Frappé": "Catppuccin Frappé",
|
||||
"Catppuccin Macchiato": "Catppuccin Macchiato",
|
||||
"Catppuccin Mocha": "Catppuccin Mocha",
|
||||
"Show less": "Mostrar menos",
|
||||
"Quit while tasks are running?": "Sair com tarefas em andamento?",
|
||||
"Exporting contact sheet": "Exportando folha de contato",
|
||||
|
||||
@@ -61,8 +61,6 @@
|
||||
"Aqua Luminance": "Яркость голубого",
|
||||
"Aqua Saturation": "Насыщенность голубого",
|
||||
"Arrange Panel": "Расположить панель",
|
||||
"ArtCraft Website": "Сайт ArtCraft",
|
||||
"ArtCraft — more creative apps": "ArtCraft — другие творческие приложения",
|
||||
"As Shot": "Как снято",
|
||||
"As shot": "Как снято",
|
||||
"Ascending": "По возрастанию",
|
||||
@@ -576,8 +574,6 @@
|
||||
"Invert Mask": "Инвертировать маску",
|
||||
"JPEG (Large)": "JPEG (большой)",
|
||||
"JPEG (Small)": "JPEG (малый)",
|
||||
"Join the ArtCraft Discord": "Присоединяйтесь к Discord ArtCraft",
|
||||
"Join the ArtCraft Discord…": "Присоединиться к Discord ArtCraft…",
|
||||
"Keep in Local": "Оставить в «Локальном»",
|
||||
"Keep it on a drive with room: smart previews are about 1 MB per photo. The thumbnail cache stays in the library.": "Храните их на диске со свободным местом: смарт-просмотр занимает около 1 МБ на фото. Кэш миниатюр остаётся в библиотеке.",
|
||||
"Keyboard Shortcuts": "Сочетания клавиш",
|
||||
@@ -1601,6 +1597,10 @@
|
||||
"Midnight": "Полночь",
|
||||
"Silver": "Серебро",
|
||||
"Paper": "Бумага",
|
||||
"Catppuccin Latte": "Catppuccin Latte",
|
||||
"Catppuccin Frappé": "Catppuccin Frappé",
|
||||
"Catppuccin Macchiato": "Catppuccin Macchiato",
|
||||
"Catppuccin Mocha": "Catppuccin Mocha",
|
||||
"Show less": "Показать меньше",
|
||||
"Quit while tasks are running?": "Выйти, пока выполняются задачи?",
|
||||
"Exporting contact sheet": "Экспорт контактного листа",
|
||||
@@ -1832,7 +1832,6 @@
|
||||
"Install Face Model": "Установить модель лиц",
|
||||
"Invert Component": "Инвертировать компонент",
|
||||
"JPEG with the same name (`IMG_0001.CR3` + `IMG_0001.JPG`) no longer share one sidecar: the raw keeps `IMG_0001.xmp`,": "JPEG с таким же именем (`IMG_0001.CR3` + `IMG_0001.JPG`) больше не используют общий XMP-файл: RAW сохраняет `IMG_0001.xmp`,",
|
||||
"Join the ArtCraft community on Discord": "Присоединяйтесь к сообществу ArtCraft в Discord",
|
||||
"Label": "Метка",
|
||||
"Label Set": "Набор меток",
|
||||
"Last GPU fallback": "Последний откат с GPU",
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
"Aperture": "Діафрагма",
|
||||
"Apply": "Застосувати",
|
||||
"Aqua": "Бірюзовий",
|
||||
"ArtCraft Website": "Вебсайт ArtCraft",
|
||||
"Aspect Ratio": "Співвідношення сторін",
|
||||
"Auto": "Авто",
|
||||
"Automatic": "Автоматично",
|
||||
@@ -100,8 +99,6 @@
|
||||
"Horizontal inset (% of short edge)": "Відступ по горизонталі (% короткого краю)",
|
||||
"ISO Speed": "Чутливість ISO",
|
||||
"Imported": "Імпортовані",
|
||||
"Join the ArtCraft Discord": "Приєднатися до Discord ArtCraft",
|
||||
"Join the ArtCraft Discord…": "Приєднатися до Discord ArtCraft…",
|
||||
"Label": "Мітка",
|
||||
"Last commit": "Останній коміт",
|
||||
"Lens Blur": "Розмиття об’єктива",
|
||||
@@ -412,7 +409,6 @@
|
||||
"Aqua Hue": "Тон бірюзового",
|
||||
"Aqua Luminance": "Яскравість бірюзового",
|
||||
"Aqua Saturation": "Насиченість бірюзового",
|
||||
"ArtCraft — more creative apps": "ArtCraft — інші творчі застосунки",
|
||||
"As Shot": "Як під час знімання",
|
||||
"As shot": "Як під час знімання",
|
||||
"Ascending": "За зростанням",
|
||||
@@ -773,7 +769,6 @@
|
||||
"Invert Component": "Інвертувати компонент",
|
||||
"JPEG (Large)": "JPEG (великий)",
|
||||
"JPEG (Small)": "JPEG (малий)",
|
||||
"Join the ArtCraft community on Discord": "Приєднатися до спільноти ArtCraft у Discord",
|
||||
"Keywords (K)": "Ключові слова (K)",
|
||||
"Label Set": "Набір міток",
|
||||
"Last GPU fallback": "Останній перехід із ГП",
|
||||
@@ -2141,6 +2136,10 @@
|
||||
"Midnight": "Опівніч",
|
||||
"Silver": "Срібло",
|
||||
"Paper": "Папір",
|
||||
"Catppuccin Latte": "Catppuccin Latte",
|
||||
"Catppuccin Frappé": "Catppuccin Frappé",
|
||||
"Catppuccin Macchiato": "Catppuccin Macchiato",
|
||||
"Catppuccin Mocha": "Catppuccin Mocha",
|
||||
"Add to Apple Photos": "Додати до Apple Фото",
|
||||
"Adding to Apple Photos…": "Додавання до Apple Фото…",
|
||||
"not added to Apple Photos (cancelled)": "не додано до Apple Фото (скасовано)",
|
||||
|
||||
@@ -84,8 +84,6 @@
|
||||
"Aqua Luminance": "青色明度",
|
||||
"Aqua Saturation": "青色饱和度",
|
||||
"Arrange Panel": "排列面板",
|
||||
"ArtCraft Website": "ArtCraft 网站",
|
||||
"ArtCraft — more creative apps": "ArtCraft — 更多创意应用",
|
||||
"As Shot": "拍摄时设置",
|
||||
"As shot": "拍摄时设置",
|
||||
"Ascending": "升序",
|
||||
@@ -534,7 +532,6 @@
|
||||
"Inspect Lightroom Catalog": "检查 Lightroom 目录",
|
||||
"Inspecting Lightroom Catalog": "正在检查 Lightroom 目录",
|
||||
"Invert Component": "反相组件",
|
||||
"Join the ArtCraft community on Discord": "加入 Discord 上的 ArtCraft 社区",
|
||||
"Label": "标签",
|
||||
"Label Set": "标签集",
|
||||
"Last GPU fallback": "最近一次 GPU 回退",
|
||||
@@ -802,8 +799,6 @@
|
||||
"Invert Mask": "反相蒙版",
|
||||
"JPEG (Large)": "JPEG(大)",
|
||||
"JPEG (Small)": "JPEG(小)",
|
||||
"Join the ArtCraft Discord": "加入 ArtCraft Discord",
|
||||
"Join the ArtCraft Discord…": "加入 ArtCraft Discord…",
|
||||
"Keep in Local": "保留在本地",
|
||||
"Keep it on a drive with room: smart previews are about 1 MB per photo. The thumbnail cache stays in the library.": "请选择空间充足的驱动器:智能预览每张照片约 1 MB。缩略图缓存仍保留在图库中。",
|
||||
"Keyboard Shortcuts": "键盘快捷键",
|
||||
@@ -1888,6 +1883,10 @@
|
||||
"Midnight": "午夜",
|
||||
"Silver": "银色",
|
||||
"Paper": "纸白",
|
||||
"Catppuccin Latte": "Catppuccin Latte",
|
||||
"Catppuccin Frappé": "Catppuccin Frappé",
|
||||
"Catppuccin Macchiato": "Catppuccin Macchiato",
|
||||
"Catppuccin Mocha": "Catppuccin Mocha",
|
||||
"Show less": "收起",
|
||||
"Quit while tasks are running?": "要在任务运行时退出吗?",
|
||||
"Exporting contact sheet": "正在导出联系表",
|
||||
|
||||
@@ -84,8 +84,6 @@
|
||||
"Aqua Luminance": "青色明度",
|
||||
"Aqua Saturation": "青色飽和度",
|
||||
"Arrange Panel": "排列面板",
|
||||
"ArtCraft Website": "ArtCraft 網站",
|
||||
"ArtCraft — more creative apps": "ArtCraft — 更多創作應用程式",
|
||||
"As Shot": "拍攝時設定",
|
||||
"As shot": "拍攝時設定",
|
||||
"Ascending": "遞增",
|
||||
@@ -534,7 +532,6 @@
|
||||
"Inspect Lightroom Catalog": "檢查 Lightroom 目錄",
|
||||
"Inspecting Lightroom Catalog": "正在檢查 Lightroom 目錄",
|
||||
"Invert Component": "反轉元件",
|
||||
"Join the ArtCraft community on Discord": "加入 Discord 上的 ArtCraft 社群",
|
||||
"Label": "標籤",
|
||||
"Label Set": "標籤集",
|
||||
"Last GPU fallback": "最近一次 GPU 備援",
|
||||
@@ -802,8 +799,6 @@
|
||||
"Invert Mask": "反轉遮色片",
|
||||
"JPEG (Large)": "JPEG(大尺寸)",
|
||||
"JPEG (Small)": "JPEG(小尺寸)",
|
||||
"Join the ArtCraft Discord": "加入 ArtCraft Discord",
|
||||
"Join the ArtCraft Discord…": "加入 ArtCraft Discord…",
|
||||
"Keep in Local": "保留在本機",
|
||||
"Keep it on a drive with room: smart previews are about 1 MB per photo. The thumbnail cache stays in the library.": "請放在空間充足的磁碟:每張智慧型預覽約 1 MB。縮圖快取仍保留在照片庫中。",
|
||||
"Keyboard Shortcuts": "鍵盤快速鍵",
|
||||
@@ -1888,6 +1883,10 @@
|
||||
"Midnight": "午夜",
|
||||
"Silver": "銀色",
|
||||
"Paper": "紙白",
|
||||
"Catppuccin Latte": "Catppuccin Latte",
|
||||
"Catppuccin Frappé": "Catppuccin Frappé",
|
||||
"Catppuccin Macchiato": "Catppuccin Macchiato",
|
||||
"Catppuccin Mocha": "Catppuccin Mocha",
|
||||
"Show less": "收合",
|
||||
"Quit while tasks are running?": "要在工作執行時結束嗎?",
|
||||
"Exporting contact sheet": "正在匯出聯絡表",
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
Catppuccin
|
||||
https://catppuccin.com/palette
|
||||
https://github.com/catppuccin/catppuccin
|
||||
|
||||
The Catppuccin Latte, Frappé, Macchiato and Mocha themes' colour palettes in `theme_catppuccin.rs`
|
||||
are the Catppuccin project's palettes, used under the MIT License below.
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2021 Catppuccin
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@@ -78,9 +78,6 @@ pub enum Icon {
|
||||
Edited,
|
||||
/// Targeted adjustment: a ring with a centre dot and up/down arrows (drag vertically).
|
||||
Target,
|
||||
/// Community chat (opens the ArtCraft Discord): a speech bubble with three dots. Our own
|
||||
/// generic drawing, not any service's logo.
|
||||
Chat,
|
||||
/// Face boxes on/off: four corner brackets round a small face.
|
||||
FaceBox,
|
||||
/// Colour grading, all three wheels: three small circles.
|
||||
@@ -555,25 +552,6 @@ fn paint_with(p: &Painter, rect: Rect, icon: Icon, color: Color32, turn: Option<
|
||||
pen.line(&[(13.5, 5.5), (15.5, 3.5), (17.5, 5.5)]);
|
||||
pen.line(&[(13.5, 14.5), (15.5, 16.5), (17.5, 14.5)]);
|
||||
}
|
||||
Chat => {
|
||||
// rounded bubble with a tail at the lower left
|
||||
pen.closed(&[
|
||||
(4.5, 3.5),
|
||||
(15.5, 3.5),
|
||||
(17.0, 5.0),
|
||||
(17.0, 12.0),
|
||||
(15.5, 13.5),
|
||||
(9.0, 13.5),
|
||||
(5.5, 16.8),
|
||||
(5.5, 13.5),
|
||||
(4.5, 13.5),
|
||||
(3.0, 12.0),
|
||||
(3.0, 5.0),
|
||||
]);
|
||||
for x in [6.8, 10.0, 13.2] {
|
||||
pen.dot(x, 8.5, 1.1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -36,6 +36,7 @@ pub mod sync;
|
||||
pub mod tasks;
|
||||
pub mod text_field;
|
||||
pub mod theme;
|
||||
mod theme_catppuccin;
|
||||
pub mod titlebar;
|
||||
pub mod widgets;
|
||||
|
||||
@@ -210,7 +211,7 @@ pub struct Services {
|
||||
pub pick_folder: Option<PickFolder>,
|
||||
/// Open a Lightroom Classic `.lrcat` catalog for read-only import.
|
||||
pub pick_lightroom_catalog: Option<PickFolder>,
|
||||
/// Open a web link in the browser (Help menu, About, Discord button).
|
||||
/// Open a web link in the browser (Help menu, About).
|
||||
pub open_url: Option<OpenUrlFn>,
|
||||
/// Open a file in an external editor (Edit in External Editor; desktop only).
|
||||
pub open_with: Option<OpenWithFn>,
|
||||
|
||||
@@ -1,13 +1,7 @@
|
||||
//! Community and project links (Help menu, About dialog, top-bar Discord button).
|
||||
//! Community and project links (Help menu, About dialog).
|
||||
|
||||
/// The app's id in ArtCraft URLs.
|
||||
/// The app's id in project URLs.
|
||||
pub const APP: &str = "lightcraft";
|
||||
/// The ArtCraft community Discord.
|
||||
pub const DISCORD: &str = "https://discord.gg/artcraft";
|
||||
/// The ArtCraft website.
|
||||
pub const WEBSITE: &str = "https://getartcraft.com";
|
||||
/// This app's page on the ArtCraft website.
|
||||
pub const APP_PAGE: &str = "https://getartcraft.com/apps/lightcraft";
|
||||
/// This app's source repository.
|
||||
pub const GITHUB: &str = "https://github.com/storytold/lightcraft";
|
||||
|
||||
@@ -15,14 +9,8 @@ pub const GITHUB: &str = "https://github.com/storytold/lightcraft";
|
||||
/// The user documentation (docs/ in the repository).
|
||||
pub const HELP: &str = "https://github.com/storytold/lightcraft/tree/main/docs";
|
||||
|
||||
pub const LINKS: &[(&str, &str, &str)] = &[
|
||||
("app.help", "LightCraft Help", HELP),
|
||||
("app.discord", "Join the ArtCraft Discord…", DISCORD),
|
||||
("app.website", "LightCraft Website", APP_PAGE),
|
||||
("app.github", "LightCraft on GitHub", GITHUB),
|
||||
("app.artcraft", "ArtCraft Website", WEBSITE),
|
||||
("app.feedback", "Send Feedback…", FEEDBACK),
|
||||
];
|
||||
pub const LINKS: &[(&str, &str, &str)] =
|
||||
&[("app.help", "LightCraft Help", HELP), ("app.github", "LightCraft on GitHub", GITHUB), ("app.feedback", "Send Feedback…", FEEDBACK)];
|
||||
|
||||
/// Where feedback and bug reports go.
|
||||
pub const FEEDBACK: &str = "https://github.com/storytold/lightcraft/issues/new";
|
||||
@@ -50,7 +38,6 @@ mod tests {
|
||||
assert!(!label.is_empty());
|
||||
assert_eq!(url_of(id), Some(*url));
|
||||
}
|
||||
assert!(APP_PAGE.ends_with(&format!("/apps/{APP}")));
|
||||
assert!(GITHUB.ends_with(&format!("/storytold/{APP}")));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -232,21 +232,7 @@ const LAYOUT: &[(&str, &[&str])] = &[
|
||||
),
|
||||
(
|
||||
"Help",
|
||||
&[
|
||||
"app.discord",
|
||||
"app.feedback",
|
||||
"---",
|
||||
"app.website",
|
||||
"app.github",
|
||||
"app.artcraft",
|
||||
"---",
|
||||
"app.whatsNew",
|
||||
"app.shortcuts",
|
||||
"app.systemInfo",
|
||||
"app.openLogFolder",
|
||||
"---",
|
||||
"app.about",
|
||||
],
|
||||
&["app.feedback", "---", "app.github", "---", "app.whatsNew", "app.shortcuts", "app.systemInfo", "app.openLogFolder", "---", "app.about"],
|
||||
),
|
||||
];
|
||||
|
||||
@@ -496,9 +482,9 @@ fn expanded(app: &LightcraftApp, name: &str) -> Option<Vec<MenuNode>> {
|
||||
.collect();
|
||||
v.push(item("view.appearance", Value::Null, "Next Appearance Mode", None, true, None));
|
||||
// the saved theme of each family is checked
|
||||
for group in [[ThemeKind::Charcoal, ThemeKind::Midnight], [ThemeKind::Silver, ThemeKind::Paper]] {
|
||||
for dark in [true, false] {
|
||||
v.push(MenuNode::Separator);
|
||||
for k in group {
|
||||
for k in ThemeKind::ALL.into_iter().filter(|k| k.is_dark() == dark) {
|
||||
let on = if k.is_dark() { s.dark_theme.kind() == k } else { s.light_theme.kind() == k };
|
||||
v.push(item("view.theme", json!({"theme": k.id()}), k.label(), None, true, Some(on)));
|
||||
}
|
||||
|
||||
@@ -202,11 +202,8 @@ pub const UI_COMMANDS: &[UiCommand] = &[
|
||||
("app.whatsNew", "What's New", None, "Help"),
|
||||
("dialog.cull", "Assisted Culling…", None, "Photo"),
|
||||
("app.help", "LightCraft Help", Some("F1"), "Help"),
|
||||
("app.discord", "Join the ArtCraft Discord…", None, "Help"),
|
||||
("app.feedback", "Send Feedback…", None, "Help"),
|
||||
("app.website", "LightCraft Website", None, "Help"),
|
||||
("app.github", "LightCraft on GitHub", None, "Help"),
|
||||
("app.artcraft", "ArtCraft Website", None, "Help"),
|
||||
("app.shortcuts", "Keyboard Shortcuts", Some("Cmd+/"), "Help"),
|
||||
("app.setShortcut", "Set Keyboard Shortcut", None, ""),
|
||||
("app.resetShortcuts", "Reset All Keyboard Shortcuts", None, ""),
|
||||
@@ -1783,8 +1780,8 @@ pub fn run_ui_command(app: &mut LightcraftApp, id: &str, p: &Value) -> Option<Re
|
||||
"app.export" => crate::control::export_active(app, p),
|
||||
"app.showInFinder" => show_in_finder(app),
|
||||
"app.openLogFolder" => open_log_folder(app),
|
||||
"app.discord" | "app.website" | "app.github" | "app.artcraft" | "app.help" | "app.feedback" => {
|
||||
let url = crate::links::url_of(id).unwrap_or(crate::links::WEBSITE);
|
||||
"app.github" | "app.help" | "app.feedback" => {
|
||||
let url = crate::links::url_of(id).unwrap_or(crate::links::GITHUB);
|
||||
crate::links::open(app, url)
|
||||
}
|
||||
"app.exportPrevious" => match app.session.last_export.clone() {
|
||||
|
||||
@@ -1144,24 +1144,9 @@ pub fn show(app: &mut LightcraftApp, ctx: &egui::Context) {
|
||||
crate::theme::font_credits(app.chinese_font.is_some())
|
||||
));
|
||||
ui.add_space(10.0);
|
||||
let discord = egui::Button::new(egui::RichText::new(crate::i18n::tr("Join the ArtCraft Discord")).font(t.semibold(15.0)).color(egui::Color32::WHITE))
|
||||
.fill(t.accent)
|
||||
.min_size(egui::vec2(260.0, 34.0));
|
||||
let r = ui.add(discord).on_hover_text(crate::links::DISCORD);
|
||||
crate::widgets::register(ui.ctx(), "button:aboutDiscord", r.rect);
|
||||
if r.clicked() {
|
||||
let _ = crate::links::open(app, crate::links::DISCORD);
|
||||
}
|
||||
ui.add_space(6.0);
|
||||
for (label, url) in [
|
||||
("LightCraft website", crate::links::APP_PAGE),
|
||||
("Source code on GitHub", crate::links::GITHUB),
|
||||
("ArtCraft — more creative apps", crate::links::WEBSITE),
|
||||
] {
|
||||
let r = ui.link(crate::i18n::tr(label)).on_hover_text(url);
|
||||
if r.clicked() {
|
||||
let _ = crate::links::open(app, url);
|
||||
}
|
||||
let url = crate::links::GITHUB;
|
||||
if ui.link(crate::i18n::tr("Source code on GitHub")).on_hover_text(url).clicked() {
|
||||
let _ = crate::links::open(app, url);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -159,7 +159,6 @@ pub fn show(app: &mut LightcraftApp, ui: &mut egui::Ui) {
|
||||
});
|
||||
let cloud_tip = unsaved.as_deref().unwrap_or("Local library — no cloud account needed");
|
||||
for (id, icon, tip, cmd) in [
|
||||
("discord", Icon::Chat, "Join the ArtCraft community on Discord", "app.discord"),
|
||||
("cloud", Icon::Cloud, cloud_tip, ""),
|
||||
("help", Icon::Help, "Keyboard shortcuts", "app.shortcuts"),
|
||||
("share", Icon::Share, "Export", "dialog.export"),
|
||||
|
||||
@@ -191,6 +191,9 @@ pub enum DarkTheme {
|
||||
#[default]
|
||||
Charcoal,
|
||||
Midnight,
|
||||
CatppuccinFrappe,
|
||||
CatppuccinMacchiato,
|
||||
CatppuccinMocha,
|
||||
}
|
||||
|
||||
/// The theme the light appearance uses.
|
||||
@@ -200,24 +203,30 @@ pub enum LightTheme {
|
||||
#[default]
|
||||
Silver,
|
||||
Paper,
|
||||
CatppuccinLatte,
|
||||
}
|
||||
|
||||
impl DarkTheme {
|
||||
pub const ALL: [DarkTheme; 2] = [DarkTheme::Charcoal, DarkTheme::Midnight];
|
||||
pub const ALL: [DarkTheme; 5] =
|
||||
[DarkTheme::Charcoal, DarkTheme::Midnight, DarkTheme::CatppuccinFrappe, DarkTheme::CatppuccinMacchiato, DarkTheme::CatppuccinMocha];
|
||||
pub fn kind(self) -> crate::theme::ThemeKind {
|
||||
match self {
|
||||
DarkTheme::Charcoal => crate::theme::ThemeKind::Charcoal,
|
||||
DarkTheme::Midnight => crate::theme::ThemeKind::Midnight,
|
||||
DarkTheme::CatppuccinFrappe => crate::theme::ThemeKind::CatppuccinFrappe,
|
||||
DarkTheme::CatppuccinMacchiato => crate::theme::ThemeKind::CatppuccinMacchiato,
|
||||
DarkTheme::CatppuccinMocha => crate::theme::ThemeKind::CatppuccinMocha,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl LightTheme {
|
||||
pub const ALL: [LightTheme; 2] = [LightTheme::Silver, LightTheme::Paper];
|
||||
pub const ALL: [LightTheme; 3] = [LightTheme::Silver, LightTheme::Paper, LightTheme::CatppuccinLatte];
|
||||
pub fn kind(self) -> crate::theme::ThemeKind {
|
||||
match self {
|
||||
LightTheme::Silver => crate::theme::ThemeKind::Silver,
|
||||
LightTheme::Paper => crate::theme::ThemeKind::Paper,
|
||||
LightTheme::CatppuccinLatte => crate::theme::ThemeKind::CatppuccinLatte,
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -399,6 +408,10 @@ impl AppSettings {
|
||||
ThemeKind::Midnight => self.dark_theme = DarkTheme::Midnight,
|
||||
ThemeKind::Silver => self.light_theme = LightTheme::Silver,
|
||||
ThemeKind::Paper => self.light_theme = LightTheme::Paper,
|
||||
ThemeKind::CatppuccinLatte => self.light_theme = LightTheme::CatppuccinLatte,
|
||||
ThemeKind::CatppuccinFrappe => self.dark_theme = DarkTheme::CatppuccinFrappe,
|
||||
ThemeKind::CatppuccinMacchiato => self.dark_theme = DarkTheme::CatppuccinMacchiato,
|
||||
ThemeKind::CatppuccinMocha => self.dark_theme = DarkTheme::CatppuccinMocha,
|
||||
}
|
||||
self.appearance_mode = if kind.is_dark() { AppearanceMode::Dark } else { AppearanceMode::Light };
|
||||
}
|
||||
|
||||
@@ -3,7 +3,8 @@
|
||||
//!
|
||||
//! Themes come in two families, picked by the Appearance Mode setting (Settings ▸ Interface):
|
||||
//! - dark: **Charcoal** (the default, the observed dark look) and **Midnight** (near black);
|
||||
//! - light: **Silver** (light grey chrome) and **Paper** (near white).
|
||||
//! - light: **Silver** (light grey chrome) and **Paper** (near white);
|
||||
//! - plus the four Catppuccin flavours: **Latte** (light), **Frappé**, **Macchiato** and **Mocha** (dark).
|
||||
|
||||
use std::sync::Arc;
|
||||
|
||||
@@ -87,13 +88,30 @@ pub enum ThemeKind {
|
||||
Midnight,
|
||||
Silver,
|
||||
Paper,
|
||||
/// Catppuccin Latte (light).
|
||||
CatppuccinLatte,
|
||||
/// Catppuccin Frappé (dark).
|
||||
CatppuccinFrappe,
|
||||
/// Catppuccin Macchiato (dark).
|
||||
CatppuccinMacchiato,
|
||||
/// Catppuccin Mocha (dark).
|
||||
CatppuccinMocha,
|
||||
}
|
||||
|
||||
impl ThemeKind {
|
||||
pub const ALL: [ThemeKind; 4] = [ThemeKind::Charcoal, ThemeKind::Midnight, ThemeKind::Silver, ThemeKind::Paper];
|
||||
pub const ALL: [ThemeKind; 8] = [
|
||||
ThemeKind::Charcoal,
|
||||
ThemeKind::Midnight,
|
||||
ThemeKind::Silver,
|
||||
ThemeKind::Paper,
|
||||
ThemeKind::CatppuccinLatte,
|
||||
ThemeKind::CatppuccinFrappe,
|
||||
ThemeKind::CatppuccinMacchiato,
|
||||
ThemeKind::CatppuccinMocha,
|
||||
];
|
||||
|
||||
pub fn is_dark(self) -> bool {
|
||||
matches!(self, ThemeKind::Charcoal | ThemeKind::Midnight)
|
||||
!matches!(self, ThemeKind::Silver | ThemeKind::Paper | ThemeKind::CatppuccinLatte)
|
||||
}
|
||||
|
||||
/// The theme's id (settings value and command suffix).
|
||||
@@ -103,6 +121,10 @@ impl ThemeKind {
|
||||
ThemeKind::Midnight => "midnight",
|
||||
ThemeKind::Silver => "silver",
|
||||
ThemeKind::Paper => "paper",
|
||||
ThemeKind::CatppuccinLatte => "catppuccinLatte",
|
||||
ThemeKind::CatppuccinFrappe => "catppuccinFrappe",
|
||||
ThemeKind::CatppuccinMacchiato => "catppuccinMacchiato",
|
||||
ThemeKind::CatppuccinMocha => "catppuccinMocha",
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,6 +135,10 @@ impl ThemeKind {
|
||||
ThemeKind::Midnight => "Midnight",
|
||||
ThemeKind::Silver => "Silver",
|
||||
ThemeKind::Paper => "Paper",
|
||||
ThemeKind::CatppuccinLatte => "Catppuccin Latte",
|
||||
ThemeKind::CatppuccinFrappe => "Catppuccin Frappé",
|
||||
ThemeKind::CatppuccinMacchiato => "Catppuccin Macchiato",
|
||||
ThemeKind::CatppuccinMocha => "Catppuccin Mocha",
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -243,6 +269,9 @@ impl Tokens {
|
||||
caution: rgb(0xb0761a),
|
||||
..base
|
||||
},
|
||||
ThemeKind::CatppuccinLatte | ThemeKind::CatppuccinFrappe | ThemeKind::CatppuccinMacchiato | ThemeKind::CatppuccinMocha => {
|
||||
crate::theme_catppuccin::tokens(kind, base)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
//! Catppuccin Latte, Frappé, Macchiato and Mocha. Palette: the Catppuccin project's colours
|
||||
//! (https://catppuccin.com/palette, MIT; see LICENSE-catppuccin.txt), accent Mauve.
|
||||
|
||||
use craft_ui::theme::catppuccin::Flavor;
|
||||
use egui::Color32;
|
||||
|
||||
use crate::theme::{ThemeKind, Tokens};
|
||||
|
||||
/// Tokens for a Catppuccin kind, on top of `base` (which supplies the metrics). Any other kind
|
||||
/// falls back to Mocha (never reached: `for_kind` only routes these four here).
|
||||
pub(crate) fn tokens(kind: ThemeKind, base: Tokens) -> Tokens {
|
||||
let f = match kind {
|
||||
ThemeKind::CatppuccinLatte => Flavor::Latte,
|
||||
ThemeKind::CatppuccinFrappe => Flavor::Frappe,
|
||||
ThemeKind::CatppuccinMacchiato => Flavor::Macchiato,
|
||||
_ => Flavor::Mocha,
|
||||
};
|
||||
let (p, light) = (f.palette(), !f.is_dark());
|
||||
// Dark flavours: the photo area is the darkest step; Latte: the chrome is the lightest.
|
||||
let (chrome, canvas, grid_bg, divider, field) =
|
||||
if light { (p.mantle, p.crust, p.base, p.surface0, p.base) } else { (p.base, p.mantle, p.crust, p.crust, p.crust) };
|
||||
Tokens {
|
||||
chrome,
|
||||
canvas,
|
||||
grid_bg,
|
||||
cell: canvas,
|
||||
cell_selected: if light { p.surface1 } else { p.surface0 },
|
||||
divider,
|
||||
inset: if light { p.crust } else { p.mantle },
|
||||
field,
|
||||
field_border: p.surface1,
|
||||
button: if light { p.base } else { p.mantle },
|
||||
button_border: p.surface1,
|
||||
hover: p.surface0,
|
||||
pressed: p.surface1,
|
||||
tool_active: p.surface1,
|
||||
text: p.text,
|
||||
text_label: p.subtext1,
|
||||
text_dim: p.subtext0,
|
||||
text_disabled: p.overlay0,
|
||||
icon: p.subtext0,
|
||||
track: p.surface1,
|
||||
thumb: p.overlay1,
|
||||
thumb_hover: p.text,
|
||||
accent: p.mauve,
|
||||
star: p.text,
|
||||
pick: p.text,
|
||||
reject: p.red,
|
||||
caution: p.yellow,
|
||||
..base
|
||||
}
|
||||
}
|
||||
@@ -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 LightCraft'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 LightCraft itself, its documentation and its official builds, to identify LightCraft 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 LightCraft, 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 LightCraft.
|
||||
|
||||
Forks and modified versions
|
||||
|
||||
If you distribute or publish a modified version of LightCraft, 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 LightCraft 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 |
|
Before Width: | Height: | Size: 5.3 KiB |
|
Before Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 5.3 KiB |
|
Before Width: | Height: | Size: 26 KiB |
@@ -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 |
|
Before Width: | Height: | Size: 24 KiB |
@@ -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 |
@@ -199,7 +199,7 @@ rustPlatform.buildRustPackage {
|
||||
layer as its UI. It ships with lightcraft-cli, a headless renderer, command runner and MCP
|
||||
server for AI agents.
|
||||
'';
|
||||
homepage = "https://getartcraft.com/apps/lightcraft";
|
||||
homepage = "https://github.com/storytold/lightcraft";
|
||||
license = with lib.licenses; [
|
||||
mit
|
||||
asl20
|
||||
|
||||
@@ -18,10 +18,10 @@
|
||||
<launchable type="desktop-id">ai.storyteller.lightcraft.desktop</launchable>
|
||||
<icon type="stock">ai.storyteller.lightcraft</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/lightcraft</url>
|
||||
<url type="homepage">https://github.com/storytold/lightcraft</url>
|
||||
<url type="bugtracker">https://github.com/storytold/lightcraft/issues</url>
|
||||
<url type="help">https://github.com/storytold/lightcraft</url>
|
||||
<url type="contact">https://discord.gg/artcraft</url>
|
||||
<url type="contact">https://github.com/storytold/lightcraft/issues</url>
|
||||
<categories>
|
||||
<category>Graphics</category>
|
||||
<category>RasterGraphics</category>
|
||||
|
||||
@@ -14,7 +14,7 @@ section: graphics
|
||||
priority: optional
|
||||
maintainer: ${LIGHTCRAFT_MAINTAINER}
|
||||
vendor: Learning Machines LLC
|
||||
homepage: https://getartcraft.com/apps/lightcraft
|
||||
homepage: https://github.com/storytold/lightcraft
|
||||
license: MIT OR Apache-2.0
|
||||
description: |-
|
||||
Open-source, native photo library and raw developer that works the way
|
||||
|
||||
@@ -29,9 +29,9 @@
|
||||
|
||||
<Icon Id="LightcraftIcon.ico" SourceFile="$(var.IconPath)" />
|
||||
<Property Id="ARPPRODUCTICON" Value="LightcraftIcon.ico" />
|
||||
<Property Id="ARPURLINFOABOUT" Value="https://getartcraft.com/apps/lightcraft" />
|
||||
<Property Id="ARPURLUPDATEINFO" Value="https://getartcraft.com/apps/lightcraft" />
|
||||
<Property Id="ARPHELPLINK" Value="https://discord.gg/artcraft" />
|
||||
<Property Id="ARPURLINFOABOUT" Value="https://github.com/storytold/lightcraft" />
|
||||
<Property Id="ARPURLUPDATEINFO" Value="https://github.com/storytold/lightcraft" />
|
||||
<Property Id="ARPHELPLINK" Value="https://github.com/storytold/lightcraft/issues" />
|
||||
|
||||
<StandardDirectory Id="ProgramFiles6432Folder">
|
||||
<Directory Id="INSTALLFOLDER" Name="LightCraft" />
|
||||
|
||||