Commit graph

130 commits

Author SHA1 Message Date
1867c65143 Turneringsoppsett som steg-wizard (ADR-092)
Oppsett-fanen var én lang stablet side med alle kort etter hverandre.
Omgjort til 6 klikkbare steg med fri navigasjon, strukturelt inspirert
av Golf GameBooks steg-navigasjon (ikke visuelt -- egne clubhouse-
tokens). Grupper og startliste er det eneste genuint nye steget,
løfter Utslagsgrupper ut av å være gjemt inni hver enkelt runde.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-18 20:18:47 +02:00
6f25b57f90 ADR-091/CHANGELOG: bekreft utrulling av deltakerstatus og spillerpool-kobling 2026-08-18 18:10:11 +02:00
396fe40b7c Manuell deltakerstatus (DSQ/RTD/DNF/DNS) + spillerpool-kobling (ADR-091)
Ny status-kolonne på tournament_participant, overstyrer leaderboardets
total og blokkerer score i alle runder. Ny direkte lenke fra
turneringens Deltakere-liste til riktig rad i org-spillerpoolen.
Migrasjon 087 lagt til, men IKKE anvendt mot ekte teecup_db ennå.
2026-08-18 18:06:49 +02:00
5f1c73a917 ADR-090/CHANGELOG: bekreft utrulling av omspill-tiebreak og HCP-retting 2026-08-18 17:31:48 +02:00
0c864f0705 Omspill-tiebreak for vinneren + direkte HCP-retting per deltaker (ADR-090)
'playoff' som ny tiebreak_winner_method-verdi -- rangeres som 'none'
(appen kan ikke avgjøre et omspill selv), men regelen vises proaktivt i
Oppsett og som banner på leaderboardet. HCP: la til handicap_index_
snapshot i TournamentParticipantUpdate + inline redigering i
Deltakere-lista, uten å røre allerede frosne runde-verdier. Migrasjon
086 lagt til, men IKKE anvendt mot ekte teecup_db ennå.
2026-08-18 17:29:59 +02:00
fb00c65430 ADR-089/CHANGELOG: bekreft utrulling av tiebreak, turneringsinnstillinger 2026-08-18 17:02:49 +02:00
300cb8aeaf Tiebreak ved likt resultat: countback eller laveste HCP (ADR-089)
Organisator velger metode fritt i Oppsett, uavhengig for vinner og
resten av feltet. Countback er kaskaderende siste 9->6->3->1 hull i
siste runde. Påvirker aldri Cut-grensen -- strukturelt håndhevet, ikke
bare avtalt ved konvensjon. Migrasjon 085 lagt til, men IKKE anvendt mot
ekte teecup_db ennå -- venter på bekreftelse.
2026-08-18 16:29:10 +02:00
d57f4e5478 ADR-088/CHANGELOG: bekreft utrulling av utslagsgrupper (migrasjon 084) 2026-08-18 15:59:35 +02:00
9a9fcc84c0 Utslagsgrupper for individuelle turneringer: hvem spiller med hvem (ADR-088)
Tradisjonelt utslag (samme starthull, staggerte klokkeslett med fast
intervall), manuell gruppesammensetning med et forslag å justere, fast
gruppestørrelse. Fire ekte bugs funnet og fikset før utrulling via egen
scratch-verifisering (FK-korrupsjon, str/datetime-mismatch, tidssone,
React state). Migrasjon 084 lagt til, men IKKE anvendt mot ekte
teecup_db ennå -- venter på bekreftelse.
2026-08-18 15:43:39 +02:00
986e27ccd9 ADR-087/CHANGELOG: Cut-migrasjon 083 og utrulling bekreftet 2026-08-18 15:08:39 +02:00
19c527f834 Cut i individuelle turneringer: topp N og delt plass (ADR-087)
Manuelt anvendt (organisator trykker "Anvend cut"), etter et valgt
rundenummer. Kuttede spillere blokkeres fra scoring i senere runder og
vises i egen seksjon på leaderboardet. Migrasjon 083 lagt til, men IKKE
anvendt mot ekte teecup_db ennå -- venter på bekreftelse.
2026-08-18 15:07:21 +02:00
207750acba Slett en hel turnering, permanent (ADR-086)
Nytt DELETE /orgs/{id}/tournaments/{id}, kun org-eier/admin. Eksplisitt
riktig-rekkefølge-sletting (ikke naiv kaskade) siden to RESTRICT-FK-er
sitter midt inni kaskade-grafen for begge turneringsformater -- verifisert
med fire nye backend-tester mot ekte populerte data. Søppelbøtte-ikon i
begge turnering-headerne med sterk confirm()-tekst.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-18 12:59:37 +02:00
82343e522b Rediger organisasjonens spillerpool når som helst (ADR-085)
Ny /organizations/[id]/players-rute gjenbruker spillerimport-tabellen
(ADR-082) uendret, men med ny orkestrering: laster eksisterende
spillere og lagrer med ekte PATCH per endret felt, ikke det
fyll-tomme-felt-eneste bulk-importendepunktet (som aldri overskriver
et allerede satt navn/HCP -- ubrukelig for reell redigering).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-18 12:09:29 +02:00
f5c79e8767 ADR-084/CHANGELOG: Tjøme reimportert i teeoff_course_coordinate også
Fant en andre, atskilt kopi av Tjømes koordinatdata (den org-tilknyttede
"official" banen brukt av turneringer/lag-matchplay) som forrige rundes
reimport ikke traff. Samme datasett satt inn der også -- ren datafiks,
ingen kodeendring.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-18 09:06:45 +02:00
1bc6b0b74d Sortering, side_fairway-fiks, ny poi_type fairway/stone_fence (ADR-084 del 5-6)
Hindringslisten manglet eksplisitt nærmest-spilleren-først-sortering --
fikset. Kryssjekk mot kildedata avdekket 12 kjente side_fairway-feil,
løst via full reimport av Tjømes 194 koordinatpunkter fra et nytt,
standardisert CSV-format (kjørt separat mot ekte teecup_db, ikke del
av denne commiten). To nye hindringstyper (fairway/stone_fence) med
egne ikoner.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-18 08:36:31 +02:00
8a1f1f83fa Road-ikon, ikon-mangel-lista nå tom (ADR-084 del 4)
Siste klassifiserte hindringstype uten eget ikon. Ren frontend-endring
-- road fantes allerede som domeneverdi og ekte data, bare usynlig i
diagrammet inntil nå.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-18 06:59:30 +02:00
eba8616438 Egen poi_type "creek" for bekk, skilt fra water (ADR-084 del 3)
Ny migrasjon 081 legger til creek i det delte course_poi_type-domenet.
Kobler inn brukerens nye bekk-ikon i diagrammet og reklassifiserer de
8 kjente Tjøme-bekk-punktene (hull 2/3/11/12) fra water til creek,
identifisert via samme koordinat-regneark som ga hazard_group-dataen
i forrige runde.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-18 06:53:35 +02:00
f3b3d30e4e Hull-diagram v2: rettelser fra ekte produksjonsbruk (ADR-084 del 2)
Ett-ikon-overlapp-fiks i midtbanen (green-ikonet manglet reservert
plass), bak-green-rendering (hindringer bak selve greenen vises nå over
green-ikonet i stedet for klemt inn i vanlig-sonen), fem nye
hindringsikoner, og en omskrevet liste (én rad per hindring, med
bane/posisjon-info).

