Commit Graph

  • 4d3383a4f1 data(import): D3 Zuleika resolved (DD Ee Gg PP) — Julian Gulum 2026-06-06 12:04:30 +02:00
  • 19a0a6c79b data(import): 'presence wins' merge rule (Julian) — resolves Daja (spsp) + Ichika ([f]); D4 markers were common, 3/5 auto-resolved Gulum 2026-06-06 12:02:29 +02:00
  • b9033238c9 conflict-decisions: also apply dateOfDeath (D5 death-date resolutions) Gulum 2026-06-06 12:02:18 +02:00
  • 594923e10f GEN-3f backend re-seed: ColorVariety catalog 73 -> 61 (CP- names) Gulum 2026-06-06 11:59:57 +02:00
  • aa20d6f809 data(import): D5 Molly resolved (died 03.05.2022, 2021 was year typo) — Julian Gulum 2026-06-06 11:59:51 +02:00
  • afd321ec9f BESTAND-FILTER: Tiere-Liste zeigt standardmäßig nur den eigenen Bestand Gulum 2026-06-06 11:59:18 +02:00
  • ae825ae80a data(import): D5 Flint resolved (died 10.05.2021, 2022 was typo) + decisions schema gains dateOfDeath — Julian Gulum 2026-06-06 11:59:10 +02:00
  • e055061d85 docs(HUMANQUESTION): D3+D4 — show CONCRETE per-animal conflict (locus + both values); D4 markers were common (not the conflict), 3/5 auto-resolved; Chelsea=DOB-dup not genotype; Victoria Welby=C's mother Gulum 2026-06-06 11:57:54 +02:00
  • df13136955 Importer consumes conflict-decisions.json to un-quarantine (HUMANQUESTION D) Gulum 2026-06-06 11:55:45 +02:00
  • 4aca1d528b EXTRACT band-aware Farbschlag: deep bands (gen>=2) have no colour cell Gulum 2026-06-06 11:49:45 +02:00
  • 4e02133d95 docs(HUMANQUESTION): add C9 (optional) — CP-Fuchs/CP-Blaufuchs/CP-Fuchs-Hell genetic distinction for engine refinement Gulum 2026-06-06 11:53:14 +02:00
  • f3efd4aa2b Merge feature/gen-3f: c-locus seed/catalog reconciliation 73→61 (CP- prefix, collapse -Hell, Siam; computed==dropdown) [god-QA pending] Gulum 2026-06-06 11:51:46 +02:00
  • 461d7feb2d data(import): D3 WildFire resolved (PP correct, not P-) — Julian Gulum 2026-06-06 11:50:25 +02:00
  • 7536aba474 data(import): conflict-decisions.json + D3 Firefly resolved (D- correct, DD typo) — Julian Gulum 2026-06-06 11:49:35 +02:00
  • 972570b142 GEN-3f: reconcile cchm colourpoint catalog to the breeder's CP- naming Gulum 2026-06-06 11:47:33 +02:00
  • 029ffb9895 docs(HUMANQUESTION): D1 resolved — col K+ has no Farbschlag (only gencode), colour derived from genotype; Chesnut≠Tennessee; fix dispatched Gulum 2026-06-06 11:45:11 +02:00
  • 6decd59ce4 docs(HUMANQUESTION): D1 — add source Stammbaum file per name-bleed conflict + note importer auto-strips them Gulum 2026-06-06 11:39:10 +02:00
  • f015274d28 Merge feature/import-fk-fix: stage litters+save-once (insert ordering) + FK-integrity guard + dry-run ParentFksDropped/DerivedSkipped, SQLite FK regression tests [god-QA pending] Gulum 2026-06-06 11:36:03 +02:00
  • fd48f7fc09 Fix import FK fault: derived/back-linked litter referenced a not-yet-inserted parent Gulum 2026-06-06 11:32:44 +02:00
  • 105e63b9c4 Merge feature/inbox-1: Anfragen-Posteingang UI (list/triage/assign/draft/send) [god-QA pending] Gulum 2026-06-06 11:29:21 +02:00
  • 0334fce275 Merge feature/web-0b: CMS admin UI /webseite (page+block editor, reorder, draft/publish status) [god-QA pending] Gulum 2026-06-06 11:25:55 +02:00
  • aaaf5b6fb7 INBOX-1: Anfragen-Posteingang UI - Liste (Status-Filter, Sync-Button mit MailNotConfigured-Hinweis), Detail (Triage/Zuordnen/Verwerfen, KI-Entwurf mit AiKeyMissing-Hinweis, bestaetigter Versand) + nav + 6 e2e-Specs (Mock um /api/requests erweitert) Gulum 2026-06-06 11:23:41 +02:00
  • c20e6b5426 WEB-0b: CMS-Verwaltung der öffentlichen Webseite (Hand-Editier-UI) Gulum 2026-06-06 11:22:32 +02:00
  • 36454f3747 docs(HUMANQUESTION): add C8 — Himalaya vs Hermelin (does breeder use Himalaya, or is all chch Hermelin?) Gulum 2026-06-06 11:12:52 +02:00
  • 3335502ef1 Merge feature/web-1 [god-QA pending] Gulum 2026-06-06 11:10:52 +02:00
  • 0766f8303c Merge feature/gen-3e [god-QA pending] Gulum 2026-06-06 11:10:52 +02:00
  • 6357e77060 Merge chore/de-lf [god-QA pending] Gulum 2026-06-06 11:10:52 +02:00
  • 5edbd67c96 chore: normalize de.ts to LF + pin via .gitattributes (stop noisy EOL-flip diffs) Gulum 2026-06-06 11:07:19 +02:00
  • 0651e54343 SEED-SYNC: backend ColorVariety seed = corrected catalog (drop Schwarzschimmel→Orangeschimmel, +CP-Orangeschimmel, Blaufuchs dd genotype fix) + SyncColorVarietySeed migration Gulum 2026-06-06 11:07:10 +02:00
  • 4dcd416ff6 WEB-1: static site renderer (SiteRenderer, dry-run endpoint, 22 tests) Gulum 2026-06-06 11:06:40 +02:00
  • 5fd8cf4395 GEN-3e: C-locus colourpoint naming (CP-<base> for A-+cchm; Marder/Siam/Zobel/Zobel-Hell for aa+cchm); chch kept as Hermelin/Himalaya via base-match Gulum 2026-06-06 11:04:57 +02:00
  • 76fcad6168 Merge feature/pedigree-link residency: Gerbil.IsResident (Bestand vs external ancestors, parent-exception), AddGerbilResidency migration [god-QA pending] Gulum 2026-06-06 11:01:05 +02:00
  • 91fa9058de Merge feature/gen-3d: dominance tiebreak — unknown locus → wild-type reading (unknown-C=full colour not white; markers unmarked) [god-QA pending] Gulum 2026-06-06 11:01:04 +02:00
  • 6775707387 OWNERSHIP: residency classification (Bestand vs external ancestors) Gulum 2026-06-06 10:58:29 +02:00
  • 8125c453d0 GEN-3d: dominance tiebreak — unknown locus resolves to wild-type reading (unknown-C => full-colour, not c[h] white; markers default unmarked) Gulum 2026-06-06 10:58:15 +02:00
  • 8101cc7be5 Merge feature/pedigree-link: parentRefs→derived litters, box-colour=sex (blue♂/white♀), name-bleed conflict fix, Vance folded in [god-QA pending] Gulum 2026-06-06 10:51:06 +02:00
  • ea79703dbf PEDIGREE-LINK: chart parentRefs→litters, box-colour=sex, name-bleed fix Gulum 2026-06-06 10:48:30 +02:00
  • ed576c0339 Merge feature/gen-3c: unknown allele displays '-' (stores '?'), fix Unbekannter Farbschlag (wildcard + E-locus family fallback) [god-QA pending] Gulum 2026-06-06 10:47:14 +02:00
  • c35a6eca04 GEN-3c: fix 'Unbekannter Farbschlag' — unknown=wildcard in matches() + E-pair-aware family fallback (eef=Fuchsschimmel) Gulum 2026-06-06 10:45:15 +02:00
  • 2e20df624f GEN-3c: unknown allele displays as '-' (storage stays '?'); parser accepts '-' and skips fully-unknown tokens; de.ts hints Gulum 2026-06-06 10:45:15 +02:00
  • a57b481a7e Merge feature/inbox-2: POST /api/requests/{id}/draft (AI German reply draft, never auto-send), extract OpenAiChatClient to Ai/, privacy stripping, 8 tests [god-QA pending] Gulum 2026-06-06 10:37:56 +02:00
  • 27424c574f Merge feature/feat-14c: Charakterbogen as preferred AI character source (suppress admin notes, weave traits to prose), +4 tests [god-QA pending] Gulum 2026-06-06 10:37:45 +02:00
  • fd28b2a954 INBOX-2: 8 Tests - Stripping, Prompt-Privacy (keine Mailadresse zum Anbieter), 503, Endpoint-Round-Trip mit Stub (Entwurf gespeichert+geliefert); ApiFactory.ConfigureTestServices-Hook (init-Property, xUnit-fixturefest) Gulum 2026-06-06 10:36:02 +02:00
  • 8aab9d34f7 INBOX-2: POST /api/requests/{id}/draft - deutscher KI-Antwortentwurf (Datenminimierung: nur Anfragetext+ForSale-Liste, Zitat/Signatur-Stripping, 503 AiKeyMissing / 502 Upstream, speichert DraftReply) Gulum 2026-06-06 10:36:02 +02:00
  • 6dabb5572c INBOX-2: extract provider-agnostic OpenAiChatClient from SaleAdService (shared AI wire, public surface unchanged) Gulum 2026-06-06 10:36:01 +02:00
  • 36db013b76 Merge feature/gen-3b: genotype.py+extract.py normalization (Uw→G, Sls, flags), conflicts 32→27, Gerbil.IsDeaf additive migration [god-QA pending] Gulum 2026-06-06 10:32:57 +02:00
  • 60d034cde4 Merge feature/gen-3a: Uw=G+G-display, Sls 2nd locus+lethal, flag tolerance, Schimmel catalog fix (no Schwarzschimmel, efef=Orangeschimmel) [god-QA pending] Gulum 2026-06-06 10:32:52 +02:00
  • 5ec04984c9 FEAT-14c: Charakterbogen im Sale-Ad-Prompt - Traits+Notiz als bevorzugte Charakterquelle (Notizen-Fallback), Webe-Regel statt Stichwortliste im Systemprompt; 4 Tests Gulum 2026-06-06 10:29:38 +02:00
  • e2fd32ea12 GEN-3a: test that Uw input renders as canonical G (never echoed back) Gulum 2026-06-06 10:27:08 +02:00
  • 2f089a902d GEN-3b: import notation normalization (Uw=G, Sls, deaf flag, tags) Gulum 2026-06-06 10:26:01 +02:00
  • 7aac59f3e5 GEN-3a: de.ts warning texts (SLS_LETHAL/SUPERSCHECKE_DEAF) + genetics tests (Uw alias, Sls het/lethal, Superschecke, flag tolerance, Schimmel fix) Gulum 2026-06-06 10:25:48 +02:00
  • a0b720df73 GEN-3a: Schimmel catalog fix (breeder C5) — remove Schwarzschimmel, efef base=Orangeschimmel, Silberschimmel wins efef-gg, +CP-Orangeschimmel; regenerate ColorVariety seed Gulum 2026-06-06 10:25:48 +02:00
  • 1e7dc8f91d GEN-3a: Uw=G alias, second spotting locus Sls (SlSl lethal), Sp×Sls Superschecke, flag/metadata token tolerance (dea/WFNZ/DP/RV/GV) Gulum 2026-06-06 10:25:48 +02:00
  • c93c24f37c docs(HUMANQUESTION): C5 answered — no Schwarzschimmel (catalog error); correct Schimmel types (efef=Orange/efef pp=Rotaugen/efef gg=Silber/cchm efef=CP-Orange) + source note Gulum 2026-06-06 10:11:48 +02:00
  • bd9cc83205 docs(HUMANQUESTION): C4 answered — Wurfchronik Teil 2 exists, being revised, will be imported when delivered Gulum 2026-06-06 10:08:50 +02:00
  • 8d0fc43c0a docs(HUMANQUESTION): C3 answered — auto-merge OK but require matching Zuchtname (Name+DOB+Zucht = same animal) Gulum 2026-06-06 10:07:46 +02:00
  • 98596b5586 Merge feature/feat-13-followup: /hilfe Vertrag+Zuchtprofil sections + verified Abgabe->wizard handoff [god-QA: 80/47/e2e 64] Gulum 2026-06-06 10:06:28 +02:00
  • 9013ff488e docs(HUMANQUESTION): C2 answered — '-' = unknown allele (confirmed) Gulum 2026-06-06 10:06:28 +02:00
  • 2a1c4a9eb7 docs(HUMANQUESTION): C1 answered (Uw=G, Sls=WP, DP=Darkpatch, Dea/dea=hearing/deaf, WFNZ/RV/GV=annotations); D2 conflict group resolved Gulum 2026-06-06 09:59:33 +02:00
  • d79f039b8b FEAT-13-Followup: /hilfe sections for Abgabevertrag wizard + Zuchtprofil (du-Form, de.ts-referenced labels) + finish-step in Abgabe section Gulum 2026-06-06 09:58:04 +02:00
  • 8202dfc0e4 Merge feature/inbox-3: Gmail SMTP send + reply threading (In-Reply-To/References/Re:), MailNotConfigured/MailAuthFailed handling [god-QA: 80 + snapshot clean] Gulum 2026-06-06 09:51:32 +02:00
  • 68366ad8c9 INBOX-3: SMTP send + Gmail threading (POST /api/requests/{id}/send) Gulum 2026-06-06 09:50:24 +02:00
  • dcf849cfa7 Merge feature/inbox-0: Gmail request inbox backend (MailKit reader, Request entity, MailSettings, sync/triage endpoints) [god-QA: 75 + snapshot clean] Gulum 2026-06-06 09:44:42 +02:00
  • 958a2dbac0 INBOX-0: regenerate AddRequestsAndMailSettings migration after rebase onto WEB-0 (clean snapshot: CMS + INBOX, Up adds only Requests+MailSettings) Gulum 2026-06-06 09:43:01 +02:00
  • 5d7cbc66bf INBOX-0: Gmail request inbox backend (MailKit) + Request entity + sync/triage endpoints Gulum 2026-06-06 09:38:02 +02:00
  • 84181ed74d docs: HUMANQUESTION.md — fully German + 'nicht selbst bearbeiten, an Michael antworten' banner at top (wife reads this) Gulum 2026-06-06 09:37:25 +02:00
  • d510b0f822 Merge test/search-variations: 9 backend search-variation tests (all green) [god-QA: 70] Gulum 2026-06-06 09:33:51 +02:00
  • 3716dcb1f3 test: SearchVariationsTests — 9 search variations (contains, case-insensitive, separator-insensitive nameSearch, umlauts, OriginBreeder filter, /breeders distinct, paging, combined). Fills the gap where SEARCH-1's tests never reached main. Gulum 2026-06-06 09:33:40 +02:00
  • d6e35f40ec Merge feature/search-2b: Herkunft filter -> originBreeder + /gerbils/breeders; name search -> nameSearch (separator-insensitive) [god-QA: 47/build/e2e 62] Gulum 2026-06-06 09:27:40 +02:00
  • 70f7c88419 Merge feature/web-0: CMS model (Site/Page/Block/Media) + /api/site-snapshot (Abgabetiere auto from ForSale) + Page/Block CRUD [god-QA: 61] Gulum 2026-06-06 09:27:12 +02:00
  • acd7f4c386 docs: HUMANQUESTION.md — open questions/data requests for Julian + wife (incl. 32 conflict animals, blockers per item) Gulum 2026-06-06 09:25:32 +02:00
  • f73ac0d4d8 WEB-0: CMS endpoint tests — snapshot shape/nav, Abgabetiere resolves ForSale (Becken group), block CRUD+reorder (SQLite host) Gulum 2026-06-06 09:21:19 +02:00
  • 94f055f9bf WEB-0: CMS content model + /api/site-snapshot + Page/Block CRUD Gulum 2026-06-06 09:19:42 +02:00
  • cab8c133c8 SEARCH-2b: e2e mock /gerbils/breeders + nameSearch/originBreeder seed; Herkunft + separator-insensitive smokes [QA-1] Gulum 2026-06-06 09:15:55 +02:00
  • 13ff97a12b Merge feature/feat-14b: Charakterbogen UI (checkbox traits + note) on detail + Abgabe composer, feeds AI sale-ad [god-QA pending result-gate] Gulum 2026-06-06 09:15:55 +02:00
  • 681e8c28fb SEARCH-2b: Herkunft dropdown -> originBreeder + GET /gerbils/breeders; name search -> nameSearch (client-normalized) Gulum 2026-06-06 09:15:54 +02:00
  • ba81f48e0f Merge feature/feat-14a: Charakterbogen backend (Gerbil.CharacterTraits + CharacterNote) + sale-ad request extension [god-QA: 58] Gulum 2026-06-06 09:15:36 +02:00
  • 3afb04f646 FEAT-14a: Charakterbogen on Gerbil (traits + note) + sale-ad request extension Gulum 2026-06-06 09:10:30 +02:00
  • 5d8bbfa93b FEAT-14b: Charakterbogen on animal detail (persist) + Abgabe composer; feed traits+note into sale-ad; e2e smoke Gulum 2026-06-06 09:08:53 +02:00
  • 5b11780074 FEAT-14b: trait vocabulary (de.character), Gerbil/sale-ad types, Charakterbogen component Gulum 2026-06-06 09:08:46 +02:00
  • f20a42a94b SEARCH-1: tests — Normalize unit + separator-insensitive nameSearch filter + OriginBreeder/breeders endpoint (SQLite in-memory round-trip) Gulum 2026-06-06 09:04:20 +02:00
  • f858a02f50 Merge feature/search-1: separator-insensitive NameSearch field + OriginBreeder (Herkunft) filterable string from import + /gerbils/breeders distinct endpoint Gulum 2026-06-06 09:03:32 +02:00
  • 09f11cb4e3 SEARCH-1: separator-insensitive NameSearch + OriginBreeder (Herkunft) filter Gulum 2026-06-06 09:01:12 +02:00
  • 45b213e11d Merge feature/search-2: Herkunft filter dropdown on Tiere list + live-search UX confirmed [god-QA: 55/47/e2e 60] Gulum 2026-06-06 09:00:21 +02:00
  • 38b9717ad2 SEARCH-2: Herkunft (originContactId) filter dropdown on Tiere list + e2e smoke; name-search field behind NAME_SEARCH_FIELD for SEARCH-1 normalized swap Gulum 2026-06-06 08:58:34 +02:00
  • 0ee2b53b24 Hotfix: gerbil search contains operator — name=*a not name=*a* + mock mirrors real Gridify [god-QA: 47 unit + 58 e2e; live: name=*a -> 203 hits] Gulum 2026-06-06 08:52:08 +02:00
  • 459c66bc3e Hotfix: gerbil search contains operator — drop trailing '*' (Gridify =* is contains; name=*a not name=*a*) + e2e mock mirrors real Gridify Gulum 2026-06-06 08:52:02 +02:00
  • 0cee3e2710 Merge feature/polish-1: canonical Gridify '=', InvalidParentGender German message, Abgabe-abschliessen->wizard wiring, de.ts sweep, e2e mock accepts both operators [god-QA: 55/47/58] Gulum 2026-06-06 08:18:08 +02:00
  • 385cccb352 POLISH-1: e2e mock accepts canonical '=' (and legacy '==') equals operator [QA-1 coordination] Gulum 2026-06-06 08:16:57 +02:00
  • e73b561b77 POLISH-1: move stray UI strings to de.ts (pageNav/moreData), gitignore Playwright artefacts, wire 'Abgabe abschliessen' -> /vertraege/neu?tiere= (FEAT-13b) Gulum 2026-06-06 07:56:07 +02:00
  • 55a72bfe12 POLISH-1: gridify emits canonical '='; localize litter InvalidParentGender 400 (ApiError body) + de strings Gulum 2026-06-06 07:55:59 +02:00
  • e87d0aafea Merge feature/export-1: Datenexport (zip JSON+German CSVs) on /einstellungen + CI flake-cap [god-QA pending result-gate] Gulum 2026-06-06 08:06:38 +02:00
  • db53fad5a4 Merge feature/feat-13: Abgabevertrag phase B — SaleContract+wizard, /einstellungen Zuchtprofil, contract endpoints w/ transactional Abgabe, Kontakt structured fields [god-QA: 40/40+47/47+e2e 56/56] Gulum 2026-06-06 08:00:55 +02:00
  • d3f38b9be4 FEAT-13: resolve leftover rebase conflict markers in App.tsx routes (hilfe + vertraege/einstellungen union) Gulum 2026-06-06 07:58:01 +02:00
  • f08dbd2219 QA-1: CI-Flake-Schutz - Worker-Cap 4 unter CI (geteilter Vite-Dev-Server, Dwights Beobachtung) Gulum 2026-06-06 07:57:27 +02:00
  • cd795d3831 Merge feature/feat-8c: Excel import loader — /import/dry-run + gated /import/execute, quarantine policy, provenance + idempotency [god-QA: 43/43] Gulum 2026-06-06 07:57:21 +02:00
  • be62e785db FEAT-13: e2e an strukturierte Kontaktfelder angepasst + 2 Abdeckungstests (Patch von Oscar, e2e-Owner) Gulum 2026-06-06 07:53:57 +02:00
  • d8ccb451d9 FEAT-13: singular-aware contract count text (1 Vertrag / n Vertraege) Gulum 2026-06-06 07:34:25 +02:00
  • 9c3bcfc9f9 FEAT-13: Abgabe wizard (/vertraege/neu, 4 steps, ?tiere= prefill), Vertraege list w/ download+delete, /einstellungen Zuchtprofil form, contracts/settings API clients, nav entries, detail-page entry point + replace orphaned contactInfo with email/phone/address across Kontakt pages Gulum 2026-06-06 07:31:04 +02:00
  • 0c05a5acf1 FEAT-13: SaleContract + BreederSettings entities (additive migration, join table justified in code docs), /contracts + /settings/breeder-profile Minimal-API endpoints w/ Abgabe-completion transaction + SQLite-backed endpoint round-trip tests (21/21) Gulum 2026-06-06 07:23:06 +02:00