mirror of
https://github.com/storytold/artcraft.git
synced 2026-10-13 14:59:05 +00:00
## What
A new workspace member, `artcraft-native/`. It is the ArtCraft desktop
app in pure Rust: an egui UI with no Tauri, no webview and no
JavaScript. It covers the two main product pages, **Create Image** and
**Create Video**, and reuses the Tauri-free API crates
(`artcraft_client`, `artcraft_api_defs`, `tokens`, `enums`).
It also adds:
- a Home page and a Library page
- a lightbox
- sign-in and settings dialogs
- a sidebar and top bar in the style of the brutalist
**artcraft-webapp**
Tools that aren't ported yet show a "coming soon" page that links to the
web app.
```bash
cargo run -p artcraft_native --release
```
## Why
To get a native, webview-free desktop app. Generation goes through
**OmniGen** (`/v1/omni_gen/{models,cost,generate}`), the same API as the
webapp. Model capabilities come from the server, so the pickers stay
current without app updates.
## Prompt box
Recreated feature for feature from `PromptBoxImage` / `PromptBoxVideo`:
- **Editor:** auto-grow, focus mode, resize grip, length counter with
the model's limit, Enter-to-generate setting, and `@Image1` / `@Video1`
/ `@Audio1` mentions with highlighting and autocomplete.
- **References:** the fanned reference deck (hover-expand, reorder, add
menus with limits) and the first/last keyframe slots with swap. Files
can be uploaded, picked from the library, dragged and dropped, or pasted
as images.
- **Model selector:** families with a flyout, maker logos and capability
badges.
- **Pickers:** aspect ratio, resolution, quality, count, bitrate, output
format, duration slider, sound and input mode (Keyframe / Omni
Reference).
- **Generate:** a live credit cost estimate, validation (starting frame,
text-only models, limits, uploads in progress), and clear-all with
confirmation.
The feed shows running jobs (with progress and time left), failures
(dismissable), finished results and the paginated library, in a masonry
grid or a list. It supports Recreate, Make Video, Share and Download,
plus select mode for batch downloads.
## Reviewer notes
- **Sign-in.** On first launch the app reuses an existing desktop login
by reading the session cookie from the Tauri app's jar, and keeps its
own copy in `~/Artcraft/credentials/native_session.json`. Browser
(device-code) and password sign-in are also available.
- **Decoding.**
- Generate and cost requests are sent as JSON maps, like the Tauri app's
omni path.
- Jobs, library, batch and prompt responses use lenient structs
(`backend/wire.rs`), so new server enum values can't break decoding.
- **Renderer.** It uses eframe's **glow** renderer. `wgpu-hal` fails to
build against the `windows` crate versions this workspace pins for
Tauri.
- **Model names and logos.** Known families use curated names: "Flux 1
Dev" rather than the server's "FLUX.1 [dev]". When the server reports
`artcraft` as a model's maker, the logo comes from the id prefix instead
(Nano Banana → Google), matching the webapp.
- **Fonts and assets.** Inter, Archivo and Geist Mono are bundled under
the OFL and listed in `NOTICE`. The wordmark, icon and maker logos are
the existing in-repo assets.
- **Diagnostics.** `ARTCRAFT_SCREENSHOT=<png>` (optionally with
`ARTCRAFT_PAGE` and `ARTCRAFT_SCREENSHOT_EXIT=1`) saves a screenshot
once the window has settled.
## Testing
- `cargo test -p artcraft_native`: 29 tests pass. Unit tests cover the
catalog, feed store, wire decoding and backend helpers. Headless
`egui_kittest` tests drive the prompt box: generate gating,
Enter-to-generate, pickers, `@` mentions and clear-all.
- `cargo clippy -p artcraft_native --all-targets --no-deps` is clean.
- Run against a real account: the session import, model lists, cost
estimates, job polling, library paging and thumbnails all worked.
- **Not exercised: a real paid generation and real uploads.** I held
back to avoid spending credits, so they need a manual check.
## Not done yet
- `@Character` mentions for Seedance 2.0
- Provider choice (Midjourney direct, fal); everything runs through
ArtCraft
- In-app video and audio playback; these open in the system player
- Animated previews in the feed
- The remaining tools (Audio, 3D, editors)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
52 lines
2.9 KiB
Plaintext
52 lines
2.9 KiB
Plaintext
ArtCraft
|
|
Copyright (c) 2026 ArtCraft Team and the ArtCraft 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 are trademarks of the ArtCraft Team. They are not covered
|
|
by the license above.
|
|
|
|
Third-party material
|
|
|
|
This product bundles third-party material under its own licenses, listed below.
|
|
|
|
ammo.js (frontend/apps/artcraft/app/public/jsm/libs/ammo.wasm.*) — zlib License. A port of the
|
|
Bullet Physics engine. https://github.com/kripken/ammo.js
|
|
tauri-plugin-http (crates/vendor/tauri-plugin-http/) — MIT or Apache-2.0. Copyright (c) 2017 -
|
|
Present Tauri Apps Contributors; Copyright 2019-2023 Tauri Programme within The Commons
|
|
Conservancy. Modified fork; see that directory's LICENSE_MIT and LICENSE_APACHE-2.0.
|
|
normalize.css v8.0.1 (frontend/apps/artcraft/app/src/styles/normalize.css) — MIT License.
|
|
Copyright (c) Nicolas Gallagher and Jonathan Neal. https://github.com/necolas/normalize.css
|
|
three-dots v0.3.2 (portion of frontend/apps/artcraft/app/src/styles/base.css) — MIT License.
|
|
Copyright (c) 2018 nzbin. https://nzbin.github.io/three-dots/
|
|
Font Awesome Free icons (frontend/libs/icons/src/lib/brand-icons.tsx,
|
|
frontend/apps/artcraft/app/public/resources/images/services/generic.svg) — CC BY 4.0.
|
|
Copyright Fonticons, Inc. https://fontawesome.com/license/free
|
|
Carter One font (frontend/apps/artcraft/app/public/resources/fonts/CarterOneRegular.json) —
|
|
SIL Open Font License 1.1. https://fonts.google.com/specimen/Carter+One
|
|
Inter, Archivo and Geist Mono fonts (artcraft-native/assets/fonts/) — SIL Open Font License 1.1;
|
|
each font's license is next to it. https://rsms.me/inter/ ·
|
|
https://fonts.google.com/specimen/Archivo · https://vercel.com/font
|
|
|
|
Third-party trademarks
|
|
|
|
The AI provider and service logos in frontend/apps/artcraft/app/public/resources/images/services/
|
|
are trademarks of their respective owners. They are used only to identify those services and are
|
|
not covered by the license above.
|
|
|
|
Material not covered by the license above
|
|
|
|
The following files are owned by third parties. They are not licensed under MIT or Apache-2.0,
|
|
and no rights to them are granted by this repository. They remain the property of their
|
|
respective owners. These assets will be phased out of ArtCraft over time.
|
|
|
|
frontend/apps/artcraft/app/public/resources/sound/ — sound effects from Nintendo games (Golden
|
|
Sun, Metroid Prime, The Legend of Zelda: Ocarina of Time, Super Mario RPG).
|
|
frontend/apps/artcraft/app/public/resources/memes/ — meme images and likenesses owned by their
|
|
respective rights holders.
|
|
frontend/apps/artcraft/app/public/resources/skybox/gray/ and skybox/night/ — skybox textures
|
|
from a third-party asset pack.
|
|
frontend/apps/artcraft/app/public/resources/pose/Lumine Idle cycle.vmd — third-party MMD motion
|
|
data.
|
|
frontend/apps/artcraft/app/public/resources/characters_gif/ — renders of Mixamo animations.
|