diff options
| author | Craig Jennings <c@cjennings.net> | 2026-08-20 06:13:35 -0700 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-08-20 06:13:35 -0700 |
| commit | 23d1d998995a776b5c184c6719602b1aba2c1d41 (patch) | |
| tree | 848e5806f6eca0b826a84e4d20ebc1ddacf5d2d4 /.ai/protocols.org | |
| parent | ca1bb871417afafc319c115d6ae69fa8cd3fe53c (diff) | |
| download | rulesets-23d1d998995a776b5c184c6719602b1aba2c1d41.tar.gz rulesets-23d1d998995a776b5c184c6719602b1aba2c1d41.zip | |
fix(cmail): install cmail-action on PATH instead of per-project copies
protocols.org said cmail-action was symlinked into ~/.local/bin and on PATH from any project. It wasn't on any machine. The only copies were the per-project .ai/scripts/cmail-action.py the template sync delivers, so the documented invocation died with command not found.
The claim wasn't aspirational. A provisioning script used to create that symlink from ~/projects/claude-templates/, and that path went away when claude-templates became a subtree here. The doc outlived its mechanism.
The script has no project coupling (every path in it is under $HOME against a hardcoded bridge address). I moved it to claude-templates/bin/, which make install already links. The documented command is now true, and 17 copies collapse to one.
Its test moved to scripts/tests/ and needed an explicit SourceFileLoader, because dropping the .py suffix stops importlib inferring one from the extension. The test target gained a pytest pass over scripts/tests. Without it the move would have dropped 57 tests while still reporting green.
triage-intake's cmail gate now tests command -v cmail-action rather than a file path, so it checks what it runs. protocols.org names the repair when the command is missing, and names Proton Bridge as a precondition.
Diffstat (limited to '.ai/protocols.org')
| -rw-r--r-- | .ai/protocols.org | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/.ai/protocols.org b/.ai/protocols.org index bf0e6f7..0a226a9 100644 --- a/.ai/protocols.org +++ b/.ai/protocols.org @@ -344,7 +344,7 @@ Craig has three mail accounts. *Default to cmail for personal / non-work email* | =gmail= | =craigmartinjennings@gmail.com= | Third account, rarely the right one. | |---------+--------------------------------------+--------------------------------------| -*The tool is =cmail-action send=* (symlinked into =~/.local/bin=, on PATH from any project). Don't hand-roll MIME or pipe raw messages through =msmtp= — the script builds the message, threading, and attachments for you. +*The tool is =cmail-action send=*, on PATH from any project. =make install= symlinks it into =~/.local/bin= from =claude-templates/bin/=, and startup runs that install every session — so if =command -v cmail-action= comes back empty, the machine needs a rulesets pull plus =make install=, not a hunt for the script. Don't hand-roll MIME or pipe raw messages through =msmtp= — the script builds the message, threading, and attachments for you. #+begin_src bash # simple @@ -360,6 +360,8 @@ cmail-action send --to addr@example.com --subject "Re: ..." --body-file /tmp/dra =cmail-action= handles the receive/triage side too (=list-unread=, =read=, =mark-read=, =star=, =trash=). For the full guided flow (validate the recipient against =contacts.org=, confirm before sending, verify delivery), run the =send-email= workflow; for a known recipient, the one-liner above is enough. +*cmail needs Proton Bridge up.* Every =cmail-action= subcommand talks to the local Bridge (IMAP =127.0.0.1:1143=, SMTP =127.0.0.1:1025=), so nothing works when Bridge is down — start it with =systemctl --user start protonmail-bridge=. The script fails loudly rather than mysteriously: both the IMAP and SMTP paths exit naming Bridge and the =systemctl= command to check it, so read the error before assuming a network or credential problem. The other two accounts don't route through Bridge and are unaffected. + ** Task List Location Craig's global task list is available at: =/home/cjennings/org/roam/inbox.org= |
