Changes in version 0.6.1 Documentation - A vignette carries one task end to end on synthetic or bundled data, offline, and is built and run by R CMD check. - Runnable @examples added or corrected across 26 help pages. Each runs offline in seconds, writes nothing outside tempdir(), and is executed by R CMD check; anything needing a device, a download or an optional backend is fenced with the reason stated. - The README's quick start runs as written: it attaches the package, builds its own inputs, and uses only hard dependencies. Changes in version 0.6.0 First-level cortical-activation GLM. - nirsActivationGLM(): fits every haemoglobin channel against HRF-convolved task regressors (per-condition boxcars over the stimulus blocks convolved with a canonical double-gamma HRF), a discrete-cosine drift basis, and optional short-separation nuisance regressors, returning per-channel/per-condition activation beta, SE and t. Supports a temporal-derivative basis and per-channel AR(1) prewhitening (fNIRS residuals are strongly autocorrelated, so naive OLS t-statistics are inflated). - nirsActivationContrast(): linear contrasts over the condition betas (estimate, SE, t, p per channel). Changes in version 0.5.1 - Fixed pruneChannels() / quality-contract validation on R >= 4.4.0: R 4.4 changed is.atomic(NULL) from TRUE to FALSE, so .nirs_quality_plain() wrongly rejected governed quality results carrying NULL optional-parameter sentinels (e.g. step_seconds = NULL) as 'stale or malformed'. NULL is now handled explicitly as a plain leaf (its pre-4.4 behaviour). - Made the MBLL reference-fixture self-consistency check portable: the stored intensity is recomputed from optical density via exp() (a transcendental whose last bit is toolchain-dependent), so the exact (tolerance = 0) compare is now tolerance = 1e-12 (~2300x above the measured cross-platform noise). File-hash governance is unaffected. Changes in version 0.5.0 - Add source-bound scalp-coupling, PHOEBE-style peak-power, and spectral SNR quality metrics with auditable mark/drop channel pruning. - Add a synchronous governed HbO neurofeedback controller that publishes atomic multi-target updates through PhysioStream biofeedback scopes. Changes in version 0.4.0 - Add source-bound short-channel identification, centred nearest/all short-separation regression, explicit physiology-band extraction, and GLM-ready nuisance-design matrices. Changes in version 0.3.0 - Add governed motion-artifact detection, TDDR, shift-invariant db2 wavelet correction, and cubic-spline correction. Changes in version 0.2.0 - Add governed natural-log optical density, differential pathlength, extinction-coefficient, and modified Beer-Lambert conversions. Changes in version 0.1.0 - Add strict SNIRF v1.1 continuous-wave read/write support. - Add governed measurement-list and source-detector distance helpers.