Skip to content

Releases

Ruston Mail 0.9.1

Choose a tag to compare

@github-actions github-actions released this 05 Nov 06:57
3e2f67c

The Terminal Update (v0.9.1)

Ruston Mail 0.9.1 makes the terminal interface easier to use. The list shows labels, search takes filters, Z undoes a move, read messages fold away and the mouse works. In the desktop app you can see where a link goes before opening it, and read the third-party notices from Settings.

Searching by recipient now works, and ruston-cli messages undelete, which Proton never supported, is gone. Ruston Mail is still in beta and is not affiliated with or endorsed by Proton AG.

14 new features and 31 fixes, mostly in Command line, Mailbox and reading and Mail engine, in both apps.

What's new

Writing and sending

  • Show a reply's protection as soon as it opens (7d1d377)

Desktop app

  • Open the notices of third-party software from About (997dbba)

Command line

  • Take a label off with L in the terminal interface (66f89c0)
  • Draw the terminal interface's accent in Ruston Mail's violet (ab8a7f7)
  • Show each conversation's labels in its row in the terminal interface (b3f46c3)
  • Narrow a search by sender, recipient, days and folder in the terminal interface (cdce1fd)
  • Take the last move back with Z in the terminal interface (04c514d)
  • Fold messages already read in the terminal interface's reader (aa4b7e7)
  • Fit the list of keys to the terminal in the terminal interface (c8ef1c9)
  • Name a search's folder by its path, ID or all in the terminal interface (773e305)
  • Narrow a local search with the filters of :search in the terminal interface (bdc531d)
  • Fold messages one at a time and open at the first unread in the terminal interface (f9a3bee)
  • Click and scroll with the mouse in the terminal interface (65ad32e)

Installation and platforms

  • Ship the notices of third-party software in every package (19d7ec4)

Fixes

Mailbox and reading

  • Index what mail says, not its HTML or link addresses (e7c4dd3)
  • Refuse a date range that ends before it starts (3c22c6c)
  • Show where a link goes while the pointer rests on it (255d4a9)
  • Keep a row moved out of the view out of new search results (74e0721)
  • Keep a row read when a refresh read before it was marked (5c0c1d2)
  • Narrow a message search to the recipient it names (7311597)
  • Keep a label's name and color when changing only the other (fe9c184)

Writing and sending

  • Look up the protection of at most 100 recipients (d54e0f6)
  • Tell recipients that signed attachments carry signatures (4656d2e)

Attachments

  • Mark saved attachments for Gatekeeper on macOS (ded218f)

Sign-in and accounts

  • Turn on secure keyboard entry in password fields on macOS (4d093e4)

Notifications

  • Take Ruston's notifications away on macOS when they stop (c876e1d)

Command line

  • Say why z shows no quoted text in the terminal interface (36e11b8)
  • Filter demo searches by date, recipient and folder (d108658)
  • Report a draft edited in the demo as the real command does (05bcb47)
  • Say when a label to take off is not there in the terminal interface (a6b89f1)
  • Keep wrapped quoted lines apart from new text in the terminal interface (7b237c2)
  • Keep the selection of another pane apart from unread rows in the terminal interface (9288d55)
  • Drop messages undelete, which Proton does not offer (0bf9e88)
  • Refuse a label or address update that changes nothing (d03f2f7)
  • Report the message cancel-send found, not the text typed (679cd9c)
  • Report the messages demo actions found, not the text typed (c9e4812)
  • Keep the subject readable in a list beside the other panes in the terminal interface (3e602c2)
  • Mark a conversation's messages read with it in the demo (8cea055)

Mail engine, in both apps

  • Finish a full resync while mail comes and goes (2036068)
  • Export each message of a changing folder once (6eb68cf)
  • Ask again for a resync page Proton failed to send (40f6d65)
  • Drop a request's JSON body once it is written out (85f877c)
  • Ask a busy Proton again a few times before giving up (2d877a8)
  • Open address keys whose token Proton sends empty (fe0f662)
  • Open user keys listed without a salt of their own (378df95)
