- Add dorny/paths-filter to detect changes per component
- Run only relevant tests (backend/frontend/frontend-mobile)
- Build only changed Docker images
- Fix Docker container removal error with --remove-orphans
- Add conditional deploy based on actual changes
Backend uses Jest, not Vitest — --run is unrecognized. --ci is the
Jest equivalent that disables watch mode and exits cleanly. Frontend
already uses --run --reporter=basic (Vitest) which is correct.
Verified locally: backend `npm test -- --ci` → 17/17 passing.
Co-Authored-By: Claude <noreply@anthropic.com>
The lifted screen-state refactor in PublicView broke App.test.jsx (5
failures): when no `onScreenChange` prop was passed, the click handler
called a no-op, so the screen never advanced from 'home' to 'search'
and the search input was never rendered.
Fix: make screen state uncontrolled-by-default. PublicView owns its
own `useState('home')` and uses the lifted props only when App.jsx
provides them. Same back-compat shape as before, BottomNav still
drives the screen via controlled props in the real app.
Also: vitest defaults to watch mode, which hangs the CI test step
forever. Updated docker.yaml to pass `--run --reporter=basic` so the
job exits with a real pass/fail signal.
Local verification: `npm test -- --run` → 6/6 passing.
Co-Authored-By: Claude <noreply@anthropic.com>