Skip to content

Releases: perfectgf/lora-dataset-studio

v2026.07.14.3 — Beta

Choose a tag to compare

@perfectgf perfectgf released this 14 Jul 10:21

Two community ideas from the brand-new ideas board, shipped the same day — both suggested by c666d on Civitai. Keep voting 👍, it clearly works.

🔎 Tag-exclusion filter in the grid

Work a captioning checklist instead of re-scanning the whole grid: hide every image that already carries a tag (one click on the ⊘ of any tag-frequency chip, or type any word), stack multiple exclusions, or flip to only-with-tag mode. A loud banner above the grid — 🔎 Filtered view · showing N of M with removable chips — makes sure a filtered view can never pass for missing images. Matching is honest per caption style (exact whole tag on booru captions, whole-word on prose — stated right in the UI), uncaptioned images are never hidden by an exclude, and select-all/batch actions only touch what you see.

🖼️ Resizable grid thumbnails

An S / M / L control in the grid header (remembered across sessions). At L, tiles switch to letterboxed full-composition view — you finally see whether a shot is portrait or landscape before deciding keep/reject, instead of judging a square crop.

v2026.07.14.2 — Beta

Choose a tag to compare

@perfectgf perfectgf released this 14 Jul 09:59

🧬 Train on your own weights

Every training family's base picker (SDXL, Krea 2, FLUX.1, FLUX.2 Klein) now accepts a free local path to a .safetensors — fine-tune a variant of the base model without waiting for it to be listed. SDXL additionally gains optional separate VAE and text-encoder paths (the one architecture where ai-toolkit honors them natively). Z-Image keeps its one-time conversion flow.

Honest guardrails, because a silently-wrong component is worse than an error:

  • fields you can't actually override on a family are rejected, not ignored (FLUX.2 Klein's text encoder is pinned upstream; Z-Image bundles TE+VAE),
  • the launch preflight reads the safetensors header and checks the tensor layout matches the family — an unverifiable file asks "train anyway?" instead of guessing,
  • two different custom combos can never share a run folder,
  • the resolved paths are recorded in the run's provenance and the ⎘ Share config export (home paths redacted),
  • cloud runs refuse custom weights outright (local-only) rather than silently training on the official base.

Suggested by SubtleShader on Discord — from feedback to shipped in a day. Keep them coming.

v2026.07.14.1 — Beta

Choose a tag to compare

@perfectgf perfectgf released this 14 Jul 08:34

🔐 Settings no longer dead-end on a stale session token

Leaving the app open for over an hour could turn every Settings Save/Test into a cryptic ✗ HTTP 400 that only a hard refresh cleared (thanks to polarbear_13 on Discord for the report that pinned it down). Three-layer fix:

  • the security token cookie now refreshes on every API response — including the rejection itself,
  • failed calls transparently retry once with the fresh token,
  • and if something still goes wrong you get a plain-language message instead of HTTP 400.

🧪 Test buttons test what you typed

The ComfyUI / Ollama / ai-toolkit Test buttons now save their own section first — testing a freshly-typed path no longer answers "not configured".

📖 Docs

The README gained a full Auto-clean scraped watermarks section and now covers everything shipped in v2026.07.14 (per-capability installs, ▶ Start Ollama, ⎘ share config, Test Studio preflight…).

v2026.07.14 — Beta

Choose a tag to compare

@perfectgf perfectgf released this 14 Jul 07:53

🧽 Automatic watermark cleanup

Scraped images love to carry site logos, URLs and usernames — and a LoRA happily learns them. New in the Curate step:

  • Find watermarks — a local vision pass flags overlaid marks (scene text like shop signs is explicitly excluded) with the detected box stored per image.
  • Clean — each mark gets the least risky tool: a lossless crop for border marks, non-generative inpainting (LaMa) for fine text elsewhere; anything big or on the subject is left for manual review. Originals are preserved next to the files.
  • 🔍 Review mode — a fullscreen viewer walks every flagged image with the detected box drawn on it: clean it and see the result in place, mark it not a watermark (never re-flagged again), or reject the image — keyboard shortcuts included.
  • ⬇ One-click inpainting install — the LaMa extra installs right from the watermark tools, with live progress, no restart.

🧰 Setup & capabilities

  • The capabilities list now includes Watermark inpainting (no more "all ready" while something is missing), and every ML capability has its own card with Install / ↻ Reinstall (scoped pip actions — no more re-running the whole extras step).
  • Machine-scan rows are clickable — each capability jumps to the step that installs it.
  • Ollama detection no longer requires the server to be running: installed-but-stopped shows as such, with a ▶ Start Ollama button (Settings and Setup).