Setter i tillegg ekte hazard_group-verdier på Tjømes koordinatdata,
utledet fra klubbens eget koordinat-regneark (som viste seg å ha en
egen gruppenummer-kolonne) i stedet for en heuristikk -- løser
definitivt de flerbunker-hullene forrige runde bevisst lot stå
uklassifisert.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-18 06:43:57 +02:00
1bfac02944 ADR-084/CHANGELOG: hazard_group rullet ut mot ekte database
Migrasjon 080 kjørt mot ekte teecup_db og teecup_api/teecup_frontend
redeployet, begge med brukerens eksplisitte bekreftelse i samme økt.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-18 05:06:07 +02:00
84f11e1a45 Hull-diagram v2: kategoriske venstre/senter/høyre-akser (ADR-084)
Erstatter ADR-083 sin kontinuerlige crossMeters-forskyvning, som ga for
liten synlig venstre/høyre-forskjell på ekte banedata (Tjøme hull 18).
Baner velges nå kategorisk via side_fairway; green/tee/spiller alltid
på senterakse. Ny hazard_group-kolonne (migrasjon 080, ikke rullet ut
mot ekte DB ennå) lar to punkter eksplisitt pares til én carry-hindring
(forkant+bakkant) uten å risikere å slå sammen to atskilte hindringer
på samme side.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-17 23:36:28 +02:00
d4f635fcfd ADR-083/CHANGELOG: hull-diagram rullet ut
docker compose build/up teecup_frontend 2026-08-17 etter bekreftelse
fra bruker, ingen migrasjon.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-17 17:21:05 +02:00
dabf3478ec V0-integrering: polert hull-diagram
Integrerer V0-eksporten for hole-diagram-view.tsx. Traff props-
kontrakten i prompten eksakt -- ingen integreringsjustering nødvendig,
tsc rent på første forsøk. Egne tillegg fra V0 utover prompten: full
aria-label-oppsummering av hele diagrammet for skjermlesere, lett
kollisjons-unngåelse for nære hindringsetiketter.

