Manos Pitsidianakis
c5fe511d95
notmuch: don't remove tags from tag_index
...
When removing a tag, we shouldn't also remove it from the tag index.
4 years ago
Manos Pitsidianakis
b2857955e4
notmuch: add NewFlags, Remove and Create events
4 years ago
Manos Pitsidianakis
8648b229ad
Add AccountHash to RefreshEvent
...
Different accounts might have same inboxes with same MailboxHashes. Use
the hash of the account's name to differentiate.
4 years ago
Manos Pitsidianakis
eb701695f7
Remove fnv crate
4 years ago
Manos Pitsidianakis
b5b9982d9e
notmuch: cache messages by msg-id, not path
4 years ago
Manos Pitsidianakis
3ea1ce5454
errors: add `source` field to MeliError
4 years ago
Manos Pitsidianakis
d915c4a7c8
text_processing: remove invalid unreachable!()
4 years ago
Manos Pitsidianakis
2c549f5fcb
Refactor comments in notmuch/bindings.rs
4 years ago
Manos Pitsidianakis
2230e5705d
notmuch: LOCK database only when needed
...
Reported in https://git.meli.delivery/meli/meli/issues/24
4 years ago
Manos Pitsidianakis
b00d3c28c5
parser: fix panic on invalid encoded_word, display_addr
...
found by cargo-fuzz
4 years ago
Manos Pitsidianakis
5981f98f17
parser: fix panic on invalid message id
4 years ago
Manos Pitsidianakis
f2ecb81612
parser: fix panic on invalid input
...
Found with cargo-fuzz
4 years ago
Manos Pitsidianakis
5d07a5147b
datetime: fix panic on invalid cstr conversion
4 years ago
Manos Pitsidianakis
330134af5a
maildir: update mailbox unread count on file rename event
4 years ago
Manos Pitsidianakis
e9a935dbf7
melib: add search method in mail backends
5 years ago
Manos Pitsidianakis
3d7b9ff7cb
Move Query to melib
5 years ago
Manos Pitsidianakis
c37d8bd331
imap: add mutex timeout lock and remove unwraps
5 years ago
Manos Pitsidianakis
5842a63e37
melib: ignore Draft body if empty for multipart mail
5 years ago
Manos Pitsidianakis
ad2a51891b
melib: print attachment name in Display for text/*
5 years ago
Manos Pitsidianakis
6ccb9d3d75
melib/src/email/address.rs: Fix invalid UTF8 panic
...
In StrBuilder::display there's an assumption that the string is valid utf-8 but if an email contains an invalid string inside the MIME encoded word part the conversion panics. Change it to a lossy UTF-8 conversion instead. Fixes #19
Reported-By: cycomanic
5 years ago
Manos Pitsidianakis
9afb636894
melib/email: fix whitespace duplication in mime encoding
5 years ago
Manos Pitsidianakis
8eca8b34ed
jmap: fix two error messages
5 years ago
Manos Pitsidianakis
c77af98b26
imap: prevent deadlock in operations.rs
...
imap/operations.rs could deadlock with imap/watch.rs when both lock the
main IMAP connection but both also need to lock UIDStore
5 years ago
Manos Pitsidianakis
5c2b93ee18
jmap: add parser for rfc3339 dates
...
Reported-by:cycomanic
Concerns #18 https://git.meli.delivery/meli/meli/issues/18
5 years ago
Manos Pitsidianakis
61be6e4c96
notmuch: fix wrong mailbox path in save()
...
mailbox path was passed to save_to_mailbox() with a cur/ tail and
save_to_mailbox() added an extra cur/ tail
5 years ago
Manos Pitsidianakis
7a770c7f7b
imap: fetch RFC822 instead of RFC822.HEADER
...
RFC822.HEADER is not parsed in imap/protocol_parser.rs
5 years ago
Manos Pitsidianakis
a8c1016f37
Add various logic checks
5 years ago
Manos Pitsidianakis
6ca8c3b964
imap: add server_password_command
5 years ago
Manos Pitsidianakis
1811fb51cb
Fix unused imports/code compiler warnings
5 years ago
Manos Pitsidianakis
651dda67cf
Respect autoload mailbox setting
5 years ago
Manos Pitsidianakis
a3600c0cd2
Add `filter` option in mail list
...
Filter mail in mail list.
Example:
[listing]
filter = "not flags:seen" # show only unseen messages
5 years ago
Manos Pitsidianakis
6c76db2063
Add delete, copy actions for envelopes
5 years ago
Manos Pitsidianakis
6079909f9c
imap: add managesieve connection
...
So far only the connection is implemented, and using the
testing/manage_sieve binary you can get a shell to a managesieve server.
The managesieve interface will be used in the UI from a plugin, but the
plugin's interface isn't implemented yet.
5 years ago
Manos Pitsidianakis
6b2a1f7757
imap: Don't fail on WouldBlock on ImapBlockingConnection
5 years ago
Manos Pitsidianakis
ca51077f53
imap: Add support for untagged FETCH (FLAG.. messages
...
IDLE connection can get untagged "* FETCH (FLAGS ({flag_list))" messages
if any client has changed flags. Support this refresh event.
5 years ago
Manos Pitsidianakis
c1a64d6c33
Add imports in tag_hash macro
5 years ago
Manos Pitsidianakis
33c1bf6558
Add consume newlines flag to phrase()
5 years ago
Manos Pitsidianakis
303c530488
Load libnotmuch dynamically
5 years ago
Manos Pitsidianakis
ac71d627f1
Implement search for CellBuffer
5 years ago
Manos Pitsidianakis
4ac52d9d5b
Replace every use of Folder with Mailbox
...
Use Mailbox for consistency.
5 years ago
Manos Pitsidianakis
1245eae0be
Add Knuth–Morris–Pratt to pager
5 years ago
Manos Pitsidianakis
45c0160cb6
Fix ThreadListing
...
ThreadListing was broken after the ThreadGroup introduction
5 years ago
Manos Pitsidianakis
68007a0842
View decoded email source by default
...
Toggle between decoded/raw source with view_raw_source shortcut, default
M-r
5 years ago
Manos Pitsidianakis
499fd59c6e
melib/imap: implement refresh()
5 years ago
Manos Pitsidianakis
bbdc9d69b4
melib/imap: add ImapConnection::connect()
5 years ago
Manos Pitsidianakis
f38d03e43a
melib: {create,delete}_folder returns updated folders
...
Potential parent folders will have their children fields updated, so
just return all folders.
5 years ago
Manos Pitsidianakis
9a46e58029
imap: don't retry command on reconnection
...
If a command fails and connection is restarted, don't try the command
again; it only made sense in the previous connection's context.
5 years ago
Manos Pitsidianakis
b6efb14824
melib: remove Mailbox
...
Refactor Collection from melib to hold what folders have what envelopes.
Frontend accounts will now have a FolderEntry for each logical folder
and will unify many Account fields into one and eliminate a lot of
duplicate/dead code.
5 years ago
Manos Pitsidianakis
e26ed83331
Update native-tls to 0.2.3
5 years ago
Manos Pitsidianakis
c678b16711
melib/jmap: fix macro path
5 years ago
Manos Pitsidianakis
9616fbb544
melib/maildir: fix wrong subscription status in folders
...
MaildirFolder::new() was checking for subscribed status though that is
supposed to be done in MaildirType::new()
5 years ago
Manos Pitsidianakis
b107424258
melib: update GlobMatch algorithm
...
Taken from https://research.swtch.com/glob
5 years ago
Manos Pitsidianakis
6b7dea35dc
melib/parser: fix minor encoded word error
5 years ago
Manos Pitsidianakis
6afac835e0
melib/datetime: fix overflow panic on early date input
5 years ago
Manos Pitsidianakis
f131e01bfc
Fix drawing getting stuck in empty terminal
...
Fix drawing getting stuck in loops when terminal is too small by
checking for it.
5 years ago
Manos Pitsidianakis
f5e694cf5a
Make small cosmetic fixes
5 years ago
Manos Pitsidianakis
f208948651
melib: add mailbox delete/create to IMAP
5 years ago
Manos Pitsidianakis
05b91f1c02
Remove text_processing
...
Unwrap text_processing into melib
In preparation for uploading meli as a separate crate on crates.io.
5 years ago
Manos Pitsidianakis
8b6ea8de9a
Remove ui crate
...
Merge ui crate with root crate.
In preparation for uploading `meli` as a separate crate on crates.io.
Workspace crates will need to be published as well and having a separate
`ui` crate and binary perhaps doesn't make sense anymore.
5 years ago
Manos Pitsidianakis
cd1ed5ef40
melib/mbox: replace unimplemented!() with Error
5 years ago
Manos Pitsidianakis
51d9405c72
melib/mbox: fix parse error
...
First line of an mbox message is a "From ..." header without the colon
required in RFC822. Skip it when parsing the actual e-mail.
This was lost somewhere in the commit history when mbox was added,
weird.
5 years ago
Manos Pitsidianakis
6a096dd405
Add missing copyright preambles
5 years ago
Manos Pitsidianakis
5dc477bcd5
Fix some unused etc warnings
5 years ago
Manos Pitsidianakis
77d9cef6fc
melib/imap: small fixes
...
- Ignore final line ("M__ OK ...") when parsing FETCH response.
- Remove unnecessary import and reword some error messages
5 years ago
Manos Pitsidianakis
254028fa47
melib/threads: fix thread splintering case when inserting reply
...
When inserting reply, its thread group was re-inserted with the reply as
the root. This is a mistake as threads should never be re-inserted, only
modified.
5 years ago
Manos Pitsidianakis
dc63e1f657
Minor changes
5 years ago
Manos Pitsidianakis
1e2acd3b29
melib: add complete() method to ShellExpandTrait
...
complete(force: bool) returns String path segments that when appended to
the path will form a valid location. Example:
- User types: save-attachment 1 /t
- User presses <TAB>.
- complete() returns the suggestion: "mp/"
- User sees: save-attachment 1 /tmp/
complete() uses openat() and getdents64 syscalls hoping it's faster than
using stdlib.
5 years ago
Manos Pitsidianakis
6d9f584de3
Update nix to 0.16.1
5 years ago
Manos Pitsidianakis
a9842cacee
ui: add theming support
...
Configuration flag "terminal.themes" has two default theme entries,
"dark" and "light".
This commit alters only CompactListing for theme support.
5 years ago
Manos Pitsidianakis
e07b5faf6e
melib/threads: already-exists check in threads insert
5 years ago
Manos Pitsidianakis
350fafb515
melib/thread: add attachments field to Thread
5 years ago
Manos Pitsidianakis
5e68d600b9
melib/threads: Split ThreadGroup::Group to Thread
...
Create Thread struct.
5 years ago
Manos Pitsidianakis
d9269335a1
melib/threads: rename thread hashes
...
- Rename ThreadHash to ThreadNodeHash
- Rename ThreadGroupHash to ThreadHash
5 years ago
Manos Pitsidianakis
47a69f8eb9
melib: add ThreadGroup
...
Instead of using Union/Find to gather mail that belongs in the same
e-mail thread together, add a new entity ThreadGroup that ThreadNodes
point to. ThreadGroup represents an actual Thread: A thread root
ThreadGroup::Group or a reply ThreadGroup::Node.
To make semantics more accurate:
- ThreadNode hash should be renamed to ThreadNodeHash
- ThreadGroupHash should be renamed to ThreadHash
- ThreadGroup::Group should be a struct named Thread instead
- move ThreadGroup::Node logic to ThreadNode akin to Union/Find
- rename ThreaddGroup::Group to Thread
5 years ago
Manos Pitsidianakis
1eb49efb22
melib/threads: use all References in thread building
...
WIP
5 years ago
Manos Pitsidianakis
56e3ea1548
melib/imap: refactor early error exit
5 years ago
Manos Pitsidianakis
7f8c638361
melib/imap: add mailbox creation ability
5 years ago
Manos Pitsidianakis
853fe14128
melib: fix two minor email parsing bugs
...
- windows-1250 encoding not being recognized
- spaces in Message-ID header messing up parsing '<' + msg-id + '>'
structure
5 years ago
Manos Pitsidianakis
6835968d9a
melib/datetime: convert date to utc before converting to unix epoch
5 years ago
Manos Pitsidianakis
a365a846b8
Replace StackVec with smallvec::SmallVec
...
SmallVec has a less buggy and better implementation.
5 years ago
Manos Pitsidianakis
ca7d72e732
melib: Replace String with Cow<'static, str>
5 years ago
Manos Pitsidianakis
9fcc868acd
remove chrono
5 years ago
Manos Pitsidianakis
c0ac643f05
melib: add datetime module
...
Datetime module adds POSIX time functions interface
5 years ago
Manos Pitsidianakis
6671fe926e
melib: don't treat missing end boundary as error
...
Don't treat missing end boundary as error in multipart attachments.
python3's nntplib seems to return MIME attachments with this property
5 years ago
Manos Pitsidianakis
8694278369
ui: add auto_choose_multipart_alternative
...
Choose text/html by default if text/plain is empty in
multipart/alternative attachments
This happens in some newsletters I've come upon
5 years ago
Manos Pitsidianakis
3d84f3b9ad
notmuch: remove needless clones
5 years ago
Manos Pitsidianakis
21526b5faf
melib: make Work use FnOnce closures
...
There was no need to use Fn() instead of FnOnce()
5 years ago
Manos Pitsidianakis
92826f982f
melib/attachments: add MultipartType::Related kind
5 years ago
Manos Pitsidianakis
9211913405
meli/backends: honor mailbox subscriptions in IMAP/JMAP
5 years ago
Manos Pitsidianakis
7eceef93e9
melib/backends: remove folder_operation
...
folder_operation functionalities will go to BackendFolder trait
5 years ago
Manos Pitsidianakis
9080e0fd96
melib: rename FolderConf `rename` field to alias
5 years ago
Manos Pitsidianakis
c23cc45edd
melib: fix test import not found
5 years ago
Manos Pitsidianakis
2b6f6ab42c
melib: Add BackendFolder methods, move special usage logic to backend
...
- add count() method to return (unseen, total) counts
- add is_subscribed()
- add set_special_usage() and set_is_subscribed()
concerns #8
5 years ago
Manos Pitsidianakis
8f63572584
Small refactors to avoid implicit unwrap() panics
5 years ago
Manos Pitsidianakis
0201241786
melib/backends: MailBackend::refresh() returns Result
...
Handle cases were refresh() would fail properly. Fixes a crash reported in #13
5 years ago
Manos Pitsidianakis
65efb23f14
melib/MailBackend: add refresh() method
...
Initiate refresh manually.
5 years ago
Manos Pitsidianakis
d2b4057b7b
melib/MailBackend: add connect() method
5 years ago
Manos Pitsidianakis
2e38ea11e2
melib: make MailBackend::is_online() return Result<()>
...
Return Result<()> instead of bool to indicate connection status in order
to be able to show errors to user.
5 years ago
Manos Pitsidianakis
2ed9ffb145
melib/jmap: construct session resource url from user settings
5 years ago
Manos Pitsidianakis
da8cd4e85f
Remove jmap from default features
5 years ago
Manos Pitsidianakis
14eb99f515
JMAP WIP #7
5 years ago
Manos Pitsidianakis
d44a453aed
jmap: add keyword->tag support
5 years ago
Manos Pitsidianakis
aa9a6a3128
melib: add SpecialUseMailbox::detect_usage method
5 years ago
Manos Pitsidianakis
30e9114d9c
jmap: fix warnings
5 years ago
Manos Pitsidianakis
275c9f421f
JMAP WIP #6
5 years ago
Manos Pitsidianakis
791033d2fc
melib/jmap: add byte operations
5 years ago
Manos Pitsidianakis
a41dc6c38a
JMAP WIP #5
5 years ago
Manos Pitsidianakis
1ee8ef7a05
JMAP WIP #4
5 years ago
Manos Pitsidianakis
a1efeed343
JMAP WIP #3
5 years ago
Manos Pitsidianakis
e8611cca2f
JMAP WIP #2
5 years ago
Manos Pitsidianakis
a43f6919cc
JMAP WIP
5 years ago
Manos Pitsidianakis
328b17a995
ui/CompactListing: use Segment Trees to calculate max page column width
...
Given a range of entries that occupy a page (eg [0, 50] for a page of 50
rows high) get the max entry width for this column by using maximum
range queries with segment trees.
5 years ago
Manos Pitsidianakis
d9b568cfb4
melib/envelope: decode other_headers values
5 years ago
Manos Pitsidianakis
7732b851e6
melib: fix minor header parsing errors
...
- set_subject checked if last byte was control character instead of last
character. Characters can be multi-byte, duh.
- email::parser::date didn't provide for Date values that had -0000
instead of +0000 (that's a chrono requirement/bug)
5 years ago
Manos Pitsidianakis
81c70b0136
melib: small test cosmetic fixes
5 years ago
Manos Pitsidianakis
e79d9aa1c2
melib/parser: parse quote-printable CRLF soft breaks
...
Check for CRLF soft breaks after checking for LF ones
5 years ago
Manos Pitsidianakis
9fae0f2fa3
melib/imap: prevent minor blocking cases
5 years ago
Manos Pitsidianakis
f05a4205f7
melib/ui: small fixes
...
- melib/imap: accept quoted strings with escaped quotes in
protocol_parser
- ui/accounts: return unavailabity correctly if folder's worker slot is
empty instead of judging only by its vacancy
- ui/MailView: set view as not dirty if envelope loading from backend
fails so that it stops requesting it in every subsequent redraw
5 years ago
Manos Pitsidianakis
6f76cd9acc
melib: add special_usage() method to BackendFolder
...
Eventually after loading potential usage values from configuration,
backends will be able to change the usage values themselves. IMAP and
JMAP have the ability to set Mailbox roles (IMAP needs LIST-SPECIAL
extension
5 years ago
Manos Pitsidianakis
bce97d71bb
testing/imap_conn: update imapconn shell use
5 years ago
Manos Pitsidianakis
504b658f68
melib/imap: add UidFetchResponse struct and parser
...
Add handwritten parser for UID FETCH responses and use it for all UID
FETCH calls.
5 years ago
Manos Pitsidianakis
569127fac5
melib/imap: detect untagged CAPABILITY responses
...
Gmail sends an untagged CAPABILITY response before accepting login, so
be smarter when logging in
5 years ago
Manos Pitsidianakis
8235af9237
melib/imap: quote mailbox names on SELECT/EXAMINE
5 years ago
Manos Pitsidianakis
a20e08eb43
imap: treat \NoSelect mailboxes as empty
...
\NoSelect are mailboxes that can't be selected, thus treat them as if
they are empty.
5 years ago
Manos Pitsidianakis
40e928dad3
Push version to 0.4.1
5 years ago
Manos Pitsidianakis
0eaf17871a
melib: add set_tags command in BackendOp
5 years ago
Manos Pitsidianakis
dab9b39f4d
melib/imap: detect tag (\* flag) support
5 years ago
Manos Pitsidianakis
46a807eee1
melib: remove control characters from subject
5 years ago
Manos Pitsidianakis
d048d8566d
ui: add format=flowed if text/plain att is the only one
5 years ago
Manos Pitsidianakis
9d8d3e09f4
melib: remove unused methods from BackendOp
5 years ago
Manos Pitsidianakis
a059e4ad4c
melib: add summary field to MeliError
5 years ago
Manos Pitsidianakis
7010ee7495
melib/mbox: send Finished in Mbox get
5 years ago
Manos Pitsidianakis
ef26b03bb6
Add some documentation
5 years ago
Manos Pitsidianakis
bca33370cc
Add tag settings in UI config module
5 years ago
Manos Pitsidianakis
258b6c8fe8
melib: add tags() method in MailBackend
...
Add tags() method that returns Option<Arc<RwLock<BTreeMap<u64, String>>>>.
The BTreeMap holds available tags in a mail backend and uses the tag's
hash as key.
The method returns an Option because not all backends may support
tagging.
5 years ago
Manos Pitsidianakis
6653357d54
melib/notmuch: fix compilation errors
5 years ago
Manos Pitsidianakis
bb486ca9d8
melib: Remove quotes from addresses in email/parser.rs
5 years ago
Manos Pitsidianakis
3dfb2f4f2c
melib: fix out-of-bounds parser bug
5 years ago
Manos Pitsidianakis
58209d6f6b
Replace some panics with errors
5 years ago
Manos Pitsidianakis
ba52c59859
bin: add backend specific validation functions for --test-config flag
5 years ago
Manos Pitsidianakis
4677f9c6bb
melib/imap: initialise uid_store folders in folders()
5 years ago
Manos Pitsidianakis
afff63c781
ui: load vcards to addressbook with vcard_folder account setting
5 years ago
Manos Pitsidianakis
689327651f
melib/vcard: add parser for vcard files
5 years ago
Manos Pitsidianakis
3dc0cb1963
imap: send 'finished' signal when watch thread dies
5 years ago
Manos Pitsidianakis
af365fa8d4
Set 600 perm mode to all created files
...
When creating a data file, set permissions to read/write for the user.
5 years ago
Manos Pitsidianakis
eecec551c1
Display watch thread errors to user
...
Show a proper notification with the error message to the user instead of
just logging it on debug-tracing.
5 years ago
Manos Pitsidianakis
b8e4a35963
melib/imap: add default capabilities to SUPPORTED_CAPABILITIES
5 years ago
Manos Pitsidianakis
41a678c6ef
melib: make MailBackend::folders return Result
...
Change folders() signature:
- fn folders(&self) -> FnvHashMap<FolderHash, Folder>;
+ fn folders(&self) -> Result<FnvHashMap<FolderHash, Folder>>;
Imap may not be online, therefore we need the ability to return an
error.
5 years ago
Manos Pitsidianakis
424b244bb7
fixup some TODO and FIXMEs
5 years ago
Manos Pitsidianakis
05d9ca6e0d
small fixes
5 years ago
Manos Pitsidianakis
ce646abc7a
ui: add send confirmation dialog in compose tab
...
Confirm before sending mail
5 years ago
Manos Pitsidianakis
51628ac9d2
ui: move list_management mod to melib
...
list_management module includes some small functions to handle mailing
list metadata (List-* headers)
5 years ago
Manos Pitsidianakis
449a24d075
ui: ListActions changes
...
- Parse List-Post value like List-Unsubscribe: comma separated angle bracket limited list of <mailto:> or <url> values
- Check if List-Archive value is angle bracket delimited
5 years ago
Manos Pitsidianakis
fc2d9a684d
melib/imap: set has_attachments based on BODYSTRUCTURE
...
fetch BODYSTRUCTURE along with ENVELOPE from server and set
has_attachments based on the MIME structure of the envelope.
Notes: BODYSTRUCTURE returns the MIME structure of the envelope without
the data, so if it includes a multipart/mixed it *should* have
attachments.
ENVELOPE returns basic headers of the message like Sender, Subject, Date
etc.
5 years ago
Manos Pitsidianakis
b2cd4f4b7a
melib/imap: put imap folders in RwLock instead of Mutex
...
This should prevent lockups if the IMAP conn thread gets blocked
5 years ago
Manos Pitsidianakis
953c3aa9d0
melib: Add parameters field in ContentType::Text
...
Intending to add the option to set the parameter format=flowed in the
next commits
5 years ago
Manos Pitsidianakis
f8a1a6caa5
melib: replace find_thread_group with find_root_hash
...
thread_group property of ThreadNode doesn't yet reflect the actual root
ThreadNode (the root of the thread, that is). So find the root manually
instead.
5 years ago
Manos Pitsidianakis
dfa83e486c
melib: add into_iter() for &StackVec<T>
5 years ago
Manos Pitsidianakis
04e1137b36
melib: add "On ${date} ${author} wrote" heading in replies
5 years ago
Manos Pitsidianakis
321be8555f
Cleanup startup error exit paths
...
Make startup methods return Results so that the main binary can exit
cleanly instead of using std::process::exit from arbitrary positions,
which exits the process immediately and doesn't run destructors.
5 years ago
Manos Pitsidianakis
77936e0cd5
melib: add notmuch backend
...
Missing:
- Watching for updates functionality
- Using tags
- Search
5 years ago
Manos Pitsidianakis
7463248da8
melib: change BackendOp::set_flag() signature
5 years ago
Manos Pitsidianakis
ede512200b
conf: move FolderConf to melib
...
This will be needed to add notmuch-specific configuration settings in
the FolderConf struct in the next commit
5 years ago
Manos Pitsidianakis
8f36678abf
melib: make Backendfolder::children return slice
5 years ago
Manos Pitsidianakis
56cda63c83
Fix some warnings
5 years ago
Manos Pitsidianakis
f83db67a38
melib/imap: don't stop IDLE session
...
Previous behaviour: connection with IDLE was stopped every 5 minutes to
poll the other threads. As a result messages received within that time
window when there was no IDLING were never received.
Current behaviour: polling is done in the main connection.
5 years ago
Manos Pitsidianakis
dce1c39b48
ui: add mailcap support
5 years ago
Manos Pitsidianakis
5761f854e2
melib: Add FolderPermissions
...
permissions() method on BackendFolder and SetPermissions in
FolderOperation enum.
5 years ago
Manos Pitsidianakis
c1902f96b5
imap: add UIDVALIDITY check
...
On UIDVALIDITY change, discard cache and force rescan.
5 years ago
Manos Pitsidianakis
06d99c7f92
ui: Add save attachment command
...
use as `save-attachment ATTACHMENT_INDEX PATH`
5 years ago
Manos Pitsidianakis
580f0be8a4
imap: fix cases that would block connection
...
Fix blocking if TLS negotiation can't start
Fix blocking if IDLE connection dies.
5 years ago
Manos Pitsidianakis
a907b9c21d
Fix melib test errors
5 years ago
Manos Pitsidianakis
8b781cbbe0
melib: StackVec bounds fix
5 years ago
Manos Pitsidianakis
e600b0252f
text_processing: add line_break method
...
In preparation for format=flowed support, add a line_break method in the
text_processing Trait, now renamed from Graphemes to TextProcessing.
5 years ago
Manos Pitsidianakis
098982015b
ui/conversations: show all participating addresses in entry
...
Show all unique From: values of addresses in thread entries in
Conversations
5 years ago
Manos Pitsidianakis
229e879c26
ui/imap: select user given folder before search
...
IMAP search() didn't select a folder before searching, thus searching
the mailbox the previous user of self.connection had selected.
5 years ago
Manos Pitsidianakis
99697a8fd5
ui: Add search for IMAP
...
Add basic search utilising the default SEARCH capability.
5 years ago
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