Maintenance: 16 behind-the-scenes changes to code, tests, builds, releases and documentation
  • Rewrite sign-in, keys, message encryption and sessions (c00e73a)
  • Rewrite the transport and the API requests (d720572)
  • Rewrite organizing, sending, the models and the cache (cf2c707)
  • Describe ruston-core in its own words (43003ac)
  • Rewrite the command handlers, human verification and help (5e3371d)
  • Drop an old credit from the README (fc65794)
  • Decide in one place which answers refuse a session (0304488)
  • Ignore Cargo's output folders only at the root (f9ec3e8)
  • Explain the watch loop's index rule where it applies (b860b7d)
  • Take the demo's time from unix_now and share a test modulus (400b3d5)
  • Write cached and staged metadata through one function (9422b0b)
  • Split the release notes script into named steps (80d5b06)
  • Name and document the HTML converter's state (a0e5d86)
  • Stop calling the notes of a --range a first release (5071ca8)
  • Move core's transport tests into transport/tests.rs (cca89d2)
  • Split the desktop app's tests into a module per part (7781c3e)
Download and install

Verify downloads

Verify the download first. SHA256SUMS.txt is attached to this release:

shasum -a 256 -c SHA256SUMS.txt --ignore-missing  # macOS
sha256sum -c SHA256SUMS.txt --ignore-missing      # Linux

On Windows, compare the hash PowerShell prints with the file's line in SHA256SUMS.txt:

Get-FileHash .\ruston-mail-0.9.1-x86_64-setup-UNSIGNED.exe

Each file also carries a build provenance attestation from this repository's
release workflow, which the GitHub CLI can check:

gh attestation verify ruston-mail-0.9.1-x86_64.AppImage --repo luiscuellar31/ruston-mail

macOS

Download ruston-mail-0.9.1-arm64-UNSIGNED.dmg on Apple Silicon or ruston-mail-0.9.1-x86_64-UNSIGNED.dmg on Intel, open it, and drag Ruston Mail onto Applications. macOS 11 or later is required.

Ruston Mail is not signed with an Apple Developer ID, so macOS blocks the first launch and reports that it cannot check the app for malicious software. To allow it, open System Settings → Privacy & Security, scroll down to the Security section, click Open Anyway next to the message about Ruston Mail, and confirm. On macOS 12 and 13 the same setting lives in System Preferences → Security & Privacy → General. The DMG ships these steps as README.txt.

Because the build is signed ad-hoc, macOS treats every new version as a different app: after an update it asks again before Ruston Mail can read the session saved in the keychain.

The command-line client, ruston-cli, is inside the app. To put it on your PATH:

sudo ln -sf "/Applications/Ruston Mail.app/Contents/MacOS/ruston-cli" /usr/local/bin/ruston-cli

Linux

The AppImage runs on distributions with glibc 2.35 or newer, such as Ubuntu 22.04, Debian 12 and Fedora 36 or later:

chmod +x ruston-mail-0.9.1-x86_64.AppImage
./ruston-mail-0.9.1-x86_64.AppImage

The command-line client is inside it. Run it with --cli, or through a link named ruston-cli:

./ruston-mail-0.9.1-x86_64.AppImage --cli --help
ln -sf "$PWD/ruston-mail-0.9.1-x86_64.AppImage" ~/.local/bin/ruston-cli

Replace x86_64 with aarch64 on ARM64 machines. Without FUSE, add --appimage-extract-and-run after the AppImage's name.

Windows

Run ruston-mail-0.9.1-x86_64-setup-UNSIGNED.exe, or ruston-mail-0.9.1-arm64-setup-UNSIGNED.exe on ARM64 PCs. It installs for your user without administrator rights, adds Ruston Mail to the Start menu, and can offer it for email links and put ruston-cli on your PATH. Windows 10 or later is required. To run Ruston Mail without installing it, extract ruston-mail-0.9.1-x86_64-windows-UNSIGNED.zip (or the arm64 one) and start ruston.exe; its README.txt covers email links and removal.

The files are not signed, so SmartScreen may say that it protected your PC: choose More info, then Run anyway. Windows with Smart App Control turned on does not run unsigned apps.

The command-line client, ruston-cli.exe, sits beside ruston.exe in the installation folder, %LOCALAPPDATA%\Programs\Ruston Mail.

Full comparison: v0.9.0...v0.9.1

