Skip to content

Releases

Saya Studio 1.1.0 × Saya Couple 2.3.1

Choose a tag to compare

@github-actions github-actions released this 07 Nov 18:50
eab790a

Saya Studio 1.1.0 × Saya Couple 2.3.1

Saya Studio is a local desktop app that drives ComfyUI for anime-style character images. ComfyUI renders,
Saya Studio organizes: casting, a six-pass workflow, gallery, character sheets, LoRA manager, graph editor.
Nothing runs in the cloud.

1.1.0 adds duo casting, gives invented characters names that suit them and delivers one clearly named file
per render.
Updating keeps your database, images, characters and settings.

What's new in 1.1.0

Casting

  • Duo trials (experimental): when your draw engine provides pair types, Casting offers a Solo / Duo choice.
    A duo shows two validated characters on one image, at pass 1, and has no character sheet of its own.
  • Names that suit the character: a character invented by a batch is renamed at launch, in a style that
    follows her family and P1 tags. A name already taken is never reused; existing characters keep theirs.
  • Saving a sheet: the name field starts from the trial's name and stays editable. A saved sheet's name then
    wins in the history, the gallery and the file names of the images still to come.

Files and gallery

  • Delivered images are named <local date>_<character>_<pose>.png (finished) and …_p<N>.png (earlier passes).
  • One image per render: the review gate's copy is no longer downloaded when the pass saved its own, and
    ComfyUI's copy in the run folder is removed once delivered and hash-checked.
  • Dates use your local day, not UTC.

Security

This release follows a full security audit of the app and the nodes. Nothing was known to be exploited.

  • A crafted PNG can no longer write an image outside your output folder, nor use gigabytes of memory.
  • A crafted workflow can no longer crash the app, and an unreadable one is refused instead of reported complete.
  • The Civitai bridge sends your token to Civitai only, refuses non-Civitai and local addresses, checks every id,
    and never downloads another file than the one requested. An empty token file no longer opens it.
  • Saya Couple 2.3.1: its HTTP routes refuse DNS rebinding and malformed bodies, and a status request creates no folder.
    A machine reached by its own name on a LAN lists that name in SAYA_ALLOWED_HOSTS.
  • A duo stops at pass 1 everywhere: the app no longer offers the six passes on a duo trial.

What was new in 1.0.1

Fast on real libraries

Measured on a real library (432 casting runs, 3.8 GB database):

Opening 1.0.0 1.0.1
Casting, Create, deleting a batch (run listing) 1.5 s every time 5 ms
Gallery 1.8 s 22 ms
Characters 845 ms 79 ms
Coming back to a page already visited full reload ~50 ms, state kept

The background runner no longer re-reads every run manifest twice every 2.5 seconds while holding the run
lock, which stalled batch deletion and every casting action. Gallery, Casting, Characters and Models stay open
in memory: filters, scroll position, the open image and selections are still there when you come back.

Casting

  • Six passes after the casting. Full, keeping an image in the gallery or saving a character queues its six
    passes; they start one at a time once every pass-1 trial of the casting is done (an SDXL pass 1 and a HiDream
    pass 3 no longer share the GPU).
  • Missing images. In « Cibler des personnages », characters without a picture take their turn: pass 1 in a
    random pose, then Yes (six passes, image kept as their picture) or No (another pose).
  • Pending actions. Brouillons lists the bank actions your engine does not draw yet, with the reason. Test
    them in the isolated engine copy, then decide per action: Validate writes it through the engine's own
    command (with its backup), Refuse writes nothing.
  • A failed or stopped trial no longer freezes the rest of its batch; picker tiles show names and images again;
    rotation images picture their character.

Gallery and menus

  • Casting images show the character's name instead of a job id.
  • Right-click menus on gallery images, casting batches and trials, and models (open, six passes, favourite,
    compare, copy path, delete a batch…). The browser's Back/Reload menu no longer appears in the app.
  • Send to the full workflow opens an image in Create with the workflow saved inside it.

Workflows

  • Node check: the app lists the nodes a workflow needs and those missing from your ComfyUI. Ordinary
    workflows using a Primitive node, a Note or rgthree helpers were wrongly refused; they now open. Scripts can
    use studio-maintenance check-workflow FILE_OR_FOLDER object_info.json (exit 0 complete, 2 missing).
  • Developer mode (Settings): an action console, a preference editor, data folders and the node check.

Updates

  • The app checks for a new release at startup and offers to install it: it downloads the package for your
    system, verifies it against SHA256SUMS, then asks your system for permission to install it. You can turn
    the check off in Settings.
  • install.sh detects your system and has an update mode: sh install.sh --update.

Linux installer: Couple nodes, Studio app, or both

Download install.sh
from this release, then run it in a terminal:

sh install.sh

Choose 1: Couple nodes, 2: Studio app, or 3: both. The installer downloads the public Couple
bundle, verifies its pinned SHA-256, and opens the existing installer. It detects the Linux app package,
checks its release checksum, and asks before installation. To choose both and specify ComfyUI explicitly:

sh install.sh --what both --comfyui /path/to/ComfyUI

For the nodes as a separate download, use
saya-couple-2.3.1.tar.gz:
extract it and run ./saya install.

Install

System File Command
Debian, Ubuntu saya-studio_1.0.1_amd64.deb sudo apt install ./saya-studio_1.0.1_amd64.deb
Fedora saya-studio-1.0.1.fedora.x86_64.rpm sudo dnf install ./saya-studio-1.0.1.fedora.x86_64.rpm
openSUSE saya-studio-1.0.1.opensuse.x86_64.rpm sudo zypper install ./saya-studio-1.0.1.opensuse.x86_64.rpm
Arch, EndeavourOS saya-studio-1.0.1-x86_64.pkg.tar.zst sudo pacman -U ./saya-studio-1.0.1-x86_64.pkg.tar.zst
Any Linux distribution saya-studio_1.0.1_amd64.AppImage chmod +x it, then run it
Flatpak saya-studio-1.0.1-x86_64.flatpak flatpak install --user ./saya-studio-1.0.1-x86_64.flatpak
Nix flake in studio/ nix run github:alphaziod/saya-studio-x-couple?dir=studio
Windows 10/11 x64 saya-studio-1.0.1-windows-x64.exe run the installer (WebView2 is handled)
Mac, Apple Silicon saya-studio-1.0.1-macos-arm64.dmg open it, drag Saya Studio into Applications
Mac, Intel saya-studio-1.0.1-macos-x64.dmg open it, drag Saya Studio into Applications