Re-verifisert i scratch mot samme kjente syntetiske geometri som den
midlertidige hånd-kodede versjonen -- identiske tall/posisjoner.
Lys+mørk bekreftet.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-17 17:19:26 +02:00
6f79df6eab Visuelt hull-diagram for rangefinderen (tee nederst, green øverst)
Fikser to ting rapportert fra ekte produksjonsskjermbilde: (1) kun
nærmeste hindring ble vist -- target-distance.tsx viser nå ALLE
hindringer, sortert nærmest først, uavhengig av om et diagram kan
tegnes. (2) Nytt hull-diagram (hole-diagram-view.tsx) plasserer
hindringer og spiller i 2D langs en fast tee->green-akse, tee nederst/
green øverst konsistent uansett gangretning.

Ny geometri-modul frontend/lib/hole-geometry.ts (projectOntoAxis,
bygget på eksisterende haversineMeters/bearingDegrees) med 10
enhetstester som beviser matematikken riktig før noe visuelt ble
bygget. Verifisert i scratch mot presist kjente syntetiske koordinater
-- alle tall og posisjoner stemte eksakt med håndregnede fasitverdier.

Midlertidig hånd-kodet visning, venter på V0-eksport for den polerte
versjonen (samme mønster som FlagPlantSheet/PlayerImportPanel). Ingen
migrasjon, ingen backend-endring.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-17 16:46:50 +02:00
206aaa6217 ADR-082/CHANGELOG: spillerimport rullet ut
docker compose build/up 2026-08-17 etter bekreftelse fra bruker, ingen
migrasjon. Oppdaterer "Rullet ut: ikke ennå"-placeholderne.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-17 15:55:58 +02:00
ced4bf869b V0-integrering: polert spillerimport-tabell, stor skjerm først
Integrerer V0-eksporten (tee-cup-login-screen.zip) for spillerimport-
panelet. Splittet i player-import-view.tsx (V0, ren kontrollert visning)
+ player-import-panel.tsx (orkestrering, uendret ekstern kontrakt) --
samme mønster som FlagPlantSheet.

Fant og fikset en reell integreringsfeil i scratch: V0s kjønn-nedtrekk
bruker female/male/other, rå CSV-tekst ("m"/"f") ble kopiert inn
uendret og ville stille mistet data ved lagring -- fikset med egen
verdinormalisering ved kolonnetilknytningen. æøå-kolonnegjetting-
begrensningen fra forrige commit fikset samtidig.

Ny STÅENDE regel lagt til CLAUDE.md underveis: turneringsoppsett
designes stor skjerm først (organisatoren sitter foran en PC), ikke
mobil-først -- V0-prompten oppdatert og kjørt på nytt med dette kravet
før eksporten som integreres her.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-17 15:51:31 +02:00
00809d6817 Massimport av spillere til turneringer (CSV) + redigerbar spillertabell
Ny POST /orgs/{id}/players/bulk (samme e-post-match-dedup-mønster som
selvregistreringens ADR-017 Beslutning B, utvidet til alle felt).
CSV parses klient-side (papaparse), enkel kolonnegjetting, redigerbar
forhåndsvisning før lagring. Dekker både lagturneringer (lagtildeling)
og individuelle turneringer (klassetilknytning) i samme flyt -- begge
steg samlet (org-pool + turneringspåmelding).

