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