Check your download: sha256sum -c SHA256SUMS --ignore-missing.

Windows builds are unsigned; Mac builds use ad-hoc signing and are not Apple-notarized, so the OS may block
the first launch. Updating keeps your database, images, characters and settings.

Requirements

  • A running ComfyUI (default ~/AI/ComfyUI, on 127.0.0.1:8188) with the Saya Couple nodes 2.3.0 or newer
    from this repository, plus the models your workflow uses.
  • Python 3. Optional: ffmpeg for LoRA video previews.
  • Linux: WebKitGTK 4.1 (Debian 12+, Ubuntu 22.04+, Fedora 39+, openSUSE Tumbleweed / Leap 15.6, Arch, NixOS).

Validation

  • Local: 503 Rust tests passed (34 explicitly ignored), 109 frontend tests passed, Svelte check with no errors or
    warnings, interface translations complete in 14 languages; installer tests (bundle, update mode, 7 distribution
    detections) pass without network.
  • Speed measured on a copy of a real library (432 runs, 763 MB of run manifests, 3.8 GB database); the table
    above gives those numbers.
  • Workflows: 30 synthetic workflows and 30 invented node classes give the exact expected report; the bundled
    presets are complete against a real ComfyUI 0.34.0 node list.
  • Native app checks (real window, simulated ComfyUI): casting pickers, « Images manquantes » (Yes, No, Skip),
    gallery names and right-click menu, developer mode and node check, page switching (~50 ms, no reload).
  • Not verified end to end: installing an update through pkexec and install.sh --update against this
    release (both are covered by tests with recorded release data), and a resume after actually killing ComfyUI.

Known limitations

  • Casting needs a draw engine, which is not distributed; without one, Casting says so and stays unavailable.
  • Flatpak runs sandboxed: ComfyUI on 127.0.0.1 and your home folder are allowed, but the browser
    extension bridge may not work there.
  • The bundled preset ships with neutral example prompts and empty LoRA stacks: fill in your own. Its model
    settings are mine; keep the ones that work on your machine.

Also in this repository

The Saya Couple 2.3.1 node pack only hardens its HTTP routes (see above). See
CHANGELOG.md.

Documentation

README ·
Packaging ·
For AI agents and contributors

License: GPL-3.0-or-later.

Saya Studio 1.0.1 × Saya Couple 2.3.0

Choose a tag to compare

@github-actions github-actions released this 05 Nov 10:16
53491ca

Saya Studio 1.0.1 × Saya Couple 2.3.0

Saya Studio is a local desktop app that drives ComfyUI for anime-style character images. ComfyUI renders,
Saya Studio organizes: casting, a six-pass workflow, gallery, character sheets, LoRA manager, graph editor.
Nothing runs in the cloud.

1.0.1 makes the app fast on large libraries, finishes the casting workflow and checks every workflow's
nodes.
Updating keeps your database, images, characters and settings.

What's new in 1.0.1

Fast on real libraries

Measured on a real library (432 casting runs, 3.8 GB database):

Opening 1.0.0 1.0.1
Casting, Create, deleting a batch (run listing) 1.5 s every time 5 ms
Gallery 1.8 s 22 ms
Characters 845 ms 79 ms
Coming back to a page already visited full reload ~50 ms, state kept

The background runner no longer re-reads every run manifest twice every 2.5 seconds while holding the run
lock, which stalled batch deletion and every casting action. Gallery, Casting, Characters and Models stay open
in memory: filters, scroll position, the open image and selections are still there when you come back.

Casting

  • Six passes after the casting. Full, keeping an image in the gallery or saving a character queues its six
    passes; they start one at a time once every pass-1 trial of the casting is done (an SDXL pass 1 and a HiDream
    pass 3 no longer share the GPU).
  • Missing images. In « Cibler des personnages », characters without a picture take their turn: pass 1 in a
    random pose, then Yes (six passes, image kept as their picture) or No (another pose).
  • Pending actions. Brouillons lists the bank actions your engine does not draw yet, with the reason. Test
    them in the isolated engine copy, then decide per action: Validate writes it through the engine's own
    command (with its backup), Refuse writes nothing.
  • A failed or stopped trial no longer freezes the rest of its batch; picker tiles show names and images again;
    rotation images picture their character.

Gallery and menus

  • Casting images show the character's name instead of a job id.
  • Right-click menus on gallery images, casting batches and trials, and models (open, six passes, favourite,
    compare, copy path, delete a batch…). The browser's Back/Reload menu no longer appears in the app.
  • Send to the full workflow opens an image in Create with the workflow saved inside it.

Workflows

  • Node check: the app lists the nodes a workflow needs and those missing from your ComfyUI. Ordinary
    workflows using a Primitive node, a Note or rgthree helpers were wrongly refused; they now open. Scripts can
    use studio-maintenance check-workflow FILE_OR_FOLDER object_info.json (exit 0 complete, 2 missing).
  • Developer mode (Settings): an action console, a preference editor, data folders and the node check.

Updates

  • The app checks for a new release at startup and offers to install it: it downloads the package for your
    system, verifies it against SHA256SUMS, then asks your system for permission to install it. You can turn
    the check off in Settings.
  • install.sh detects your system and has an update mode: sh install.sh --update.

Linux installer: Couple nodes, Studio app, or both

Download install.sh
from this release, then run it in a terminal:

sh install.sh

Choose 1: Couple nodes, 2: Studio app, or 3: both. The installer downloads the public Couple
bundle, verifies its pinned SHA-256, and opens the existing installer. It detects the Linux app package,
checks its release checksum, and asks before installation. To choose both and specify ComfyUI explicitly:

sh install.sh --what both --comfyui /path/to/ComfyUI

For the nodes as a separate download, use
saya-couple-2.3.0.tar.gz:
extract it and run ./saya install.

Install

