074118db69
docs(catalog): note default privileges, studio role and schema test count
...
Refs #2
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 13:08:49 +00:00
34eaab12e1
docs(catalog): add technical spec for KAT-05 catalog data
...
Refs #2
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 13:02:24 +00:00
455b3bf708
Merge pull request 'fix(auth): Semantics-Knoten im breiten Layout trennen (a11y Web)' ( #48 ) from fix/41-semantics-split into main
...
CI / flutter (push) Successful in 1m16s
CI / web-build (push) Successful in 55s
CI / supabase (push) Successful in 4s
CI / supabase-tests (push) Successful in 32s
CI / e2e (push) Successful in 4m11s
Reviewed-on: #48
2026-11-03 12:32:33 +00:00
cschlaefke
ffc30db2e5
fix(auth): address review findings for semantics split
...
CI / flutter (pull_request) Successful in 1m14s
CI / web-build (pull_request) Successful in 53s
CI / supabase (pull_request) Successful in 3s
CI / supabase-tests (pull_request) Successful in 30s
CI / e2e (pull_request) Successful in 2m56s
Refs #41
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 13:17:09 +01:00
cschlaefke
eb63636fd9
test(e2e): click buttons via getByRole instead of keyboard helper
...
Removes pressFirstButton; the web build now exposes real button nodes.
Refs #41
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 13:07:01 +01:00
cschlaefke
cda9417353
fix(auth): keep heading, text and button as separate semantics nodes in the wide card
...
Card is a semantics container without explicitChildNodes, so on >= 600 dp
(web/tablet) title, text and button folded into one node. AppFormScaffold now
wraps the card content in Semantics(explicitChildNodes: true).
Refs #41
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 13:07:01 +01:00
d8f47f0827
Merge pull request 'fix(auth): SMTP-Fehler wie Erfolg behandeln (Konten-Seitenkanal, F13)' ( #47 ) from fix/37-smtp-neutral into main
...
CI / flutter (push) Successful in 1m15s
CI / web-build (push) Successful in 56s
CI / supabase (push) Successful in 3s
CI / supabase-tests (push) Successful in 32s
CI / e2e (push) Successful in 3m5s
Reviewed-on: #47
2026-11-03 11:58:11 +00:00
cschlaefke
97222ebb5b
chore(auth): regenerate generated files after doc comment changes
...
CI / flutter (pull_request) Successful in 1m13s
CI / web-build (pull_request) Successful in 59s
CI / supabase (pull_request) Successful in 3s
CI / supabase-tests (pull_request) Successful in 31s
CI / e2e (pull_request) Successful in 2m54s
Refs #37
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 12:38:42 +01:00
cschlaefke
3805c71225
fix(auth): address review findings for smtp-neutral handling
...
CI / flutter (pull_request) Failing after 44s
CI / web-build (pull_request) Successful in 51s
CI / supabase (pull_request) Successful in 3s
CI / supabase-tests (pull_request) Successful in 29s
CI / e2e (pull_request) Successful in 2m44s
Refs #37
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 12:24:25 +01:00
cschlaefke
de093b68ed
docs(auth): renumber SMTP risk to R17 (R16 was taken)
...
Refs #37
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 12:03:11 +01:00
cschlaefke
7d094a6732
fix(auth): treat SMTP failures like success on enumeration-sensitive calls
...
Refs #37
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 12:03:04 +01:00
f8774359ee
Merge pull request 'chore(mcp): Outline-MCP per OAuth statt API-Key-Header' ( #45 ) from chore/44-outline-mcp-oauth into main
...
CI / flutter (push) Successful in 1m20s
CI / web-build (push) Successful in 54s
CI / supabase (push) Successful in 3s
CI / supabase-tests (push) Successful in 33s
CI / e2e (push) Successful in 2m45s
Reviewed-on: #45
2026-11-03 10:57:09 +00:00
cschlaefke
083035d2d7
chore(mcp): use OAuth for the Outline MCP server
...
CI / flutter (pull_request) Successful in 1m17s
CI / web-build (pull_request) Successful in 59s
CI / supabase (pull_request) Successful in 3s
CI / supabase-tests (pull_request) Successful in 35s
CI / e2e (pull_request) Successful in 3m9s
Refs #44
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 11:54:31 +01:00
3a9af3b96b
Merge pull request 'chore(mcp): Outline-MCP als Projekt-Server einbinden' ( #40 ) from chore/39-outline-mcp into main
...
CI / flutter (push) Successful in 1m14s
CI / web-build (push) Successful in 53s
CI / supabase (push) Successful in 3s
CI / supabase-tests (push) Successful in 32s
CI / e2e (push) Successful in 2m56s
Reviewed-on: #40
2026-11-03 10:42:59 +00:00
0f7eee80a9
Merge pull request 'test(auth): KTO-01 Playwright-E2E (api, web, throttle) und CI-Job e2e' ( #42 ) from feature/38-auth-e2e into main
...
CI / web-build (push) Waiting to run
CI / supabase (push) Waiting to run
CI / supabase-tests (push) Waiting to run
CI / e2e (push) Blocked by required conditions
CI / flutter (push) Has been cancelled
Reviewed-on: #42
2026-11-03 10:42:01 +00:00
cschlaefke
15ccae2b52
ci(e2e): seed mail templates in dind before supabase start
...
CI / flutter (pull_request) Successful in 1m15s
CI / web-build (pull_request) Successful in 56s
CI / supabase (pull_request) Successful in 3s
CI / supabase-tests (pull_request) Successful in 31s
CI / e2e (pull_request) Successful in 4m34s
Refs #38
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 11:16:13 +01:00
cschlaefke
354fdd4e41
ci(e2e): provide mail templates under remote docker daemon
...
CI / flutter (pull_request) Successful in 1m12s
CI / web-build (pull_request) Successful in 53s
CI / supabase (pull_request) Successful in 3s
CI / supabase-tests (pull_request) Successful in 30s
CI / e2e (pull_request) Failing after 53s
Refs #38
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 11:09:21 +01:00
cschlaefke
aa421b12b0
test(auth): address review findings for e2e
...
CI / flutter (pull_request) Successful in 1m15s
CI / web-build (pull_request) Successful in 53s
CI / supabase (pull_request) Successful in 3s
CI / supabase-tests (pull_request) Successful in 30s
CI / e2e (pull_request) Failing after 3m56s
Refs #38
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 10:55:27 +01:00
cschlaefke
da8305c12d
ci(e2e): address review findings
...
Refs #38
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 10:53:32 +01:00
cschlaefke
23816377a5
ci(e2e): add Playwright e2e job on docker-host with throttle GoTrue and artifacts
...
CI / flutter (pull_request) Successful in 1m15s
CI / web-build (pull_request) Successful in 54s
CI / supabase (pull_request) Successful in 3s
CI / supabase-tests (pull_request) Successful in 30s
CI / e2e (pull_request) Failing after 4m3s
Refs #38
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 10:45:17 +01:00
cschlaefke
ec2d45c319
docs(auth): document E2E setup and SMTP outage spike result
...
Refs #38
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 10:42:28 +01:00
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
...
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
...
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
...
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
...
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
...
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
...
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
...
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
...
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
...
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
...
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
...
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
...
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