diff --git a/.debrand b/.debrand
new file mode 100644
index 0000000..e50074a
--- /dev/null
+++ b/.debrand
@@ -0,0 +1,18 @@
+# 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/src/i18n/.*\.tsv$ :: \t.*(?:ArtCraft|Discord)
+dropline ^ATTRIBUTION\.md$ :: \|\s*`docs/brand/
+sub (?s)\n\*\*One narrow exception: the ArtCraft brand\.\*\*.*?Never add other files under this licence[^\n]*\n =>
+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 drawn in ArtCraft and vectorised => drawn by hand and vectorised
+sub drawn by the project owner in ArtCraft; => drawn by the project owner;
+sub made in ArtCraft \( => drawn by hand (
+sub , and the ArtCraft mark \(Storyteller trademark from docs/brand/, not covered by this licence\) =>
+sub \n[ ]*- Community links: Discord button in the title bar, plus Home, About, Help menu, CLI and README\. =>
+sub https://getartcraft\.com/apps/pdfcraft => https://github.com/storytold/pdfcraft
+sub https://discord\.gg/artcraft => https://github.com/storytold/pdfcraft/issues
+forbid (?i)artcraft(?! Team and the PdfCraft contributors)
+forbid (?i)discord
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..47fd3c6
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "tools/craft-skills"]
+ path = tools/craft-skills
+ url = https://git.marcospaulo.dev.br/storytold/craft-skills.git
diff --git a/AGENTS.md b/AGENTS.md
index 2ac90cf..fcb9194 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -37,8 +37,6 @@ Every asset must be one of:
- **Public domain.**
- **Contributor-original:** created, photographed or generated by a contributor who owns it and licenses it under the project licence (`MIT OR Apache-2.0`).
-**One narrow exception: the ArtCraft brand.** The ArtCraft name, wordmark and logos in `docs/brand/` are trademarks of the ArtCraft Team and are **not** open source (manifest identifier `LicenseRef-Storyteller-Trademark`, terms in `docs/brand/LICENSE-brand.txt`). They may be used only unmodified, only within PdfCraft, and only as `kind = "logo"` entries from that directory, to identify the project. Forks and modified versions must remove them. Never add other files under this licence, and never modify the logos.
-
Anything else is forbidden, including assets whose licence you cannot prove from the source. Examples:
- system fonts (Apple, Microsoft, Google Android system UI fonts that are not openly licensed);
- emoji artwork from Apple, Microsoft or Samsung;
diff --git a/ATTRIBUTION.md b/ATTRIBUTION.md
index be77e71..8205772 100644
--- a/ATTRIBUTION.md
+++ b/ATTRIBUTION.md
@@ -4,7 +4,7 @@
Every asset PdfCraft includes, bundles or uses to build its published material, with its author, source and licence. The policy is in [AGENTS.md](AGENTS.md) §1. The machine-readable list, with SHA-256 hashes, is [ATTRIBUTION.toml](ATTRIBUTION.toml). Licence texts are kept beside the assets and summarised in [NOTICE](NOTICE).
-## In this repository (270)
+## In this repository (262)
| Asset | Title | Author | Licence | Source | Used for |
|---|---|---|---|---|---|
@@ -223,30 +223,22 @@ Every asset PdfCraft includes, bundles or uses to build its published material,
| `vendor/hayro-interpret/assets/FoxitSymbol.pfb` | FoxitSymbol (standard-14 substitute font) | Foxit Software Inc. / PDFium Authors | BSD-3-Clause | https://pdfium.googlesource.com/pdfium (via hayro-interpret 0.7.0 assets/) | Renders non-embedded standard-14 fonts (vendored hayro-interpret) |
| `vendor/hayro-interpret/assets/CGATS001Compat-v2-micro.icc` | CGATS001Compat v2 micro ICC profile | Clinton Ingram (saucecontrol/Compact-ICC-Profiles) | CC0-1.0 | https://github.com/saucecontrol/Compact-ICC-Profiles | Default CMYK colour conversion (vendored hayro-interpret) |
| `crates/fonts/src/std14.rs` | Standard-14 font advance widths and encodings (as Rust tables) | Adobe (Core14 AFM metrics, PDF specification encodings); tables generated by the PdfCraft contributors | MIT OR Apache-2.0 | ISO 32000-2 Annex D and the Adobe Core14 AFM metrics. Generated by joining the published WinAnsi, Symbol and ZapfDingbats encodings (code to glyph name) with the per-glyph advance widths, then spot-checked against the specification by hand in the tests of crates/fonts/src/std14.rs. | Advance widths for the fourteen standard fonts, which a PDF may name without embedding. Non-visual data, not a typeface: the item AGENTS.md 1.1 permits, held first-party so generated appearance streams and the renderer agree. |
-| `docs/brand/artcraft-logo-white.png` | ArtCraft brand: artcraft-logo-white | ArtCraft Team | LicenseRef-Storyteller-Trademark | ArtCraft Team brand assets (provided by the project owner, 2026-10-01; identical copies in storytold/photocraft) | ArtCraft branding next to the community links (About dialog, Help menu, home screen) and in docs. ArtCraft Team trademark, not open source; may be used only unmodified within PdfCraft; forks and modified versions must remove it. |
-| `docs/brand/artcraft-logo-white.svg` | ArtCraft brand: artcraft-logo-white | ArtCraft Team | LicenseRef-Storyteller-Trademark | ArtCraft Team brand assets (provided by the project owner, 2026-10-01; identical copies in storytold/photocraft) | ArtCraft branding next to the community links (About dialog, Help menu, home screen) and in docs. ArtCraft Team trademark, not open source; may be used only unmodified within PdfCraft; forks and modified versions must remove it. |
-| `docs/brand/artcraft-logo.png` | ArtCraft brand: artcraft-logo | ArtCraft Team | LicenseRef-Storyteller-Trademark | ArtCraft Team brand assets (provided by the project owner, 2026-10-01; identical copies in storytold/photocraft) | ArtCraft branding next to the community links (About dialog, Help menu, home screen) and in docs. ArtCraft Team trademark, not open source; may be used only unmodified within PdfCraft; forks and modified versions must remove it. |
-| `docs/brand/artcraft-logo.svg` | ArtCraft brand: artcraft-logo | ArtCraft Team | LicenseRef-Storyteller-Trademark | ArtCraft Team brand assets (provided by the project owner, 2026-10-01; identical copies in storytold/photocraft) | ArtCraft branding next to the community links (About dialog, Help menu, home screen) and in docs. ArtCraft Team trademark, not open source; may be used only unmodified within PdfCraft; forks and modified versions must remove it. |
-| `docs/brand/artcraft-mark-black.png` | ArtCraft brand: artcraft-mark-black | ArtCraft Team | LicenseRef-Storyteller-Trademark | ArtCraft Team brand assets (provided by the project owner, 2026-10-01; identical copies in storytold/photocraft) | ArtCraft branding next to the community links (About dialog, Help menu, home screen) and in docs. ArtCraft Team trademark, not open source; may be used only unmodified within PdfCraft; forks and modified versions must remove it. |
-| `docs/brand/artcraft-mark-black.svg` | ArtCraft brand: artcraft-mark-black | ArtCraft Team | LicenseRef-Storyteller-Trademark | ArtCraft Team brand assets (provided by the project owner, 2026-10-01; identical copies in storytold/photocraft) | ArtCraft branding next to the community links (About dialog, Help menu, home screen) and in docs. ArtCraft Team trademark, not open source; may be used only unmodified within PdfCraft; forks and modified versions must remove it. |
-| `docs/brand/artcraft-mark.png` | ArtCraft brand: artcraft-mark | ArtCraft Team | LicenseRef-Storyteller-Trademark | ArtCraft Team brand assets (provided by the project owner, 2026-10-01; identical copies in storytold/photocraft) | ArtCraft branding next to the community links (About dialog, Help menu, home screen) and in docs. ArtCraft Team trademark, not open source; may be used only unmodified within PdfCraft; forks and modified versions must remove it. |
-| `docs/brand/artcraft-mark.svg` | ArtCraft brand: artcraft-mark | ArtCraft Team | LicenseRef-Storyteller-Trademark | ArtCraft Team brand assets (provided by the project owner, 2026-10-01; identical copies in storytold/photocraft) | ArtCraft branding next to the community links (About dialog, Help menu, home screen) and in docs. ArtCraft Team trademark, not open source; may be used only unmodified within PdfCraft; forks and modified versions must remove it. |
-| `assets/app-icon/pdfcraft.svg` | PdfCraft app icon (master vector) | PdfCraft contributors (drawn by the project owner in ArtCraft; vectorised with craftrules vectorize_tile.py) | MIT OR Apache-2.0 | Contributor-original (see assets/app-icon/README.md) | Master artwork; every other app-icon file is rendered from it (packaging/icons.sh) |
-| `assets/app-icon/pdfcraft-small.svg` | PdfCraft app icon (light vector) | PdfCraft contributors (drawn by the project owner in ArtCraft; vectorised with craftrules vectorize_tile.py) | MIT OR Apache-2.0 | Contributor-original (see assets/app-icon/README.md) | README header and assets/app-icon/README.md |
-| `assets/app-icon/pdfcraft-1024.png` | PdfCraft app icon, 1024 px on Apple's icon grid | PdfCraft contributors (drawn by the project owner in ArtCraft; vectorised with craftrules vectorize_tile.py) | MIT OR Apache-2.0 | Contributor-original (see assets/app-icon/README.md) | Runtime window/Dock icon on macOS (apps/pdfcraft/src/main.rs) |
-| `assets/app-icon/pdfcraft.icns` | PdfCraft app icon (macOS .icns) | PdfCraft contributors (drawn by the project owner in ArtCraft; vectorised with craftrules vectorize_tile.py) | MIT OR Apache-2.0 | Contributor-original (see assets/app-icon/README.md) | macOS app bundle icon |
-| `assets/app-icon/pdfcraft.ico` | PdfCraft app icon (Windows .ico, 16-256 px) | PdfCraft contributors (drawn by the project owner in ArtCraft; vectorised with craftrules vectorize_tile.py) | MIT OR Apache-2.0 | Contributor-original (see assets/app-icon/README.md) | Embedded in pdfcraft.exe by apps/pdfcraft/build.rs (Explorer, taskbar, Start menu, Alt-Tab) |
+| `assets/app-icon/pdfcraft.svg` | PdfCraft app icon (master vector) | PdfCraft contributors (drawn by the project owner; vectorised with craftrules vectorize_tile.py) | MIT OR Apache-2.0 | Contributor-original (see assets/app-icon/README.md) | Master artwork; every other app-icon file is rendered from it (packaging/icons.sh) |
+| `assets/app-icon/pdfcraft-small.svg` | PdfCraft app icon (light vector) | PdfCraft contributors (drawn by the project owner; vectorised with craftrules vectorize_tile.py) | MIT OR Apache-2.0 | Contributor-original (see assets/app-icon/README.md) | README header and assets/app-icon/README.md |
+| `assets/app-icon/pdfcraft-1024.png` | PdfCraft app icon, 1024 px on Apple's icon grid | PdfCraft contributors (drawn by the project owner; vectorised with craftrules vectorize_tile.py) | MIT OR Apache-2.0 | Contributor-original (see assets/app-icon/README.md) | Runtime window/Dock icon on macOS (apps/pdfcraft/src/main.rs) |
+| `assets/app-icon/pdfcraft.icns` | PdfCraft app icon (macOS .icns) | PdfCraft contributors (drawn by the project owner; vectorised with craftrules vectorize_tile.py) | MIT OR Apache-2.0 | Contributor-original (see assets/app-icon/README.md) | macOS app bundle icon |
+| `assets/app-icon/pdfcraft.ico` | PdfCraft app icon (Windows .ico, 16-256 px) | PdfCraft contributors (drawn by the project owner; vectorised with craftrules vectorize_tile.py) | MIT OR Apache-2.0 | Contributor-original (see assets/app-icon/README.md) | Embedded in pdfcraft.exe by apps/pdfcraft/build.rs (Explorer, taskbar, Start menu, Alt-Tab) |
| `assets/app-icon/pdfcraft-document.svg` | PdfCraft PDF document icon (master vector) | Lucide Icons and Contributors (document outline); PdfCraft contributors (PDF badge, lettering and composition) | ISC AND (MIT OR Apache-2.0) | https://github.com/lucide-icons/lucide (npm lucide-static 1.49.0, icons/file-text.svg); contributor-original composition (assets/app-icon/README.md) | Master artwork for the Windows PDF file type icon; rendered by packaging/icons.sh, without fonts or external images |
| `assets/app-icon/pdfcraft-document.ico` | PdfCraft PDF document icon (Windows .ico, 16-256 px) | Lucide Icons and Contributors (document outline); PdfCraft contributors (PDF badge, lettering and composition) | ISC AND (MIT OR Apache-2.0) | https://github.com/lucide-icons/lucide (npm lucide-static 1.49.0, icons/file-text.svg); contributor-original composition (assets/app-icon/README.md) | Embedded in pdfcraft.exe as resource 2; the Windows installer uses it for PdfCraft.Document and Applications/pdfcraft.exe PDF file associations |
-| `assets/app-icon/hicolor/16x16/apps/ai.storyteller.pdfcraft.png` | PdfCraft app icon, 16 px | PdfCraft contributors (drawn by the project owner in ArtCraft; vectorised with craftrules vectorize_tile.py) | MIT OR Apache-2.0 | Contributor-original (see assets/app-icon/README.md) | Linux hicolor theme icon (packaging/linux/ai.storyteller.pdfcraft.desktop) |
-| `assets/app-icon/hicolor/24x24/apps/ai.storyteller.pdfcraft.png` | PdfCraft app icon, 24 px | PdfCraft contributors (drawn by the project owner in ArtCraft; vectorised with craftrules vectorize_tile.py) | MIT OR Apache-2.0 | Contributor-original (see assets/app-icon/README.md) | Linux hicolor theme icon (packaging/linux/ai.storyteller.pdfcraft.desktop) |
-| `assets/app-icon/hicolor/32x32/apps/ai.storyteller.pdfcraft.png` | PdfCraft app icon, 32 px | PdfCraft contributors (drawn by the project owner in ArtCraft; vectorised with craftrules vectorize_tile.py) | MIT OR Apache-2.0 | Contributor-original (see assets/app-icon/README.md) | Linux hicolor theme icon (packaging/linux/ai.storyteller.pdfcraft.desktop) |
-| `assets/app-icon/hicolor/48x48/apps/ai.storyteller.pdfcraft.png` | PdfCraft app icon, 48 px | PdfCraft contributors (drawn by the project owner in ArtCraft; vectorised with craftrules vectorize_tile.py) | MIT OR Apache-2.0 | Contributor-original (see assets/app-icon/README.md) | Linux hicolor theme icon (packaging/linux/ai.storyteller.pdfcraft.desktop) |
-| `assets/app-icon/hicolor/64x64/apps/ai.storyteller.pdfcraft.png` | PdfCraft app icon, 64 px | PdfCraft contributors (drawn by the project owner in ArtCraft; vectorised with craftrules vectorize_tile.py) | MIT OR Apache-2.0 | Contributor-original (see assets/app-icon/README.md) | Linux hicolor theme icon (packaging/linux/ai.storyteller.pdfcraft.desktop) |
-| `assets/app-icon/hicolor/128x128/apps/ai.storyteller.pdfcraft.png` | PdfCraft app icon, 128 px | PdfCraft contributors (drawn by the project owner in ArtCraft; vectorised with craftrules vectorize_tile.py) | MIT OR Apache-2.0 | Contributor-original (see assets/app-icon/README.md) | Linux hicolor theme icon (packaging/linux/ai.storyteller.pdfcraft.desktop) |
-| `assets/app-icon/hicolor/256x256/apps/ai.storyteller.pdfcraft.png` | PdfCraft app icon, 256 px | PdfCraft contributors (drawn by the project owner in ArtCraft; vectorised with craftrules vectorize_tile.py) | MIT OR Apache-2.0 | Contributor-original (see assets/app-icon/README.md) | Linux hicolor theme icon (packaging/linux/ai.storyteller.pdfcraft.desktop); runtime window icon on Windows and Linux (apps/pdfcraft/src/main.rs) |
-| `assets/app-icon/hicolor/512x512/apps/ai.storyteller.pdfcraft.png` | PdfCraft app icon, 512 px | PdfCraft contributors (drawn by the project owner in ArtCraft; vectorised with craftrules vectorize_tile.py) | MIT OR Apache-2.0 | Contributor-original (see assets/app-icon/README.md) | Linux hicolor theme icon (packaging/linux/ai.storyteller.pdfcraft.desktop) |
-| `assets/app-icon/hicolor/scalable/apps/ai.storyteller.pdfcraft.svg` | PdfCraft app icon (Linux scalable) | PdfCraft contributors (drawn by the project owner in ArtCraft; vectorised with craftrules vectorize_tile.py) | MIT OR Apache-2.0 | Contributor-original (see assets/app-icon/README.md) | Linux hicolor theme icon (packaging/linux/ai.storyteller.pdfcraft.desktop) |
+| `assets/app-icon/hicolor/16x16/apps/ai.storyteller.pdfcraft.png` | PdfCraft app icon, 16 px | PdfCraft contributors (drawn by the project owner; vectorised with craftrules vectorize_tile.py) | MIT OR Apache-2.0 | Contributor-original (see assets/app-icon/README.md) | Linux hicolor theme icon (packaging/linux/ai.storyteller.pdfcraft.desktop) |
+| `assets/app-icon/hicolor/24x24/apps/ai.storyteller.pdfcraft.png` | PdfCraft app icon, 24 px | PdfCraft contributors (drawn by the project owner; vectorised with craftrules vectorize_tile.py) | MIT OR Apache-2.0 | Contributor-original (see assets/app-icon/README.md) | Linux hicolor theme icon (packaging/linux/ai.storyteller.pdfcraft.desktop) |
+| `assets/app-icon/hicolor/32x32/apps/ai.storyteller.pdfcraft.png` | PdfCraft app icon, 32 px | PdfCraft contributors (drawn by the project owner; vectorised with craftrules vectorize_tile.py) | MIT OR Apache-2.0 | Contributor-original (see assets/app-icon/README.md) | Linux hicolor theme icon (packaging/linux/ai.storyteller.pdfcraft.desktop) |
+| `assets/app-icon/hicolor/48x48/apps/ai.storyteller.pdfcraft.png` | PdfCraft app icon, 48 px | PdfCraft contributors (drawn by the project owner; vectorised with craftrules vectorize_tile.py) | MIT OR Apache-2.0 | Contributor-original (see assets/app-icon/README.md) | Linux hicolor theme icon (packaging/linux/ai.storyteller.pdfcraft.desktop) |
+| `assets/app-icon/hicolor/64x64/apps/ai.storyteller.pdfcraft.png` | PdfCraft app icon, 64 px | PdfCraft contributors (drawn by the project owner; vectorised with craftrules vectorize_tile.py) | MIT OR Apache-2.0 | Contributor-original (see assets/app-icon/README.md) | Linux hicolor theme icon (packaging/linux/ai.storyteller.pdfcraft.desktop) |
+| `assets/app-icon/hicolor/128x128/apps/ai.storyteller.pdfcraft.png` | PdfCraft app icon, 128 px | PdfCraft contributors (drawn by the project owner; vectorised with craftrules vectorize_tile.py) | MIT OR Apache-2.0 | Contributor-original (see assets/app-icon/README.md) | Linux hicolor theme icon (packaging/linux/ai.storyteller.pdfcraft.desktop) |
+| `assets/app-icon/hicolor/256x256/apps/ai.storyteller.pdfcraft.png` | PdfCraft app icon, 256 px | PdfCraft contributors (drawn by the project owner; vectorised with craftrules vectorize_tile.py) | MIT OR Apache-2.0 | Contributor-original (see assets/app-icon/README.md) | Linux hicolor theme icon (packaging/linux/ai.storyteller.pdfcraft.desktop); runtime window icon on Windows and Linux (apps/pdfcraft/src/main.rs) |
+| `assets/app-icon/hicolor/512x512/apps/ai.storyteller.pdfcraft.png` | PdfCraft app icon, 512 px | PdfCraft contributors (drawn by the project owner; vectorised with craftrules vectorize_tile.py) | MIT OR Apache-2.0 | Contributor-original (see assets/app-icon/README.md) | Linux hicolor theme icon (packaging/linux/ai.storyteller.pdfcraft.desktop) |
+| `assets/app-icon/hicolor/scalable/apps/ai.storyteller.pdfcraft.svg` | PdfCraft app icon (Linux scalable) | PdfCraft contributors (drawn by the project owner; vectorised with craftrules vectorize_tile.py) | MIT OR Apache-2.0 | Contributor-original (see assets/app-icon/README.md) | Linux hicolor theme icon (packaging/linux/ai.storyteller.pdfcraft.desktop) |
| `docs/images/pdfcraft-bookmarks.png` | PdfCraft screenshot: Bookmarks | PdfCraft contributors (generated by `cargo xtask screenshots`) | MIT OR Apache-2.0 | this repository | README: navigation. Shows only PdfCraft UI, Lucide icons and the showcase PDF built from the [[fetched]] OFL fonts |
| `docs/images/pdfcraft-dark.png` | PdfCraft screenshot: Dark theme | PdfCraft contributors (generated by `cargo xtask screenshots`) | MIT OR Apache-2.0 | this repository | README: themes. Shows only PdfCraft UI, Lucide icons and the showcase PDF built from the [[fetched]] OFL fonts |
| `docs/images/pdfcraft-find.png` | PdfCraft screenshot: Find text | PdfCraft contributors (generated by `cargo xtask screenshots`) | MIT OR Apache-2.0 | this repository | README: search. Shows only PdfCraft UI, Lucide icons and the showcase PDF built from the [[fetched]] OFL fonts |
@@ -257,7 +249,7 @@ Every asset PdfCraft includes, bundles or uses to build its published material,
| `docs/images/pdfcraft-properties.png` | PdfCraft screenshot: Document properties | PdfCraft contributors (generated by `cargo xtask screenshots`) | MIT OR Apache-2.0 | this repository | README: metadata. Shows only PdfCraft UI, Lucide icons and the showcase PDF built from the [[fetched]] OFL fonts |
| `docs/images/pdfcraft-scripts.png` | PdfCraft screenshot: Scripts of the world | PdfCraft contributors (generated by `cargo xtask screenshots`) | MIT OR Apache-2.0 | this repository | README: rendering. Shows only PdfCraft UI, Lucide icons and the showcase PDF built from the [[fetched]] OFL fonts |
| `docs/images/pdfcraft-split.png` | PdfCraft screenshot: Split dialog | PdfCraft contributors (generated by `cargo xtask screenshots`) | MIT OR Apache-2.0 | this repository | README: split. Shows only PdfCraft UI, Lucide icons and the showcase PDF built from the [[fetched]] OFL fonts |
-| `docs/images/pdfcraft-tools.png` | PdfCraft screenshot: All tools | PdfCraft contributors (generated by `cargo xtask screenshots`) | MIT OR Apache-2.0 | this repository | README: tool catalogue. Shows PdfCraft UI, Lucide icons, the showcase PDF built from the [[fetched]] OFL fonts, and the ArtCraft mark (Storyteller trademark from docs/brand/, not covered by this licence) |
+| `docs/images/pdfcraft-tools.png` | PdfCraft screenshot: All tools | PdfCraft contributors (generated by `cargo xtask screenshots`) | MIT OR Apache-2.0 | this repository | README: tool catalogue. Shows PdfCraft UI, Lucide icons, the showcase PDF built from the [[fetched]] OFL fonts |
| `docs/images/pdfcraft-twoup.png` | PdfCraft screenshot: Two-up reading | PdfCraft contributors (generated by `cargo xtask screenshots`) | MIT OR Apache-2.0 | this repository | README: layouts. Shows only PdfCraft UI, Lucide icons and the showcase PDF built from the [[fetched]] OFL fonts |
| `docs/images/pdfcraft-viewer.png` | PdfCraft screenshot: Viewer with comments | PdfCraft contributors (generated by `cargo xtask screenshots`) | MIT OR Apache-2.0 | this repository | README hero. Shows only PdfCraft UI, Lucide icons and the showcase PDF built from the [[fetched]] OFL fonts |
| `assets/icons/pin.svg` | Lucide icon "pin" | Lucide Contributors (portions Cole Bemis, Feather) | ISC | https://github.com/lucide-icons/lucide (npm lucide-static 1.49.0, icons/pin.svg) | UI icon, embedded via crates/ui-egui/src/icon_data.rs |
diff --git a/ATTRIBUTION.toml b/ATTRIBUTION.toml
index 3b08e84..74c7890 100644
--- a/ATTRIBUTION.toml
+++ b/ATTRIBUTION.toml
@@ -7,7 +7,7 @@ licence = "MIT OR Apache-2.0"
licence_file = "LICENSE-MIT"
kind = "translation"
usage = "Greek UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
-sha256 = "e04ab5246125efae2bad439e62c150fc10649c4b6796b30565615f5bd7509ec6"
+sha256 = "9db29707a6c143f7cec5019e9f845f8a807b32445c0b05232c86737d0bb41356"
# ATTRIBUTION.toml: one entry per asset (AGENTS.md §1). The source of truth for provenance and licences.
# ATTRIBUTION.md is generated from this file: `cargo xtask assets --write`. Checked by `cargo xtask assets` (part of `xtask ci`).
@@ -30,7 +30,7 @@ licence = "MIT OR Apache-2.0"
licence_file = "LICENSE-MIT"
kind = "translation"
usage = "Simplified Chinese UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
-sha256 = "7f600eaa47f23fac4f9f0fece1454e59756c8dc57c7c697502cb02ee21410ac0"
+sha256 = "ad81b1adb6e02fc2b59d5685f021374618c992e40dce6d0748a557946626e7f6"
[[asset]]
path = "crates/ui-egui/src/i18n/zh-hant.tsv"
@@ -41,7 +41,7 @@ licence = "MIT OR Apache-2.0"
licence_file = "LICENSE-MIT"
kind = "translation"
usage = "Traditional Chinese UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
-sha256 = "37733adc79d7d32a057811b4dc5eb31251ef8ec91f1dac430253c69faac1c33f"
+sha256 = "f477a3e3f2a668366a340765b6baa9280235a5606539ec2800efcea5795ad4c7"
[[asset]]
path = "crates/ui-egui/src/i18n/cs.tsv"
@@ -52,7 +52,7 @@ licence = "MIT OR Apache-2.0"
licence_file = "LICENSE-MIT"
kind = "translation"
usage = "Czech UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
-sha256 = "285b689b5224a66079738ab39d5a27e5f9ba72e1ab42e148f263b7ea320c4729"
+sha256 = "5055186aa818b349779fefa1a48a6eb899753620189ddf0ee29af5234e0906f0"
[[asset]]
path = "crates/ui-egui/src/i18n/pt-br.tsv"
@@ -63,7 +63,7 @@ licence = "MIT OR Apache-2.0"
licence_file = "LICENSE-MIT"
kind = "translation"
usage = "Brazilian Portuguese UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
-sha256 = "e8154a154129ca158396de84d2d432ce1c587477795a6a14985f7834db255744"
+sha256 = "4f79e478274833434f8d77dea8333fb75b22558b10b9fb3430658ae6fe87192d"
[[asset]]
path = "crates/ui-egui/src/i18n/es.tsv"
@@ -74,7 +74,7 @@ licence = "MIT OR Apache-2.0"
licence_file = "LICENSE-MIT"
kind = "translation"
usage = "Spanish UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
-sha256 = "50d4e66209e8b56707bcd148d4644eb0ad9f49dfc195287cfbd851ffbe5c3830"
+sha256 = "b391d974331944cbeb836116d596c301dcc88bf2e9e1788c39964faaebca23c5"
[[asset]]
path = "crates/ui-egui/src/i18n/fr.tsv"
@@ -85,7 +85,7 @@ licence = "MIT OR Apache-2.0"
licence_file = "LICENSE-MIT"
kind = "translation"
usage = "French UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
-sha256 = "13e677d44d5224e60af28fcc89d8f8af552368ca3c11f0a871498c60fefa7ee2"
+sha256 = "afb0871d04561da7680ff91f85770571ebd95d890c0580ea9efa28451a5caf37"
[[asset]]
path = "crates/ui-egui/src/i18n/de.tsv"
@@ -96,7 +96,7 @@ licence = "MIT OR Apache-2.0"
licence_file = "LICENSE-MIT"
kind = "translation"
usage = "German UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
-sha256 = "e81112d69acc2e1bbb44c5252f8f323b1d637059b5ac5f4c9fcd3eb985a53442"
+sha256 = "23298ef146fe3e91eed3c8229550467467b3b25c0e4248a7c54166d87b166709"
[[asset]]
path = "crates/ui-egui/src/i18n/te.tsv"
@@ -107,7 +107,7 @@ licence = "MIT OR Apache-2.0"
licence_file = "LICENSE-MIT"
kind = "translation"
usage = "Telugu UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
-sha256 = "df3d3650af984251372bf22b859ba6aca47f26eeff790e834d57a5a4071a1b48"
+sha256 = "e3144ba709f4c8f478b3846c4b1d09cf0bd5aa8f84df98ff1e10016373504154"
[[asset]]
path = "crates/ui-egui/src/i18n/it.tsv"
@@ -118,7 +118,7 @@ licence = "MIT OR Apache-2.0"
licence_file = "LICENSE-MIT"
kind = "translation"
usage = "Italian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
-sha256 = "c9e453382d9d5c83f7b0f986befc6113a62b4736a6b94a6462805cead406753b"
+sha256 = "290082b865ac6e2733e825539853d209799b5141e9a09df94a37ce24874d50d9"
[[asset]]
path = "crates/ui-egui/src/i18n/pl.tsv"
@@ -129,7 +129,7 @@ licence = "MIT OR Apache-2.0"
licence_file = "LICENSE-MIT"
kind = "translation"
usage = "Polish UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
-sha256 = "2a205868b13f719dbc91fdc50f1133f5f317aa2245143bfeaa048190bc9c7d8c"
+sha256 = "03a4f4d8d74263b9d6d36c7a8f92a98ec966b8037f00f77cee22c59abb6a1121"
[[asset]]
path = "crates/ui-egui/src/i18n/ru.tsv"
@@ -140,7 +140,7 @@ licence = "MIT OR Apache-2.0"
licence_file = "LICENSE-MIT"
kind = "translation"
usage = "Russian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
-sha256 = "3053aff461c289404bf3009c611037870b945692c65ce8d7c14ad26ac477660c"
+sha256 = "a55f1573bf0100e5cfe2318af109d8191dba00f22af5ef6e3a470269f7c0e78f"
[[asset]]
path = "crates/ui-egui/src/i18n/hu.tsv"
@@ -151,7 +151,7 @@ licence = "MIT OR Apache-2.0"
licence_file = "LICENSE-MIT"
kind = "translation"
usage = "Hungarian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
-sha256 = "882b3937802bbbd5afe0087264ee4118161351e8828cb02b608488ccfe39bfe9"
+sha256 = "0faab49f091c4f37668bd5ee8a33a874eb8523e16c2221dd9c6f47256d904da4"
[[asset]]
path = "crates/ui-egui/src/i18n/bg.tsv"
@@ -162,7 +162,7 @@ licence = "MIT OR Apache-2.0"
licence_file = "LICENSE-MIT"
kind = "translation"
usage = "Bulgarian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
-sha256 = "8cca054e167995ca6d95bc45fc0f75385a15a78852e4b173bd4c5b7b651c5a9d"
+sha256 = "84f4630d196fa4b7c1ddedbfaf777d02335810e1fca2bafa3a1c5aaa2c09a97b"
[[asset]]
path = "crates/ui-egui/src/i18n/kk.tsv"
@@ -173,7 +173,7 @@ licence = "MIT OR Apache-2.0"
licence_file = "LICENSE-MIT"
kind = "translation"
usage = "Kazakh UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
-sha256 = "2f4a6429c0c290a53268733dac08da221085992036a4d304d7663d7947d806d3"
+sha256 = "ac69380ea7face5aeab3197fb4ee2750ffc488d53d81e3ebc363086bbac105f5"
[[asset]]
path = "crates/ui-egui/src/i18n/ja.tsv"
@@ -184,7 +184,7 @@ licence = "MIT OR Apache-2.0"
licence_file = "LICENSE-MIT"
kind = "translation"
usage = "Japanese UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
-sha256 = "2792f38b1699269b5886fa99a17c7773c3934df95dc4e2db3ba6a475dd652ba0"
+sha256 = "adf8aebea020fbf6be8125ecd242cbf4075293231d96276f47d7f2bfed1c02e7"
[[asset]]
path = "crates/ui-egui/src/i18n/uk.tsv"
@@ -195,7 +195,7 @@ licence = "MIT OR Apache-2.0"
licence_file = "LICENSE-MIT"
kind = "translation"
usage = "Ukrainian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
-sha256 = "937ac7eac4230c9a1d26d6bd7ef4f08f8d8c9d391a091682e8758fba3ca9678e"
+sha256 = "6443ecd7228ce91e696433653efc4012e19cd00c299d651dc358d5033e22979c"
[[asset]]
path = "crates/ui-egui/src/i18n/ar.tsv"
@@ -206,7 +206,7 @@ licence = "MIT OR Apache-2.0"
licence_file = "LICENSE-MIT"
kind = "translation"
usage = "Arabic UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
-sha256 = "7ced08c3485c5eddf92767e6deb009d72351d70cefe60be654cfdac441f40f4b"
+sha256 = "5366cf32528dbbb5947d85ed76676bd65b55fa21a6f26c1097be218dfa2b1ae4"
[[asset]]
path = "crates/ui-egui/src/i18n/tr.tsv"
@@ -217,7 +217,7 @@ licence = "MIT OR Apache-2.0"
licence_file = "LICENSE-MIT"
kind = "translation"
usage = "Turkish UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
-sha256 = "4e70c6db374db37bf70a17e251675b94128fb11b4d6d20ef669b36fd4ae14ff1"
+sha256 = "06da7c3c233e1208eedfe5c2ab1bcbc1a3ca65f136593d968655fab232f70d99"
[[asset]]
path = "crates/ui-egui/src/i18n/lt.tsv"
@@ -228,7 +228,7 @@ licence = "MIT OR Apache-2.0"
licence_file = "LICENSE-MIT"
kind = "translation"
usage = "Lithuanian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
-sha256 = "d2e6be7cf74525310a203bed7434e7f69d2288d337ee696de2882df8da31a746"
+sha256 = "6fc9578b3f56139faba7bd23c5034739b87999d4b1ce6eb386682331c6482177"
[[asset]]
path = "assets/icons/accessibility.svg"
@@ -2710,98 +2710,10 @@ kind = "font"
usage = "Showcase PDF (cargo xtask demo-pdf)"
sha256 = "acd98e64795781b2058f07b18475e0ecee2a0fe2b42a49e2f9e37d0d6bf66ce6"
-[[asset]]
-path = "docs/brand/artcraft-logo-white.png"
-title = "ArtCraft brand: artcraft-logo-white"
-author = "ArtCraft Team"
-source = "ArtCraft Team brand assets (provided by the project owner, 2026-10-01; identical copies in storytold/photocraft)"
-licence = "LicenseRef-Storyteller-Trademark"
-licence_file = "docs/brand/LICENSE-brand.txt"
-kind = "logo"
-usage = "ArtCraft branding next to the community links (About dialog, Help menu, home screen) and in docs. ArtCraft Team trademark, not open source; may be used only unmodified within PdfCraft; forks and modified versions must remove it."
-sha256 = "8b86aeb06a12a90ba77a60e0d90329272310e244ee5c1f9b161b391280ca79d8"
-
-[[asset]]
-path = "docs/brand/artcraft-logo-white.svg"
-title = "ArtCraft brand: artcraft-logo-white"
-author = "ArtCraft Team"
-source = "ArtCraft Team brand assets (provided by the project owner, 2026-10-01; identical copies in storytold/photocraft)"
-licence = "LicenseRef-Storyteller-Trademark"
-licence_file = "docs/brand/LICENSE-brand.txt"
-kind = "logo"
-usage = "ArtCraft branding next to the community links (About dialog, Help menu, home screen) and in docs. ArtCraft Team trademark, not open source; may be used only unmodified within PdfCraft; forks and modified versions must remove it."
-sha256 = "a3e03dc49f9ad4225b8517d5424309c8d1c864d3996d862190d9cc797d5af427"
-
-[[asset]]
-path = "docs/brand/artcraft-logo.png"
-title = "ArtCraft brand: artcraft-logo"
-author = "ArtCraft Team"
-source = "ArtCraft Team brand assets (provided by the project owner, 2026-10-01; identical copies in storytold/photocraft)"
-licence = "LicenseRef-Storyteller-Trademark"
-licence_file = "docs/brand/LICENSE-brand.txt"
-kind = "logo"
-usage = "ArtCraft branding next to the community links (About dialog, Help menu, home screen) and in docs. ArtCraft Team trademark, not open source; may be used only unmodified within PdfCraft; forks and modified versions must remove it."
-sha256 = "08fc6d9d3717e8f13417bac6f9025b50e11d1e0b32e9e000883d2fe0c4a0c67b"
-
-[[asset]]
-path = "docs/brand/artcraft-logo.svg"
-title = "ArtCraft brand: artcraft-logo"
-author = "ArtCraft Team"
-source = "ArtCraft Team brand assets (provided by the project owner, 2026-10-01; identical copies in storytold/photocraft)"
-licence = "LicenseRef-Storyteller-Trademark"
-licence_file = "docs/brand/LICENSE-brand.txt"
-kind = "logo"
-usage = "ArtCraft branding next to the community links (About dialog, Help menu, home screen) and in docs. ArtCraft Team trademark, not open source; may be used only unmodified within PdfCraft; forks and modified versions must remove it."
-sha256 = "3188971e1affdf4f6be4fa65f715376a7a305e6aa741ec78b0296c8f934eff08"
-
-[[asset]]
-path = "docs/brand/artcraft-mark-black.png"
-title = "ArtCraft brand: artcraft-mark-black"
-author = "ArtCraft Team"
-source = "ArtCraft Team brand assets (provided by the project owner, 2026-10-01; identical copies in storytold/photocraft)"
-licence = "LicenseRef-Storyteller-Trademark"
-licence_file = "docs/brand/LICENSE-brand.txt"
-kind = "logo"
-usage = "ArtCraft branding next to the community links (About dialog, Help menu, home screen) and in docs. ArtCraft Team trademark, not open source; may be used only unmodified within PdfCraft; forks and modified versions must remove it."
-sha256 = "5954cc0306e1b9d7beb47097e2e842157113a39d9aba078b57304902687936a9"
-
-[[asset]]
-path = "docs/brand/artcraft-mark-black.svg"
-title = "ArtCraft brand: artcraft-mark-black"
-author = "ArtCraft Team"
-source = "ArtCraft Team brand assets (provided by the project owner, 2026-10-01; identical copies in storytold/photocraft)"
-licence = "LicenseRef-Storyteller-Trademark"
-licence_file = "docs/brand/LICENSE-brand.txt"
-kind = "logo"
-usage = "ArtCraft branding next to the community links (About dialog, Help menu, home screen) and in docs. ArtCraft Team trademark, not open source; may be used only unmodified within PdfCraft; forks and modified versions must remove it."
-sha256 = "570adcb4f7ba8ca0647f97074476bab81d3272988f1cdee52efa21bf026036a4"
-
-[[asset]]
-path = "docs/brand/artcraft-mark.png"
-title = "ArtCraft brand: artcraft-mark"
-author = "ArtCraft Team"
-source = "ArtCraft Team brand assets (provided by the project owner, 2026-10-01; identical copies in storytold/photocraft)"
-licence = "LicenseRef-Storyteller-Trademark"
-licence_file = "docs/brand/LICENSE-brand.txt"
-kind = "logo"
-usage = "ArtCraft branding next to the community links (About dialog, Help menu, home screen) and in docs. ArtCraft Team trademark, not open source; may be used only unmodified within PdfCraft; forks and modified versions must remove it."
-sha256 = "9d372157a949c147318561e629b11561c28b7cbc14c84b516a3fe6e84d8fbbad"
-
-[[asset]]
-path = "docs/brand/artcraft-mark.svg"
-title = "ArtCraft brand: artcraft-mark"
-author = "ArtCraft Team"
-source = "ArtCraft Team brand assets (provided by the project owner, 2026-10-01; identical copies in storytold/photocraft)"
-licence = "LicenseRef-Storyteller-Trademark"
-licence_file = "docs/brand/LICENSE-brand.txt"
-kind = "logo"
-usage = "ArtCraft branding next to the community links (About dialog, Help menu, home screen) and in docs. ArtCraft Team trademark, not open source; may be used only unmodified within PdfCraft; forks and modified versions must remove it."
-sha256 = "f87af81b6fa411da8820eed2bfdcc54c0ee9cd453b4e868c64f56c69db142d0e"
-
[[asset]]
path = "assets/app-icon/pdfcraft.svg"
title = "PdfCraft app icon (master vector)"
-author = "PdfCraft contributors (drawn by the project owner in ArtCraft; vectorised with craftrules vectorize_tile.py)"
+author = "PdfCraft contributors (drawn by the project owner; vectorised with craftrules vectorize_tile.py)"
source = "Contributor-original (see assets/app-icon/README.md)"
licence = "MIT OR Apache-2.0"
licence_file = "assets/app-icon/LICENSE.txt"
@@ -2812,7 +2724,7 @@ sha256 = "52b384a10a2a7fdd3145d9822972cfd568ef0cb7312549bd4399addd89d45a6d"
[[asset]]
path = "assets/app-icon/pdfcraft-small.svg"
title = "PdfCraft app icon (light vector)"
-author = "PdfCraft contributors (drawn by the project owner in ArtCraft; vectorised with craftrules vectorize_tile.py)"
+author = "PdfCraft contributors (drawn by the project owner; vectorised with craftrules vectorize_tile.py)"
source = "Contributor-original (see assets/app-icon/README.md)"
licence = "MIT OR Apache-2.0"
licence_file = "assets/app-icon/LICENSE.txt"
@@ -2823,7 +2735,7 @@ sha256 = "b036304c11ef5dcad36636d06ca0bf331b51e47650d25d3c916a0e1eabf544c7"
[[asset]]
path = "assets/app-icon/pdfcraft-1024.png"
title = "PdfCraft app icon, 1024 px on Apple's icon grid"
-author = "PdfCraft contributors (drawn by the project owner in ArtCraft; vectorised with craftrules vectorize_tile.py)"
+author = "PdfCraft contributors (drawn by the project owner; vectorised with craftrules vectorize_tile.py)"
source = "Contributor-original (see assets/app-icon/README.md)"
licence = "MIT OR Apache-2.0"
licence_file = "assets/app-icon/LICENSE.txt"
@@ -2834,7 +2746,7 @@ sha256 = "da577d3f21fbcf5c739067787a9e683be2b064d76813b5d5fec9074a7a106538"
[[asset]]
path = "assets/app-icon/pdfcraft.icns"
title = "PdfCraft app icon (macOS .icns)"
-author = "PdfCraft contributors (drawn by the project owner in ArtCraft; vectorised with craftrules vectorize_tile.py)"
+author = "PdfCraft contributors (drawn by the project owner; vectorised with craftrules vectorize_tile.py)"
source = "Contributor-original (see assets/app-icon/README.md)"
licence = "MIT OR Apache-2.0"
licence_file = "assets/app-icon/LICENSE.txt"
@@ -2845,7 +2757,7 @@ sha256 = "2425148222873de241d267aba667a8b234ecdd0149f2ca8bb6e79443b743b1e8"
[[asset]]
path = "assets/app-icon/pdfcraft.ico"
title = "PdfCraft app icon (Windows .ico, 16-256 px)"
-author = "PdfCraft contributors (drawn by the project owner in ArtCraft; vectorised with craftrules vectorize_tile.py)"
+author = "PdfCraft contributors (drawn by the project owner; vectorised with craftrules vectorize_tile.py)"
source = "Contributor-original (see assets/app-icon/README.md)"
licence = "MIT OR Apache-2.0"
licence_file = "assets/app-icon/LICENSE.txt"
@@ -2878,7 +2790,7 @@ sha256 = "ba3f9128b368fc6d17d376cf62dbdbc22455451c5c8c4779210d7a2a7409b9e6"
[[asset]]
path = "assets/app-icon/hicolor/16x16/apps/ai.storyteller.pdfcraft.png"
title = "PdfCraft app icon, 16 px"
-author = "PdfCraft contributors (drawn by the project owner in ArtCraft; vectorised with craftrules vectorize_tile.py)"
+author = "PdfCraft contributors (drawn by the project owner; vectorised with craftrules vectorize_tile.py)"
source = "Contributor-original (see assets/app-icon/README.md)"
licence = "MIT OR Apache-2.0"
licence_file = "assets/app-icon/LICENSE.txt"
@@ -2889,7 +2801,7 @@ sha256 = "9b77095cbe75dcba6b74a1fdcd4064812850efaf7a12edebefc9ded5eabb49da"
[[asset]]
path = "assets/app-icon/hicolor/24x24/apps/ai.storyteller.pdfcraft.png"
title = "PdfCraft app icon, 24 px"
-author = "PdfCraft contributors (drawn by the project owner in ArtCraft; vectorised with craftrules vectorize_tile.py)"
+author = "PdfCraft contributors (drawn by the project owner; vectorised with craftrules vectorize_tile.py)"
source = "Contributor-original (see assets/app-icon/README.md)"
licence = "MIT OR Apache-2.0"
licence_file = "assets/app-icon/LICENSE.txt"
@@ -2900,7 +2812,7 @@ sha256 = "a4cd466687f6c5cb59eef3fc564bdba1c8f0d9e324754eeebab82f18823efae7"
[[asset]]
path = "assets/app-icon/hicolor/32x32/apps/ai.storyteller.pdfcraft.png"
title = "PdfCraft app icon, 32 px"
-author = "PdfCraft contributors (drawn by the project owner in ArtCraft; vectorised with craftrules vectorize_tile.py)"
+author = "PdfCraft contributors (drawn by the project owner; vectorised with craftrules vectorize_tile.py)"
source = "Contributor-original (see assets/app-icon/README.md)"
licence = "MIT OR Apache-2.0"
licence_file = "assets/app-icon/LICENSE.txt"
@@ -2911,7 +2823,7 @@ sha256 = "e22279013a5ed5c02571e1e4e9bc4cef9aa0847fcb733a285b2916fabd16bf78"
[[asset]]
path = "assets/app-icon/hicolor/48x48/apps/ai.storyteller.pdfcraft.png"
title = "PdfCraft app icon, 48 px"
-author = "PdfCraft contributors (drawn by the project owner in ArtCraft; vectorised with craftrules vectorize_tile.py)"
+author = "PdfCraft contributors (drawn by the project owner; vectorised with craftrules vectorize_tile.py)"
source = "Contributor-original (see assets/app-icon/README.md)"
licence = "MIT OR Apache-2.0"
licence_file = "assets/app-icon/LICENSE.txt"
@@ -2922,7 +2834,7 @@ sha256 = "55daf2d5575f6c4e4c4975c9f1c74231178f1801963a8b19f68dfa9bc50cb22f"
[[asset]]
path = "assets/app-icon/hicolor/64x64/apps/ai.storyteller.pdfcraft.png"
title = "PdfCraft app icon, 64 px"
-author = "PdfCraft contributors (drawn by the project owner in ArtCraft; vectorised with craftrules vectorize_tile.py)"
+author = "PdfCraft contributors (drawn by the project owner; vectorised with craftrules vectorize_tile.py)"
source = "Contributor-original (see assets/app-icon/README.md)"
licence = "MIT OR Apache-2.0"
licence_file = "assets/app-icon/LICENSE.txt"
@@ -2933,7 +2845,7 @@ sha256 = "2975c200f341e247b5fa18f568fb27d390e3fa01e9b2ad37acb48d0e1cc8a124"
[[asset]]
path = "assets/app-icon/hicolor/128x128/apps/ai.storyteller.pdfcraft.png"
title = "PdfCraft app icon, 128 px"
-author = "PdfCraft contributors (drawn by the project owner in ArtCraft; vectorised with craftrules vectorize_tile.py)"
+author = "PdfCraft contributors (drawn by the project owner; vectorised with craftrules vectorize_tile.py)"
source = "Contributor-original (see assets/app-icon/README.md)"
licence = "MIT OR Apache-2.0"
licence_file = "assets/app-icon/LICENSE.txt"
@@ -2944,7 +2856,7 @@ sha256 = "6ef927ca252b40bc9b5d8843d84137334362f8aa1acbb1bf8c15a02affd25b2b"
[[asset]]
path = "assets/app-icon/hicolor/256x256/apps/ai.storyteller.pdfcraft.png"
title = "PdfCraft app icon, 256 px"
-author = "PdfCraft contributors (drawn by the project owner in ArtCraft; vectorised with craftrules vectorize_tile.py)"
+author = "PdfCraft contributors (drawn by the project owner; vectorised with craftrules vectorize_tile.py)"
source = "Contributor-original (see assets/app-icon/README.md)"
licence = "MIT OR Apache-2.0"
licence_file = "assets/app-icon/LICENSE.txt"
@@ -2955,7 +2867,7 @@ sha256 = "cde7ee8c5ee38f9fc40a429fd9e6d99a035bcd321701fce331bb13bac126614d"
[[asset]]
path = "assets/app-icon/hicolor/512x512/apps/ai.storyteller.pdfcraft.png"
title = "PdfCraft app icon, 512 px"
-author = "PdfCraft contributors (drawn by the project owner in ArtCraft; vectorised with craftrules vectorize_tile.py)"
+author = "PdfCraft contributors (drawn by the project owner; vectorised with craftrules vectorize_tile.py)"
source = "Contributor-original (see assets/app-icon/README.md)"
licence = "MIT OR Apache-2.0"
licence_file = "assets/app-icon/LICENSE.txt"
@@ -2966,7 +2878,7 @@ sha256 = "5ede733e93b96f4eb8d94299232cf2f9605fa19b0d913f95fe9828c316a2d066"
[[asset]]
path = "assets/app-icon/hicolor/scalable/apps/ai.storyteller.pdfcraft.svg"
title = "PdfCraft app icon (Linux scalable)"
-author = "PdfCraft contributors (drawn by the project owner in ArtCraft; vectorised with craftrules vectorize_tile.py)"
+author = "PdfCraft contributors (drawn by the project owner; vectorised with craftrules vectorize_tile.py)"
source = "Contributor-original (see assets/app-icon/README.md)"
licence = "MIT OR Apache-2.0"
licence_file = "assets/app-icon/LICENSE.txt"
@@ -3092,7 +3004,7 @@ source = "this repository"
licence = "MIT OR Apache-2.0"
licence_file = "LICENSE-MIT"
kind = "image"
-usage = "README: tool catalogue. Shows PdfCraft UI, Lucide icons, the showcase PDF built from the [[fetched]] OFL fonts, and the ArtCraft mark (Storyteller trademark from docs/brand/, not covered by this licence)"
+usage = "README: tool catalogue. Shows PdfCraft UI, Lucide icons, the showcase PDF built from the [[fetched]] OFL fonts"
sha256 = "61731a921902e285d40826d401f1ef25624dabb8c8ac1f8f0c09c1292a17ee1a"
[[asset]]
@@ -3351,4 +3263,4 @@ licence = "MIT OR Apache-2.0"
licence_file = "LICENSE-MIT"
kind = "translation"
usage = "Slovene UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
-sha256 = "6c01a439220415b83acab79c014286e5871ba7946a9c3b9a4776be797d55a086"
+sha256 = "71ddf87c608942166baf11cea1e5a49447334eda1c9d9b7eafa2fddb26115c3a"
diff --git a/NOTICE b/NOTICE
index 8cacb0b..40bd45f 100644
--- a/NOTICE
+++ b/NOTICE
@@ -3,10 +3,6 @@ Copyright (c) 2026 ArtCraft Team and the PdfCraft 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
diff --git a/README.md b/README.md
index b20179f..30ffe21 100644
--- a/README.md
+++ b/README.md
@@ -1,13 +1,3 @@
-
@@ -41,10 +21,6 @@
The PdfCraft Showcase, a 13-page specimen PDF, open with the All tools panel and threaded comments.
-> [!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).**
-
Highlights ·
Read ·
@@ -64,16 +40,6 @@
---
-## Community
-
-PdfCraft is part of [ArtCraft](https://getartcraft.com). Come say hello, get help and follow development:
-
-- **Discord: [discord.gg/artcraft](https://discord.gg/artcraft)**. This is the fastest way to get help and share feedback. The app has a Discord button in its title bar.
-- **Web page:** [getartcraft.com/apps/pdfcraft](https://getartcraft.com/apps/pdfcraft)
-- **Source:** [github.com/storytold/pdfcraft](https://github.com/storytold/pdfcraft)
-
-The ArtCraft name and logos in `docs/brand/` are trademarks of the ArtCraft Team and are not open source. They may be used only unmodified, and only as part of PdfCraft (see `docs/brand/LICENSE-brand.txt`). Forks and modified versions must remove them.
-
## Highlights
@@ -432,9 +398,7 @@ The summary is in **[ROADMAP.md](ROADMAP.md)**; the full assessment by dimension
## Downloads
-**New to PdfCraft?** Download it from the [PdfCraft page on getartcraft.com](https://getartcraft.com/apps/pdfcraft). That's the easiest way to install it.
-
-**Want a specific build or format?** On GitHub, the [latest release](https://github.com/storytold/pdfcraft/releases/latest) has every build listed below, and [all releases](https://github.com/storytold/pdfcraft/releases) has earlier versions and their notes. `` in the file names is the version number, and `SHA256SUMS.txt` lists a checksum for every file.
+On GitHub, the [latest release](https://github.com/storytold/pdfcraft/releases/latest) has every build listed below, and [all releases](https://github.com/storytold/pdfcraft/releases) has earlier versions and their notes. `` in the file names is the version number, and `SHA256SUMS.txt` lists a checksum for every file.
### Windows
@@ -502,42 +466,18 @@ Every other Linux build needs glibc 2.35 or newer (Ubuntu 22.04+, Debian 12+, Fe
## The Crafting Apps
PdfCraft 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 |
-|:-:|---|---|---|---|
-| | **PhotoCraft** | Image editing: layers, masks, type and real PSD files | [GitHub](https://github.com/storytold/photocraft) | [Website](https://getartcraft.com/apps/photocraft) |
-| | **VectorCraft** | Vector illustration | [GitHub](https://github.com/storytold/vectorcraft) | [Website](https://getartcraft.com/apps/vectorcraft) |
-| | **FilmCraft** | Video editing, color and sound | [GitHub](https://github.com/storytold/filmcraft) | [Website](https://getartcraft.com/apps/filmcraft) |
-| | **LightCraft** | Photo library and raw development | [GitHub](https://github.com/storytold/lightcraft) | [Website](https://getartcraft.com/apps/lightcraft) |
-| | **PdfCraft** | **Reading, organizing and protecting PDFs · you are here** | [GitHub](https://github.com/storytold/pdfcraft) | [Website](https://getartcraft.com/apps/pdfcraft) |
-| | **EffectCraft** | Motion graphics and visual effects | [GitHub](https://github.com/storytold/effectcraft) | [Website](https://getartcraft.com/apps/effectcraft) |
-| | **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.
-
-
-
-
-
-
-
-
Come make things with us
-
-
- 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.
-
+| | App | What it's for | Code |
+|:-:|---|---|---|
+| | **PhotoCraft** | Image editing: layers, masks, type and real PSD files | [GitHub](https://github.com/storytold/photocraft) |
+| | **VectorCraft** | Vector illustration | [GitHub](https://github.com/storytold/vectorcraft) |
+| | **FilmCraft** | Video editing, color and sound | [GitHub](https://github.com/storytold/filmcraft) |
+| | **LightCraft** | Photo library and raw development | [GitHub](https://github.com/storytold/lightcraft) |
+| | **PdfCraft** | **Reading, organizing and protecting PDFs · you are here** | [GitHub](https://github.com/storytold/pdfcraft) |
+| | **EffectCraft** | Motion graphics and visual effects | [GitHub](https://github.com/storytold/effectcraft) |
+| | **DesignCraft** | Page layout and publishing | [GitHub](https://github.com/storytold/designcraft) |
---
@@ -551,18 +491,7 @@ with its author, source and license in [ATTRIBUTION.md](ATTRIBUTION.md). Release
the Japanese fonts of [craft-fonts](https://github.com/storytold/craft-fonts/blob/main/ATTRIBUTION.md)
(SIL Open Font License 1.1).
-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 PdfCraft, under [`docs/brand/LICENSE-brand.txt`](docs/brand/LICENSE-brand.txt).
-Forks and modified versions must remove them.
-
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. PdfCraft 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.
-
-
-
Tools and Inspector panels can be dragged into tab groups, split beside the PDF, or floated within the app window. Read and full-screen modes keep their existing focused document view. Drag a panel header to a target edge or another header. Its context menu offers Float panel, Move to group, and Close panel. Existing panel toggles reopen panels at their saved location; Reset Panel Layout restores the app layout. Floating panels remain inside the current app window.
Advanced `ui.dock` operations use the same validated transaction as pointer gestures:
diff --git a/ROADMAP.md b/ROADMAP.md
index 44a2660..eef79b2 100644
--- a/ROADMAP.md
+++ b/ROADMAP.md
@@ -361,7 +361,6 @@ Newest first: the date, what moved, and the new overall estimate.
- Bookmark editing and page numbering (Number pages), with undo, agent tools and UI.
- A render watchdog: pathological pages are skipped after 20 s instead of spinning forever.
- The agent control channel no longer reports success when the window is hidden.
- - Community links: Discord button in the title bar, plus Home, About, Help menu, CLI and README.
- Overall ≈ 10%.
- **2026-10-01 (session 6):**
- UI control channel: agents can inspect the widget tree, click, type, press keys, run commands and take screenshots of the running app. Off unless the app is started with `--control`; loopback only, token-authenticated.
diff --git a/apps/pdfcraft-cli/src/main.rs b/apps/pdfcraft-cli/src/main.rs
index b33cd89..5ecd0de 100644
--- a/apps/pdfcraft-cli/src/main.rs
+++ b/apps/pdfcraft-cli/src/main.rs
@@ -63,8 +63,7 @@ pdfcraft-cli run --script steps.json [--root DIR] [{\"tool\": \"doc_open
mcp_usage!(),
"\
pdfcraft-cli ui --control FILE [key=value …] [--out shot.png]
- drive a running app started with --control FILE
-help and feedback: https://discord.gg/artcraft"
+ drive a running app started with --control FILE"
);
fn main() -> ExitCode {
@@ -142,8 +141,6 @@ fn stdout_line(line: std::fmt::Arguments<'_>) -> Result<(), CliError> {
fn version() -> Result<(), CliError> {
stdout_line(format_args!("pdfcraft-cli {}", env!("CARGO_PKG_VERSION")))?;
- stdout_line(format_args!("Discord: {} (help and feedback)", pdfcraft_engine::links::DISCORD))?;
- stdout_line(format_args!("Web: {}", pdfcraft_engine::links::APP_PAGE))?;
stdout_line(format_args!("Source: {}", pdfcraft_engine::links::GITHUB))?;
Ok(())
}
diff --git a/assets/app-icon/LICENSE.txt b/assets/app-icon/LICENSE.txt
index 1480a31..71ed09b 100644
--- a/assets/app-icon/LICENSE.txt
+++ b/assets/app-icon/LICENSE.txt
@@ -1,7 +1,7 @@
PdfCraft app icon (pdfcraft.svg, pdfcraft-small.svg and every file derived from them in this
directory: pdfcraft-1024.png, pdfcraft.icns, pdfcraft.ico, hicolor/).
-Original artwork made for this project by the project owner, drawn in ArtCraft and vectorised for
+Original artwork made for this project by the project owner, drawn by hand and vectorised for
PdfCraft (no third-party material). Licensed like the rest of PdfCraft, under either of
* Apache License, Version 2.0 (https://www.apache.org/licenses/LICENSE-2.0)
diff --git a/assets/app-icon/README.md b/assets/app-icon/README.md
index 10fb2d4..f0c84d5 100644
--- a/assets/app-icon/README.md
+++ b/assets/app-icon/README.md
@@ -19,7 +19,7 @@ a full-bleed colour field, no frame or roundel, the animal looking at the viewer
icons use the full-bleed tile. macOS icons put it on Apple's grid (an 824 px body centred on a transparent
1024 px canvas).
-**Provenance:** the project owner's original drawing, made in ArtCraft (2880 px, keyed to the palette), then
+**Provenance:** the project owner's original drawing, drawn by hand (2880 px, keyed to the palette), then
vectorised with craftrules `assets/logo-options/_tools/vectorize_tile.py` (potrace; no filtering or
warping). The source drawing is kept in craftrules at `assets/app-icons/pdfcraft/source.png`, not here.
Licence: [LICENSE.txt](LICENSE.txt) (`MIT OR Apache-2.0`, like the repo).
diff --git a/crates/automation/src/mcp.rs b/crates/automation/src/mcp.rs
index d114ea6..95bd644 100644
--- a/crates/automation/src/mcp.rs
+++ b/crates/automation/src/mcp.rs
@@ -131,7 +131,7 @@ impl McpServer {
Ok(json!({
"protocolVersion": version,
"capabilities": { "tools": { "listChanged": false }, "resources": { "listChanged": false, "subscribe": false } },
- "serverInfo": { "name": "pdfcraft", "title": "PdfCraft", "version": env!("CARGO_PKG_VERSION"), "websiteUrl": pdfcraft_engine::links::APP_PAGE },
+ "serverInfo": { "name": "pdfcraft", "title": "PdfCraft", "version": env!("CARGO_PKG_VERSION"), "websiteUrl": pdfcraft_engine::links::GITHUB },
"instructions": if self.compact { format!("{INSTRUCTIONS}{COMPACT_INSTRUCTIONS}") } else { INSTRUCTIONS.to_string() },
}))
}
diff --git a/crates/engine/src/commands.rs b/crates/engine/src/commands.rs
index 740aab1..3eb7956 100644
--- a/crates/engine/src/commands.rs
+++ b/crates/engine/src/commands.rs
@@ -356,10 +356,7 @@ pub const COMMANDS: &[CommandSpec] = &[
c("page.split", "Split document…", PAGES, None, Assembly, "scissors"),
c("page.number", "Number pages…", PAGES, None, Assembly, "hash"),
c("help.shortcuts", "Keyboard shortcuts", HELP, None, Nothing, "circle-help"),
- c("help.discord", "Join the ArtCraft Discord", HELP, None, Nothing, "messages-square"),
- c("help.app_page", "PdfCraft web page", HELP, None, Nothing, "globe"),
c("help.github", "PdfCraft on GitHub", HELP, None, Nothing, "code-xml"),
- c("help.website", "ArtCraft website", HELP, None, Nothing, "external-link"),
c("help.check_updates", "Check for updates…", HELP, None, Nothing, "cloud"),
c("help.about", "About PdfCraft", HELP, None, Nothing, "info"),
];
diff --git a/crates/engine/src/links.rs b/crates/engine/src/links.rs
index 47abdf4..d79e9b0 100644
--- a/crates/engine/src/links.rs
+++ b/crates/engine/src/links.rs
@@ -1,15 +1,12 @@
-//! Where PdfCraft and the ArtCraft community live on the web. One table, so the Help menu, the
-//! About dialog, the home screen, the CLI and the README agree.
+//! Where PdfCraft lives on the web. One table, so the Help menu, the About dialog, the home
+//! screen, the CLI and the README agree.
use icu_properties::props::Script;
use std::path::{Path, PathBuf};
-/// The app's name in ArtCraft URLs (`getartcraft.com/apps/{APP}`, `github.com/storytold/{APP}`).
+/// The app's name in its GitHub URL (`github.com/storytold/{APP}`).
pub const APP: &str = "pdfcraft";
-pub const DISCORD: &str = "https://discord.gg/artcraft";
-pub const WEBSITE: &str = "https://getartcraft.com";
-pub const APP_PAGE: &str = "https://getartcraft.com/apps/pdfcraft";
pub const GITHUB: &str = "https://github.com/storytold/pdfcraft";
/// A link and the registry command that opens it.
@@ -22,13 +19,8 @@ pub struct Link {
pub icon: &'static str,
}
-/// In the order they are shown. Discord comes first: it is where people get help fastest.
-pub const LINKS: &[Link] = &[
- Link { command: "help.discord", label: "Join the ArtCraft Discord", url: DISCORD, icon: "messages-square" },
- Link { command: "help.app_page", label: "PdfCraft web page", url: APP_PAGE, icon: "globe" },
- Link { command: "help.github", label: "PdfCraft on GitHub", url: GITHUB, icon: "code-xml" },
- Link { command: "help.website", label: "ArtCraft website", url: WEBSITE, icon: "external-link" },
-];
+/// In the order they are shown.
+pub const LINKS: &[Link] = &[Link { command: "help.github", label: "PdfCraft on GitHub", url: GITHUB, icon: "code-xml" }];
pub fn for_command(id: &str) -> Option<&'static Link> {
LINKS.iter().find(|l| l.command == id)
@@ -487,8 +479,7 @@ mod tests {
}
#[test]
- fn urls_follow_the_artcraft_scheme() {
- assert_eq!(super::APP_PAGE, format!("{}/apps/{}", super::WEBSITE, super::APP));
+ fn urls_follow_the_github_scheme() {
assert_eq!(super::GITHUB, format!("https://github.com/storytold/{}", super::APP));
for l in super::LINKS {
assert!(l.url.starts_with("https://"), "{}", l.url);
diff --git a/crates/ui-egui/src/chrome.rs b/crates/ui-egui/src/chrome.rs
index 1f2d237..eac76b0 100644
--- a/crates/ui-egui/src/chrome.rs
+++ b/crates/ui-egui/src/chrome.rs
@@ -52,8 +52,8 @@ pub fn tab_strip(app: &mut PdfCraftApp, ui: &mut egui::Ui) {
app.active = None;
app.combine_tab.focused = false;
}
- // Keep the two icon buttons, Discord's text/padding and three gaps outside the scrolling tabs.
- let controls_width = ui.fonts_mut(|f| f.layout_no_wrap("Discord".into(), theme::medium(13.0), t.text).size().x) + 2.0 * button + 50.0;
+ // Keep the two icon buttons and their gaps outside the scrolling tabs.
+ let controls_width = 2.0 * button + 30.0;
// Open stays in sight after the tabs: its icon, text and padding, and the gaps around it.
let open_width = ui.fonts_mut(|f| f.layout_no_wrap(tl!("Open").into(), theme::medium(13.0), t.text).size().x) + 38.0 + 12.0;
let mut tabs_width = (ui.available_width() - controls_width - open_width).max(0.0);
@@ -213,10 +213,6 @@ pub fn tab_strip(app: &mut PdfCraftApp, ui: &mut egui::Ui) {
if icons::button(ui, "circle-help", button, false, tl!("Keyboard shortcuts")).clicked() {
app.dialog = Some(Dialog::Shortcuts);
}
- // One click to the community, from anywhere in the app.
- if widgets::ghost_button_sized(ui, "messages-square", "Discord", tab_h).on_hover_text(pdfcraft_engine::links::DISCORD).clicked() {
- app.execute("help.discord");
- }
});
});
});
diff --git a/crates/ui-egui/src/dialogs.rs b/crates/ui-egui/src/dialogs.rs
index 499d0e4..fcffd8d 100644
--- a/crates/ui-egui/src/dialogs.rs
+++ b/crates/ui-egui/src/dialogs.rs
@@ -1095,7 +1095,6 @@ fn dialogs(app: &mut PdfCraftApp, ctx: &egui::Context) {
2 => crate::credits::models_ui(ui),
_ => {
ui.horizontal(|ui| {
- widgets::artcraft_mark(ui, 40.0);
ui.vertical(|ui| {
ui.label(egui::RichText::new("PdfCraft").font(theme::semibold(20.0)));
ui.label(crate::i18n::fmt(tl!("Version {v}"), &[("v", env!("CARGO_PKG_VERSION"))]));
@@ -1111,11 +1110,6 @@ fn dialogs(app: &mut PdfCraftApp, ctx: &egui::Context) {
.small(),
);
ui.add_space(12.0);
- ui.horizontal(|ui| {
- ui.label(egui::RichText::new(tl!("Part of")).color(t.text_muted));
- widgets::artcraft_logo(ui, 16.0);
- });
- ui.add_space(6.0);
if let Some(cmd) = widgets::community_links(ui) {
link_command = Some(cmd);
}
diff --git a/crates/ui-egui/src/home.rs b/crates/ui-egui/src/home.rs
index 3e70f34..2229241 100644
--- a/crates/ui-egui/src/home.rs
+++ b/crates/ui-egui/src/home.rs
@@ -28,26 +28,6 @@ pub fn show(app: &mut PdfCraftApp, ui: &mut egui::Ui) {
.color(t.text_muted)
.font(theme::regular(14.0)),
);
- ui.add_space(14.0);
- egui::Frame::NONE
- .fill(t.card)
- .stroke(Stroke::new(1.0, t.border))
- .corner_radius(CornerRadius::same(12))
- .inner_margin(egui::Margin::same(14))
- .show(ui, |ui| {
- ui.set_width(ui.available_width());
- ui.horizontal(|ui| {
- widgets::artcraft_mark(ui, 28.0);
- ui.vertical(|ui| {
- ui.label(egui::RichText::new(tl!("Join the ArtCraft community")).font(theme::semibold(15.0)));
- ui.label(egui::RichText::new(tl!("Get help, share feedback and follow development on Discord.")).color(t.text_muted));
- });
- });
- ui.add_space(8.0);
- if let Some(cmd) = widgets::community_links(ui) {
- app.execute(cmd);
- }
- });
ui.add_space(22.0);
egui::Frame::NONE
diff --git a/crates/ui-egui/src/i18n/ar.tsv b/crates/ui-egui/src/i18n/ar.tsv
index 8163ee3..9df73e5 100644
--- a/crates/ui-egui/src/i18n/ar.tsv
+++ b/crates/ui-egui/src/i18n/ar.tsv
@@ -93,7 +93,6 @@
Side panels اللوحات الجانبية
Enable Acrobat JavaScript تفعيل Acrobat JavaScript
OK موافق
- Join our Discord انضم إلى خادمنا على Discord
Close إغلاق
Next / previous match التطابق التالي / السابق
Copy selected text نسخ النص المحدد
@@ -161,8 +160,6 @@
Current page — type a page number or label (such as iv) and press Enter الصفحة الحالية — اكتب رقم صفحة أو تسميتها (مثل iv) ثم اضغط Enter
Welcome to PdfCraft مرحبًا بك في PdfCraft
An open-source PDF workbench — local, private, and scriptable. منضدة عمل مفتوحة المصدر لملفات PDF — محلية وخاصة وقابلة للبرمجة.
- Join the ArtCraft community انضم إلى مجتمع ArtCraft
- Get help, share feedback and follow development on Discord. احصل على المساعدة وشارك ملاحظاتك وتابع التطوير على Discord.
Recommended tools أدوات مقترحة
Use now استخدم الآن
Open file فتح ملف
@@ -307,10 +304,8 @@
Split document… تقسيم المستند…
Number pages… ترقيم الصفحات…
Keyboard shortcuts اختصارات لوحة المفاتيح
- Join the ArtCraft Discord انضم إلى خادم ArtCraft على Discord
PdfCraft web page صفحة PdfCraft على الويب
PdfCraft on GitHub PdfCraft على GitHub
- ArtCraft website موقع ArtCraft
Check for updates… التحقق من التحديثات…
About PdfCraft حول PdfCraft
Export a PDF تصدير ملف PDF
diff --git a/crates/ui-egui/src/i18n/bg.tsv b/crates/ui-egui/src/i18n/bg.tsv
index febd1f9..bbac865 100644
--- a/crates/ui-egui/src/i18n/bg.tsv
+++ b/crates/ui-egui/src/i18n/bg.tsv
@@ -1812,13 +1812,8 @@
Split document… Раздели документа…
Number pages… Номерирай страниците…
Keyboard shortcuts Клавишни комбинации
- Join the ArtCraft Discord Присъедини се към ArtCraft в Discord
- Join the ArtCraft community Присъедини се към общността на ArtCraft
- Get help, share feedback and follow development on Discord. Получете помощ, споделете мнение и следете разработката в Discord.
- Join our Discord Присъедини се към нашия Discord
PdfCraft web page Уебстраница на PdfCraft
PdfCraft on GitHub PdfCraft в GitHub
- ArtCraft website Уебсайт на ArtCraft
Check for updates… Провери за актуализации…
About PdfCraft За PdfCraft
JavaScript console… JavaScript конзола…
diff --git a/crates/ui-egui/src/i18n/cs.tsv b/crates/ui-egui/src/i18n/cs.tsv
index ee4f9bc..afb6e27 100644
--- a/crates/ui-egui/src/i18n/cs.tsv
+++ b/crates/ui-egui/src/i18n/cs.tsv
@@ -114,10 +114,8 @@
Split document… Rozdělit dokument…
Number pages… Očíslovat stránky…
Keyboard shortcuts Klávesové zkratky
- Join the ArtCraft Discord Připojit se ke komunitě ArtCraft na Discordu
PdfCraft web page Webová stránka PdfCraft
PdfCraft on GitHub PdfCraft na GitHubu
- ArtCraft website Web ArtCraft
Check for updates… Zkontrolovat aktualizace…
About PdfCraft O aplikaci PdfCraft
Auto Automaticky
@@ -221,7 +219,6 @@ key Space Mezerník
{folder} is already pinned to Home Složka {folder} už je připnutá na úvodní obrazovce
You can pin up to {n} folders. Unpin one first. Připnout lze nejvýše {n} složek. Nejdříve některou odepněte.
Pinned {folder} to Home Složka {folder} je připnutá na úvodní obrazovce
- Join our Discord Připojit se k našemu Discordu
Close Zavřít
Next / previous match Další / předchozí shoda
Copy selected text Kopírovat vybraný text
@@ -278,8 +275,6 @@ key Space Mezerník
Current page — type a page number or label (such as iv) and press Enter Aktuální stránka — zadejte číslo nebo označení stránky (třeba iv) a stiskněte Enter
Welcome to PdfCraft Vítá vás PdfCraft
An open-source PDF workbench — local, private, and scriptable. Open-source dílna pro PDF — lokální, soukromá a skriptovatelná.
- Join the ArtCraft community Připojte se ke komunitě ArtCraft
- Get help, share feedback and follow development on Discord. Získejte pomoc, sdílejte zpětnou vazbu a sledujte vývoj na Discordu.
Recommended tools Doporučené nástroje
Use now Použít
Open file Otevřít soubor
diff --git a/crates/ui-egui/src/i18n/de.tsv b/crates/ui-egui/src/i18n/de.tsv
index 7811a78..7be8d90 100644
--- a/crates/ui-egui/src/i18n/de.tsv
+++ b/crates/ui-egui/src/i18n/de.tsv
@@ -66,7 +66,6 @@
Flatten Fill & Sign when saving Ausfüllen und unterschreiben beim Speichern reduzieren
Text, marks and signatures become part of the page. Other comments stay editable. Text, Markierungen und Unterschriften werden Teil der Seite. Andere Kommentare bleiben bearbeitbar.
OK OK
- Join our Discord Unserem Discord beitreten
Close Schließen
Next / previous match Nächster / vorheriger Treffer
Copy selected text Ausgewählten Text kopieren
@@ -134,8 +133,6 @@
Current page — type a page number or label (such as iv) and press Enter Aktuelle Seite – gib eine Seitenzahl oder -beschriftung ein (z. B. iv) und drücke die Eingabetaste
Welcome to PdfCraft Willkommen bei PdfCraft
An open-source PDF workbench — local, private, and scriptable. Eine Open-Source-PDF-Werkbank – lokal, privat und skriptfähig.
- Join the ArtCraft community Tritt der ArtCraft-Community bei
- Get help, share feedback and follow development on Discord. Hol dir Hilfe, gib Feedback und verfolge die Entwicklung auf Discord.
Recommended tools Empfohlene Werkzeuge
Use now Jetzt verwenden
Open file Datei öffnen
@@ -280,10 +277,8 @@
Split document… Dokument teilen…
Number pages… Seiten nummerieren…
Keyboard shortcuts Tastenkürzel
- Join the ArtCraft Discord Dem ArtCraft-Discord beitreten
PdfCraft web page PdfCraft-Webseite
PdfCraft on GitHub PdfCraft auf GitHub
- ArtCraft website ArtCraft-Website
Check for updates… Nach Updates suchen…
About PdfCraft Über PdfCraft
Export a PDF PDF exportieren
diff --git a/crates/ui-egui/src/i18n/el.tsv b/crates/ui-egui/src/i18n/el.tsv
index 0a5030e..d307d2d 100644
--- a/crates/ui-egui/src/i18n/el.tsv
+++ b/crates/ui-egui/src/i18n/el.tsv
@@ -78,7 +78,6 @@
Side panels Πλευρικοί πίνακες
Enable Acrobat JavaScript Ενεργοποίηση Acrobat JavaScript
OK Εντάξει
- Join our Discord Ελάτε στο Discord μας
Close Κλείσιμο
Next / previous match Επόμενο / προηγούμενο αποτέλεσμα
Copy selected text Αντιγραφή επιλεγμένου κειμένου
@@ -139,8 +138,6 @@
Previous page Προηγούμενη σελίδα
Welcome to PdfCraft Καλώς ορίσατε στο PdfCraft
An open-source PDF workbench — local, private, and scriptable. Ένα εργαλείο PDF ανοιχτού κώδικα — τοπικό, ιδιωτικό και αυτοματοποιήσιμο.
- Join the ArtCraft community Γίνετε μέλος της κοινότητας ArtCraft
- Get help, share feedback and follow development on Discord. Βρείτε βοήθεια, μοιραστείτε σχόλια και παρακολουθήστε την ανάπτυξη στο Discord.
Recommended tools Προτεινόμενα εργαλεία
Use now Χρήση τώρα
Open file Άνοιγμα αρχείου
@@ -1661,10 +1658,8 @@
Extract pages… Εξαγωγή σελίδων…
Split document… Διαχωρισμός εγγράφου…
Number pages… Αρίθμηση σελίδων…
- Join the ArtCraft Discord Συμμετοχή στο Discord του ArtCraft
PdfCraft web page Ιστότοπος του PdfCraft
PdfCraft on GitHub PdfCraft στο GitHub
- ArtCraft website Ιστότοπος ArtCraft
Check for updates… Έλεγχος για ενημερώσεις…
Export a PDF Εξαγωγή PDF
Export to Εξαγωγή σε
diff --git a/crates/ui-egui/src/i18n/es.tsv b/crates/ui-egui/src/i18n/es.tsv
index ba79a5b..fe15d43 100644
--- a/crates/ui-egui/src/i18n/es.tsv
+++ b/crates/ui-egui/src/i18n/es.tsv
@@ -89,7 +89,6 @@
Flatten Fill & Sign when saving Acoplar Rellenar y firmar al guardar
Text, marks and signatures become part of the page. Other comments stay editable. El texto, las marcas y las firmas pasan a formar parte de la página. Los demás comentarios siguen siendo editables.
OK Aceptar
- Join our Discord Únete a nuestro Discord
Close Cerrar
Next / previous match Coincidencia siguiente / anterior
Copy selected text Copiar el texto seleccionado
@@ -157,8 +156,6 @@
Current page — type a page number or label (such as iv) and press Enter Página actual: escribe un número o una etiqueta de página (por ejemplo, iv) y pulsa Intro
Welcome to PdfCraft Te damos la bienvenida a PdfCraft
An open-source PDF workbench — local, private, and scriptable. Un banco de trabajo PDF de código abierto: local, privado y automatizable.
- Join the ArtCraft community Únete a la comunidad de ArtCraft
- Get help, share feedback and follow development on Discord. Recibe ayuda, comparte tu opinión y sigue el desarrollo en Discord.
Recommended tools Herramientas recomendadas
Use now Usar ahora
Open file Abrir archivo
@@ -303,10 +300,8 @@
Split document… Dividir documento…
Number pages… Numerar páginas…
Keyboard shortcuts Atajos de teclado
- Join the ArtCraft Discord Únete al Discord de ArtCraft
PdfCraft web page Página web de PdfCraft
PdfCraft on GitHub PdfCraft en GitHub
- ArtCraft website Sitio web de ArtCraft
Check for updates… Buscar actualizaciones…
About PdfCraft Acerca de PdfCraft
Export a PDF Exportar un PDF
diff --git a/crates/ui-egui/src/i18n/fr.tsv b/crates/ui-egui/src/i18n/fr.tsv
index e81b5f0..f7776be 100644
--- a/crates/ui-egui/src/i18n/fr.tsv
+++ b/crates/ui-egui/src/i18n/fr.tsv
@@ -66,7 +66,6 @@
Flatten Fill & Sign when saving Aplatir Remplir et signer à l'enregistrement
Text, marks and signatures become part of the page. Other comments stay editable. Le texte, les marques et les signatures deviennent partie de la page. Les autres commentaires restent modifiables.
OK OK
- Join our Discord Rejoindre notre Discord
Close Fermer
Next / previous match Correspondance suivante / précédente
Copy selected text Copier le texte sélectionné
@@ -134,8 +133,6 @@
Current page — type a page number or label (such as iv) and press Enter Page actuelle — saisissez un numéro ou une étiquette de page (comme iv) et appuyez sur Entrée
Welcome to PdfCraft Bienvenue dans PdfCraft
An open-source PDF workbench — local, private, and scriptable. Un atelier PDF open source — local, privé et automatisable.
- Join the ArtCraft community Rejoindre la communauté ArtCraft
- Get help, share feedback and follow development on Discord. Obtenez de l'aide, partagez vos retours et suivez le développement sur Discord.
Recommended tools Outils recommandés
Use now Utiliser
Open file Ouvrir un fichier
@@ -280,10 +277,8 @@
Split document… Fractionner le document…
Number pages… Numéroter les pages…
Keyboard shortcuts Raccourcis clavier
- Join the ArtCraft Discord Rejoindre le Discord ArtCraft
PdfCraft web page Page web de PdfCraft
PdfCraft on GitHub PdfCraft sur GitHub
- ArtCraft website Site web d'ArtCraft
Check for updates… Rechercher des mises à jour…
About PdfCraft À propos de PdfCraft
Export a PDF Exporter un PDF
diff --git a/crates/ui-egui/src/i18n/hu.tsv b/crates/ui-egui/src/i18n/hu.tsv
index b9b3f55..3a6f232 100644
--- a/crates/ui-egui/src/i18n/hu.tsv
+++ b/crates/ui-egui/src/i18n/hu.tsv
@@ -64,7 +64,6 @@
Side panels Oldalsó panelek
Enable Acrobat JavaScript Acrobat JavaScript engedélyezése
OK OK
- Join our Discord Csatlakozás a Discordhoz
Close Bezárás
Next / previous match Következő / előző találat
Copy selected text Kijelölt szöveg másolása
@@ -132,8 +131,6 @@
Current page — type a page number or label (such as iv) and press Enter Aktuális oldal — írj be egy oldalszámot vagy címkét (például iv), majd nyomd meg az Entert
Welcome to PdfCraft Üdvözöljük a PdfCraftban
An open-source PDF workbench — local, private, and scriptable. Nyílt forráskódú PDF-munkapad — helyi, privát és parancsfájlokkal vezérelhető.
- Join the ArtCraft community Csatlakozz az ArtCraft közösséghez
- Get help, share feedback and follow development on Discord. Kérj segítséget, oszd meg a véleményed, és kövesd a fejlesztést a Discordon.
Recommended tools Ajánlott eszközök
Use now Használat most
Open file Fájl megnyitása
@@ -278,10 +275,8 @@
Split document… Dokumentum felosztása…
Number pages… Oldalak számozása…
Keyboard shortcuts Billentyűparancsok
- Join the ArtCraft Discord Csatlakozás az ArtCraft Discordhoz
PdfCraft web page A PdfCraft weblapja
PdfCraft on GitHub PdfCraft a GitHubon
- ArtCraft website Az ArtCraft webhelye
Check for updates… Frissítések keresése…
About PdfCraft A PdfCraftról
Export a PDF PDF exportálása
diff --git a/crates/ui-egui/src/i18n/it.tsv b/crates/ui-egui/src/i18n/it.tsv
index 5448ef6..2ea097e 100644
--- a/crates/ui-egui/src/i18n/it.tsv
+++ b/crates/ui-egui/src/i18n/it.tsv
@@ -90,7 +90,6 @@
Side panels Pannelli laterali
Enable Acrobat JavaScript Abilita JavaScript di Acrobat
OK OK
- Join our Discord Unisciti al nostro Discord
Close Chiudi
Next / previous match Risultato successivo/precedente
Copy selected text Copia testo selezionato
@@ -158,8 +157,6 @@
Current page — type a page number or label (such as iv) and press Enter Pagina corrente: digita un numero o un'etichetta di pagina (ad esempio iv) e premi Invio
Welcome to PdfCraft Benvenuto in PdfCraft
An open-source PDF workbench — local, private, and scriptable. Un banco di lavoro PDF open source: locale, riservato e programmabile.
- Join the ArtCraft community Unisciti alla community di ArtCraft
- Get help, share feedback and follow development on Discord. Chiedi aiuto, condividi commenti e segui lo sviluppo su Discord.
Recommended tools Strumenti consigliati
Use now Usa ora
Open file Apri file
@@ -304,10 +301,8 @@
Split document… Dividi documento…
Number pages… Numera pagine…
Keyboard shortcuts Scorciatoie da tastiera
- Join the ArtCraft Discord Unisciti al Discord di ArtCraft
PdfCraft web page Pagina web di PdfCraft
PdfCraft on GitHub PdfCraft su GitHub
- ArtCraft website Sito web di ArtCraft
Check for updates… Verifica aggiornamenti…
About PdfCraft Informazioni su PdfCraft
Export a PDF Esporta un PDF
diff --git a/crates/ui-egui/src/i18n/ja.tsv b/crates/ui-egui/src/i18n/ja.tsv
index c427772..2e3b570 100644
--- a/crates/ui-egui/src/i18n/ja.tsv
+++ b/crates/ui-egui/src/i18n/ja.tsv
@@ -93,7 +93,6 @@
Side panels サイドパネル
Enable Acrobat JavaScript Acrobat JavaScript を有効にする
OK OK
- Join our Discord Discord に参加
Close 閉じる
Next / previous match 次/前の検索結果
Copy selected text 選択したテキストをコピー
@@ -161,8 +160,6 @@
Current page — type a page number or label (such as iv) and press Enter 現在のページ:ページ番号またはラベル(例:iv)を入力して Enter
Welcome to PdfCraft PdfCraft へようこそ
An open-source PDF workbench — local, private, and scriptable. ローカルで処理し、プライバシーを守る、スクリプト対応のオープンソース PDF ツール。
- Join the ArtCraft community ArtCraft コミュニティに参加
- Get help, share feedback and follow development on Discord. Discord で質問やフィードバックを共有し、開発の進捗を確認できます。
Recommended tools おすすめのツール
Use now 使用する
Open file ファイルを開く
@@ -307,10 +304,8 @@
Split document… 文書を分割…
Number pages… ページ番号を設定…
Keyboard shortcuts キーボードショートカット
- Join the ArtCraft Discord ArtCraft の Discord に参加
PdfCraft web page PdfCraft の Web 版
PdfCraft on GitHub GitHub の PdfCraft
- ArtCraft website ArtCraft のウェブサイト
Check for updates… 更新を確認…
About PdfCraft PdfCraft について
Export a PDF PDF を書き出す
diff --git a/crates/ui-egui/src/i18n/kk.tsv b/crates/ui-egui/src/i18n/kk.tsv
index fc807c7..a612a1b 100644
--- a/crates/ui-egui/src/i18n/kk.tsv
+++ b/crates/ui-egui/src/i18n/kk.tsv
@@ -67,7 +67,6 @@
Side panels Бүйірлік панельдер
Enable Acrobat JavaScript Acrobat JavaScript-ті қосу
OK ОК
- Join our Discord Discord-қа қосылыңыз
Close Жабу
Next / previous match Келесі / алдыңғы сәйкестік
Copy selected text Таңдалған мәтінді көшіру
@@ -122,8 +121,6 @@
Current page — type a page number or label (such as iv) and press Enter Ағымдағы бет — бет нөмірін немесе белгісін (мысалы, iv) теріңіз де, Enter пернесін басыңыз
Welcome to PdfCraft PdfCraft-ге қош келдіңіз
An open-source PDF workbench — local, private, and scriptable. Ашық бастапқы кодты PDF жұмыс орны — жергілікті, жеке әрі скрипттерді қолдайтын.
- Join the ArtCraft community ArtCraft қауымдастығына қосылыңыз
- Get help, share feedback and follow development on Discord. Көмек алыңыз, пікір бөлісіңіз және Discord-тағы әзірлеуді қадағалаңыз.
Recommended tools Ұсынылған құралдар
Use now Дәл қазір пайдалану
Open file Файлды ашу
@@ -267,10 +264,8 @@
Split document… Құжатты бөлу…
Number pages… Беттерді нөмірлеу…
Keyboard shortcuts Пернетақта тіркесімдері
- Join the ArtCraft Discord ArtCraft Discord-ына қосылыңыз
PdfCraft web page PdfCraft веб-сайты
PdfCraft on GitHub GitHub-тағы PdfCraft
- ArtCraft website ArtCraft веб-сайты
Check for updates… Жаңартуларды тексеру…
About PdfCraft PdfCraft туралы
Export a PDF PDF экспорттау
diff --git a/crates/ui-egui/src/i18n/lt.tsv b/crates/ui-egui/src/i18n/lt.tsv
index 2b6ffa0..b320714 100644
--- a/crates/ui-egui/src/i18n/lt.tsv
+++ b/crates/ui-egui/src/i18n/lt.tsv
@@ -602,7 +602,6 @@
From {file} Iš {file}
From: Nuo:
Front side only Tik priekinė pusė
- Get help, share feedback and follow development on Discord. Gaukite pagalbos, pateikite atsiliepimų ir sekite naujienas „Discord“.
Go to a page view Pereiti į puslapio rodinį
Go to page {p} Pereiti į puslapį {p}
Go to the page Pereiti į puslapį
@@ -654,8 +653,6 @@
JavaScript Console JavaScript konsolė
JavaScript is turned off (Preferences ▸ JavaScript). JavaScript išjungtas (Nuostatos > JavaScript).
JavaScript, e.g. getField("total").value JavaScript, pvz., getField("total").value
- Join our Discord Prisijunkite prie mūsų „Discord“ serverio
- Join the ArtCraft community Prisijunkite prie „ArtCraft“ bendruomenės
Justify Abipusė lygiuotė
Keep source fonts Išsaugoti šaltinio šriftus
Keep tool selected Palikti įrankį pasirinktą
@@ -1323,7 +1320,6 @@
Archive documents Archyvuoti dokumentus
Area Plotas
Arrow Rodyklė
- ArtCraft website „ArtCraft“ svetainė
Ask about this document Klausti apie šį dokumentą
Attach a file Pridėti failą
Attach file Pridėti failą
@@ -1458,7 +1454,6 @@
Insert text Įterpti tekstą
JavaScript JavaScript
JavaScript console… JavaScript konsolė…
- Join the ArtCraft Discord Prisijungti prie „ArtCraft“ „Discord“ serverio
Light gray Šviesiai pilka
Line Linija
Link Saitas
diff --git a/crates/ui-egui/src/i18n/pl.tsv b/crates/ui-egui/src/i18n/pl.tsv
index ee205f5..3686d4e 100644
--- a/crates/ui-egui/src/i18n/pl.tsv
+++ b/crates/ui-egui/src/i18n/pl.tsv
@@ -89,7 +89,6 @@
Side panels Panele boczne
Enable Acrobat JavaScript Włącz Acrobat JavaScript
OK OK
- Join our Discord Dołącz do naszego Discorda
Close Zamknij
Next / previous match Następne / poprzednie dopasowanie
Copy selected text Kopiuj zaznaczony tekst
@@ -157,8 +156,6 @@
Current page — type a page number or label (such as iv) and press Enter Bieżąca strona — wpisz numer lub etykietę strony (np. iv) i naciśnij Enter
Welcome to PdfCraft Witamy w PdfCraft
An open-source PDF workbench — local, private, and scriptable. Otwarty zestaw narzędzi do PDF — lokalny, prywatny i obsługujący skrypty.
- Join the ArtCraft community Dołącz do społeczności ArtCraft
- Get help, share feedback and follow development on Discord. Uzyskaj pomoc, podziel się opinią i śledź rozwój na Discordzie.
Recommended tools Polecane narzędzia
Use now Użyj teraz
Open file Otwórz plik
@@ -302,10 +299,8 @@
Split document… Podziel dokument…
Number pages… Ponumeruj strony…
Keyboard shortcuts Skróty klawiaturowe
- Join the ArtCraft Discord Dołącz do Discorda ArtCraft
PdfCraft web page Strona internetowa PdfCraft
PdfCraft on GitHub PdfCraft na GitHubie
- ArtCraft website Strona internetowa ArtCraft
Check for updates… Sprawdź aktualizacje…
About PdfCraft O PdfCraft
Export a PDF Eksportuj PDF
diff --git a/crates/ui-egui/src/i18n/pt-br.tsv b/crates/ui-egui/src/i18n/pt-br.tsv
index f22ad9c..2271e36 100644
--- a/crates/ui-egui/src/i18n/pt-br.tsv
+++ b/crates/ui-egui/src/i18n/pt-br.tsv
@@ -1684,13 +1684,8 @@
Split document… Dividir documento…
Number pages… Numerar páginas…
Keyboard shortcuts Atalhos de teclado
- Join the ArtCraft Discord Entrar no Discord do ArtCraft
- Join the ArtCraft community Entrar na comunidade ArtCraft
- Get help, share feedback and follow development on Discord. Obtenha ajuda, compartilhe comentários e acompanhe o desenvolvimento no Discord.
- Join our Discord Entrar em nosso Discord
PdfCraft web page Página da Web do PdfCraft
PdfCraft on GitHub PdfCraft no GitHub
- ArtCraft website Site do ArtCraft
Check for updates… Verificar atualizações…
About PdfCraft Sobre o PdfCraft
JavaScript console… Console JavaScript…
diff --git a/crates/ui-egui/src/i18n/ru.tsv b/crates/ui-egui/src/i18n/ru.tsv
index ac054d0..59ed724 100644
--- a/crates/ui-egui/src/i18n/ru.tsv
+++ b/crates/ui-egui/src/i18n/ru.tsv
@@ -86,7 +86,6 @@
Flatten Fill & Sign when saving Расплющить «Заполнить и подписать» при сохранении
Text, marks and signatures become part of the page. Other comments stay editable. Текст, пометки и подписи становятся частью страницы. Остальные комментарии можно по-прежнему править.
OK OK
- Join our Discord Присоединяйтесь к нашему Discord
Close Закрыть
Next / previous match Следующее / предыдущее совпадение
Copy selected text Копировать выделенный текст
@@ -154,8 +153,6 @@
Current page — type a page number or label (such as iv) and press Enter Текущая страница — введите номер или метку страницы (например, iv) и нажмите Enter
Welcome to PdfCraft Добро пожаловать в PdfCraft
An open-source PDF workbench — local, private, and scriptable. Открытый PDF-редактор — локальный, приватный и программируемый.
- Join the ArtCraft community Присоединяйтесь к сообществу ArtCraft
- Get help, share feedback and follow development on Discord. Получайте помощь, делитесь отзывами и следите за разработкой в Discord.
Recommended tools Рекомендуемые инструменты
Use now Использовать сейчас
Open file Открыть файл
@@ -300,10 +297,8 @@
Split document… Разделить документ…
Number pages… Пронумеровать страницы…
Keyboard shortcuts Горячие клавиши
- Join the ArtCraft Discord Присоединяйтесь к Discord ArtCraft
PdfCraft web page Веб-страница PdfCraft
PdfCraft on GitHub PdfCraft на GitHub
- ArtCraft website Веб-сайт ArtCraft
Check for updates… Проверить обновления…
About PdfCraft О программе PdfCraft
Export a PDF Экспортировать PDF
diff --git a/crates/ui-egui/src/i18n/sl.tsv b/crates/ui-egui/src/i18n/sl.tsv
index e8dc016..1e0ce12 100644
--- a/crates/ui-egui/src/i18n/sl.tsv
+++ b/crates/ui-egui/src/i18n/sl.tsv
@@ -229,7 +229,6 @@
Archive documents Arhiviraj dokumente
Area Ploščina
Arrow Puščica
- ArtCraft website Spletna stran ArtCraft
Ask about this document Vprašaj o tem dokumentu
Asks GitHub for the latest release. Nothing is downloaded or installed automatically. Vpraša GitHub za najnovejšo izdajo. Ničesar se ne prenese ali namesti samodejno.
Associated with content Povezano z vsebino
@@ -865,7 +864,6 @@
Full screen mode Celozaslonski način
General Splošno
Geospatial location Geoprostorska lokacija
- Get help, share feedback and follow development on Discord. Poiščite pomoč, delite povratne informacije in spremljajte razvoj na Discordu.
Go to a page view Pojdi na pogled strani
Go to page {p} Pojdi na stran {p}
Go to page… Pojdi na stran…
@@ -971,9 +969,6 @@
JavaScript console… Konzola JavaScript…
JavaScript is turned off (Preferences ▸ JavaScript). JavaScript je izklopljen (Nastavitve > JavaScript).
JavaScript, e.g. getField("total").value JavaScript, npr. getField("total").value
- Join our Discord Discord kanal
- Join the ArtCraft Discord Pridružite se Discordu ArtCraft
- Join the ArtCraft community Pridružite se skupnosti ArtCraft
July Julij
June Junij
Justify Obojestransko poravnano
diff --git a/crates/ui-egui/src/i18n/te.tsv b/crates/ui-egui/src/i18n/te.tsv
index 292b9ae..2453c38 100644
--- a/crates/ui-egui/src/i18n/te.tsv
+++ b/crates/ui-egui/src/i18n/te.tsv
@@ -70,7 +70,6 @@ comment menu Edit సవరించు
Side panels సైడ్ ప్యానెల్లు
Enable Acrobat JavaScript Acrobat JavaScriptను ప్రారంభించు
OK సరే
- Join our Discord మా Discordలో చేరండి
Close మూసివేయి
Next / previous match తదుపరి / మునుపటి సరిపోలిక
Copy selected text ఎంచుకున్న టెక్స్ట్ను కాపీ చేయి
@@ -138,8 +137,6 @@ comment menu Edit సవరించు
Current page — type a page number or label (such as iv) and press Enter ప్రస్తుత పేజీ — పేజీ సంఖ్యను లేదా లేబుల్ను (iv వంటిది) టైప్ చేసి Enter నొక్కండి
Welcome to PdfCraft PdfCraftకు స్వాగతం
An open-source PDF workbench — local, private, and scriptable. ఓపెన్-సోర్స్ PDF వర్క్బెంచ్ — మీ కంప్యూటర్లోనే నడుస్తుంది, గోప్యంగా ఉంటుంది, స్క్రిప్ట్లతో ఆటోమేట్ చేయవచ్చు.
- Join the ArtCraft community ArtCraft కమ్యూనిటీలో చేరండి
- Get help, share feedback and follow development on Discord. Discordలో సహాయం పొందండి, మీ అభిప్రాయాన్ని పంచుకోండి, అభివృద్ధిని అనుసరించండి.
Recommended tools సిఫార్సు చేసిన సాధనాలు
Use now ఇప్పుడే ఉపయోగించు
Open file ఫైల్ను తెరువు
@@ -284,10 +281,8 @@ comment menu Edit సవరించు
Split document… పత్రాన్ని విభజించు…
Number pages… పేజీలకు సంఖ్యలు వేయి…
Keyboard shortcuts కీబోర్డ్ షార్ట్కట్లు
- Join the ArtCraft Discord ArtCraft Discordలో చేరండి
PdfCraft web page PdfCraft వెబ్ పేజీ
PdfCraft on GitHub GitHubలో PdfCraft
- ArtCraft website ArtCraft వెబ్సైట్
Check for updates… అప్డేట్ల కోసం తనిఖీ చేయి…
About PdfCraft PdfCraft గురించి
Export a PDF PDFను ఎగుమతి చేయి
diff --git a/crates/ui-egui/src/i18n/tr.tsv b/crates/ui-egui/src/i18n/tr.tsv
index 0d990dc..8ff605b 100644
--- a/crates/ui-egui/src/i18n/tr.tsv
+++ b/crates/ui-egui/src/i18n/tr.tsv
@@ -57,7 +57,6 @@
Flatten Fill & Sign when saving Kaydederken Doldur ve İmzala'yı düzleştir
Text, marks and signatures become part of the page. Other comments stay editable. Metin, işaretler ve imzalar sayfanın bir parçası olur. Diğer yorumlar düzenlenebilir kalır.
OK Tamam
- Join our Discord Discord'umuza katılın
Close Kapat
Next / previous match Sonraki / önceki eşleşme
Copy selected text Seçilen metni kopyala
@@ -119,8 +118,6 @@
Current page — type a page number or label (such as iv) and press Enter Geçerli sayfa — bir sayfa numarası veya etiketi (örneğin iv) yazıp Enter'a basın
Welcome to PdfCraft PdfCraft'a Hoş Geldiniz
An open-source PDF workbench — local, private, and scriptable. Açık kaynaklı bir PDF çalışma alanı — yerel, gizli ve komut dosyalarıyla yönetilebilir.
- Join the ArtCraft community ArtCraft topluluğuna katılın
- Get help, share feedback and follow development on Discord. Discord'da yardım alın, geri bildirim paylaşın ve geliştirmeyi takip edin.
Recommended tools Önerilen araçlar
Use now Şimdi kullan
Open file Dosya aç
@@ -265,10 +262,8 @@
Split document… Belgeyi böl…
Number pages… Sayfaları numaralandır…
Keyboard shortcuts Klavye kısayolları
- Join the ArtCraft Discord ArtCraft Discord'una katıl
PdfCraft web page PdfCraft web sayfası
PdfCraft on GitHub GitHub'da PdfCraft
- ArtCraft website ArtCraft web sitesi
Check for updates… Güncellemeleri denetle…
About PdfCraft PdfCraft hakkında
Export a PDF PDF'i dışa aktar
diff --git a/crates/ui-egui/src/i18n/uk.tsv b/crates/ui-egui/src/i18n/uk.tsv
index 89aa68d..f6707ce 100644
--- a/crates/ui-egui/src/i18n/uk.tsv
+++ b/crates/ui-egui/src/i18n/uk.tsv
@@ -91,7 +91,6 @@
Side panels Бічні панелі
Enable Acrobat JavaScript Увімкнути Acrobat JavaScript
OK OK
- Join our Discord Приєднатися до нашого Discord
Close Закрити
Next / previous match Наступний / попередній збіг
Copy selected text Копіювати виділений текст
@@ -159,8 +158,6 @@
Current page — type a page number or label (such as iv) and press Enter Поточна сторінка — введіть номер або позначку сторінки (наприклад iv) і натисніть Enter
Welcome to PdfCraft Вітаємо в PdfCraft
An open-source PDF workbench — local, private, and scriptable. Відкритий інструментарій для PDF — локальний, приватний і з підтримкою сценаріїв.
- Join the ArtCraft community Приєднатися до спільноти ArtCraft
- Get help, share feedback and follow development on Discord. Отримуйте допомогу, діліться відгуками й стежте за розробкою в Discord.
Recommended tools Рекомендовані інструменти
Use now Використати зараз
Open file Відкрити файл
@@ -305,10 +302,8 @@
Split document… Розділити документ…
Number pages… Пронумерувати сторінки…
Keyboard shortcuts Клавіатурні скорочення
- Join the ArtCraft Discord Приєднатися до Discord ArtCraft
PdfCraft web page Вебсторінка PdfCraft
PdfCraft on GitHub PdfCraft на GitHub
- ArtCraft website Вебсайт ArtCraft
Check for updates… Перевірити оновлення…
About PdfCraft Про PdfCraft
Export a PDF Експортувати PDF
diff --git a/crates/ui-egui/src/i18n/zh-hans.tsv b/crates/ui-egui/src/i18n/zh-hans.tsv
index a1e6e25..b3e1770 100644
--- a/crates/ui-egui/src/i18n/zh-hans.tsv
+++ b/crates/ui-egui/src/i18n/zh-hans.tsv
@@ -1819,13 +1819,8 @@
Split document… 拆分文档…
Number pages… 页面编号…
Keyboard shortcuts 键盘快捷键
- Join the ArtCraft Discord 加入 ArtCraft Discord
- Join the ArtCraft community 加入 ArtCraft 社区
- Get help, share feedback and follow development on Discord. 在 Discord 上获取帮助、分享反馈并关注开发动态。
- Join our Discord 加入我们的 Discord
PdfCraft web page PdfCraft 网页
PdfCraft on GitHub GitHub 上的 PdfCraft
- ArtCraft website ArtCraft 官网
Check for updates… 检查更新…
About PdfCraft 关于 PdfCraft
JavaScript console… JavaScript 控制台…
diff --git a/crates/ui-egui/src/i18n/zh-hant.tsv b/crates/ui-egui/src/i18n/zh-hant.tsv
index c9db457..92ba8da 100644
--- a/crates/ui-egui/src/i18n/zh-hant.tsv
+++ b/crates/ui-egui/src/i18n/zh-hant.tsv
@@ -1763,13 +1763,8 @@
Split document… 分割文件…
Number pages… 編訂頁碼…
Keyboard shortcuts 鍵盤快速鍵
- Join the ArtCraft Discord 加入 ArtCraft Discord
- Join the ArtCraft community 加入 ArtCraft 社群
- Get help, share feedback and follow development on Discord. 在 Discord 取得協助、提供意見並追蹤開發進度。
- Join our Discord 加入 Discord 社群
PdfCraft web page PdfCraft 網頁
PdfCraft on GitHub GitHub 上的 PdfCraft
- ArtCraft website ArtCraft 網站
Check for updates… 尋找更新…
About PdfCraft 關於 PdfCraft
JavaScript console… JavaScript 主控台…
diff --git a/crates/ui-egui/src/widgets.rs b/crates/ui-egui/src/widgets.rs
index 4f5aaa7..b9ab45e 100644
--- a/crates/ui-egui/src/widgets.rs
+++ b/crates/ui-egui/src/widgets.rs
@@ -499,35 +499,14 @@ pub fn progress_notice(app: &PdfCraftApp, ctx: &egui::Context) -> bool {
cancel
}
-/// The ArtCraft wordmark (Storyteller's brand, docs/brand/; not open source), sized to `height`.
-pub fn artcraft_logo(ui: &mut egui::Ui, height: f32) -> Response {
- let dark = ui.visuals().dark_mode;
- let (uri, bytes): (&str, &'static [u8]) = if dark {
- ("bytes://artcraft-logo-white.svg", include_bytes!("../../../docs/brand/artcraft-logo-white.svg"))
- } else {
- ("bytes://artcraft-logo.svg", include_bytes!("../../../docs/brand/artcraft-logo.svg"))
- };
- ui.add(egui::Image::from_bytes(uri, bytes).max_height(height).alt_text("ArtCraft"))
-}
-
-/// The ArtCraft mark (brand blue, works on light and dark), `size` points square.
-pub fn artcraft_mark(ui: &mut egui::Ui, size: f32) -> Response {
- ui.add(
- egui::Image::from_bytes("bytes://artcraft-mark.svg", include_bytes!("../../../docs/brand/artcraft-mark.svg"))
- .fit_to_exact_size(vec2(size, size))
- .alt_text("ArtCraft"),
- )
-}
-
-/// Buttons for every community link (`pdfcraft_engine::links`), Discord first and prominent.
+/// Buttons for every project link (`pdfcraft_engine::links`).
/// Returns the registry command of the one clicked.
pub fn community_links(ui: &mut egui::Ui) -> Option<&'static str> {
let mut clicked = None;
ui.horizontal_wrapped(|ui| {
ui.spacing_mut().item_spacing = vec2(8.0, 8.0);
- for (i, l) in pdfcraft_engine::links::LINKS.iter().enumerate() {
- let resp = if i == 0 { icon_pill(ui, l.icon, tl!("Join our Discord"), true) } else { icon_pill(ui, l.icon, tl!(l.label), false) };
- if resp.on_hover_text(l.url).clicked() {
+ for l in pdfcraft_engine::links::LINKS {
+ if icon_pill(ui, l.icon, tl!(l.label), false).on_hover_text(l.url).clicked() {
clicked = Some(l.command);
}
}
diff --git a/crates/ui-egui/tests/ui.rs b/crates/ui-egui/tests/ui.rs
index cef2bca..24b9881 100644
--- a/crates/ui-egui/tests/ui.rs
+++ b/crates/ui-egui/tests/ui.rs
@@ -302,8 +302,8 @@ fn tabs_shrink_to_fit_then_arrows_step_through_them_and_open_stays_in_sight() {
}
});
let open = h.get_by_label("Open").rect();
- let discord = h.get_by_label("Discord").rect();
- assert!(open.right() <= discord.left(), "Open {open:?} must not run under Discord {discord:?}");
+ let controls = h.get_by_label("Keyboard shortcuts").rect();
+ assert!(open.right() <= controls.left(), "Open {open:?} must not run under the controls {controls:?}");
let mut previous_right = f32::MIN;
for i in 0..5 {
let tab = h.get_by_label(&name(i)).rect();
@@ -327,15 +327,15 @@ fn tabs_shrink_to_fit_then_arrows_step_through_them_and_open_stays_in_sight() {
assert_eq!(enabled(&h, "Scroll tabs right"), Some(true), "and then there is more to the right");
let open = h.get_by_label("Open").rect();
let right = h.get_by_label("Scroll tabs right").rect();
- assert!(right.right() <= open.left() + 0.5 && open.right() <= h.get_by_label("Discord").rect().left());
- // Twenty: Open stays in sight left of Discord.
+ assert!(right.right() <= open.left() + 0.5 && open.right() <= h.get_by_label("Keyboard shortcuts").rect().left());
+ // Twenty: Open stays in sight left of the controls.
for i in 0..13 {
h.state_mut().open_bytes(&format!("more-{i:02}.pdf"), None, FIXTURE.to_vec()).unwrap();
}
h.run_steps(4);
let open = h.get_by_label("Open").rect();
- let discord = h.get_by_label("Discord").rect();
- assert!(open.left() > 0.0 && open.right() <= discord.left(), "Open {open:?} stays in sight left of Discord {discord:?}");
+ let controls = h.get_by_label("Keyboard shortcuts").rect();
+ assert!(open.left() > 0.0 && open.right() <= controls.left(), "Open {open:?} stays in sight left of the controls {controls:?}");
}
/// macOS (#789): with the integrated title bar, the strip is the 28 pt band AppKit centres the
@@ -348,7 +348,7 @@ fn the_integrated_title_bar_is_the_traffic_light_band() {
app.open_bytes("band.pdf", None, FIXTURE.to_vec()).unwrap();
});
let band = 28.0;
- for label in ["Home", "band.pdf", "Open", "Discord", "Keyboard shortcuts"] {
+ for label in ["Home", "band.pdf", "Open", "Keyboard shortcuts"] {
let r = h.get_by_label(label).rect();
assert!(r.top() >= 0.0 && r.bottom() <= band, "{label}: {r:?} inside the {band} pt title bar");
assert!(r.height() >= 24.0, "{label}: {r:?} stays clickable");
diff --git a/crates/ui-egui/tests/ui_group/links.rs b/crates/ui-egui/tests/ui_group/links.rs
index b08036b..820d1e5 100644
--- a/crates/ui-egui/tests/ui_group/links.rs
+++ b/crates/ui-egui/tests/ui_group/links.rs
@@ -1,5 +1,4 @@
-//! Community links: the Discord button is one click away everywhere; Help menu, About dialog and
-//! home screen open the ArtCraft and PdfCraft pages.
+//! Project links: the Help menu and About dialog open the PdfCraft GitHub page.
use egui_kittest::Harness;
use egui_kittest::kittest::Queryable;
@@ -18,42 +17,16 @@ fn harness(setup: impl FnOnce(&mut PdfCraftApp) + 'static) -> Harness<'static, P
}
#[test]
-fn discord_button_in_the_top_bar_opens_discord() {
- let mut h = harness(|_| {});
- h.get_by_label("Discord").click();
- h.run_steps(2);
- assert_eq!(h.state().last_opened_url.as_deref(), Some(links::DISCORD));
- assert_eq!(links::DISCORD, "https://discord.gg/artcraft");
-}
-
-#[test]
-fn home_screen_links() {
- for (label, url) in [
- ("Join our Discord", links::DISCORD),
- ("PdfCraft web page", "https://getartcraft.com/apps/pdfcraft"),
- ("PdfCraft on GitHub", "https://github.com/storytold/pdfcraft"),
- ("ArtCraft website", "https://getartcraft.com"),
- ] {
- let mut h = harness(|_| {});
- h.get_by_label("Join the ArtCraft community");
- h.get_by_label(label).click();
- h.run_steps(2);
- assert_eq!(h.state().last_opened_url.as_deref(), Some(url), "{label}");
- }
-}
-
-#[test]
-fn about_dialog_shows_the_brand_and_links() {
+fn about_dialog_shows_the_links() {
let pdf = b"%PDF-1.7\n1 0 obj << /Type /Catalog /Pages 2 0 R >> endobj\n2 0 obj << /Type /Pages /Kids [3 0 R] /Count 1 >> endobj\n3 0 obj << /Type /Page /Parent 2 0 R /MediaBox [0 0 200 200] >> endobj\ntrailer << /Root 1 0 R >>\n%%EOF";
// With a document open, so the home screen's own links are not on screen.
let mut h = harness(move |app| {
app.open_bytes("one.pdf", None, pdf.to_vec()).unwrap();
app.dialog = Some(Dialog::About);
});
- assert!(h.query_all_by_label("ArtCraft").count() >= 2, "the mark and the wordmark (alt text)");
- h.get_by_label("Join our Discord").click();
+ h.get_by_label("PdfCraft on GitHub").click();
h.run_steps(2);
- assert_eq!(h.state().last_opened_url.as_deref(), Some(links::DISCORD));
+ assert_eq!(h.state().last_opened_url.as_deref(), Some(links::GITHUB));
}
#[test]
diff --git a/docs/brand/LICENSE-brand.txt b/docs/brand/LICENSE-brand.txt
deleted file mode 100644
index 1d2c4ef..0000000
--- a/docs/brand/LICENSE-brand.txt
+++ /dev/null
@@ -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 PdfCraft'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 PdfCraft itself, its documentation and its official builds, to identify PdfCraft 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 PdfCraft, 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 PdfCraft.
-
-Forks and modified versions
-
-If you distribute or publish a modified version of PdfCraft, 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 PdfCraft 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.
diff --git a/docs/brand/artcraft-logo-white.png b/docs/brand/artcraft-logo-white.png
deleted file mode 100644
index 8cfb31d..0000000
Binary files a/docs/brand/artcraft-logo-white.png and /dev/null differ
diff --git a/docs/brand/artcraft-logo-white.svg b/docs/brand/artcraft-logo-white.svg
deleted file mode 100644
index 4af80f7..0000000
--- a/docs/brand/artcraft-logo-white.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
diff --git a/docs/brand/artcraft-logo.png b/docs/brand/artcraft-logo.png
deleted file mode 100644
index a4d1544..0000000
Binary files a/docs/brand/artcraft-logo.png and /dev/null differ
diff --git a/docs/brand/artcraft-logo.svg b/docs/brand/artcraft-logo.svg
deleted file mode 100644
index d63f3ea..0000000
--- a/docs/brand/artcraft-logo.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
diff --git a/docs/brand/artcraft-mark-black.png b/docs/brand/artcraft-mark-black.png
deleted file mode 100644
index 27664bc..0000000
Binary files a/docs/brand/artcraft-mark-black.png and /dev/null differ
diff --git a/docs/brand/artcraft-mark-black.svg b/docs/brand/artcraft-mark-black.svg
deleted file mode 100644
index 6394353..0000000
--- a/docs/brand/artcraft-mark-black.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/docs/brand/artcraft-mark.png b/docs/brand/artcraft-mark.png
deleted file mode 100644
index dbb3dc0..0000000
Binary files a/docs/brand/artcraft-mark.png and /dev/null differ
diff --git a/docs/brand/artcraft-mark.svg b/docs/brand/artcraft-mark.svg
deleted file mode 100644
index 72e191f..0000000
--- a/docs/brand/artcraft-mark.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/packaging/linux/ai.storyteller.pdfcraft.metainfo.xml.in b/packaging/linux/ai.storyteller.pdfcraft.metainfo.xml.in
index c8251ac..3b6aa32 100644
--- a/packaging/linux/ai.storyteller.pdfcraft.metainfo.xml.in
+++ b/packaging/linux/ai.storyteller.pdfcraft.metainfo.xml.in
@@ -19,10 +19,10 @@
ai.storyteller.pdfcraft.desktopai.storyteller.pdfcraft
- https://getartcraft.com/apps/pdfcraft
+ https://github.com/storytold/pdfcrafthttps://github.com/storytold/pdfcraft/issueshttps://github.com/storytold/pdfcraft
- https://discord.gg/artcraft
+ https://github.com/storytold/pdfcraft/issuesOfficeViewer
diff --git a/packaging/linux/nfpm.yaml b/packaging/linux/nfpm.yaml
index b20bcb6..677fdf3 100644
--- a/packaging/linux/nfpm.yaml
+++ b/packaging/linux/nfpm.yaml
@@ -14,7 +14,7 @@ section: graphics
priority: optional
maintainer: ${PDFCRAFT_MAINTAINER}
vendor: Learning Machines LLC
-homepage: https://getartcraft.com/apps/pdfcraft
+homepage: https://github.com/storytold/pdfcraft
license: MIT OR Apache-2.0
description: |-
Open-source, native PDF workbench: read, comment, fill and sign forms,
diff --git a/packaging/windows/pdfcraft.wxs b/packaging/windows/pdfcraft.wxs
index e8bb537..b721f8e 100644
--- a/packaging/windows/pdfcraft.wxs
+++ b/packaging/windows/pdfcraft.wxs
@@ -34,9 +34,9 @@
Add/Remove Programs show a blank icon (#57). -->
-
-
-
+
+
+
diff --git a/tools/craft-skills b/tools/craft-skills
new file mode 160000
index 0000000..2c1fed9
--- /dev/null
+++ b/tools/craft-skills
@@ -0,0 +1 @@
+Subproject commit 2c1fed9237a3c3320cd0be9837398399fe467170
diff --git a/xtask/src/assets.rs b/xtask/src/assets.rs
index fc95a6f..8e0c98e 100644
--- a/xtask/src/assets.rs
+++ b/xtask/src/assets.rs
@@ -36,11 +36,6 @@ pub const ALLOWED_LICENCES: &[&str] = &[
];
/// The closed list of Adobe-authored, non-visual technical data (AGENTS.md §1.1): (crate, path).
-/// Storyteller's own brand marks (the ArtCraft name and logos): shipped in the app and docs, but
-/// not licensed for reuse by forks. Allowed only for `kind = "logo"` entries under `docs/brand/`
-/// (AGENTS.md §1.2).
-pub const BRAND_LICENCE: &str = "LicenseRef-Storyteller-Trademark";
-
pub const ADOBE_DATA_ALLOWED: &[(&str, &str)] = &[("hayro-cmap", "assets/cmaps.brotli"), ("hayro-interpret", "src/font/generated/metrics.rs")];
/// First-party files on that same closed list: generated tables of Adobe-authored non-visual
@@ -241,10 +236,7 @@ pub fn check(root: &Path, m: &Manifest, repo_files: &[String], lock: &BTreeSet<(
if !seen.insert(a.path.clone()) {
problems.push(format!("{}: listed twice", a.path));
}
- let brand = a.licence == BRAND_LICENCE && a.kind == "logo" && a.path.starts_with("docs/brand/");
- if !brand {
- licence_ok(&a.path, &a.licence, &mut problems);
- }
+ licence_ok(&a.path, &a.licence, &mut problems);
if !root.join(&a.licence_file).is_file() {
problems.push(format!("{}: licence file {} is missing", a.path, a.licence_file));
}
@@ -549,22 +541,6 @@ mod tests {
assert!(p.iter().any(|p| p.contains("SHA-256 does not match")), "{p:?}");
}
- #[test]
- fn brand_licence_only_for_brand_logos() {
- let root = super::root();
- for (path, kind, pass) in [
- ("docs/brand/artcraft-mark.svg", "logo", true),
- ("docs/brand/artcraft-mark.svg", "icon", false),
- ("assets/icons/mark.svg", "logo", false),
- ] {
- let mut a = asset(path, "Storyteller", kind, BRAND_LICENCE);
- a.licence_file = "docs/brand/LICENSE-brand.txt".into();
- let m = Manifest { asset: vec![a], ..Default::default() };
- let p = check(&root, &m, &[], &BTreeSet::new());
- assert_eq!(p.iter().all(|p| !p.contains("allowlist")), pass, "{path} {kind}: {p:?}");
- }
- }
-
#[test]
fn adobe_data_only_on_the_closed_list() {
let l = lock(&[("hayro-cmap", "1.0.0"), ("other", "1.0.0")]);
diff --git a/xtask/src/screenshots.rs b/xtask/src/screenshots.rs
index 243d8b0..49bbe6d 100644
--- a/xtask/src/screenshots.rs
+++ b/xtask/src/screenshots.rs
@@ -106,14 +106,7 @@ fn update_attribution(root: &Path) -> Result<()> {
let stem = file.trim_end_matches(".png");
let scene = SCENES.iter().find(|(n, ..)| *n == stem);
let (title, usage) = scene.map(|(_, t, u, _)| (*t, *u)).unwrap_or(("PdfCraft screenshot", "README"));
- // The home screen shows the ArtCraft mark: say so (it is a Storyteller trademark, not open
- // source; AGENTS.md §1.2), so the screenshot's licence is not read as covering it.
- let shows_home = scene.is_some_and(|(.., args)| args.windows(2).any(|w| w[0] == "--home" && w[1] == "on"));
- let contents = if shows_home {
- "Shows PdfCraft UI, Lucide icons, the showcase PDF built from the [[fetched]] OFL fonts, and the ArtCraft mark (Storyteller trademark from docs/brand/, not covered by this licence)"
- } else {
- "Shows only PdfCraft UI, Lucide icons and the showcase PDF built from the [[fetched]] OFL fonts"
- };
+ let contents = "Shows only PdfCraft UI, Lucide icons and the showcase PDF built from the [[fetched]] OFL fonts";
let bytes = std::fs::read(root.join("docs/images").join(file))?;
out.push_str(&format!(
"\n[[asset]]\npath = \"docs/images/{file}\"\ntitle = \"PdfCraft screenshot: {title}\"\nauthor = \"PdfCraft contributors (generated by `cargo xtask screenshots`)\"\nsource = \"this repository\"\nlicence = \"MIT OR Apache-2.0\"\nlicence_file = \"LICENSE-MIT\"\nkind = \"image\"\nusage = \"{usage}. {contents}\"\nsha256 = \"{}\"\n",