Changes in version 0.7.2 o Fix: Corrected bias calculation for in `proxiscout_write_model_info`. o Fix: Removed the overly restrictive identification for repetitions in `proxiscout_read_data` that included the exact same measurement time. Changes in version 0.7.1 (2026-09-04) o Feat: new dataset `proxiscoutCannabis`, containing absorbance spectra of 192 cannabis samples measured with three ProxiScout devices at the 257 standard ProxiScout wavenumbers, together with eleven cannabinoid reference variables (`CBDA`, `CBG`, `CBD`, `CBN`, `THC`, `THCA`, `CBC`, `CBGA`, `CBD_total`, `THC_total` and `CBGt`). The set includes one deliberate outlier and a `deviceId` column usable as `validation_group`. o Deprecated: the dataset `NIRcannabis` was renamed to `proximateCannabis`, for consistency with the new `proxiscoutCannabis` dataset. The old name still works but is deprecated and will be removed in a future release. o Breaking: the dataset `NIRcannabis` was renamed to `proximateCannabis`, for consistency with the new `proxiscoutCannabis` dataset. The old name is kept as a deprecated copy and will be removed in a future release. o Docs: `proximateCannabis` and `proxiscoutCannabis` cross-reference each other, noting that they share neither samples nor reference values. o Feat: validation results now include the Mahalanobis (GH) distance, computed from scaled PLS scores, and the spectral (X-space) residual for each sample. Both are returned by `calibrate_models()` and `validate_prediction()` and are available for downstream analysis. o Feat: `plot.spectral_model()` gained a `validation_group` argument to colour validation samples by group, for example by instrument. o Feat: new "Leverage vs. Spectral Residual" validation plot, showing each sample's leverage and spectral residual relative to their control limits (dashed line at 1), with grouped colouring. o Feat: `predict.spectral_model()` returns per-component control limits for the leverage (new-observation Mahalanobis limit) and spectral residual Q (calibration quantile), configurable via `control_limit_conf` (default 0.99) and carried through `validate_prediction()`. o Misc: group argument checking for `sample_group` and `validation_group` refactored into a single internal helper. o Fix: `predict.spectral_model()` no longer misaligns `newdata` with `prep_wav_trim(trim_constant_edges = TRUE)`; the trimmed band is resolved at calibration time and reapplied deterministically. o Fix: the `nwp` fit method left `projection_m` out of its slope correction, so scores of new samples (and therefore their leverage and spectral residual) were wrong; predictions were unaffected. o Feat: `proxiscout_write_data()` also writes a `_metadata.csv` with the sample names and any leftover columns. o Fix: `proxiscout_write_data()` renames the correct `SNR`/`SRN` column to `deviceId` and honours integer `spc`. o Fix: `proxiscout_write_data()` now writes consistent `sampleName`/`deviceId` headers across all files (the spectra file previously used `Sample Name`/`Device Id`). o Tests: added unit tests for `proxiscout_write_data()`. o Fix: `proxiscout_read_data()` now treats `""`, `"-"` and `"NA"` as missing values when reading CSV and XLSX files, so numeric columns using these placeholders are read as numeric. o Fix: `extract_property_names()` no longer returns the internal `.repetition_group` column as a property for `proxiscout_data`. o Tests: added unit tests for `extract_property_names()` and the missing-value handling in `proxiscout_read_data()`. o Docs: documented the new arguments, validation statistics and plot, including in `model_plot_template.qmd`. Changes in version 0.7.0 (2026-08-04) o Feat: `proximate_read_data()` now automatically detects and handles UTF-8 vs Windows-1252/ANSI encoded TSV files, ensuring correct decoding of special characters in metadata regardless of locale. o Feat: improved merging logic in `proxiscout_read_data()` for spectral and reference files, with more robust column matching and documented support for repetition groups via the `.repetition_group` column. o Feat: `plot.spectral_model()` gained a new `sample_group` argument to colour plots by sample group. `scales` added to Imports. o Feat: added and exported `proxiscout_write_model_info()`, which writes model metadata to JSON. o Fix: `calibrate_models()` no longer reconstructs formulas from strings, using the original list instead, improving accuracy and robustness. o Misc: updated package logo. Changes in version 0.6.5 (2026-07-17) o Docs: fixed unescaped "<" characters in mathematical notation within `calibration_control.Rd`, which caused HTML validation errors on CRAN. o Tests: added unit tests for `proxiscout_write_model()` to guarantee the integrity of ProxiScout model serialisation across preprocessing recipes. Changes in version 0.6.4 (2026-06-30) o Hello world!