Skip to content

v0.2.4

Pre-release
Pre-release

Choose a tag to compare

@stefvdwater stefvdwater released this 12 Jun 12:31

OnTarget 0.2.4

Eerste stable na 0.2.3, met als kern een volledige backup-flow voor wedstrijden en een reeks UI- en betrouwbaarheidsverbeteringen.

Nieuw

  • Wedstrijd-backup (export & import). Elke wedstrijd kan nu geëxporteerd worden naar een JSON-bestand en later (zelfs op een andere installatie) opnieuw ingelezen worden, inclusief inschrijvingen, doelindeling en vergrendelde doelen. Bulk-export naar één map, multi-file import met conflict-modal (vervangen / als kopie / overslaan) en een samenvatting achteraf.
  • Backup-prompt bij destructieve acties. De bevestigingsmodals voor "Alle schutters verwijderen" en "Demo data laden" stellen nu eerst voor om alle wedstrijden te exporteren.
  • Open intervallen in de Afdrukken-doel-selectie. 2- (vanaf 2 t.e.m. einde), -3 (1 t.e.m. 3) en - (alles) zijn nu geldige uitdrukkingen, naast de bestaande 1-10, 15-syntax.

Verbeteringen

  • Aanmeldlijst is overal droppable. Een schutter van een doel terugslepen werkt nu wanneer je gelijk waar in de aanmeldlijst loslaat, ook bovenop een bestaande kaart. Bij drag vanaf een doel verschijnt een "Uit indeling halen"-overlay over de aanmeldlijst.
  • Stabiele pagina-layout bij tab-wissel. De pagina-inhoud verspringt niet meer enkele pixels wanneer de ene tab wel en de andere geen scrollbar nodig had. Alle scrollbars in de app (pagina, modals, lijsten, Afdrukken) zien er nu identiek uit, in light- én dark-mode.
  • Print-overzicht. Doel-blokken splitsen niet meer over twee pagina's. Doel-labels (1A, 1B, ...) volgen nu de werkelijke positie van de schutter, ook bij actieve filters of onvolledige doelen.
  • Schonere iconografie. Emoji's in de UI zijn vervangen door inline-SVG iconen die correct uitlijnen met de tekst.
  • Modals dismissen niet meer per ongeluk. Backdrop-klikken op de import-conflict-modal, CSV-import-review, schutter-formulier en alle bevestig-modals (verwijderen, leegmaken, herberekenen) zijn no-op geworden. Info-modals (resultaten) blijven via backdrop afsluitbaar.

Indelingsalgoritme

  • Geen valse "mono-gilde" of "TH-dubbel"-waarschuwing meer wanneer de hele zone slechts één gilde telt, of wanneer enkel tweede-helft-dubbelaars op een doel staan. Beide situaties zijn volgens de spec uitzonderingen.
  • R4-hard in mono-gilde-zones. Het algoritme schuift nu correct schutters door naar onderbezette normaaldoelen wanneer de zone één gilde telt, in plaats van te blokkeren op de 2-gilden-eis die voor zo'n zone niet haalbaar is.
  • Variabele compound-zone behouden na tab-wissel. Wanneer een compound-doel zonder compound-schutters tot 25m-doel was omgevormd, blijft die wijziging nu zichtbaar over tab-wissels heen (en in de print-preview), in plaats van terug compound te worden.

Onder de motorkap

  • Duurzame data-laag. Database-flush bij afsluiten van de app (laatste 500 ms aan wijzigingen gaat niet meer verloren), opvangbare foutmelding bij schrijffouten, en cascade-cleanup bij het verwijderen van een schutter zodat foreign-key-fouten verdwijnen.
  • Atomair-toegekende aanmeldvolgorde. Twee snelle inschrijf-clicks na elkaar krijgen niet langer hetzelfde volgnummer.
  • Debounce op wedstrijd-configuratie. Typen in naam of locatie schrijft niet meer per toetsaanslag naar de database.
  • Backup-formaat versiecheck spec-conform. Bestanden met onbekende of toekomstige schemaVersie krijgen een nette foutmelding in plaats van een onleesbare crash.

Volledige technische changelog

Zie internal-docs/RELEASE_0.2.4.md.