26 Commits
Author SHA1 Message Date
BFlat d4e4ac69bb artcraft-native: generate with Midjourney or fal (provider choice) (#2115)
Images can run on Midjourney (own account, via a sign-in window) or fal (own API key), chosen from the model selector's Select Provider submenu. Jobs finish into the library. The Midjourney credential manager and the router prompt helper move into shared crates used by both desktop apps.
2026-10-11 20:47:59 +07:00
BFlat 28a39a0de4 artcraft-native: Create Audio, in-app playback, animated previews and @Characters (#2079)
Create Audio (PromptBoxAudio) with waveform playback, in-app video playback, animated feed previews, and @Character mentions with the Characters dialog.
2026-10-11 02:03:53 +07:00
BFlatandClaude Opus 5.5 bb27304b8b artcraft-native: custom title bar and Claude-style layout (#2068)
## What

The native app now draws its own window chrome, laid out like the Claude
desktop app.

- **Custom title bar** (40 px) replaces the native frame:
  - Left: the ArtCraft mark (goes Home) and the sidebar toggle.
- Right: credits, the account menu or Sign in, then minimize,
maximize/restore and close.
  - Dragging the empty space moves the window; a double-click maximizes.
  - On macOS the traffic lights stay, with room left for them.
- **Sidebar** is flush with the window's left edge, on the darker
chrome, with no floating card.
- **Content panel** is inset 8 px from the window edges, with rounded
corners and a hairline border. Its header holds the breadcrumbs and the
select and grid/list toggles.
- **Borderless window**: the edges and corners resize it, and a hairline
outlines it (hidden when maximized).

## Notes

- The window chrome helpers (`ui/window.rs`) are ported from the
ArtCraft Launcher, which uses the same egui 0.36.
- The mark is the in-repo `services/artcraft.svg`, tinted brand blue.
The old wordmark loader is removed.
- Toasts are moved down to sit below the new header.

## Testing

- `cargo test -p artcraft_native`: 29 tests pass.
- `cargo clippy -p artcraft_native --all-targets --no-deps` is clean.
- Screenshot-verified against a live account.
- Not tested by hand: dragging, resizing and the caption buttons.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 00:54:50 +07:00
BFlatandClaude Opus 5.5 b5614ad333 Add artcraft-native: pure Rust (egui) desktop app, starting with Create Image and Create Video (#2067)
## 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>
2026-10-11 00:44:59 +07:00
Brandon ThomasandClaude Opus 5.5 8abde75133 Relicense ArtCraft under MIT OR Apache-2.0 (#2043)
## Summary
- Removes the WIP fair-source `LICENSE.md` and adds `LICENSE-MIT` and
`LICENSE-APACHE`, matching PhotoCraft, LightCraft, and the other craft
apps.
- Adds `NOTICE`, which lists bundled third-party material (ammo.js, the
vendored tauri-plugin-http, normalize.css, three-dots, Font Awesome
icons, the Carter One font) and says that provider logos are trademarks
of their owners.
- Updates the README's License section, and sets `license` in
`crates/desktop/artcraft/Cargo.toml` and `frontend/package.json` to `MIT
OR Apache-2.0`.

## Follow-up needed
`NOTICE` excludes assets that ArtCraft doesn't own: Nintendo sound
effects in `resources/sound/`, meme images, the AllSky-style gray/night
skyboxes, the Lumine VMD, and the Mixamo animation GIFs. The exclusion
only says these files aren't MIT/Apache. They still need to be replaced
or removed in a separate PR. Nobody has confirmed where the avatars,
default covers, `characters/img*.png`, and the day skybox came from.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 04:14:38 -04:00
Brandon Thomas 910bfe4e84 artcraft 0.42.0 (#2026) 2026-10-09 13:03:51 -04:00
Brandon Thomas 7aebfc1c59 fix error messages so they're user friendly (#2025) 2026-10-09 13:01:10 -04:00
3e5793b693 PageScene: dispose GPU assets on desktop (#1972)
Targets PageScene and other 3D viewers, handles uniforms and textures,
amongst other general editor mount improvements

---------

Co-authored-by: heojunfo <kleague3@gmail.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-06 17:56:14 -07:00
BFlat 3210977fb1 Use the new ArtCraft icon for the app icon and favicons (#1965)
- Regenerate the desktop app icons (Windows, macOS, Store, Android, iOS)
from the new angular ArtCraft mark in the website logo blue
- Replace favicon.ico, the 16/32 favicons, and the apple-touch icon
- Add the SVG icon as the primary favicon, same as the webapp
2026-09-28 13:16:34 +07:00
BFlat 90c7a8a118 Match desktop app styling to the webapp (#1963) 2026-09-28 12:29:54 +07:00
Brandon Thomas 1b27c31531 thumbnail speedup (and fix for non-rendering thumbnails) (#1964) 2026-09-28 01:28:45 -04:00
Brandon Thomas 93b664d871 client identity (origin, user agent) (#1962) 2026-09-27 23:41:15 -04:00
Brandon Thomas 92e6f438c3 better dev script (#1961) 2026-09-27 14:48:34 -04:00
Brandon Thomas df707bf8e1 performance changes (#1959) 2026-09-26 17:50:36 -07:00
Brandon Thomas 780e4494e9 fix login video on desktop (#1958) 2026-09-26 17:08:31 -07:00
Brandon Thomas c3844acdad ArtCraft 0.41 (#1957)
- website-based login
artcraft-v0.41.0
2026-09-26 03:43:28 -07:00
Brandon Thomas 8456e2fd06 website based login challenges (#1956) 2026-09-26 03:42:09 -07:00
Brandon Thomas 95f8f659a5 ArtCraft 0.40.0 (#1955) 2026-09-18 16:26:35 -04:00
Brandon Thomas 3c5038c159 Added new models and modes: GPT Image 2.5, Wan, Output Formats (#1954) 2026-09-18 16:23:44 -04:00
Brandon Thomas 584fdb7044 backport midjourney fixes from ArtCraft-X (#1953) 2026-09-14 12:45:24 -04:00
Brandon Thomas 5c7807add6 readme update (#1952) 2026-09-11 18:47:17 -04:00
Brandon Thomas 906447fab2 artcraft 0.39: fix for CI builds (no-OP build) (#1950) 2026-09-11 15:47:13 -04:00
Brandon Thomas 6cc5ce7a67 Fix CI builds. We were relying on build caches. (#1949) 2026-09-11 15:46:14 -04:00
Brandon Thomas 9a9b406fdf bump artcraft to 0.38 to test repo reset (#1948)
The entire repo was purged of ancillary code (backend, frontend, models,
tools, etc.) and subsequently reset.

This is a no-op version that guarantees builds can continue on the new
repo state.
2026-09-11 14:48:01 -04:00
Brandon Thomas 28e5d71102 remove stale docs and files (#1947) 2026-09-11 14:43:33 -04:00
Brandon Thomas 0004726a36 ArtCraft Desktop (fresh start)
This is a fresh start for the `artcraft` repo.

The old monorepo, which included our web API gateway, job services, SRE
tools, various frontends, and more has moved to `artcraft-services`

You can find the full git history here:

https://github.com/storytold/artcraft-services

This change was motivated by the fact that the entire git history was
hundreds of gigabytes in size, which is unwieldy for anyone not in the
core team that doesn't care about support services outside of the core
artcraft app.

We wanted to keep this repo in its well-known place since we already
have users and activity here.

Please update your remotes to either `artcraft-services` or make a fresh
clone of this repo.

History can be found at the artcraft-services repo.
2026-09-11 14:19:51 -04:00