Validation: #33 Upload tab with ActiveStorage + MinIO

validation-33-2026-05-25 Doc

validation pass

Validation: #33 Upload tab with ActiveStorage + MinIO

Verdict: PASS

PR

PR #36 (squash merged)

Checks

  • QA review: APPROVED (blocker resolved, all 5 nits fixed)
  • Upload model with ActiveStorage + MinIO backend in prod, local disk in dev
  • Server-side content type + file size validation on Upload model
  • Photos tab (5th tab) with auto-submit Stimulus controller
  • Editable captions, thumbnail list, full-size show with display variant
  • Show Inactive toggle on Properties manage tab (filter Stimulus controller)
  • Active checkbox on property edit form
  • N+1 fixed with Upload.with_attached_photo eager loading
  • Alt attributes on all image tags
  • CSS hardcoded hex replaced with --color-danger-light token
  • Test host config fix (config.hosts.clear for RAILS_ENV=test)
  • Full test suite: 52 specs, 0 failures (13 new upload specs)
  • Docs updated: app-architecture, ROADMAP, hotwire, infrastructure, networking
  • Dev proxy fix: X-Forwarded-Proto hardcoded to https for Tailscale Funnel
  • pal-e-deployments: MinIO env vars added to prod deployment-patch + init container