* Add a Polish interface - pl.tsv: the full catalog (287 rows), written clean-room from the English labels; plurals use the same one|few|many rule as Russian. - Registered as the seventh language: "Polski" in the picker, locales pl, pl-PL and pl_PL.UTF-8, complete_menus = true so the completeness tests cover it. - tests/polish.rs: the Polish UI test, modeled on the French one. - README and AGENTS updated for the new language. * Add Hungarian localization and fix responsive settings layout * i18n: add Czech (cs) interface language Czech catalog with every key of the most complete catalog (287 rows), the cs language entry with locale detection (cs-CZ, cs_CZ.UTF-8, ?lang=cs), a Czech plural rule (1 / 2-4 / other) with a unit test, and the README language list. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * i18n: add Japanese (ja) interface language ja.tsv translates the whole interface, the tray menu and tooltip, each app's tagline and the backend's install/update messages into Japanese, and Settings > Language offers 日本語. Japanese locales (ja, ja-JP, ja_JP.UTF-8…) select it; Japanese has one plural form. Japanese is a CJK language, so cjk_font.rs now looks for a Japanese system font (Hiragino Sans on macOS; Yu Gothic, Meiryo or MS Gothic on Windows; Noto Sans CJK JP, Noto Sans JP, IPAGothic, Takao or VL Gothic on Linux and FreeBSD), falling back to a Chinese one, which draws kana and most kanji, where the system has none. The font is loaded per language, so switching between Japanese and Chinese reloads the right face. A fallback face is nudged onto the body font's baseline: egui puts a fallback glyph's baseline at that face's own ascent and only centres the two line boxes, which left a face whose metrics differ from Inter's riding high. On Windows, Yu Gothic's line gap is half an em, so its kana and kanji sat about 0.29 em above the Latin text beside them (Microsoft YaHei, used for Chinese, happens to match). The nudge, applied through a FontTweak, is the difference in ascent and line height, and helps the Chinese faces too. The README and AGENTS list the new language. Tests: the complete-catalog checks cover ja.tsv (placeholders, plural forms, every tl! literal, taglines, package formats), plus a locale/plural test, a Japanese glyph-coverage test, a baseline test and tests/japanese.rs (grid, table, dates, a backend message). * i18n: make the CJK font choice language-neutral The CJK comments, the missing-font note and the plural-rule docs named the languages, so each new one meant editing them all; they now say "CJK". Each language's writing system (its `script`) now lives in the registry, and a language is drawn only with a face for its own script — never another's, which would leave characters as tofu — so a language the system has no font for stays in English, like any other. Adding Korean or Traditional Chinese is a registry row and a candidate list, not a special case. * i18n(pl): use Polish plural rule, so 21 is "21 aplikacji" plural_east_slavic treats 21, 31 and 101 as "one", which is right for Russian but not Polish, where only 1 itself takes the singular. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * i18n(cs): translate "Installed · latest {latest}" (added by #195) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * i18n(pl): translate "Installed · latest {latest}" (added by #195) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * i18n(hu): translate "Installed · latest {latest}" (added by #195) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * i18n(ja): translate "Installed · latest {latest}" (added by #195) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * hungarian test: count only the settings body's links, not the cards' Website links behind the modal #198 gave every card a Website link, and Hungarian labels both Webhely. * hungarian test: card links are 14px text, settings icons 24px; filter on that --------- Co-authored-by: DzikStar <82441193+DzikStar@users.noreply.github.com> Co-authored-by: ferivoq <ferikegameplay@gmail.com> Co-authored-by: Losminek <301412321+Losminek@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Brandon Thomas <echelon@gmail.com>
22 KiB
ArtCraft Launcher
One place to install, update and open every app in the Craft App Suite, rebuilt in pure Rust.
PhotoCraft, LightCraft, FilmCraft, DesignCraft, VectorCraft, PdfCraft, EffectCraft, WordCraft,
DeckCraft, GridCraft, CADCraft and SoundCraft: the right build for your computer, kept up to date.
Download ArtCraft Launcher · ArtCraft · The Craft App Suite
Note
ArtCraft is a community of artists from all walks of life. Painters, photographers, filmmakers, illustrators, designers, animators, hobbyists, and people who picked up a pencil last week. If you make things, you're one of us. Come say hi on Discord.
What it does · Features · Downloads · Build from source · Craft App Suite · Discord

