Skip to content

Commit 564d88d

Browse files
committed
docs: remove coverage and refs to other pimalaya apps
1 parent 38d1ccb commit 564d88d

3 files changed

Lines changed: 26 additions & 65 deletions

File tree

‎CONTRIBUTING.md‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ Everything below documents only what differs from the Pimalaya standards.
1616
Carillon owns no protocol code. It supervises watches, reads the configuration and fires the hooks, and everything on the wire belongs to the crate that speaks that protocol. Triage before patching:
1717

1818
- how a change is learned belongs to the protocol crate: [io-imap](https://github.com/pimalaya/io-imap) for the idle watch, [io-jmap](https://github.com/pimalaya/io-jmap) for the changes poll, [io-maildir](https://github.com/pimalaya/io-maildir) for the listing poll, [io-webdav](https://github.com/pimalaya/io-webdav) for the collection poll;
19-
- the shared TOML shape, since one file backs three binaries, is settled with [himalaya](https://github.com/pimalaya/himalaya) rather than here;
2019
- the configuration schema, the backend selection, the supervision and the hooks live here.
2120

2221
The clap, printer and logger primitives come from [pimalaya/cli](https://github.com/pimalaya/cli), the TOML loader and the secret resolution from [pimalaya/config](https://github.com/pimalaya/config), and the TCP and TLS plumbing from [pimalaya/stream](https://github.com/pimalaya/stream).

‎README.md‎

Lines changed: 25 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ CLI to watch PIM collection changes, written in Rust
88
## Table of contents
99

1010
- [Features](#features)
11-
- [Coverage](#coverage)
1211
- [Installation](#installation)
1312
- [Configuration](#configuration)
1413
- [Usage](#usage)
@@ -20,56 +19,28 @@ CLI to watch PIM collection changes, written in Rust
2019

2120
## Features
2221

23-
- **Watch mail, calendars and contacts**: **IMAP**, **JMAP**, **Maildir**, **CalDAV**, **CardDAV**
24-
- **Desktop notifications**, **shell commands**, or both, on every change
25-
- **Instant where the protocol allows it**: IMAP idle, JMAP push, a poll everywhere else
26-
- **Every account at once**, each reconnecting on its own when its server drops it
27-
- **One prompt setup**: `carillon configure` turns your email address into a tested account
28-
- **Secrets from your own password manager**, never written into the configuration
22+
- Mail backend support: **IMAP** <sup>[rfc2177](https://www.rfc-editor.org/rfc/rfc2177)</sup>, **JMAP** <sup>[rfc8621](https://www.rfc-editor.org/rfc/rfc8621)</sup>, **Maildir** <sup>[specs](https://cr.yp.to/proto/maildir.html)</sup>
23+
- Calendars and contacts backend support: **CalDAV**, **CardDAV** <sup>[rfc6578](https://www.rfc-editor.org/rfc/rfc6578)</sup>
24+
- **Watch** support: IMAP idle, JMAP event stream, collection poll everywhere else
25+
- **Hook** support: desktop notification, shell command, or both, on every change
26+
- **Simple auth** support for IMAP: anonymous, login, plain, oauthbearer, xoauth2, scram-sha-256
27+
- **HTTP auth** support for JMAP (basic, bearer, raw header) and DAV (basic, bearer)
28+
- **TLS** support:
29+
- [Rustls](https://crates.io/crates/rustls) with ring crypto (requires `rustls-ring` feature, enabled by default)
30+
- [Rustls](https://crates.io/crates/rustls) with aws crypto (requires `rustls-aws` feature)
31+
- [Native TLS](https://crates.io/crates/native-tls) (requires `native-tls` feature)
32+
- **Discovery** support:
33+
- PACC <sup>[specs](https://datatracker.ietf.org/doc/html/draft-ietf-mailmaint-pacc)</sup>
34+
- Autoconfiguration (Thunderbird) <sup>[specs](https://wiki.mozilla.org/Thunderbird:Autoconfiguration)</sup>
35+
- SRV DNS lookups <sup>[rfc6186](https://www.rfc-editor.org/rfc/rfc6186)</sup>
36+
- DAV service discovery <sup>[rfc6764](https://www.rfc-editor.org/rfc/rfc6764)</sup>
37+
- JMAP session <sup>[rfc8620](https://www.rfc-editor.org/rfc/rfc8620)</sup>
38+
- **Multi-account** watch: every configured account at once, each reconnecting on its own
39+
- **Interactive wizard**: `carillon configure` turns an email address into a tested account
2940

3041
> [!TIP]
3142
> Carillon is written in [Rust](https://www.rust-lang.org/) and uses [cargo features](https://doc.rust-lang.org/cargo/reference/features.html) to gate backend support. The default feature set is declared in [Cargo.toml](./Cargo.toml).
3243
33-
## Coverage
34-
35-
| Spec | What is covered |
36-
|--------------|-----------------|
37-
| [2177] | IMAP idle: the held connection a watch waits on, woken by the server on every change |
38-
| [2971] | IMAP identification, required by some providers right after authentication |
39-
| [4505] | SASL anonymous, for servers accepting unauthenticated sessions |
40-
| [4616] | SASL plain, the password mechanism |
41-
| [4918] | WebDAV itself: the report a collection answers, and the etag that says an item moved |
42-
| [4959] | SASL initial response, forced on or off for providers that advertise it and then refuse it |
43-
| [6186] | Mail service SRV records, one of the ways the wizard finds a server from an address |
44-
| [6578] | Collection synchronization: the token a poll carries, what changed since it, and what to do when the server refuses it |
45-
| [6764] | CalDAV and CardDAV bootstrapping, how the wizard finds a calendar or an addressbook |
46-
| [7162] | Quick mailbox resynchronization: server-named deltas where the server offers them, a local re-read and diff where it does not |
47-
| [7628] | SASL oauthbearer, an OAuth 2.0 token issued by an external broker |
48-
| [7677] | SASL scram-sha-256, the challenge-response mechanism |
49-
| [8620] | The JMAP core: session discovery, the changes and get method shapes, request batching, and the event-source stream a push watch holds |
50-
| [8621] | JMAP for mail: mailboxes, emails, and the change stream a watch polls |
51-
| [autoconfig] | Thunderbird autoconfiguration, the widest-published source of provider settings |
52-
| [maildir] | The original Maildir layout, plus the Maildir++ subfolder convention |
53-
| [pacc] | Provider account configuration, the successor the wizard prefers when a domain publishes one |
54-
55-
[2177]: https://www.rfc-editor.org/rfc/rfc2177
56-
[2971]: https://www.rfc-editor.org/rfc/rfc2971
57-
[4505]: https://www.rfc-editor.org/rfc/rfc4505
58-
[4616]: https://www.rfc-editor.org/rfc/rfc4616
59-
[4918]: https://www.rfc-editor.org/rfc/rfc4918
60-
[4959]: https://www.rfc-editor.org/rfc/rfc4959
61-
[6186]: https://www.rfc-editor.org/rfc/rfc6186
62-
[6578]: https://www.rfc-editor.org/rfc/rfc6578
63-
[6764]: https://www.rfc-editor.org/rfc/rfc6764
64-
[7162]: https://www.rfc-editor.org/rfc/rfc7162
65-
[7628]: https://www.rfc-editor.org/rfc/rfc7628
66-
[7677]: https://www.rfc-editor.org/rfc/rfc7677
67-
[8620]: https://www.rfc-editor.org/rfc/rfc8620
68-
[8621]: https://www.rfc-editor.org/rfc/rfc8621
69-
[autoconfig]: https://wiki.mozilla.org/Thunderbird:Autoconfiguration
70-
[maildir]: https://cr.yp.to/proto/maildir.html
71-
[pacc]: https://datatracker.ietf.org/doc/html/draft-ietf-mailmaint-pacc
72-
7344
## Installation
7445

7546
### Pre-built binary
@@ -114,21 +85,17 @@ nix run
11485

11586
## Configuration
11687

117-
Run `carillon` with no command: it offers to generate an account discovered from your email address, which `carillon configure` does again later. The wizard searches the services your provider publishes, asks which one to watch and how to authenticate, picks the best watch method the server supports, tests the connection, then saves the account, appends it to the configuration already there, or prints it for you to place by hand.
118-
119-
Everything discovery does not cover is written by hand: copy the annotated [config.sample.toml](./config.sample.toml), keep one backend and the hooks you want, delete the rest. It documents every key.
120-
121-
A configuration is loaded from the first valid path among:
88+
The configuration is loaded from the first existing path among:
12289

123-
- $XDG_CONFIG_HOME/carillon/config.toml
124-
- $HOME/.config/carillon/config.toml
125-
- $HOME/.carillonrc
90+
- `$XDG_CONFIG_HOME/carillon/config.toml`
91+
- `$HOME/.config/carillon/config.toml`
92+
- `$HOME/.carillonrc`
12693

127-
Override the path with `-c <PATH>` or `CARILLON_CONFIG=<PATH>`. Multiple paths can be passed at once, separated by `:`. The first one is the base and the rest are deep-merged on top. The full field reference lives in [config.sample.toml](./config.sample.toml).
94+
Override the path with `carillon -c <PATH>` or `CARILLON_CONFIG=<PATH>`. Multiple paths can be passed at once, separated by `:`; the first is the base and the rest are deep-merged on top. The full field reference lives in [config.sample.toml](./config.sample.toml).
12895

129-
Those are the paths [himalaya](https://github.com/pimalaya/himalaya) and [himalaya-tui](https://github.com/pimalaya/himalaya-tui) read too, and an account block is written the same way, but one file does not load in all three: every backend block is strict on each side and carries keys the others do not know.
96+
Run `carillon` with no command to launch the wizard, `carillon configure` to run it again later. It discovers from your email address the services your provider publishes, asks which one to watch and how to authenticate, picks the best watch method the server supports, tests the connection, then saves the account or prints it for you to place by hand.
13097

131-
An account declares one backend block (`imap`, `jmap`, `maildir`, `caldav`, `carddav`) carrying everything that backend needs: the collection it watches under its own name, how it watches (`watch`), and what it fires (`hook`). Declaring several backends is allowed; `-b/--backend` then picks one.
98+
An account declares one backend block (`imap`, `jmap`, `maildir`, `caldav`, `carddav`) carrying the collection it watches, how it watches it (`watch`) and what it fires (`hook`). Declaring several is allowed, `-b/--backend` then selecting one.
13299

133100
## Usage
134101

‎config.sample.toml‎

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,6 @@
1515
# authenticate, tests the connection, and writes the account here. Everything it
1616
# does not cover is written by hand, which is what this file documents: copy it,
1717
# keep one backend and the hooks you want, then delete the rest.
18-
#
19-
# The `[accounts.<name>]` block keeps the shape `himalaya` CLI v2 and
20-
# `himalaya-tui` read, so an account is recognisable across the three; a whole
21-
# file is not portable between them, every backend block being strict on each
22-
# side and carrying keys the others do not know.
2318
# ================================================================================
2419

2520
[accounts.example]
@@ -185,7 +180,7 @@ imap.hook.on-flag-added.cmd = ["notify-send", "$flag set on $id"]
185180
#maildir.mailbox = "."
186181

187182
# Root of the Maildir tree, subfolders being real nested directories, the
188-
# layout himalaya uses. Watch the root itself with collection = "." or "INBOX",
183+
# usual layout. Watch the root itself with collection = "." or "INBOX",
189184
# and a subfolder by its path, e.g. collection = "Archive".
190185
#maildir.root = "~/Mail/example"
191186

0 commit comments

Comments
 (0)