Added
-
Added the
pimdirstorage 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"; writes are staged as replica mutations attributed to
pimdir.source, auto-detected when the store has a single source. -
Added back the
emailanddisplay-nameconfig fields, at the global and the account level ([#721]).They fill the
Fromheader ofmessages compose,replyandforwardwhen--fromis not passed, and are also read asfromandfrom-name, the spellings himalaya-tui writes. -
Added back the
signatureandsignature-delimconfig fields, at the global and the account level.The composers append the signature when neither
--signaturenor--signature-fileis passed,signature-delimdefaulting to the RFC 3676 §4.3"-- \n"and written verbatim. -
Added
in_reply_toto 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 <ids>command (aliasdel).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.dovecotandmaildir.keywords.headerconfig 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-irconfig field, forcing the RFC 4959 initial response on or off ([#729]).Unset follows the advertised
SASL-IRcapability;falseis needed by Coremail (126.com, 163.com), which advertises it then rejects the inline form. -
Added a
--seenflag tomessage read, marking the message as seen while reading it. -
Added the
configurecommand (aliaswizard), 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
--jsonis set. -
Added back the
HIMALAYA_CONFIGenvironment variable, read like-cand taking the same:-delimited list. -
Added the shared Pimalaya
--helpfooter, 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;
--rawand--jsonare unchanged. -
Aligned the
IDofmessage read,attachments listandattachments downloadon the MIME part's 1-based position, making attachment ids a sparse subset of it. -
Right-aligned the
SIZEcolumn 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
-corHIMALAYA_CONFIGpointed, 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 configureskips it. -
Changed bare
himalaya --account <NAME>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 --headerandgmail threads get --headerto narrow the rendered headers under every format, not only--format metadata. -
Changed
imap rawto send a byte-verbatim batch of tagged commands.Literal
\r/\nescapes decode to CRLF and the reply is read until every command is acknowledged;smtp rawdecodes the same escapes but stays a single command.
Fixed
-
Fixed
configure --jsonemitting a payload no schema described:json-schema <DIR>now writes himalaya-configure.json. -
Fixed
--fromcarrying a display name composing aFrom: <Alice <alice@example.org>>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 --jsonerroring: the two now combine, emitting the raw RFC 5322 bytes as a JSON string. -
Fixed the Gmail and Microsoft Graph
getcommands wrapping their data in amessagestring under--json([#730]).Gmail
messages get,drafts get,threads get,history listand thesettingsreaders now serialize their data, as does Microsoft Graphmessage get, each with a published JSON Schema. -
Fixed
gmail drafts get --format rawprinting 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 %Uanswering a mailto: link withunrecognized subcommand; handling mailto: is left to a wrapper of your own, as MIGRATION.md describes.