YT-AI-Automation / docs /PROJECT_IMPROVEMENT_BACKLOG.md
github-actions
Sync Docker Space
04913cd
|
Raw History Blame Contribute Delete
5.12 kB
# TextBro improvement backlog
Audited 2026-11-09 against `main`. Priorities are ordered to improve user
experience (UX), developer experience (DX), and agent experience (AX) together.
## P0 — protect production and make builds trustworthy
1. **Add authentication before exposing the backend.** Protect generation,
file, cache, delete, model-check, and restart routes with a shared-token
middleware at minimum; prefer OIDC for multi-user hosting. Keep restart
disabled for remote clients by default.
2. **Finish the MoviePy retirement.** The direct FFmpeg engine now covers the
declared workflows and MoviePy is no longer installed by default. After a
Linux integration test matrix proves parity, delete the optional MoviePy
implementation and its progress adapter. This removes roughly 270 lines and
permanently avoids MoviePy's Pillow `<12` constraint.
3. **Add CI quality gates.** Every pull request should run frontend lint/build,
backend compile/tests, dependency audits, a Docker build, and a small FFmpeg
smoke encode. The current GitHub workflow only force-syncs `main` to Hugging
Face and can publish code that has never been tested.
4. **Expand backend integration coverage.** Package imports and typed settings
are now self-contained; add real browser and FFmpeg fixtures in CI.
5. **Add capacity preflight for 4K.** Before export, check free disk, RAM,
FFmpeg codecs, writable output paths, and concurrency. Refuse unsafe starts
with an actionable message instead of failing after minutes of work.
## P1 — reduce change risk and operating cost
### Add
- Generated/shared TypeScript response types from the OpenAPI contract.
- A downloadable diagnostic bundle per run, building on structured JSON logs.
- Real FFmpeg integration fixtures for one slide, 100 slides, transitions,
voiceovers, intro/outro clips, music, watermark, cancellation, and 4K output.
- Frontend component/accessibility tests plus mobile visual regression tests at
390, 768, and 1440 px.
- Optional object storage for media when deployments outgrow local disk.
- Redis-backed queue/rate-limit adapters for multi-worker deployments.
### Upgrade/refactor
- Split `TextToVideo.tsx`, `Processes.tsx`, `routes/runs.py`, and
`video_engine.py` by feature and responsibility. They are the highest-risk
files for humans and coding agents.
- Delete the unreachable legacy `/generate-sse` implementation after the
compatibility window; its live adapter already uses `/runs/*`.
- Finish converting remaining relative output paths to an absolute path
registry resolved at startup.
- Add audio ducking/normalization controls and configurable watermark
position, opacity, and scale.
### Remove after migration
- Duplicate inline `/generate-sse` orchestration after all tools use queued
runs.
- Optional MoviePy fallback and proglog adapter after parity tests pass.
- Unused generic `caveman*` agent skills unless they are part of the supported
contributor workflow; replace them with a project-level `AGENTS.md` that
documents commands, invariants, and safe edit boundaries.
## P2 — product clarity and polish
- Hide or disable platform-incompatible controls dynamically (PPTX on Linux,
PowerPoint cleanup toggles on FFmpeg hosts).
- Add an export estimate showing duration, expected temporary disk use, output
size range, and why transition-heavy video costs more than static VFR video.
- Add queue controls: pause pending work, reprioritize, retry from a failed
stage, and preserve/reuse completed intermediate artifacts.
- Add keyboard and screen-reader testing for dialogs, thumbnail editing,
galleries, and the command palette.
- Replace browser-local settings/run state with server profiles when multi-user
authentication is introduced.
## Changes completed during this audit
- Fixed mobile banner/card/wizard layout and removed duplicate offline noise.
- Removed dead duplicated screenshot JSX, corrected mojibake, and restored a
clean frontend lint/build.
- Updated production frontend dependencies; production audit is now clean.
- Updated Flask, Werkzeug, Flask-CORS, Requests, and Pillow requirements.
- Removed mandatory MoviePy/proglog and unused `ffmpeg-python` dependencies;
direct FFmpeg remains the default while optional fallback code is retained.
- Tightened default CORS origins, restricted remote restart, and made preflight
report FFmpeg/ffprobe truthfully.
- Updated user-facing Linux MP4 guidance and workspace capability labels.
- Packaged backend imports and removed runtime/test `sys.path` mutation.
- Replaced executable config modules with frozen typed environment settings.
- Migrated runs, history, AI cache, pending queue, and ETA samples to WAL-mode
SQLite with one-time JSON import.
- Added Linux artifact retention and a 2-GiB free-disk floor for small VMs.
- Added OpenAPI 3.1, request/run-correlated JSON logs, and FFmpeg media-time ETA.
- Routed legacy `/generate-sse` traffic through the persisted `/runs/*` pipeline.
- Removed the unused Flask UI and consolidated docs into architecture and
operations guides.