Commit graph

1265 commits

Author SHA1 Message Date
Manos Pitsidianakis
a27a28275b
Bump version to 0.8.8
Finally!

Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-11-19 16:14:21 +02:00
Manos Pitsidianakis
35fa8e94a6
melib/imap: gracefully retry without DEFLATE on BYE
If server replies with BYE, try one more time without DEFLATE.

Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-11-16 11:40:41 +02:00
Manos Pitsidianakis
3040521695
melib: make notmuch feature depend on maildir feature
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-11-15 19:16:08 +02:00
Manos Pitsidianakis
e9ec6761f9
melib: make base64 dep mandatory
base64 is used in melib::backends::utf7 without any sort of conditional
compilation. Make base64 a mandatory dependency.

Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-11-15 19:16:07 +02:00
Manos Pitsidianakis
7b1be139f2
melib: make mbox backend build by default
Allow mbox to be built without the `notify` dependency. Add feature
`mbox-notify` to provide that instead.

Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-11-15 19:16:07 +02:00
Manos Pitsidianakis
0e77bd5b4c
melib/email/compose/tests: add multipart mixed attachment test
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-11-14 20:35:53 +02:00
Manos Pitsidianakis
d5d3457914
melib/email/compose/tests: normalise test fn names
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-11-14 19:31:06 +02:00
Manos Pitsidianakis
c1901c962d
melib/email/compose: add Content-Type header for utf8 text plain attachments
We should be specifying that the charset is utf-8.

Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-11-14 19:30:26 +02:00
Manos Pitsidianakis
d21c686da7
melib/attachments: Make AttachmentBuilder::set_raw generic
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-11-14 19:28:36 +02:00
Manos Pitsidianakis
bcbcb012ef
melib/email/compose: ensure boundary always prefixed with CRLF
When printing multipart boundaries, e.g.
`--bzz_bzz__bzz__xxxxxxxxxxxxxxxxxxxxxxxxxxx` after ending a sub-part,
ensure there's a CRLF already at the end of the accumulator string
before adding the `--...` boundary tag.

Fixes #503 ("Sending attachments does not work properly")

Resolves: <https://git.meli-email.org/meli/meli/issues/503>
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-11-14 18:29:16 +02:00
Manos Pitsidianakis
320fddad41
melib/gpgme: disable layout tests on non-x86_64 hosts
The generated bindgen layout tests make hard-coded assumptions about
target specific sizes like pointers, let's disable them for now before
we figure out a better long-term solution for gpgme compatibility.

Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-11-04 23:04:11 +02:00
Manos Pitsidianakis
d2559e42e5
imap: return all mailboxes, not just subscribed ones
Meli previously returned only subscribed mailboxes for IMAP. This was
erroneous behavior for two reasons:

- the front end should be able to see all mailboxes because the user is
  allowed to change subscription settings for remote mailboxes from the
  manage-mailboxes interface
- special usage mailboxes, e.g. a Trash folder, would not be visible to
  meli if it was not subscribed

Fixes #508.

Resolves: <https://git.meli-email.org/meli/meli/issues/508>
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-11-04 15:13:40 +02:00
Manos Pitsidianakis
469168959f
melib/gpgme: s/NULL/NUL when referring to NUL byte
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-11-04 15:13:39 +02:00
Manos Pitsidianakis
50922d97b8
melib/README.md: update and fix feature table
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-11-04 15:13:39 +02:00
Manos Pitsidianakis
0d088962d5
lints: Address clippy::too_long_first_doc_paragraph
Ugh, annoying. It doesn't take the fact that markdown links do not
appear long when rendered. Anyway, fix them errors.

Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-11-04 15:13:39 +02:00
Manos Pitsidianakis
ee89794248
lints: deny clippy::or_fun_call
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-11-04 14:29:40 +02:00
Manos Pitsidianakis
441fda568c
terminal: move TextPresentation trait to melib
Since this is a text-related trait, let's move this to melib's text module
instead.

Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-11-04 13:40:33 +02:00
Manos Pitsidianakis
1b708a9990
melib: attempt FromSql from Blob for u64 hash
Attempt to parse u64 hash from Blob column type. This is to fix a
regression from the frontend storing envelope hashes as big endian byte
blobs instead of an i64.

Fixes #504

