Skip to content

Releases: pimalaya/himalaya

v0.8.0

03 Jun 21:44
v0.8.0
308805d
Compare
Choose a tag to compare

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 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 consequence native-tls, rustls-tls and rustls-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 from lettre::Mailbox to mail_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 from mailparse::ParsedMail to mail_parser::Message.
  • Changed Email::new_tpl_builder return type from Result<TplBuilder> to NewTplBuilder.
  • Renamed Email::to_read_tpl_builder to Email::to_read_tpl which returns now a Result<Tpl> directly.
  • Changed Email::to_reply_tpl_builder return type from Result<TplBuilder> to ReplyTplBuilder.
  • Changed Email::to_forward_tpl_builder return type from Result<TplBuilder> to ForwardTplBuilder.
  • Renamed backend::imap::Error::ListEnvelopesOutOfBounds by BuildPageRangeOutOfBoundsError.
  • 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 consequence native-tls, rustls-tls and rustls-native-certs cargo features.

Fixed

  • Fixed notmuch path not being expanded correctly.
  • Fixed .notmuch folder created by notmuch 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 functions TplInterpreter::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. The tpl 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

30 Apr 23:30
v0.7.3
a7e9c56
Compare
Choose a tag to compare

Fixed

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

v0.7.2

30 Apr 22:26
v0.7.2
f666793
Compare
Choose a tag to compare

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.

v0.7.1

14 Feb 16:42
v0.7.1
3cc1ed7
Compare
Choose a tag to compare

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/[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 the Deleted flag.
  • Added Backend::mark_emails_as_deleted function with a default
    implementation that adds the Deleted flag.

Changed

  • Changed the way emails are deleted. Backend::delete_emails now
    moves the email to the Trash folder (or to the corresponding alias
    from the config file). If the target folder is the Trash folder,
    it will instead add the Deleted 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 the Date header instead.
  • Fixed maildir backend perfs issues by enabling the mmap feature of
    the maildir crate.

Removed

  • Removed the maildir-backend cargo feature, it is now included by
    default.

v0.7.0

08 Feb 15:05
v0.7.0
694173b
Compare
Choose a tag to compare

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)

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 id
    • add_email_internal: adds an email and returns its internal id
    • get_emails_internal: gets emails by their internal id
    • copy_emails_internal: copies emails by their internal id
    • move_emails_internal: copies emails by their internal id
    • delete_emails_internal: copies emails by their internal id
    • add_flags_internal: adds emails flags by their internal id
    • set_flags_internal: set emails flags by their internal id
    • remove_flags_internal: removes emails flags by their internal id
  • Added emails synchronization feature. Backends that implement the
    ThreadSafeBackend trait inherit the sync function that
    synchronizes all folders and emails with a local Maildir instance.
  • Added Backend::sync function and link ThreadSafeBackend::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 and mv.
  • Fixed maildir date envelope parsing.
  • Fixed inline attachments not collected.

Changed

  • Improved Backend method names. Also replaced the self mut by a
    RefCell.
  • Simplified the Email struct: there is no custom implementation
    with custom fields. Now, the Email 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 now ids: Vec<&str> and
      returns an Emails structure instead of an Email)
    • copy_email => copy_emails, takes now ids: Vec<&str>.
    • move_email => move_emails, takes now ids: Vec<&str>.
    • delete_email => delete_emails, takes now ids: Vec<&str>.
    • add_flags takes now ids: Vec<&str> and flags: &Flags.
    • set_flags takes now ids: Vec<&str> and flags: &Flags.
    • remove_flags takes now ids: Vec<&str> and flags: &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

v0.6.1

12 Oct 15:05
bda37ca
Compare
Choose a tag to compare

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].

himalaya-lib [v0.4.0]

Added

  • Added pipe support for (imap|smtp)-passwd-cmd [#373].
  • Added imap-ssl and smtp-ssl options to be able to disable
    encryption [#347].
  • Implemented sendmail sender [#351].
  • Fixed process module for MINGW* [#254].

Changed

  • Moved Email::fold_text_plain_parts to Parts::to_readable. It
    take now a PartsReaderOptions as parameter:
    • plain_first: shows plain texts first, switch to html if empty.
    • sanitize: sanitizes or not text bodies (both plain and html).

Fixed

  • Fixed long subject decoding issue [#380].
  • Fixed bad mailbox name encoding from UTF7-IMAP [#370].

v0.6.0

10 Oct 19:37
cd4575e
Compare
Choose a tag to compare

Changed

  • Separated the CLI from the lib module [#340].

    The source code has been splitted 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

v0.5.10

20 Mar 21:27
fe8f9ea
Compare
Choose a tag to compare

Fixed

  • Flag commands [#334]
  • Windows build [#346]

v0.5.9

12 Mar 17:07
a44e94b
Compare
Choose a tag to compare

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]

v0.5.8

04 Mar 15:42
2d077fa
Compare
Choose a tag to compare

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]