<feed xmlns='http://www.w3.org/2005/Atom'>
<title>archsetup/scripts/cmail-setup-finish.sh, branch main</title>
<subtitle>Builds a full dev workstation from a bare Arch Linux install.
</subtitle>
<id>https://git.cjennings.net/archsetup/atom?h=main</id>
<link rel='self' href='https://git.cjennings.net/archsetup/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/'/>
<updated>2026-05-17T19:32:38+00:00</updated>
<entry>
<title>fix(cmail-setup-finish): verify both Bridge ports and dump status on failure</title>
<updated>2026-05-17T19:32:38+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-17T19:32:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=19cd3ffad4874a812fb5ecbff636e15b0d0a7fc7'/>
<id>urn:sha1:19cd3ffad4874a812fb5ecbff636e15b0d0a7fc7</id>
<content type='text'>
The "verifying Bridge is listening" check used a regex
`127\.0\.0\.1:(1143|1025)` against `ss -ltn` output. That matches if
*either* port is listening, but the success message claims both are. So
a half-broken Bridge (IMAP up, SMTP down or vice versa) would pass the
check.

I split the check into two greps and report which port is missing.
When the check fails, the script now also prints the last 10 lines of
`systemctl --user status protonmail-bridge` to stderr so the operator
sees the service state immediately instead of being told to go run the
command themselves.
</content>
</entry>
<entry>
<title>feat(cmail): clean autostart stub and add DNS-wait drop-in</title>
<updated>2026-05-13T15:40:03+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-13T15:40:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=cc26f773de3fdc040ccd027d40e4e074ab4e2e38'/>
<id>urn:sha1:cc26f773de3fdc040ccd027d40e4e074ab4e2e38</id>
<content type='text'>
I extended cmail-setup-finish.sh with two boot-cleanliness fixes for the systemd --user Bridge service.

The autostart cleanup removes ~/.config/autostart/Proton Mail Bridge.desktop, which double-launches Bridge and throws an "orphan instance" dialog every login.

The wait-for-dns drop-in installs an ExecStartPre loop that waits up to 30 seconds for DNS before Bridge's first API call. User-instance systemd doesn't carry network-online.target, so After=network.target doesn't imply the resolver is up. The leading '-' makes the pre-step non-fatal so an offline boot still starts the unit.
</content>
</entry>
<entry>
<title>feat: add post-install cmail Bridge setup</title>
<updated>2026-05-09T15:21:36+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-09T15:21:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archsetup/commit/?id=f3dc2a905e4328d6fc16aa15d091ec65edcfc120'/>
<id>urn:sha1:f3dc2a905e4328d6fc16aa15d091ec65edcfc120</id>
<content type='text'>
Bridge first-run is interactive, so I put the cmail wiring in a post-install
helper rather than running it inside archsetup. scripts/cmail-setup-finish.sh
handles the post-first-run steps idempotently: it decrypts the encrypted
cmailpass, copies Bridge's self-signed cert to ~/.config/protonbridge.pem,
symlinks the cmail-action triage helper into ~/.local/bin, and enables the
user-level protonmail-bridge service.

I added loginctl enable-linger in essential_services so the user service
survives logout — without it, triaging cmail from a remote agent or SSH
session has nothing to talk to. outro prints a four-step runbook for the
manual steps after reboot.
</content>
</entry>
</feed>