System File Command
Debian, Ubuntu saya-studio_1.0.1_amd64.deb sudo apt install ./saya-studio_1.0.1_amd64.deb
Fedora saya-studio-1.0.1.fedora.x86_64.rpm sudo dnf install ./saya-studio-1.0.1.fedora.x86_64.rpm
openSUSE saya-studio-1.0.1.opensuse.x86_64.rpm sudo zypper install ./saya-studio-1.0.1.opensuse.x86_64.rpm
Arch, EndeavourOS saya-studio-1.0.1-x86_64.pkg.tar.zst sudo pacman -U ./saya-studio-1.0.1-x86_64.pkg.tar.zst
Any Linux distribution saya-studio_1.0.1_amd64.AppImage chmod +x it, then run it
Flatpak saya-studio-1.0.1-x86_64.flatpak flatpak install --user ./saya-studio-1.0.1-x86_64.flatpak
Nix flake in studio/ nix run github:alphaziod/saya-studio-x-couple?dir=studio
Windows 10/11 x64 saya-studio-1.0.1-windows-x64.exe run the installer (WebView2 is handled)
Mac, Apple Silicon saya-studio-1.0.1-macos-arm64.dmg open it, drag Saya Studio into Applications
Mac, Intel saya-studio-1.0.1-macos-x64.dmg open it, drag Saya Studio into Applications

Check your download: sha256sum -c SHA256SUMS --ignore-missing.

Windows builds are unsigned; Mac builds use ad-hoc signing and are not Apple-notarized, so the OS may block
the first launch. Updating keeps your database, images, characters and settings.

Requirements

  • A running ComfyUI (default ~/AI/ComfyUI, on 127.0.0.1:8188) with the Saya Couple nodes 2.3.0 or newer
    from this repository, plus the models your workflow uses.
  • Python 3. Optional: ffmpeg for LoRA video previews.
  • Linux: WebKitGTK 4.1 (Debian 12+, Ubuntu 22.04+, Fedora 39+, openSUSE Tumbleweed / Leap 15.6, Arch, NixOS).

Validation

  • Local: 503 Rust tests passed (34 explicitly ignored), 109 frontend tests passed, Svelte check with no errors or
    warnings, interface translations complete in 14 languages; installer tests (bundle, update mode, 7 distribution
    detections) pass without network.
  • Speed measured on a copy of a real library (432 runs, 763 MB of run manifests, 3.8 GB database); the table
    above gives those numbers.
  • Workflows: 30 synthetic workflows and 30 invented node classes give the exact expected report; the bundled
    presets are complete against a real ComfyUI 0.34.0 node list.
  • Native app checks (real window, simulated ComfyUI): casting pickers, « Images manquantes » (Yes, No, Skip),
    gallery names and right-click menu, developer mode and node check, page switching (~50 ms, no reload).
  • Not verified end to end: installing an update through pkexec and install.sh --update against this
    release (both are covered by tests with recorded release data), and a resume after actually killing ComfyUI.

Known limitations

  • Casting needs a draw engine, which is not distributed; without one, Casting says so and stays unavailable.
  • Flatpak runs sandboxed: ComfyUI on 127.0.0.1 and your home folder are allowed, but the browser
    extension bridge may not work there.
  • Snap is built by CI when the Snapcraft store is reachable; it is attached only if that build succeeds.
  • The bundled preset ships with neutral example prompts and empty LoRA stacks: fill in your own. Its model
    settings are mine; keep the ones that work on your machine.

Also in this repository

The Saya Couple 2.3.0 node pack is unchanged. See
CHANGELOG.md.

Documentation

README ·
Packaging ·
For AI agents and contributors

License: GPL-3.0-or-later.

Saya Studio 1.0.0 × Saya Couple 2.3.0

Choose a tag to compare

@alphaziod alphaziod released this 04 Nov 16:54
f102920

Saya Studio 1.0.0 × Saya Couple 2.3.0

Saya Studio is a local desktop app that drives ComfyUI for anime-style character images. ComfyUI renders,
Saya Studio organizes: casting, a six-pass workflow, gallery, character sheets, LoRA manager, graph editor.
Nothing runs in the cloud.

1.0.0 is the first stable release. It focuses on reliability: a generation interrupted by a ComfyUI crash,
a failed pass or a stop now resumes where it stopped, stopping really stops, and image cleanup never touches
what is not Studio's. It is the companion app of the Saya Couple node pack and, like the pack, first a backup
of my own setup. Back up your data and your ComfyUI folder before upgrading.

What's new in 1.0.0

Crash recovery in Create and Casting

  • If ComfyUI crashes or restarts during a six-pass run, a pass fails, or you stop the run, Resume from
    pass N
    restarts the unfinished pass with the same seed. Finished passes are kept: the pass reads the
    previous pass's state that ComfyUI saved on disk.
  • A pass lost by a ComfyUI restart is first confirmed gone (targeted queue delete, then absence from the
    queue and the history) before it is replaced. A pass that ComfyUI may still be running is never sent twice.
  • The same button appears in the casting sheet of a kept trial whose six-pass finish was interrupted.
    Pass-1 trials keep the batch Resume button.

Stop and restart

  • Stop now removes a queued pass from the ComfyUI queue. It used to send an interrupt, which only reaches
    the prompt being executed, so the queued pass still ran on the GPU after the run was marked stopped.
  • Restart is refused while a pass is still owned by ComfyUI, so two attempts never run at once.
  • Targeted interrupt accepts ComfyUI 0.34.0 and newer (it required exactly 0.34.0, so Stop was refused
    on any newer ComfyUI).

Casting

  • Resuming a batch no longer revives trials you already decided (rejected, or a stopped finish), which then
    showed as running forever.

Your images and data

  • Replacing a lineage never hides an image of your own library that a delivery was deduplicated onto;
    only files inside Studio's own folders are erased.
  • Every erased image is journaled in pass-states/preview-cleanup/removed-assets.log.
  • The startup preview cleanup now runs under the run lock: it could overwrite a pass just submitted by the
    background runner, which then submitted it again. A deletion error no longer loses the cleanup journal.

Interface

  • The error banner at the top of the app clears after the next successful navigation.
  • README screenshots refreshed from the current interface.
  • New labels translated in all 14 interface languages.

Linux installer: Couple nodes, Studio app, or both

Download install.sh
from this release, then run it in a terminal:

sh install.sh

Choose 1: Couple nodes, 2: Studio app, or 3: both. The installer downloads the public Couple
bundle, verifies its pinned SHA-256, and opens the existing installer. It detects the Linux app package,
checks its release checksum, and asks before installation. To choose both and specify ComfyUI explicitly:

sh install.sh --what both --comfyui /path/to/ComfyUI

