summaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)Author
2026-04-10message: improve attachment heuristicsDirk-Jan C. Binnema
Do not consider calender-invitations "attachments"; do mark as "calendar". Do recognize application/ics as calendar messages. Update mime-object to expose a message part's disposition. Change the "is-attachment" heuristic to include inline parts if they have a filename parameter in their content-disposition. Note that this doesn't change things radically; the delta is +69 and -202 for ~6500 attachments.
2026-04-10lib/utils: small cleanupsDirk-Jan C. Binnema
Fix some static analysis warnings
2026-04-10lib: remove unused async-queueDirk-Jan C. Binnema
2026-03-17mu-utils-file: use std::filesystem::remove_allDirk-Jan C. Binnema
Instead of the hacky "rm -rf"
2026-03-17mu-utils-file: remove some unused codeDirk-Jan C. Binnema
2026-03-07lib: improve error checkingDirk-Jan C. Binnema
2026-03-07mu/lib: fix some possible quoting issuesDirk-Jan C. Binnema
2026-03-07message: fix some error pathsDirk-Jan C. Binnema
2026-02-24mu-store: cosmeticsDirk-Jan C. Binnema
2026-02-16Work around xapian bugDaniel Colascione
https://trac.xapian.org/ticket/850
2026-02-16New incremental cleanup strategy: 63%-88% fasterDaniel Colascione
This change adds a new cleanup mode that avoids cleanup having re-traverse the directories the index pass just looked at. Additionally, we efficiently query the Xapian database by walking the term list instead of doing multiple point-wise path lookups. I'd noticed that most of my time in mu's cleanup pass consisted of B-tree lookups in Xapian (one 8KB pread64 at a time). The point lookups forced Xapian to traverse from the root of the B-tree to the leaf for every single message. Additionally, in order to join on the message path, we had to do *another* B-tree traversal after locating each message term. Now we just walk the terms in order, which is much more efficient, as we touch each B-tree node only once. On my system, with 1371861 total messages, the total time of mu index (no lazy check): --nocleanup: 3.6s incremental cleanup: 4.2s (0.6s in cleanup) legacy cleanup: 5.2s (1.6s in cleanup) With the new mode, we save 1.0s of the 1.6s cleanup, so we're ~63% faster. But the incremental cleanup works even better with lazy checking. If I enable --lazy-check, dirty only my INBOX (360778 messages), and run index, I get: --nocleanup: 0.9s incremental cleanup: 1.1s (0.2s in cleanup) legacy cleanup: 2.5s (1.6s in cleanup) We save 1.4s out of 1.6s for ~88% speedup. This change also fixes a timestamp bug: we should be storing the *start* time of the index pass in metadata, not the end time, so that on the next index pass, we notice messages that arrived between the two times. All tests pass. You can set the environment variable MU_NO_INCREMENTAL_CLEANUP to use the legacy cleanup path instead.
2026-02-14mu-query-parser: update commentDirk-Jan C. Binnema
2026-01-29mu-utils: replace #define with constexpr for MU_COLOR_Dirk-Jan C. Binnema
2026-01-28utils: fix typoDirk-Jan C. Binnema
2026-01-27utils: rework MU_ENABLE_BITOPS using C++20 codeDirk-Jan C. Binnema
Instead of macros, we using C++20 concepts to define the helpers to deal with bitops on enum-class conveniently. x# Please enter the commit message for your changes. Lines starting
2026-01-23sexp.hh: silence compiler warningsDirk-Jan C. Binnema
Seems they only happen in C++20 mode, not when compiling C++23 mode. So assuming these are false alarms (old code anyway)
2026-01-22build: bump to 1.14.0-pre1, bump some required versionsDirk-Jan C. Binnema
Bump the required versions of some libraries / emacs slightly so we can get rid of some special-casing and work-arounds. These are mostly based on Ubuntu 24.04 LTS, which is rather conservative; so should hopefully not inconvenience any users. - compiler: we now require C++20 instead of C++17 - glib & friends: 2.60 => 2.80 - xapian: 1.4 => 1.4.22 - emacs 26.3 => 28.1 Ubuntu 24.04 actually has Emacs 29.3, but that'd perhaps be too big a jump.
2026-01-03test-store: disable bad testDirk-Jan C. Binnema
The "expected-to-fail" test actually passes when root.
2025-12-15labels: improve logging for importDirk-Jan C. Binnema
Clear up the code a bit using the new logging functions. Don't log a failure for "plan A" as an error, it just scares user unnecessarily.
2025-12-13utils: rework logging functionsDirk-Jan C. Binnema
Use a general mu_log which does the formatting, and specific mu_debug, mu_info etc., to call it.
2025-11-25improve invoking external commandsDirk-Jan C. Binnema
- don't make assumptions on where programs live (i.e., /bin/sh, /bin/rm, /bin/mv) are not universal - dont invoke shell when unnecessary - improve error-handling
2025-11-21test-mu-store: bump timeout in testDirk-Jan C. Binnema
Seems some systems are quite slow, so bump the time-out. Fixes #2886.
2025-11-19mu-server: improve error message for temp-fileDirk-Jan C. Binnema
Make it clear what exactly could not be created.
2025-11-19test-mu-message: use join_path for test-pathDirk-Jan C. Binnema
We were not doing that correctly, missing a "/" between dirname and filename.
2025-11-19test-utils: fix some clang-tidy warningsDirk-Jan C. Binnema
2025-11-19test-utils: use remove_directoryDirk-Jan C. Binnema
2025-11-19utils/file: rework remove_directory, add testDirk-Jan C. Binnema
Make remove_directory not much less ugly, but at least more robust, e.g., when the "rm" binary is not at /bin/rm Add unit test
2025-11-01logging: don't g_message with --quietDirk-Jan C. Binnema
When `--quiet` is passed (and not --debug), do not log with g_message at startup.
2025-10-25message: ensure message text is valid utf8Dirk-Jan C. Binnema
Seems this is not guaranteed, so convert if needed.
2025-10-25utils: add utf8_clean helperDirk-Jan C. Binnema
To morph text into valid utf8 if it isn't already.
2025-09-28utils: avoid fmt:gmtime/fmt::localtimeDirk-Jan C. Binnema
They've been deprecated and give build warnings with new enough libfmt.
2025-09-12labels: tighten labels regexpDirk-Jan C. Binnema
2025-09-03store-test: add more label testsDirk-Jan C. Binnema
Ensure removal affects the labels cache.
2025-09-03store: remove some _unlocked functions, update clear_labelsDirk-Jan C. Binnema
They don't add much value, let's remove. Rework clear_labels in terms of update_labels.
2025-09-02store: update labels when removing messagesDirk-Jan C. Binnema
This does make removing a bit slower...
2025-09-02mu: refactor labels codeDirk-Jan C. Binnema
Split labels-cache and store-labels.
2025-09-02labels: allow restoring cache-mapDirk-Jan C. Binnema
E.g. with unexpected termination for mu it is possible that the labels-cache (i.e., the one that is used for auto-completion) gets disconnected from reality. Add a --restore option to `mu label list` to restore the actual labels from the labels seen in the store.
2025-09-01store: implement serialize method, use itDirk-Jan C. Binnema
For triggering saving the contacts / labels caches.
2025-08-31store: improve label handlingDirk-Jan C. Binnema
In particular, clear_labels And some cosmetics
2025-08-31server: add label handlerDirk-Jan C. Binnema
For handling mu4e label update requests.
2025-08-31mu-label: allow more charactersDirk-Jan C. Binnema
reduce the number of "taboo" characters in labels. update docs.
2025-08-28mu-document: improve sexp updatingDirk-Jan C. Binnema
Ensure the cached message sexp gets updated in all cases where it's necessary.
2025-08-27labels: implement parse_delta_labelsDirk-Jan C. Binnema
Convenience function for parsing a series of delta labels; add tests as well.
2025-08-26Replace "the the " with "the "Anton Mosich
2025-08-25mu4e/server: get cached list of labelsDirk-Jan C. Binnema
This will be useful with label commands.
2025-08-24utils: add set_thread_nameDirk-Jan C. Binnema
With HAVE_PTHREAD_SETNAME_NP
2025-08-24mu-server: implement exposing the socket-pathDirk-Jan C. Binnema
Add the scm-socket-path to the ping-properties we expose for mu4e.
2025-08-22mu-query-results: add decrement operatorsDirk-Jan C. Binnema
So we can easily iterator from end->begin
2025-08-16mu-init: automatic export labels with --reinitDirk-Jan C. Binnema
When re-initializing the store, automatically write the labels to a file in mu's cache, so user can later import them.
2025-08-16labels: refactor import/export to mu-store-labelsDirk-Jan C. Binnema
Move the import/export code to 'lib'.