# Changelog

Toutes les modifications notables de ce projet sont documentées dans ce fichier.

Le format est basé sur [Keep a Changelog](https://keepachangelog.com/fr/1.1.0/)
et ce projet adhère au [Semantic Versioning](https://semver.org/lang/fr/).

## [Non publié]

### Ajouté

- `PhpIgcInspector::getGpsPoints()` : accès public aux points GPS du vol (enregistrements B parsés), avec parsing automatique du fichier si `validate()` n'a pas encore été appelé
- `PhpIgcInspector::passedNearPoint(float $latitude, float $longitude, float $proximityDistance)` : recherche si le vol est passé à proximité d'un point GPS, avec la distance de proximité en mètres en paramètre — retourne le point le plus proche, le premier point entré dans le rayon (avec horodatage) et le nombre de points dans la zone
- `PhpIgcInspector::maxDistanceFromPoint(float $latitude, float $longitude)` : distance maximale atteinte par le vol par rapport à un point de référence (en mètres, kilomètres et formatée), avec le point GPS le plus éloigné et son horodatage
- `PhpIgcInspector::getMaxSpeed()` : vitesse maximale du vol en km/h (les valeurs aberrantes > 400 km/h sont écartées lors du parsing)
- `PhpIgcInspector::getMaxAltitude()` : altitude barométrique maximale du vol (QNH, en mètres)
- `PhpIgcInspector::getMaxGnssAltitude()` : altitude GPS (GNSS) maximale du vol (en mètres)
- Documentation détaillée de l'analyse GPS dans `doc/ANALYSE_GPS.md`

### Corrigé

- `RecordTypeA` : un code fabricant inconnu (ex. `XXX`) provoquait un warning PHP « Undefined array key » ; `manufacturerName` vaut désormais `null` pour un fabricant non répertorié
- `RecordTypeB` : le parsing autonome d'un enregistrement B (sans objet flight) provoquait une `TypeError` (`is_nan(null)`)
- `AbstractRecordType` : dépréciation PHP 8.4 « Using null as an array offset » lors de l'extraction d'un enregistrement H ne correspondant à aucun format connu

### Modifié

- Le cache PHPUnit (`.phpunit.cache/`) n'est plus versionné
- Limite mémoire PHPUnit portée à 256 Mo (`phpunit.xml`)

### Tests

- Nouvelle suite de tests basée sur le fichier IGC d'exemple `doc/complex_example_lxn.igc` (vol réel de 25 459 points GPS) : lecture GPS, proximité d'un point, distance maximale, vitesse et altitudes maximales
- Fixture partagée `tests/ExampleFlightTestCase.php` : le vol d'exemple n'est parsé qu'une seule fois pour toute la suite (consommation mémoire divisée par deux)

## [1.0.0] - 2026-01-12

### Ajouté

- Version initiale préparée pour publication sur Packagist
- Parsing et validation des fichiers IGC (enregistrements A à L)
- Traitement des tâches (enregistrements C) : waypoints, départ/arrivée, distance de la tâche
- Traitement des événements (enregistrements E) : décollage, atterrissage, start, finish
- Validation des turnpoints par proximité GPS (`validTurnPoint()`)
- Statistiques dérivées : durée du vol, distance totale, vitesse moyenne et max, altitudes min/max (QNH, QFE, GNSS)
- Utilitaires GPS (`PhpIgcUtils`) : distance haversine, conversions de coordonnées IGC, formatage, validation de listes de points
- Extraction des enregistrements bruts par type (`rawExtract()`)
