v1.0.9
Pelton 1.0.9.
Highlights
- IMAP/SMTP username auth — accounts whose login name differs from the email address can now be added and edited, plus an explicit SMTP security (SSL/TLS vs STARTTLS) selector. (#108)
- Outbound proxy — new Preferences → Network section routing all connections (IMAP, SMTP, and web calls) through a SOCKS5 or HTTP proxy, or the system proxy environment, with keyring-stored auth. (#110)
- Linux
.deb+ raw binary now published alongside the Fedora.rpm.
Important
1.0.9 is the last release to use semantic versioning. From the next release Pelton moves to Calendar Versioning (YYYY.Q.INCR — year, calendar quarter, per-quarter counter). The next version will be 2026.4.0, written as 2026.4 for the flagship (first) release of the quarter. See the README "Versioning" section for details.
Changes
ci: publish linux amd64 binary and .deb alongside the .rpm -
@TRC-Loop in #112
Adds two Linux release artifacts next to the existing Fedora .rpm:
- Raw amd64 binary
Pelton-<version>-linux-amd64for users who just want to run it directly. - Debian/Ubuntu
.debPelton-<version>-linux-amd64.debbuilt with the same nfpm config.
How
- The
linux-fedorajob is renamedlinuxsince it now produces the binary, the.deband the.rpmfrom one build. - nfpm's
dependsmoved into per-packageroverrides, because the gtk3/webkit2gtk runtime has different package names on Debian vs Fedora. The.debdepends onlibgtk-3-0 | libgtk-3-0t64(the second covers Ubuntu 24.04's t64 rename) andlibwebkit2gtk-4.1-0; the.rpmkeepsgtk3/webkit2gtk4.1. - The same post-install hook that refreshes the desktop/icon caches runs on both (
.rpmposttrans,.debpostinstall). - The version step strips a leading
vfor both package formats (pkg_version).
Targets dev for the 1.0.9 release.
feat: outbound proxy settings for mail and web connections -
@TRC-Loop in #111
Closes #110.
Adds an outbound proxy option in Preferences -> Network that routes every Pelton connection through a proxy.
What
- Modes: Off, System, Manual.
- System follows the standard proxy env vars (HTTP_PROXY / HTTPS_PROXY / ALL_PROXY / NO_PROXY), honouring NO_PROXY per target.
- Manual supports SOCKS5 and HTTP proxies, with optional username/password.
- Covers everything: IMAP, SMTP, and the app's own web calls (autodiscovery, update check, one-click unsubscribe).
- Auth in the keyring: the proxy password is stored in the OS keyring like account secrets, never in the settings db. The UI is write-only for the password (it receives only
hasPassword, shows a placeholder, and keeps the stored secret unless you type a new one). - Test button dials a well-known endpoint through the proxy so you can confirm it works before saving.
How
- New
internal/proxypackage:Config-> a TCPDialContext(SOCKS5 viagolang.org/x/net/proxy, HTTP via a CONNECT tunnel inconnect.go, system viahttpproxy.FromEnvironment) and an*http.Clientfactory. - The IMAP/SMTP configs gain an optional
Dialhook. When no proxy is set the hook is nil and the existing direct-dial path is used unchanged - so non-proxy users are byte-for-byte unaffected. Only proxied connections take the new path (which builds the client from a pre-dialed conn, since go-imap'sDial*only accepts a concrete*net.Dialer). - Proxy preference persisted as JSON under the
proxysetting; password in the keyring. Loaded once at startup and cached onApp, refreshed bySetProxyConfig. - The three web call sites now take an
*http.Clientfrom the proxy-aware factory.
Testing
- New
internal/proxyunit tests: config validation, credential-carrying URL, dialer selection, and a stub HTTP proxy verifying the CONNECT tunnel andProxy-Authorization. go test ./internal/...,go vet,gofmtclean;svelte-checkclean.
Note
DNS resolution and the MX-probe step of autodiscovery are not tunnelled (they are not HTTP); the mail and web transports are. Full OS GUI proxy settings (macOS SystemConfiguration / Windows WinHTTP) are out of scope; System mode uses the environment variables, which is the cross-platform, GDPR-safe common denominator.
Targets dev for the 1.0.9 release.
feat: separate login username and explicit SMTP security in account setup -
@TRC-Loop in #109
Fixes #108, reported by @ahornero (Alberto). Thanks for the clear report and the offer to test.
What
Two gaps in the manual IMAP/SMTP account setup:
- Separate login username. Some servers authenticate on a username that is not the email address. The setup form assumed username == email, so those accounts could not be added. There is now an optional Username field (add wizard and mailbox editor); leave it blank to keep logging in with the email address.
- Explicit SMTP security. The advanced section only exposed IMAP security (SSL/TLS vs STARTTLS). SMTP now has the same toggle. The security choice sets the conventional port as the default; the port field stays fully editable for non-standard setups.
How
- New migration
0010_account_username.sqladds ausernamecolumn (default empty = log in with email), so every existing account keeps working unchanged. Usernamethreaded throughstorage.Account, add/update/test-connection requests, the credential resolvers (loginNamehelper: username when set, else email), backup export/import, and the DTO.- SMTP TLS mode is derived from the port (465 implicit, 587 STARTTLS), matching the existing IMAP behaviour; the new toggle just flips the conventional port.
- Wizard + mailbox editor UI, generated Wails bindings (hand-edited), and en/de/fr/es strings.
Testing
go test ./internal/...andgo vetpass.svelte-checkclean.
Targets dev for the 1.0.9 release.
fix: correct nfpm scripts placement so the .deb builds -
@TRC-Loop in #115
The 1.0.9 linux release job failed with Yaml: unmarshal errors: field posttrans not found in type nfpm.Scripts: posttrans is rpm-specific and only valid under the top-level rpm: block, not under overrides.<packager>.scripts.
Fix: keep posttrans under rpm.scripts, keep the Fedora depends at top level (used by the .rpm), and override only the .deb with its Debian dependency names plus a postinstall hook.
Validated locally with nfpm: both --packager deb and --packager rpm now build, and the .deb control lists Depends: libgtk-3-0 | libgtk-3-0t64, libwebkit2gtk-4.1-0.
macOS/Windows/Copr artifacts on 1.0.9 were unaffected; this re-cuts the linux artifacts.
Full Changelog: v1.0.8...v1.0.9