For the nodes as a separate download, use
saya-couple-2.3.0.tar.gz:
extract it and run ./saya install.

Install

System File Command
Debian, Ubuntu saya-studio_1.0.0_amd64.deb sudo apt install ./saya-studio_1.0.0_amd64.deb
Fedora saya-studio-1.0.0.fedora.x86_64.rpm sudo dnf install ./saya-studio-1.0.0.fedora.x86_64.rpm
openSUSE saya-studio-1.0.0.opensuse.x86_64.rpm sudo zypper install ./saya-studio-1.0.0.opensuse.x86_64.rpm
Arch, EndeavourOS saya-studio-1.0.0-x86_64.pkg.tar.zst sudo pacman -U ./saya-studio-1.0.0-x86_64.pkg.tar.zst
Any Linux distribution saya-studio_1.0.0_amd64.AppImage chmod +x it, then run it
Flatpak saya-studio-1.0.0-x86_64.flatpak flatpak install --user ./saya-studio-1.0.0-x86_64.flatpak
Nix flake in studio/ nix run github:alphaziod/saya-studio-x-couple?dir=studio
Windows 10/11 x64 saya-studio-1.0.0-windows-x64.exe run the installer (WebView2 is handled)
Mac, Apple Silicon saya-studio-1.0.0-macos-arm64.dmg open it, drag Saya Studio into Applications
Mac, Intel saya-studio-1.0.0-macos-x64.dmg open it, drag Saya Studio into Applications

Check your download: sha256sum -c SHA256SUMS --ignore-missing.

Mac DMGs were built from this release's exact commit and passed native installation, startup and preset checks.

Windows builds are unsigned; Mac builds use ad-hoc signing and are not Apple-notarized, so the OS may block
the first launch. Updating keeps your database, images, characters and settings.

Requirements

  • A running ComfyUI (default ~/AI/ComfyUI, on 127.0.0.1:8188) with the Saya Couple nodes 2.3.0 or newer
    from this repository, plus the models your workflow uses.
  • Python 3. Optional: ffmpeg for LoRA video previews.
  • Linux: WebKitGTK 4.1 (Debian 12+, Ubuntu 22.04+, Fedora 39+, openSUSE Tumbleweed / Leap 15.6, Arch, NixOS).

Validation

  • Local: 482 Rust tests passed (33 explicitly ignored), 100 frontend tests passed, Svelte check with no
    errors or warnings, interface translations complete in 14 languages.
  • Real GPU, ComfyUI 0.34.0, SFW still-life prompts: stopping a run interrupted the executing prompt and
    deleted the queued one from the ComfyUI queue.
  • Native app check with a simulated ComfyUI: a full six-pass run, a casting batch of eight, keeping images in
    the gallery and restarting the app on that data.
  • Not verified end to end: a resume after actually killing ComfyUI. The decision logic (refusal while a pass
    runs, confirmation of a lost pass) is covered by unit tests.

Known limitations

  • Casting needs a draw engine, which is not distributed; without one, Casting says so and stays unavailable.
  • Flatpak runs sandboxed: ComfyUI on 127.0.0.1 and your home folder are allowed, but the browser
    extension bridge may not work there.
  • Snap is built by CI when the Snapcraft store is reachable; it is attached only if that build succeeds.
  • The bundled preset ships with neutral example prompts and empty LoRA stacks: fill in your own. Its model
    settings are mine; keep the ones that work on your machine.

Also in this repository

The Saya Couple 2.3.0 node pack is unchanged. See
CHANGELOG.md.

Documentation

README ·
Packaging ·
For AI agents and contributors

License: GPL-3.0-or-later.

Saya Studio 1.0.0-beta.2 × Saya Couple 2.3.0

Choose a tag to compare

@alphaziod alphaziod released this 02 Nov 09:53

Saya Studio 1.0.0-beta.2 × Saya Couple 2.3.0

Saya Studio is a local desktop app that drives ComfyUI for anime-style character images. ComfyUI renders,
Saya Studio organizes: casting, a six-pass workflow, gallery, character sheets, LoRA manager, graph editor.
Nothing runs in the cloud.

This is a beta. It is the companion app of the Saya Couple node pack and, like the pack, first a backup of my
own setup. Back up your data and your ComfyUI folder before trying it.

Windows and macOS downloads

Native assets use source commit 9cd643d; the existing Linux packages and Couple archive are unchanged.

Native installation, startup and browser checks passed on all three platforms on 2026-11-04, using these exact installers. Preset hashes and initial database setup were verified. The packaged extension connected through the real registered host to the running app in Chromium; an unrelated extension was refused. Native trash tests moved and restored a synthetic file on each platform during the build run. That first run built all three installers but failed its browser harness; the linked successful check retested the same binaries with the corrected harness. No GPU generation was run.

  • Windows 10/11 x64: saya-studio-1.0.0-beta.2-windows-x64.exe. Run the installer; WebView2 is required (the installer handles it).
  • Mac with Apple Silicon: saya-studio-1.0.0-beta.2-macos-arm64.dmg.
  • Mac with Intel: saya-studio-1.0.0-beta.2-macos-x64.dmg.

On macOS 11 or newer, open the DMG and drag Saya Studio into Applications. Windows builds are unsigned;
Mac builds use ad-hoc signing and are not Apple-notarized, so the OS may block first launch.
Python 3 and a working ComfyUI installation remain separate requirements. The private draw engine is not included.
These packages include the same public presets as Linux. Native package installation, startup and preset checks
run in CI; a complete manual UI/GPU workflow has not been validated on these platforms.
The gallery now uses Windows Recycle Bin and macOS Trash, with recoverable deletion and no permanent-delete fallback.
Launching Studio registers its browser host for Chrome, Chromium, Brave and Edge on Windows and macOS;
the extension connects without manually copying a token. Linux keeps its existing integration.
The nodes remain available in saya-couple-2.3.0.tar.gz; extract it and run python installer/saya.py install
(or python3 on macOS) from that folder. install.sh selects Linux app packages only.

Linux installer: Couple nodes, Studio app, or both

Download install.sh
from this release, then run it in a terminal:

sh install.sh

Choose 1: Couple nodes, 2: Studio app, or 3: both. The installer downloads the public Couple
bundle, verifies its pinned SHA-256, and opens the existing installer. It detects the Linux app package,
checks its release checksum, and asks before installation. Existing node backups and restore are preserved.

