diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..939d598 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,85 @@ +# Changelog + +All notable changes to **Scrum4Me** are documented in this file. + +The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +--- + +## [Unreleased] + +### Added +- A11y: rate-limit `enforceUserRateLimit(scope, userId)` helper applied to all + high-value mutation paths (PBI/Story/Task/Todo/Sprint/Product/Token create, + Claude job enqueue, answerQuestion, story-log POST, avatar upload). + ([#86](https://github.com/madhura68/Scrum4Me/pull/86)) +- Sentry error-monitoring scaffolding (`@sentry/nextjs`) with no-op fallback + when DSN is not configured. Activate via `NEXT_PUBLIC_SENTRY_DSN` in Vercel + env-vars. ([#85](https://github.com/madhura68/Scrum4Me/pull/85)) + +### Changed +- A11y: `aria-selected` on PBI-cards replaced with `aria-pressed` (correct + ARIA role-attribute pairing). ([#88](https://github.com/madhura68/Scrum4Me/pull/88)) +- A11y: form-label associations (`htmlFor` + `id`) on all happy-path dialogs + (Story/Task + Promote-PBI/Story); auth pages get `
` landmark. + ([#87](https://github.com/madhura68/Scrum4Me/pull/87)) +- A11y: tap-targets ≥28×28 px on hover-icon-buttons (PBI ✎ + ×, Story ✎, + dashboard product ✎). ([#88](https://github.com/madhura68/Scrum4Me/pull/88)) + +--- + +## [0.9.0] — 2026-05-04 + +[GitHub Release](https://github.com/madhura68/Scrum4Me/releases/tag/v0.9.0) + +### Added +- **PBI-11: Mobile-shell met landscape-lock** ([#81](https://github.com/madhura68/Scrum4Me/pull/81)): + - Aparte route group `app/(mobile)/m/{settings,pair,products}/...` met eigen + layout (zonder NavBar/StatusBar/MinWidthBanner) + - `LandscapeGuard` (rotate-overlay in portrait), `MobileTabBar` (3 lucide-iconen) + - PWA-manifest met `"orientation": "landscape"` + - UA-redirect bij login: telefoons (`Mobi`-substring) → `/m/products/[active]/solo`, + tablets en desktop → `/dashboard` + - Gedeelde `lib/auth-guard.ts` `requireSession()` helper, hergebruikt door beide layouts + - Mobile-fullscreen voor entity-dialogen via gedeelde `entityDialogContentClasses` +- Sprint Product-Backlog kolom: filter-popover (prioriteit + status) en + edit-iconen op PBI/story/task-rijen. ([#79](https://github.com/madhura68/Scrum4Me/pull/79)) +- Edit-icoon op product-card in dashboard (consistent met PBI/story/task-pattern). + ([#83](https://github.com/madhura68/Scrum4Me/pull/83)) +- v1.0 readiness checklist in `docs/plans/v1-readiness.md`. + ([#82](https://github.com/madhura68/Scrum4Me/pull/82)) + +### Changed +- Refactor `app/(app)/layout.tsx` om gedeelde `requireSession()` te gebruiken + (gedrag onveranderd). ([#81](https://github.com/madhura68/Scrum4Me/pull/81)) +- `/m/pair` filesystem-verhuisd uit `(app)/` naar `(mobile)/` — URL onveranderd. + ([#81](https://github.com/madhura68/Scrum4Me/pull/81)) + +--- + +## [0.4.0] — eerder + +### Added +- M9 — Actief Product Backlog: persistente actieve PB-keuze, gesplitste + navigatie, disabled-states bij geen actief product + +--- + +## [0.3.1] — eerder + +Initiële stabilisatie-release. + +--- + +## Pre-0.3.x + +Foundation-werk (M0 t/m M8) is niet retroactief in dit changelog opgenomen. +Voor de volledige milestone-historie zie [docs/backlog/index.md](./docs/backlog/index.md). + +--- + +[Unreleased]: https://github.com/madhura68/Scrum4Me/compare/v0.9.0...HEAD +[0.9.0]: https://github.com/madhura68/Scrum4Me/releases/tag/v0.9.0 +[0.4.0]: https://github.com/madhura68/Scrum4Me/commit/615f0c8 +[0.3.1]: https://github.com/madhura68/Scrum4Me/commit/ecc05dd diff --git a/README.md b/README.md index 1f2da30..4de7224 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,7 @@ Scrum4Me biedt een lichtgewicht, web-based oplossing voor het beheren van sprint ## Documentation +- [CHANGELOG.md](CHANGELOG.md) — release-historie (Keep a Changelog) - [docs/INDEX.md](docs/INDEX.md) — generated index of all docs (front-matter driven) - [docs/glossary.md](docs/glossary.md) — domain terms (PBI, Story, MCP-job, etc.) - [CLAUDE.md](CLAUDE.md) / [AGENTS.md](AGENTS.md) — agent instructions @@ -152,7 +153,7 @@ npm run dev npm test ``` -Verwacht: alle 69 tests slagen, 0 failures. +Verwacht: alle 445 tests slagen, 0 failures. **API curl-tests (vereist lopende dev server + API token):** @@ -175,7 +176,7 @@ Handmatige generatie: npm run db:erd ``` -Tijdens lokale development draait `npm run dev` naast Next.js ook `npm run db:erd:watch`. Bij wijzigingen in `prisma/schema.prisma` wordt `docs/assets/erd.svg` automatisch opnieuw gegenereerd. +Optioneel: `npm run db:erd:watch` parallel aan `npm run dev` om bij wijzigingen in `prisma/schema.prisma` `docs/assets/erd.svg` automatisch opnieuw te genereren. Gebruik `npx prisma db push` alleen om het schema naar de database te synchroniseren. Gebruik `npm run db:erd` om lokaal Prisma Client en de ERD te genereren. Gebruik in CI uitsluitend `npx prisma generate --generator client`. @@ -198,8 +199,11 @@ Zie [.env.example](.env.example). | Variabele | Verplicht | Doel | |---|---:|---| | `DATABASE_URL` | Ja | PostgreSQL connection string voor Prisma | -| `DIRECT_URL` | Nee | Directe Neon connection string voor migraties | +| `DIRECT_URL` | Nee | Directe Neon connection string voor migraties (Prisma `directUrl`) | | `SESSION_SECRET` | Ja | Minimaal 32 tekens; gebruikt door iron-session | +| `CRON_SECRET` | Productie | Bearer-secret voor `/api/cron/*` routes — required als crons aan staan | +| `NEXT_PUBLIC_SENTRY_DSN` | Nee | Sentry DSN — zonder is de SDK een no-op | +| `SENTRY_ORG` / `SENTRY_PROJECT` / `SENTRY_AUTH_TOKEN` | Nee | Source-map upload tijdens build | | `NODE_ENV` | Nee | Wordt door Node/Vercel gezet | Vercel Analytics gebruikt geen project-specifieke environment variabele in deze app; de component staat in `app/layout.tsx`.