Manos Pitsidianakis
7936aef476
Fix infinite watch threads spawning
...
Watch threads were launched every time the account's online status was
checked, added a check to only do it when it was previously offline.
5 years ago
Manos Pitsidianakis
749d453f00
ui: add query parsers
5 years ago
Manos Pitsidianakis
61fa6d3d4b
ui: show supported IMAP CAPABILITIES list in Status
...
In status page for IMAP accounts, show a list of CAPABILITIES and
whether meli supports them
5 years ago
Manos Pitsidianakis
f56b89dde3
melib: add as_any() method to MailBackend trait
...
Cast the trait object into an &Any object. Then we can downcast it to
its actual type with downcast_ref().
5 years ago
Manos Pitsidianakis
d926cadc4d
melib: remove argument from MailBackend operation()
...
The operation() method on the MailBackend trait returns a trait object
that can read or modify an Envelope directly from the backend. This is
used to get eg the envelope's text, or set flags. It has two arguments,
envelope hash and folder hash.
Only the Maildir backend needed the latter argument, and it can be replaced with a dictionary to match envelope hashes to folder hashes within the Maildir backend.
5 years ago
Manos Pitsidianakis
78eecbb104
melib: Hide Envelope behind RwLock
...
Envelope can now only be accessed from within a RwLock. Two new structs
are introduced: EnvelopeRef and EnvelopeRefMut. These hold a reference
to an Envelope and the mutex guard that keeps them alive.
This change allows sharing of the envelopes hash map amongst threads.
5 years ago
Manos Pitsidianakis
d1184d4ea5
ui/search: add sorting in search
5 years ago
Manos Pitsidianakis
3af6f338ce
add sqlite3 feature WIP
5 years ago
Manos Pitsidianakis
0566937a76
imap: reconnect if connection timed out
5 years ago
Manos Pitsidianakis
e5b6faf6bd
Add account online status
...
Add a boolean field to accounts that states if the account can be
accessed. Local backends (Maildir/mbox) return true every time, but
remote backends (IMAP) may not. Accounts start as offline and then get
initialised when their status goes to online. Right now if an IMAP
account startup but later get offline, there are crashes. With this
change the account can be switched back to offline when that happens.
5 years ago
Manos Pitsidianakis
1a02491f04
ui/compose: add modification detection
...
Detect if modifications were done to the draft in the compose tab so
that we can ask for confirmation if user wants to quit an unsaved draft.
5 years ago
Manos Pitsidianakis
5beed91df2
contacts: add support for externally managed contacts
...
Adds support for contacts (Cards) marked as `external_resource` which
prevents modifications from happening. No way to import external
contacts is added yet.
5 years ago
Manos Pitsidianakis
dc525b9ddd
contacts: make CardId an enum
...
CardId is the "Primary Key" of the contact type, Card. Meli-created
contacts had UUIDs for their CardId. In order to import external
contacts and ensure their primary key is the same each time, CardId is
made into an enum to add hashing as a choice.
5 years ago
Manos Pitsidianakis
f3e08c17aa
Update uuid dependency to 0.7.4
5 years ago
Manos Pitsidianakis
cfe6138c44
melib: add VCard parsing for contacts
...
Add rough VCard conversion for melib::Card, to use eventually with
contacts.
5 years ago
Manos Pitsidianakis
52a89ddf94
Add license comment to melib/src/structs.rs
5 years ago
Manos Pitsidianakis
d32f0982a9
melib: StackVec fixups
...
Fix bound checks and add clear() method
5 years ago
Matthias Beyer
a0602274f8
Run cargo fmt
5 years ago
Manos Pitsidianakis
b7edec0274
Bump version to 0.3.2
5 years ago
Manos Pitsidianakis
47d60f480a
Add path shell expansion to logging and attachments
5 years ago
Manos Pitsidianakis
e35a93336a
Add GPG signing and sig verifying
5 years ago
Manos Pitsidianakis
5a262f3ffc
maildir: check for moved mail before moving
...
When moving mail from new/ to cur/ in a Maildir folder, don't panic if
it fails; someone else must have moved it.
5 years ago
Manos Pitsidianakis
250129665b
Pass attachment names through decoding
...
Attachment names in Content-Type parameters can be encoded (eg
=?UTF-8...), so try decoding with phrase() first
5 years ago
Manos Pitsidianakis
68c40a2920
melib: return Result with error when an IO operation fails
...
Don't unwrap anything because this might be temporary, for example a
short IMAP disconnection.
5 years ago
Manos Pitsidianakis
9d69a06807
melib: add ShellExpandTrait
...
Add trait to expand "~" and environment variables in paths.
5 years ago
Manos Pitsidianakis
0ece51612f
update bincode to 1.2.0
5 years ago
Manos Pitsidianakis
fa121820f7
Bump version to 0.3.1
5 years ago
Manos Pitsidianakis
c44056a9ff
melib: fix bug in parser::parts
...
At a certain point when expecting a line terminator parts() checks for
'\n' but not '\r\n'. This resulted in all multipart attachments coming
from b"\r\n" sources like IMAP having only one part when parsed.
5 years ago
Manos Pitsidianakis
91ae539de1
Small fixes
5 years ago
Manos Pitsidianakis
f27b815aa7
Add verification of GPG signed messages
5 years ago
Manos Pitsidianakis
9305e543cf
melib: add a `body` field to Attachment
...
Attachment needs to know the range of bytes where the body part of the
attachment is located. The Attachment.raw field contains the entire
attachment, headers and body. The new Attachment.body fields contains a
`StrBuilder` which contains the offset and length of the body part inside
`raw`.
5 years ago
Manos Pitsidianakis
5a53020f3d
Add debug-tracing feature to all crates
...
The feature needs to be defined in all manifests in order to be enabled
in all crates.
5 years ago
Manos Pitsidianakis
ee82ae175a
imap: add support for imaps connections
...
Take port value and a `use_starttls` flag from the configuration file.
5 years ago
Manos Pitsidianakis
9563007069
Turn off debug tracing prints in stderr by default
5 years ago
Manos Pitsidianakis
6e75160b70
melib: turn unicode algos and backends into features
5 years ago
Manos Pitsidianakis
f066f35410
melib: add get_tags to support subaddressing
5 years ago
Manos Pitsidianakis
bee1502499
melib: make References public
5 years ago
Manos Pitsidianakis
32fe8a8b9b
melib: move email.rs back
5 years ago
Manos Pitsidianakis
7accae1774
melib: split address.rs from email.rs
5 years ago
Manos Pitsidianakis
b08001ca5d
melib: create address.rs from email.rs
5 years ago
Manos Pitsidianakis
93de60b6d1
maildir: allow Maildir stores as root_folder
...
Allow top level directories that are not valid maildir folders but
include maildir folders as root_folder of an account.
5 years ago
Manos Pitsidianakis
fb7b038ee1
ui: add set_seen shortcut in {Compact,Conversation}
...
Shortcut sets an entire thread as seen.
5 years ago
Manos Pitsidianakis
7dc3efaedd
imap: allow conn to be offline and retry on demand
...
Split the TlsStream of the live IMAP connection to an enum to allow both
offline and online states. The connection is restarted if offline when
requested.
5 years ago
Manos Pitsidianakis
b98ce8828c
melib: fix wrong validation in Maildir save()
...
Path of folder was compared to folder names and saving to eg
'INBOX/Sent' would not result into mail being saved to Folder { name:
'Sent', path: 'INBOX/Sent' }
5 years ago
Manos Pitsidianakis
79212621af
Bump version to 0.3.0
5 years ago
Manos Pitsidianakis
8795c2da4f
ui: small configuration fixes
...
- unused options were removed,
- renamed `index` conf option to `index_style`
5 years ago
Manos Pitsidianakis
080b8ae775
imap: add log entry on connection retry & failure
5 years ago
Manos Pitsidianakis
9e2bfa22b1
melib: add logging module
5 years ago
Manos Pitsidianakis
817c338a13
melib: fix metadata updates in Envelope updates
5 years ago
Manos Pitsidianakis
059d86de93
map: restart connection on failure in read_lines
5 years ago
Manos Pitsidianakis
bfc36f63de
imap: add byte cache for Envelopes in IMAP backend
5 years ago
Manos Pitsidianakis
f394fde143
add priority and info to jobs and workers
...
jobs now have a priority given to them, in order to parse some mailboxes
(eg INBOX, Sent) first.
worker threads now can set their names and status
5 years ago
Manos Pitsidianakis
81a55abc7c
Update crossbeam to 0.7.2 and remove chan
5 years ago
Manos Pitsidianakis
ecb3fd7f3d
Add dyn keyword to Trait objects
...
And fix some unused var warnings as well
5 years ago
Manos Pitsidianakis
d1d11356db
imap: get() ENVELOPE instead of RFC822.HEADER; it's faster
5 years ago
Manos Pitsidianakis
335a1011de
imap: add watch
5 years ago
Manos Pitsidianakis
c3e3c98fb0
melib: filter subscribed folders in MailBackend::new()
5 years ago
Manos Pitsidianakis
64dc44f18f
imap: replace unwraps with checks
5 years ago
Manos Pitsidianakis
525bd16493
imap: add folder operations in backend
5 years ago
Manos Pitsidianakis
c9f7b41e47
imap: continuous payload delivery in async workers
5 years ago
Manos Pitsidianakis
c561814cd6
imap: add `danger_accept_invalid_certs` option
5 years ago
Manos Pitsidianakis
c2c5f2db69
melib: add Failure to RefreshEventKind
5 years ago
Manos Pitsidianakis
0812242f60
Add IMAP backend
...
TODOs: new message events (untagged responses)
5 years ago
Manos Pitsidianakis
3f7d962abd
melib: remove ThreadTree, use ThreadNodes for root_set
...
Remove ThreadTree index in Threads {} struct. Keep a Vec<ThreadHash> for
root_set state of mailbox instead of rebuilding ThreadTrees every
time.
5 years ago
Manos Pitsidianakis
dc2184a9de
melib: add Folder operations in mail backends
...
Add following operations in mail backend:
- Create,
- Delete,
- Subscribe,
- Unsubscribe,
- Rename
5 years ago
Manos Pitsidianakis
1328f994f3
Make config objects Serializable with serde
5 years ago
Manos Pitsidianakis
b474b44b10
Add special use semantics for mailboxes
5 years ago
Manos Pitsidianakis
76909a1959
add folder subscriptions
5 years ago
Manos Pitsidianakis
84a042411d
melib: remove unnecessary unsafe impls
5 years ago
Manos Pitsidianakis
89b1e381dc
melib: recreate removed email if it comes back
...
If an email is removed by an outside actor, it is marked as removed.
Renaming files first send a Remove event and then a Rename one. So if a
removed email turns out to have been renamed by someone else, issue a
Create event to get it back.
5 years ago
Manos Pitsidianakis
fed13816dd
Bump version to all workspace crates
5 years ago
Manos Pitsidianakis
22f11445e2
Print error and exit if Maildir path config is wrong
5 years ago
Manos Pitsidianakis
bc7da4610e
Send MailboxUpdate events when threads are updated
...
Depending on the insertion order of folders which is non-deterministic
because it relies on the kernel's scheduling of parsing threads, the
listing the user sees might not be up-to-date because later thread
updates are never broadcast. This results in inconsistencies between
threads and mail listings when a thread's root envelope was part of a
not broadcast update leading to `key not found` panics in a listing's
hashmaps.
5 years ago
Matthias Beyer
79becdcc42
Fix: This comment is not a proper rustdoc comment and probably should not be one anyways
...
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
5 years ago
Matthias Beyer
fb36dc58c8
Remove unused variable
...
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
5 years ago
Manos Pitsidianakis
2492bc91b2
melib: add attachment_from_file()
5 years ago
Manos Pitsidianakis
ac04195007
maildir: mark removed paths
...
Remove events almost always come immediately before Rename events,
showing that the previous name of a file is removed and then renamed.
Keep proper tabs by marking removed paths instead of actually removing them.
5 years ago
Manos Pitsidianakis
c87ed5012d
melib: add attachment support in email/compose.rs
5 years ago
Manos Pitsidianakis
391e5b5d13
melib: tighten bounds check in email/parser.rs
5 years ago
Manos Pitsidianakis
d73069bc80
melib: add Other and OctetStream content types
5 years ago
Manos Pitsidianakis
c17bb24f0d
melib: refactor attachments and attachment_types interfaces
5 years ago
Manos Pitsidianakis
7592e66d6a
maildir: drop mutexes before calling add_path_to_index
5 years ago
Manos Pitsidianakis
572944e917
melib: add version from Cargo manifest to User-Agent field
5 years ago
Manos Pitsidianakis
38da6c83b9
melib: add read-only support for mbox
5 years ago
Manos Pitsidianakis
8a0e702127
melib,ui: add MailboxEntry enum
...
Use an enum to describe a mailbox's state in ui::conf::Account instead
of Result.
5 years ago
Manos Pitsidianakis
d84ceca88e
create text_processing crate
5 years ago
Manos Pitsidianakis
a00e3fcbde
melib: fix bounds checking for StackVec
5 years ago
Manos Pitsidianakis
a62f1d6c01
add read-only option in accounts
5 years ago
Manos Pitsidianakis
14f1527e61
melib: remove BackendOpGenerator
5 years ago
Manos Pitsidianakis
cfb6fd3fde
melib: return raw body instead of headers in MaildirOp::fetch_body
5 years ago
Manos Pitsidianakis
85a70d656b
melib: restore stringified variable print
5 years ago
Manos Pitsidianakis
8ab79d5829
fix missing grapheme in mime encoded string
5 years ago
Manos Pitsidianakis
93f3d6e230
remove std::dbg uses
5 years ago
Manos Pitsidianakis
70e5949590
ui: add autocomplete for commands in execute bar
5 years ago
Manos Pitsidianakis
a655a85b5f
ui: fix replies not being synced and inserted properly on RefreshEvents
5 years ago
Manos Pitsidianakis
6906142278
melib: don't exclude whitespaces in mime encoded words
5 years ago
Manos Pitsidianakis
f33594fba8
melib: reply to In-Reply-To address if available
5 years ago
Manos Pitsidianakis
f4f3b87f84
ui: add selections to CompactListing
...
Select multiple entries by pressing 'v'. Set read/unread and delete
actions are then performed on the selected entries.
5 years ago
Manos Pitsidianakis
8c97336307
ui: add set as read/unread, delete actions
...
Implemented only in compact listing for now.
5 years ago
Manos Pitsidianakis
2d7f9ca46f
melib: rename files after getting lock in maildir
5 years ago