To choose both and specify ComfyUI explicitly:

sh install.sh --what both --comfyui /path/to/ComfyUI

Requires python3, curl, tar and sha256sum. The shell launcher must be run as your normal user;
the app installer requests sudo only when the selected system package needs it.

For the nodes as a separate download, use
saya-couple-2.3.0.tar.gz.
It contains the public node files, workflows, installer and licenses. Extract it and run ./saya install.
Both downloads are listed in SHA256SUMS alongside the app packages.

Requirements

  • Linux x86_64 with WebKitGTK 4.1 (Debian 12+, Ubuntu 22.04+, Fedora 39+, openSUSE Tumbleweed / Leap 15.6,
    Arch / EndeavourOS, NixOS).
  • A running ComfyUI (default ~/AI/ComfyUI, on 127.0.0.1:8188) with the Saya Couple nodes 2.3.0 or newer
    from this repository (./saya install --comfyui /path/to/ComfyUI), plus the models your workflow uses.
  • Python 3. Optional: ffmpeg for LoRA video previews.

Install

Distribution File Command
Debian, Ubuntu saya-studio_1.0.0-beta.2_amd64.deb sudo apt install ./saya-studio_1.0.0-beta.2_amd64.deb
Fedora saya-studio-1.0.0-beta.2.fedora.x86_64.rpm sudo dnf install ./saya-studio-1.0.0-beta.2.fedora.x86_64.rpm
openSUSE saya-studio-1.0.0-beta.2.opensuse.x86_64.rpm sudo zypper install ./saya-studio-1.0.0-beta.2.opensuse.x86_64.rpm
Arch, EndeavourOS saya-studio-1.0.0-beta.2-x86_64.pkg.tar.zst sudo pacman -U ./saya-studio-1.0.0-beta.2-x86_64.pkg.tar.zst
Any distribution saya-studio_1.0.0-beta.2_amd64.AppImage chmod +x it, then run it
Flatpak saya-studio-1.0.0-beta.2-x86_64.flatpak flatpak install --user ./saya-studio-1.0.0-beta.2-x86_64.flatpak
Nix flake in studio/ nix run github:alphaziod/saya-studio-x-couple?dir=studio

Check your download: sha256sum -c SHA256SUMS --ignore-missing.

Changes in beta.2

Interface throughout the app

  • Larger, clearer labels and body text, more readable secondary text, and consistent control heights.
  • Wider navigation, simpler headings, quieter borders and more space between controls.
  • Toolbars and filters wrap on smaller windows; panels and grids keep their content readable.

Casting and test scripts

  • Clearer batch controls, full-width character/action choices and a dedicated row for the result,
    family, checkpoint, LoRA and sort filters.
  • New Test scripts section with automatic discovery of existing test_*.py and tester.py files
    in the configured engine tree and the scripts-tests config folder, plus the existing LCS launcher.
    The list refreshes when the section opens and with Refresh, so newly added scripts can appear
    without maintaining a hardcoded list.
  • Select a test and click Generate. Discovery does not execute or import scripts. Ordinary engine
    modes remain available separately; unit-test directories, archives, output folders and symbolic
    links are excluded from discovery.
  • Execution displays the actual success or failure, exit code, timeout and captured output. Unknown
    selections are rejected; double submissions and overlapping test requests are blocked. Python runs
    from the selected script's folder, adding --gpu when that option is detected in its source.

Gallery, characters and models

  • Gallery toolbars and filters wrap correctly; corrected virtual-grid spacing keeps the displayed
    columns aligned with the available width.
  • Character lists and sheets have more readable text, better column sizing and revision rows that wrap.
    The default avatar is simpler.
  • LoRA and checkpoint controls, filters and inspectors have clearer spacing and readable actions,
    including on narrower windows. References, character galleries and import panels share the same styling.

Generation and workshop

  • Generation and Saya Couple panels have clearer workflow/preparation labels, a dedicated row for saved
    preparations, wider controls and more readable pass/node cards.
  • Workflow, module and pipeline views use roomier columns and tables. Graph editor tools sit in the
    page layout instead of covering the canvas; graph and pipeline canvas coordinates are preserved.
  • Scene fields wrap into readable columns. A/B lab, prompt tools, engine controls, data management,
    settings, comparisons and the image editor use the updated text sizes and spacing.

Languages and existing data

  • New test-script labels and corrected import wording are translated across all 14 interface languages.
  • Existing public presets and the Saya Couple 2.3.0 node package are unchanged. No personal images,
    databases, local draw-engine scripts or private work logs are included in this update.

Validation and package status

  • Local verification: 460 Rust tests passed, 32 explicitly ignored; 99 frontend tests and 10 IPC tests
    passed. Svelte checking and the frontend build passed.
  • Native UI checks covered test-script discovery and execution, real failure reporting and duplicate-click
    protection with synthetic scripts. Visual checks covered full-HD and narrower layouts, graph drag/undo,
    dialogs and right-to-left display. No real GPU generation was performed for this interface update.
  • The tag workflow
    completed: Arch, Debian/Fedora/AppImage, openSUSE, Nix, Flatpak and the release publication job succeeded.
    Snap failed while downloading its build tooling from the Snapcraft store. No checks were cancelled in
    this attempt. Published file digests were checked against SHA256SUMS and GitHub's SHA-256 values.

Known limitations

  • Snap is not attached to beta.2. CI could not reliably download the build prerequisites
    from the Snapcraft store. The Snap recipe remains available in packaging/snap/snapcraft.yaml.

  • Beta. Used day to day on Arch (Wayland) with an AMD GPU. The other packages are built and checked by CI but
    have not all been run by hand yet: please report what breaks.

  • Casting needs a draw engine, which is not distributed; without one, Casting says so and stays unavailable.

  • Flatpak runs sandboxed: ComfyUI on 127.0.0.1 and your home folder are allowed, but the browser
    extension bridge may not work there.

  • The bundled preset ships with neutral example prompts and empty LoRA stacks: fill in your own. Its model
    settings are mine; keep the ones that work on your machine.

Also in this repository

The ...

Read more

Saya Couple v2.3.0

Choose a tag to compare

@alphaziod alphaziod released this 29 Oct 20:54
9aa259d

