No description
Find a file
Simon Kuehn 6241398390 feat: camera capture and multi-photo upload at article ingest
- Ingest page redesigned: camera modal (getUserMedia + capture fallback
  for mobile), mandatory search photo with client-side validation,
  optional extra photos grid with per-photo remove button
- Camera modal: live video preview, capture → preview → confirm/retake
  flow; stops stream on modal close; falls back to native file picker
  if getUserMedia is unavailable
- ManualIngestController: uploads extra photos via PhotoService::uploadRaw(),
  stores [{storagePathId, filename}] in job inputData as extraPhotos
- PhotoService::attachExtra(): attach already-stored file to an article
  by StoragePath ID + filename
- DraftArticleHandler: after creating the article, attaches extra photos
  in sort order; errors are best-effort (pipeline not aborted)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 09:16:04 +00:00
.gitea/workflows feat: add Gitea Actions CI (CS Fixer, PHPStan, Pest + migrations) 2026-05-14 04:25:50 +00:00
bin chore: add tooling config, test bootstrap, env templates and docs 2026-05-17 22:44:16 +00:00
config feat: photo gallery on article detail with upload, sort and set-main 2026-05-18 09:10:59 +00:00
docker fix: raise PHP-FPM pool to 30 workers to prevent SSE starvation 2026-05-18 09:02:34 +00:00
docs/superpowers chore: add tooling config, test bootstrap, env templates and docs 2026-05-17 22:44:16 +00:00
migrations feat: replace Mistral web_search with Tavily for specs research 2026-05-18 08:35:52 +00:00
public feat: live pipeline status notifications via SSE 2026-05-18 07:36:03 +00:00
src feat: camera capture and multi-photo upload at article ingest 2026-05-18 09:16:04 +00:00
templates feat: camera capture and multi-photo upload at article ingest 2026-05-18 09:16:04 +00:00
tests chore: add tooling config, test bootstrap, env templates and docs 2026-05-17 22:44:16 +00:00
translations feat: photo gallery on article detail with upload, sort and set-main 2026-05-18 09:10:59 +00:00
.editorconfig chore: add tooling config, test bootstrap, env templates and docs 2026-05-17 22:44:16 +00:00
.env feat: replace Mistral web_search with Tavily for specs research 2026-05-18 08:35:52 +00:00
.env.dev chore: add tooling config, test bootstrap, env templates and docs 2026-05-17 22:44:16 +00:00
.env.test chore: add tooling config, test bootstrap, env templates and docs 2026-05-17 22:44:16 +00:00
.gitignore feat: add PHPStan level 9, PHP CS Fixer, Pest; fix docker user=1000 to avoid root-owned files 2026-05-14 04:25:30 +00:00
.php-cs-fixer.dist.php chore: add tooling config, test bootstrap, env templates and docs 2026-05-17 22:44:16 +00:00
.php-cs-fixer.php feat: implement Plan 2 — Article Management API 2026-05-14 05:19:20 +00:00
composer.json feat: admin panel, Mistral client, attribute management, API key command 2026-05-17 20:15:13 +00:00
composer.lock feat: admin panel, Mistral client, attribute management, API key command 2026-05-17 20:15:13 +00:00
docker-compose.override.yml feat: add Docker Compose environment with Caddy, PostgreSQL 17, Redis, PHP-FPM workers 2026-05-14 04:14:55 +00:00
docker-compose.yml fix: raise PHP-FPM pool to 30 workers to prevent SSE starvation 2026-05-18 09:02:34 +00:00
phpstan.neon feat: implement Plan 2 — Article Management API 2026-05-14 05:19:20 +00:00
phpunit.dist.xml chore: add tooling config, test bootstrap, env templates and docs 2026-05-17 22:44:16 +00:00
phpunit.xml.dist feat: add PHPStan level 9, PHP CS Fixer, Pest; fix docker user=1000 to avoid root-owned files 2026-05-14 04:25:30 +00:00
symfony.lock feat: admin panel, Mistral client, attribute management, API key command 2026-05-17 20:15:13 +00:00