1075 Commits

Author SHA1 Message Date
Clément DOUIN b350955f21 fix(imap): add sort fallback
Introduce a new config option imap.sort.fallback: true for a slower SEARCH +
SORT combination, false for the SORT. If omitted, use fallback when the SORT
capability is not returned by the server.

Refs: #698
2026-06-12 10:57:12 +02:00
Andrew Furman e1885d2cda docs: import Proton Mail, Outlook and iCloud Mail sections back from v1.2.0
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

Refs: #705
2026-06-11 14:52:07 +02:00
Andrew Furman 6123a30f45 docs: add Gmail section under Configuration
Per-provider configuration section as discussed in #701, modeled on
the v1.2.0 README. Config shape live-tested against a real account.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

Refs: #704
2026-06-11 12:28:54 +02:00
Andrew Furman 4f99cb87d8 docs: fix shared-API command names + plural hidden aliases
* docs: fix shared-API command names, document search, draft and read semantics

The shared commands are singular since 3a1a981b but the README examples
still used the plural forms. Also document the query DSL limits (SORT
capability required, see #698), the save-as-draft recipe, and the
missing Reading messages section.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* feat(cli): accept plural shared commands as hidden aliases

Naming rule from #701: singular public API with hidden plural aliases,
plural struct fields (the mailbox.alias config key is now backed by an
`aliases` field, `aliases` kept as config alternative).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

Refs: #701 #703
2026-06-11 12:27:41 +02:00
Clément DOUIN 48cb0d3e7b docs: switch back license to MIT OR Apache-2.0
The AGPL license was just too restrictive, better to put effort in a Enterprise,
paid version.
2026-06-08 14:46:05 +02:00
Clément DOUIN 2b378a0f78 build: add missing sigtool to native build inputs on darwin
Refs: https://github.com/pimalaya/nix/pull/4
2026-06-07 19:17:49 +02:00
Clément DOUIN c71c1281cf fix: fix tests + macos build 3rd attempt 2026-06-07 18:58:38 +02:00
Clément DOUIN 09216723c3 build: bump deps 2026-06-06 22:50:30 +02:00
Clément DOUIN f22cb7df94 ci: try to fix macos builds
Refs: #694, https://github.com/pimalaya/nix/pull/4
2026-06-05 17:51:36 +02:00
Clément DOUIN 0a073e6dcd fix: auth failure due to invalid default port 2026-06-02 16:44:02 +02:00
Clément DOUIN fe49ba00f8 build: bump io-email and io-imap
Refs: https://github.com/pimalaya/io-imap/issues/1
2026-06-02 15:36:25 +02:00
Clément DOUIN 4b347fda2b refactor: improve sasl config 2026-06-02 00:34:12 +02:00
Clément DOUIN 164c745120 refactor(imap): make envelope and message get/read support * as id
Refs: #583
2026-06-01 23:18:19 +02:00
Clément DOUIN e377aede15 feat: make alpn customizable per protocol
Refs: #670
2026-06-01 20:47:41 +02:00
Clément DOUIN 7d81d73043 fix: forward smtp error is case of connection failure 2026-06-01 18:55:01 +02:00
Clément DOUIN 07078437a2 refactor: drop HIMALAYA_CONFIG support
Clap env vars are hard to customize across Pimalaya projects, and they can
always be replaced by arg or flag.
2026-06-01 18:54:57 +02:00
Clément DOUIN ec5a53233f feat: add message send --save and message save --send args 2026-06-01 16:53:40 +02:00
Clément DOUIN 662bd26eb1 refactor: remove composer and reader
Composers and readers did not work as expected. It is just not possible for
himalaya to spawn a command that spawns $EDITOR, piping and redirection cannot
satisfy all the needs. Either the $EDITOR does not spawn (hangs over), either
himalaya does not collect any output from edition. The simplest way is to use an
intermediate temp file, or use process substitution. For eg., using mml:

  mml compose >(himalaya message send)

You can also write into a file then feed himalaya with it.
2026-06-01 16:27:54 +02:00
Clément DOUIN 3a1a981b8c refactor: rename command to singular 2026-06-01 14:12:34 +02:00
Clément DOUIN 1ddc3e48d5 feat: add missing m2dir commands 2026-05-31 20:38:47 +02:00
Clément DOUIN a28f95f9db fix: raw message arg (imported from mml) 2026-05-31 20:06:36 +02:00
Clément DOUIN aff4fddfb4 feat(imap): added back auto id feature
Refs: #688
2026-05-31 19:46:48 +02:00
Clément DOUIN f603e68268 chore: remove old vscode folder 2026-05-27 16:51:23 +02:00
Clément DOUIN fed42d39c3 build: bump deps 2026-05-27 16:50:29 +02:00
Clément DOUIN 1f6cf06166 chore: clean 2026-05-26 19:40:35 +02:00
Clément DOUIN ad747e5924 ci: fix tests and deny 2026-05-24 15:09:30 +02:00
Bowen Ho 8030ef5c50 chore: apply clippy --fix
* Fix clippy

* cargo fmt

Refs: #689
2026-05-24 15:08:23 +02:00
Clément DOUIN 68ff784c24 refactor: improve maildir, bring m2dir support 2026-05-24 01:37:37 +02:00
Bowen Ho c490bd5a27 refactor: split composer config into subparts compose, reply and forward
* feat: Add configs for `reply-with` and `forward-with` commands

Config extended from:

(Old)
```toml
[message.composer.mml]
command = "mml compose"
```

, where `compose-with`, `reply-with`, and `forward-with`
all share the same composer command, to:

(New)
```toml
[message.composer.mml]
default = true
compose-command = "mml compose"
reply-command = "mml reply"
forward-command = "mml forward"
```

* docs: ComposerConfig

* refactor(account): simplify composer resolution with `get_composer`

- Implement `Account::get_composer`, and `Account::get_reader`
  to fetch config by name or default.
- Remove the redundant `resolve_composer`, `default_composer`
  `resolve_reader`, and `default_reader` helpers.
- Simplify the configuration retrieval architecture.

* refactor: update composer and reader config to use std::process::Command

- Remove `_command` suffix from `compose`, `reply`,
  and `forward` configuration fields.
- Replace composer and reader config command type
  from `String` to `std::process::Command`.
- Remove `Clone` derives from `Config`, `Account`, and
  related structs due to `Command` type limitations.

Refs: #687
2026-05-23 17:42:03 +02:00
Clément DOUIN 72533ff4a3 build: fix missing base64 dep 2026-05-22 12:19:09 +02:00
Clément DOUIN 128af80c59 build: bump io-imap, io-email and serde_json 2026-05-22 11:53:08 +02:00
Clément DOUIN ef45901b75 build: bump io-jmap and io-email 2026-05-21 21:17:26 +02:00
Clément DOUIN 1933a42e2f fix: redirection issue when reading JMAP message 2026-05-21 20:57:43 +02:00
Clément DOUIN e1eb379231 refactor: make message add return added id
Refs: #627
2026-05-21 14:02:10 +02:00
Clément DOUIN 6ae09790aa chore: cargo fmt 2026-05-20 23:48:27 +02:00
Clément DOUIN c2228e504f build: bump io-email 2026-05-20 23:47:49 +02:00
Clément DOUIN 791a54ef15 style: put back color inside table 2026-05-20 20:02:41 +02:00
Clément DOUIN e58fad97b6 build: adjust versions to prevent duplicates 2026-05-20 18:15:08 +02:00
Clément DOUIN 42480ae2ef ci: fix cargo deny 2026-05-20 02:50:45 +02:00
Clément DOUIN 9dd02da584 docs: switch to agpl license 2026-05-20 02:36:43 +02:00
Clément DOUIN dabfb20431 docs: update contributing and security 2026-05-20 02:21:55 +02:00
Clément DOUIN 44eff37470 build: improve bin size 2026-05-20 02:13:30 +02:00
Clément DOUIN 6dec8f2832 tests: clean unused and fix deny 2026-05-20 00:54:21 +02:00
Clément DOUIN 58d13804e5 re-introduce search query 2026-05-20 00:54:21 +02:00
Clément DOUIN 5500b02cfc clean part 3 2026-05-20 00:54:21 +02:00
Clément DOUIN cd27969e14 clean part 1 2026-05-20 00:54:16 +02:00
Clément DOUIN 8416a41f99 use std clients 2026-05-20 00:54:16 +02:00
Clément DOUIN c32047d4de rewrite lib without io-socket nor io-fs, and with io-email 2026-05-20 00:54:13 +02:00
Clément DOUIN 14edd94896 fix: apply #646 2026-05-20 00:54:12 +02:00
Clément DOUIN b295f159de refactor: unify command names 2026-05-20 00:54:06 +02:00