🛠 Fresh-install fixes

  • Local Klein generation no longer needs any custom node packs — the shipped graph is now 100% ComfyUI core (it silently required two third-party packs; first generation on a fresh install crashed with a raw ComfyUI error). A node preflight also pre-checks the graph and names anything missing with install links. Thanks to thomas00no on Discord for the report.
  • Test Studio (previous fixes rounded out): per-family preflight for missing models/nodes, failed tiles show why, SDXL saves through a standard SaveImage node.

🏋️ Runs & sharing

  • ⎘ Share configuration — every run in the Runs hub exports a paste-safe text file with the full recipe (family, base, all ai-toolkit parameters, outcome) — no local paths, no keys. Perfect for sharing settings or asking for help.

⏳ Quality of life

  • Batch progress survives a page reload — captioning, watermark scans, face analysis and framing classification advertise their live progress server-side; the indicator comes back on its own.
  • Honest Clean toasts (one recap instead of contradictory messages), and the docs/README carry a full "Everything it does, at a glance" overview.

v2026.07.13.2 — Beta

Choose a tag to compare

@perfectgf perfectgf released this 13 Jul 21:56

New training family

  • FLUX.2 Klein — train character, concept and style LoRAs on FLUX.2 Klein: 4B (local, 16–24 GB GPUs) and 9B (cloud) variants, weighted-timestep recipe, and a hard guard that refuses to launch if your ai-toolkit build doesn't ship the flux2_klein archs yet (no silent fallback — a git pull in ai-toolkit fixes it). Both bases are license-gated on Hugging Face (HF token in Settings → Local tools).

Cloud training

  • Continue a finished cloud run from its last checkpoint — new pod, the exact settings of the source run, and the extra steps you ask for.

Dataset workflow

  • 📂 Import from folder — merge an existing dataset from a local path (recursive, same-name .txt captions picked up, duplicates skipped).
  • 💾 Write caption .txt files next to the images on demand (Caption tools), trigger-prefixed like the ZIP export.

Detection & fixes

  • ai-toolkit installs without venv/ are now supported — point the new Python interpreter field (Settings → Local tools) at your conda/uv/system Python. ComfyUI Desktop installs are now recognized too. Thanks to CyberTod on Reddit for both reports.
  • New users are no longer trapped in the Setup wizard — Skip setup now works.
  • Dataset creation no longer fails silently: the Create button stays disabled until required fields are filled, and server errors show up as a toast.
  • The diagnostic report (Guide → Getting help) now redacts local user paths from the log tail — safe to paste in a GitHub issue.

v2026.07.13.1 — easier install, presets & a Library homepage

Choose a tag to compare

@perfectgf perfectgf released this 13 Jul 17:48

A big batch of quality-of-life upgrades since v2026.07.13.

Highlights

  • One-click install — no Python needed. start.bat now downloads a self-contained CPython automatically when your machine has none. Unzip → double-click, nothing to install by hand.
  • 📊 Live download progress. The Setup wizard shows a real progress bar with a running percentage while it pulls the models.
  • 🖼️ New Library homepage. All your datasets as searchable photo tiles, with creation folded away until you need it.
  • 🎛️ Training presets. Save your settings once, then apply / import / export them — plus built-in Concept, Style and Krea character starting presets.
  • 🗂️ Unified Runs hub + checkpoint management. Cloud and local runs in one place, a ↻ Retry on failed runs, every trained epoch harvested (not just the last), and an app-wide trash to clean up checkpoints.
  • 📱 Open on your phone. Scan a QR to reach the app over your LAN or Tailscale.
  • Train anyway. Uncaptioned images no longer block a run.
  • 📖 In-app Guide (5 chapters) + one-click diagnostic report for painless bug-reporting.

Also in this release

  • Custom ComfyUI output directory now works — finished images are fetched over the ComfyUI API, not a fixed disk path.
  • Face scorer explains why it failed and self-heals the nested antelopev2 trap.
  • Scraper: sex.com source, your own Reddit client ID + Civitai API key in Settings, category scans return covers only.
  • Cloud: a sold-out GPU class falls back to a similar tier (never the cheapest potato); deployed checkpoints get testable names.
  • Settings: sectioned shell with sidebar search + live status LEDs.

Thanks to the community for the bug reports and suggestions that drove several of these — keep them coming in the Discord.

v2026.07.13 — Beta

Choose a tag to compare

@perfectgf perfectgf released this 13 Jul 07:02

Everything that landed since v2026.07.12: first-run fixes from your bug reports, a new FLUX.1 training family, expert training controls, and a big cloud-training maturation pass.

✨ Headline

⚡ FLUX.1 training family (local, early)

Train character LoRAs on FLUX.1-dev alongside Z-Image / SDXL / Krea 2. Prose captions, best-practice defaults from ai-toolkit's own reference (flowmatch, rank/alpha 16, guidance 4 / 20-step previews); the trained LoRA deploys straight into loras/flux. FLUX.1-dev is a gated 12B model, so ~24 GB VRAM is the comfort zone (drop to 768 to fit smaller cards). Local training first; cloud + in-app Test Studio for Flux follow.