Midlertidig hånd-kodet UI (player-import-panel.tsx) bygget for å bevise
hele kjeden ende-til-ende -- venter på V0-eksport for den polerte
visningen før samlet utrulling, samme rekkefølge som FlagPlantSheet.

5 nye backend-tester (111/111 totalt), tsc rent, 45/45 vitest, full
scratch-verifisert i begge turneringsformater.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-17 14:53:55 +02:00
366582d3ef ADR-081/CHANGELOG: rangefinder for offisielle baner rullet ut
Migrasjon 079 kjørt og teecup_api/teecup_frontend rullet ut 2026-08-17
etter bekreftelse fra bruker. Tjømes offisielle bane fylt med de 180
feltbefarte koordinatene fra forrige runde.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-17 12:13:57 +02:00
a9168f26d0 ADR-080/CHANGELOG: kontosammenslåing rullet ut mot ekte teecup_db
Migrasjon 077 kjørt og teecup_api/teecup_frontend rullet ut 2026-08-17
etter bekreftelse fra bruker. Oppdaterer "Rullet ut: ikke ennå"-
placeholderne fra forrige commit.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-17 08:01:17 +02:00
7d28727cb7 Kontosammenslåing, selvbetjent (ADR-080, "Del 2" av flere e-postadresser)
Selvbetjent sammenslåing av to TeeCup-kontoer: keeper (initiativtaker)
ber om sammenslåing, bekreftelseslenke sendt til taperens e-post beviser
eierskap, taperens data (org-medlemskap/spillerkoblinger/runder/venner)
flyttes over og taperens konto slettes. Ny migrasjon 077 (account_merge_
token, ikke kjørt mot ekte teecup_db ennå), ny app/account_merge.py
(N+1-transaksjoner per RLS-grensen, fullt konfliktkart), nye endepunkter
i app/routers/account_merge.py, ny frontend-seksjon i kontoinnstillinger
+ egen bekreftelsesside.

Fant og fikset en reell RLS-relatert bug via testsuiten før produksjon:
seks RLS-beskyttede tabeller var feilaktig plassert i den globale
"trygt å re-peke"-løkken, forårsaket et krasj pga. en Postgres GUC-kvirk
på pooled forbindelser. Se ADR-080 for full begrunnelse.

12 nye tester (95/95 backend totalt), full scratch-verifisert
ende-til-ende inkl. lys/mørk, ekte teecup_db urørt.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-17 07:56:41 +02:00
d22b52c11c ADR-079: noter utrulling av historikk-relokering + full historikk-skjerm
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-16 10:49:41 +02:00
9f2711e4b3 Personlig hull-historikk ut av slagvinduet + full historikk med grafer (ADR-079)
Historikk-panelet flyttet ut av selve slagvinduet/-arket i begge flyter:
inn i PlayerHoleCards-kortet (frittstående runder), som nytt "overview"-
steg med auto-hopp når tomt (org-turneringer). Klikk åpner nå en ny delt
full-historikk-skjerm (hole-history-detail.tsx) med aggregerte tall og en
score-fordeling som fargede stolper -- samme CategoryBar-mønster som
round-stats.tsx, ingen ny graf-avhengighet. Ingen backend-endring.

tsc + 45/45 vitest, scratch-verifisert i begge flyter inkl. kombinert
historikk på tvers av runde-/turneringstyper og auto-hopp for hull uten
historikk (lys+mørk). Rullet ut.

Med dette er alle tre forbedringene i score-registreringen (ADR-077/078/079)
fullført.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-16 10:21:48 +02:00
46288c4b5f ADR-078: noter utrulling av egen skjerm for hull-detaljer
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-16 09:54:07 +02:00
b292401fe4 Chip/Bunker/Straffeslag/Anywayslag som egen skjerm (ADR-078)
Splittet ScoringWizard sitt "details"-steg i "direction"/"holeDetails",
og bygget om HoleStatsSheet (org-turneringer) fra én lang skjerm til
tilsvarende steg-flyt -- samme opplevelse i begge scoringsflyter, uten å
røre HoleStatsSheet sin egen (bevisst annerledes) lagringsmodell.

Visuell polering via V0: de fire tellerne fikk et 2x2-rutenett av
flis-kort i stedet for en 1-kolonne-stabel. Stepper-komponenten er delt
mellom begge flyter, så endringen gjelder automatisk begge steder.

