1. 09 Jun, 2026 8 commits
    • Stefy Lanza (nextime / spora )'s avatar
      Township UI: regen/train progress survives a page reload · eb655005
      Stefy Lanza (nextime / spora ) authored
      Tag regen/train jobs with kind/name/jtype and add a /active-jobs endpoint listing
      running ones. On Characters/Environments page load, resumeActiveJobs() re-attaches
      the live progress display to any in-flight job for the matching card, so a reload
      (or reopening the tab) keeps showing progress until completion.
      Co-Authored-By: 's avatarClaude Opus 4.8 <noreply@anthropic.com>
      eb655005
    • Stefy Lanza (nextime / spora )'s avatar
      Township UI: click character/environment thumbnails to enlarge · f08cd384
      Stefy Lanza (nextime / spora ) authored
      Add a shared image lightbox (injected into every page via _page) and make the
      reference-image thumbnails on the Characters/Environments pages clickable to view
      them full-size. Click the backdrop or press Escape to close. Delete button still
      works independently.
      Co-Authored-By: 's avatarClaude Opus 4.8 <noreply@anthropic.com>
      f08cd384
    • Stefy Lanza (nextime / spora )'s avatar
      LoRA training base cache + thermal averaging + scoped debug flags; live model config · 8d1136c4
      Stefy Lanza (nextime / spora ) authored
      - LoRA trainer: cache the SD/SDXL base on CPU between jobs so back-to-back
        trainings against the same base skip the disk reload, and the base holds no
        VRAM between jobs (moved to GPU only while training). Fixes the post-training
        eviction failure that forced the next image request into CPU/disk offload.
      - Model manager: add register_external_vram_releaser() + last-resort eviction
        pass so a generation can reclaim the trainer's cached base when needed (skips
        while a job runs).
      - Thermal: average 3 CPU samples spread across a 3s budget for the resume/
        cooldown decision (CPU sensors swing +/-10C); pause stays single-read to react
        fast. Bounded so it never blocks past 3s of the poll interval.
      - Debug flags: --debug-web (uvicorn access lines), --debug-thermal ([thermal]
        [debug] checks), --debug-lora (per-step training loss to terminal); all off by
        default and independent of --debug.
      - Admin: lora_train_base_model field on the Models page; saves apply live to the
        running server (build_runtime_kwargs/apply_model_entry_live) with no restart.
      Co-Authored-By: 's avatarClaude Opus 4.8 <noreply@anthropic.com>
      8d1136c4
    • Stefy Lanza (nextime / spora )'s avatar
      Fix Z-Image image-gen + LoRA training; add separate LoRA training base model · f21de22e
      Stefy Lanza (nextime / spora ) authored
      - images.py: stop reusing cached prompt embeds for Z-Image. Its encode_prompt
        returns per-sample lists the pipeline consumes during a run, so cache-HIT
        reuse corrupted the batch (AssertionError: len(size) == bsz in unpatchify).
        Z-Image now always encodes natively; cache key also bound to id(pipeline).
      - loras.py: fix wrong import (multi_model_manager lives in codai.models.manager,
        not codai.api.state) used for VRAM unload + base-model path resolution; add an
        up-front architecture guard so transformer/DiT models (Z-Image/Flux/SD3) fail
        with a clear message instead of crashing in the CLIP tokenizer.
      - New train_base_model on LoraTrainRequest: train LoRAs against a separate
        UNet-based SD1.x/SDXL model while generation keeps using the DiT image model.
      - gen_township_fighters.py: thread --lora-train-base-model / web field through
        train_lora, _train_profile_loras, stage_loras/stage_env_loras, all run + per-
        card call sites; CONFIG_FIELDS + live default_args apply on /start, /save-config.
      Co-Authored-By: 's avatarClaude Opus 4.8 <noreply@anthropic.com>
      f21de22e
    • Stefy Lanza (nextime / spora )'s avatar
      Township web UI: suppress BrokenPipe/ConnReset from aborted requests · 2c736da4
      Stefy Lanza (nextime / spora ) authored
      Browsers routinely abort media (video seek/scrub) and SSE connections
      mid-response, which surfaced as BrokenPipeError/ConnectionResetError
      tracebacks spamming the terminal. Swallow these in the request handler's
      handle_one_request() and finish() so they're ignored cleanly.
      Co-Authored-By: 's avatarClaude Opus 4.8 <noreply@anthropic.com>
      2c736da4
    • Stefy Lanza (nextime / spora )'s avatar
      Township: per-match outcomes, match previews, editable prompts, terminal logs · df1c0032
      Stefy Lanza (nextime / spora ) authored
      Matches:
      - Outcomes are now per-match (<match>_<fighter>_<outcome>), generated for each
        match's two fighters, so each match's outcome scenes are its own/different.
      - Support multiple matches for the same pair+environment via unique match names
        (numeric suffix); scanner and delete isolate siblings correctly.
      - List view shows a lightweight preview (clip00 keyframe or metadata poster);
        detail view shows clips AND the match's outcomes per fighter, each with an
        editable prompt + re-render + remove. Clip/outcome prompts save to
        prompts.json. Legacy per-fighter outputs still listed.
      
      Prompts page: reframed as master prompts that auto-write a unique prompt per
      clip/outcome of every match; static templates marked fallback-only.
      
      Terminal: per-card action jobs (regenerate, train LoRA, match render) now echo
      their progress to the terminal too.
      Co-Authored-By: 's avatarClaude Opus 4.8 <noreply@anthropic.com>
      df1c0032
    • Stefy Lanza (nextime / spora )'s avatar
      Township: Matches list/detail with edit+remove, global Prompts page, --browser · 5e040759
      Stefy Lanza (nextime / spora ) authored
      Matches page:
      - Lightweight list view (no embedded players); per-match/per-fighter detail
        loads only that item's videos.
      - Edit a match: change fighters, environment, short/long targets, and each
        clip's prompt (saved to prompts.json). Fighter-outputs detail edits outcome
        prompts.
      - Remove videos: per clip, per final, whole match, single output, or all of a
        fighter's outputs (keeps plan/keyframes for re-render). Traversal-guarded.
      
      Global Prompts page (/prompts):
      - Edit the script's global templates — LLM fight/outcome system prompts and the
        static fight-shot + win/ko_win/retire/draw fallback templates. Persisted to
        <out-dir>/prompts_config.json, applied live and re-loaded on every run, with
        reset-to-defaults.
      
      Web UI:
      - Only auto-open a browser when --browser is passed (avoids spawning a terminal
        text browser on headless servers).
      Co-Authored-By: 's avatarClaude Opus 4.8 <noreply@anthropic.com>
      5e040759
    • Stefy Lanza (nextime / spora )'s avatar
      Township: per-profile LoRA training, Matches page, modals; fix SDXL LoRA dtype · 533bab82
      Stefy Lanza (nextime / spora ) authored
      LoRA training (codai/api/loras.py):
      - Fix instant crash "mat1 and mat2 have the same dtype (Half != float)":
        components loaded in their checkpoint's native dtype (fp16 text encoders +
        fp32 UNet). Force consistent fp32 (stable LoRA reference) for both SD1.5 and
        SDXL, and free VAE/text encoders after pre-encoding to keep memory in budget.
      
      Web UI (tools/gen_township_fighters.py):
      - Per-profile LoRA training launched from the Characters/Environments cards
        (steps/rank, live server progress, status badge); the "Train LoRAs" step now
        trains regardless of the consistency setting and logs what it does. Profiles
        are uploaded to CoderAI first so server-side training has reference images.
      - New Matches page: final short/long videos, single clips, and outcome outputs
        per match. Re-render clips/outputs with the video model (reuses the render
        path, honoring keyframe/LoRA settings) or reassemble finals from existing
        clips (no model).
      - Replace browser alert/confirm/prompt with proper in-page modal dialogs
        (uiConfirm/uiAlert/uiPrompt) on every page.
      - Apply changed connection/model settings (image/video/text model) to the live
        session on Save config / Start, so per-profile jobs use them immediately.
      Co-Authored-By: 's avatarClaude Opus 4.8 <noreply@anthropic.com>
      533bab82
  2. 08 Jun, 2026 2 commits
    • Stefy Lanza (nextime / spora )'s avatar
      Township UI: profile management, regenerate/upload refs, env parity · 278fab3e
      Stefy Lanza (nextime / spora ) authored
      Web UI (tools/gen_township_fighters.py):
      - Characters and Environments management pages: edit every meta field
        (data-driven form, not a fixed set), remove a profile, delete individual
        reference images — synced to CoderAI (DELETE/PATCH).
      - Regenerate references: background job generates N new images guided by the
        kept references (IP-Adapter) and APPENDS them, preserving non-deleted ones.
      - Upload your own reference image files (magic-byte validated, appended).
      - Clear run banner + status-pill label indicating which run/step is executing.
      - Config: -s/--save and -c/--config; web Save button writes server-side and,
        when launched with -c, defaults to that same config path.
      
      Environment parity / consistency:
      - Per-environment identity LoRAs (loras.py: environment field, env image
        resolver, "place" instance prompt; script stage_env_loras, env_loras.json,
        applied to keyframes + video alongside fighter LoRAs).
      - Environment IP-Adapter: environment_profiles on the image request
        (imagerequest.py) resolved into the IP-Adapter reference set (images.py),
        so environment regeneration can match kept references.
      Co-Authored-By: 's avatarClaude Opus 4.8 <noreply@anthropic.com>
      278fab3e
    • Stefy Lanza (nextime / spora )'s avatar
      Add config save/load to township fighters generator · f5cb44e1
      Stefy Lanza (nextime / spora ) authored
      CLI: -s/--save FILE writes selected generation options to a JSON config
      and exits; -c/--config FILE loads them as defaults (command-line args
      still override, via a two-phase parse).
      
      Web UI: "Save config" button writes the current form options to a file
      on the server (relative paths land in the output dir, absolute paths as-is)
      via a new /save-config endpoint. Web- and CLI-saved configs are
      interchangeable (shared CONFIG_FIELDS / canonical mapping).
      Co-Authored-By: 's avatarClaude Opus 4.8 <noreply@anthropic.com>
      f5cb44e1
  3. 03 Jun, 2026 1 commit
  4. 11 May, 2026 9 commits
  5. 08 May, 2026 3 commits
  6. 07 May, 2026 10 commits
  7. 06 May, 2026 7 commits