Releases: pimalaya/himalaya
v0.8.0
Added
- Added keyring support, which means Himalaya can now use your system's global keyring to get/set sensitive data like passwords or tokens.
- Added required IMAP option
imap-auth
and SMTP optionsmtp-auth
. Possible values:passwd
,oauth2
. - Added OAuth 2.0 support for IMAP and SMTP.
- Added passwords and OAuth 2.0 configuration via the wizard.
- Added
email-sending-save-copy
option to control whenever a copy of any sent email should be saved in thesent
folder defined infolder-aliases
. - Imported id mapper from the lib, which means that the id mapping is now done by the CLI.
- Added
BackendConfig
toAccountConfig::backend
to match sender implementation. - Added support for pipeline commands, which means commands can be either a single command (string) or piped commands (list of strings). It applies for:
email-writing-verify-cmd
email-writing-decrypt-cmd
email-writing-sign-cmd
email-writing-encrypt-cmd
Changed
-
Changed release archive extensions from
.tar.gz
to.tgz
. -
Moved
wizard
module into domains (config, account, backend…). -
[BREAKING] Changed the way secrets are managed. A secret is a sensitive data like passwords or tokens. There is 3 possible ways to declare a secret in the config file:
{ raw = <secret> }
for the raw secret as string (unsafe, not recommanded),{ cmd = <secret-cmd> }
for command that exposes the secret,{ keyring = <secret-entry> }
for entry in your system's global keyring that contains the secret.
This applies for:
imap-passwd
imap-oauth2-client-secret
imap-oauth2-access-token
imap-oauth2-refresh-token
smtp-passwd
smtp-oauth2-client-secret
smtp-oauth2-access-token
smtp-oauth2-refresh-token
Fixed
- Fixed Windows releases corrupted archives.
Removed
- [BREAKING] Removed
-s|--sanitize
option. It is done by default now, except if the-t|--mime-type html
is set. - [BREAKING] Removed
native-tls
support,rustls-tls
is now the only TLS provider available. Removed in consequencenative-tls
,rustls-tls
andrustls-native-certs
cargo features.
pimalaya-email
Added
- Added IP support using
rustls
v0.21
[#80]. - Added
AccountConfig::generate_tpl_interpreter
function to generate a template interpreter with default options based on the config (pgp encrypt, pgp verify and attachments dir).
Changed
- Changed
AccountConfig::addr
return type fromlettre::Mailbox
tomail_builder::Address
. - Changed
AccountConfig::email_reading_headers
default values to["From", "To", "Cc", "Subject"]
. - Changed
AccountConfig::email_writing_headers
default values to["From", "To", "In-Reply-To", "Cc", "Subject"]
. - Removed noise around signature by trimming it.
- Changed
Email::parsed
return type frommailparse::ParsedMail
tomail_parser::Message
. - Changed
Email::new_tpl_builder
return type fromResult<TplBuilder>
toNewTplBuilder
. - Renamed
Email::to_read_tpl_builder
toEmail::to_read_tpl
which returns now aResult<Tpl>
directly. - Changed
Email::to_reply_tpl_builder
return type fromResult<TplBuilder>
toReplyTplBuilder
. - Changed
Email::to_forward_tpl_builder
return type fromResult<TplBuilder>
toForwardTplBuilder
. - Renamed
backend::imap::Error::ListEnvelopesOutOfBounds
byBuildPageRangeOutOfBoundsError
. - Replaced [lettre] by [mail-send], [mailparse] by [mail-parser] and [maildir] by [maildirpp].
- Removed
native-tls
support,rustls-tls
is now the only TLS provider available. Removed in consequencenative-tls
,rustls-tls
andrustls-native-certs
cargo features.
Fixed
- Fixed notmuch path not being expanded correctly.
- Fixed
.notmuch
folder created bynotmuch new
command being treated as a folder. Because it is a folder starting by a dot, it was considered as a Maildir++ folder (which is not). - Fixed IMAP pagination error when listing envelopes [#76].
pimalaya-email-tpl
Added
- Added parsing template from raw message support. Parsing is done via the
TplInterpreter
builder, and functionsTplInterpreter::interpret_*
return the parsed template.
Changed
- Replaced [lettre] by [mail-builder] and [mail-parser].
- Use crate [nanohtml2text] instead of manual html to plain transform using ammonia, html-escape and regex.
- Moved MML stuff in its own
mml
module, to be as close as what provides the Emacs MML module. Thetpl
module contains stuff related to template. A template is just an email composed of headers and one unique plain text part. This plain text part can be written in MML. - Compiler options are now attached to the
Tpl
structure.
v0.7.3
Fixed
- Fixed Windows releases (due to typo in the github action script).
- Fixed unit tests.
v0.7.2
Added
-
Added
create
anddelete
folder commands [sourcehut#54]. -
Added generated completions and man pages to releases
[sourcehut#43]. -
Added new account config option
sync-folders-strategy
which allows
to choose a folders synchronization strategy [sourcehut#59]:sync-folders-strategy = "all"
: synchronize all existing folders
for the current accountsync-folders-strategy.include = ["folder1", "folder2", …]
:
synchronize only the given folders for the current accountsync-folders-strategy.exclude = ["folder1", "folder2", …]
:
synchronizes all folders except the given ones for the current
account
Also added new
account sync
arguments that override the account
config option:-A|--all-folders
: include all folders to the synchronization.-F|--include-folder
: include given folders to the
synchronization. They can be repeated-F folder1 folder2
or-F folder1 -F folder2
.-x|--exclude-folder
: exclude given folders from the
synchronization. They can be repeated-x folder1 folder2
or-x folder1 -F folder2
.
-
Added cargo features
native-tls
(default),rustls-tls
and
rustls-native-certs
.
Changed
- Made global options truly global, which means they can be used
everywhere (not only before commands but also after)
[sourcehut#60]. - Replaced reply all
-a
argument with-A
because it conflicted
with the global option-a|--account
. - Replaced
himalaya-lib
bypimalaya-email
. - Renamed feature
vendored
tonative-tls-vendored
. - Removed the
develop
branch, all the development is now done on the
master
branch.
Fixed
- Fixed config deserialization issue with
email-hooks
and
email-reading-format
. - Fixed flags case sensitivity.
v0.7.1
Added
- Added command
folders expunge
that deletes all emails marked for
deletion.
Changed
- Changed the location of the
documentation.
Fixed
- Fixed broken links in README.md.
Removed
- Removed the
maildir-backend
cargo feature, it is now included by
default. - Removed issues section on GitHub, now issues need to be opened by
sending an email at
~soywod/[email protected].
himalaya-lib v0.6.0
Added
- Added ability to synchronize specific folders only [#37].
- Added
Backend::expunge
function that definitely removes emails
with theDeleted
flag. - Added
Backend::mark_emails_as_deleted
function with a default
implementation that adds theDeleted
flag.
Changed
- Changed the way emails are deleted.
Backend::delete_emails
now
moves the email to theTrash
folder (or to the corresponding alias
from the config file). If the target folder is theTrash
folder,
it will instead add theDeleted
flag. Emails are removed with the
Backend::expunge
function.
Fixed
- Fixed
ImapBackend::list_envelopes
pagination. - Fixed synchronization issues for emails without
Message-ID
header
by using theDate
header instead. - Fixed maildir backend perfs issues by enabling the
mmap
feature of
themaildir
crate.
Removed
- Removed the
maildir-backend
cargo feature, it is now included by
default.
v0.7.0
Added
- Added offline support with the
account sync
command to synchronize
a backend to a local Maildir backend [#342]. - Added the flag
--disable-cache
to not use the local Maildir
backend. - Added the email composer (from its own
repository) [#341]. - Added Musl builds to releases [#356].
- Added
himalaya man
command to generate man page [#419].
Changed
- Made commands
read
,attachments
,flags
,copy
,move
,
delete
accept multiple ids. - Flipped arguments
ids
andfolder
for commandscopy
andmove
in order the folder not to be considered as an id.
Fixed
- Fixed missing folder aliases [#430].
Removed
- Removed the
-a|--attachment
argument fromwrite
,reply
and
forward
commands. Instead you can attach documents directly from
the template using the syntax<#part filename=/path/to/you/document.ext>
. - Removed the
-e|--encrypt
flag fromwrite
,reply
andforward
commands. Instead you can encrypt and sign parts directly from the
template using the syntax<#part type=text/plain encrypt=command sign=command>Hello!<#/part>
. - Removed the
-l|--log-level
option, use instead theRUST_LOG
environment variable (see the
wiki)
himalaya-lib v0.5.0
Added
- Made backend functions accept a vector of id instead of a single id
[#20]. - Added function
Backend::purge_folder
that removes all emails
inside a folder. - Added new
Backend
functions using the internal id:get_envelope_internal
: gets an envelope by its internal idadd_email_internal
: adds an email and returns its internal idget_emails_internal
: gets emails by their internal idcopy_emails_internal
: copies emails by their internal idmove_emails_internal
: copies emails by their internal iddelete_emails_internal
: copies emails by their internal idadd_flags_internal
: adds emails flags by their internal idset_flags_internal
: set emails flags by their internal idremove_flags_internal
: removes emails flags by their internal id
- Added emails synchronization feature. Backends that implement the
ThreadSafeBackend
trait inherit thesync
function that
synchronizes all folders and emails with a localMaildir
instance. - Added
Backend::sync
function and linkThreadSafeBackend::sync
to
it for the IMAP and the Maildir backends. - Added the ability to URL encode Maildir folders (in order to fix
path collisions, for eg[Gmail]/Sent
). Also added a
MaildirBackendBuilder
to facilitate the usage of the
url_encoded_folders
option. - Added a process lock for
ThreadSafeBackend::sync
, this way only
one synchronization can be performed at a time (for a same account).
Fixed
- Used native IMAP commands
copy
andmv
. - Fixed maildir date envelope parsing.
- Fixed inline attachments not collected.
Changed
- Improved
Backend
method names. Also replaced theself mut
by a
RefCell
. - Simplified the
Email
struct: there is no custom implementation
with custom fields. Now, theEmail
struct is just a wrapper around
mailparse::ParsedMail
. - Improved
Flag
structures. - Changed
Backend
trait functions due to [#20]:list_envelope
=>list_envelopes
search_envelope
=>search_envelopes
get_email
=>get_emails
, takes nowids: Vec<&str>
and
returns anEmails
structure instead of anEmail
)copy_email
=>copy_emails
, takes nowids: Vec<&str>
.move_email
=>move_emails
, takes nowids: Vec<&str>
.delete_email
=>delete_emails
, takes nowids: Vec<&str>
.add_flags
takes nowids: Vec<&str>
andflags: &Flags
.set_flags
takes nowids: Vec<&str>
andflags: &Flags
.remove_flags
takes nowids: Vec<&str>
andflags: &Flags
.
Removed
- The
email::Tpl
structure moved to its own
repository. - Encryption and signed moved with the
email::Tpl
in its own
repository.
Pending issues
- Waiting for a new release from jonhoo/rust-imap#220.
- Waiting for a new release from https://github.com/zesterer/chumsky/discussions/224#discussioncomment-4373295
- Waiting for an answer on decrypting and verifying parts staktrace/mailparse#112
v0.6.1
Added
- Added
-s|--sanitize
flag for theread
command.
Changed
-
Changed the behaviour of the
-t|--mime-type
argument of theread
command. It is less strict now: if no part is found for the given
MIME type, it will fallback to the other one. For example, giving
-t html
will show in priority HTML parts, but if none of them are
found it will show plain parts instead (and vice versa). -
Sanitization is not done by default when using the
read
command,
the flag-s|--sanitize
needs to be explicitly provided.
Fixed
- Fixed empty text bodies when reading html part on plain text email
[#352].
himalaya-lib [v0.4.0]
Added
- Added pipe support for
(imap|smtp)-passwd-cmd
[#373]. - Added
imap-ssl
andsmtp-ssl
options to be able to disable
encryption [#347]. - Implemented sendmail sender [#351].
- Fixed
process
module forMINGW*
[#254].
Changed
- Moved
Email::fold_text_plain_parts
toParts::to_readable
. It
take now aPartsReaderOptions
as parameter:plain_first
: shows plain texts first, switch to html if empty.sanitize
: sanitizes or not text bodies (both plain and html).
Fixed
v0.6.0
Changed
-
Separated the CLI from the lib module [#340].
The source code has been splitted into subrepositories:
-
[BREAKING] Renamed
-m|--mailbox
to-f|--folder
-
[BREAKING] Refactored config system [#344].
The configuration has been rethought in order to be more intuitive
and structured. Here are the breaking changes for the global config:name
becomesdisplay-name
and is not mandatory anymoresignature-delimiter
becomessignature-delim
default-page-size
has been moved tofolder-listing-page-size
andemail-listing-page-size
notify-cmd
,notify-query
andwatch-cmds
have been removed
from the global config (available in account config only)folder-aliases
has been added to the global config (previously
known asmailboxes
from the account config)email-reading-headers
,email-reading-format
,
email-reading-decrypt-cmd
,email-writing-encrypt-cmd
and
email-hooks
have been added
The account config inherits the same breaking changes from the
global config, plus:imap-*
requiresbackend = "imap"
maildir-*
requiresbackend = "maildir"
notmuch-*
requiresbackend = "notmuch"
smtp-*
requiressender = "smtp"
sendmail-*
requiressender = "sendmail"
pgp-encrypt-cmd
becomesemail-writing-encrypt-cmd
pgp-decrypt-cmd
becomesemail-reading-decrypt-cmd
mailboxes
becomesfolder-aliases
hooks
becomesemail-hooks
maildir-dir
becomesmaildir-root-dir
notmuch-database-dir
becomesnotmuch-db-path