Releases: pimalaya/himalaya
v1.1.0
Added
- Added
-y|--yesflag forfolder purgeandfolder deletecommands. [#469]
Changed
-
Put back
warnthe default log level. [#522]Since logs are sent to
stderr, warnings can be easily discarded by prepending commands withRUST_LOG=offor by appending commands with2>/dev/null. -
Changed
message.send.save-copydefault totrue. [#536] -
Changed default downloads directory. [core#1]
Fixed
v1.0.0
The Himalaya CLI scope has changed. It does not include anymore the synchronization, nor the envelope watching. These scopes have moved to dedicated projects:
- Neverest CLI, CLI to synchronize, backup and restore emails
- Mirador CLI, CLI to watch mailbox changes
Due to the long time difference with the previous v1.0.0-beta.4 release, this changelog may be incomplete. The simplest way to upgrade is to reconfigure Himalaya CLI from scratch, using the wizard or the config.sample.toml.
Himalaya CLI will now try to adopt the conventional commits specification. Tools like git-cliff may help us generating more accurate changelogs in the future.
Added
-
Added
message editcommand to edit a message. To edit on place (replace a message), use--on-place. -
Added
account.list.table.presetglobal config option,accounts.<name>.folder.list.table.presetandaccounts.<name>.envelope.list.table.presetaccount config options.These options customize the shape of tables, see examples at
comfy_table::presets. Defaults to"|| |-||| ", which corresponds tocomfy_table::presets::ASCII_MARKDOWN. -
Added
account.list.table.name-colorconfig option to customize the color used for the accounts'NAMEcolumn (defaults togreen). -
Added
account.list.table.backends-colorconfig option to customize the color used for the folders'BACKENDScolumn (defaults toblue). -
Added
account.list.table.default-colorconfig option to customize the color used for the folders'DEFAULTcolumn (defaults toreset). -
Added
accounts.<name>.folder.list.table.name-coloraccount config option to customize the color used for the folders'NAMEcolumn (defaults toblue). -
Added
accounts.<name>.folder.list.table.desc-coloraccount config option to customize the color used for the folders'DESCcolumn (defaults togreen). -
Added
accounts.<name>.envelope.list.table.id-coloraccount config option to customize the color used for the envelopes'IDcolumn (defaults tored). -
Added
accounts.<name>.envelope.list.table.flags-coloraccount config option to customize the color used for the envelopes'FLAGScolumn (defaults toreset). -
Added
accounts.<name>.envelope.list.table.subject-coloraccount config option to customize the color used for the envelopes'SUBJECTcolumn (defaults togreen). -
Added
accounts.<name>.envelope.list.table.sender-coloraccount config option to customize the color used for the envelopes'FROMcolumn (defaults toblue). -
Added
accounts.<name>.envelope.list.table.date-coloraccount config option to customize the color used for the envelopes'DATEcolumn (defaults todark_yellow). -
Added
accounts.<name>.envelope.list.table.unseen-characcount config option to customize the char used for unseen envelopes (defaults to*). -
Added
accounts.<name>.envelope.list.table.replied-characcount config option to customize the char used for replied envelopes (defaults toR). -
Added
accounts.<name>.envelope.list.table.flagged-characcount config option to customize the char used for flagged envelopes (defaults to!). -
Added
accounts.<name>.envelope.list.table.attachment-characcount config option to customize the char used for envelopes with at least one attachment (defaults to@).
Changed
-
Refactored the
account configurecommand: this command stands now for creating or editing account configurations from the wizard. The command requires thewizardcargo feature. -
Improved the
account doctorcommand: it now checks the state of the config, and the new--fixargument allows you to configure keyring, OAuth 2.0 etc. -
Improved long version
--version. [#496] -
Improved error messages when missing cargo features. For example, if a TOML configuration uses the IMAP backend without the
imapcargo features, the errormissing "imap" featureis displayed. #20 -
Normalized enum-based configurations, using the internally tagged representation
type =. It should reduce issues due to misconfiguration, and improve othe error messages. Yet it is not perfect, see #802:-
imap.*,maildir.*andnotmuch.*moved tobackend.*:# before imap.host = "localhost" imap.port = 143 # after backend.type = "imap" backend.host = "localhost" backend.port = 143
-
smtp.*andsendmail.*moved tomessage.send.backend.*:# before smtp.host = "localhost" smtp.port = 25 # after message.send.backend.type = "smtp" message.send.backend.host = "localhost" message.send.backend.port = 25
-
pgp.backendrenamedpgp.type:# before pgp.backend = "commands" pgp.encrypt-cmd = "gpg --encrypt --quiet --armor <recipients>" # after pgp.type = "commands" pgp.encrypt-cmd = "gpg --encrypt --quiet --armor <recipients>"
-
{imap,smtp}.authmoved as well:# before imap.password.cmd = "pass show example" smtp.oauth2.method = "xoauth2" # after backend.auth.type = "password" backend.auth.cmd = "pass show example" message.send.backend.auth.type = "oauth2" message.send.backend.auth.method = "xoauth2"
-
-
Moved IMAP and SMTP
encryptiontoencryption.type.This change prepares the config to accept different TLS providers with their options. The
trueandfalsevariant have been removed as well:# before backend.encryption = "none" # or false backend.encryption = "start-tls" message.send.backend.encryption = "tls" # or true # after backend.encryption.type = "none" backend.encryption.type = "start-tls" message.send.backend.encryption.type = "tls"
Fixed
- Fixed pre-release archives issue. [#492]
- Fixed mailto parsing issue. [core#10]
- Fixed
Answeredflag not set when replying to a message. [#508]
Removed
- Removed systemd service from
assets/folder, as Himalaya CLI scope does not include synchronization nor watching anymore.
v1.0.0-beta.4
Added
- Added systemd service in
assets/folder. - Added configuration option
message.delete.stylethat can be eitherfolder(deleted messages are moved to the Trash folder, default style) orflag(deleted messages receive the Deleted flag). - Added
--debugas an alias forRUST_LOG=debug. - Added
--traceas an alias forRUST_LOG=traceandRUST_BACKTRACE=1. - Added notes about
--debugand--tracewhen error occurs.
Changed
- Added back the search feature: you can now give an optional filter and sort query at the end of the
envelope listcommand. Seeenvelope list --helpor pimalaya.org for more detail on the search API. - Changed the
envelope listfolder argument due to the search query: it became a flag--folder|-f. - Made the global
--config|-coption repeatable: the first option is considered the path to the main config, and successive options are considered partial overrides #184. - Refactored error management: error should be more clear, colored and can now contain spantrace and backtrace.
- Made
--helpcontent wrapping properly thanks to theclapcargo featurewrap_help. - Improved
template {new,reply,forward}command JSON output: they return now a JSON object with 3 properties:content: the content of the templatecursor.row: the row at which the cursor should be placed by the interface using the templatecursor.col: the column at which the cursor should be placed by the interface using the template
Fixed
v1.0.0-beta.3
Added
- Added
account check-upcommand. - Added wizard warning about google passwords [#41].
Changed
-
Removed account configurations flatten level in order to improve diagnostic errors, due to a bug in clap. This means that accounts need to be prefixed by
accounts:[my-account]becomes[accounts.my-account]. It also opens doors for interface-specific configurations. -
Rolled back cargo feature additions from the previous release. It was a mistake: the amount of features was too big, the code (both CLI and lib) was too hard to maintain. Cargo features kept:
imap,maildir,notmuch,smtp,sendmail,account-sync,account-discovery,pgp-gpg,pgp-commandsandpgp-native. -
Moved
sync.strategytofolder.sync.filter. -
Changed location of the synchronization data from
$XDG_DATA_HOME/himalaya/<account-name>to$XDG_DATA_HOME/pimalaya/email/sync/<account-name>-cache. -
Changed location of the synchronization cache from
sync.dirto$XDG_CACHE_HOME/pimalaya/email/sync/<hash>/. -
Replaced id mapping database
SQLitebysled, a pure key-val store written in Rust to improve portability of the tool. Therefore, id aliases are reset. -
Improved pre and post edit choices interaction [#58].
-
Improved account synchronization performances, making it 50% faster than
mbsyncand 370% faster thanOfflineIMAP. -
Changed
envelope.watch.{event}.{hook}: hooks can now be cumulated. For example it is possible to send a system notification and execute a shell command when receiving a new envelope:envelope.watch.received.notify.summary = "New message from {sender}" envelope.watch.received.notify.body = "{subject}" envelope.watch.received.cmd = "echo {id} >> /tmp/new-email-counter"
Fixed
- Fixed bug that was preventing watch placeholders to be replaced when using shell command hook.
- Fixed watch IMAP envelopes issue preventing events to be triggered.
- Fixed DNS account discovery priority issues.
- Fixed SMTP messages not properly sent to all recipients [#172].
- Fixed backend feature badly linked, leading to reply and forward message errors [#173].
v1.0.0-beta.2
Added
- Added cargo feature
wizard, enabled by default. - Added one cargo feature per backend feature:
accountincludingaccount-configure,account-list,account-syncand theaccount-subcmdfolderincludingfolder-add,folder-list,folder-expunge,folder-purge,folder-deleteand thefolder-subcmdenvelopeincludingenvelope-list,envelope-watch,envelope-getand theenvelope-subcmdflagincludingflag-add,flag-set,flag-removeand theflag-subcmdmessageincludingmessage-read,message-write,message-mailto,message-reply,message-forward,message-copy,message-move,message-delete,message-save,message-sendand themessage-subcmdattachmentincludingattachment-downloadand theattachment-subcmdtemplateincludingtemplate-write,template-reply,template-forward,template-save,template-sendand thetemplate-subcmd
- Added wizard capability to autodetect IMAP and SMTP configurations, based on the Thunderbird Autoconfiguration standard.
- Added back Notmuch backend features.
Changed
- Renamed
folder createtofolder addin order to better match types. An alias has been set up, so bothcreateandaddstill work.
Fixed
- Fixed default command: running
himalayawithout argument lists envelopes, as it used to be in previous versions. - Fixed bug when listing envelopes with
backend = "imap",sync.enable = trueandenvelope.watch.backend = "imap"led to unwanted IMAP connection creation (which slowed down the listing). - Fixed builds related to enabled cargo features.
v1.0.0-beta
The new API of the configuration file contains breaking changes, see config.sample.toml for a documented example of this new API.
You can even test it:
# save the sample config locally
curl https://raw.githubusercontent.com/soywod/himalaya/master/config.sample.toml > config.sample.toml
# spawn a testing IMAP/SMTP server using docker
docker run -it --rm -p 3025:3025 -p 3110:3110 -p 3143:3143 -p 3465:3465 -p 3993:3993 -p 3995:3995 -e GREENMAIL_OPTS='-Dgreenmail.setup.test.all -Dgreenmail.hostname=0.0.0.0 -Dgreenmail.auth.disabled -Dgreenmail.verbose' greenmail/standalone:latest
# test the CLI using the sample config
himalaya -c ./config.sample.toml envelope listFew major concepts changed:
- The concept of Backend and Sender changed. The Sender does not exist anymore (it is now a backend feature). A Backend is now a set of features like add folders, list envelopes or send raw message. The backend of every single feature can be customized in the configuration file, which gives users more flexibility. Here the list of backend features that can be customized:
backend(required): the backend used by default by all backend features (maildir,imapornotmuch)folder.add.backend: override the backend used for creating folders (maildir,imapornotmuch)folder.list.backend: override the backend used for listing folders (maildir,imapornotmuch)folder.expunge.backend: override the backend used for expunging folders (maildir,imapornotmuch)folder.purge.backend: override the backend used for purging folders (maildir,imapornotmuch)folder.delete.backend: override the backend used for deleting folders (maildir,imapornotmuch)envelope.list.backend: override the backend used for listing envelopes (maildir,imapornotmuch)envelope.get.backend: override the backend used for getting envelopes (maildir,imapornotmuch)envelope.watch.backend: override the backend used for watching envelopes (maildir,imapornotmuch)flag.add.backend: override the backend used for adding flags (maildir,imapornotmuch)flag.set.backend: override the backend used for setting flags (maildir,imapornotmuch)flag.remove.backend: override the backend used for removing flags (maildir,imapornotmuch)message.send.backend(required): override the backend used for sending messages (sendmailorsmtp)message.read.backend: override the backend used for reading messages (maildir,imapornotmuch)message.write.backend: override the backend used for adding flags (maildir,imapornotmuch)message.copy.backend: override the backend used for copying messages (maildir,imapornotmuch)message.move.backend: override the backend used for moving messages (maildir,imapornotmuch)
- The CLI API changed: every command is now prefixed by its domain following the format
himalaya <domain> <action>. List of domain available by runninghimalaya -hand list of actions for a domain by runninghimalaya <domain> -h. - TOML configuration file options use now the dot notation rather than the dash notation. For example,
folder-listing-page-sizebecamefolder.list.page-size. See the changed section below for more details.
Added
- Added cargo feature
maildir(not plugged yet). - Added cargo feature
sendmail(not plugged yet). - Added watch hooks
envelope.watch.received(when a new envelope is received) andenvelope.watch.any(for any other event related to envelopes). A watch hook can be:-
A shell command:
envelope.watch.any.cmd = "mbsync -a" -
A system notification:
envelope.watch.received.notify.summary = "📬 New message from {sender}": customize the notification summary (title)envelope.watch.received.notify.body = "{subject}": customize the notification body (content)
Available placeholders: id, subject, sender, sender.name, sender.address, recipient, recipient.name, recipient.address.
-
- Added watch support for Maildir backend features.
Changed
- Renamed cargo feature
imap-backend→imap. - Renamed cargo feature
notmuch-backend→notmuch. - Renamed cargo feature
smtp-sender→smtp. - Changed the goal of the config option
backend: it is now the default backend used for all backend features. Valid backends:imap,maildir,notmuch. - Moved
folder-aliasesconfig option tofolder.alias(es). - Moved
folder-listing-page-sizeconfig option tofolder.list.page-size. - Moved
email-listing-page-sizeconfig option toenvelope.list.page-size. - Moved
email-listing-datetime-fmtconfig option toenvelope.list.datetime-fmt. - Moved
email-listing-datetime-local-tzconfig option toenvelope.list.datetime-local-tz. - Moved
email-reading-headersconfig option tomessage.read.headers. - Moved
email-reading-formatconfig option tomessage.read.format. - Moved
email-writing-headersconfig option tomessage.write.headers. - Move
email-sending-save-copyconfig option tomessage.send.save-copy. - Move
email-hooks.pre-sendconfig option tomessage.send.pre-hook. - Moved
syncconfig option tosync.enable. - Moved
sync-dirconfig option tosync.dir. - Moved
sync-folders-strategyconfig option tosync.strategy. - Moved
maildir-*config options tomaildir.*. - Moved
imap-*config options toimap.*. - Moved
notmuch-*config options tonotmuch.*. - Moved
sendmail-*config options tosendmail.*. - Moved
smtp-*config options tosmtp.*. - Replaced options
imap-ssl,imap-starttlsandimap-insecurebyimap.encryption:imap.encryption = "tls" | true: use required encryption (SSL/TLS)imap.encryption = "start-tls": use opportunistic encryption (StartTLS)imap.encryption = "none" | false: do not use any encryption
- Replaced options
smtp-ssl,smtp-starttlsandsmtp-insecurebysmtp.encryption:smtp.encryption = "tls" | true: use required encryption (SSL/TLS)smtp.encryption = "start-tls": use opportunistic encryption (StartTLS)smtp.encryption = "none" | false: do not use any encryption
Removed
- Disabled temporarily the
notmuchbackend because it needs to be refactored using the backend features system (it should be reimplemented soon). - Disabled temporarily the
searchandsortcommand because they need to be refactored, see #39. - Removed the
notifycommand (replaced by the newwatchcommand). - Removed all global options except for
display-name,signature,signature-delimanddownloads-dir.
See config.sample.toml for a documented configuration example with the new API.
v0.9.0
This version should be the last before the v1.0.0-beta!
Added
- Added 3 new cargo features:
pgp-commands: enables the commands PGP backend (enabled by default, same behaviour as before)pgp-gpg: enables the GPG backend (requires thegpgmelib on the system)pgp-native: enables the native PGP backend
- Added account configuration
pgpto configure the way PGP operations are performed.
Changed
- Moved
email-writing-encrypt-cmdtopgp.encrypt-cmd. - Moved
email-reading-decrypt-cmdtopgp-decrypt-cmd. - Moved
email-writing-sign-cmdtopgp.sign-cmd. - Moved
email-reading-verify-cmdtopgp.verify-cmd.
v0.8.4
Fixed
- Fixed windows releases due to cargo deps typo.
v0.8.3
Fixed
- Fixed windows releases due to
coredumpcrate compilation error. - Fixed macos releases due to macos 12 System Integrity Protection.
v0.8.2
Changed
- Made the code async using the tokio async runtime.
- On Linux, made the kernel keyring the default one (the one based on keyutils).
Fixed
- Fixed the way folder aliases are resolved. In some case, aliases were resolved CLI side and lib side, which led to alias errors [sourcehut#95].
pimalaya-email-tpl
Fixed
- Fixed default PGP verify command that was using invalid option
--recipient.
pimalaya-email
Changed
- Changed the way folder aliases are resolved. They are now resolved directly from backend implementations, which frees interfaces from this responsibility [#95].
- Bumped
[email protected].