Resolves: https://git.meli-email.org/meli/meli/issues/504
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-10-16 21:06:56 +03:00
Manos Pitsidianakis
ae29494575
remove unused module file
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-10-14 16:04:38 +03:00
Manos Pitsidianakis
b2200ec3ab
Remove unused smtp tests
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-10-07 12:35:56 +03:00
Manos Pitsidianakis
c3cac77dee
Update imap-codec dependency to 2.0.0-alpha.4
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-10-07 12:35:56 +03:00
Manos Pitsidianakis
27486f2908
Accept newer versions of base64 dependency
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-10-07 12:35:56 +03:00
Manos Pitsidianakis
6cfe4da0c1
Enable rusqlite feature "modern_sqlite" always
Crate fails to build when dynamically linked.
The feature is implicitly enabled when statically linked,
as part of feature bundled-full.

Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-10-05 19:50:58 +03:00
Manos Pitsidianakis
b930cb4940
maildir: do not use rename_regex when only updating flags
Concerns #463

Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-10-05 18:33:12 +03:00
Manos Pitsidianakis
b8e841bbcd
jmap: implement mailbox deletion
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-10-05 09:41:50 +03:00
Manos Pitsidianakis
ca7eb79284
jmap: Implement deleting email
Finally!

Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-10-05 09:41:50 +03:00
Manos Pitsidianakis
39592ad02c
jmap: implement changing mailbox subscription
Finally!

Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-10-05 09:41:50 +03:00
Manos Pitsidianakis
6d0d968040
jmap: move EmailObject state to Store
State is per account, not per mailbox, so move it to the per-account
store.

Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-10-05 09:41:50 +03:00
Manos Pitsidianakis
4f927bbe64
nntp: properly return all nntp mailboxes
Previously only mailboxes specified in the configuration were fetched.
Now, all groups returned by `LIST ACTIVE` are examined with the
`is_subscribed` function.

Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-10-05 09:31:20 +03:00
Manos Pitsidianakis
5915f125c3
backends: use IsSubscribedFn in method signatures
Despite having the IsSubscribedFn struct wrapper for closures that check
if a mailbox is subscribed or not, backend methods were still using
  Box<dyn Fn(... types. Switch to using the wrapper newtype everywhere.

Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-10-05 09:31:20 +03:00
Manos Pitsidianakis
cd2e4bf3a4
melib/utils: vendor urn crate
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-10-05 09:31:19 +03:00
Manos Pitsidianakis
a6c7621ce3
jscontact: add {created,updated} fields
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-10-05 09:31:17 +03:00
Manos Pitsidianakis
7dee32ae88
contacts: refactor Card to its own module
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-09-24 09:28:53 +03:00
Manos Pitsidianakis
32f7e50fd4
Add version migration support
Add infrastructure for custom logic migration support between versions,
allowing breaking changes in for example configuration to be handled by
the application instead of the user.

The current version will be stored in ${XDG_DATA_HOME}/meli/.version

If at launch the versions do not match, the application will examine
whether there are any migrations in the range
previous_version..=current_version, and if they are applicable to the
user's case, it will ask the user to perform them interactively.

Support for reverting migrations is also added.

Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-09-24 08:14:31 +03:00
Manos Pitsidianakis
2069b4da09
errors: impl From<xdg::BaseDirectoriesError>
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-09-23 22:18:43 +03:00
Manos Pitsidianakis
8af003abd0
Rename addressbook stuff to "contacts"
Wasn't a nice name to begin with.

Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-09-23 09:44:00 +03:00
Manos Pitsidianakis
593ed22ba1
pgp: perform gpgme's sign+encrypt manually
gpgme's sign and encrypt API doesn't seem to work properly; it only
encrypts for some reason. Do it manually which according to RFC 3156 -
MIME Security with OpenPGP is to sign first then encrypt the whole
thing.

Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-09-22 17:18:42 +03:00
Manos Pitsidianakis
e0cfe8e4d7
Fix compilation for 32-bit architectures
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-09-21 13:06:02 +03:00
Manos Pitsidianakis
2001b4dd06
Make subscribed_mailboxes conf val optional
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-09-21 13:06:01 +03:00
Manos Pitsidianakis
1b201bf611
Remove GlobMatch trait, replace usage with Fnmatch
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-09-21 09:57:15 +03:00
Manos Pitsidianakis
be3b3ef89b
melib/utils: add fnmatch(3) interface
Meant for use with mailbox path globbing.

Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-09-21 09:48:44 +03:00
Manos Pitsidianakis
0b6988b7cf
gpgme: add always trust flag to encrypt op
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-09-19 18:41:08 +03:00
Manos Pitsidianakis
128b959f36
nntp: prepend Newsgroups header if missing on NntpType::submit()
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-09-17 10:44:55 +03:00
Manos Pitsidianakis
b27bac7f85
nntp: use DEFLATE when available by default
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-09-17 10:43:52 +03:00
Manos Pitsidianakis
6eeb4571b7
nntp: make all fields public
The backend structs are public, fields should be public too.

Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-09-17 10:42:59 +03:00
Manos Pitsidianakis
9a9cd03d9d
nntp: add NntpType::article_message_id() method
Add a method to retrieve an article by message id.

Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-09-17 10:40:41 +03:00
Manos Pitsidianakis
592ce15903
mbox: use Uuid::nil() as default envelope from
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-09-17 10:39:15 +03:00
Manos Pitsidianakis
fc3308e428
melib: Add Mail::as_mbox() method
While at it, cleanup Debug impl to prevent printing huge byte arrays.

Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-09-17 10:38:18 +03:00
Manos Pitsidianakis
b33433e457
Don't create backends as Box<dyn MailBackend>, but as Box<Self>
It's unnecessary and makes it difficult for an API consumer to turn a
backend back to its original type.

Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-09-17 10:35:55 +03:00
Manos Pitsidianakis
5f120309f9
nntp: add select_group_by_name() method
Add NntpConnection::select_group_by_name() method.

Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2024-09-14 12:52:52 +03:00