Saya Couple 2.3.0 also brings the 2.2.0 – 2.2.2 changes, which had no release of their own. Install or upgrade with ./saya install (it now asks whether you want the nodes, the Saya Studio desktop app, or both).

2.3.0 — 2026-10-29

Saya Studio 1.0 beta, and node updates it relies on

  • Saya Studio (studio/): a local Linux desktop app (Tauri 2 + Svelte + Rust) that drives ComfyUI for
    casting, the six-pass Saya workflow, gallery, characters and LoRA management. First public beta 1.0.0-beta.1,
    released on its own (studio-v* tags); see studio/README.md. The node installer does not
    ship it.
  • Ownership anchors: the genital-anatomy block now gives one anchor per aspect of each organ (size, colour, the
    cute_penis LoRA trigger, erect/flaccid state, pubic hair colour) instead of one per organ, so P1 and P2 are told
    apart more often. A bare organ name the other person also has is never an anchor. Breasts stay identity (chest)
    anchors, never anatomy.
  • Saya Family Save (new output node): standard ComfyUI PNG metadata plus a saya_family chunk and a
    <stem>.saya_family.json sidecar carrying the character identity, so Saya Studio can file images by family.
  • Image phases: every phase image carries a saya_role PNG chunk (role, phase, total, lineage) so an app
    can group a pass-1 image with its final.
  • Background picker: backgrounds that wash the picture out to white are softened to natural colours (palette,
    fluorescent, harsh light and haze tags rewritten or dropped; the weighted place tag is kept).
  • Web: saya_close_workflow.js closes the extra workflow tabs a batch would otherwise leave open (one per
    image); the active tab is kept.
  • AMD VRAM patch: the VRAM fraction is clamped when another process already holds VRAM.

2.2.2 — 2026-10-08

Dual sampling hand-off moved to 27 / 30 (Demo and Full)

  • Sampler 1 (ClownsharKSampler, MODEL_1) now runs 27 of 30 steps instead of 13 of 16; Sampler 2 (resample) still
    finishes the last 3 steps. At 13 / 16 the hand-off happened at sigma 0.369, before small details (fine shapes,
    local colour) are formed, and the refine pass could not rebuild them: smoothed, flat-coloured small shapes. At
    27 / 30 the hand-off is at sigma 0.199, like the earlier SamplerCustomAdvanced dual it replaced, and the detail
    survives. Measured on renders: 13 / 16 against 27 / 30 with both samplers, then 10 + 10 renders at 27 / 30.
    Cost: about +12 s per image on Sampler 1.
  • In resample mode Sampler 2 continues Sampler 1's own sigma schedule: its steps / denoise widgets are not
    read when it resumes an unfinished run.

2.2.1 — 2026-10-08

Same positive order in every phase

  • The imprint keeps QUALITY apart: Saya Couple Imprint Pack V2 gains an optional quality_prompt input (last),
    fed by the Main Prompt prefix; its main_prompt is then the scene. Absent = 2.1 imprints, read unchanged.
  • Every phase rebuilt from the imprint (Hires, HiDream, Refine, Detailers, Final Upscale, USDU) reads like Phase 1:
    Couple MAIN QUALITY, ACTION, background, background cells QUALITY, background, Solo QUALITY, ACTION, P1, background (HiDream Solo keeps its trigger first). Test quality_imprint_order.
  • Full workflow wired (prefix -> imprint quality_text, scene -> imprint main); tools/migrate_workflow_v220.py
    gains this step (still idempotent, also on a Full already migrated to 2.2.0).
  • test_action_imprint now tests the pack under test, not the copy installed in ComfyUI.

2.2.0 — 2026-10-08

Positive order: quality first, background last

  • Saya Main Prompt (and the French node) gains two outputs, appended last so saved workflows keep their links:
    prefix (quality tags + LoRA triggers alone) and scene (background + tags + extra, no prefix). main_prompt is
    unchanged and still feeds the imprint, so later phases rebuild exactly as before.
  • Saya Multi Couple gains an optional quality input (last input). Wired, MAIN must be the scene: Solo reads
    QUALITY ++ ACTION ++ P1 ++ MAIN, Couple gives MAIN QUALITY ++ ACTION ++ MAIN and the background pixels
    QUALITY ++ MAIN; P1 / P2 stay separate contexts. Unwired = 2.1 behaviour, bit-identical. Tests
    multi_couple_quality_order, multi_couple_solo, test_main_prompt.
  • Workflows: Demo and Full wired (QUALITY encode -> quality, MAIN encode reads scene). In the Full, the P1 / P2
    assembly now puts the anatomy text first (string_a) and the identity second, so the organ is encoded in the same
    CLIP chunk as the body it belongs to. tools/migrate_workflow_v220.py old.json new.json applies the same changes to a
    customised 2.1 Full (idempotent).

Dynamic ownership anchors

  • Vocabulary from a 2 500-character batch: hair (waves, strands, tuft, chignon…), face and skin (lipstick,
    dimples, jawline, laugh lines, facial hair…), species parts (tentacles, tusks, doll joints, implants,
    vines, crystals…), outfit (armband, collar, hat, jewelry…), body types (kitsune, dryad, gorgon,
    undead…) and genders (femboy, new-half, otoko no ko, non-binary, intersex, transgender…, hyphen or space).
  • Robust reading: every weight is removed, nested or stacked (((white eyes:1.2):1.1) -> white eyes), and a -like
    comparison is not the noun (doll-like is not a doll).
  • test_ownership_anchors now tests the pack under test, not the copy installed in ComfyUI.

2.1.3 — 2026-10-08

Background Picker

  • 80 new backgrounds marked unsafe in the stock ("unsafe": "figures" 48, "captivity" 22, "gore" 10): places
    whose scenery itself carries figures, captivity or gore. Like the fairground rides, they are kept out of random draws
    unless the unsafe switch is on (Picker, Main Prompt, Prompt MAIN FR); the switch tooltips now name all four kinds.
  • Locked seeds keep their background (same redraw rule as 2.1.2). Test background_picker_unsafe covers a marked entry.

AI tools used for this work: Claude, Z Code, Codex and Kimi (see AI-assisted development in the README).

Saya Studio 1.0.0-beta.1 (Linux beta)

Pre-release

Choose a tag to compare

Saya Studio 1.0.0-beta.1 — first Linux beta

