Compare commits

...

4 Commits

Author SHA1 Message Date
Manos Pitsidianakis 8fff740176
Update yanked zerocopy dependency
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2 weeks ago
Manos Pitsidianakis 8eaf03554f
Bump version to 0.8.5
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2 weeks ago
Manos Pitsidianakis 8ec6f22090
Use ShellExpandTrait::expand in more user-provided paths
ShellExpandTrait::expand was not used consistently, leading to only some
functionalities supporting things like tilde expansion.

Fixes #387

Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2 weeks ago
Manos Pitsidianakis b5ddc397df
terminal: remove unwrap() from get_events() loop
When exiting the app, the received value might be None.

Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
2 weeks ago

@ -7,86 +7,226 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
### Added
<!-- ### Added -->
- [0e3a0c4b](https://git.meli-email.org/meli/meli/commit/0e3a0c4b7049139994a65c6fe914dd3587c6713e) Add safe UI widget area drawing API
- [0114e695](https://git.meli-email.org/meli/meli/commit/0114e695428579ef4461b289d7372e3b392b5e62) Add next_search_result and previous_search_result shortcuts
- [c4344529](https://git.meli-email.org/meli/meli/commit/c4344529e30b3385149d6dc3c1c4b34306a85491) Add .git-blame-ignore-revs file
<!-- ### Bug Fixes -->
### Fixed
<!-- ### Changes -->
- [bcec745c](https://git.meli-email.org/meli/meli/commit/bcec745c241d7ed5d7d455ccdd65c6c95e1862b0) Fix command and status bar drawing
- [62b8465f](https://git.meli-email.org/meli/meli/commit/62b8465f2cd99789576d70008f1f321243b81fc3) Fix ThreadView for new TUI API
- [28fa66cc](https://git.meli-email.org/meli/meli/commit/28fa66cc2ad05e67708377fc99ffd65aa1b14386) Fix ThreadedListing for new TUI API
- [2c6f180d](https://git.meli-email.org/meli/meli/commit/2c6f180df987976c1f4cba7ceac878e697c73d27) Fix macos compilation
- [24971d19](https://git.meli-email.org/meli/meli/commit/24971d1960418bad92d89af9eb744933445baf99) Fix compilation with 1.70.0 cargo
<!-- ### Refactoring -->
### Changed
<!-- ### Documentation -->
<!-- ### Packaging -->
<!-- ### Miscellaneous Tasks -->
## [v0.8.5](https://git.meli-email.org/meli/meli/releases/tag/v0.8.5) - 2024-05-05
Contributors in alphabetical order:
- Andrei Zisu
- Ethra
- Geert Stappers
- Guillaume Ranquet
- Manos Pitsidianakis
### Added
- [a1cbb198](https://git.meli-email.org/meli/meli/commit/a1cbb1988b34951046045f724f52bed2925b3880) Return Results instead of panicking
- [7645ff1b](https://git.meli-email.org/meli/meli/commit/7645ff1b875e3920389567eb5e61d800291e8a27) Rename write_string{to_grid,}
- [c2ae19d1](https://git.meli-email.org/meli/meli/commit/c2ae19d1208f2eb5cca341a04e019c3e285637a8) Return Option from current_pos
- [b61fc3ab](https://git.meli-email.org/meli/meli/commit/b61fc3ab6482dcef4f5cc1c09db3539b7e401f78) Add HelpView struct for shortcuts widget
- [ba7a97e9](https://git.meli-email.org/meli/meli/commit/ba7a97e90b4c474299a7b12fa74b7ea06c1535c8) Add x axis scroll support
- [3495ffd6](https://git.meli-email.org/meli/meli/commit/3495ffd61b5888f8538304ecb6e441819b373bdc) Change UIEvent::Notification structure
- [ccf6f9a2](https://git.meli-email.org/meli/meli/commit/ccf6f9a26e95437fb24464f90736c653e3f5dfed) Remember previous `set [index_style]]` preferences
- [23c15261](https://git.meli-email.org/meli/meli/commit/23c15261e79c63791c569f225c1745df1b90ce2d) Abstract envelope view filters away
- [031d0f7d](https://git.meli-email.org/meli/meli/commit/031d0f7dc76700ac938e1ee4a767fab8deebb9f2) Add area.is_empty() checks in cell iterators
- [e37997d6](https://git.meli-email.org/meli/meli/commit/e37997d697f1f0b8faaa56a36f43c9f1da4bbb41) Store Link URL value in Link type
- [0e3a0c4b](https://git.meli-email.org/meli/meli/commit/0e3a0c4b7049139994a65c6fe914dd3587c6713e) `Add safe UI widget area drawing API`
- [0114e695](https://git.meli-email.org/meli/meli/commit/0114e695428579ef4461b289d7372e3b392b5e62) `Add next_search_result and previous_search_result shortcuts`
- [0b468d88](https://git.meli-email.org/meli/meli/commit/0b468d88ad53178d77fbf8a4d9014b4b8bbd134f) `Improve Error messages`
- [5af2e1ee](https://git.meli-email.org/meli/meli/commit/5af2e1ee6631fdfaa4f67243b97119debc32a484) `Add subcommand to print config file location`
- [62aee464](https://git.meli-email.org/meli/meli/commit/62aee4644bee3b4d0e549734272cf19c18a512ef) `Add subcommand to print log file location`
- [e2cdebe8](https://git.meli-email.org/meli/meli/commit/e2cdebe89cb0b0619d32efc0240efeb340e2cecd) `Add option to highlight self in mailing list threads`
- [cd448924](https://git.meli-email.org/meli/meli/commit/cd448924ed102531b7cf5676968baedc392c862e) `Add clear-selection command`
- [3a5306e9](https://git.meli-email.org/meli/meli/commit/3a5306e9dd50e3fe369295d8a5fef350a1ce9d77) `View manpages in pager inside meli`
- [a37d5fc1](https://git.meli-email.org/meli/meli/commit/a37d5fc1d19f5b195361ddb3ba045d848266285d) `Implement a key to command mapping`
- [ce4ba06c](https://git.meli-email.org/meli/meli/commit/ce4ba06ce9980990304b06b7ce3c34e50b0cdba7) `Add a flag set/unset command`
- [148f0433](https://git.meli-email.org/meli/meli/commit/148f0433d928e5f4bf64de88c029c1a4147cb6b1) `Implement flag set/unset action in UI`
- [417b24cd](https://git.meli-email.org/meli/meli/commit/417b24cd842775e1d44b972a7569c21b7c8ab936) `Print invalid command on error`
- [4e941a9e](https://git.meli-email.org/meli/meli/commit/4e941a9e8bca5778ebfa60515a7519df02309127) `Add default_mailbox setting`
- [974502c6](https://git.meli-email.org/meli/meli/commit/974502c6ffa263c8cfebf40c46b8694dce7fe982) `Impl Hash for Card`
- [ba7a97e9](https://git.meli-email.org/meli/meli/commit/ba7a97e90b4c474299a7b12fa74b7ea06c1535c8) `Add x axis scroll support`
- [ccf6f9a2](https://git.meli-email.org/meli/meli/commit/ccf6f9a26e95437fb24464f90736c653e3f5dfed) `Remember previous set [index_style] preferences`
### Bug Fixes
- [bcec745c](https://git.meli-email.org/meli/meli/commit/bcec745c241d7ed5d7d455ccdd65c6c95e1862b0) `Fix command and status bar drawing`
- [62b8465f](https://git.meli-email.org/meli/meli/commit/62b8465f2cd99789576d70008f1f321243b81fc3) `Fix ThreadView for new TUI API`
- [28fa66cc](https://git.meli-email.org/meli/meli/commit/28fa66cc2ad05e67708377fc99ffd65aa1b14386) `Fix ThreadedListing for new TUI API`
- [2c6f180d](https://git.meli-email.org/meli/meli/commit/2c6f180df987976c1f4cba7ceac878e697c73d27) `Fix macos compilation`
- [24971d19](https://git.meli-email.org/meli/meli/commit/24971d1960418bad92d89af9eb744933445baf99) `Fix compilation with 1.70.0 cargo`
- [34a2d52e](https://git.meli-email.org/meli/meli/commit/34a2d52e7ee8117f84d5177826c4d258c8dc28cd) `Fix rustdoc::redundant_explicit_links`
- [f63774fa](https://git.meli-email.org/meli/meli/commit/f63774fa6ddc9392be4191a549e7b99213132433) `Fix new clippy lints (1.75)`
- [33408146](https://git.meli-email.org/meli/meli/commit/33408146a178435d80871cdc91fad438144ded0f) `Fix feature permutation mis-compilations found with cargo-hack`
- [e3351d27](https://git.meli-email.org/meli/meli/commit/e3351d27555604524623bc8b6ae02f04a8414f97) `Fix set unseen updating all mboxes`
- [8185f2cf](https://git.meli-email.org/meli/meli/commit/8185f2cf7d539c714fd0a6128f40ba1fc9e0c43c) `Add deny clippy lints and fix them`
- [7861fb04](https://git.meli-email.org/meli/meli/commit/7861fb0402a652d692cb3c3be3b335d3b5a406fd) `Fix typos found with `typos` tool`
- [64e60cb0](https://git.meli-email.org/meli/meli/commit/64e60cb0ee79841ab40e3dba94ac27150a264c5c) `Fix select modifier regression`
- [60f26f9d](https://git.meli-email.org/meli/meli/commit/60f26f9dae1bb1e6379c2f6edd109c103179ddd6) `Fix some old pre-intradoc rustdoc links`
- [1fe36192](https://git.meli-email.org/meli/meli/commit/1fe361920809dfd4e51929e5a3e0376f46078422) `Make conf validation recognize AccountSettings extra keys`
- [c332c2f5](https://git.meli-email.org/meli/meli/commit/c332c2f5ff2cead87657bef489d223c6cb276697) `Fix new clippy lints (mostly clippy::blocks_in_conditions)`
- [070930e6](https://git.meli-email.org/meli/meli/commit/070930e671aa25f286ead73e6c9e80e23b5fef49) `Fix auto index build when missing`
- [26928e3a](https://git.meli-email.org/meli/meli/commit/26928e3ae90966e84d9e5f052631802ca634d99f) `Fix compilation for macos`
- [3884c0da](https://git.meli-email.org/meli/meli/commit/3884c0da1f3e7ba4ad85ff2fce087eb444e5ac20) `Small typographic fixups`
- [b820bd6d](https://git.meli-email.org/meli/meli/commit/b820bd6d9ceb5907d8550c9654fa8ce718d6b013) `Remove unused imap_trace! and fix comp`
- [a88b8c5e](https://git.meli-email.org/meli/meli/commit/a88b8c5ea055eb530ad523b673ea87fd19b70487) `Debian/changelog warning fix`
- [4ce616ae](https://git.meli-email.org/meli/meli/commit/4ce616aeca07b957cbf58c4a736a9a7d05b7cd04) `Fix lints.yaml rustup install step`
- [264782d2](https://git.meli-email.org/meli/meli/commit/264782d2280a63e82e16dfe005aeee522d102f82) `Various unimportant minor style/doc fixups`
- [475609fe](https://git.meli-email.org/meli/meli/commit/475609fe9264c37d3a8bc835ea654d2c2e047f9b) `Make {prev,next}_entry shortcut behavior consistent`
- [a69c674c](https://git.meli-email.org/meli/meli/commit/a69c674c072cdf1b6c9e3697e21673735718f119) `Fix new 1.77 clippy lints`
- [48cb9ee2](https://git.meli-email.org/meli/meli/commit/48cb9ee204929b3ae34e48be4f363572091b28f7) `Fix compilation for macos`
- [8a16cf6d](https://git.meli-email.org/meli/meli/commit/8a16cf6db482b7a65b1e6962c48a493fb1aaf0cf) `Fix wrong column index crash`
- [bc1b6531](https://git.meli-email.org/meli/meli/commit/bc1b65316d9e97812e107e849a6c93fbcc85f216) `Fix constant redrawing`
- [29cc1bce](https://git.meli-email.org/meli/meli/commit/29cc1bce5b61b575f76ff39888d4b420f1d3b7ce) `Remove obsolete file melib/src/text/tables.rs.gz`
- [ab041898](https://git.meli-email.org/meli/meli/commit/ab0418988748af508f461c7712f3a83ed36d11a7) `Fix new warnings for 1.78.0`
- [46e40856](https://git.meli-email.org/meli/meli/commit/46e40856baf4383b08a58d001b7ff9b0f5388fb7) `Fix UIConfirmationDialog highlight printing`
- [3b93fa8e](https://git.meli-email.org/meli/meli/commit/3b93fa8e7c4db8ce2e7714a84515ef772d480e53) `Don't draw messages above embedded terminal`
- [684fae3e](https://git.meli-email.org/meli/meli/commit/684fae3ed80aad6995aef22d6fae56f2c19f3e8f) `Copy old content to new buf when resizing`
- [5d915baa](https://git.meli-email.org/meli/meli/commit/5d915baa8162332340ba4e8c482abce99af40c11) `Use Screen::resize instead of CellBuffer::resize`
- [6a66afe9](https://git.meli-email.org/meli/meli/commit/6a66afe93eb928e6df93e79d0de386e0867fc3ec) `Make add contact dialog scrollable on overflow`
- [aa5737a0](https://git.meli-email.org/meli/meli/commit/aa5737a004adc0b23f4d9573465f5c3f2129fc3d) `Prevent drawing pager on embedded mode`
- [07072e2e](https://git.meli-email.org/meli/meli/commit/07072e2e3ffee70c0aa2f68622cf7173c8cc7193) `Prevent panic if envelope is deleted`
- [8ddd673d](https://git.meli-email.org/meli/meli/commit/8ddd673dd83d0d11115fabac8a85e068e3d3f233) `Update all mailboxes`
- [3691cd29](https://git.meli-email.org/meli/meli/commit/3691cd2962e9b3ae68128a6beb96f268d42b763f) `Send EnvelopeUpdate event after self.collection.update_flags()`
- [1fcb1d59](https://git.meli-email.org/meli/meli/commit/1fcb1d59b8d07ce1be861690b2b4c1d1b2b4fde3) `Remove rerun when build.rs changes`
- [933bf157](https://git.meli-email.org/meli/meli/commit/933bf157ae105c55ccb65880b4f3eef7039b54d5) `Ack \ as an atom`
- [a1cbb198](https://git.meli-email.org/meli/meli/commit/a1cbb1988b34951046045f724f52bed2925b3880) `Return Results instead of panicking`
- [b5ddc397](https://git.meli-email.org/meli/meli/commit/b5ddc397df982a885bb797f1ae762fe8f58fce56) `Remove unwrap() from get_events() loop`
### Changes
- [61a0c3c2](https://git.meli-email.org/meli/meli/commit/61a0c3c27f7c3691fb8f4503664f80667b0077e2) `Do not clear selection after action`
- [9af284b8](https://git.meli-email.org/meli/meli/commit/9af284b8db97b02788a2209bed705d20db6c2500) `Don't hide unread count for mailboxes that are partly truncated`
- [35408b16](https://git.meli-email.org/meli/meli/commit/35408b1689fcec1814e893a7bc34380e30ef7c57) `Run pager filter asynchronously`
- [e80ea9c9](https://git.meli-email.org/meli/meli/commit/e80ea9c9deee46f3de27c26a715bb06d1d09201a) `Changed default manpage install path`
- [742f038f](https://git.meli-email.org/meli/meli/commit/742f038f74051ab8499ec2aaa65bf4cd4c12e1dd) `Move sent_mailbox to settings`
- [86bbf1ea](https://git.meli-email.org/meli/meli/commit/86bbf1ea573c47107aee021b85651e54e7bdec79) `Refresh NotmuchMailbox counts when setting flags`
- [f0866a39](https://git.meli-email.org/meli/meli/commit/f0866a3965063ebe7dd2663a9ad1cba828ef91aa) `Make config error more user-friendly`
- [11f3077b](https://git.meli-email.org/meli/meli/commit/11f3077b06d2c7dce5dc35876a8bb419cbb642ca) `Add more possible values for manpage names`
- [1eca34b3](https://git.meli-email.org/meli/meli/commit/1eca34b3986ffd970d440440761c8516dbb863bb) `Set lowest priority to shortcut command UIEvents`
- [484712b0](https://git.meli-email.org/meli/meli/commit/484712b0c379aa95ba5792effd501bfa45c6c45c) `Check for unrecoverable errors in is_online`
- [8ec6f220](https://git.meli-email.org/meli/meli/commit/8ec6f220902d2994f9916a94e8ea43450b6917ab) `Use ShellExpandTrait::expand in more user-provided paths`
### Refactoring
- [0500e451](https://git.meli-email.org/meli/meli/commit/0500e451dab5f129d71a9279913531e77981e868) Add missing EnvelopeRemove event handler
- [ab14f819](https://git.meli-email.org/meli/meli/commit/ab14f81900a03a07ef00a6b3232cb29d78e8edf5) Make write_string_to_grid a CellBuffer method
- [e0adcdfe](https://git.meli-email.org/meli/meli/commit/e0adcdfe15b8a78c333de199ba734a83181f53be) Move rest of methods under CellBuffer
- [0a74c7d0](https://git.meli-email.org/meli/meli/commit/0a74c7d0e5c318dd29c8ace01e588d441e0fcfb6) Overhaul refactor
- [3b4acc15](https://git.meli-email.org/meli/meli/commit/3b4acc15a535c9bfd084b2e33f2cd00b5b5d4eb0) Add tests
- [7eedd860](https://git.meli-email.org/meli/meli/commit/7eedd860518e3f7f5000a1888e4fa58ddbfb43bc) Remove address_list! macro
- [f3e85738](https://git.meli-email.org/meli/meli/commit/f3e85738e7981755e96468213c02af78432f8cdd) Move build.rs scripts to build directory
- [77325486](https://git.meli-email.org/meli/meli/commit/773254864bd8436712905eeb0c725d1d05277e60) Remove on-push hooks for actions w/ run on-pr
- [0500e451](https://git.meli-email.org/meli/meli/commit/0500e451dab5f129d71a9279913531e77981e868) `Add missing EnvelopeRemove event handler`
- [ab14f819](https://git.meli-email.org/meli/meli/commit/ab14f81900a03a07ef00a6b3232cb29d78e8edf5) `Make write_string_to_grid a CellBuffer method`
- [e0adcdfe](https://git.meli-email.org/meli/meli/commit/e0adcdfe15b8a78c333de199ba734a83181f53be) `Move rest of methods under CellBuffer`
- [0a74c7d0](https://git.meli-email.org/meli/meli/commit/0a74c7d0e5c318dd29c8ace01e588d441e0fcfb6) `Overhaul refactor`
- [3b4acc15](https://git.meli-email.org/meli/meli/commit/3b4acc15a535c9bfd084b2e33f2cd00b5b5d4eb0) `Add tests`
- [7eedd860](https://git.meli-email.org/meli/meli/commit/7eedd860518e3f7f5000a1888e4fa58ddbfb43bc) `Remove address_list! macro`
- [f3e85738](https://git.meli-email.org/meli/meli/commit/f3e85738e7981755e96468213c02af78432f8cdd) `Move build.rs scripts to build directory`
- [77325486](https://git.meli-email.org/meli/meli/commit/773254864bd8436712905eeb0c725d1d05277e60) `Remove on-push hooks for actions w/ run on-pr`
- [08518e1c](https://git.meli-email.org/meli/meli/commit/08518e1ca81dd4eeabcaed9d3ec098b3b73f9a45) `Remove obsolete position.rs module`
- [ddab3179](https://git.meli-email.org/meli/meli/commit/ddab3179c2640488a3acd8cdeba1506a4e8f7641) `Move tests to tests module`
- [79520068](https://git.meli-email.org/meli/meli/commit/795200687020f8dbb82de619f8c5eecd07df6c49) `Remove doctests, add tests module`
- [4e7b6656](https://git.meli-email.org/meli/meli/commit/4e7b66567268ecb42eb55ac588ca401384835a38) `Sqlite caching refactor`
- [b5fd3f57](https://git.meli-email.org/meli/meli/commit/b5fd3f57a7d99b8918ca7bd24f715ccd6bfe448a) `Make self.view an Option`
- [a3aaec38](https://git.meli-email.org/meli/meli/commit/a3aaec382ab58c31cc8bc6122e5c67d6a97e4e9f) `Remove unused imports`
- [11a0586d](https://git.meli-email.org/meli/meli/commit/11a0586d562b8623e72a54ded7ba27b24c70206c) `Remove num_cpus dependency`
- [8f3dee9b](https://git.meli-email.org/meli/meli/commit/8f3dee9b22c7cea414bb49379f8240cb4a1beca3) `Extract mod manpages to standalone file`
- [89c7972e](https://git.meli-email.org/meli/meli/commit/89c7972e12a8eb0503795cf61c9b811882d4c19e) `Add suggestions to BadValue variant`
- [35a9f33a](https://git.meli-email.org/meli/meli/commit/35a9f33aab133d5368c140b40ed9477e251204d3) `Extract common FlagString logic`
- [1b0bdd0a](https://git.meli-email.org/meli/meli/commit/1b0bdd0a9a51ede2dd4fac0f75dd667894b704e2) `Split queries and mailbox into submodules`
- [506ae9f5](https://git.meli-email.org/meli/meli/commit/506ae9f594528051d0680059c1f82618fa0899c2) `Add ErrorKind::LinkedLibrary variant`
- [ebe1b3da](https://git.meli-email.org/meli/meli/commit/ebe1b3da7e6a209cd2ef2d3aa11809aaab29bc6f) `Wrap *mut struct fields in NonNull<_>`
- [ca7d7bb9](https://git.meli-email.org/meli/meli/commit/ca7d7bb95d387ef04fc568199e8767b4a428d7e4) `Use message freeze/thaw for flag changes`
- [4026e254](https://git.meli-email.org/meli/meli/commit/4026e254286dc061c0d3792dd3c6cda1bfdeb535) `Add some doc comments`
- [808aa494](https://git.meli-email.org/meli/meli/commit/808aa4942d1de1ecf0944d9d1c540b417f859991) `Rename text_processing to text for the whole brevity thing`
- [bebb473d](https://git.meli-email.org/meli/meli/commit/bebb473d1b6d9acfcd6df59573e2311dad98213f) `Derive extra traits for enums`
- [ab1b946f](https://git.meli-email.org/meli/meli/commit/ab1b946fd9d93a24a9802fbabe96705c15bc25e1) `Don't print details if it's an empty string.`
- [f685726e](https://git.meli-email.org/meli/meli/commit/f685726eac07c6b1d4f40dded6f3f55bcfcea5cc) `Add backtrace field to ParsingError`
- [73d5b24e](https://git.meli-email.org/meli/meli/commit/73d5b24e9847cf7dd033041e97f59274dece0b3d) `Merge integration tests in one crate`
- [31401fa3](https://git.meli-email.org/meli/meli/commit/31401fa35ca994632dee8b3f89bc4a921d64806b) `Add LazyCountSet::contains method`
- [0270db01](https://git.meli-email.org/meli/meli/commit/0270db0123eeb5abb41e53d07d308f1bd541f2a6) `From<&[u8]> -> From<B: AsRef<[u9]>>`
- [873a67d0](https://git.meli-email.org/meli/meli/commit/873a67d0fbe2512b03c0cf75b3ea7a89d4aecb1c) `Replace erroneous use of set_err_kind with set_kind`
- [51e3f163](https://git.meli-email.org/meli/meli/commit/51e3f163d403cbe127b8fc23c8fe0adf6beafd49) `Use Url instead of String in deserializing`
- [8014af25](https://git.meli-email.org/meli/meli/commit/8014af2563d4f1acf7016d8d67dea95add16ed2e) `Reduce debug prints`
- [f31b5c40](https://git.meli-email.org/meli/meli/commit/f31b5c4000a238bf17251aae0d7fd40c12dc6e37) `Don't print raw bytes as escaped unicode`
- [41e965b8](https://git.meli-email.org/meli/meli/commit/41e965b8a3743045356698a26dc4d1e21fcb0d36) `Split mbox/job stuff in submodules`
- [ec01a441](https://git.meli-email.org/meli/meli/commit/ec01a4412a825e9c7e4ecd253875ad4edae5893f) `Turn some sync connections to unsync`
- [3e914465](https://git.meli-email.org/meli/meli/commit/3e9144657b5f79764c762a0f1e8120a96bcce1f5) `Store children process metadata`
- [c53a32de](https://git.meli-email.org/meli/meli/commit/c53a32de4c04aa2ef7fedc4c83201cab952bc879) `Re-enables horizontal thread view`
- [36b7c00b](https://git.meli-email.org/meli/meli/commit/36b7c00b97b0b0ea07293bbdea0dc1cc94f3ad90) `Put doc text type names and co. in backtics`
- [634bd191](https://git.meli-email.org/meli/meli/commit/634bd1917a95919b65c37db612e0d082ef5f3aa4) `Convert log prints to traces`
- [1048ce68](https://git.meli-email.org/meli/meli/commit/1048ce6824391d9d81a6f711d8dbdad549c9c6b9) `Add hostname() utility function`
- [7645ff1b](https://git.meli-email.org/meli/meli/commit/7645ff1b875e3920389567eb5e61d800291e8a27) `Rename write_string{to_grid,}`
- [c2ae19d1](https://git.meli-email.org/meli/meli/commit/c2ae19d1208f2eb5cca341a04e019c3e285637a8) `Return Option from current_pos`
- [b61fc3ab](https://git.meli-email.org/meli/meli/commit/b61fc3ab6482dcef4f5cc1c09db3539b7e401f78) `Add HelpView struct for shortcuts widget`
- [3495ffd6](https://git.meli-email.org/meli/meli/commit/3495ffd61b5888f8538304ecb6e441819b373bdc) `Change UIEvent::Notification structure`
- [23c15261](https://git.meli-email.org/meli/meli/commit/23c15261e79c63791c569f225c1745df1b90ce2d) `Abstract envelope view filters away`
- [031d0f7d](https://git.meli-email.org/meli/meli/commit/031d0f7dc76700ac938e1ee4a767fab8deebb9f2) `Add area.is_empty() checks in cell iterators`
- [e37997d6](https://git.meli-email.org/meli/meli/commit/e37997d697f1f0b8faaa56a36f43c9f1da4bbb41) `Store Link URL value in Link type`
- [b6f769b2](https://git.meli-email.org/meli/meli/commit/b6f769b2f43087b71bf93667911cb22d7f690c95) `Add field names to row_attr! bool values`
- [0da97dd8](https://git.meli-email.org/meli/meli/commit/0da97dd8c11835d25e056c3dc0821b5574ab06f0) `Check row_updates in is_dirty()`
- [6506fffb](https://git.meli-email.org/meli/meli/commit/6506fffb9427ba13ba4368cd6b2c0dba12e5294c) `Rewrite email flag modifications`
- [23507932](https://git.meli-email.org/meli/meli/commit/23507932f94257a71f2ca8db23840ee0716072b6) `Update cache on set_flags`
- [470cae6b](https://git.meli-email.org/meli/meli/commit/470cae6b885c9b4851195fbb8274b1663bfa75cb) `Update thread cache on email flag modifications`
- [84f3641e](https://git.meli-email.org/meli/meli/commit/84f3641ec1401a0522811add0ed87a131be449b9) `Re-add on-screen message display`
- [54d21f25](https://git.meli-email.org/meli/meli/commit/54d21f25fdb716d36fd3678dd149eb880e16698d) `Re-add contact list and editor support`
- [458258e1](https://git.meli-email.org/meli/meli/commit/458258e1aab91f3883d6a9201a175462511349e9) `Re-enable compact listing style`
- [1c1be7d6](https://git.meli-email.org/meli/meli/commit/1c1be7d6c9bfc9f14c3a62ce464e1e15f2e6c4ec) `Add display_name(), display_slice(), display_name_slice() methods`
- [5dd71ef1](https://git.meli-email.org/meli/meli/commit/5dd71ef1cd93aebaadb0554eac692d0a0fa4aecd) `Upgrade JobsView component to new TUI API`
- [b5cc2a09](https://git.meli-email.org/meli/meli/commit/b5cc2a095f0268bb90cab150e903b0bbaffe1479) `Upgrade MailboxManager component to new TUI API`
- [ed8a5de2](https://git.meli-email.org/meli/meli/commit/ed8a5de2cb4b93ad766803d3590f7041f28cc419) `Re-enable EditAttachments component`
- [77a8d9e2](https://git.meli-email.org/meli/meli/commit/77a8d9e2c2094e84e06f5d624cb6f8afda24a400) `Make ModSequence publicly accessible`
- [64898a05](https://git.meli-email.org/meli/meli/commit/64898a0583e348fef3cd266a7196425e7015a871) `Make UIDStore constructor pub`
### Documentation
- [d018f07a](https://git.meli-email.org/meli/meli/commit/d018f07aa51fc293bf696fa7d7beff8e59ac91a8) Retouch manual pages
- [3adba40e](https://git.meli-email.org/meli/meli/commit/3adba40e32a8a66271ea2a8f5ddf27858744ecd6) Add macos manpage mirror url
- [e4818803](https://git.meli-email.org/meli/meli/commit/e481880321fecef4978c02a5bb834652d8d77b46) `Various manpage touchups and URL updates`
- [38bca8f8](https://git.meli-email.org/meli/meli/commit/38bca8f8bc11eff28991bedac344bfebebdd22d7) `Mention use_oauth2=true for gmail oauth2`
- [660022ce](https://git.meli-email.org/meli/meli/commit/660022ce238ddda1de7aaac228c4d990bd643429) `Add mailaddr.7 manpage`
- [c5e9e676](https://git.meli-email.org/meli/meli/commit/c5e9e67604313acd73b33b7000a1ba59e38ced34) `Add historical-manpages dir`
- [5afc0785](https://git.meli-email.org/meli/meli/commit/5afc078587b86104dc5b615c1840dade64768a5f) `Update README.md, DEVELOPMENT.md and create BUILD.md`
- [d018f07a](https://git.meli-email.org/meli/meli/commit/d018f07aa51fc293bf696fa7d7beff8e59ac91a8) `Retouch manual pages`
- [3adba40e](https://git.meli-email.org/meli/meli/commit/3adba40e32a8a66271ea2a8f5ddf27858744ecd6) `Add macos manpage mirror url`
### Packaging
- [cd2ba80f](https://git.meli-email.org/meli/meli/commit/cd2ba80f8e5424be08421b4dcc5113977418f240) Update metadata
- [5f8d7c80](https://git.meli-email.org/meli/meli/commit/5f8d7c8039c0623b3950fd1a8eb566f943fc309d) Update deb-dist target command with author metadata
- [59c99fdc](https://git.meli-email.org/meli/meli/commit/59c99fdc79bb31fb42cb99d4b95613022396a499) Update debian package metadata
- [cd2ba80f](https://git.meli-email.org/meli/meli/commit/cd2ba80f8e5424be08421b4dcc5113977418f240) `Update metadata`
- [5f8d7c80](https://git.meli-email.org/meli/meli/commit/5f8d7c8039c0623b3950fd1a8eb566f943fc309d) `Update deb-dist target command with author metadata`
- [59c99fdc](https://git.meli-email.org/meli/meli/commit/59c99fdc79bb31fb42cb99d4b95613022396a499) `Update debian package metadata`
- [97eb6363](https://git.meli-email.org/meli/meli/commit/97eb6363756f18e91024dfd3f2407fdc70d6d9c3) `Add dpkg --print-architecture to deb filename`
- [7412c238](https://git.meli-email.org/meli/meli/commit/7412c238704c14b0007caeae9d0bc9d9e3db8abb) `Bump meli version to 0.8.5-rc.3`
- [500fe7f7](https://git.meli-email.org/meli/meli/commit/500fe7f7e43a4cf5b798593dd06713954189bacb) `Update CHANGELOG.md`
- [5ff4e8ae](https://git.meli-email.org/meli/meli/commit/5ff4e8ae68182db8d4535d8537d26a3f398c815b) `Run builds.yaml when any manifest file changes`
- [0a617410](https://git.meli-email.org/meli/meli/commit/0a617410ec1ce5f6fb43772e4ad43f45f58a7f4d) `Split test.yaml to test.yaml and lints.yaml`
- [3ba1603a](https://git.meli-email.org/meli/meli/commit/3ba1603af2a9e408659717b9c8dace7406a8b142) `Add manifest file only lints workflow`
- [1617212c](https://git.meli-email.org/meli/meli/commit/1617212c5b0948174155ece4a9d0584764bd7dac) `Add scripts/check_debian_changelog.sh lint`
- [c41f35fd](https://git.meli-email.org/meli/meli/commit/c41f35fdd55bf093656b68cc69eab4cf4b9a8ec4) `Use actions/checkout@v3`
- [876616d4](https://git.meli-email.org/meli/meli/commit/876616d45b7798131ecdda82bb90d1d481842f5c) `Use actions/upload-artifact@v3`
- [2419f4bd](https://git.meli-email.org/meli/meli/commit/2419f4bd40fb1a732cf1df42dde48ba8ca812072) `Add debian package build workflow`
- [10c3b0ea](https://git.meli-email.org/meli/meli/commit/10c3b0eabe1684699c775e03c4c58038ea7979af) `Bump version to 0.8.5-rc.1`
- [d16afc7d](https://git.meli-email.org/meli/meli/commit/d16afc7d8d9e2eddb81664673e9a4ef82da2e303) `Bump version to 0.8.5-rc.2`
- [da251455](https://git.meli-email.org/meli/meli/commit/da251455a0185e207e0ec2d51273f6ddbdb572a8) `Bump meli version to 0.8.5-rc.2`
### Miscellaneous Tasks
- [6506fffb](https://git.meli-email.org/meli/meli/commit/6506fffb9427ba13ba4368cd6b2c0dba12e5294c) Rewrite email flag modifications
- [23507932](https://git.meli-email.org/meli/meli/commit/23507932f94257a71f2ca8db23840ee0716072b6) Update cache on set_flags
- [470cae6b](https://git.meli-email.org/meli/meli/commit/470cae6b885c9b4851195fbb8274b1663bfa75cb) Update thread cache on email flag modifications
- [c1c41c91](https://git.meli-email.org/meli/meli/commit/c1c41c9126005266f00d4979777718463dddf7b2) Update README.md and add Codeberg mirror
- [84f3641e](https://git.meli-email.org/meli/meli/commit/84f3641ec1401a0522811add0ed87a131be449b9) Re-add on-screen message display
- [54d21f25](https://git.meli-email.org/meli/meli/commit/54d21f25fdb716d36fd3678dd149eb880e16698d) Re-add contact list and editor support
- [458258e1](https://git.meli-email.org/meli/meli/commit/458258e1aab91f3883d6a9201a175462511349e9) Re-enable compact listing style
- [1c1be7d6](https://git.meli-email.org/meli/meli/commit/1c1be7d6c9bfc9f14c3a62ce464e1e15f2e6c4ec) Add display_name(), display_slice(), display_name_slice() methods
- [5dd71ef1](https://git.meli-email.org/meli/meli/commit/5dd71ef1cd93aebaadb0554eac692d0a0fa4aecd) Upgrade JobsView component to new TUI API
- [b5cc2a09](https://git.meli-email.org/meli/meli/commit/b5cc2a095f0268bb90cab150e903b0bbaffe1479) Upgrade MailboxManager component to new TUI API
- [ed8a5de2](https://git.meli-email.org/meli/meli/commit/ed8a5de2cb4b93ad766803d3590f7041f28cc419) Re-enable EditAttachments component
- [77a8d9e2](https://git.meli-email.org/meli/meli/commit/77a8d9e2c2094e84e06f5d624cb6f8afda24a400) Make ModSequence publicly accessible
- [64898a05](https://git.meli-email.org/meli/meli/commit/64898a0583e348fef3cd266a7196425e7015a871) Make UIDStore constructor pub
- [10c3b0ea](https://git.meli-email.org/meli/meli/commit/10c3b0eabe1684699c775e03c4c58038ea7979af) Bump version to 0.8.5-rc.1
- [71f3ffe7](https://git.meli-email.org/meli/meli/commit/71f3ffe740276087f20d85d62440ef5d3fe426f6) Update Makefile
- [63a63253](https://git.meli-email.org/meli/meli/commit/63a63253d77f6e1b9a42ec55ecf0bbc45a011245) Use type alias for c_char
- [c751b2e8](https://git.meli-email.org/meli/meli/commit/c751b2e8450aa83b7a8f5e8afbeccadf333f74ba) Re-enable conversations listing style
- [d16afc7d](https://git.meli-email.org/meli/meli/commit/d16afc7d8d9e2eddb81664673e9a4ef82da2e303) Bump version to 0.8.5-rc.2
- [da251455](https://git.meli-email.org/meli/meli/commit/da251455a0185e207e0ec2d51273f6ddbdb572a8) Bump meli version to 0.8.5-rc.2
- [3a709794](https://git.meli-email.org/meli/meli/commit/3a7097948308981204132a0eed2d28338f9d6b33) Update minimum rust version from 1.65.0 to 1.68.2
- [f900dbea](https://git.meli-email.org/meli/meli/commit/f900dbea468e822c5a510a72ecc6367549443927) Use cargo-derivefmt to sort derives alphabetically
- [5ff4e8ae](https://git.meli-email.org/meli/meli/commit/5ff4e8ae68182db8d4535d8537d26a3f398c815b) Run builds.yaml when any manifest file changes
- [0a617410](https://git.meli-email.org/meli/meli/commit/0a617410ec1ce5f6fb43772e4ad43f45f58a7f4d) Split test.yaml to test.yaml and lints.yaml
- [3ba1603a](https://git.meli-email.org/meli/meli/commit/3ba1603af2a9e408659717b9c8dace7406a8b142) Add manifest file only lints workflow
- [1617212c](https://git.meli-email.org/meli/meli/commit/1617212c5b0948174155ece4a9d0584764bd7dac) Add scripts/check_debian_changelog.sh lint
- [e19f3e57](https://git.meli-email.org/meli/meli/commit/e19f3e572c0ac585a6c2023e50f8fd0bd2ea2dae) Cargo-sort all Cargo.toml files
- [c41f35fd](https://git.meli-email.org/meli/meli/commit/c41f35fdd55bf093656b68cc69eab4cf4b9a8ec4) Use actions/checkout@v3
- [876616d4](https://git.meli-email.org/meli/meli/commit/876616d45b7798131ecdda82bb90d1d481842f5c) Use actions/upload-artifact@v3
- [2419f4bd](https://git.meli-email.org/meli/meli/commit/2419f4bd40fb1a732cf1df42dde48ba8ca812072) Add debian package build workflow
- [c4344529](https://git.meli-email.org/meli/meli/commit/c4344529e30b3385149d6dc3c1c4b34306a85491) `Add .git-blame-ignore-revs file`
- [f70496f1](https://git.meli-email.org/meli/meli/commit/f70496f14c2405dae3be932f0a3feffec50f34d4) `Add codemeta.json`
- [b3079715](https://git.meli-email.org/meli/meli/commit/b3079715f6d6b08a2ed3482bf718f5da8adac0ed) `Disable flakey test_smtp()`
- [8a95febb](https://git.meli-email.org/meli/meli/commit/8a95febb7807fa4a1b2f97ff2637da6fceab8284) `Set debuginfo=0 in test/lint builds`
- [81d1c053](https://git.meli-email.org/meli/meli/commit/81d1c0536bb15c8ba796fc36dddab7043a8eaaf4) `Add mandoc_lint.sh`
- [8de8addd](https://git.meli-email.org/meli/meli/commit/8de8addd11e97bfd9ec475bdf1f6907b4ff8da62) `Add cfg for musl builds`
- [70fc2b45](https://git.meli-email.org/meli/meli/commit/70fc2b455c5b6dbfbfc0f505e597942712298c7b) `Update nix dependency to 0.27`
- [fd64fe0b](https://git.meli-email.org/meli/meli/commit/fd64fe0bf87a75c628b93755f9ef923728df65ce) `Update codeberg.org URL`
- [30a3205e](https://git.meli-email.org/meli/meli/commit/30a3205e4fb0b9f6e578621c72160df5e4b8d09b) `Add clippy::doc_markdown`
- [c7aee725](https://git.meli-email.org/meli/meli/commit/c7aee7252587d2e42ca5df4a65731e183f7edaf2) `Add clippy::doc_markdown`
- [b8b24282](https://git.meli-email.org/meli/meli/commit/b8b24282a0dd098bea6500192bf5a74cdbecd8c3) `Update all instances of old domains with meli-email.org`
- [ae96038f](https://git.meli-email.org/meli/meli/commit/ae96038fbf5884d5f4e52d0b0488dedb6e5f4050) `Make unicode-segmentation a hard dependency`
- [255e9376](https://git.meli-email.org/meli/meli/commit/255e93764ad7218474e1b08d59d6808281b89b8b) `Update `linkify` dep from 0.8.1 to 0.10.0`
- [dedee908](https://git.meli-email.org/meli/meli/commit/dedee908d1e0b42773bade8e0604e94b14810e2d) `Update `notify` dep from 4.0.17 to 6.1.1`
- [c1c41c91](https://git.meli-email.org/meli/meli/commit/c1c41c9126005266f00d4979777718463dddf7b2) `Update README.md and add Codeberg mirror`
- [71f3ffe7](https://git.meli-email.org/meli/meli/commit/71f3ffe740276087f20d85d62440ef5d3fe426f6) `Update Makefile`
- [63a63253](https://git.meli-email.org/meli/meli/commit/63a63253d77f6e1b9a42ec55ecf0bbc45a011245) `Use type alias for c_char`
- [c751b2e8](https://git.meli-email.org/meli/meli/commit/c751b2e8450aa83b7a8f5e8afbeccadf333f74ba) `Re-enable conversations listing style`
- [3a709794](https://git.meli-email.org/meli/meli/commit/3a7097948308981204132a0eed2d28338f9d6b33) `Update minimum rust version from 1.65.0 to 1.68.2`
- [f900dbea](https://git.meli-email.org/meli/meli/commit/f900dbea468e822c5a510a72ecc6367549443927) `Use cargo-derivefmt to sort derives alphabetically`
- [e19f3e57](https://git.meli-email.org/meli/meli/commit/e19f3e572c0ac585a6c2023e50f8fd0bd2ea2dae) `Cargo-sort all Cargo.toml files`
## [v0.8.4](https://git.meli-email.org/meli/meli/releases/tag/v0.8.4) - 2023-11-22
@ -731,3 +871,4 @@ Notable changes:
[v0.8.2]: https://git.meli-email.org/meli/meli/releases/tag/v0.8.2
[v0.8.3]: https://git.meli-email.org/meli/meli/releases/tag/v0.8.3
[v0.8.4]: https://git.meli-email.org/meli/meli/releases/tag/v0.8.4
[v0.8.5]: https://git.meli-email.org/meli/meli/releases/tag/v0.8.5

48
Cargo.lock generated

@ -174,7 +174,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.29",
"syn 2.0.32",
]
[[package]]
@ -802,7 +802,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.29",
"syn 2.0.32",
]
[[package]]
@ -1243,7 +1243,7 @@ dependencies = [
[[package]]
name = "meli"
version = "0.8.5-rc.3"
version = "0.8.5"
dependencies = [
"async-task",
"bitflags 2.4.0",
@ -1278,7 +1278,7 @@ dependencies = [
[[package]]
name = "melib"
version = "0.8.5-rc.3"
version = "0.8.5"
dependencies = [
"async-stream",
"base64 0.13.1",
@ -1508,7 +1508,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.29",
"syn 2.0.32",
]
[[package]]
@ -1591,7 +1591,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.29",
"syn 2.0.32",
]
[[package]]
@ -1915,7 +1915,7 @@ checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.29",
"syn 2.0.32",
]
[[package]]
@ -2101,9 +2101,9 @@ dependencies = [
[[package]]
name = "syn"
version = "2.0.29"
version = "2.0.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a"
checksum = "239814284fd6f1a4ffe4ca893952cdd93c224b6a1571c9a9eadd670295c0c9e2"
dependencies = [
"proc-macro2",
"quote",
@ -2186,7 +2186,7 @@ checksum = "6bb623b56e39ab7dcd4b1b98bb6c8f8d907ed255b18de254088016b27a8ee19b"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.29",
"syn 2.0.32",
]
[[package]]
@ -2244,9 +2244,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
[[package]]
name = "toml"
version = "0.8.8"
version = "0.8.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1a195ec8c9da26928f773888e0742ca3ca1040c6cd859c919c9f59c1954ab35"
checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3"
dependencies = [
"indexmap 2.0.1",
"serde",
@ -2266,9 +2266,9 @@ dependencies = [
[[package]]
name = "toml_edit"
version = "0.21.0"
version = "0.22.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03"
checksum = "d3328d4f68a705b2a4498da1d580585d39a6510f98318a2cec3018a7ec61ddef"
dependencies = [
"indexmap 2.0.1",
"serde",
@ -2298,7 +2298,7 @@ checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.29",
"syn 2.0.32",
]
[[package]]
@ -2437,7 +2437,7 @@ dependencies = [
"once_cell",
"proc-macro2",
"quote",
"syn 2.0.29",
"syn 2.0.32",
"wasm-bindgen-shared",
]
@ -2459,7 +2459,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.29",
"syn 2.0.32",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
@ -2641,9 +2641,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
[[package]]
name = "winnow"
version = "0.5.30"
version = "0.6.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b5c3db89721d50d0e2a673f5043fc4722f76dcc352d7b1ab8b8288bed4ed2c5"
checksum = "c3c52e9c97a68071b23e836c9380edae937f17b9c4667bd021973efc689f618d"
dependencies = [
"memchr",
]
@ -2656,20 +2656,20 @@ checksum = "213b7324336b53d2414b2db8537e56544d981803139155afa84f76eeebb7a546"
[[package]]
name = "zerocopy"
version = "0.7.3"
version = "0.7.33"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a7af71d8643341260a65f89fa60c0eeaa907f34544d8f6d9b0df72f069b5e74"
checksum = "087eca3c1eaf8c47b94d02790dd086cd594b912d2043d4de4bfdd466b3befb7c"
dependencies = [
"zerocopy-derive",
]
[[package]]
name = "zerocopy-derive"
version = "0.7.3"
version = "0.7.33"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9731702e2f0617ad526794ae28fbc6f6ca8849b5ba729666c2a5bc4b6ddee2cd"
checksum = "6f4b6c273f496d8fd4eaf18853e6b448760225dc030ff2c485a786859aea6393"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.29",
"syn 2.0.32",
]

@ -18,7 +18,7 @@
"dateModified": "2023-12-11",
"datePublished": "2017-07-23",
"description": "BSD/Linux/macos terminal email client with support for multiple accounts and Maildir / mbox / notmuch / IMAP / JMAP / NNTP (Usenet).",
"downloadUrl": "https://git.meli-email.org/meli/meli/archive/v0.8.5-rc.3.tar.gz",
"downloadUrl": "https://git.meli-email.org/meli/meli/archive/v0.8.5.tar.gz",
"identifier": "https://meli-email.org/",
"isPartOf": "https://meli-email.org/",
"keywords": [
@ -53,7 +53,7 @@
"https://github.com/meli/meli",
"https://lists.meli-email.org/"
],
"version": "0.8.5-rc3",
"version": "0.8.5",
"contIntegration": "https://git.meli-email.org/meli/meli/actions",
"developmentStatus": "active",
"issueTracker": "https://git.meli-email.org/meli/meli/issues",

215
debian/changelog vendored

@ -1,3 +1,218 @@
meli (0.8.5-1) bookworm; urgency=low
Contributors in alphabetical order:
- Andrei Zisu
- Ethra
- Geert Stappers
- Guillaume Ranquet
- Manos Pitsidianakis
Added
=====
- 0e3a0c4b Add safe UI widget area drawing API
- 0114e695 Add next_search_result and previous_search_result shortcuts
- 0b468d88 Improve Error messages
- 5af2e1ee Add subcommand to print config file location
- 62aee464 Add subcommand to print log file location
- e2cdebe8 Add option to highlight self in mailing list threads
- cd448924 Add clear-selection command
- 3a5306e9 View manpages in pager inside meli
- a37d5fc1 Implement a key to command mapping
- ce4ba06c Add a flag set/unset command
- 148f0433 Implement flag set/unset action in UI
- 417b24cd Print invalid command on error
- 4e941a9e Add default_mailbox setting
- 974502c6 Impl Hash for Card
- ba7a97e9 Add x axis scroll support
- ccf6f9a2 Remember previous set index_style preferences
Bug Fixes
=========
- bcec745c Fix command and status bar drawing
- 62b8465f Fix ThreadView for new TUI API
- 28fa66cc Fix ThreadedListing for new TUI API
- 2c6f180d Fix macos compilation
- 24971d19 Fix compilation with 1.70.0 cargo
- 34a2d52e Fix rustdoc::redundant_explicit_links
- f63774fa Fix new clippy lints (1.75)
- 33408146 Fix feature permutation mis-compilations found with cargo-hack
- e3351d27 Fix set unseen updating all mboxes
- 8185f2cf Add deny clippy lints and fix them
- 7861fb04 Fix typos found with typos tool
- 64e60cb0 Fix select modifier regression
- 60f26f9d Fix some old pre-intradoc rustdoc links
- 1fe36192 Make conf validation recognize AccountSettings extra keys
- c332c2f5 Fix new clippy lints (mostly clippy::blocks_in_conditions)
- 070930e6 Fix auto index build when missing
- 26928e3a Fix compilation for macos
- 3884c0da Small typographic fixups
- b820bd6d Remove unused imap_trace! and fix comp
- a88b8c5e Debian/changelog warning fix
- 4ce616ae Fix lints.yaml rustup install step
- 264782d2 Various unimportant minor style/doc fixups
- 475609fe Make {prev,next}_entry shortcut behavior consistent
- a69c674c Fix new 1.77 clippy lints
- 48cb9ee2 Fix compilation for macos
- 8a16cf6d Fix wrong column index crash
- bc1b6531 Fix constant redrawing
- 29cc1bce Remove obsolete file melib/src/text/tables.rs.gz
- ab041898 Fix new warnings for 1.78.0
- 46e40856 Fix UIConfirmationDialog highlight printing
- 3b93fa8e Don't draw messages above embedded terminal
- 684fae3e Copy old content to new buf when resizing
- 5d915baa Use Screen::resize instead of CellBuffer::resize
- 6a66afe9 Make add contact dialog scrollable on overflow
- aa5737a0 Prevent drawing pager on embedded mode
- 07072e2e Prevent panic if envelope is deleted
- 8ddd673d Update all mailboxes
- 3691cd29 Send EnvelopeUpdate event after self.collection.update_flags()
- 1fcb1d59 Remove rerun when build.rs changes
- 933bf157 Ack \ as an atom
- a1cbb198 Return Results instead of panicking
- b5ddc397 Remove unwrap() from get_events() loop
Changes
=======
- 61a0c3c2 Do not clear selection after action
- 9af284b8 Don't hide unread count for mailboxes that are partly truncated
- 35408b16 Run pager filter asynchronously
- e80ea9c9 Changed default manpage install path
- 742f038f Move sent_mailbox to settings
- 86bbf1ea Refresh NotmuchMailbox counts when setting flags
- f0866a39 Make config error more user-friendly
- 11f3077b Add more possible values for manpage names
- 1eca34b3 Set lowest priority to shortcut command UIEvents
- 484712b0 Check for unrecoverable errors in is_online
- 8ec6f220 Use ShellExpandTrait::expand in more user-provided paths
Refactoring
===========
- 0500e451 Add missing EnvelopeRemove event handler
- ab14f819 Make write_string_to_grid a CellBuffer method
- e0adcdfe Move rest of methods under CellBuffer
- 0a74c7d0 Overhaul refactor
- 3b4acc15 Add tests
- 7eedd860 Remove address_list! macro
- f3e85738 Move build.rs scripts to build directory
- 77325486 Remove on-push hooks for actions w/ run on-pr
- 08518e1c Remove obsolete position.rs module
- ddab3179 Move tests to tests module
- 79520068 Remove doctests, add tests module
- 4e7b6656 Sqlite caching refactor
- b5fd3f57 Make self.view an Option
- a3aaec38 Remove unused imports
- 11a0586d Remove num_cpus dependency
- 8f3dee9b Extract mod manpages to standalone file
- 89c7972e Add suggestions to BadValue variant
- 35a9f33a Extract common FlagString logic
- 1b0bdd0a Split queries and mailbox into submodules
- 506ae9f5 Add ErrorKind::LinkedLibrary variant
- ebe1b3da Wrap *mut struct fields in NonNull<_>
- ca7d7bb9 Use message freeze/thaw for flag changes
- 4026e254 Add some doc comments
- 808aa494 Rename text_processing to text for the whole brevity thing
- bebb473d Derive extra traits for enums
- ab1b946f Don't print details if it's an empty string.
- f685726e Add backtrace field to ParsingError
- 73d5b24e Merge integration tests in one crate
- 31401fa3 Add LazyCountSet::contains method
- 0270db01 From<&[u8]> -> From<B: AsRef<[u9]>>
- 873a67d0 Replace erroneous use of set_err_kind with set_kind
- 51e3f163 Use Url instead of String in deserializing
- 8014af25 Reduce debug prints
- f31b5c40 Don't print raw bytes as escaped unicode
- 41e965b8 Split mbox/job stuff in submodules
- ec01a441 Turn some sync connections to unsync
- 3e914465 Store children process metadata
- c53a32de Re-enables horizontal thread view
- 36b7c00b Put doc text type names and co. in backtics
- 634bd191 Convert log prints to traces
- 1048ce68 Add hostname() utility function
- 7645ff1b Rename write_string{to_grid,}
- c2ae19d1 Return Option from current_pos
- b61fc3ab Add HelpView struct for shortcuts widget
- 3495ffd6 Change UIEvent::Notification structure
- 23c15261 Abstract envelope view filters away
- 031d0f7d Add area.is_empty() checks in cell iterators
- e37997d6 Store Link URL value in Link type
- b6f769b2 Add field names to row_attr! bool values
- 0da97dd8 Check row_updates in is_dirty()
- 6506fffb Rewrite email flag modifications
- 23507932 Update cache on set_flags
- 470cae6b Update thread cache on email flag modifications
- 84f3641e Re-add on-screen message display
- 54d21f25 Re-add contact list and editor support
- 458258e1 Re-enable compact listing style
- 1c1be7d6 Add display_name(), display_slice(), display_name_slice() methods
- 5dd71ef1 Upgrade JobsView component to new TUI API
- b5cc2a09 Upgrade MailboxManager component to new TUI API
- ed8a5de2 Re-enable EditAttachments component
- 77a8d9e2 Make ModSequence publicly accessible
- 64898a05 Make UIDStore constructor pub
Documentation
=============
- e4818803 Various manpage touchups and URL updates
- 38bca8f8 Mention use_oauth2=true for gmail oauth2
- 660022ce Add mailaddr.7 manpage
- c5e9e676 Add historical-manpages dir
- 5afc0785 Update README.md, DEVELOPMENT.md and create BUILD.md
- d018f07a Retouch manual pages
- 3adba40e Add macos manpage mirror url
Packaging
=========
- cd2ba80f Update metadata
- 5f8d7c80 Update deb-dist target command with author metadata
- 59c99fdc Update debian package metadata
- 97eb6363 Add dpkg --print-architecture to deb filename
- 7412c238 Bump meli version to 0.8.5-rc.3
- 500fe7f7 Update CHANGELOG.md
- 5ff4e8ae Run builds.yaml when any manifest file changes
- 0a617410 Split test.yaml to test.yaml and lints.yaml
- 3ba1603a Add manifest file only lints workflow
- 1617212c Add scripts/check_debian_changelog.sh lint
- c41f35fd Use actions/checkout@v3
- 876616d4 Use actions/upload-artifact@v3
- 2419f4bd Add debian package build workflow
- 10c3b0ea Bump version to 0.8.5-rc.1
- d16afc7d Bump version to 0.8.5-rc.2
- da251455 Bump meli version to 0.8.5-rc.2
Miscellaneous Tasks
===================
- c4344529 Add .git-blame-ignore-revs file
- f70496f1 Add codemeta.json
- b3079715 Disable flakey test_smtp()
- 8a95febb Set debuginfo=0 in test/lint builds
- 81d1c053 Add mandoc_lint.sh
- 8de8addd Add cfg for musl builds
- 70fc2b45 Update nix dependency to 0.27
- fd64fe0b Update codeberg.org URL
- 30a3205e Add clippy::doc_markdown
- c7aee725 Add clippy::doc_markdown
- b8b24282 Update all instances of old domains with meli-email.org
- ae96038f Make unicode-segmentation a hard dependency
- 255e9376 Update linkify dep from 0.8.1 to 0.10.0
- dedee908 Update notify dep from 4.0.17 to 6.1.1
- c1c41c91 Update README.md and add Codeberg mirror
- 71f3ffe7 Update Makefile
- 63a63253 Use type alias for c_char
- c751b2e8 Re-enable conversations listing style
- 3a709794 Update minimum rust version from 1.65.0 to 1.68.2
- f900dbea Use cargo-derivefmt to sort derives alphabetically
- e19f3e57 Cargo-sort all Cargo.toml files
-- Manos Pitsidianakis <manos@pitsidianak.is> Sun, 05 May 2024 18:46:42 +0300
meli (0.8.5-rc.3-1) bookworm; urgency=low
* Update to 0.8.5-rc.3

@ -1,6 +1,6 @@
[package]
name = "meli"
version = "0.8.5-rc.3"
version = "0.8.5"
authors = ["Manos Pitsidianakis <manos@pitsidianak.is>"]
edition = "2021"
rust-version = "1.68.2"
@ -31,7 +31,7 @@ indexmap = { version = "^1.6", features = ["serde-1"] }
libc = { version = "0.2.125", default-features = false, features = ["extra_traits"] }
libz-sys = { version = "1.1", features = ["static"], optional = true }
linkify = { version = "^0.10", default-features = false }
melib = { path = "../melib", version = "0.8.5-rc.3", features = [] }
melib = { path = "../melib", version = "0.8.5", features = [] }
nix = { version = "0.27", default-features = false, features = ["signal", "poll", "term", "ioctl", "process"] }
serde = "1.0.71"
serde_derive = "1.0.71"

@ -34,7 +34,7 @@ use std::{
use melib::{
backends::{MailboxHash, TagHash},
search::Query,
SortField, SortOrder, StderrLogger,
ShellExpandTrait, SortField, SortOrder, StderrLogger,
};
use crate::{
@ -311,7 +311,7 @@ pub fn get_config_file() -> Result<PathBuf> {
.set_source(Some(std::sync::Arc::new(Box::new(err))))
})?;
match env::var("MELI_CONFIG") {
Ok(path) => Ok(PathBuf::from(path)),
Ok(path) => Ok(PathBuf::from(path).expand()),
Err(_) => Ok(xdg_dirs
.place_config_file("config.toml")
.chain_err_summary(|| {

@ -31,7 +31,8 @@ use std::{
use futures::future::try_join_all;
use melib::{
backends::EnvelopeHashBatch, mbox::MboxMetadata, utils::datetime, Flag, FlagOp, UnixTimestamp,
backends::EnvelopeHashBatch, mbox::MboxMetadata, utils::datetime, Flag, FlagOp,
ShellExpandTrait, UnixTimestamp,
};
use smallvec::SmallVec;
@ -777,6 +778,7 @@ pub trait MailListingTrait: ListingTrait {
if path.is_relative() {
path = context.current_dir().join(&path);
}
path = path.expand();
let account = &mut context.accounts[&account_hash];
let format = (*format).unwrap_or_default();
let collection = account.collection.clone();
@ -1742,12 +1744,13 @@ impl Component for Listing {
return true;
}
Action::Listing(ListingAction::Import(file_path, mailbox_path)) => {
let file_path = file_path.expand();
let account = &mut context.accounts[self.cursor_pos.account];
if let Err(err) = account
.mailbox_by_path(mailbox_path)
.and_then(|mailbox_hash| {
Ok((
std::fs::read(file_path).chain_err_summary(|| {
std::fs::read(&file_path).chain_err_summary(|| {
format!("Could not read {}", file_path.display())
})?,
mailbox_hash,

@ -21,10 +21,10 @@
use std::{fs::File, io::Write, os::unix::fs::PermissionsExt, path::Path};
use melib::Result;
use melib::{Result, ShellExpandTrait};
pub fn save_attachment(path: &Path, bytes: &[u8]) -> Result<()> {
let mut f = File::create(path)?;
let mut f = File::create(path.expand())?;
let mut permissions = f.metadata()?.permissions();
permissions.set_mode(0o600); // Read/write for owner only.
f.set_permissions(permissions)?;

@ -28,7 +28,7 @@ use std::{
};
use flate2::bufread::GzDecoder;
use melib::log;
use melib::{log, ShellExpandTrait};
use crate::{Error, Result};
@ -87,6 +87,7 @@ impl ManPages {
pub fn install(destination: Option<PathBuf>) -> Result<PathBuf> {
fn path_valid(p: &Path, tries: &mut Vec<PathBuf>) -> bool {
tries.push(p.into());
let p = p.expand();
p.exists()
&& p.is_dir()
&& fs::metadata(p)
@ -116,6 +117,7 @@ impl ManPages {
else {
return Err(format!("Could not write to any of these paths: {:?}", tries).into());
};
path = path.expand();
for (p, dir) in [
(Self::Main, "man1"),

@ -27,13 +27,13 @@ use std::{
};
use crossbeam::channel::{Receiver, Sender};
use melib::Result;
use melib::{Result, ShellExpandTrait};
use crate::*;
pub fn create_config(path: Option<PathBuf>) -> Result<()> {
let config_path = if let Some(path) = path {
path
path.expand()
} else {
conf::get_config_file()?
};
@ -131,7 +131,7 @@ pub fn compiled_with() -> Result<()> {
pub fn test_config(path: Option<PathBuf>) -> Result<()> {
let config_path = if let Some(path) = path {
path
path.expand()
} else {
crate::conf::get_config_file()?
};
@ -144,6 +144,7 @@ pub fn view(
sender: Sender<ThreadEvent>,
receiver: Receiver<ThreadEvent>,
) -> Result<State> {
let path = path.expand();
if !path.exists() {
return Err(Error::new(format!(
"`{}` is not a valid path",

@ -215,9 +215,10 @@ enum InputMode {
Paste(Vec<u8>),
}
#[derive(Debug)]
#[derive(Debug, Default)]
/// Main process sends commands to the input thread.
pub enum InputCommand {
#[default]
/// Exit thread
Kill,
}
@ -303,7 +304,7 @@ pub fn get_events(
continue 'poll_while;
};
let _ = nix::unistd::read(new_command_fd.as_raw_fd(), buf.as_mut());
match cmd.unwrap() {
match cmd.unwrap_or_default() {
InputCommand::Kill => return,
}
}

@ -30,7 +30,7 @@ use std::{
path::{Path, PathBuf},
};
use melib::{error::*, uuid::Uuid};
use melib::{error::*, uuid::Uuid, ShellExpandTrait};
/// Temporary file that can optionally cleaned up when it is dropped.
#[derive(Debug)]
@ -105,7 +105,8 @@ impl File {
path.set_extension(ext);
}
fn inner(path: &Path, bytes: &[u8], delete_on_drop: bool) -> Result<File> {
let mut f = std::fs::File::create(path)?;
let path = path.expand();
let mut f = std::fs::File::create(&path)?;
let metadata = f.metadata()?;
let mut permissions = metadata.permissions();
@ -115,7 +116,7 @@ impl File {
f.write_all(bytes)?;
f.flush()?;
Ok(File {
path: path.to_path_buf(),
path,
delete_on_drop,
})
}

@ -1,6 +1,6 @@
[package]
name = "melib"
version = "0.8.5-rc.3"
version = "0.8.5"
authors = ["Manos Pitsidianakis <manos@pitsidianak.is>"]
edition = "2021"
build = "build.rs"

@ -27,6 +27,7 @@ use std::{
collections::HashMap,
hash::{Hash, Hasher},
ops::Deref,
path::Path,
};
use indexmap::IndexMap;
@ -35,6 +36,7 @@ use uuid::Uuid;
use crate::utils::{
datetime::{now, timestamp_to_string, UnixTimestamp},
parsec::Parser,
shellexpand::ShellExpandTrait,
};
#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
@ -139,8 +141,8 @@ impl AddressBook {
pub fn with_account(s: &crate::conf::AccountSettings) -> Self {
let mut ret = Self::new(s.name.clone());
if let Some(mutt_alias_file) = s.extra.get("mutt_alias_file").map(String::as_str) {
match std::fs::read_to_string(std::path::Path::new(mutt_alias_file))
if let Some(mutt_alias_file) = s.extra.get("mutt_alias_file") {
match std::fs::read_to_string(Path::new(mutt_alias_file).expand())
.map_err(|err| err.to_string())
.and_then(|contents| {
contents
@ -165,7 +167,8 @@ impl AddressBook {
}
#[cfg(feature = "vcard")]
if let Some(vcard_path) = s.vcard_folder() {
match vcard::load_cards(std::path::Path::new(vcard_path)) {
let expanded_path = Path::new(vcard_path).expand();
match vcard::load_cards(&expanded_path) {
Ok(cards) => {
for c in cards {
ret.add_card(c);
@ -173,6 +176,13 @@ impl AddressBook {
}
Err(err) => {
log::warn!("Could not load vcards from {:?}: {}", vcard_path, err);
if expanded_path.display().to_string() != vcard_path {
log::warn!(
"Note: vcard_folder was expanded from {} to {}",
vcard_path,
expanded_path.display()
);
}
}
}
}

@ -27,6 +27,7 @@ use crate::{
backends::SpecialUsageMailbox,
email::Address,
error::{Error, ErrorKind, Result},
ShellExpandTrait,
};
pub use crate::{SortField, SortOrder};
@ -107,7 +108,7 @@ impl AccountSettings {
#[cfg(feature = "vcard")]
{
if let Some(folder) = self.extra.remove("vcard_folder") {
let path = Path::new(&folder);
let path = Path::new(&folder).expand();
if !matches!(path.try_exists(), Ok(true)) {
return Err(Error::new(format!(

@ -1078,11 +1078,11 @@ impl MaildirType {
settings: &AccountSettings,
p: P,
) -> Result<Vec<MailboxHash>> {
if !p.as_ref().exists() || !p.as_ref().is_dir() {
if !p.as_ref().try_exists().unwrap_or(false) || !p.as_ref().is_dir() {
return Err(Error::new(format!(
"Configuration error: Path \"{}\" {}",
p.as_ref().display(),
if !p.as_ref().exists() {
if !p.as_ref().try_exists().unwrap_or(false) {
"does not exist."
} else {
"is not a directory."
@ -1147,7 +1147,7 @@ impl MaildirType {
Ok(children)
}
let root_mailbox = PathBuf::from(&settings.root_mailbox).expand();
if !root_mailbox.exists() {
if !root_mailbox.try_exists().unwrap_or(false) {
return Err(Error::new(format!(
"Configuration error ({}): root_mailbox `{}` is not a valid directory.",
settings.name,
@ -1294,7 +1294,7 @@ impl MaildirType {
pub fn validate_config(s: &mut AccountSettings) -> Result<()> {
let root_mailbox = PathBuf::from(&s.root_mailbox).expand();
if !root_mailbox.exists() {
if !root_mailbox.try_exists().unwrap_or(false) {
return Err(Error::new(format!(
"Configuration error ({}): root_mailbox `{}` is not a valid directory.",
s.name,

@ -138,7 +138,7 @@ impl MaildirMailbox {
accept_invalid: bool,
settings: &AccountSettings,
) -> Result<Self> {
let pathbuf = PathBuf::from(&path);
let pathbuf = PathBuf::from(&path).expand();
let mut h = DefaultHasher::new();
pathbuf.hash(&mut h);

@ -1298,7 +1298,7 @@ impl MboxType {
event_consumer: BackendEventConsumer,
) -> Result<Box<dyn MailBackend>> {
let path = Path::new(s.root_mailbox.as_str()).expand();
if !path.exists() {
if !path.try_exists().unwrap_or(false) {
return Err(Error::new(format!(
"\"root_mailbox\" {} for account {} is not a valid path.",
s.root_mailbox.as_str(),
@ -1371,8 +1371,8 @@ impl MboxType {
for (k, f) in s.mailboxes.iter() {
if let Some(path_str) = f.extra.get("path") {
let hash = MailboxHash(get_path_hash!(path_str));
let pathbuf: PathBuf = path_str.into();
if !pathbuf.exists() || pathbuf.is_dir() {
let pathbuf: PathBuf = Path::new(path_str).expand();
if !pathbuf.try_exists().unwrap_or(false) || pathbuf.is_dir() {
return Err(Error::new(format!(
"mbox mailbox configuration entry \"{}\" path value {} is not a file.",
k, path_str
@ -1451,7 +1451,7 @@ impl MboxType {
};
}
let path = Path::new(s.root_mailbox.as_str()).expand();
if !path.exists() {
if !path.try_exists().unwrap_or(false) {
return Err(Error::new(format!(
"\"root_mailbox\" {} for account {} is not a valid path.",
s.root_mailbox.as_str(),

@ -284,7 +284,15 @@ impl NotmuchDb {
let mut dlpath = Cow::Borrowed("libnotmuch.so");
let mut custom_dlpath = false;
if let Some(lib_path) = s.extra.get("library_file_path") {
dlpath = Cow::Owned(lib_path.to_string());
let expanded_path = Path::new(lib_path).expand();
let expanded_path_string = expanded_path.display().to_string();
dlpath = if &expanded_path_string != lib_path
&& expanded_path.try_exists().unwrap_or(false)
{
Cow::Owned(expanded_path_string)
} else {
Cow::Owned(lib_path.to_string())
};
custom_dlpath = true;
}
let lib = Arc::new(NotmuchLibrary {
@ -311,7 +319,7 @@ impl NotmuchDb {
dlpath,
});
let mut path = Path::new(s.root_mailbox.as_str()).expand();
if !path.exists() {
if !path.try_exists().unwrap_or(false) {
return Err(Error::new(format!(
"Notmuch `root_mailbox` {} for account {} does not exist.",
s.root_mailbox.as_str(),
@ -328,7 +336,7 @@ impl NotmuchDb {
.set_kind(ErrorKind::Configuration));
}
path.push(".notmuch");
if !path.exists() || !path.is_dir() {
if !path.try_exists().unwrap_or(false) || !path.is_dir() {
return Err(Error::new(format!(
"Notmuch `root_mailbox` {} for account {} does not contain a `.notmuch` \
subdirectory.",
@ -412,7 +420,7 @@ impl NotmuchDb {
pub fn validate_config(s: &mut AccountSettings) -> Result<()> {
let mut path = Path::new(s.root_mailbox.as_str()).expand();
if !path.exists() {
if !path.try_exists().unwrap_or(false) {
return Err(Error::new(format!(
"Notmuch `root_mailbox` {} for account {} does not exist.",
s.root_mailbox.as_str(),
@ -429,7 +437,7 @@ impl NotmuchDb {
.set_kind(ErrorKind::Configuration));
}
path.push(".notmuch");
if !path.exists() || !path.is_dir() {
if !path.try_exists().unwrap_or(false) || !path.is_dir() {
return Err(Error::new(format!(
"Notmuch `root_mailbox` {} for account {} does not contain a `.notmuch` \
subdirectory.",
@ -442,7 +450,12 @@ impl NotmuchDb {
let account_name = s.name.to_string();
if let Some(lib_path) = s.extra.remove("library_file_path") {
if !Path::new(&lib_path).exists() || Path::new(&lib_path).is_dir() {
let expanded_path = Path::new(&lib_path).expand();
if (!Path::new(&lib_path).try_exists().unwrap_or(false)
|| Path::new(&lib_path).is_dir())
&& !Path::new(&expanded_path).try_exists().unwrap_or(false)
|| Path::new(&expanded_path).is_dir()
{
return Err(Error::new(format!(
"Notmuch `library_file_path` setting value `{}` for account {} does not exist \
or is a directory.",

@ -29,25 +29,36 @@ use std::{
use smallvec::SmallVec;
// [ref:needs_dev_doc]: ShellExpandTrait
// [ref:needs_unit_test]: ShellExpandTrait
pub trait ShellExpandTrait {
// [ref:needs_dev_doc]
fn expand(&self) -> PathBuf;
// [ref:needs_dev_doc]
fn complete(&self, force: bool) -> SmallVec<[String; 128]>;
}
impl ShellExpandTrait for Path {
fn expand(&self) -> PathBuf {
// [ref:TODO]: ShellExpandTrait: add support for parameters in braces ${ }
// https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_02
let mut ret = PathBuf::new();
for c in self.components() {
let c_to_str = c.as_os_str().to_str();
let c_to_str = c.as_os_str();
match c_to_str {
Some("~") => {
tilde if tilde == "~" => {
if let Ok(home_dir) = std::env::var("HOME") {
ret.push(home_dir)
} else {
return PathBuf::new();
// POSIX says that if HOME is unset, the results of tilde expansion is
// unspecified.
// https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_01
// Abort expansion.
return self.to_path_buf();
}
}
Some(var) if var.starts_with('$') => {
var if var.to_string_lossy().starts_with('$') => {
let var = var.to_string_lossy();
let env_name = var.split_at(1).1;
if env_name.chars().all(char::is_uppercase) {
ret.push(std::env::var(env_name).unwrap_or_default());
@ -55,13 +66,9 @@ impl ShellExpandTrait for Path {
ret.push(c);
}
}
Some(_) => {
_ => {
ret.push(c);
}
None => {
/* path is invalid */
return PathBuf::new();
}
}
}
ret

Loading…
Cancel
Save