himalaya/CHANGELOG.md
2023-07-18 17:48:19 +02:00

28 KiB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased

0.8.4 - 2023-07-18

Fixed

  • Fixed windows releases due to cargo deps typo.

0.8.3 - 2023-07-18

Fixed

  • Fixed windows releases due to coredump crate compilation error.
  • Fixed macos releases due to macos 12 System Integrity Protection.

0.8.2 - 2023-07-18

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.

0.8.1 - 2023-06-15

Added

  • Implemented OAuth 2.0 refresh token flow for IMAP and SMTP, which means that access tokens are now automatically refreshed and is transparent for users.
  • Added imap-oauth2-redirect-host and smtp-oauth2-redirect-host options to customize the redirect server host name (default: localhost).
  • Added imap-oauth2-redirect-port and smtp-oauth2-redirect-port options to customize the redirect server port (default: 9999).
  • Added email-listing-datetime-fmt to customize envelopes datetime format. See format spec here.
  • Added email-listing-local-datetime to transform envelopes datetime's timezone to the user's local one. For example, if the user's local is set to UTC, the envelope date 2023-06-15T09:00:00+02:00 becomes 2023-06-15T07:00:00-00:00.

Fixed

  • Fixed missing < and > around Message-ID and In-Reply-To headers.

0.8.0 - 2023-06-03

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 option smtp-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 the sent folder defined in folder-aliases.
  • Imported id mapper from the lib, which means that the id mapping is now done by the CLI.
  • Added BackendConfig to AccountConfig::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 recommended),
    • { 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 consequence native-tls, rustls-tls and rustls-native-certs cargo features.

0.7.3 - 2023-05-01

Fixed

  • Fixed Windows releases (due to typo in the github action script).
  • Fixed unit tests.

0.7.2 - 2023-05-01

Added

  • Added create and delete 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 account
    • sync-folders-strategy.include = ["folder1", "folder2", …]: synchronize only the given folders for the current account
    • sync-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 by pimalaya-email.
  • Renamed feature vendored to native-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.

0.7.1 - 2023-02-14

Added

  • Added command folders expunge that deletes all emails marked for deletion.

Changed

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/pimalaya@todo.sr.ht.

0.7.0 - 2023-02-08

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 and folder for commands copy and move in order the folder not to be considered as an id.

Fixed

  • Fixed missing folder aliases #430.

Removed

  • Removed the -a|--attachment argument from write, 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 from write, reply and forward 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 the RUST_LOG environment variable (see the wiki)

0.6.1 - 2022-10-12

Added

  • Added -s|--sanitize flag for the read command.

Changed

  • Changed the behaviour of the -t|--mime-type argument of the read 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.

0.6.0 - 2022-10-10

Changed

  • Separated the CLI from the lib module #340.

    The source code has been split into subrepositories:

    • The email logic has been extracted from the CLI and placed in a lib on sourcehut
    • The vim plugin is now in a dedicated repository on sourcehut as well
    • This repository only contains the CLI source code (it was not possible to move it to sourcehut because of cross platform builds)
  • [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 becomes display-name and is not mandatory anymore
    • signature-delimiter becomes signature-delim
    • default-page-size has been moved to folder-listing-page-size and email-listing-page-size
    • notify-cmd, notify-query and watch-cmds have been removed from the global config (available in account config only)
    • folder-aliases has been added to the global config (previously known as mailboxes 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-* requires backend = "imap"
    • maildir-* requires backend = "maildir"
    • notmuch-* requires backend = "notmuch"
    • smtp-* requires sender = "smtp"
    • sendmail-* requires sender = "sendmail"
    • pgp-encrypt-cmd becomes email-writing-encrypt-cmd
    • pgp-decrypt-cmd becomes email-reading-decrypt-cmd
    • mailboxes becomes folder-aliases
    • hooks becomes email-hooks
    • maildir-dir becomes maildir-root-dir
    • notmuch-database-dir becomes notmuch-db-path

0.5.10 - 2022-03-20

Fixed

  • Fixed flag commands #334.
  • Fixed Windows build #346.

0.5.9 - 2022-03-12

Added

  • SMTP pre-send hook #178
  • Customize headers to show at the top of a read message #338

Changed

  • Improve attachments command #281

Fixed

  • In-Reply-To not set properly when replying to a message #323
  • Cc missing or invalid when replying to a message #324
  • Notmuch backend hangs #329
  • Maildir e2e tests #335
  • JSON API for listings #331

0.5.8 - 2022-03-04

Added

  • Flowed format support #206
  • List accounts command #244
  • One cargo feature per backend #318

Changed

  • Vim doc about mailbox pickers #298

Fixed

  • Some emojis break the table layout #300
  • Bad sender and date in reply and forward template #321

0.5.7 - 2022-03-01

Added

  • Notmuch support #57

Fixed

  • Build failure due to imap version #303
  • No tilde expansion in maildir-dir #305
  • Unknown command SORT #308

Changed

  • [BREAKING] Replace inbox-folder, sent-folder and draft-folder by a generic hashmap mailboxes
  • Display short envelopes id for maildir and notmuch backends #309

0.5.6 - 2022-02-22

Added

  • Sort command #34
  • Maildir support #43

Fixed

  • Suffix to downloaded attachments with same name #204

0.5.5 - 2022-02-08

Added

Fixed

  • Multiple recipients issue #288
  • Cannot parse address #227

0.5.4 - 2022-02-05

Fixed

  • Add attachments with save and send commands #47 #259
  • Invalid sequence set #276

0.5.3 - 2022-02-03

Added

  • Activate rust-imap logs when trace mode is enabled
  • Set up cargo deployment

0.5.2 - 2022-02-02

Fixed

  • Blur in list msg screenshot #181
  • Make inbox, sent and drafts folders customizable #172
  • Vim plugin get focused msg id #268
  • Nix run issue #272
  • Range not displayed when fetch fails #276
  • Blank lines and spaces in text/plain parts #280
  • Watch command #271
  • Mailbox telescope.nvim preview #249

Removed

  • The wiki git submodule #273

0.5.1 - 2021-10-24

Added

  • Disable color feature #185
  • --max-width|-w argument to restrict listing table width #220

Fixed

  • Error when receiving notification from notify command #228

Changed

  • Remove error when empty subject #229
  • Vim plugin does not render anymore the msg by itself, it uses the one available from the CLI #220

0.5.0 - 2021-10-10

Added

  • Mailto support #162
  • Remove previous signature when replying/forwarding a message #193
  • Config option signature-delimiter to customize the signature delimiter (default to -- \n) [#114]
  • Expand tilde and env vars for downloads-dir and signature #102

Changed

  • [BREAKING] Folder structure, message management, JSON API and Vim plugin #199
  • Pagination for list and search cmd starts from 1 instead of 0 #186
  • Errors management with anyhow #152

Fixed

  • Panic on flags command #190
  • Make more use of serde #153
  • Write message vim plugin #196
  • Invalid encoding when sending message #205
  • Pagination reset current account #215
  • New/reply/forward from Vim plugin since Tpl refactor #176

0.4.0 - 2021-06-03

Added

  • Add ability to change account in with the Vim plugin #91
  • Add possibility to make Himalaya default email app #160 [#161]

Changed

  • [BREAKING] Short version of reply --all arg is now -A to avoid conflicts with --attachment|-a
  • Template management #80

Fixed

  • \Seen flag when moving a message
  • Attachments arg for reply and forward commands #109
  • Vim doc #117

Removed

  • Content-Type from templates #146

0.3.2 - 2021-05-08

Added

  • Mailbox attributes #134
  • Wiki entry about new messages counter #121
  • Copy/move/delete a message in vim #95

Changed

  • Get signature from file #135
  • [BREAKING] Split idle command into two commands:
    • notify: Runs notify-cmd when a new message arrives to the server
    • watch: Runs watch-cmds when any change occurs on the server

Removed

  • .exe extension from release binaries #144

0.3.1 - 2021-05-04

Added

  • Send message via stdin #78

Fixed

  • Table with subject containing \r, \n or \t #141
  • Overflow panic when shrink column #138
  • Vim plugin empty mailbox message #136

0.3.0 - 2021-04-28

Fixed

  • IDLE mode after network interruption #123
  • Output redirected to stderr #130
  • Refactor table system #132
  • Editon file format on Linux #133
  • Show email address when name not available #131

Removed

  • --log-level|-l arg (replaced by default RUST_LOG env var from env_logger) #130

0.2.7 - 2021-04-24

Added

  • Default page size to config #96
  • Custom config path #86
  • Setting idle-hook-cmds

Changed

  • Plain logger with env_logger #126
  • Refresh email list on load buffer #125

Fixed

  • Improve config compatibility on Windows [#111]
  • Vim table containing emoji #122

0.2.6 - 2021-04-17

Added

  • Insecure TLS option #84 #103 [#105]
  • Completion subcommands [#99]
  • Vim flags to enable telescope preview and to choose picker [#97]

Changed

  • Make install.sh POSIX compliant [#53]

Fixed

  • SMTP port #87
  • Save msg upon error #59
  • Answered flag not set #50
  • Panic when downloads-dir does not exist #100
  • Idle mode incorrect new message notification #48

0.2.5 - 2021-04-12

Fixed

  • Expunge mbox after move and delete cmd #83
  • JSON output #89

0.2.4 - 2021-04-09

Added

  • Wiki entry for Gmail users #58
  • Info logs for copy/move/delete cmd + silent mode #74
  • --raw arg for read cmd #79

Changed

  • Refactor output system + log levels #74

0.2.3 - 2021-04-08

Added

  • Telescope support #61

Fixed

  • Unicode chars breaks the view #71
  • Copy/move incomplete (missing parts) #75

0.2.2 - 2021-04-04

Added

  • w alias for write cmd

Fixed

  • attachments cmd logs
  • Page size arg search cmd

0.2.1 - 2021-04-04

Added

  • IDLE support #29
  • Improve choice after editing msg #30
  • Flags management #41
  • Copy feature #35
  • Move feature #31
  • Delete feature [#36]
  • Signature support #33
  • Add attachment(s) to a message (CLI) #37

Changed

  • Errors management with error_chain #39

Fixed

  • Missing FLAGS column in messages table #40
  • Subtract with overflow if next page empty #38

0.2.0 - 2021-03-10

Added

  • STARTTLS support #32
  • Flags #25

Changed

  • JSON support #18

0.1.0 - 2021-01-17

Added

  • Parse TOML config #1
  • Populate Config struct from TOML #2
  • Set up IMAP connection #3
  • List new emails [#6]
  • Set up CLI arg parser #15
  • List mailboxes command #5
  • Text and HTML previews #12 #13
  • Set up SMTP connection #4
  • Write new email #8
  • Write new email #8
  • Reply, reply all and forward #9 #10 #11
  • Download attachments #14
  • Merge Email with Msg #21
  • List command with pagination #19
  • Icon in table when attachment is present #16
  • Multi-account #17
  • Password from command #22
  • Set up README #20