Saya Studio is a local desktop app that drives ComfyUI for anime-style character images. ComfyUI renders,
Saya Studio organizes: casting, a six-pass workflow, gallery, character sheets, LoRA manager, graph editor.
Nothing runs in the cloud.

This is a beta. It is the companion app of the Saya Couple node pack and, like the pack, first a backup of my
own setup. Back up your data and your ComfyUI folder before trying it.

Requirements

  • Linux x86_64 with WebKitGTK 4.1 (Debian 12+, Ubuntu 22.04+, Fedora 39+, openSUSE Tumbleweed / Leap 15.6,
    Arch / EndeavourOS, NixOS).
  • A running ComfyUI (default ~/AI/ComfyUI, on 127.0.0.1:8188) with the Saya Couple nodes 2.3.0 or newer
    from this repository (./saya install --comfyui /path/to/ComfyUI), plus the models your workflow uses.
  • Python 3. Optional: ffmpeg for LoRA video previews.

Install

Distribution File Command
Debian, Ubuntu saya-studio_1.0.0-beta.1_amd64.deb sudo apt install ./saya-studio_1.0.0-beta.1_amd64.deb
Fedora saya-studio-1.0.0-beta.1.fedora.x86_64.rpm sudo dnf install ./saya-studio-1.0.0-beta.1.fedora.x86_64.rpm
openSUSE saya-studio-1.0.0-beta.1.opensuse.x86_64.rpm sudo zypper install ./saya-studio-1.0.0-beta.1.opensuse.x86_64.rpm
Arch, EndeavourOS saya-studio-1.0.0-beta.1-x86_64.pkg.tar.zst sudo pacman -U ./saya-studio-1.0.0-beta.1-x86_64.pkg.tar.zst
Any distribution saya-studio_1.0.0-beta.1_amd64.AppImage chmod +x it, then run it
Flatpak saya-studio-1.0.0-beta.1-x86_64.flatpak flatpak install --user ./saya-studio-1.0.0-beta.1-x86_64.flatpak
Snap saya-studio_1.0.0-beta.1_amd64.snap sudo snap install --dangerous ./saya-studio_1.0.0-beta.1_amd64.snap
Nix flake in studio/ nix run github:alphaziod/saya-studio-x-couple?dir=studio

Check your download: sha256sum -c SHA256SUMS --ignore-missing.

What's in 1.0

  • Generation — open a ComfyUI workflow (UI format), check its faithful API conversion (refused, never
    guessed, when something cannot be resolved), edit inputs, submit, follow progress.
  • Saya preset — six passes (composition, hires fix, HiDream, post, detailers, final upscale) with memory
    released between passes, one GPU job at a time.
  • Casting — N characters from a draw engine, pass 1 only, keep the good ones and finish them through the six
    passes; rotations (one character on every action, one action on N characters); action drafts tested in an
    isolated copy of the engine before they are added for real.
  • Gallery — incremental indexing of your folders (SHA-256, ComfyUI PNG metadata), filters by checkpoint, LoRA
    and character, favourites, review, duplicates; deliveries filed by day and family in ~/Images/saya studio.
  • Characters — sheets (identity prompt + anatomy), variants with backgrounds, reference images, import.
  • Models — LoRA manager with send-to-generation, stack and right-click actions.
  • Workshop — native ComfyUI graph editor (subgraphs, undo), workflows, pipelines, A/B lab, scenes.
  • Your data stays yours — SQLite database in ~/.local/share/studio.saya.desktop/, lasting settings and
    presets in ~/Documents/saya studio config/, backups with saya-studio-maintenance backup|verify|restore.
  • 14 interface languages (French by default).

Known limitations

  • Beta. Used day to day on Arch (Wayland) with an AMD GPU. The other packages are built and checked by CI but
    have not all been run by hand yet: please report what breaks.
  • Casting needs a draw engine, which is not distributed; without one, Casting says so and stays unavailable.
  • Flatpak and Snap run sandboxed: ComfyUI on 127.0.0.1 and your home folder are allowed, but the browser
    extension bridge may not work there.
  • The bundled preset ships with neutral example prompts and empty LoRA stacks: fill in your own. Its model
    settings are mine; keep the ones that work on your machine.
  • The app can be used to make adult images of adult characters; its store metadata says so.

Also in this repository

Saya Couple 2.3.0 (the node pack, ./saya install): one ownership anchor per aspect of the genital anatomy
block, Saya Family Save node, saya_role PNG chunk on phase images, softer background picker. See
CHANGELOG.md.

Documentation

README ·
Packaging ·
For AI agents and contributors

License: GPL-3.0-or-later.

Saya Couple v2.1.2

Choose a tag to compare

@alphaziod alphaziod released this 07 Oct 17:17

Updating from 2.1.x: git pull, then ./saya install again, then ./saya verify. No ComfyUI file is modified.

Background Picker

  • Fairground rides are out of random draws by default. Backgrounds whose name or main place is a carousel, a
    fairground or an amusement park (33 in the stock) are no longer drawn by all or by a category. They stay in the stock.
  • New unsafe switch (off by default) to draw them too: unsafe on Saya Background Picker,
    unsafe_backgrounds on Saya Main Prompt, decors_unsafe on Saya Prompt MAIN (FR). It is the last input of each
    node, so saved workflows keep their settings.
  • Locked seeds keep their background. The draw still runs on the whole stock; only a seed that lands on a
    fairground ride with the switch off is redrawn among the others, with the same seed. Test background_picker_unsafe.

AI tools used for this work: Claude, Z Code, Codex and Kimi (see AI-assisted development in the README).

Saya Couple v2.1.1

Choose a tag to compare

@alphaziod alphaziod released this 07 Oct 17:05

Updating from 2.1.0: git pull, then ./saya install again, then ./saya verify. No ComfyUI file is modified.

Backgrounds

  • The background stock grows from 7 409 to 8 799 (1 390 new, same format: bg + hand-detailed ultra, 41 categories unchanged).
    • 32 hand-written places that were missing: pastel patisserie, cat cafe, royal marble baths, empty public bathhouse, art deco hotel pool, gamer bedroom, streamer studio, jazz lounge, snowy pine forest, dojo, fairy domain, infernal throne hall…
    • 193 style × time-of-day combinations for the most requested kinds of places: 8 living room styles, 8 bedroom styles, luxury lounges, gamer rooms, sport halls, pastel places, royal baths, infernal halls.
    • 1 164 places from a large list of ideas (urban corners, craft workshops, transport, landscapes, gardens, heritage, industry, science, spa and leisure, uncanny and dreamlike places, near future, weather moods, horror, medieval, modern city, nostalgia, dystopia, places of worship, cosmic horror, oppressive architecture), translated into prompt tags and filtered: no person or silhouette in the scenery, no object that creates an extra figure or an inset (mirror, statue, portrait, mannequin, mask, screen), nothing related to childhood, no gore, no place of captivity.
    • A creepy dismantled carousel in the fog (horror category).
  • Background Picker tests pass on the larger stock.