tsc + 45/45 vitest, scratch-verifisert i begge flyter (lys+mørk). Rullet ut.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-16 09:53:16 +02:00
2ea4c26990 ADR-077: noter utrulling av tilbake-navigering i scoringsveiviseren
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-16 08:56:56 +02:00
c498bfca8f Tilbake-navigering til en tidligere spiller i scoringsveiviseren (ADR-077)
Kontekst-raden i ScoringWizard (alle spillerne, aktiv fremhevet) var
bevisst ikke-interaktiv ved bygging. Trygt å gjøre interaktiv nå: hvert
felt lagres allerede for seg med en gang (PATCH per felt), så bytte
spiller midt i et steg gir ingen datatap. Løser at man måtte fullføre
hele samlebånd-flyten for å rette opp en tidligere spillers feil.

tsc + 45/45 vitest, scratch-verifisert i nettleser (lys+mørk). Rullet ut.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-16 08:19:46 +02:00
f740814833 Order of Merit: offentlig/delt visning (ADR-076)
Siste av de tre gjenstående OOM-punktene fra ADR-043 (lag-OOM ADR-074,
eclectic på tvers av turneringer ADR-075, offentlig visning her).

Migrasjon 076: SECURITY DEFINER-bro public_order_of_merit_by_id, samme
anti-enumerering som public_org_by_slug/public_tournament_by_code. Ny
/public/order-of-merits/{id}-endepunkt (gjenbruker den eksisterende
leaderboard-beregningen direkte). Ny uautentisert frontend-side
modellert på public-club.tsx, "Del offentlig lenke" i innstillinger.

83/83 backend-tester, 45/45 vitest, scratch-verifisert i egen inkognito-
nettleserkontekst (ingen session-cookie). Migrasjon vist og bekreftet
før kjøring mot ekte teecup_db. Rullet ut.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-15 21:20:23 +02:00
fe13a82009 Order of Merit: eclectic-aggregering på tvers av lenkede turneringer (ADR-075)
Sesong-"drømmerunde" -- beste resultat per hull på tvers av ALLE lenkede
turneringer (stableford/brutto/netto), med samme-bane-håndheving ved
lenking og modus-bytte. Gjenbruker eclectic_best_per_hole() uendret fra
handicap_engine.py. Frontend: "Eclectic" lagt til i både opprettelses-
skjema og innstillinger, gated til gyldige kind/resultattype-kombinasjoner.

80/80 backend-tester, 45/45 vitest, scratch-verifisert i nettleser
(lys+mørk). Rullet ut.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-15 17:38:00 +02:00
5d502f305a Order of Merit: lag-leaderboard + eclectic-total-bug fikset (ADR-074)
Fikser først en reell bug: en lenket eclectic-scoret turnering bidro med
rå slagsum i stedet for eclectic_total (turneringens faktiske
"drømmerunde"-resultat) i stableford/brutto/netto-OOM-er -- bugen fantes
siden Eclectic-formatet ble bygget (ADR-068), OOM ble aldri revidert.

Bygger deretter lag-OOM sin leaderboard (ADR-043 Beslutning C, skjema
fantes fra migrasjon 055): ny CRUD for team/medlemmer, og leaderboard-
grenen for kind='team' som summerer/velger-beste-N-av medlemmenes
allerede beregnede individuelle OOM-resultater -- samme
order_of_merit_aggregate-kall gjenbrukt på lagnivå med OOM-ens allerede
lagrede aggregeringsvalg. Frontend: fjernet "ikke bygget ennå"-
plassholderen, den eksisterende leaderboard-tabellen var allerede
generisk nok. Ny lag-administrasjonsseksjon lagt til.

Ingen migrasjon. Se ADR-074/CHANGELOG for full detalj og verifisering.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-15 16:52:37 +02:00
3770509c46 CHANGELOG/ADR: noter utrulling av Ny runde-veiviser-fiksen (ADR-073)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-15 07:21:46 +02:00
bf6955bff6 Fiks: eierens statistikknivå/utslag ble ikke lagret i Ny runde-veiviseren (ADR-073)
Eierens spillerobjekt i ny-runde-veiviseren hadde egne teeId/statLevel-felt,
kun synkronisert fra state.teeId/state.statLevel ÉN gang da banen først ble
valgt. For utslag var dette kosmetisk (submit() leser state.teeId direkte
for eieren), men for statistikknivå en reell datafeil: "Statistikk for deg
selv"-valget i steg 2 hadde ingen effekt på eierens faktiske innsending,
som alltid endte på strokes_only uansett hva som ble valgt.

