Files
typikon/CHANGELOG.md
T
funkpower 7970f785c8 fix what a 1.0 would have welded into PyPI metadata
An adversarial review of the release, and four of its findings were things
PyPI never lets you replace once uploaded.

  - rust-version said 1.74. clap has needed 1.85 since 4.6, and cargo
    hard-errors rather than warning, so the sdist advertised a floor it could
    not build on. docs/releasing.md sends macOS and Windows users to that
    sdist.
  - The wheel was classified Development Status :: 4 - Beta on a release the
    changelog calls stable, with none of the Python version classifiers PyPI
    indexes on.
  - Six README links were relative. PyPI resolves them against the project
    page, so every one 404'd there, as they do on the live 0.2.0 page now.
  -  in that order packs the wheel into the
    sdist. The tarball on disk was 431KB with an x86-64 binary inside it.

Also: twine upload gains --skip-existing, so a retry after a partial upload
finishes rather than dying on a version that cannot be reused; twine check
gains the renderer that makes it parse the description at all, without which
it returns None and reports PASSED; and the README no longer claims a
twenty-year sweep the test did not run, because 366 * 21 / 4 is five years.
The test now runs the twenty-one it was named for.

The crates.io name belongs to an unrelated project, which the README now says
rather than leaving a reader to find out from cargo.
2026-09-18 13:41:41 -04:00

75 lines
3.5 KiB
Markdown

# Changelog
Notable changes, in the terms [docs/versioning.md](docs/versioning.md) sets out.
**Calendar** entries change what a day reports, whatever the version number
does.
## 1.0.0
First stable release. The public surface is now the one described in
[docs/versioning.md](docs/versioning.md), and breaking it requires a major
version.
### Calendar
Everything below changes what a day reports against pre-1.0 versions.
- A saint of vigil or polyeleos rank now relaxes a weekday of a fast: to wine
and oil inside the Great Fast, as far as fish in the Nativity, Apostles' and
Dormition Fasts. 74 days across 2020 to 2030 had been reported stricter than
any published calendar keeps them, St Nicholas and the Forty Martyrs of
Sebaste among them.
- The Annunciation is tested before Great Friday and Great Saturday. In the
years it falls on either it had been absorbed into them: reported as a total
fast, demoted to a bullet, and its rank overwritten. It now lifts those days
to wine and oil.
- Lazarus Saturday and Palm Sunday belong to the Great Fast season. They had
belonged to none, so rules that key on the season fell through and the
Byzantine Catholic jurisdictions reported no fast at all on Palm Sunday.
- The eves of the Nativity and Theophany relax to wine and oil when they fall
on a Saturday or Sunday.
- Greek usage admits fish on any day of the Nativity Fast but Wednesday and
Friday until 17 December. Slavic usage keeps fish to Saturdays and Sundays.
- The Protection of the Theotokos is a great feast in Slavic usage.
- The Nativity of the Forerunner is ranked a great feast.
- Melkite, Romanian Greek Catholic and Ukrainian Greek Catholic jurisdictions
no longer report any day as binding. They had borrowed Ruthenian particular
law, which is not their law.
### Added
- Greek and Slavic usage as an explicit axis, per jurisdiction and overridable
with `--tradition`.
- `--typikon` and `--no-typikon`: show a day at the Typikon's full discipline
while still reporting what a church's own particular law obliges.
- `--format csv` and `--format tsv`, with `--fields` and `--list-fields`.
- `--no-emoji`.
- The rank marks the liturgical books print, as the `sign` field.
- ACROD, the American Carpatho-Russian Orthodox Diocese.
- `--set-default` remembers the tradition and the discipline alongside the
jurisdiction.
### Packaging
- Requires Rust 1.85, which is what the dependency tree has needed since clap
4.6. `rust-version` had said 1.74, so the source distribution claimed to
build on toolchains where cargo refuses outright.
- Classified as production/stable, with the Python version and platform
classifiers PyPI indexes on, and Changelog, Documentation and Issues links.
- README links are absolute, because PyPI does not resolve relative ones and
every one of them 404'd on the project page.
### Changed
- Rewritten in Rust. It ships as one static binary with the menologion compiled
in, and as an abi3 wheel. The port was verified by running it against the
previous implementation over 199,446 day-records, 26 jurisdictions across 21
years, requiring every field of every record to match.
- iCalendar folds content lines on octets, which is what RFC 5545 counts. It
had folded on characters, so a line with emoji ran up to 80 octets against a
75-octet limit.
- The seven-day view elides a long commemoration on a word boundary and takes
its width from the terminal, rather than cutting at 44 characters mid-word.
- A malformed `--date` or an out-of-range `--year` is a usage error, not a
traceback.