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
Manos Pitsidianakis
c34a55dcac
melib: Correctly use StackVec capacity, add test
5 years ago
Manos Pitsidianakis
04fc510ea8
meli: insert new standalone nodes in insert_reply
5 years ago
Manos Pitsidianakis
ba1d0c42e0
melib: add struct and parser for mailto: links
5 years ago
Manos Pitsidianakis
43084eda01
melib: implement FromIterator, IntoIterator and Iterator for StackVec
5 years ago
Manos Pitsidianakis
ee07aa8686
melib: add other_headers field in Envelope
...
Store headers with non-hardcoded names in a hash map.
5 years ago
Manos Pitsidianakis
24831b3c13
Fix warnings, lints, and 2018 errors
5 years ago
Manos Pitsidianakis
f1c72588c3
Add authors to Cargo.toml of each package
5 years ago
Manos Pitsidianakis
5a9ee50bbc
don't add newlines in encoded words
5 years ago
Manos Pitsidianakis
9d7d7300c0
wcwidth: add emoji table
5 years ago
Manos Pitsidianakis
f0bd999f8c
parser: fix empty header value when header is last or when prefixed with
...
'\n'
when an empty header is last, the rest of the body keeps getting parsed
as headers. when header starts with '\n' because the value is long, the
value gets parsed as a name and the header parser fails.
closes #100
closes #101
closes #122
5 years ago
Manos Pitsidianakis
8a07087393
add testing crate with emailparse bin
5 years ago
Manos Pitsidianakis
d772d10d66
merge FirstName/LastName fields in Contacts
...
First names and Last names are an anglocentric concept and do not apply
cleanly to the rest of the world's cultures.
5 years ago
Manos Pitsidianakis
d0039740b0
melib: add has_attachments property to Envelope
...
Check subattachments in has_attachments check.
Instead of getting a flattened attachment view of multipart/mixed (eg
[multipart/mixed, text/plain, text/plain]) get only the subattachments
(eg [text/plain, text/plain]). Don't count text-only multipart/mixed as attachments
5 years ago
Manos Pitsidianakis
03317d74ca
melib: correct out of bounds access
5 years ago
Manos Pitsidianakis
c6674a294d
melib: unwrap mailbox module
5 years ago
Manos Pitsidianakis
6f7b3f20de
move StackVec to melib
...
closes #120
5 years ago
Manos Pitsidianakis
42654410e3
ui: move Collection to Account
...
Each account had one mailbox per folder, which had one associated
collection. Now each Account has one Collection for all folders and each
Mailbox object holds only the hashes of each message.
Collection also gets Threads for each folder in order to mix messages
(ie from/to Sent folder).
Insert Sent emails in chronological order
if inserted unsorted, mails a, b with a happened-before b, might never
get added.
Fix multiple insertions in ThreadTree upon insert_reply
insert_reply was creating multiple copies in threading
5 years ago
Manos Pitsidianakis
eff1c1641c
melib: track modified paths in maildir
...
Keep modified path status in maildir to prevent not-found panics
5 years ago
Manos Pitsidianakis
d3208f6a3d
End of line in grapheme_clusters?
5 years ago
Manos Pitsidianakis
f51ea93351
move grapheme stuff to melib
5 years ago
Manos Pitsidianakis
6504a141f3
melib: dont allocate new string
5 years ago
Manos Pitsidianakis
3c575c823d
ui: toggle thread snooze flag
...
snooze field translated to whether the user wants to be notified of new
email in the thread or not. This is toggled with an (temp) EX cmd: `toggle_thread_snooze`
closes #112
5 years ago
Manos Pitsidianakis
22d868f499
save Account to disk
...
closes #114
5 years ago
Manos Pitsidianakis
4582bcd5ae
fix warnings and lints
5 years ago
Manos Pitsidianakis
3bc22abdff
ui: draw thread arrows correctly in other sortings
...
thread arrows in ThreadListing weren't drawn correctly when subsorting
was changed (eg date -> subject)
has_sibling was delegated to ThreadsIterator.
5 years ago
Manos Pitsidianakis
1e7e99f499
melib: return $val in debug!
5 years ago
Manos Pitsidianakis
a0b1a079b8
ui: add "application/pgp-signature" content type
5 years ago
Manos Pitsidianakis
b943941e60
melib: format maildir/backend.rs
5 years ago
Manos Pitsidianakis
13fba8d35b
melib: drop MutexGuard before calling add_path_to_index
...
In some cases add_path_to_index was called with the mutex already held,
and a deadlock occurred.
5 years ago
Manos Pitsidianakis
dad7c09158
melib: detect plain text in multipart/alternative
5 years ago
Manos Pitsidianakis
355fb63b16
melib: link threads with empty intermediates
...
A thread's chain link would get broken when empty intermediate
ThreadNodes exist. The pruning of the empty node did not properly chain
the empty node's parent with the empty node's children.
Old behaviour:
- [A]
/* [B] is missing */
- [C]
/* [D] is missing */
- [E]
New behaviour (`x` represents deleted links)
- [A]
|
|xxx> [empty node of B]
| x
| x
| \/
|_______>[C]
|
|xxx> [empty node of D]
| x
| x
| \/
|_______>[E]
5 years ago
Manos Pitsidianakis
0e3b8f54d9
melib: fix address_spec parse without displayname
...
addresses like "<user@domain.tld>" were parsed as "ser@domain.tld". Fix
this by checking for displayname length.
5 years ago
Manos Pitsidianakis
9afeb648f7
melib: keep old_hash in Collection temporarily
...
When renaming envelopes, keep old_hash in collection until we receive an
EnvelopeRename event in ui
5 years ago
Manos Pitsidianakis
325bb5bff2
add literal print to debug!
5 years ago
Manos Pitsidianakis
59135be983
melib: fix typo and unused val
5 years ago
Manos Pitsidianakis
1f2c0b4fa7
melib: multipart/mixed with html messages not displayed as html
5 years ago
Manos Pitsidianakis
8ef470fb15
add name in single var print in debug!
5 years ago
Manos Pitsidianakis
fb406667ab
add debug! macro to replace eprintlns
5 years ago
Manos Pitsidianakis
a03bd80199
ui: watch root_folder instead of every folder
5 years ago
Manos Pitsidianakis
3790f68e3f
ui: file_name() does not return full file_name
...
move_to_cur doesn't retain the full envelope name when moving
5 years ago
Manos Pitsidianakis
1e44089d84
ui: Refer to child/parents with FolderHash in BackendFolder
...
- use a stack to build folder order list in conf/accounts.rs
- update side menu print
5 years ago
Manos Pitsidianakis
596194fa47
melib: fix debug prints not debug-build only
5 years ago
Manos Pitsidianakis
499113acd2
melib: encode header values
...
closes #102
5 years ago
Manos Pitsidianakis
f348cc9a55
melib: add fqdn to MID
5 years ago
Manos Pitsidianakis
87adc6dd19
melib/ui: refer to Folders by FolderHash
5 years ago
Manos Pitsidianakis
04eb8d926f
ui: remove debug_log feature, add log positions
5 years ago
Manos Pitsidianakis
a29e39f5ef
ui: fix `editing messages duplicates headers`
...
closes #94
5 years ago
Manos Pitsidianakis
d9a3b03e2b
melib: create new threadnode if it's missing inside rebuild_thread
5 years ago
Manos Pitsidianakis
4bf1f6b9c9
ui: make Composer account specific
5 years ago
Manos Pitsidianakis
cfb7dcec64
ui: make html filter optional in config
...
closes #92
5 years ago
Manos Pitsidianakis
067a8e5c81
Run clippy for 2018 edition
5 years ago
Manos Pitsidianakis
ee4462881e
run cargo fmt
5 years ago
Manos Pitsidianakis
1c7aa0ec9c
update to 2018 edition
5 years ago
Manos Pitsidianakis
ac0e2cbe44
melib: fix invalid folder hierarchy in Backend::folders()
5 years ago