Container can't resolve internal gitea:3000 hostname.
Clone from public HTTPS URL instead.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
python:3.12-slim lacks node, so actions/checkout@v4 fails.
Use manual git clone with Gitea environment variables instead.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace actions/setup-python@v5 (skipped by act runner) with
python:3.12-slim container images so Python is available directly.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Templates referenced 'admin_user_new' (stegasoo convention) but the
soosef route is named 'admin_new_user'. Caused 500 error when clicking
"Add User" from admin panel.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The healthcheck tried HTTPS first (curl -fsk https://...) when HTTPS
was disabled. The TLS ClientHello to a plain HTTP listener hung the
sync worker indefinitely. With 2 workers, both got stuck, blocking
all real HTTP requests.
Fix: try HTTP first, add --max-time 3 to release quickly on failure.
Compose override uses HTTP-only to match HTTPS_ENABLED=false default.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Dockerfile: builds from Sources/ context, installs stegasoo + verisoo + soosef
- docker-compose.yml: single service with persistent volume at /root/.soosef
- entrypoint.sh: auto-init on first run, gunicorn with 2 workers
Build: cd soosef/docker && sudo docker compose build
Run: sudo docker compose up -d
Port 35811, HTTPS disabled by default (reverse proxy expected)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
New file stego_routes.py:
- register_stego_routes() mounts all encode/decode routes on the Flask app
- Async encode with ThreadPoolExecutor + progress polling
- Subprocess isolation for crash-safe stegasoo operations
- Image + audio encode/decode with full validation
- Encode result display with download
- Tools API routes (capacity, EXIF, rotate, compress, convert)
- About page with crypto documentation
Real templates (replacing stubs):
- encode.html (889 lines): full form with carrier upload, passphrase,
PIN, RSA key, embed mode selection, async progress bar
- decode.html (681 lines): decode form with credential inputs
- encode_result.html (242 lines): result display with download
- about.html (602 lines): security documentation
All routes verified working with auth flow.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Copy Bootstrap 5, Bootstrap Icons, and html5-qrcode from stegasoo
- Fix stegasoo CLI import (cli group, not main wrapper)
- Add .gitignore and README.md
- Verified: soosef init, soosef serve, all routes, key export/import all work
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>