Commit graph

129 commits

Author SHA1 Message Date
cschlaefke
9fa91eb684 fix(db): single filter set, filter tests with query, perf guards, evidence docs (KAT-01, 3a review)
All checks were successful
CI / flutter (pull_request) Successful in 1m19s
CI / web-build (pull_request) Successful in 57s
CI / supabase (pull_request) Successful in 11s
CI / supabase-tests (pull_request) Successful in 38s
CI / e2e (pull_request) Successful in 2m59s
Filters are evaluated once into an id set used by both search branches.
Adds tests for age/genre/mechanic filters with a search term, rank 2 vs 3
and null p_limit. approxNormalize uses NFKD. Perf script checks confirm_local
value and unix socket and re-analyzes after rollback. Adds
docs/specs/3-katalog-suche-umsetzung.md (measurements, log check incl. GET
finding), release checklist section 2a and the CSV-only note for alt titles.

Refs #3

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-04 10:39:02 +01:00
cschlaefke
354206c766 Merge remote-tracking branch 'origin/main' into feature/3a-katalog-suche-backend 2026-11-04 10:31:07 +01:00
cschlaefke
c8bbd10d37 test(db): pin runbook 8.2 queries and QUE-04 log assumptions in pgTAP (KAT-01, 3a)
Adds the unchanged runbook queries (rolconfig, pg_available_extensions,
pg_settings) and asserts the settings that keep search terms out of logs.
katalog-pflege 8.2 now states that the three log settings depend on each other.

Refs #3

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-04 10:06:46 +01:00
cschlaefke
0cbe813e5b docs(db): document search, alt titles and image-upgrade check (KAT-01, 3a)
datenmodell-r1, supabase README and katalog-pflege (alt titles, merge step 2b,
normalization check after image upgrades, rate limit and log hints).

Refs #3

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-04 01:40:43 +01:00
cschlaefke
729e51620c test(db): add local search measurement script (KAT-01 B5)
supabase/perf/catalog_search_perf.sql loads synthetic data in one rolled-back
transaction and measures search_catalog_games as anon with RLS (explain and
p50/p95/p99 per case). Lives outside supabase/tests so it never runs in CI.

Refs #3

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-04 01:40:43 +01:00
cschlaefke
683b5c830e perf(db): set-based rank 4 and filters in search_catalog_games, harden tests (KAT-01, 3a)
Rank 4 and the genre/mechanic filters ran a correlated subplan per game
(13 s at 10 000 games). Now: one set-based word coverage, filters as one hashed
IN set, 'like all' patterns, similarity only for hits. Adds pgTAP cases found
by mutation testing (paging by relevance, alt title choice, duplicate words,
mechanic duplicates) and a Deno case for mark characters.

