mirror of
https://github.com/karatektus/pl_mail.git
synced 2026-10-25 01:54:10 +00:00
latest followed the default branch, so every push to main went straight to the tag the README tells people to pull — including work in progress, and migrations that run automatically on boot. It now moves only on a v* tag; main still publishes under its own name for anyone wanting the tip. The roadmap listed three finished things as open, including the label refactor and the nested label UI, both of which shipped. A roadmap that under-reports is worse than none: it is the document a contributor reads to decide what to pick up. Corrected, with the genuinely open items described accurately and a note asking that it be kept honest. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2.7 KiB
2.7 KiB
Changelog
Notable changes per release. plMail runs its migrations automatically on boot, so anything that changes the schema irreversibly is called out explicitly.
The published image tags: latest follows the most recent release below,
main follows the tip of the default branch, and sha-… pins one commit.
Unreleased
Added
- Snooze. Put a conversation away and have it come back later — from the
message row, the list toolbar, or a JMAP client via the
Thread/setextension. Snoozed conversations get their own sidebar entry and view.app:mail:wake-snoozedruns every minute to bring them back. - JMAP draft attachments.
Email/setnow accepts uploaded blobs inattachments, per RFC 8621; drafts created over JMAP previously dropped them silently. - Login throttling. Five attempts per account per fifteen minutes on the password form, and a separate limit on the two-factor code form — which the firewall's throttling does not cover, and which is the form an attacker reaches holding a stolen password.
- PHPStan at level 5, with a baseline, in CI. Dependabot for composer, npm and GitHub Actions.
- LICENSE. The project has always said AGPL-3.0 in its README; the licence
text is now actually distributed with it, and
composer.jsonno longer contradicts it by claiming "proprietary".
Fixed
- Snoozing from the web UI did nothing but set a timer. No labels moved and nothing propagated, so the conversation stayed in the inbox — locally and at the provider — while its row vanished from the list. The sweep would then "wake" a thread that had never left.
- The snooze button on a message row cleared a snooze instead of setting one, and the toolbar's snoozed everything to a hardcoded 8am tomorrow.
- "Test connection" in account settings crashed with an
ArgumentCountErrorwhenever the form was incomplete or the password blank — the two cases it exists to report. - The admin Graph category sync caught an exception class that does not exist, so Graph failures propagated instead of degrading quietly.
- JMAP
Email/setrejected valid mailbox patches. CurrentmailboxIdswere emitted as label ids where the protocol expects per-account binding ids; since both are autoincrement ints, a patch removing one mailbox failed with "No such Mailbox".
Changed
latestis published from release tags only. It previously followed every push tomain, which meant the tag the README tells people to pull could carry unreviewed work and automatic schema migrations.- The login form no longer shows a "forgot password?" link. There is no reset
flow — recovery is a console command — and the link was an
href="#"that did nothing.