20.63.8-live-runtime-stability-fix-test
- Livefragment använder konsekvent timezone-aware UTC och kraschar inte på blandade timestampformat.
- Dashboard och Live är read-only mot resultatdatabasen; endast schedulern utför automatisk Min Golf-sync.
- UX-telemetri är fail-fast vid SQLite-lock och får inte blockera produkttrafik.
- Nya CI-regressionstester täcker runtime-stabiliteten.
v20.49.0
Competition Location Integration: vägavstånd, restid, filter och sortering i tävlingsrekommendationer.
Changelog
v20.31.0-foundation
Tillagt
- Förbättrat dokumentationscenter.
- Systemstatussida under
/docs/status. - Komplett systemdokumentation.
- Systemarkitekturdokument.
- Drift- och deploymentguide.
- Utvecklingsguide.
- API-översikt.
- Säkerhets- och datadokument.
- Architecture Decision Records.
- Roadmap.
Ändrat
- Dokumentationsportalen får vänstermeny och tydligare layout.
- Dokumentlistan får stabil ordning och läsbara titlar.
Principbeslut
- Framtida releaser ska levereras som kompletta releasepaket.
- Ingen större funktion anses färdig förrän dokumentationen är uppdaterad.
v20.30.1-docs
Tillagt
- Första versionen av inbyggd dokumentationsflik.
v20.30.0-beta1
Tillagt
- Git- och releaseflöde.
- Test- och produktionsmiljö med separata brancher.
- Git Worktree.
- Docker-image och
.dockerignore.
v20.29.2-hotfix
Stabil baslinje
- Första stabila Git-baslinjen.
- EntryList API används för anmälningslistor.
- Svenska Juniortouren fungerar.
20.34.0-result-importer-foundation-test
- Modulärt parserlager för historiska resultat.
- Typad normaliserad resultatmodell.
- Första Golf.se-parsern med referensfixture.
- Komplett parser-till-databas-test.
20.35.0
- Secure Golf.se URL retrieval and HTML upload.
- Signed two-step result preview and confirmed import.
20.36.0
- Införde Min Golf Integration Layer.
- Bytte liveimport från HTML-skrapning till Min Golfs JSON-API.
- Lade till automatisk upptäckt och hämtning av samtliga tävlingsklasser.
- Lade till normalisering av Min Golf-resultat till
CompetitionDocument. - Lade till regressionstester baserade på verkliga API-svar.
20.37.0-historical-data-platform-test – 2026-07-20
- Introducerar historisk discovery och delta-synk för Min Golf scratch-juniortävlingar.
- Lägger till
competition_sourcesochhistorical_sync_runs. - Återanvänder befintlig söklogik och normaliserad resultatimport.
- Lägger till 4 regressionstester för historisk synk.
- Rättar heredoc-hanteringen i
scripts/export_developer_bundle.sh.
20.38.0-smart-synchronization-test – 2026-07-21
- Added shared SyncService and isolated SyncPolicy.
- Skip successfully synchronized competitions older than 30 days before result API fetch.
- Retry FAILED sources automatically.
- Added progress, ETA, retry and duration statistics.
- Added additive database migrations and architecture decision records.
20.38.1
- JSM Klubblag och lagmatchspel markeras som ej stödda i stället för FAILED.
- Ny statistik
skipped_unsupportedoch lagradskip_reason.
20.39.0-incremental-synchronization-test – 2026-07-21
- införde åldersstyrda kontrollintervall för redan importerade tävlingar,
- dagens och pågående tävlingar kontrolleras fortfarande vid varje körning,
- lade till körningsresultatet
SKIPPED_FRESH, - sparar
skipped_fresh_counti synkhistoriken, - gjorde intervallen konfigurerbara via miljövariabler,
- utökade
--force-refreshså att även intervallen kringgås, - lade till sex regressionstester för inkrementell synk.
20.40.0-historical-results-experience-test
- Responsiv spelaröversikt och spelarprofil.
- Responsiv tävlingsprofil och resultatlista.
- Progressiv informationsvisning för historik och statistik.
- Navigering mellan spelare och tävlingar.
- Fem nya regressionstester.
20.41.2-club-name-normalization-test – 2026-07-28
- Införde central normalisering av klubbnamn i presentationslagret.
- Slog ihop kända Landeryd-alias under visningsnamnet
Landeryds GK. - Utökade klubbsökning och klubbresultat så att alla alias ingår.
- Lade till regressionstester för dubblettfri klubblista och sammanslagna resultat.
20.53.9-entry-identity-refresh-and-link-regression-fix-test
- Återställer
canonical_player_iddirekt efter att Min Golf har ersatt anmälningsrader. - Säker exakt matchning på namn och klubb samt entydig namnfallback.
- Nya regressionstester för den verkliga orsaken till försvunna spelarlänkar.
- Äldre strukturkänsliga tester anpassade till den centraliserade renderingsfunktionen.
20.54.0-ci-release-foundation-test
- Inför plattformsneutral CI-startpunkt med fast/full/release-lägen.
- Lägger till metadata-, syntax-, test-, Docker- och artefaktkontroller.
- Gör releaseartefakter immutabla genom att neka överskrivning av samma version.
- Avgränsar produktionsdeploy och releasegate till senare CI/CD-etapp.
20.60.2
Se RELEASE_NOTES_v20_60_2.md för klassindelad resultatpresentation och komplett manuell discovery/synk.
20.60.3 – Result presentation refactor
Tävlingsprofil och live-dashboard använder nu gemensamma klass- och könssemantiker i result_classes.py.
20.61.0 – Unified Dashboard Experience
- En universell sökning för spelare, klubbar och tävlingar.
- Fyra stabila huvudområden på dashboarden.
- Ny UX-konstitution i
docs/UX_PRINCIPLES.md.
20.61.1 – Dashboard completeness and live refresh
- Enhetliga domännamn i dashboard och navigation.
- Grupperad universell sökning med klubbprioritering.
- Informationsrikare dashboardkort.
- Aktiv omsynk av förfallna live-tävlingar.
- Klubbfilter i Live; spelarspecifik Live följs från spelarprofilen.
20.61.2 live score parity
Dashboarden visar alla pågående tävlingar och topp tre per faktisk Min Golf-klass/resultatlista. Källans klassnamn bevaras.
20.62.0-live-engine-stable-test – 2026-08-08
- Etablerar Live Engine Stable som testmilstolpe efter 20.61-seriens diagnostik, snapshot-repair, parity guard och auto-repair.
- Dokumenterar den permanenta referensuppsättningen med åtta verkliga Min Golf-tävlingar.
- Fryser kontraktet Min Golf -> normalisering -> snapshot -> paritetskontroll -> lifecycle/visibility -> presentation.
- Dokumenterar att accepterad 20.61.11-bas hade 300 gröna CI-tester och
stage=OKför alla åtta Live Trace-referenser. - Ingen ny produktionslogik eller databasmigration i denna milstolpe.
20.63.2-dashboard-ux-complete-test
- Dashboarden reducerad från fyra till tre huvudområden.
- Live och historiska resultat samlas under Live & resultat och
/resultat. - Resultatförhandsvisning visar endast tävlingar med verkliga resultatrader.
- Resultatlösa dagens tävlingar döljs från livepresentation efter 20:30 svensk tid men fortsätter synkas.
- Mobilnavigationen följer samma tre områden.
- Berörda regressionstestkontrakt uppdaterade i samma patch.
20.63.3 – Live Refresh
- Live-pollning 30 s, scheduler 10 s, klientuppdatering 15 s och stale-indikering efter 120 s.
20.63.5-live-stale-snapshot-refresh-test
- Live presentation guard refreshes every due live snapshot, not only empty snapshots.
- Added regression coverage for score/hole changes with unchanged player count.
20.63.6-live-scheduler-decision-diagnostics-test
- Adds scheduler RUN/SKIP decision tracing and an on-disk scheduler heartbeat.
- Adds
live_scheduler_trace.shto diagnose whether the daemon scheduler is alive, sees a competition as due and actually invokes the sync path. - No Live scheduling or result-import policy is changed in this diagnostic release.
20.63.7-live-scheduler-starvation-fix-test
- Rättar Live-scheduler starvation: lifecycle-maintenance flyttar inte längre fram en redan planerad poll före due-kontrollen.
- Lägger regressionstest för upprepade scheduler-ticks och korrekt reschedule efter faktisk sync.
20.63.9-analysis-request-nonblocking-test
- Removed synchronous Min Golf EntryList refresh from player/tournament analysis requests.
- Analysis now reads the persisted snapshot immediately and records whether external refresh is deferred.
- Added regression tests for non-blocking analysis request behavior.
20.63.10-live-results-history-filter-test
- Utökad Live & resultat med 20 historiska tävlingar, klubbfilter på samma sida, webbläsarlokala senaste klubbfilter och Min Golf-länk på historiska tävlingar.
20.63.11-results-workspace-complete-test
- Resultatdelen på
/resultatfår klubb-, datum- och tävlingsfilter. - Klubbval visar automatiskt senaste 14 dagarna och endast tävlingar där klubbens spelare har resultat.
- Varje tävling visar klubbens spelare med placering, klass och score; spelarnamn länkar till spelarprofil.
- Historiska tävlingar behåller intern tävlingslänk och Min Golf-länk.
20.63.16-competition-planning-workspace-foundation-test
- Ny tävlingsplaneringsyta med framtida tävlingar.
- Filter på tävlingsdatum och sista anmälningsdag.
- Direktlänk till Min Golf från varje tävlingskort.
20.64.1 – Competition deadline parsing and backfill
- Parsar
details.entryDatesmed svenska månadsförkortningar inklusive punkt. - Fyller
registration_deadlineochentry_close_datefrån intervallets slutdatum. - Lägger till idempotent lokal backfill från
competitions.raw_json. - Lägger regressionstest för observerade Min Golf-värden.
v20.64.3
Nästa deadlinespå startsidan väljer och sorterar nu på framtida anmälningsdeadline i stället för framtida tävlingsdatum.
v20.65.1
- Qualification engine för Svenska Juniortourens uppflyttningsplatser.
- Uppflyttningsstatus visas i anmälningsfält och påverkar rekommendationsprognosen.
- Personlig behörighetsfiltrering för lag-/kvaltävlingar och Svenska Juniortourens ålder/handicap.
v20.65.2
- Hela anmälningsfältet integrerat i tävlingsanalysen.
- Sortering på SGF-ranking, därefter handicap.
- Uppflyttningsplatser markerade direkt i det integrerade fältet.
- Tyst 12-tävlingsgräns borttagen från rekommendationssidan.
v20.65.3
- Rekommendation filtrerar bort tävlingar där sista anmälningstiden passerat eller saknas.
- Befintlig scoring, qualification-logik och full-period-visning är oförändrade.
v20.65.4
- FK-säker retention av redundanta COMPLETED
result_importsefter lyckad import. - Nytt cleanup-script med dry-run som standard.
- Live-hämtning, parser, parity och normaliserade resultat lämnas oförändrade.
v20.65.5
- Central false-by-default kill switch för golf.se/Min Golf server-side HTTP.
- Scheduler skippar SGF competition- och Live-synk när OFF.
- GolfData-ranking lämnas utanför spärren för separat rättighetsbedömning.
v20.65.6
- Master kill switch för all server-side extern HTTP, default OFF.
- GolfData, routing och geokodning stoppas tillsammans med SGF/Min Golf.
- Lokal DB fortsätter driva spelar-, tävlings-, resultat- och analysvyer.
- UI markerar offline/testläge och tidsstämplar lagrade anmälningslistor.