media-rip/backend/app/routers
xpltd 182104e57f Persistent admin settings + new server config fields
Settings are now persisted to SQLite (config table) and survive restarts.

New admin-configurable settings (migrated from env-var-only):
- Max concurrent downloads (1-10, default 3)
- Session mode (isolated/shared/open)
- Session timeout hours (1-8760, default 72)
- Admin username
- Auto-purge enabled (bool)
- Purge max age hours (1-87600, default 168)

Existing admin settings now also persist:
- Welcome message
- Default video/audio formats
- Privacy mode + retention hours

Architecture:
- New settings service (services/settings.py) handles DB read/write
- Startup loads persisted settings and applies to AppConfig
- Admin PUT /settings validates, updates live config, and persists
- GET /admin/settings returns all configurable fields
- DownloadService.update_max_concurrent() hot-swaps the thread pool

Also:
- Fix footer GitHub URL (jlightner → xpltdco)
- Add DEPLOY-TEST-PROMPT.md for deployment testing
2026-03-19 12:11:53 -05:00
..
__init__.py M001: media.rip() v1.0 — complete application 2026-03-18 20:00:17 -05:00
admin.py Persistent admin settings + new server config fields 2026-03-19 12:11:53 -05:00
cookies.py Docker self-hosting: fix persistence, add data_dir config 2026-03-19 09:56:10 -05:00
downloads.py Fix ruff lint errors: unused imports, E402 import ordering 2026-03-19 07:27:38 -05:00
files.py M001: media.rip() v1.0 — complete application 2026-03-18 20:00:17 -05:00
formats.py M001: media.rip() v1.0 — complete application 2026-03-18 20:00:17 -05:00
health.py M001: media.rip() v1.0 — complete application 2026-03-18 20:00:17 -05:00
sse.py M001: media.rip() v1.0 — complete application 2026-03-18 20:00:17 -05:00
system.py Persistent admin settings + new server config fields 2026-03-19 12:11:53 -05:00
themes.py M001: media.rip() v1.0 — complete application 2026-03-18 20:00:17 -05:00