Prompt guides

  • PROMPTS_GUIDE_EN.md / PROMPTS_GUIDE_FR.md gain §8, lessons from a 2 500-character solo batch: where a tag lands in the CLIP chunks matters more than its weight, framing first, light weights for age tags, colour words that bleed, a flat chest on an adult body still to be proven, how original characters keep their identity, creatures that stay about 80 % human, the sticky liquid nobody asked for, matched backgrounds, LoRA triggers, weak concepts, describing what must look good, locking a written size, colours of small details, per-character negatives, Sampler 2 drawing the details, species materials on the whole body.

AI tools used for this work: Claude, Z Code, Codex and Kimi (see AI-assisted development in the README).

Saya Couple v2.1.0

Choose a tag to compare

@alphaziod alphaziod released this 07 Oct 10:57

Updating from 2.0.x: git pull, then ./saya install again, then ./saya verify. No ComfyUI file is modified.

Fixes

  • Solo Phase 1 follows the prompt again. In Solo, SayaMultiCouple combined MAIN + ACTION and P1 with
    ConditioningCombine, which averages two separate predictions: half of the guidance came from the scene and the
    pose alone, with no character in it (wrong clothes, wrong person, censored or deformed results). Solo now sends
    one conditioning, MAIN ++ ACTION ++ P1 (token concatenation), exactly like the phases rebuilt from the imprint
    (one text "MAIN, ACTION, PERSON 1"). Couple mode is not touched. Test updated (multi_couple_solo).
  • Naturalize colour lock no longer paints colour fringes. SayaNaturalizePostProcess took the refine's
    lightness and the reference's colour pixel by pixel. Even at denoise 0.1 the refine redraws lines by a pixel or
    two, so the old line colour landed next to the new line: coloured halos on eyes, lashes and mouth, then amplified
    by every later pass. The lock now corrects only the blurred (area) colour drift and keeps the refine's own
    line colour. On a real image with lines moved by 1-3 px, the largest change drops from 75-84 to 6-21 levels (8 bit)
    and no pixel moves by more than 20 levels any more. color_lock keeps its range and meaning for areas.
  • Highlight taming off in the Full workflow. It also darkened the light side of every line and the eye
    catchlights (7 % of the pixels touched on a test image). The Full workflow ships it at 0; the tooltip says why.

New

  • Saya LoRA Family Filter · Model 2 (SayaLoraFamilyFilter). Applies the LoRAs of the Model 1 stack to
    Model 2, keeping only those its family can take, from the base_model LoRA Manager stores for each file: SDXL
    model 2 -> SDXL LoRAs only; Illustrious model 2 -> Illustrious and SDXL; any other family -> everything (for now);
    a LoRA without a known family passes and is reported. The checkpoint family comes from its metadata, or from its
    folder when the metadata says "Unknown". UNet only (Model 2 keeps the Model 1 CLIP). Inputs: the five
    loaded_loras outputs of LoRA Manager loaders, the Model 2 checkpoint name (text input that follows the loader),
    free extra LoRAs; output report lists PASS / BLOCK / SKIP. Wired in the Full workflow; Model 2 used to run
    without any LoRA. Tests: lora_family_filter.
  • Pubic hair is an anatomy anchor of its own. In phrase_anatomy ownership, "green pubic hair" or
    "green hairy penis" is now a separate part next to the organ's size / state, so a hair colour that differs between
    the two characters anchors each organ to its owner. Prompting tip: write <hair colour> pubic hair (the Danbooru
    tag, known to Illustrious) rather than "hairy penis".

Workflows

  • Demo and Full rebuilt from my current workflow with tools/build_demo_workflow.py and
    tools/build_full_workflow.py (same public-safe rules: demo prompts, SELECT_* placeholders, empty LoRA stacks,
    no personal names). The Full workflow follows my own placement of the Hires + USDU block: the MAIN · USDU
    Position
    selector of 2.0 is gone. Detailer slots are named Detailer 1 … Detailer 13. The Full builder also
    empties the per-character anatomy fields under their current titles. The demo only gains the person_anchor
    input; Saya_Couple_Demo_api.json is regenerated (unchanged).
  • The workflow check test_usdu_position_switch skips a workflow that has no USDU position selector.

AMD

  • AMD desktop VRAM reserve counted once. The optional safety patch already excludes 1 GiB from the
    allocator cap. extra_reserved_memory() now reserves only the part of --reserve-vram above that amount
    while the cap is active. Uncapped devices keep their previous behavior; the hard cap, full unloads,
    inference reserve and restriction on partial-model growth remain in place.
  • The installer upgrades the previous AMD patch using a checked three-line delta and preserves its original
    backup. CPU checks cover fresh install, upgrade, idempotence, conflict refusal, reversal and five reserve cases.
    HiDream completed two local GPU runs with full model loading (warm and cold conditioning cache); no general
    speed or image-quality improvement is claimed. Workflows and artistic settings are unchanged.

AI tools used for this work: Claude, Z Code, Codex and Kimi (see AI-assisted development in the README).

Saya Couple v2.0.1

Choose a tag to compare

@alphaziod alphaziod released this 05 Oct 12:37

2.0 modifies no ComfyUI file. Updating from 1.x or 2.0.0: git pull, then ./saya install again, then ./saya verify.

Fix

  • Solo keeps the ACTION in Phase 1. With Couple / Solo OFF, SayaMultiCouple encoded MAIN + P1 only and dropped the action input; the phases rebuilt from the imprint (2 to 6) already used MAIN + ACTION + P1, so the pose could change between Phase 1 and Phase 2. Solo now reads exactly MAIN (+ ACTION, concatenated as for the characters in Couple) + P1 and the negative; P2 is never read. Couple mode unchanged. Solo renders with a connected ACTION change on purpose.