Switch between the grid and a sortable table.
What it does
The Craft apps each ship their own builds for every platform. ArtCraft Launcher saves you from hunting through a dozen release pages: it lists every app in the suite, shows which ones you have and which version, installs the right build for your operating system and processor, and tells you when an update is out. It is a small native app that can sit in your menu bar or system tray.
Features
📦 Install in one clickPicks the right download for your OS and CPU (DMG, MSI, AppImage, .deb, .rpm and more), checks it against the release's SHA-256 checksums and installs it. |
🔄 Stay up to dateChecks each app's GitHub releases and updates the ones you have. A notification tells you when there's something new. |
🧭 Always at handOpens any Craft app from one window, or from the tray and menu-bar icon. Native egui, no Electron, no web view. |
The web version shows the same catalog in the browser, with the latest download for each app.
Interface languages
The interface is in English, Brazilian Portuguese (Português (Brasil)), Czech (Čeština), French
(Français), German (Deutsch), Hungarian (Magyar), Japanese (日本語), Polish (Polski), Russian
(Русский), Simplified Chinese (简体中文) or Spanish (Español). Auto, the default, follows the
system or browser language; Settings → Language picks one and switches at once, and the choice
is kept between runs. Czech locales (cs-CZ, cs_CZ.UTF-8…) select Czech, German ones (de-DE,
de-AT, de-CH, de_DE.UTF-8…) German, French ones (fr-FR, fr-CA…) French, Hungarian ones
(hu, hu-HU, hu_HU.UTF-8…) Hungarian, Japanese ones (ja, ja-JP, ja_JP.UTF-8…) Japanese,
Polish ones (pl, pl-PL, pl_PL.UTF-8) Polish, Spanish ones (es-ES, es-MX, es-419…)
Spanish, and Portuguese ones (pt-BR, and pt-PT too, for now) Brazilian Portuguese. Simplified
Chinese locales (zh-CN, zh-SG, zh-Hans, and POSIX forms such as zh_CN.UTF-8) select
Chinese; Traditional Chinese ones don't. To try a language without changing the setting, start the
desktop app with ARTCRAFT_LAUNCHER_LOCALE=pt-BR, or add ?lang=ru to the web address.
The CJK languages are drawn with the system's own CJK font (Hiragino Sans or PingFang on macOS, Yu Gothic, Meiryo or Microsoft YaHei on Windows, Noto Sans CJK, IPA, Takao or WenQuanYi on Linux and FreeBSD). Where the system has no font for one, and in the web version, the interface stays in English and Settings says why. Product names and release notes stay as published; text without a translation falls back to English.
Where apps are installed
ArtCraft Launcher installs each app where your system normally keeps applications, using the app's official release package, so an app installed by the launcher is the same as one you installed by hand (and the launcher finds apps you installed yourself):
| System | Where | How |
|---|---|---|
| macOS | /Applications/<App>.app |
Copied from the signed, notarized release DMG |
| Windows | C:\Program Files\<App> |
The release MSI, through Windows Installer (with Start menu entry and Apps & features entry) |
| Linux | /usr/bin, /usr/share/applications |
The release .deb (apt) or .rpm (dnf, zypper), with your system's password prompt. Without those, a Flatpak, or an AppImage in ~/Applications |
| Linux, inside the launcher's Flatpak, with no Flatpak on the host | ~/.var/app/ai.storyteller.artcraft-launcher/data/artcraft-launcher/apps/<app> |
The release tarball, unpacked into the launcher's own folder and run inside the same sandbox, with its settings in a home/ folder beside it. Nothing is installed on the host, and each app's configuration stays in the sandbox |
| FreeBSD | /usr/local |
The release tree, with a password prompt (polkit); ~/.local when polkit isn't installed |
ArtCraft Launcher keeps itself current too: when a new version is out, Update and restart
downloads it, verifies it, puts it where this copy is installed (the .app, the Windows Installer
package or portable folder, the AppImage, or the .deb/.rpm) and reopens it.
Updates use the same format an app was installed with. Every download is checked against the release's published SHA-256 before it is installed, and a running app is never replaced.
The launcher writes its log to logs/artcraft-launcher.log in its data folder
(~/.local/share/artcraft-launcher on Linux, ~/Library/Application Support/ArtCraft Launcher
on macOS, %LOCALAPPDATA%\ArtCraft Launcher on Windows, ArtCraftLauncherData beside the
portable zip's executable) and keeps the previous two runs as artcraft-launcher.1.log and
artcraft-launcher.2.log. RUST_LOG changes what it records (debug, info,zbus=warn, …).
Downloads
Download the build for your computer from the latest release, or browse all releases. Every release has a SHA256SUMS.txt to check the files against. <ver> is the version number, for example 0.1.0.
Windows (10 and 11)
| File | What it is |
|---|---|
artcraft-launcher-<ver>-windows-x64.msi |
Installer for most PCs (Intel and AMD, 64-bit). Installs for the current user, no admin rights needed |
artcraft-launcher-<ver>-windows-arm64.msi |
Installer for Windows on Arm (Snapdragon and other Arm PCs) |
artcraft-launcher-<ver>-windows-x86.msi |
Installer for 32-bit Windows |
artcraft-launcher-<ver>-windows-{x64,arm64,x86}-portable.zip |
No install: unzip and run artcraft-launcher.exe. Keeps its settings in the folder |
macOS (11 Big Sur or later)
| File | What it is |
|---|---|
artcraft-launcher-<ver>-macos-universal.dmg |
Universal app for Apple silicon and Intel Macs, signed and notarized. Drag ArtCraft Launcher to Applications |
Linux (x86_64 and aarch64; glibc 2.35 or newer, e.g. Ubuntu 22.04+, Debian 12+, Fedora 36+)
| File | What it is |
|---|---|
artcraft-launcher-<ver>-linux-{x86_64,aarch64}.AppImage |
Runs on almost any distro without installing; chmod +x and run. The .AppImage.zsync beside it lets AppImageUpdate fetch only what changed |
artcraft-launcher-<ver>-linux-{x86_64,aarch64}.deb |
Debian, Ubuntu, Mint, Pop!_OS: sudo apt install ./artcraft-launcher-…deb |
artcraft-launcher-<ver>-linux-{x86_64,aarch64}.rpm |
Fedora, openSUSE, RHEL: sudo dnf install ./artcraft-launcher-…rpm |
artcraft-launcher-<ver>-linux-{x86_64,aarch64}.flatpak |
Flatpak bundle: flatpak install --user artcraft-launcher-…flatpak. Inside the sandbox the launcher installs apps as Flatpaks on the host through flatpak-spawn --host; where the host has no Flatpak it falls back to each app's release tarball, unpacked and run inside the sandbox with the app's settings kept in it. Either way it can only reach the host as far as that permission allows; the AppImage, .deb and .rpm builds are the recommended way to run the launcher on Linux |
artcraft-launcher-<ver>-linux-{x86_64,aarch64}.tar.gz |
Plain tree (bin/, share/) for everyone else and for scripts |
RISC-V (riscv64): artcraft-launcher-<ver>-linux-riscv64.{deb,rpm,tar.gz}, built against Ubuntu 24.04 (needs glibc 2.39+).
The tray icon uses the StatusNotifierItem standard: KDE, Xfce, Cinnamon and most other desktops show it; on GNOME install the AppIndicator extension.
FreeBSD (14, x86_64)
| File | What it is |
|---|---|
artcraft-launcher-<ver>-freebsd-x86_64.tar.gz |
A tree laid out like /usr/local |
pkg install libxkbcommon wayland libX11 libXcursor libXrandr libXi libxcb mesa-libs vulkan-loader fontconfig freetype2
tar -xzf artcraft-launcher-<ver>-freebsd-x86_64.tar.gz --strip-components 1 -C /usr/local
artcraft-launcher
Web (WebAssembly)
| File | What it is |
|---|---|
artcraft-launcher-web-<ver>.zip |
The catalog as a static site you can host anywhere; see packaging/web/README.md |
Build from source
You need a recent stable Rust (1.90 or newer). On Linux, install the windowing headers first
(Debian/Ubuntu: sudo apt install libxkbcommon-dev libwayland-dev libx11-dev libxrandr-dev libxi-dev libgl1-mesa-dev).
git clone https://github.com/storytold/craft-launcher
cd craft-launcher
cargo run --release -p artcraft-launcher # the desktop app
cargo xtask ci # fmt, clippy, tests and the wasm check
The web version builds with trunk:
rustup target add wasm32-unknown-unknown
cd apps/artcraft-launcher-web && trunk serve
Installing your own builds
To install and update the Craft apps from checkouts on your machine instead of GitHub, clone them
next to this repo (../photocraft, ../wordcraft, …) and run:
cargo xtask local sync # git pull every app, build and package each new version into ../local-mirror
cargo xtask local serve # serve the builds and a release feed on http://127.0.0.1:8787/
ARTCRAFT_LAUNCHER_DOWNLOAD_BASE=http://127.0.0.1:8787/ cargo run --release -p artcraft-launcher --features local-mirror
Run sync again whenever you want updates, or let the server do it: cargo xtask local serve --sync-every 1h pulls and builds on that interval while it serves. An app is rebuilt when its
checkout's version isn't in the mirror yet (--rebuild forces it), and the launcher's next check
picks it up. Add --every-commit to build every new commit instead, as a dev version between
releases (0.4.0 builds as 0.4.1-dev.<commit time>), which the launcher offers as an update. While
ARTCRAFT_LAUNCHER_DOWNLOAD_BASE is set (loopback addresses only), the launcher asks only the
mirror, never GitHub. Only builds with the local-mirror feature read it; releases never have it. cargo xtask local help lists the options (--only, --no-pull, --arch, …).
New contributors and AI agents: start with AGENTS.md. Release packaging lives in
packaging/ and .github/workflows/release.yml.
Important
Status: ArtCraft Launcher is new and in early alpha. Expect rough edges, and please file issues (include your OS, which app you were installing and the launcher's log file) or tell us on Discord.
The Craft App Suite
ArtCraft Launcher installs the Craft App Suite: free, open-source creative tools from the ArtCraft 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 | Website | |
| VectorCraft | Vector illustration | GitHub | Website | |
| FilmCraft | Video editing, color and sound | GitHub | Website | |
| LightCraft | Photo library and raw development | GitHub | Website | |
| PdfCraft | Reading, organizing and protecting PDFs | GitHub | Website | |
| EffectCraft | Motion graphics and visual effects | GitHub | Website | |
| DesignCraft | Page layout and publishing | GitHub | Website | |
| GridCraft | Spreadsheets and data | GitHub | Website | |
| WordCraft | Word processing and documents | GitHub | Website | |
| DeckCraft | Presentations and slide decks | GitHub | Website | |
| CADCraft | Computer-aided design | GitHub | Website | |
| SoundCraft | Audio recording and editing | GitHub | Website |
And ArtCraft 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.
discord.gg/artcraft · getartcraft.com · The Craft App Suite · ArtCraft Launcher
Thanks
The community built launchers for the Craft App Suite before we did, and ArtCraft Launcher learned a lot from them. Thank you to their authors:
| Project | Author | What we learned from it |
|---|---|---|
| ArtCraft Suite Updater | @Lyraedan | Noticing apps installed or removed outside the updater with a quiet background re-scan, detecting Arch and AUR installs through pacman, and a platform picker that lists the downloads for every OS |
| craftcenter | @avokadosauce | Finding the latest release without spending API quota (the releases/latest redirect plus SHA256SUMS.txt), and verifying every file |
| CRAFTSPACE | @emircesur | Adopting apps that were already installed, falling back gracefully when GitHub rate-limits, background update notifications |
| GetCraft | @mbirnbach | Picking the right download for each OS and CPU, recognising Windows Installer and macOS installs, a native Rust/egui launcher |
| CraftHub | CraftHubLauncher | Strict checks on where downloads come from, clear rate-limit messages, never replacing an app while it runs |
| artcraft-suite | @erikerikerik | ETag-cached release checks and installs that recover cleanly from interruptions |
| Craft Apps Launcher & Installer | @ZifuM | Release-page fallbacks and starting AppImage apps with a clean environment |
| ArtCraft Launcher | @EricVogt93 | Desktop integration for AppImages and a careful self-update design |
| LandingCraft | @rallegretti | Working with the Windows Installer directly and offering stable releases only |
| Craft Apps Manager | @CryptoKey98 | Scheduled background update checks and per-app launch options |
| ArtCraft Hub Launcher | @tinyplayerss | A friendly, one-window hub for the whole suite |
| CraftHub | @MegaTheLEGEND | Serving the apps' web builds from a self-hosted launcher |
License and credits
ArtCraft Launcher is dual-licensed under MIT or Apache-2.0, at your option. Copyright (c) 2026 ArtCraft Team and the ArtCraft Launcher contributors. Required notices are in NOTICE.
Bundled fonts, icons, images and other assets keep their own open licenses; each one is listed with its author, source and license in ATTRIBUTION.md.
The app icons of the Craft apps (assets/app-icons/) are each app's own icon, copied unmodified
from its repository and licensed like that app (MIT OR Apache-2.0).
The ArtCraft name, logo and "A" mark are not licensed under MIT or Apache-2.0. They (everything
in docs/brand/, plus the app icon in assets/app-icon/, the
logo in the launcher's header and the "A" tray icon)
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 ArtCraft Launcher, under docs/brand/LICENSE-brand.txt.
Forks and modified versions must remove them.
Made by the ArtCraft team and community.