Refs #3

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-04 01:40:43 +01:00
2fa797020a Merge pull request 'docs(catalog): Spec für KAT-01 Spiele suchen (Issue #3)' (#59) from docs/3-kat01-spec into main
All checks were successful
CI / flutter (push) Successful in 1m23s
CI / web-build (push) Successful in 1m3s
CI / supabase (push) Successful in 8s
CI / supabase-tests (push) Successful in 33s
CI / e2e (push) Successful in 2m59s
Reviewed-on: #59
2026-11-04 00:30:08 +00:00
bb0d584f66 Merge pull request 'docs(catalog): Spec für KAT-04 Fehlendes Spiel melden (Issue #13)' (#58) from docs/13-kat04-spec into main
Some checks are pending
CI / flutter (push) Waiting to run
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
Reviewed-on: #58
2026-11-04 00:29:51 +00:00
220dfd195d Merge pull request 'docs(auth): Spec für Anmelde-Einstieg und App Links (Issue #49)' (#55) from docs/49-mobil-login-spec into main
Some checks are pending
CI / flutter (push) Waiting to run
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
Reviewed-on: #55
2026-11-04 00:29:41 +00:00
66655b19a1 Merge pull request 'docs: Release-Checkliste (D1) mit checks.sql, Zugang, Auth/SMTP und Runner' (#54) from docs/d1-release-checkliste into main
Some checks are pending
CI / flutter (push) Waiting to run
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
Reviewed-on: #54
2026-11-04 00:29:28 +00:00
76d54adbd1 Merge pull request 'feat(catalog): Meldungen und Sichtbarkeitsschutz (KAT-05, 2c)' (#57) from feature/2c-katalog-meldungen into main
All checks were successful
CI / flutter (push) Successful in 1m38s
CI / web-build (push) Successful in 1m29s
CI / supabase (push) Successful in 11s
CI / supabase-tests (push) Successful in 38s
CI / e2e (push) Successful in 4m17s
Reviewed-on: #57
2026-11-04 00:18:36 +00:00
9a1d216f40 Merge pull request 'feat(catalog): Spiele zusammenführen per Admin-Funktion (KAT-05, 2b)' (#56) from feature/2b-katalog-zusammenfuehren into main
Some checks failed
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: #56
2026-11-04 00:17:33 +00:00
cschlaefke
976fbe9fe1 feat(db): startbestand tool reads alt_titles column (KAT-01, 3a)
Parses de:Title;en:Title (';' forbidden in titles, errors with line number),
generates an idempotent reconcile for game_alt_titles, adds an info row to
checks.sql and attaches alternative titles to Testspiel B. Regenerated files.

Refs #3

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-04 01:12:25 +01:00
cschlaefke
3bb1c28831 feat(db): catalog search with search_normalize, alt titles and search_catalog_games RPC (KAT-01, 3a)
Adds pg_trgm/unaccent, search_normalize, generated title_search/name_search
columns, game_alt_titles (read-only for API roles), manual_fields key
alt_titles and the RPC search_catalog_games. pgTAP 09_catalog_search covers
rights, normalization, relevance, filters, paging and the runbook snippets.

Refs #3

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-04 01:12:25 +01:00
cschlaefke
9a63985d74 Merge origin/feature/2b-katalog-zusammenfuehren into feature/2c-katalog-meldungen
All checks were successful
CI / flutter (pull_request) Successful in 1m22s
CI / web-build (pull_request) Successful in 58s
CI / supabase (pull_request) Successful in 8s
CI / supabase-tests (pull_request) Successful in 32s
CI / e2e (pull_request) Successful in 2m54s
2026-11-04 00:25:32 +01:00
cschlaefke
500763d5ca docs(db): late references to merged source as known limitation, with test (KAT-05, 2b)
All checks were successful
CI / flutter (pull_request) Successful in 1m34s
CI / web-build (pull_request) Successful in 58s
CI / supabase (pull_request) Successful in 9s
CI / supabase-tests (pull_request) Successful in 36s
CI / e2e (pull_request) Successful in 2m55s
Refs #2

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-04 00:24:49 +01:00
cschlaefke
de830a7148 feat(db): store cleared editions count in game_reports.editions_cleared (KAT-05 2c, Spec-F6) Refs #2
All checks were successful
CI / flutter (pull_request) Successful in 1m16s
CI / web-build (pull_request) Successful in 57s
CI / supabase (pull_request) Successful in 8s
CI / supabase-tests (pull_request) Successful in 31s
CI / e2e (pull_request) Successful in 2m50s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-04 00:15:46 +01:00
2513ed8ef2 docs(catalog): Hinweise aus dem Konsistenz-Review in die KAT-01-Spec
All checks were successful
CI / flutter (pull_request) Successful in 1m17s
CI / web-build (pull_request) Successful in 57s
CI / supabase (pull_request) Successful in 8s
CI / supabase-tests (pull_request) Successful in 30s
CI / e2e (pull_request) Successful in 2m52s
Stand von 2c (PR #57) und Fremdschlüssel-Wächter in 07 und 08,
normalize_game_title ausgeschrieben, Release-Checkliste als offener
PR #54 gekennzeichnet, Änderungsprotokoll nur ergänzt.

Refs #3

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 20:32:09 +00:00
a4c7b47073 docs(catalog): Spec KAT-04 an Spec #3 und PR 2c angeglichen
All checks were successful
CI / flutter (pull_request) Successful in 1m23s
CI / web-build (pull_request) Successful in 57s
CI / supabase (pull_request) Successful in 8s
CI / supabase-tests (pull_request) Successful in 31s
CI / e2e (pull_request) Successful in 2m48s
Kandidatenschlüssel über title_search, gemeinsame Normalisierung
wörtlich aus Spec #3, pg_trgm aus 3a, Abhängigkeiten 3a/3b,
Spec-F6 korrigiert (nur 2c-Nachtrag, vor Merge von PR #57).

Refs #13

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 20:30:15 +00:00
cschlaefke
119267bb26 fix(db): check owner of provisional game in admin_resolve_report, harden report tests (KAT-05 2c review) Refs #2
All checks were successful
CI / flutter (pull_request) Successful in 1m18s
CI / web-build (pull_request) Successful in 57s
CI / supabase (pull_request) Successful in 9s
CI / supabase-tests (pull_request) Successful in 33s
CI / e2e (pull_request) Successful in 2m52s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 21:23:13 +01:00
b65ec0efe7 docs(catalog): Review-Befunde in die KAT-01-Spec einarbeiten
search_normalize für alle API-Rollen ausführbar, Symbole vor unaccent
entfernen, eine Basisfunktion gemeinsam mit #13, Reihenfolge 3a nach 2b,
Spec-F4 mit vorläufiger Messung ohne Staging, Indizes nicht als
Begründung, Grenzen und Hinweise aus dem Review.

Refs #3

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 20:16:26 +00:00
f7a7c1e54c docs(catalog): Review-Befunde zur Spec KAT-04 eingearbeitet
Tageslimit-Rechte (report_day), Normalisierung als Wrapper um
search_normalize aus Spec #3, Sperrreihenfolge und Rechte von
adopt_report_target, Indizes aus 2c, Testdatei 10, Edition-Hinweis
mit editions_cleared als Empfehlung.

Refs #13

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 20:07:44 +00:00
cschlaefke
e665a71f13 feat(db): reports tests, runbook section 6 and docs for KAT-05 2c Refs #2
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 21:07:19 +01:00
cschlaefke
ac5b5f2be2 Merge remote-tracking branch 'origin/feature/2b-katalog-zusammenfuehren' into feature/2c-katalog-meldungen 2026-11-03 21:05:02 +01:00
cschlaefke
147dd1870e feat(db): game reports table, admin_resolve_report and visibility trigger (KAT-05 2c) Refs #2
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 21:05:02 +01:00
cschlaefke
127f765d85 test(db): close surviving mutants in merge tests, extend runbook (KAT-05, 2b)
All checks were successful
CI / flutter (pull_request) Successful in 1m20s
CI / web-build (pull_request) Successful in 1m2s
CI / supabase (pull_request) Successful in 8s
CI / supabase-tests (pull_request) Successful in 31s
CI / e2e (pull_request) Successful in 3m1s
Refs #2

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 21:04:12 +01:00
cschlaefke
e3532210ea docs(auth): mark E4 and mail-link rows superseded by spec 49
All checks were successful
CI / flutter (pull_request) Successful in 1m24s
CI / web-build (pull_request) Successful in 1m2s
CI / supabase (pull_request) Successful in 8s
CI / supabase-tests (pull_request) Successful in 33s
CI / e2e (pull_request) Successful in 3m3s
Refs #49

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 21:01:55 +01:00
34bba3439b docs(auth): address review findings on spec 49
Existing team KSX6GJY9C5 (C1), defer CODE_SIGN_ENTITLEMENTS until
the team is confirmed, local mobile builds mandatory, email_change
needs KTO-11, verified facts separated from spike assumptions,
QUE-06 keyboard criterion, T2 depends on PR A, limited interception
protection on Android < 12 (R13, F11), login CSRF accepted (R14),
supersession of spec 1 E4 recorded as task W2.

Refs #49

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 20:00:45 +00:00
a1895f4c5f docs(catalog): Korrekturen an der KAT-01-Spec (Tests, Reihenfolge 2b/2c)
Idempotenz der alternativen Titel in pgTAP statt Deno, Auswirkung auf
06/00_schema, alternative Titel an Testspiel B, Merge-Reihenfolge
2b -> 2c -> 3a und Erweiterung des Fremdschlüssel-Wächters in 07.

Refs #3

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 19:59:02 +00:00
ece8e3eef2 docs(catalog): Spec KAT-04 präzisiert
Normalisierung mit Akzent-Faltung, Trigramm-Index gestrichen,
Abweichung von Spec #2 3.4 vermerkt, testbare Tagesgrenze.

Refs #13

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 19:55:11 +00:00
8b52a41062 docs(catalog): Spec für KAT-01 Spiele suchen
Refs #3

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 19:50:56 +00:00
cschlaefke
2c2546ab47 docs(db): runbook section merging, data model and spec notes (KAT-05, 2b)
Refs #2

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 20:49:42 +01:00
ab438aca38 docs(catalog): Spec KAT-04 fehlendes Spiel melden
Refs #13

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 19:48:13 +00:00
ef1fddfb72 docs(auth): add spec for mobile sign-in entry and app links
Spec for issue #49: sign-in prompt on the public home screen and
Universal Links / App Links for /auth/confirm on iOS and Android,
web fallback unchanged. Includes options, test strategy, task split
and tasks only Chris can do (Apple/Google accounts, domain files,
SITE_URL on prod).

Refs #49

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 19:46:25 +00:00
cschlaefke
daeae999dd feat(db): add admin_merge_games and repoint_game_references (KAT-05, 2b)
Refs #2

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 20:46:19 +01:00
cschlaefke
5e2c11b49f docs: Review-Korrekturen an Release-Checkliste
All checks were successful
CI / flutter (pull_request) Successful in 1m27s
CI / web-build (pull_request) Successful in 1m0s
CI / supabase (pull_request) Successful in 9s
CI / supabase-tests (pull_request) Successful in 33s
CI / e2e (pull_request) Successful in 3m9s
Refs #2
Refs #46

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 20:45:30 +01:00
cschlaefke
c43a4afd3d docs: Release-Checkliste (D1) mit checks.sql, Zugang, Auth/SMTP und Runner
Refs #2
Refs #46

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 20:37:54 +01:00
8c003ddece Merge pull request 'feat(catalog): GameCover-Widget mit einheitlichem Platzhalter (KAT-05, 2a Flutter)' (#52) from feature/2a-game-cover into main
All checks were successful
CI / flutter (push) Successful in 1m18s
CI / web-build (push) Successful in 1m0s
CI / supabase (push) Successful in 8s
CI / supabase-tests (push) Successful in 31s
CI / e2e (push) Successful in 2m53s
Reviewed-on: #52
2026-11-03 19:32:30 +00:00
cschlaefke
a9a7990636 chore: merge main into feature/2a-game-cover
All checks were successful
CI / flutter (pull_request) Successful in 1m20s
CI / web-build (pull_request) Successful in 55s
CI / supabase (pull_request) Successful in 9s
CI / supabase-tests (pull_request) Successful in 34s
CI / e2e (pull_request) Successful in 2m54s
Refs #2

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 20:07:46 +01:00
cschlaefke
13db8ebb9c fix(l10n): regenerate localizations after ARB key order
All checks were successful
CI / flutter (pull_request) Successful in 1m16s
CI / web-build (pull_request) Successful in 1m0s
CI / supabase (pull_request) Successful in 4s
CI / supabase-tests (pull_request) Successful in 32s
CI / e2e (pull_request) Successful in 2m56s
Refs #2

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 19:48:13 +01:00
4536e4d027 Merge pull request 'feat(catalog): Katalog-Fundament, Rechte und Startbestand-Werkzeug (KAT-05, 2a Backend)' (#53) from feature/2a-katalog-datenmodell into main
All checks were successful
CI / flutter (push) Successful in 1m20s
CI / web-build (push) Successful in 59s
CI / supabase (push) Successful in 8s
CI / supabase-tests (push) Successful in 31s
CI / e2e (push) Successful in 2m51s
Reviewed-on: #53
2026-11-03 18:46:42 +00:00
cschlaefke
9952efa2fe test(catalog): address review findings on PR 2a
All checks were successful
CI / flutter (pull_request) Successful in 1m28s
CI / web-build (pull_request) Successful in 59s
CI / supabase (pull_request) Successful in 9s
CI / supabase-tests (pull_request) Successful in 34s
CI / e2e (pull_request) Successful in 3m2s
Replace tests that could not fail (manual_fields stability, no-op update), select runbook games by id, add grant matrix and forged-admin tests, assert vocabulary seeding and Deno checksum in CI, clarify the set local convention and API notes.

Refs #2

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 18:18:32 +01:00
cschlaefke
52cbd79fb4 feat(catalog): run checks.sql in CI and document seed loader result
Adds the checks.sql smoke step, the verified CLI result for generated seed content and the created_at/updated_at note for the API.

Refs #2

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 16:40:55 +01:00
cschlaefke
24b27c3776 docs(catalog): add catalog runbook, data model and README updates
Includes the checked CLI assumptions (sql_paths, begin/commit) and implementation notes in the spec.

Refs #2

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 15:38:28 +01:00
cschlaefke
9dbafbcad7 feat(catalog): add starting-stock tool, vocabulary proposal and CI checks
Deno script validates vocabulary.csv and startbestand.csv and generates the idempotent SQL, key list and checks.sql. startbestand.csv stays header-only; vocabulary.csv is a proposal pending approval (C0). seed.sql no longer inserts genres and mechanics.

Refs #2

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 15:38:28 +01:00
cschlaefke
3c762003b2 feat(catalog): add catalog foundation migration with pgTAP tests
Sources, publishers, hidden/merged columns, manual_fields triggers, catalog_games view and column grants on games (KAT-05, PR 2a). Fixtures for the tests are generated from supabase/catalog/testdata.

Refs #2

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 15:38:28 +01:00
cschlaefke
f99c82b1e0 feat(catalog): address review of GameCover (labels, tests, spec notes)
Some checks failed
CI / flutter (pull_request) Failing after 51s
CI / web-build (pull_request) Successful in 1m1s
CI / supabase (pull_request) Successful in 3s
CI / supabase-tests (pull_request) Successful in 31s
CI / e2e (pull_request) Successful in 2m50s
Refs #2

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 15:26:38 +01:00
cschlaefke
8a68d4f449 feat(catalog): add GameCover widget with uniform placeholder
Refs #2

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 15:18:48 +01:00
79e06fbfe9 Merge pull request 'fix(ci): Fork-PR-Risiko für den docker-host-Runner dokumentieren (ADR-0003)' (#50) from fix/43-ci-fork-pr-guard into main
All checks were successful
CI / flutter (push) Successful in 1m26s
CI / web-build (push) Successful in 1m2s
CI / supabase (push) Successful in 4s
CI / supabase-tests (push) Successful in 36s
CI / e2e (push) Successful in 2m57s
Reviewed-on: #50
2026-11-03 14:15:18 +00:00
982a689b7f Merge pull request 'docs(catalog): Spec für KAT-05 Katalogdaten (freigegeben)' (#51) from docs/2-kat05-spec into main
Some checks failed
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: #51
2026-11-03 14:15:11 +00:00