4 Commits

Author SHA1 Message Date
Conal Mullan 290d7d345b Adopt uv for Python dependency management (#33 rebased, thanks @AsharibAli) (#59)
* Adopt uv for Python dependency management

Replace manual pip/venv setup with `uv sync` (pyproject.toml + uv.lock),
and switch all tool invocations across docs, skills, commands, and
examples to `uv run`. Optional extras: --extra whisper, --extra modal.
tools/requirements.txt is kept as a pip fallback.

* FIX: bring uv migration current with main — post-June deps and docs

Adds websocket-client (60db websocket transport) to core deps and a
'youtube' extra for the google-* packages (tools/youtube_upload.py),
regenerates uv.lock, bumps pyproject version to 0.18.0, and converts the
51 'python3 tools/…' invocations added since the PR was opened (60db,
YouTube, Kiro docs, publish command) to 'uv run'. Verified with
uv sync --frozen --extra youtube; voiceover, sixtydb_tts, youtube_upload
and migrate_to_kiro all run through the project environment.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Asharib Ali <asharibarain4@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-26 22:55:43 +01:00
Conal Mullan 1f79d98c42 FIX: accept both modal CLI JSON key casings in verify_setup app detection (follow-up to #51) (#53)
modal app list --json emits capitalised keys ('Description', 'State') on
CLI <=1.3.x and lowercase keys on newer CLIs. #51 fixed detection for new
CLIs but broke it for older ones; accept both so the check works on any
Modal version. Verified live against modal 1.3.5 (6 apps detected) and
via mocked lowercase output.


Claude-Session: https://claude.ai/code/session_01MKbS3m7TXrfYjE7gDVEpnV

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-13 22:06:55 +01:00
Edgar 7cca516f96 FIX: wire up LTX-2 Modal config, repair verify_setup app detection, document Windows gotchas (#51)
Three unrelated gaps found while running /setup end to end on Windows.

1. MODAL_LTX2_ENDPOINT_URL was read by tools/cloud_gpu.py but appeared in
   neither .env.example nor verify_setup.py, so LTX-2 could only be configured
   by someone who had read the source. Added to both, plus the deploy command
   and env var in docs/modal-setup.md.

2. verify_setup.py always reported "no toolkit apps deployed". `modal app list
   --json` emits lowercase keys ("description", "state") while the check read
   the capitalised column headers of the human-readable table, so the filter
   never matched. Verified against a workspace with 6 deployed apps: now
   correctly reports "6 deployed". Also made the "N/7 tools" header derive its
   total from the tool list instead of hardcoding it, since adding LTX-2 would
   otherwise have desynced the count.

3. Documented three Windows blockers that each present as a toolkit bug:
   - modal deploy aborts mid-build with a cp1252 'charmap' encode error unless
     PYTHONIOENCODING=utf-8 is set
   - python3 resolves to the zero-byte WindowsApps App Execution Alias, which
     fails with "Permission denied" — this breaks every documented
     `python3 tools/...` invocation
   - FFmpeg needs a manual install, with a fallback for when winget's source
     index is corrupted

   Also documented two Modal behaviours that cost real debugging time: AppCreate
   is rate-limited so deploys must be serial, and A100-class apps (image-edit,
   ltx2) fail at deploy time until a payment method is added. Noted that ltx2
   separately needs a `huggingface-token` secret, and that Modal truncates long
   endpoint labels with a hash so URLs must be copied rather than reconstructed.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 22:05:14 +01:00
Conal Mullan eb90d47d68 Add /setup wizard, verify script, and migrate dewatermark to cloud_gpu
- New /setup command: interactive 6-phase onboarding wizard for new users
  (prerequisites, cloud GPU provider, R2 file transfer, tool deployment,
  voice config, verification)
- New verify_setup.py: checks all prerequisites, env vars, deployed apps,
  and optionally runs smoke tests (--test flag)
- Migrate dewatermark.py to cloud_gpu.py: replace ~400 lines of inline
  RunPod code with shared abstractions, add --cloud runpod|modal flag
- Add dewatermark to Modal env vars and GPU cost tables in cloud_gpu.py
- Rewrite .env.example: all 22 env vars organized by service, Modal
  section added, references /setup
- Update README, CLAUDE.md, getting-started.md, video.md to reference
  /setup as the primary onboarding path
- Register setup command and verify_setup tool in toolkit-registry.json

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 19:42:11 +00:00