Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,47 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [0.1.28](https://github.com/encryption4all/cryptify/compare/v0.1.27...v0.1.28) - 2026-08-07

### Added

- configurable email attribute type for the finalize sender check ([#193](https://github.com/encryption4all/cryptify/pull/193))
- *(metrics)* require a bearer token on /metrics when configured ([#177](https://github.com/encryption4all/cryptify/pull/177))
- persist rolling-quota usage to SQLite (usage_db) ([#176](https://github.com/encryption4all/cryptify/pull/176))
- add GET /email-template endpoint keyed on API key ([#175](https://github.com/encryption4all/cryptify/pull/175))
- *(metrics)* capture X-POSTGUARD-CLIENT-VERSION client identity ([#174](https://github.com/encryption4all/cryptify/pull/174))
- *(email)* remove circle around signer-verified checkmark ([#173](https://github.com/encryption4all/cryptify/pull/173))
- *(email)* replace unicode checkmark with inline PNG image ([#172](https://github.com/encryption4all/cryptify/pull/172))
- *(email)* staging-only /staging/preview/<uuid> + shared render API ([#171](https://github.com/encryption4all/cryptify/pull/171))
- *(metrics)* pre-seed known channels at zero on startup ([#165](https://github.com/encryption4all/cryptify/pull/165))
- expose Prometheus /metrics endpoint for usage dashboards ([#102](https://github.com/encryption4all/cryptify/pull/102))

### Fixed

- retry the startup verifying-key fetch instead of panicking ([#192](https://github.com/encryption4all/cryptify/pull/192))
- *(cors)* allow X-Cryptify-Source in browser preflights ([#189](https://github.com/encryption4all/cryptify/pull/189))
- *(email)* larger, selectable download-link code block in recipient email ([#187](https://github.com/encryption4all/cryptify/pull/187))
- return generic body from 5xx responses, log detail server-side ([#185](https://github.com/encryption4all/cryptify/pull/185))
- require validated API key on GET /usage (GHSA-5rhx-xgvv-h78h) ([#183](https://github.com/encryption4all/cryptify/pull/183))
- *(cors)* allow Office add-in origins (addin.postguard.eu + localhost:3000) and DELETE method ([#179](https://github.com/encryption4all/cryptify/pull/179))
- *(email)* address postguard#197 deliverability + show disclosed signer name ([#170](https://github.com/encryption4all/cryptify/pull/170))

### Other

- retire Docker build/push, publishing moved to postguard ([#206](https://github.com/encryption4all/cryptify/pull/206))
- README banner — development moved to postguard, crate is cryptify/
- tune the oasdiff gate's severity settings and pin them with a test ([#203](https://github.com/encryption4all/cryptify/pull/203))
- add the oasdiff breaking-change gate ([#201](https://github.com/encryption4all/cryptify/pull/201))
- true up api-description.yaml with the mounted routes ([#200](https://github.com/encryption4all/cryptify/pull/200))
- remove unused irma dependency ([#199](https://github.com/encryption4all/cryptify/pull/199))
- remove unused qrcode, strum and strum_macros deps ([#195](https://github.com/encryption4all/cryptify/pull/195))
- extend CLAUDE.md with migrated agent notes ([#190](https://github.com/encryption4all/cryptify/pull/190))
- update dependencies ([#181](https://github.com/encryption4all/cryptify/pull/181))
- *(deps)* cargo update lockfile ([#168](https://github.com/encryption4all/cryptify/pull/168))
- replace pkg_url with https://pkg.postguard.eu/ ([#178](https://github.com/encryption4all/cryptify/pull/178))
- bump pg-core 0.6.0 → 0.6.1 ([#164](https://github.com/encryption4all/cryptify/pull/164))
- add semantic PR title check workflow ([#162](https://github.com/encryption4all/cryptify/pull/162))

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The 0.1.28 notes are missing a change that ships in this release: commit e700804, chore: bump lettre 0.11.21 -> 0.11.22 (RUSTSEC-2026-0141), dated 2026-05-16 and after the v0.1.27 tag (git merge-base --is-ancestor e700804 v0.1.27 is false).

Root cause: PR #160 was landed with a merge commit (6a003d2 Merge pull request #160 from encryption4all/chore/cargo-audit-159) instead of a squash, so release-plz only saw the merge subject, which is not a conventional commit, and dropped it. The two merge commits in the range are 6a003d2 and f88807a; the latter is the previous release PR (#149) and correctly earns no entry, so #160 is the only real casualty.

Worth fixing because it is the only RUSTSEC advisory fix in the release, and readers of the notes would not otherwise know it is included.

Suggested change
- add semantic PR title check workflow ([#162](https://github.com/encryption4all/cryptify/pull/162))
- add semantic PR title check workflow ([#162](https://github.com/encryption4all/cryptify/pull/162))
- bump lettre 0.11.21 → 0.11.22 (RUSTSEC-2026-0141) ([#160](https://github.com/encryption4all/cryptify/pull/160))


### Security

- require a validated API key on `GET /usage` and reject unauthenticated callers with 401 (GHSA-5rhx-xgvv-h78h)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The GET /usage hardening is now listed twice inside the same 0.1.28 section: once auto-generated under ### Fixed (line 31, require validated API key on GET /usage (GHSA-5rhx-xgvv-h78h) (#183)) and again here under the hand-written ### Security.

Both hand-written Security bullets came from PR #183, so they do belong to 0.1.28 and release-plz reparenting them out of [Unreleased] landed them correctly. The leftover is just the duplicate.

Trim this line rather than the ### Fixed one, since release-plz regenerates the auto sections on every release. The constant-time cryptify_token bullet on line 53 has no auto-generated counterpart, so it stays.

Suggested change
- require a validated API key on `GET /usage` and reject unauthenticated callers with 401 (GHSA-5rhx-xgvv-h78h)

Expand Down
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "cryptify"
version = "0.1.27"
version = "0.1.28"
authors = ["David Venhoek <david@tweedegolf.com>"]
edition = "2021"
repository = "https://github.com/encryption4all/cryptify"
Expand Down