Everything that ships lands here. Newest first. Built from the repo
CHANGELOG.md so marketing and the app stay in sync.
Unreleased
Added
- Capture module split (`static/js/capture/camera.js`, `photo.js`) with **in-app camera only**, snap → confirm → upload.
- Capture busy state **uploading** (before photo) separate from grading.
- Run detail returns short-lived **before_url / after_url** for resume thumbs.
- Product score = **quality% × chore max points** (API: `score`, `max_points`, `quality_pct`).
Changed
- Beta welcome manifesto: dorm competition line now mentions **$10 team fee** and real cash incentive next season.
- **Sentry** fully configured from `SENTRY_DSN` (errors, traces, logging integration); optional `/api/sentry-debug` behind `ENABLE_SENTRY_DEBUG`.
- Finalise awards **proportional** points (not always full chore value on pass).
- Gemini multimodal timeout raised; offline fallback says Coach Jordan; client shows degraded banner.
- Photo library / stock upload path **removed** from capture UI (in-app only).
Fixed
- Anti-cheat no longer flags the same run’s before vs after (exclude `run_id` from house scan).
- **Camera blocked live:** reverse proxy had `Permissions-Policy: camera=()`; app host now allows `camera=(self)`. Capture boot/camera failures surface in-page (not silent).
2026-08-02
Added
- Public **changelog** page (`/changelog`) linked from marketing nav/footer and the app arena; rendered from root `CHANGELOG.md` (agents append every change).
- Marketing **trash-talk wall** with all approved catchphrases from brand voice.
- Free public **beta manifesto** on marketing home and app welcome banner.
- Contact email **nemo@justadestination.com** on public surfaces.
- **v1 colour skins** (Slate, Nordic Forest, Cyber, Barbie Pink, Baby Blue) as app themes.
- Welcome banner, SMS/join invite links (`/?join=`), add EXTRA chore to the wheel.
- Live **camera capture** dialog (getUserMedia) with library fallback.
- Coach Jordan naming (UI + prompts); still SpaceXAI-backed when key present.
- Inter-house **trash talk** + rivals API/UI; SQL `009_trash_talk.sql`.
- EPL-style **league table** centered on your house with level colour skins.
- House settings behind ⚙️; pets/kids removed from UI.
- Custom chore add form under the weekly rota.
Changed
- Contact email → **nemo@justadestination.com** on marketing surfaces.
- Rules page: human review / bank / retry wording (no longer “not appealable”).
- Campus create flow: searchable campus datalist to reduce league splintering.
Fixed
- Capture resume: `GET /api/chores/runs/{id}` + real points from ledger.
- Steal flow ownership and `?steal=1` UI path.
- Review escalate enum `PENDING_REVIEW`; admin resolve queue.
- Week roll cron + Scheduler (Sunday 00:05 UTC).
2026-08-01
Added
- Foundation ops checklist; Cloud Scheduler week-roll job.
- Admin human review resolve (uphold / override).
- Settings + injured reserve (bench) API and UI.
Fixed
- `ChoreStatus.PENDING_REVIEW` in Python enum.
- Logo path for marketing banner.
- Rota/steal CSS on live dashboard.
- Service worker stale cache issues (static-only precache).
2026-07
Added
- ChorHaus v2 rebuild: FastAPI + Jinja, own Google OAuth, schema `chorhaus_v2`.
- Chore wheel, Gemini grading, dHash anti-cheat, scoring ledger, marketing/app hosts.
- Mechanics as single source of truth (`content/mechanics.toml`).
- 2026-08-04: [RESOLVED G1] Python 3.10 tomllib compatibility fallback in backend/content.py and backend/services/wheel.py
- 2026-08-04: [RESOLVED G2] SQLite local dev database fallback and HTTP 200 health check readiness probe
- 2026-08-04: [RESOLVED G3] Standardized naive utcnow() to timezone-aware UTC datetime across ORM models and services
- 2026-08-04: [RESOLVED G4] Epoch-based week_index calculation for continuous parity monotonicity across year boundaries
- 2026-08-04: [RESOLVED G5] Standardized stealing_open and week boundaries to explicit UTC today in backend/services/rota.py
- 2026-08-04: [RESOLVED G6] Weekly chronicle generation with ChoreAttempt join, GET /api/house/chronicle route, and week roll cron hook
- 2026-08-04: [RESOLVED G7] Implemented POST /api/social/dataset/contribute endpoint with automatic 50pt DATASET_BOUNTY point awards
- 2026-08-04: [RESOLVED G8] Dynamic Gemini AI valuation (20-150 pts) for custom user-added chores
- 2026-08-04: [RESOLVED G9] Added Stripe billing router with checkout-session and webhook verification
- 2026-08-04: [RESOLVED G10] Created seed locations.toml catalog and exposed GET /api/locations/search endpoint
- 2026-08-04: [RESOLVED G11] Added theme column to User model, PATCH /api/house/me/theme route, and server-rendered data-theme
- 2026-08-04: [RESOLVED G12] Created shared conftest.py fixtures and test_chores_flow.py HTTP integration tests
- 2026-08-04: [RESOLVED G13] Rule A15 lifespan startup hook for Fleet Command registration and brdkst service.up event
- 2026-08-04: [RESOLVED G14] Created scripts/check_migrations.py database verifier and tests/test_migration_schema.py
- 2026-08-04: [RESOLVED G15] Created scripts/verify.sh automated smoke runner and updated DEPLOY.md