head 1.13; access; symbols pkgsrc-2026Q3:1.13.0.2 pkgsrc-2026Q3-base:1.13 pkgsrc-2026Q2:1.10.0.4 pkgsrc-2026Q2-base:1.10 pkgsrc-2026Q1:1.10.0.2 pkgsrc-2026Q1-base:1.10 pkgsrc-2025Q4:1.9.0.4 pkgsrc-2025Q4-base:1.9 pkgsrc-2025Q3:1.9.0.2 pkgsrc-2025Q3-base:1.9 pkgsrc-2025Q2:1.8.0.2 pkgsrc-2025Q2-base:1.8 pkgsrc-2025Q1:1.6.0.2 pkgsrc-2025Q1-base:1.6 pkgsrc-2024Q4:1.5.0.2 pkgsrc-2024Q4-base:1.5 pkgsrc-2024Q3:1.4.0.8 pkgsrc-2024Q3-base:1.4 pkgsrc-2024Q2:1.4.0.6 pkgsrc-2024Q2-base:1.4 pkgsrc-2024Q1:1.4.0.4 pkgsrc-2024Q1-base:1.4 pkgsrc-2023Q4:1.4.0.2 pkgsrc-2023Q4-base:1.4 pkgsrc-2023Q3:1.3.0.2 pkgsrc-2023Q3-base:1.3 pkgsrc-2023Q2:1.1.0.4 pkgsrc-2023Q2-base:1.1 pkgsrc-2023Q1:1.1.0.2 pkgsrc-2023Q1-base:1.1; locks; strict; comment @# @; 1.13 date 2026.09.12.20.07.14; author wiz; state Exp; branches; next 1.12; commitid 6yhWKj7bOKG83nVG; 1.12 date 2026.09.06.13.58.06; author pin; state Exp; branches; next 1.11; commitid jCmqwvUTngquczUG; 1.11 date 2026.08.07.09.23.28; author pin; state Exp; branches; next 1.10; commitid d1aq4kjRQme3EGQG; 1.10 date 2026.02.26.12.51.54; author pin; state Exp; branches; next 1.9; commitid M6UlrXhjJ8Mp0TvG; 1.9 date 2025.08.04.09.07.26; author wiz; state Exp; branches; next 1.8; commitid USHjksWqAkBRno5G; 1.8 date 2025.04.10.13.19.49; author pin; state Exp; branches; next 1.7; commitid 1kIJWwKN7FpDvvQF; 1.7 date 2025.04.02.10.56.26; author pin; state Exp; branches; next 1.6; commitid dPCBoedg3wFoYsPF; 1.6 date 2025.01.13.20.30.50; author pin; state Exp; branches; next 1.5; commitid yHUwGw4eznCWGmFF; 1.5 date 2024.12.11.09.51.18; author pin; state Exp; branches; next 1.4; commitid hro1lrKvntljd4BF; 1.4 date 2023.10.24.22.09.43; author wiz; state Exp; branches; next 1.3; commitid MTsrqKm6aGrQAVJE; 1.3 date 2023.09.15.13.46.12; author schmonz; state Exp; branches; next 1.2; commitid dItgvb8BlqHD4SEE; 1.2 date 2023.09.15.06.26.14; author pin; state Exp; branches; next 1.1; commitid noXh5oyvvidKDPEE; 1.1 date 2023.03.08.23.45.10; author nikita; state Exp; branches; next ; commitid Xn611d2H7REzwngE; desc @@ 1.13 log @himalaya: add missing files to PLIST Bump PKGREVISION. @ text @# $NetBSD: Makefile,v 1.12 2026/09/06 13:58:06 pin Exp $ DISTNAME= himalaya-2.1.0 PKGREVISION= 1 CATEGORIES= mail MASTER_SITES= ${MASTER_SITE_GITHUB:=pimalaya/} GITHUB_TAG= v${PKGVERSION_NOREV} MAINTAINER= pkgsrc-users@@NetBSD.org HOMEPAGE= https://github.com/pimalaya/himalaya COMMENT= Command-line interface for email management LICENSE= mit # See, https://github.com/briansmith/ring/issues/1999 .include "../../mk/compiler/i386-sse2.mk" USE_LANGUAGES+= c c++ .include "cargo-depends.mk" RUST_REQ= 1.89.0 INSTALLATION_DIRS= bin INSTALLATION_DIRS+= ${PKGMANDIR}/man1 INSTALLATION_DIRS+= share/bash-completion/completions INSTALLATION_DIRS+= share/fish/vendor_completions.d INSTALLATION_DIRS+= share/zsh/site-functions MAKE_ENV+= OPENSSL_DIR=${BUILDLINK_PREFIX.openssl} BIN_CMD= ${WRKSRC}/target/release/himalaya pre-install: cd ${WRKSRC} && ${BIN_CMD} man ${DESTDIR}${PREFIX}/${PKGMANDIR}/man1 cd ${WRKSRC} && ${BIN_CMD} completion bash > himalaya.bash cd ${WRKSRC} && ${BIN_CMD} completion fish > himalaya.fish cd ${WRKSRC} && ${BIN_CMD} completion zsh > himalaya.zsh #cd ${WRKSRC} && ${BIN_CMD} completion elvish > elvish.txt #cd ${WRKSRC} && ${BIN_CMD} completion powershell > powershell.txt do-install: ${INSTALL_PROGRAM} ${BIN_CMD} ${DESTDIR}${PREFIX}/bin ${INSTALL_DATA} ${WRKSRC}/himalaya.bash ${DESTDIR}${PREFIX}/share/bash-completion/completions/himalaya ${INSTALL_DATA} ${WRKSRC}/himalaya.fish ${DESTDIR}${PREFIX}/share/fish/vendor_completions.d/himalaya.fish ${INSTALL_DATA} ${WRKSRC}/himalaya.zsh ${DESTDIR}${PREFIX}/share/zsh/site-functions/_himalaya .include "../../lang/rust/cargo.mk" .include "../../security/openssl/buildlink3.mk" .include "../../mk/bsd.pkg.mk" @ 1.12 log @mail/himalaya: update to 2.1.0 2.1.0 - 2026-08-16 Added Added the pimdir storage backend, Himalaya over the local store the sync engine populates. Reads build envelopes from the stored meta and report a body that is not local as "body not fetched". A mailbox is named the way its server names it: the sync keys a collection /, so the collection imap/INBOX is the mailbox INBOX, and a name matching no collection is refused naming the ones the account holds. The namespace is derived unless pimdir.namespace names it, and pimdir.account picks the account in a store several share. Himalaya reads the store read-only, which takes no lock, so a sync in flight neither blocks it nor is blocked by it. A write is staged as an action queued for the store's owner to apply and push, rather than written into the index: the owner's write path collects unreferenced objects, and running that beside a sync destroys the bodies it has streamed but not yet attached. An appended body is written to the blob store before the action referencing it, which pins it. Added back the email and display-name config fields, at the global and the account level (#721). They fill the From header of messages compose, reply and forward when --from is not passed, and are also read as from and from-name, the spellings himalaya-tui writes. Added back the signature and signature-delim config fields, at the global and the account level. The composers append the signature when neither --signature nor --signature-file is passed, signature-delim defaulting to the RFC 3676 §4.3 "-- \n" and written verbatim. Added in_reply_to to the shared envelope (#734). A list of ids stripped of their angle brackets like message_id, riding the JSON output only, left empty by Microsoft Graph. Added the shared message delete command (alias del). Trash-first: messages are moved to the trash mailbox, resolved from the backend role then from mailbox.alias.trash, or permanently removed when already in it. Added the maildir.keywords.dovecot and maildir.keywords.header config fields. Surface custom Maildir keywords as flags, read from each mailbox's dovecot-keywords file or from X-Keywords / X-Label; reading only, both off by default. Added the imap.sasl-ir config field, forcing the RFC 4959 initial response on or off (#729). Unset follows the advertised SASL-IR capability; false is needed by Coremail (126.com, 163.com), which advertises it then rejects the inline form. Added a --seen flag to message read, marking the message as seen while reading it. Added the configure command (alias wizard), running the account wizard by name. The first-run offer is now a hook rather than a gate: the command carries on afterwards, and nothing prompts when stdin is not a terminal or --json is set. Added back the HIMALAYA_CONFIG environment variable, read like -c and taking the same :-delimited list. Added the shared Pimalaya --help footer, naming the bug tracker and the sponsoring page. Changed Made the configuration wizard discovery-only, removing the hand-entry flow. An email, a domain, a scheme:// URL or a local folder path all run discovery, and the wizard stops when nothing is found rather than guessing an SMTP host. Reworked message read's plain-text output into a concise reading view. A header block (Date, From, To, Cc, Subject), then one summary line per MIME part with plain-text parts inlined; --raw and --json are unchanged. Aligned the ID of message read, attachments list and attachments download on the MIME part's 1-based position, making attachment ids a sparse subset of it. Right-aligned the SIZE column of the envelope listing table (#723). Made the wizard write the account to the configuration file rather than only print it. The file is where -c or HIMALAYA_CONFIG pointed, or the XDG default; an existing one gets a plain text append, so comments and formatting survive. Made the first-run offer open with a welcome banner on stderr, naming the configuration file it looked for; himalaya configure skips it. Changed bare himalaya --account to show the help instead of running the account wizard. Made the wizard offer only the IMAP authentication mechanisms an unauthenticated CAPABILITY advertises, falling back to the full list on any probe failure. Time-bounded the wizard's service discovery, so one unreachable endpoint no longer stalls it for the operating-system connect timeout. Made the wizard offer to reuse the IMAP credentials for SMTP, prompting only the SMTP endpoint on accept. Changed gmail messages get --header and gmail threads get --header to narrow the rendered headers under every format, not only --format metadata. Changed imap raw to send a byte-verbatim batch of tagged commands. Literal \r / \n escapes decode to CRLF and the reply is read until every command is acknowledged; smtp raw decodes the same escapes but stays a single command. Fixed Fixed configure --json emitting a payload no schema described: json-schema now writes himalaya-configure.json. Fixed --from carrying a display name composing a From: > no SMTP server accepts (#727). The value is parsed as a mailbox, the name reaching the MIME builder apart from the address. Fixed commands dying mid-exchange with a bare Resource temporarily unavailable (os error 35) (#731, #732). The transport now retries a stream reporting it is not ready, for a minute, and arms a socket read deadline at connect time. Fixed lean cargo feature combinations failing to compile. The config schema no longer reaches for disabled backends' ALPN defaults, and every shared command is gated on the storage or send backend it needs. Fixed message read --raw --json erroring: the two now combine, emitting the raw RFC 5322 bytes as a JSON string. Fixed the Gmail and Microsoft Graph get commands wrapping their data in a message string under --json (#730). Gmail messages get, drafts get, threads get, history list and the settings readers now serialize their data, as does Microsoft Graph message get, each with a published JSON Schema. Fixed gmail drafts get --format raw printing the draft summary instead of the raw message it had fetched. Removed Removed the assets/himalaya.desktop entry and the Nix line installing it. Every functional line of it had stopped working, Exec=himalaya %U answering a mailto: link with unrecognized subcommand; handling mailto: is left to a wrapper of your own, as MIGRATION.md describes. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.11 2026/08/07 09:23:28 pin Exp $ d4 1 @ 1.11 log @mail/himalaya: update to 2.0.0 Added Added Gmail REST API support: a [gmail] account backend behind the shared mail commands (--backend gmail), plus a protocol-specific gmail command exposing the full REST surface (profile, labels, messages, attachments, drafts, threads, history, settings). Authenticates with a single OAuth 2.0 bearer token (gmail.auth.token.raw / .command), the only authorization Gmail's REST API accepts. Added Microsoft Graph REST API support: a [msgraph] account backend behind the shared mail commands (--backend msgraph), plus a protocol-specific msgraph command exposing the Graph mail surface (profile, mail-folder, message, attachment). Mirrors [gmail], authenticating with a single OAuth 2.0 bearer token. Restored the RFC 2971 ID-after-auth quirk as imap.id.{auto, fields}, replacing the v1.2.0 imap.extensions.id.send-after-auth flag dropped during the v2 migration. Brought the m2dir backend to CLI feature parity with maildir (messages, flags, envelopes). Mailbox rename and message copy / move still await io-m2dir support. Added --save to messages send, mirroring the flag on messages compose / reply / forward. Added --send to messages add (alias messages save), mirroring messages send --save. Added raw passthrough commands imap raw and smtp raw . The wizard now pre-fills mailbox.alias.* from the server, so a generated account has a working default mailbox (the inbox alias, which backs commands that omit -m/--mailbox) and known Sent/Drafts/Trash/… targets without hand-editing ids. JMAP reads the RFC 8621 mailbox roles live over the tested connection. Gmail and Microsoft Graph map their fixed system-label ids (INBOX, SENT, …) and well-known folder names (inbox, sentitems, …). IMAP pins the reserved INBOX only. The other special-use roles await LIST RETURN (SPECIAL-USE) support in io-imap (upstream imap-codec has none yet). Added the json-schema command, which writes one JSON Schema file per structured-output command (himalaya--.json) describing its --json payload, so downstream tooling can validate and type Himalaya's machine output. Only the schemas for compiled-in backends are emitted ([#547]). The discovery wizard now falls back to the system DNS resolver (/etc/resolv.conf on unix, the network adapters on windows) before the Cloudflare default, making the resolution chain HIMALAYA_DNS_RESOLVER then system then 1.1.1.1. This avoids leaking the email domain to a third-party resolver and works around networks that block the default. Added local socket-proxy support: imap.server / smtp.server now accept a unix:///path scheme to connect through a pre-authenticated session proxy such as sirup. No SASL is negotiated over the socket (the session arrives already authenticated), and a single-session proxy can back the storage backend without Himalaya opening a second connection ([#264]). Changed Flattened the imap command tree into top-level verbs mirroring the protocol's flat command list (select, create, append, store, fetch, …), replacing the former mailbox / envelope / message / flag subgroups. Unified raw-message input across the messages, imap, maildir, jmap, msgraph and smtp send/add commands behind a single MessageArg (file path, inline raw, or piped stdin), and removed the legacy --file flag on messages add. Split the merged Account out of every client wrapper: subcommands now receive account and client as sibling arguments instead of reaching through client.account. Breaking: changed bare himalaya (no subcommand) to run the account wizard instead of listing the default account's envelopes. Himalaya is now a lower-level tool: envelope listing lives under its explicit commands, and the bare invocation is the natural entry point for setting up an account. Changed the wizard to print the generated account as a ready-to-save TOML document on stdout instead of writing it to disk, mirroring ortie. Redirect it into your config file yourself (e.g. himalaya > ~/.config/himalaya/config.toml). It runs on bare himalaya and is still proposed when a command finds no config, while a config that exists but lacks the requested account is now a hard error rather than a wizard trigger. The account's connection is tested before the config is printed, so a bad credential or endpoint stops the wizard instead of yielding a config that cannot connect. The output is compact: only the [accounts.] table stays a section header, every other table is flattened into dotted keys (imap.sasl.plain.username = …), and empty tables and defaulted values (starttls, alpn, id.auto) are dropped. Reworked the wizard's account-setup flow. The discovery list now shows one entry per reachable service (IMAP + SMTP, JMAP, Gmail, Microsoft Graph), and the authentication method is chosen in a second, service-specific prompt: the SASL mechanism (PLAIN, LOGIN, SCRAM-SHA-256, OAUTHBEARER, …) for IMAP + SMTP, the HTTP scheme (Basic / Bearer) for JMAP. OAuth 2.0 is no longer a dead-end list entry: it folds into the "API token" credential prompt, which now offers the OS keyrings and the OAuth token brokers (Ortie, pizauth, oama) together, the brokers appearing only when the service advertises OAuth. The wizard now tests IMAP and SMTP as it configures them: the IMAP connection is validated first, then it asks whether SMTP reuses the same credentials (the two may advertise different auth), re-running the SASL prompt for a distinct one, and tests SMTP last. The wizard no longer prompts for an account name. It is derived from the input (the domain's first label, or the folder name). Rename it by editing the printed [accounts.] table key. Fixed Fixed compilation error when the wizard feature was disabled ([#634]). Fixed mailbox-alias resolution to apply across every shared messages subcommand (add, read, reply, forward, copy, move) and the --save flag on compose / reply / forward, so aliases like mailbox.alias.sent are honoured before the backend call. Fixed swapped save/send success messages ("saved" printed after a pure send, "sent" after a pure save). Removed Removed the [message.composer.*] / [message.reader.*] config tables and the compose-with / reply-with / forward-with / mailto / read-with subcommands. Richer composition now chains standalone tools such as mml into messages send / add. The "stdout = MIME draft" contract was incompatible with composers spawning an interactive editor, whose UI inherited the parent's piped stdout. Dropped HIMALAYA_CONFIG environment-variable support. -c/--config still accepts one or more :-separated paths. Removed the account configure command (alias account edit) and its per-field edit wizard. Account setup now goes through the bare himalaya discovery wizard, leaving account list and account check for inspection. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.10 2026/02/26 12:51:54 pin Exp $ d3 1 a3 1 DISTNAME= himalaya-2.0.0 d20 1 a20 1 RUST_REQ= 1.88.0 @ 1.10 log @mail/himalaya: update to 1.2.0 Added Added --quiet flag (#545). Added support for custom TLS certificate. Added support for multiple config files via HIMALAYA_CONFIG=path1:path2:… (#612). Added -d|--downloads-dir argument to attachment download command (#559). Added View and View MIME post edit choices (#486). Made message send and template send return id (#627). Enabled shell expansion for email, IMAP and SMTP login fields, which allows usage of environment variables (#632). Fixed Bumped all deps, fixing rustls-platform-verifier compatibility version issue. Fixed invalid fetch with NIL body encoding (#525). Fixed freeze when sending large attachments (#593). Fixed abusive warn logs from IMAP libs (#552). Downgraded toml@@0.8 due to regression (#611). @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.9 2025/08/04 09:07:26 wiz Exp $ d3 1 a3 1 DISTNAME= himalaya-1.2.0 d20 1 a20 3 #RUST_REQ= 1.93.1 #Upstream does not state the required MSRV. #This package is confirmed to build with Rust 1.93.1 on amd64 @ 1.9 log @himalaya: use default pkgsrc shell completion directories Bump PKGREVISION. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.8 2025/04/10 13:19:49 pin Exp $ d3 1 a3 2 DISTNAME= himalaya-1.1.0 PKGREVISION= 1 d20 1 a20 1 #RUST_REQ= 1.83.0 d22 1 a22 1 #This package is confirmed to build with Rust 1.83.0 on amd64 @ 1.8 log @mail/himalaya: needs sse2 @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.7 2025/04/02 10:56:26 pin Exp $ d4 1 d10 1 a10 1 HOMEPAGE= https://pimalaya.org/himalaya/ a26 1 INSTALLATION_DIRS+= share/examples/himalaya/completion d28 2 a29 2 INSTALLATION_DIRS+= share/fish/completions d45 3 a47 3 ${INSTALL_DATA} ${WRKSRC}/himalaya.bash ${DESTDIR}${PREFIX}/share/bash-completion/completions/ ${INSTALL_DATA} ${WRKSRC}/himalaya.fish ${DESTDIR}${PREFIX}/share/fish/completions/ ${INSTALL_DATA} ${WRKSRC}/himalaya.zsh ${DESTDIR}${PREFIX}/share/examples/himalaya/completion/ @ 1.7 log @mail/himalaya: not for i386 @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.6 2025/01/13 20:30:50 pin Exp $ d14 1 a14 1 NOT_FOR_PLATFORM+= *-*-i386 @ 1.6 log @mail/himalaya: update to 1.1.0 [1.1.0] - 2025-01-11 Added Added -y|--yes flag for folder purge and folder delete commands. #469 Changed Put back warn the default log level. #522 Since logs are sent to stderr, warnings can be easily discarded by prepending commands with RUST_LOG=off or by appending commands with 2>/dev/null. Changed message.send.save-copy default to true. #536 Changed default downloads directory. core#1 Fixed Fixed permissions issues when using install.sh. #515 Fixed de/serialization issues of backends' none variant. #523 Fixed list envelopes out of bound error when empty result. #535 Fixed macOS x86_64 builds. #538 @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.5 2024/12/11 09:51:18 pin Exp $ d13 3 @ 1.5 log @mail/himalaya: update to 1.0.0 ## [1.0.0] - 2024-12-09 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](https://github.com/pimalaya/neverest), CLI to synchronize, backup and restore emails - [Mirador CLI](https://github.com/pimalaya/mirador), 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`](./config.sample.toml). Himalaya CLI will now try to adopt the [conventional commits specification](https://github.com/conventional-commits/conventionalcommits.org). Tools like [`git-cliff`](https://git-cliff.org/) may help us generating more accurate changelogs in the future. ### Added - Added `message edit` command to edit a message. To edit on place (replace a message), use `--on-place`. - Added `account.list.table.preset` global config option, `accounts..folder.list.table.preset` and `accounts..envelope.list.table.preset` account config options. These options customize the shape of tables, see examples at [`comfy_table::presets`](https://docs.rs/comfy-table/latest/comfy_table/presets/index.html). Defaults to `"|| |-||| "`, which corresponds to [`comfy_table::presets::ASCII_MARKDOWN`](https://docs.rs/comfy-table/latest/comfy_table/presets/constant.ASCII_MARKDOWN.html). - Added `account.list.table.name-color` config option to customize the color used for the accounts' `NAME` column (defaults to `green`). - Added `account.list.table.backends-color` config option to customize the color used for the folders' `BACKENDS` column (defaults to `blue`). - Added `account.list.table.default-color` config option to customize the color used for the folders' `DEFAULT` column (defaults to `reset`). - Added `accounts..folder.list.table.name-color` account config option to customize the color used for the folders' `NAME` column (defaults to `blue`). - Added `accounts..folder.list.table.desc-color` account config option to customize the color used for the folders' `DESC` column (defaults to `green`). - Added `accounts..envelope.list.table.id-color` account config option to customize the color used for the envelopes' `ID` column (defaults to `red`). - Added `accounts..envelope.list.table.flags-color` account config option to customize the color used for the envelopes' `FLAGS` column (defaults to `reset`). - Added `accounts..envelope.list.table.subject-color` account config option to customize the color used for the envelopes' `SUBJECT` column (defaults to `green`). - Added `accounts..envelope.list.table.sender-color` account config option to customize the color used for the envelopes' `FROM` column (defaults to `blue`). - Added `accounts..envelope.list.table.date-color` account config option to customize the color used for the envelopes' `DATE` column (defaults to `dark_yellow`). - Added `accounts..envelope.list.table.unseen-char` account config option to customize the char used for unseen envelopes (defaults to `*`). - Added `accounts..envelope.list.table.replied-char` account config option to customize the char used for replied envelopes (defaults to `R`). - Added `accounts..envelope.list.table.flagged-char` account config option to customize the char used for flagged envelopes (defaults to `!`). - Added `accounts..envelope.list.table.attachment-char` account config option to customize the char used for envelopes with at least one attachment (defaults to `@@`). ### Changed - Refactored the `account configure` command: this command stands now for creating or editing account configurations from the wizard. The command requires the `wizard` cargo feature. - Improved the `account doctor` command: it now checks the state of the config, and the new `--fix` argument 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 `imap` cargo features, the error `missing "imap" feature` is displayed. [#20](https://github.com/pimalaya/core/issues/20) - Normalized enum-based configurations, using the [internally tagged representation](https://serde.rs/enum-representations.html#internally-tagged) `type =`. It should reduce issues due to misconfiguration, and improve othe error messages. Yet it is not perfect, see [#802](https://github.com/toml-rs/toml/issues/802): - `imap.*`, `maildir.*` and `notmuch.*` moved to `backend.*`: ```toml # before imap.host = "localhost" imap.port = 143 # after backend.type = "imap" backend.host = "localhost" backend.port = 143 ``` - `smtp.*` and `sendmail.*` moved to `message.send.backend.*`: ```toml # before smtp.host = "localhost" smtp.port = 25 # after message.send.backend.type = "smtp" message.send.backend.host = "localhost" message.send.backend.port = 25 ``` - `pgp.backend` renamed `pgp.type`: ```toml # before pgp.backend = "commands" pgp.encrypt-cmd = "gpg --encrypt --quiet --armor " # after pgp.type = "commands" pgp.encrypt-cmd = "gpg --encrypt --quiet --armor " ``` - `{imap,smtp}.auth` moved as well: ```toml # 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 `encryption` to `encryption.type`. This change prepares the config to accept different TLS providers with their options. The `true` and `false` variant have been removed as well: ```toml # 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 `Answered` flag 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. ## [1.0.0-beta.4] - 2024-04-16 ### Added - Added systemd service in `assets/` folder. - Added configuration option `message.delete.style` that can be either `folder` (deleted messages are moved to the Trash folder, default style) or `flag` (deleted messages receive the Deleted flag). - Added `--debug` as an alias for `RUST_LOG=debug`. - Added `--trace` as an alias for `RUST_LOG=trace` and `RUST_BACKTRACE=1`. - Added notes about `--debug` and `--trace` when error occurs. ### Changed - **Added back the search feature**: you can now give an optional filter and sort query at the end of the `envelope list` command. See `envelope list --help` or [pimalaya.org](https://pimalaya.org/himalaya/cli/master/usage/advanced/envelope/list.html#query) for more detail on the search API. - Changed the `envelope list` folder argument due to the search query: it became a flag `--folder|-f`. - Made the global `--config|-c` option 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 `--help` content wrapping properly thanks to the `clap` cargo feature `wrap_help`. - Improved `template {new,reply,forward}` command JSON output: they return now a JSON object with 3 properties: - `content`: the content of the template - `cursor.row`: the row at which the cursor should be placed by the interface using the template - `cursor.col`: the column at which the cursor should be placed by the interface using the template ### Fixed - Fixed watch IMAP envelopes when folder was empty [#179]. - Prevented parsing of undefined config options [#188]. - Fixed `In-Reply-To` header being skipped from mailto URLs [#194]. - Fixed error page out of bounds when filtering envelopes returned an empty result [#195]. ## [1.0.0-beta.3] - 2024-02-25 ### Added - Added `account check-up` command. - Added wizard warning about google passwords [#41]. ### Changed - Removed account configurations flatten level in order to improve diagnostic errors, due to a [bug](https://github.com/toml-rs/toml/issues/589#issuecomment-1872345017) 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-commands` and `pgp-native`. - Moved `sync.strategy` to `folder.sync.filter`. - Changed location of the synchronization data from `$XDG_DATA_HOME/himalaya/` to `$XDG_DATA_HOME/pimalaya/email/sync/-cache`. - Changed location of the synchronization cache from `sync.dir` to `$XDG_CACHE_HOME/pimalaya/email/sync//`. - Replaced id mapping database `SQLite` by `sled`, 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 `mbsync` and 370% faster than `OfflineIMAP`. - 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: ```toml 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]. ## [1.0.0-beta.2] - 2024-01-27 ### Added - Added cargo feature `wizard`, enabled by default. - Added one cargo feature per backend feature: - `account` including `account-configure`, `account-list`, `account-sync` and the `account-subcmd` - `folder` including `folder-add`, `folder-list`, `folder-expunge`, `folder-purge`, `folder-delete` and the `folder-subcmd` - `envelope` including `envelope-list`, `envelope-watch`, `envelope-get` and the `envelope-subcmd` - `flag` including `flag-add`, `flag-set`, `flag-remove` and the `flag-subcmd` - `message` including `message-read`, `message-write`, `message-mailto`, `message-reply`, `message-forward`, `message-copy`, `message-move`, `message-delete`, `message-save`, `message-send` and the `message-subcmd` - `attachment` including `attachment-download` and the `attachment-subcmd` - `template` including `template-write`, `template-reply`, `template-forward`, `template-save`, `template-send` and the `template-subcmd` - Added wizard capability to autodetect IMAP and SMTP configurations, based on the [Thunderbird Autoconfiguration](https://wiki.mozilla.org/Thunderbird:Autoconfiguration) standard. - Added back Notmuch backend features. ### Changed - Renamed `folder create` to `folder add` in order to better match types. An alias has been set up, so both `create` and `add` still work. ### Fixed - Fixed default command: running `himalaya` without argument lists envelopes, as it used to be in previous versions. - Fixed bug when listing envelopes with `backend = "imap"`, `sync.enable = true` and `envelope.watch.backend = "imap"` led to unwanted IMAP connection creation (which slowed down the listing). - Fixed builds related to enabled cargo features. ## [1.0.0-beta] - 2024-01-01 Few 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`, `imap` or `notmuch`) - `folder.add.backend`: override the backend used for creating folders (`maildir`, `imap` or `notmuch`) - `folder.list.backend`: override the backend used for listing folders (`maildir`, `imap` or `notmuch`) - `folder.expunge.backend`: override the backend used for expunging folders (`maildir`, `imap` or `notmuch`) - `folder.purge.backend`: override the backend used for purging folders (`maildir`, `imap` or `notmuch`) - `folder.delete.backend`: override the backend used for deleting folders (`maildir`, `imap` or `notmuch`) - `envelope.list.backend`: override the backend used for listing envelopes (`maildir`, `imap` or `notmuch`) - `envelope.get.backend`: override the backend used for getting envelopes (`maildir`, `imap` or `notmuch`) - `envelope.watch.backend`: override the backend used for watching envelopes (`maildir`, `imap` or `notmuch`) - `flag.add.backend`: override the backend used for adding flags (`maildir`, `imap` or `notmuch`) - `flag.set.backend`: override the backend used for setting flags (`maildir`, `imap` or `notmuch`) - `flag.remove.backend`: override the backend used for removing flags (`maildir`, `imap` or `notmuch`) - `message.send.backend` ***(required)***: override the backend used for sending messages (`sendmail` or `smtp`) - `message.read.backend`: override the backend used for reading messages (`maildir`, `imap` or `notmuch`) - `message.write.backend`: override the backend used for adding flags (`maildir`, `imap` or `notmuch`) - `message.copy.backend`: override the backend used for copying messages (`maildir`, `imap` or `notmuch`) - `message.move.backend`: override the backend used for moving messages (`maildir`, `imap` or `notmuch`) - The CLI API changed: every command is now prefixed by its domain following the format `himalaya `. List of domain available by running `himalaya -h` and list of actions for a domain by running `himalaya -h`. - TOML configuration file options use now the dot notation rather than the dash notation. For example, `folder-listing-page-size` became `folder.list.page-size`. See the [changed](#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) and `envelope.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-aliases` config option to `folder.alias(es)`. - Moved `folder-listing-page-size` config option to `folder.list.page-size`. - Moved `email-listing-page-size` config option to `envelope.list.page-size`. - Moved `email-listing-datetime-fmt` config option to `envelope.list.datetime-fmt`. - Moved `email-listing-datetime-local-tz` config option to `envelope.list.datetime-local-tz`. - Moved `email-reading-headers` config option to `message.read.headers`. - Moved `email-reading-format` config option to `message.read.format`. - Moved `email-writing-headers` config option to `message.write.headers`. - Move `email-sending-save-copy` config option to `message.send.save-copy`. - Move `email-hooks.pre-send` config option to `message.send.pre-hook`. - Moved `sync` config option to `sync.enable`. - Moved `sync-dir` config option to `sync.dir`. - Moved `sync-folders-strategy` config option to `sync.strategy`. - Moved `maildir-*` config options to `maildir.*`. - Moved `imap-*` config options to `imap.*`. - Moved `notmuch-*` config options to `notmuch.*`. - Moved `sendmail-*` config options to `sendmail.*`. - Moved `smtp-*` config options to `smtp.*`. - Replaced options `imap-ssl`, `imap-starttls` and `imap-insecure` by `imap.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-starttls` and `smtp-insecure` by `smtp.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 `notmuch` backend because it needs to be refactored using the backend features system (it should be reimplemented soon). - Disabled temporarily the `search` and `sort` command because they need to be refactored, see [#39]. - Removed the `notify` command (replaced by the new `watch` command). - Removed all global options except for `display-name`, `signature`, `signature-delim` and `downloads-dir`. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.4 2023/10/24 22:09:43 wiz Exp $ d3 1 a3 1 DISTNAME= himalaya-1.0.0 d17 1 a17 1 #RUST_REQ= 1.81.0 d19 1 a19 1 #This package is confirmed to build with Rust 1.81.0 on amd64 @ 1.4 log @*: bump for openssl 3 @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.3 2023/09/15 13:46:12 schmonz Exp $ d3 1 a3 2 DISTNAME= himalaya-0.9.0 PKGREVISION= 1 d5 1 a5 1 MASTER_SITES= ${MASTER_SITE_GITHUB:=soywod/} d17 4 @ 1.3 log @himalaya: de-404 HOMEPAGE. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.2 2023/09/15 06:26:14 pin Exp $ d4 1 @ 1.2 log @mail/himalaya: update to 0.9.0 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 the gpgme lib on the system) - pgp-native: enables the native PGP backend - Added account configuration pgp to configure the way PGP operations are performed. Changed - Moved email-writing-encrypt-cmdto pgp.encrypt-cmd. - Moved email-reading-decrypt-cmd to pgp-decrypt-cmd. - Moved email-writing-sign-cmd to pgp.sign-cmd. - Moved email-reading-verify-cmd to pgp.verify-cmd. v0.8.4 Fixed - Fixed windows releases due to cargo deps typo. v0.8.3 Fixed - Fixed windows releases due to coredump crate 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 pimalaya_email_tpl@@0.3.1. Fixed - Fixed absolute folder aliases for the maildir backend [#94]. - Fixed notmuch virtual folder [#92]. v0.8.1 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. 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 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 = } for the raw secret as string (unsafe, not recommanded), - { cmd = } for command that exposes the secret, - { keyring = } 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 to NewTplBuilder. - Renamed Email::to_read_tpl_builder to Email::to_read_tpl which returns now a Result directly. - Changed Email::to_reply_tpl_builder return type from Result to ReplyTplBuilder. - Changed Email::to_forward_tpl_builder return type from Result 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 Fixed - Fixed Windows releases (due to typo in the github action script). - Fixed unit tests. v0.7.2 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. @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.1 2023/03/08 23:45:10 nikita Exp $ d9 1 a9 1 HOMEPAGE= https://pimalaya.org/himalaya/docs/index.html @ 1.1 log @mail/himalaya: Import as himalaya version 0.7.1 Himalaya is a CLI based on the himalaya-lib that allows you to manipulate your emails using commands in your console. Features: Folder listing Envelopes listing, searching and sorting Email composition based on $EDITOR Email manipulation (copy/move/delete) Multi-accounting Account listing Account synchronization for offline usage IMAP, Maildir and Notmuch support IMAP IDLE mode for real-time notifications PGP end-to-end encryption Completions for various shells JSON output ... @ text @d1 1 a1 1 # $NetBSD$ d3 1 a3 1 DISTNAME= himalaya-0.7.1 a5 1 GITHUB_PROJECT= himalaya @