Erstatter den punktvise engangs-synken med én kontinuerlig useEffect i
wizard-context.tsx. Bruker-rapportert regresjon (video vedlagt) -- se
ADR-073/CHANGELOG for full detalj og verifisering.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-15 07:20:20 +02:00
bb087b4437 Spillerens per-hull-historikk på tvers av alle runder/turneringer (ADR-072)
Ny delt app/hole_history.py bygger broen mellom frittstående runders og
org-turneringers to ulike bane-identitetssystemer (teeoff facility+course-id
vs. org-scopet course.external_course_ref, og tilsvarende for GolfAPI) --
custom/håndlagde baner ekskluderes bevisst, ordinære baner telles med fra
begge kilder og slås sammen. Turneringssiden håndterer at spilleren kan ha
spilt i flere organisasjoner via samme N+1-per-org-mønster /auth/me
allerede bruker (player_organizations_for_user, migrasjon 015).

To nye GET .../history-endepunkt (rounds.py og individual_tournaments.py)
returnerer samme kombinerte historikk uansett hvilken side som spør. Nytt
HoleHistoryPanel i hole-stat-inputs.tsx viser et ekspanderbart sammendrag
(antall ganger, snitt slag, GIR%, putter) + enkeltinstanser, lagt til i
ScoringWizard og det nye HoleStatsSheet (ADR-071).

Ingen migrasjon -- ren lesefunksjon oppå migrasjon 075. Se ADR-072/
CHANGELOG for full detalj og verifisering (73 backend-tester, inkl.
integrasjonstest som beviser selve bane-broen på tvers av organisasjoner).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-15 06:51:51 +02:00
60ee6a7d16 Full statistikkdybde i org-turneringers hull-scoring (ADR-071)
tournament_round_hole hadde siden opprettelse (migrasjon 040) kun
gross_strokes -- ingen putts/utslag/innspill/bunker/straffeslag-detalj
slik frittstående runder (round_hole) allerede har. Migrasjon 075 gir
turneringssiden samme feltsett + en ny optimistisk-lås-kolonne (endepunktet
var til nå rent siste-skriver-vinner). tournament_participant.stat_level
styrer om HoleGrid åpner det uendrede inline-tallfeltet eller det nye
HoleStatsSheet. NumberPicker/ChoiceRow/DirectionCross/Stepper trukket ut
til en delt hole-stat-inputs.tsx for gjenbruk mellom begge scoringsflytene.

Dette er Steg 1 av to mot spillerens per-hull-historikk på tvers av alle
runder/turneringer -- se ADR-071/CHANGELOG for full detalj og verifisering.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-15 06:32:17 +02:00
467cbd1ec2 Samme "bla i eksisterende spillere"-fiks i lag-turneringers roster (ADR-070-tillegg)
AddPlayerControl i tournament-detail.tsx hadde samme begrensning som
AddParticipantControl hadde før dagens fiks: matches var kun avledet
ved ikke-tomt søk. Samme "available"-fallback-mønster lagt til her --
spillere på det andre laget forblir synlige (nedgradert), kun de på
DETTE laget ekskluderes. Ren frontend-endring, ingen migrasjon.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-14 19:55:44 +02:00
a8a2c602ce Utvidet spillerskjema i "Deltakere" -- bla i eksisterende + nye felt (ADR-070)
Migrasjon 074 legger til first_name/last_name/paid/comment på player
(resten av de 11 ønskede feltene fantes allerede, bare ikke eksponert i
denne UI-flyten). AddParticipantControl fikk et "available"-fallback
slik at eksisterende org-spillere vises direkte ved tomt søk (tidligere
kun mulig å opprette ny), pluss et progressivt avslørt skjema for de nye
feltene. Se ADR-070 og CHANGELOG #86 for full detalj og verifisering.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-14 15:08:45 +02:00
25b50d4e5b Noter at offline-kommentarutvidelsen (migrasjon 073) er rullet ut
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-14 11:52:33 +02:00
dd8a8c133d Offline kommentar-/bildeposting i rundefeeden (ADR-069)
Utvider den eksisterende offline-skrivekøen (ADR-028, hittil kun
hull-scoreføring) til også å dekke rundefeedens kommentarer/bilder.
offline-queue.ts fikk et isMultipart-flagg (Blob-verdier lagres nativt
i IndexedDB, flushQueue bygger FormData ved synk). round-messages.tsx
fikk sin egen isolerte kø (matchId scoped til "{roundId}:messages",
ikke bare roundId) og et optimistisk "Venter på synk"-kort.