Ruston Mail 0.9.0

Choose a tag to compare

@github-actions github-actions released this 03 Nov 21:09
d92299c

The Terminal Update (v0.9.0)

Ruston Mail 0.9.0 adds a terminal interface to ruston-cli: run it in a terminal to read, search, organize and write your mail full screen, with Proton Mail's keyboard shortcuts.

The desktop app now opens a saved session straight onto your mailbox and shows the next conversation at once after you archive or delete one, and both apps can save the attachments inside PGP/MIME messages. Ruston Mail is still in beta and is not affiliated with or endorsed by Proton AG.

29 new features, 10 fixes and 2 performance improvements, mostly in Command line, Mailbox and reading and Attachments.

What's new

Mailbox and reading

  • Search this device's index when Proton cannot be reached (9e6e10e)
  • Show mail from yesterday as Yesterday in the list (a3335dc)

Attachments

  • List and save the attachments inside PGP/MIME mail (9e82891)

Desktop app

  • Open a saved session onto the mailbox's skeleton (2a072b2)

Command line

  • Open a terminal interface with ruston-cli tui (9326db0)
  • List folders and conversations in the terminal interface (3a31397)
  • Read a conversation in the terminal interface (8b610f8)
  • Mark starred mail and refresh in the terminal interface (0530d51)
  • Load more conversations in the terminal interface (61b9c92)
  • Fold quoted text in the terminal interface's reader (39cfd3d)
  • Suspend the terminal interface with Ctrl+Z (10a7215)
  • Mark conversations read when the terminal interface opens them (52fdbfb)
  • Open a conversation's links from the terminal interface (d0e433d)
  • Keep the terminal interface's demo changes for the session (0868cab)
  • Star, mark, archive and trash from the terminal interface (c7abfd9)
  • Run commands from a : line in the terminal interface (318c431)
  • Give the demo an HTML message with a quote and a link (8a25ed1)
  • Search all mail from the terminal interface (7a252f8)
  • Search the local index from the terminal interface (9d18df2)
  • Save attachments from the terminal interface (3fa91d7)
  • Mark several conversations in the terminal interface (5d1aafd)
  • Label and report spam from the terminal interface (596ee40)
  • Delete forever and empty Trash or Spam from the terminal interface (9065041)
  • Use Proton Mail's keys in the terminal interface (7308a66)
  • Write and send a new message from the terminal interface (2ff6591)
  • Reply to and forward mail from the terminal interface (d7f84dd)
  • Attach files to mail from the terminal interface (f23890c)

Mail engine, in both apps

  • Let a program wait for a token refresh under way (15e14bd)
  • Search the local index without changing it (af24845)

Fixes

Attachments

  • Show sizes under a kilobyte in bytes (47adc70)

Command line

  • List the demo's starred and labelled conversations (8e68ac9)
  • Say when a list in the terminal interface is empty (82c1d5e)
  • Keep the terminal interface going when a task panics (fe4ebbd)
  • Finish changes and token refreshes before the terminal interface quits (6d618fd)
  • Any key but y keeps a link closed in the terminal interface (0e52dad)
  • List another place from its top in the terminal interface (e408ec0)
  • Put away a conversation that leaves the list in the terminal interface (f009192)
  • Take pastes whole in the terminal interface (fb54240)
  • Let Ctrl+C keep a session whose tokens are being renewed (c9bf183)

Performance

Mailbox and reading

  • Preload the conversation a move would open next (1b8b7db)

Command line

  • Stop superseded loads in the terminal interface (dd72157)
Maintenance: 3 behind-the-scenes changes to code, tests, builds, releases and documentation
  • Share the desktop's recipient rules (6aba08a)
  • Describe the terminal interface for its release (bdd778c)
  • Pin the toolchain, check the oldest Rust and audit advisories apart (b77d59f)
Download and install

Verify downloads

Verify the download first. SHA256SUMS.txt is attached to this release:

shasum -a 256 -c SHA256SUMS.txt --ignore-missing  # macOS
sha256sum -c SHA256SUMS.txt --ignore-missing      # Linux

On Windows, compare the hash PowerShell prints with the file's line in SHA256SUMS.txt:

