Changelog

Public beta

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