Home › project › changelog
Changelog
Twelve releases since March 2024. Two of them changed results for the same input, and both are marked below; if you are comparing old numbers with new ones, those two entries are the only ones you need to read.
Machine-readable: Atom feed of these releases.
| Version | Date | Headline | Changes results |
|---|---|---|---|
| 0.9.3 | 2026-10-02 | reference time bug in reconstruct | yes, if ref_time was passed |
| 0.9.2 | 2026-07-30 | blocked normal equations, 3.4 times faster | no |
| 0.9.0 | 2026-05-12 | native irregular sampling, gap filling | no |
| 0.8.0 | 2026-01-20 | coverage floor, catalogue grown to 68 | no |
| 0.7.0 | 2025-09-16 | breaking rename, Solution object | no |
| 0.6.0 | 2025-06-03 | quality-control module | no |
| 0.5.2 | 2025-03-11 | MU2 speed corrected | yes, for MU2 only |
| 0.5.0 | 2025-01-28 | nodal correction, on by default | yes, by a few per cent |
| 0.4.0 | 2024-10-09 | command-line interface | no |
| 0.3.1 | 2024-07-22 | phase convention fixed | yes, sign of the lag |
| 0.2.0 | 2024-05-07 | residuals and the flagged reader | no |
| 0.1.0 | 2024-03-18 | first public release | - |
0.9.3 - 2 October 2026
- Fixed:
reconstructignored theref_timestored on a solution and used the record midpoint instead. Anyone who passed an explicit reference time and then reconstructed got a phase-shifted series. Solutions themselves were always correct, so re-runningreconstructon an old JSON file is enough to repair affected output. - Fixed: the
netcdf-cfreader accepted a time units attribute with a non-UTC offset and then discarded the offset. It now raises instead. - Documentation rewritten around one worked example, which is how this site came to exist.
0.9.2 - 30 July 2026
- Normal equations are accumulated in blocks of 50 000 samples rather than building the whole design matrix at once. Peak memory for a ten-year six-minute record dropped from 0.96 GB to 88 MB and the fit became 3.4 times faster.
- Results are unchanged to the last printed digit; a regression test compares the block path against the old one on the synthetic record.
0.9.0 - 12 May 2026
- Irregular sampling is handled natively. Earlier versions required a regular step and silently resampled, which is exactly the kind of quiet behaviour this project is supposed to avoid.
- Added
fill_gaps, which writes flag 5 on every value it invents. - Removed: support for Python 3.9. The floor is now 3.10.
0.8.0 - 20 January 2026
- Added
min_coverage, default 0.75, and the matching--min-coverageflag andCoverageError. Before this release a record that was 90 per cent gaps would be analysed without complaint. - Catalogue grown from 37 to 68 constituents, mostly shallow-water compounds. The default resolvable set for a given span is unchanged.
- Added
levelsfor mean high and low water estimates, which reports the averaging window alongside the numbers.
0.7.0 - 16 September 2025
- Breaking:
fit()becameanalyse()and returns aSolutionobject instead of a dictionary of arrays. The old name was removed rather than deprecated, which was the right call at version 0.6 and would be the wrong one now. - Added
inferwith the standard ratio pairs for short records. - Fitted values are bit-identical to 0.6.0 for the same input; only the shape of the return value changed.
0.6.0 - 3 June 2025
- New
qcmodule:flag_spikes,flag_gaps,flag_flatandsummary. - Flag 5 reserved for filled values, two releases before anything wrote it.
0.5.2 - 11 March 2025
- Fixed: the catalogue carried 27.9682048 degrees per hour for MU2 instead of 27.9682084, a transposition present since the first release. The error shifted MU2 phase by roughly 0.4 degrees over a year-long record and left every other term untouched. It was found by a user comparing against an independent analysis, not by our tests, and the catalogue is now checked against period values computed independently at import time in the test suite.
0.5.0 - 28 January 2025
- Added the 18.61-year nodal correction and made it the default. Lunar amplitudes change by up to about four per cent against 0.4.0 output, which is why this entry is marked as changing results.
nodal=Falsereproduces the old behaviour exactly.
0.4.0 - 9 October 2024
- Command-line interface with the
analysesubcommand and JSON output. - Exit codes defined and documented, so the tool can be used in a pipeline.
0.3.1 - 22 July 2024
- Fixed: phase was returned as a lead rather than a lag, inverting its sign against every convention in the field. Any phase from 0.1 to 0.3.0 should be negated before use.
0.2.0 - 7 May 2024
- Added
residualand thecsv-flaggedreader. - Gaps are kept as NaN with a flag instead of being dropped from the arrays.
0.1.0 - 18 March 2024
- First public release: one reader, a 37-constituent catalogue,
fitandreconstruct. Written to re-analyse one old harbour record and published because the alternative was keeping it in a notebook.