Get-FileHash .\ruston-mail-0.9.0-x86_64-setup-UNSIGNED.exe

Each file also carries a build provenance attestation from this repository's
release workflow, which the GitHub CLI can check:

gh attestation verify ruston-mail-0.9.0-x86_64.AppImage --repo luiscuellar31/ruston-mail

macOS

Download ruston-mail-0.9.0-arm64-UNSIGNED.dmg on Apple Silicon or ruston-mail-0.9.0-x86_64-UNSIGNED.dmg on Intel, open it, and drag Ruston Mail onto Applications. macOS 11 or later is required.

Ruston Mail is not signed with an Apple Developer ID, so macOS blocks the first launch and reports that it cannot check the app for malicious software. To allow it, open System Settings → Privacy & Security, scroll down to the Security section, click Open Anyway next to the message about Ruston Mail, and confirm. On macOS 12 and 13 the same setting lives in System Preferences → Security & Privacy → General. The DMG ships these steps as README.txt.

Because the build is signed ad-hoc, macOS treats every new version as a different app: after an update it asks again before Ruston Mail can read the session saved in the keychain.

The command-line client, ruston-cli, is inside the app. To put it on your PATH:

sudo ln -sf "/Applications/Ruston Mail.app/Contents/MacOS/ruston-cli" /usr/local/bin/ruston-cli

Linux

The AppImage runs on distributions with glibc 2.35 or newer, such as Ubuntu 22.04, Debian 12 and Fedora 36 or later:

chmod +x ruston-mail-0.9.0-x86_64.AppImage
./ruston-mail-0.9.0-x86_64.AppImage

The command-line client is inside it. Run it with --cli, or through a link named ruston-cli:

./ruston-mail-0.9.0-x86_64.AppImage --cli --help
ln -sf "$PWD/ruston-mail-0.9.0-x86_64.AppImage" ~/.local/bin/ruston-cli

Replace x86_64 with aarch64 on ARM64 machines. Without FUSE, add --appimage-extract-and-run after the AppImage's name.

Windows

Run ruston-mail-0.9.0-x86_64-setup-UNSIGNED.exe, or ruston-mail-0.9.0-arm64-setup-UNSIGNED.exe on ARM64 PCs. It installs for your user without administrator rights, adds Ruston Mail to the Start menu, and can offer it for email links and put ruston-cli on your PATH. Windows 10 or later is required. To run Ruston Mail without installing it, extract ruston-mail-0.9.0-x86_64-windows-UNSIGNED.zip (or the arm64 one) and start ruston.exe; its README.txt covers email links and removal.

The files are not signed, so SmartScreen may say that it protected your PC: choose More info, then Run anyway. Windows with Smart App Control turned on does not run unsigned apps.

The command-line client, ruston-cli.exe, sits beside ruston.exe in the installation folder, %LOCALAPPDATA%\Programs\Ruston Mail.

Full comparison: v0.8.0...v0.9.0

Ruston Mail 0.8.0

Choose a tag to compare

@github-actions github-actions released this 26 Oct 00:04
7c466f5

Introducing Ruston Mail (v0.8.0)

Ruston Mail is an unofficial desktop client for Proton Mail, written in Rust. It reads, organizes, and sends your mail in a native three-pane window, without an embedded browser, and comes with ruston-cli, a command-line client for the same account. This first public beta runs on macOS, Linux, and Windows 10 and 11. Ruston Mail is not affiliated with or endorsed by Proton AG.

101 new features, 280 fixes and 41 performance improvements, mostly in Desktop app, Mail engine, in both apps and Mailbox and reading.

What's new

Mailbox and reading

  • Add folder sidebar, counts, and conversation list (4199ebb)
  • Add conversation reader with demo threads (13b0711)
  • Add local search and async conversation loading (7bb9c1f)
  • Show repeated inbound mail as individual messages (115af55)
  • Apply mailbox actions to Proton Mail (e92237b)
  • Mark opened Proton mail as read (54a8551)
  • Render HTML mail as native rich text (73514f4)
  • Fold quoted text and ease body typography (38ea0dc)
  • Allow 'selecting' and copying message text (5f2e258)
  • Add keyboard navigation, undo and attachment hints (3d17904)
  • List attachments and save them to the downloads folder (dbe921d)
  • Search all mail on the server from the search field (5ab47cd)
  • List the account's own folders alongside Proton's (3b42d52)
  • Browse the account's labels and set them on a thread (128073c)
  • Cache loaded folder listings (2127084)
  • Add foreground auto-refresh (88aaa23)
  • Cache recently opened conversations (55f8579)
  • Reveal saved attachment in file manager (262cfba)
  • Copy a message's sender or recipients from its header (5aee4d1)
  • Indent subfolders and show labels in their colors (c02ea6e)

