Commit History

  1. Restore Docker app for Klein sidecar

    0e4c895
  2. Export server as Gradio demo

    eec00bf
  3. Use Gradio server launch defaults

    039254c
  4. Prioritize custom routes in ZeroGPU mode

    987cfbf
  5. Attach custom routes to Blocks for ZeroGPU

    b25f12e
  6. Let Spaces launch Gradio server mode

    fc380b0
  7. Run Tiny Army directly on Gradio ZeroGPU

    fe58bfe
  8. Use compatible Gradio client token argument

    103347c
  9. Proxy Klein portraits through ZeroGPU sidecar

    4fd3bea
  10. Add ZeroGPU Klein portrait provider

    844dab5
  11. Portraits: in-browser WebGPU via vendored Bonsai (FLUX.2-Klein 4B, on-device)⁠

    polats +1: Claude Opus 4.8 (1M context)
    db6b273
  12. Portraits step 4: in-browser Janus-Pro-1B (WebGPU) portrait engine⁠

    polats +1: Claude Opus 4.8 (1M context)
    69e8c08
  13. Portraits step 3: persona panel Portrait section + per-hero caching⁠

    polats +1: Claude Opus 4.8 (1M context)
    6a861b9
  14. Portraits: set correct Content-Type for cloud images (NIM returns JPEG)⁠

    polats +1: Claude Opus 4.8 (1M context)
    acb2593
  15. Portraits step 2: /portrait engine routing + imagen facade + Settings picker⁠

    polats +1: Claude Opus 4.8 (1M context)
    2151ea1

  1. Settings: hide the app URL printed in Gradio's Settings header⁠

    polats +1: Claude Opus 4.8 (1M context)
    476605d
  2. Settings: "Use recommended for this device" button (GPU/device-tier heuristic)⁠

    polats +1: Claude Opus 4.8 (1M context)
    7b49a92
  3. Settings presets: real padding (beat Gradio reset) + readable active hover⁠

    polats +1: Claude Opus 4.8 (1M context)
    dbd7553
  4. Settings: recommended quality presets + device readout; persist all choices⁠

    polats +1: Claude Opus 4.8 (1M context)
    750ca83
  5. Voice: default prod provider to Kokoro (in-browser), not cloud Qwen3-TTS⁠

    polats +1: Claude Opus 4.8 (1M context)
    585578b
  6. Voice: provider-driven per-hero voices; settings is provider-only⁠

    polats +1: Claude Opus 4.8 (1M context)
    e648dca
  7. Persona: simplify prompt to name/about/quote/voice; editable in Settings⁠

    polats +1: Claude Opus 4.8 (1M context)
    575fb61
  8. Persona voice: re-DESIGN when the voice description changes (not clone)⁠

    polats +1: Claude Opus 4.8 (1M context)
    c531198
  9. Persona voice: play↔stop toggle, loading spinner, auto-stop on nav/new pick⁠

    polats +1: Claude Opus 4.8 (1M context)
    ba238a8
  10. Persona voice: cloud voice-clone, varied voice designs, animated class picker⁠

    polats +1: Claude Opus 4.8 (1M context)
    26cb5c0
  11. Personas → heroes: shield icon, hero terminology, empty state, active highlight⁠

    polats +1: Claude Opus 4.8 (1M context)
    29474fc
  12. Fix: red headings, voice-edit badge, and voices persisting across refresh⁠

    polats +1: Claude Opus 4.8 (1M context)
    9f5e779
  13. Persona voice: one pulsing play button, sidebar-style headings, live badge⁠

    polats +1: Claude Opus 4.8 (1M context)
    ea860c1
  14. Persona: red section headings, icon buttons, edit-aware voice + clone-on-play⁠

    polats +1: Claude Opus 4.8 (1M context)
    72160ec
  15. Persona: editable fields (auto-save), quote after about, Create/Replay voice⁠

    polats +1: Claude Opus 4.8 (1M context)
    308478f
  16. Personas-as-agents: spoken quote + save to a local-first barracks roster⁠

    polats +1: Claude Opus 4.8 (1M context)
    0ecdf98
  17. Voice: cloud Qwen3-TTS is the default engine in prod (was Kokoro)⁠

    polats +1: Claude Opus 4.8 (1M context)
    fc20b4d
  18. Voice settings: add "Qwen3-TTS local" engine — localhost-only, default on localhost⁠

    polats +1: Claude Opus 4.8 (1M context)
    e352ff3
  19. app.py: PORT env (default 7860) so it runs locally next to a service on 7860⁠

    polats +1: Claude Opus 4.8 (1M context)
    0f47058
  20. Add Qwen3-TTS local bridge: ?tts= override + tts_server.py⁠

    polats +1: Claude Opus 4.8 (1M context)
    3bc1b31
  21. Move Voice settings into the Settings page; add a sidebar ⚙ Settings button⁠

    polats +1: Claude Opus 4.8 (1M context)
    dffe06d
  22. Qwen3-TTS: use DashScope international endpoint (our key is sk-ws- intl)⁠

    polats +1: Claude Opus 4.8 (1M context)
    dff270e
  23. Add Qwen3-TTS Voice Design (DashScope) + persona voice descriptions⁠

    polats +1: Claude Opus 4.8 (1M context)
    717332c
  24. Cap persona + diary at 100 tokens; shorten prompts; stream the diary⁠

    polats +1: Claude Opus 4.8 (1M context)
    b862211
  25. Fix empty-JSON: keep the answer when a model leaves <think> unclosed⁠

    polats +1: Claude Opus 4.8 (1M context)
    62070d0
  26. Model bar: show params once (avoid '0.6B · 0.6B' for byte-less engines)⁠

    polats +1: Claude Opus 4.8 (1M context)
    5264fdb
  27. Settings: model section to top; default WebLLM + Qwen3 0.6B; copyable debug⁠

    polats +1: Claude Opus 4.8 (1M context)
    898540a
  28. Put the model picker in Gradio's OWN settings page (not a custom tab)⁠

    polats +1: Claude Opus 4.8 (1M context)
    cd43499
  29. Move engine/model settings to a Settings page; share one model across both pages⁠

    polats +1: Claude Opus 4.8 (1M context)
    627d835
  30. Cache status + delete for WebLLM and Transformers.js (like wllama)⁠

    polats +1: Claude Opus 4.8 (1M context)
    b0f48f8
  31. Transformers.js: pre-flight WebGPU device, else WASM (fixes load + caching)⁠

    polats +1: Claude Opus 4.8 (1M context)
    bed3298
  32. Fix stale JS (no-cache on /web) + Transformers.js WebGPU→WASM fallback⁠

    polats +1: Claude Opus 4.8 (1M context)
    559041f
  33. Fix Qwen3 on WebLLM: budget for thinking + capture reasoning_content⁠

    polats +1: Claude Opus 4.8 (1M context)
    eba5aae
  34. Fix Qwen3 parsing (/no_think) + WebLLM double-load guard & progress clarity⁠

    polats +1: Claude Opus 4.8 (1M context)
    ab87288
  35. Mobile: collapse model/voice control bars behind tap-to-expand⁠

    polats +1: Claude Opus 4.8 (1M context)
    0218dca