3ed3f721eb
fix(api): harden subprocess/SSRF/concurrency and add db pool
...
- run(): add timeout (download 600s via DOWNLOAD_TIMEOUT_SECONDS, else 300s);
TimeoutExpired now kills the child and fails the job instead of hanging forever
- create_job: validate_source_url() rejects file://, private/loopback/link-local
IPs and off-allowlist hosts (SOURCE_URL_ALLOWED_HOSTS) — closes SSRF/local-read
- per-job RLock guards save_state/update/update_generated_video and the retry
check-and-set so concurrent video workers can't clobber state.json
- db: psycopg_pool connection pool (graceful fallback if unavailable); write
failures surfaced via logging.error instead of silent print
- read-only media GET routes use job_path() (no mkdir) to stop empty-dir spam
- wrap remaining Image.open() in with-blocks to avoid fd leaks
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-05-30 02:04:59 +08:00
56ea8aef11
auto-save 2026-05-29 16:54 (~2)
2026-05-29 16:54:40 +08:00
854947a239
feat: cache canvas media locally
2026-05-28 15:43:54 +08:00
4bcca76098
fix: prevent video generate button drag capture
2026-05-28 15:26:41 +08:00
5c6476fe1a
fix: restore video generation config guard
2026-05-28 10:03:44 +08:00
47b7073514
docs: add launch usage guide
2026-05-28 09:50:57 +08:00
fd5aefe1b9
auto-save 2026-05-28 09:38 (+1, ~1)
2026-05-28 09:38:41 +08:00
e97dc032d5
auto-save 2026-05-28 09:33 (~2)
2026-05-28 09:33:11 +08:00
538b24a2fd
auto-save 2026-05-27 23:08 (~5)
2026-05-27 23:08:22 +08:00
d7f72f6b42
auto-save 2026-05-27 23:01 (~5)
2026-05-27 23:02:52 +08:00
b6a7e7b4b8
chore: harden production deploy scripts
2026-05-27 22:20:48 +08:00
0c30fb9091
auto-save 2026-05-27 18:13 (~3)
2026-05-27 18:13:45 +08:00
13d9057318
auto-save 2026-05-27 18:08 (~2)
2026-05-27 18:08:07 +08:00
dab4bde28f
auto-save 2026-05-27 17:51 (~4)
2026-05-27 17:51:41 +08:00
6ac548a937
auto-save 2026-05-27 17:29 (~3)
2026-05-27 17:29:45 +08:00
fb939b8fcf
auto-save 2026-05-27 17:24 (~4)
2026-05-27 17:24:16 +08:00
9ab541796b
auto-save 2026-05-27 17:18 (~9)
2026-05-27 17:18:45 +08:00
8999fe0baf
auto-save 2026-05-27 17:13 (~2)
2026-05-27 17:13:16 +08:00
ec38215dd5
fix: persist uploaded canvas reference images
2026-05-27 15:54:22 +08:00
685a6c4d64
docs: record canvas click performance optimization
2026-05-27 15:33:10 +08:00
52e7a01a7e
auto-save 2026-05-27 15:26 (~3)
2026-05-27 15:28:29 +08:00
fdef7f77e1
auto-save 2026-05-27 15:20 (~3)
2026-05-27 15:20:42 +08:00
3035efcceb
docs: codify marketing product baseline
2026-05-27 15:06:31 +08:00
f3c0500b60
fix: auto-sync completed canvas videos
2026-05-27 14:59:39 +08:00
284296d3e9
auto-save 2026-05-27 14:58 (+2, ~2)
2026-05-27 14:58:42 +08:00
3c146d64a0
auto-save 2026-05-27 14:53 (+1, ~6)
2026-05-27 14:53:13 +08:00
22398c1483
auto-save 2026-05-27 14:47 (~2)
2026-05-27 14:47:45 +08:00
a699899323
auto-save 2026-05-27 14:42 (~2)
2026-05-27 14:42:16 +08:00
5046e2304e
auto-save 2026-05-27 14:36 (~3)
2026-05-27 14:36:48 +08:00
934bdd1fa2
auto-save 2026-05-26 19:32 (~2)
2026-05-26 19:33:03 +08:00
e0df6a5d0f
auto-save 2026-05-26 17:47 (~2)
2026-05-26 17:47:35 +08:00
0eb775dff3
docs: compact user guide pdf layout
2026-05-26 17:26:44 +08:00
6d32b63eab
docs: export user guide pdf
2026-05-26 16:11:44 +08:00
fe92c7943d
docs: add employee user guide
2026-05-26 15:56:54 +08:00
8d5311c60a
chore: add local docker validation workflow
2026-05-26 14:50:00 +08:00
ef9b8312ec
docs: record image config restore deployment
2026-05-26 14:05:05 +08:00
bdb7226642
revert: restore original image generation config
2026-05-26 14:02:35 +08:00
ffdb60c463
docs: record Gemini image size deployment
2026-05-26 13:09:56 +08:00
56a23847a1
fix: align Gemini image sizes with official presets
2026-05-26 13:05:27 +08:00
cb0659fa00
docs: record image config deployment
2026-05-26 12:24:48 +08:00
5d047af346
feat: expose image quality and pixel sizes
2026-05-26 12:22:21 +08:00
47300b8fa6
docs: record AI polish deployment
2026-05-26 11:52:03 +08:00
f5be97b9e7
fix: make AI polish intent-aware
2026-05-26 11:50:01 +08:00
13fa5a08da
docs: record personal workflow deployment
2026-05-26 11:21:25 +08:00
5290812353
feat: add personal canvas workflows
2026-05-26 11:18:28 +08:00
bbd1f08f7c
docs: record expanded suggestions deployment
2026-05-26 10:51:10 +08:00
7f3a6cc429
fix: expand canvas suggestions
2026-05-26 10:48:39 +08:00
054f082323
docs: record suggestion rotation deployment
2026-05-26 10:42:22 +08:00
d01fdc5508
fix: rotate short canvas suggestions
2026-05-26 10:38:51 +08:00
97f617197c
docs: record person guard deployment
2026-05-26 10:25:13 +08:00