Writing and sending

  • Write and send a message (5d7f595)
  • Reply, reply to everyone and forward (8791808)
  • Add configurable placement and polish form controls (a623a81)
  • Confirm before discarding unsaved message with content (104122b)
  • Add outgoing email attachments and native file picker (d074bb9)
  • Show a conversation chosen while writing, the draft folded (1c58baa)
  • Let a reply's recipients be changed (aca7711)
  • Let an answer go without the original quoted (ddd11bb)
  • Let a forward leave some of the original's files out (8588caa)

Attachments

  • Mark saved attachments as from the internet on Windows (84d778c)

Sign-in and accounts

  • Add Proton Mail authentication (6864c7f)
  • Prompt for TOTP and human verification, read Proton conversations (ff1fced)
  • Share default profile across desktop and CLI (1eda99e)

Notifications

  • Add macOS desktop notifications for incoming mail (ea6ccfc)

Desktop app

  • Make mailbox panels resizable (d355268)
  • Add coherent fictional messages (830822f)
  • Add interactive mailbox actions (b37171d)
  • Add a settings page and remember layout between runs (90c645c)
  • Move the interface from Iced to egui (5ce62f8)
  • Add an HTML message to the fictional mailbox (ca8a3c6)
  • Choose how a conversation opens (8798750)
  • List the keyboard shortcuts (0e0645b)
  • Scale the interface (659a1f9)
  • Pin the folder a run opens in (acb4529)
  • Improve controls and description readability (eaa8d33)
  • Open preferences in a separate window (c665bc4)
  • Refine mailbox and reader interactions (5f50667)
  • Refine mailbox navigation controls (0d65ba6)
  • Add skeleton loading states (8810387)
  • Add desktop keyboard shortcuts (82536c4)
  • Add macOS dock unread badge and settings toggle (7d8c32e)
  • Add macOS fullsize content view and modern titlebar integration (bde4f6d)
  • Refresh sign-in layout and use app logo (4acdd34)
  • Style sign-in button and link Proton signup (8fad35b)
  • Add light and dark themes and sign-in controls (9bc8b90)
  • Use Bootstrap outline icons across mail views (e00b886)
  • Show workspace version in main window footer (545d6c2)
  • Embed settings in mailbox with change confirmation (af713df)
  • Reset window and pane layout from settings (791200a)
  • Add About section to settings (d44a3fb)
  • Add native desktop identity and icons (01e3e00)
  • Adapt mailbox layout to small windows and high zoom (51f05b3)
  • Improve native attachment file operations (fa556dc)
  • Add native notifications and background mail checks (8e5759f)
  • Refine macOS menus and protect window closing (042b027)
  • Show message verification with sender icons (c7b94ac)
  • Support mailto links and desktop activation (cbc35ca)
  • Add optional system fonts and language fallbacks (88b2704)
  • Show how a new message will be protected before it is sent (#3) (2709c43)
  • Let the composer's encryption check be turned off (50583b1)
  • Add Advanced settings with international domain names (35bf9ca)
  • Offer the way back to the Inbox and a Move to menu (dd03b4a)
  • Complete the macOS menus with Edit, View and Window (631d453)
  • Show mail actions at once and send them in order (4a25cf0)
  • Open a long conversation at its first unread message (917e2fd)
  • Add context menus to conversation rows and message links (e55979f)
  • Draw the Windows app with DirectX 12, falling back to OpenGL (f448c21)
  • Show the unread count on the Windows taskbar button (ff8881d)
  • Attach files dropped on the message being written (29bac24)
  • Follow the system's light or dark mode on macOS and Windows (247cc4c)
  • Hold the interface still when Windows animations are off (909ec8d)
  • Confirm a sent message and a saved file at the foot of the list (a7f8329)

Command line

  • Add offline demo mode via --demo and RUSTON_DEMO=1 (11134a7)
  • Render HTML mail as Markdown in text mode (91f785c)
  • Prompt for sender when multiple addresses exist (d9c4867)
  • Confirm HTML format for interactive sends (a64d424)
  • Ask for mailbox and message passwords at the terminal (bc692b4)
  • Keep conversation and Reply-To headers in exported mail (4c90893)
  • Accept your own folders and labels by name or path (a3abcf0)
  • Give a missing or refused session its own exit status (849871b)

Mail engine, in both apps

  • Paginate Proton search results (b9af32e)

Installation and platforms

  • Add macOS app bundle and draggable DMG packaging (3385373)
  • Describe the desktop app with AppStream metadata (935e82a)
  • Ship the CLI inside the macOS app (e847715)
  • Build a Linux AppImage with the CLI inside (3b78d80)
  • Generate release notes from commits (b19ab4b)
  • Redraw the app icon, symmetric and in its true colors (b1d158b)
  • Ship Windows builds for x86_64 and ARM64 (d67cb32)
  • Give the Windows icon its 125% and 150% sizes (14152b3)
  • Show the unread count on the dock icon (a8b9c22)

Other

  • Initialize native Ruston application architecture (d4a54bb)

Fixes

Mailbox and reading

  • Clear unread marker after opening message (852531f)
  • Make plain message bodies selectable on open (1331581)
  • Keep reader state, counts and loaded pages consistent (b770d57)
  • Drop the undo offer when the list reloads (b484afb)
  • Reload only when a row returns to the open folder (e1793fc)
  • Say when an attachment could not be downloaded (be27e92)
  • Fetch an attachment once, however often Save is pressed (b5d8323)
  • Act on the conversations a search found (77aabd5)
  • Offer no undo for a row only a search found (ff630ca)
  • Keep the open conversation when the folder reloads (993449f)
  • Follow a folder the account renamed or removed (769ef4f)
  • Offer no next page while search results are on screen (5f1257b)
  • Take up a renamed folder without reloading it (6a435bb)
  • Keep a long label list from crowding out the mail (8c4f949)
  • Keep a styled run from swallowing the space beside it (b0f15fd)
  • Centre the reading column and space rich text correctly (be44b57)
  • Give Settings the same button frame as Sign out (99f0bb9)
  • Balance conversation row spacing (f71311c)
  • Align conversation row content (c22fea6)
  • Preserve reader and viewport when loading more mail (4292509)
  • Preserve list position across refresh and inspection (08b5657)
  • Reload unread counts after a read that ends in another folder (a047bfa)
  • Keep a folder's load failure when the search is cleared (cd9ee19)
  • Show Cc and Bcc apart from the people a message went to (012f5c2)
  • Let Undo bring back a conversation from a deeper page (7fd1ca6)
  • Keep Load more from skipping mail after moves (31b0623)
  • Let actions run while the list refreshes (e50359e)
  • Start a new paragraph at every block the desktop reader does (1ffc0d2)
  • Shorten a long folder name beside Refresh (0edf6a5)
  • Head the account's own folders and title search results (09c813f)
  • Let work started before a folder rename finish in that folder (72a55fe)
  • Mark read a thread that is split into messages while open (bc55f39)
  • Open another folder or search at the top of its list (128a8ea)

Writing and sending

  • Prevent race condition and cross-draft attachment injection (081bbbc)
  • Move attachment filesystem validation off UI thread to avoid blocking (e71fab8)
  • Upload a draft's attachments and refuse what it cannot keep (87a5690)
  • Mark answer subjects and reply-all the way Proton expects (540096b)
  • Show the quote and the files that go out with an answer (0603843)
  • Keep a draft for its account when the session expires (8670086)
  • Attach from a stalled share without freezing the window (76c6d66)
  • Stop at a refused recipient before uploading any attachment (f8a154e)
  • Check a draft's recipients together within one deadline (309ea07)
  • Bring the open draft forward when asked for another message (44de805)
  • Refuse an email link in a demo whose mailbox is closed (6a53f41)
  • Keep the send key ...
Read more