chore: update dependencies
test: introduce `test-full` feature for some tests
Some of the tests require a running IMAP test server. So far, they were
simply `#[ignore]`'d. Use a feature to enable them instead. To run all
tests, simply run `cargo test --features test-full`.
refactor: state cache overhaul
Access to the state is now consolidated in functions, some of the more
surprising mutations have been removed, (internal) documentation and
tests have been added. There is now a dedicated `RootState` struct, the
creation of which is faster (does not calculate local changes) but only
exposes the subset of information which is required for it to do its
job.
chore: start generating changelogs for releases
The changelogs will be based on "conventional commits", generated by
cocogitto.
fix: don't drop INBOX state changes in root state
The state representation, specifically for local changes, has become a
bit over-optimized, to the point that simply loading and saving the
state will potentially alter it. The INBOX's state also acts as the root
state, which is loaded (and potentially altered and saved) during
mailbox discovery. This could cause changes to the INBOX state become
lost during that process.
For now, fix this by using a simpler state representation when loading
the root state. Mid-term, the state data structure should be adapted to
handle all use-cases properly.
test: add testing of deletion of local mail
This currently fails.
test: adapt integration test to latest changes
Disable new lint until the code is cleaned up
Update and clean up dependencies
Check for LIST-STATUS extension
Use extended LIST for fetching mailboxes
The LIST-STATUS extension (RFC 5819) allows requesting certain mailbox
properties to be sent along with the LIST response. This enables
retrieval of the mailbox list with each mailbox's HIGHESTMODSEQ, which
in turn makes it possible to skip mailboxes which have no changes
without even requesting their status explicitly.
Absent any remote changes, this reduces the work performed for a sync to
a single LIST command (plus login/logout), greatly improving performance
when polling often.
Limit threads to number of mailboxes to process
Cargo update: pull in rust-imap 3.0.0-alpha.10
Update to latest vomit version
Unfortunately includes an API change. Also, misc cleanups.
Prepare relase v0.7.1 for vsync crate