🔬 Expert "last-mile" training levers

For the last 10% on small datasets: decoupled alpha, network dropout, timestep weighting, optimizer (adamw8bit / adafactor / automagic / prodigy), LR schedule + warmup, and effective batch (gradient accumulation) — each with a plain-English why/how, all defaulting to the current behaviour so nothing changes unless you touch them.

☁️ Cloud training, matured

  • Concurrent runs with a configurable cap, a monthly budget guardrail and a worst-case cost confirm.
  • Host quality layer — stop renting the flakiest cheap hosts: reliability floor, disk-bandwidth filter, bait-price exclusion, and a short blacklist for machines that die mid-run.
  • Resume-capable checkpoint downloads (HTTP Range retry) with size verification, and the newest checkpoint is mirrored locally during the run.
  • A dedicated Cloud runs hub page (watch / stop / download every run in one place) + honest per-tier GPU prices with a cap warning.

🔄 Automatic update detection

The app now checks for new releases and surfaces an update available banner + a Check for updates button next to Settings, with one-click update & restart.

🐛 First-run fixes (thanks for the bug reports, @GroxicTinch 🙏)

  • Dataset generation now runs on a stock ComfyUI — the image workflow used a custom easy int node a fresh ComfyUI doesn't have, so the prompt was rejected and no image was produced (which also looked like "generated images aren't saved to the dataset folder"). Now uses the native PrimitiveInt. (#1, #2)
  • "Train" no longer fails silently — if the ai-toolkit run crashed on start, the panel went quiet after the green "Training started" toast. It now shows an error banner with the exit code, the log tail, and the common first-run causes (venv packages, or the gated base model still downloading / needing a HF token). (#3)

🎛️ Also

  • Test Studio strength choices now extend down to 0 (a proper LoRA-off control column).
  • Guide: per-model steps & convergence guidance — where "good results" start for each family.

Full changelog: v2026.07.12...v2026.07.13

v2026.07.12 — Beta

Choose a tag to compare

@perfectgf perfectgf released this 12 Jul 19:07

Big release since 2026.07.11 — cloud training, a ChatGPT subscription lane, in-app updates, a new style dataset type, and a lot of polish.

✨ Headline features

☁️ Cloud GPU training (vast.ai)

Train without a local GPU. Add a vast.ai API key in Settings and hit Train in cloud: the app rents a GPU, uploads the dataset, runs the job, streams progress + live cost, downloads the checkpoints back, and terminates the instance when it's done (typical run ~$1–2). Includes a hard max-runtime kill-switch, boot-time orphan reconciliation (a crashed app never leaves a pod billing), and stop-anytime.

🔑 Run ChatGPT on your subscription (no API bill)

The ChatGPT (gpt-image-2) engine can now run on your ChatGPT Plus/Pro image quota via a Codex OAuth device-code login — connect from any device, or import an existing Codex CLI session. The engine card shows the active lane (subscription vs API); on the subscription lane it spends plan quota instead of per-image dollars. The lane is pinned per batch and never silently falls back to your paid key — when the quota runs out mid-batch, the remaining rows fail with a clear message.

🔄 In-app updates

A new Updates card at the top of Settings shows your current build and the latest release, with one-click update & restart (git checkouts pull; packaged builds link to the release).

🎨 Style dataset type

A third dataset kind alongside Character and Concept: it trains a global aesthetic — content-only captions, no trigger word, higher caption dropout, and a sublinear √n adaptive step count tuned for the large sets style LoRAs want. Captions optional.

🛠 Improvements

  • Edit-the-prompt regenerate — a ✏️ button on generated tiles opens the exact prompt that made the shot; edit it and regenerate (identity-guarded).
  • Delete a saved API key — a Remove button clears a stored key (Gemini / OpenAI / Hugging Face / vast.ai).
  • Scraper — plain-language explanation of the two Reddit search fields + subreddit-only browsing; dead thumbnails auto-hidden; edit the trigger word / concept description after creation.
  • Concept datasets — caption inversion (the omission ban-list) now actually works; identity-leak and composition-balance checks are skipped where they don't apply.
  • Vision — defaults to the -instruct vision tag (not the "thinking" variant) for captioning/framing.
  • Configurable preview-sample prompts during training (kind-aware).
  • Security — access-token guard when binding beyond localhost.
  • Docs — README reworked feature-by-feature with real screenshots + a legal / responsible-use section; Discord badge.

🐛 Fixes

  • The Dataset images panel no longer collapses when a captioning pass finishes.
  • The "⋯ More" menu no longer renders behind the "Go to training" button.
  • Corrected washed-out panels (opacity applied to alpha-baked color tokens).
  • Launcher — start.bat calls the venv Python directly and rebuilds a stale venv; run.py re-execs into the project venv when started on another Python (3.13 / 3.14).

Full changelog: v2026.07.11...v2026.07.12