Commit graph

100 commits

Author SHA1 Message Date
cschlaefke
d390b60bd6 test(auth): add web E2E tests for KTO-01 criteria 1-10 against the Flutter web build
Refs #38

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 10:42:28 +01:00
cschlaefke
2542679797 test(auth): add throttle and SMTP-down spike projects, start-throttle-gotrue.sh
Refs #38

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 10:30:15 +01:00
cschlaefke
f302c56904 test(auth): add Playwright project with api tests for KTO-01 (GoTrue, Mailpit, db helper)
Refs #38

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 10:29:18 +01:00
cschlaefke
b04a655d15 chore(mcp): add Outline MCP server to project config
All checks were successful
CI / flutter (pull_request) Successful in 1m22s
CI / web-build (pull_request) Successful in 57s
CI / supabase (pull_request) Successful in 3s
CI / supabase-tests (pull_request) Successful in 32s
Refs #39

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 10:24:28 +01:00
6bcbaff95a Merge pull request 'feat(auth): KTO-01 Passwort zurücksetzen (01c) (4/4)' (#36) from feature/1-01c-passwort-reset into main
All checks were successful
CI / flutter (push) Successful in 1m18s
CI / web-build (push) Successful in 1m5s
CI / supabase (push) Successful in 3s
CI / supabase-tests (push) Successful in 32s
Reviewed-on: #36
2026-11-03 09:21:43 +00:00
cschlaefke
7c2f684098 fix(auth): address review findings for password reset
All checks were successful
CI / flutter (pull_request) Successful in 1m13s
CI / web-build (pull_request) Successful in 55s
CI / supabase (pull_request) Successful in 3s
CI / supabase-tests (pull_request) Successful in 30s
Finish the recovery guard only after the password change, mark the change
in the repository so a late userUpdated event is harmless, keep the form
locked after success, carry from through the reset check-email page,
share the password error texts and focus the continue button.

Refs #1

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 09:58:31 +01:00
cschlaefke
3b2995463e docs(auth): document 01c deviations, reset mode route and AppBanner actionEnabled
Refs #1

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 09:50:42 +01:00
cschlaefke
fd4183c202 fix(auth): restore the reviewed success text for the password change
Refs #1

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 09:50:42 +01:00
cschlaefke
87c0d7d1ec feat(auth): add password reset (forgot password, recovery link, new password)
ForgotPasswordScreen with neutral reaction (F12), CheckEmail reset mode on
its own path, recovery link handling and ResetPasswordScreen with the
recovery guard held until the user confirms the success message. Carries
the from parameter between login, register and forgot password. Removes
the route placeholders.

Refs #1

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 09:47:03 +01:00
cschlaefke
553a2b67cd feat(core): let AppBanner disable its action instead of hiding it
Refs #1

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 09:47:03 +01:00
86bcd25f30 Merge pull request 'feat(auth): KTO-01 Anmeldung (01b) – LoginScreen (3/4)' (#35) from feature/1-01b-anmeldung into main
All checks were successful
CI / flutter (push) Successful in 1m11s
CI / web-build (push) Successful in 54s
CI / supabase (push) Successful in 3s
CI / supabase-tests (push) Successful in 30s
Reviewed-on: #35
2026-11-03 08:33:35 +00:00
cschlaefke
bb63a9cb61 chore(agents): allow docs-writer to use the connected Outline MCP
All checks were successful
CI / flutter (pull_request) Successful in 1m10s
CI / web-build (pull_request) Successful in 53s
CI / supabase (pull_request) Successful in 3s
CI / supabase-tests (pull_request) Successful in 29s
Refs #1

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 09:10:33 +01:00
cschlaefke
57305dad4b fix(auth): address review findings for login
Fixed-wording tests for the generic credentials error, redacted toString for
login/register state, shared AuthFailure.isRetryable, autofill context
finished even when the router removes the screen, stricter from validation
(encoded and control-character variants), more widget tests.

Refs #1

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 09:07:56 +01:00
cschlaefke
dd91c078e0 feat(auth): add login screen with unconfirmed-account resend and safe redirect
KTO-01 Kriterien 5, 6 und 7 (01b): LoginController/State/Screen replace the
/login placeholder. Generic failure text for wrong email and password,
resend via ResendController (ResendOrigin.login), throttle and offline
banners, autofill hints, double-submit guard, validated from redirect.

Refs #1

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 09:00:53 +01:00
fa7238a2ef Merge pull request 'feat(auth): KTO-01 Registrierung (01a) – Screens, Auth-Domäne, Formular-Komponenten (2/4)' (#34) from feature/1-01a-registrierung into main
All checks were successful
CI / flutter (push) Successful in 1m15s
CI / web-build (push) Successful in 1m2s
CI / supabase (push) Successful in 4s
CI / supabase-tests (push) Successful in 49s
Reviewed-on: #34
2026-11-03 07:56:15 +00:00
cschlaefke
239d0e1ac2 fix(auth): address review findings for registration
All checks were successful
CI / flutter (pull_request) Successful in 1m16s
CI / web-build (pull_request) Successful in 53s
CI / supabase (pull_request) Successful in 3s
CI / supabase-tests (pull_request) Successful in 32s
- expose legal links to screen readers on web
- allow only http(s) legal URLs, prevent double submit
- detect transport errors without runtimeType, keep extra in memory
- ship third-party license text, document decisions

Refs #1

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 00:47:42 +01:00
cschlaefke
e632da2344 feat(auth): add registration, check-email and email-link screens
Implements KTO-01 criteria 1-4, 10 and 11 (client part).

Refs #1

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 00:27:16 +01:00
cschlaefke
54337ffc59 feat(auth): add auth domain, repository, validators and router redirects
Refs #1

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 00:09:47 +01:00
cschlaefke
ec8b2ab4c1 feat(ui): add auth form components and screen layouts
Refs #1

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 00:03:11 +01:00
cschlaefke
3158abc344 docs(auth): use trim_ws in spec
Refs #1

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-02 23:58:11 +01:00
6891b7cb03 Merge pull request 'feat(auth): KTO-01 Backend – Registrierungsregeln, Auth-Konfiguration, Mailvorlagen (1/4)' (#33) from feature/1-auth-registrierung-anmeldung into main
All checks were successful
CI / flutter (push) Successful in 1m7s
CI / web-build (push) Successful in 55s
CI / supabase (push) Successful in 3s
CI / supabase-tests (push) Successful in 34s
Reviewed-on: #33
2026-11-02 22:57:49 +00:00
cschlaefke
9f36cd0c33 feat(db): reject U+200B in display names
All checks were successful
CI / flutter (pull_request) Successful in 1m3s
CI / web-build (pull_request) Successful in 54s
CI / supabase (pull_request) Successful in 3s
CI / supabase-tests (pull_request) Successful in 34s
Refs #1

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-02 23:51:56 +01:00
cschlaefke
fb0f4b9d3f fix(db): trim all Unicode whitespace in display name, harden templates
All checks were successful
CI / flutter (pull_request) Successful in 1m3s
CI / web-build (pull_request) Successful in 58s
CI / supabase (pull_request) Successful in 3s
CI / supabase-tests (pull_request) Successful in 34s
- add public.trim_ws mirroring Dart String.trim
- require JSON string metadata, tolerate non-string locale in templates
- add tests, align docs with review

Refs #1

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-02 23:48:01 +01:00
cschlaefke
47721a48e8 docs(auth): align spec with spike results and add AUTH-CFG-25
Refs #1

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-02 23:26:03 +01:00
cschlaefke
59a47c5a5d feat(auth): configure Supabase Auth and add de/en mail templates
Adds AUTH-CFG settings, confirmation/recovery templates and
docs/auth-konfiguration.md (KTO-01 criteria 1, 3, 4, 7, 8, 11).

Refs #1

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-02 23:23:06 +01:00
cschlaefke
395816609f feat(db): enforce registration rules and add terms_version
Adds display name validation, terms_version, locale sync trigger and
pgTAP tests (KTO-01 criteria 1, 2, 10, 11). Includes GoTrue spike results.

Refs #1

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-02 22:36:21 +01:00
cschlaefke
450af82234 Merge branch 'main' into feature/1-auth-registrierung-anmeldung 2026-11-02 22:21:24 +01:00
29f22605a1 Merge pull request 'feat(app): App-Fundament – Flutter-Gerüst und Supabase-Konfiguration' (#32) from feature/31-app-fundament into main
All checks were successful
CI / flutter (push) Successful in 1m8s
CI / web-build (push) Successful in 55s
CI / supabase (push) Successful in 3s
CI / supabase-tests (push) Successful in 31s
Reviewed-on: #32
2026-11-02 21:21:02 +00:00
cschlaefke
51ab6e2667 ci: run supabase-tests against the runner's docker-in-docker daemon
All checks were successful
CI / flutter (pull_request) Successful in 1m5s
CI / web-build (pull_request) Successful in 53s
CI / supabase (pull_request) Successful in 3s
CI / supabase-tests (pull_request) Successful in 35s
Refs #31

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-02 22:05:08 +01:00
cschlaefke
04d9d01395 docs: update PostgreSQL version to 17 in CLAUDE.md
Some checks failed
CI / flutter (pull_request) Successful in 1m3s
CI / web-build (pull_request) Successful in 1m4s
CI / supabase (pull_request) Successful in 5s
CI / supabase-tests (pull_request) Failing after 36s
Refs #31

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-02 21:57:09 +01:00
cschlaefke
2ff657c03f fix(supabase): use db.major_version 17
Some checks failed
CI / flutter (pull_request) Successful in 1m0s
CI / web-build (pull_request) Successful in 52s
CI / supabase (pull_request) Successful in 3s
CI / supabase-tests (pull_request) Failing after 17s
Refs #31

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-02 21:48:16 +01:00
cschlaefke
9fc3ed0a32 fix(supabase): use db.major_version 15 accepted by CLI 3.0.0
Some checks failed
CI / flutter (pull_request) Successful in 1m1s
CI / web-build (pull_request) Successful in 51s
CI / supabase (pull_request) Successful in 3s
CI / supabase-tests (pull_request) Failing after 18s
The CLI rejects 16; 15 matches the self-hosted Supabase image.

Refs #31

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-02 21:40:14 +01:00
cschlaefke
b03d771869 fix(app): address review findings for foundation
Some checks failed
CI / flutter (pull_request) Successful in 2m29s
CI / web-build (pull_request) Successful in 53s
CI / supabase (pull_request) Successful in 3s
CI / supabase-tests (pull_request) Failing after 23s
- add INTERNET permission, iOS localizations, html lang
- make focus ring visible on FilledButton
- neutral SITE_URL default, idempotent logger configure

Refs #31

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-02 20:36:58 +01:00
cschlaefke
568f425ef7 ci: install pinned Flutter SDK from git tag instead of missing image
Refs #31

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-02 20:24:50 +01:00
cschlaefke
adf61b3ba2 test: add pumpApp helpers, fakes and coverage matrix template
Refs #31

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-02 20:21:55 +01:00
cschlaefke
936ca7bd4b feat(theme): add Material 3 light/dark theme base and design tokens
Refs #31

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-02 20:19:19 +01:00
cschlaefke
77c71c0169 ci: run Flutter and web build checks from app/
Refs #31

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-02 20:18:58 +01:00
cschlaefke
e5df79ee0a feat(app): add Flutter scaffold with config, logging, routing and l10n
Refs #31

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-02 20:17:24 +01:00
cschlaefke
c498db5366 chore(supabase): add config.toml and ignore app env files
Refs #31

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-02 20:12:09 +01:00
cschlaefke
e56f75a5e1 docs(auth): add spec for KTO-01 registration, login and password reset
Refs #1

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-02 20:10:07 +01:00
c0e89a806f Merge pull request 'chore: setup-check und Katalog-Test bereinigen' (#30) from chore/setup-check-and-catalog-test into main
Some checks failed
CI / flutter (push) Failing after 4s
CI / supabase (push) Successful in 2s
CI / supabase-tests (push) Failing after 21s
2026-11-02 18:17:11 +00:00
cschlaefke
079eb0b576 test(catalog): clear seed data before catalog count assertions
Some checks failed
CI / flutter (pull_request) Failing after 4s
CI / supabase (pull_request) Successful in 3s
CI / supabase-tests (pull_request) Failing after 22s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-02 19:16:17 +01:00
cschlaefke
4b2c7fe542 chore(scripts): drop OUTLINE_URL from setup check
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-02 19:16:17 +01:00
f15810ecf6 Merge pull request 'docs(requirements): R1 intake – backlog, clarifications, KTO-11, QUE-09' (#27) from docs/r1-intake into main
Some checks are pending
CI / flutter (push) Waiting to run
CI / supabase (push) Waiting to run
CI / supabase-tests (push) Waiting to run
Reviewed-on: #27
2026-11-02 15:27:14 +00:00
cschlaefke
f25bd85f53 docs(requirements): note resolved assumptions in changelog
Some checks failed
CI / flutter (pull_request) Failing after 3s
CI / supabase (pull_request) Successful in 2s
CI / supabase-tests (pull_request) Failing after 23s
Refs #25, #28, #29

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 16:15:03 +01:00
cschlaefke
9880a6fd09 docs(requirements): resolve follow-up questions N1-N14
Some checks failed
CI / flutter (pull_request) Failing after 4s
CI / supabase (pull_request) Successful in 3s
CI / supabase-tests (pull_request) Failing after 20s
Decisions on the follow-up questions from the R1 intake are recorded
in requirements/r1-klaerungen.md and applied to the acceptance
criteria, requirements and backlog: settings (KTO-11), dashboard
(QUE-09, new label epic/querschnitt), catalog seed without third-party
covers (KAT-05), per-user dedup of BGG import reports (SAM-08) and the
confirmed PAR-08 rule. No open questions remain for R1.

Refs #1, #2, #13, #22, #23, #25, #28, #29

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 16:14:31 +01:00
cschlaefke
9d59244655 docs(requirements): apply R1 clarifications and add KTO-11, QUE-09
Some checks failed
CI / flutter (pull_request) Failing after 3s
CI / supabase (pull_request) Successful in 3s
CI / supabase-tests (pull_request) Failing after 20s
All 48 open questions from the R1 intake are answered in
requirements/r1-klaerungen.md. Acceptance criteria, requirements and
backlog are updated accordingly; removed criteria stay marked as
"entfällt" so references keep their numbers. New stories KTO-11
(settings, #28) and QUE-09 (dashboard, #29). backlog.md lists the data
model changes for the architect and new open questions N1-N14.

Refs #2, #25, #28, #29

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 15:52:59 +01:00
cschlaefke
56e57afd43 docs(requirements): add R1 backlog and story draft
Some checks failed
CI / flutter (pull_request) Failing after 3m35s
CI / supabase (pull_request) Successful in 55s
CI / supabase-tests (pull_request) Failing after 1m32s
Intake of the 26 R1 stories from requirements/20-r1-akzeptanzkriterien.md
into Forgejo issues #1-#26. backlog.md maps story IDs to issues, stages
R1.1-R1.4, dependencies and the 48 open questions.

Refs #1, #2, #3, #4, #5, #6, #7, #8, #9, #10, #11, #12, #13, #14, #15,
#16, #17, #18, #19, #20, #21, #22, #23, #24, #25, #26

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 14:52:06 +01:00
cb2c75b0f8 .mcp.json aktualisiert
Some checks are pending
CI / flutter (push) Waiting to run
CI / supabase (push) Waiting to run
CI / supabase-tests (push) Waiting to run
2026-11-02 11:23:55 +00:00
cschlaefke
317634dac5 chore: initial project kit
Some checks are pending
CI / flutter (push) Waiting to run
CI / supabase (push) Waiting to run
CI / supabase-tests (push) Waiting to run
2026-11-02 12:14:09 +01:00