Migrasjon 073: round_message.client_message_id (nullbar uuid) + delvis
unik indeks -- POST /messages er ulikt hull-score-PATCH IKKE naturlig
idempotent, så en avbrutt synk kunne duplisert en kommentar uten dette.
Klienten sender en selvgenerert id ved både første forsøk og et evt.
køet gjenforsøk; serveren deduplikerer på den.

Se ARCHITECTURE_DECISIONS.md (ADR-069) og CHANGELOG.md (punkt 85) for
full begrunnelse og verifiseringslogg (inkl. et reload-mens-offline-
scenario som beviser fravær av duplikater).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-14 11:51:30 +02:00
4286f9eee3 Noter at Del C (migrasjon 072) er rullet ut
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-14 11:13:30 +02:00
9b7ff8e2ef Eclectic-format for org-individuelle turneringer (Del C) + tre UI-rettelser
Del C (ADR-068, migrasjon 072, siste del av den tredelte utvidelsen som
startet med Flaggturnering GPS/kart, se ADR-066/067): nytt format
eclectic_gross/eclectic_net/eclectic_stableford -- beste resultat per
hull på tvers av en turnerings egne runder, krever samme bane (avvist
tydelig ved rundeopprettelse ellers). Regnes ut ved lesing, ingen nye
tabeller. Bevisst avvik fra opprinnelig plan: integrert som en ny gren
i eksisterende individual-leaderboard-endepunkt fremfor et nytt eget
endepunkt -- se ADR-068 for begrunnelsen.

Tre ikke-relaterte, brukerrapporterte UI-rettelser tatt med i samme
runde: avstandsindikatoren brukte "grønn"/"Midt" i stedet for riktige
golf-uttrykk "green"/"senter", og "Oppdateres live"-badgen fjernet.
"Antall hull"-bryteren i Ny runde-veiviseren fikk samme grønne
aksent-valgt-stil som resten av samme skjerm (delt Segmented-primitiv).

Se ARCHITECTURE_DECISIONS.md (ADR-068) og CHANGELOG.md (punkt 84) for
full begrunnelse og verifiseringslogg.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-14 11:12:25 +02:00
9b47e5da05 Noter at Del B (migrasjon 071) er rullet ut
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-14 10:39:59 +02:00
25bdabe3ea Flaggturnering: GPS-flaggplanting (Del A) + kartoversikt (Del B)
Del A (ADR-066, migrasjon 069/070, allerede rullet ut mot teecup_db):
"Plant flagget" via GPS, med en interaktiv "Hullet du ut?"-bekreftelse
før posisjonen registreres, pluss full runde 2+-scoreføring for
spillere som fullfører 18 hull med slag igjen. Ny, isolert overflow-
tabell (rører ikke delt round_hole/tournament_round_hole). Bygget for
både frittstående runder og org-individuelle turneringer. UI-sheeten
er en Claude-skrevet V0-eksport (zip 11).

Del B (ADR-067, migrasjon 071, klar for utrulling): av/på-bryter
(standard AV) for en satellittkartoversikt over ALLE deltakeres
plantede flagg, lap 1 skilt fra lap 2+ med farge+tekstbadge. Frittstående
runder får full tilskuerstøtte (/watch/[id]); org-individuelle
turneringer er bevisst avgrenset til medlemmer/deltakere, siden ingen
offentlig spectator-side finnes for det turneringsformatet ennå.

Se ARCHITECTURE_DECISIONS.md (ADR-066/067) og CHANGELOG.md (punkt 82/83)
for full begrunnelse og verifiseringslogg.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-14 10:38:54 +02:00