Skip to content

v1.0.9

Choose a tag to compare

@github-actions github-actions released this 23 Jul 12:17
· 263 commits to main since this release

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-amd64 for users who just want to run it directly.
  • Debian/Ubuntu .deb Pelton-<version>-linux-amd64.deb built with the same nfpm config.

How

  • The linux-fedora job is renamed linux since it now produces the binary, the .deb and the .rpm from one build.
  • nfpm's depends moved into per-packager overrides, because the gtk3/webkit2gtk runtime has different package names on Debian vs Fedora. The .deb depends on libgtk-3-0 | libgtk-3-0t64 (the second covers Ubuntu 24.04's t64 rename) and libwebkit2gtk-4.1-0; the .rpm keeps gtk3 / webkit2gtk4.1.
  • The same post-install hook that refreshes the desktop/icon caches runs on both (.rpm posttrans, .deb postinstall).
  • The version step strips a leading v for 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/proxy package: Config -> a TCP DialContext (SOCKS5 via golang.org/x/net/proxy, HTTP via a CONNECT tunnel in connect.go, system via httpproxy.FromEnvironment) and an *http.Client factory.
  • The IMAP/SMTP configs gain an optional Dial hook. 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's Dial* only accepts a concrete *net.Dialer).
  • Proxy preference persisted as JSON under the proxy setting; password in the keyring. Loaded once at startup and cached on App, refreshed by SetProxyConfig.
  • The three web call sites now take an *http.Client from the proxy-aware factory.

Testing

  • New internal/proxy unit tests: config validation, credential-carrying URL, dialer selection, and a stub HTTP proxy verifying the CONNECT tunnel and Proxy-Authorization.
  • go test ./internal/..., go vet, gofmt clean; svelte-check clean.

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:

  1. 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.
  2. 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.sql adds a username column (default empty = log in with email), so every existing account keeps working unchanged.
  • Username threaded through storage.Account, add/update/test-connection requests, the credential resolvers (loginName helper: 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/... and go vet pass.
  • svelte-check clean.

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