Releases: postvak-app/postvak
Releases · postvak-app/postvak
0.3.0 - 2026-10-09
Compare
Sorry, something went wrong.
No results found
Release Notes
Changed
Renamed to Postvak. The crate, binary, app, Homebrew formula and cask are now postvak, the repository is postvak-app/postvak and the docs are at postvak.pataar.nl . Nothing carries over from a postbode install (#111 )
Added
(gui) search field and tighter action spacing in the toolbar (#102 )
(gui) Ossenbloed visual identity (#99 )
(cli) add account list to print configured accounts (#97 )
(gui) reader toolbar with Save .eml, View source and a Text | HTML switch (#91 )
(gui) opt-in notice for a newer release in the status bar (#90 )
(gui) group counts by the device's region (#82 )
(gui) add a toolbar, a sync button and the version (#81 )
(gui) show the full date with seconds and offset in the reader (#80 )
(gui) remember window size, position and pane widths (#83 )
(gui) align message rows in columns with the date on the right (#79 )
(gui) show custom folders as a collapsible tree (#78 )
(store) keep each folder's IMAP hierarchy delimiter (#77 )
(gui) full-width folder rows with icons and counts, views pinned below (#74 )
(gui) add the Phosphor icon font (#73 )
(rules) any, none, tags and value lists in conditions (#71 )
AppImage for Linux, one file for window, CLI and MCP (#66 )
macOS app bundle, DMG and Homebrew cask (#38 )
(gui) render HTML mail with Blitz (#65 )
Fixed
(package) ship the window icon the GUI embeds, so cargo install postvak builds
(sync) forget stored folders a clean pass did not sync (#109 )
(store) renumber rule-definition migration to 007 (#108 )
two mail-loss paths (rule clock on edit, plain EXPUNGE) (#105 )
(sync) make syncing a Gmail account safe (#104 )
(log) never let RUST_LOG trace IMAP commands or keyring secret bytes (#103 )
(gui) draw text in Ubuntu Medium instead of egui's Ubuntu Light (#95 )
(sync) show archived, moved and trashed mail in the target folder (#92 )
(gui) give the macOS Dock icon Apple's margin (#89 )
(gui) prefer the integrated GPU on macOS (#84 )
(gui) keep selected text readable in text fields (#75 )
(gui) darken the light theme's teal and green to pass WCAG AA (#72 )
Other
(gui) pin the shown version in tests so a release bump keeps the snapshots (#107 )
describe MCP's privacy-friendly scopes and move it out of the headline (#106 )
lead the README with rules and say what Postvak does not do (#101 )
show the light or dark screenshot to match the reader's theme (#100 )
(daemon) make the 'restarting' reply test independent of thread scheduling (#98 )
show moves, restores and unread counts before the daemon answers (#96 )
(gui) stop racing the HTML render thread with Harness::run (#93 )
(gui) align panes on one 16 px grid, truncate long reader headers (#88 )
show GUI screenshots from the snapshot tests (#85 )
running headless on a server or in Docker (#76 )
refresh after the AppImage and macOS app merges (#69 )
Install postvak 0.3.0
Install prebuilt binaries via Homebrew
brew install postvak-app/tap/postvak
Download postvak 0.3.0
0.2.0 - 2026-10-07
Compare
Sorry, something went wrong.
No results found
Release Notes
Added
(gui) Wayland app id and a Linux desktop entry (#34 )
(daemon) one background daemon owns sync and IMAP; GUI, CLI and MCP are clients (#16 )
(mcp) MCP server with scopes, account filter and host install (#15 )
(gui) Backspace deletes on macOS
(gui) Catppuccin Mocha and Latte palettes, coloured rows and the window icon
(gui) activity and trash views with restore, and a key help window
(gui) rules view with proposals and switches; react to rules.toml and config.toml edits
(gui) search the account from the list with /
(gui) show the message body with safe links, attachments and mark-read after a second
(gui) archive, delete, move, read and flag with optimistic rows and rollback
(gui) show per-account activity, errors and history in a status bar with a theme switch
(gui) list threads with keyboard navigation, expansion and multi-select
(gui) add postbode gui with the account and folder tree
(config) add [ui] theme and save_theme that keeps comments
(rules) add set_enabled for toggling a rule in place
(engine) run accounts behind a lock and route commands to them
(sync) drain commands between passes and wake IDLE for them
(sync) add commands, command results and activity events
(sync) fetch envelopes in resumable 500-message chunks with progress checkpoints
(store) add initial_uid_next and thread summaries
Fixed
(cli) show times in local time, from a shared time module (#58 )
(gui) explain startup errors in a window (#49 )
(config) refuse password = { keyring = false } (#57 )
(service) pass POSTBODE_HOME on to the service's daemon (#55 )
(daemon) start without accounts (#47 )
(daemon) deliver a client's own action result once (#46 )
(gui) readable bold text in the dark theme (#44 )
(daemon) sync every account when rules.toml changes (#45 )
(sync) ghost rows and overwritten backups, found by model-based sync tests (#37 )
(rules) refuse blank and overlong names and folders (#32 )
store Homebrew's stable opt path for the daemon service and MCP hosts (#29 )
(gui) start the read delay when the body text appears
(gui) keep the cursor on its thread when the thread gets new mail
(gui) a click on the shown message opens it
(gui) migrate the stores before the sync threads start
(gui) open rules.toml in a text editor and log a failed opener
(gui) offer a search hit's other folders in the move picker
(gui) visible pane focus, cached body text and safer attachment names
(gui) mark mail read only after the user opens it
(gui) keep the cursor on its message across reloads
(gui) visible focus ring on text fields and readable light-mode selection
(gui) never link a bare scheme and keep the read timer across a fetched body
(gui) stack optimistic edits per row and explain why actions are off
(gui) keep progress ticks out of the history and errors on the line while offline
(gui) keep egui widget focus out of the way of list keys
(sync) only count synced mail as fresh so a moved-in row cannot hide mail below it
(sync) mark mail in folders without rules as seen so a later body rule skips it
(sync) end a full pass on a lost connection instead of skipping every folder
(sync) clear the wake flag with acquire ordering before draining commands
(engine) join sync threads on drop and report a failed spawn per account
(sync) log a UIDVALIDITY change found between chunks
(sync) persist which mail the rules have seen so aborted passes still notify
(sync) stop draining after a lost connection and drain before INBOX-only passes
(sync) return the real lost-connection error and test command failure paths
Other
(gui) repaint from the client's subscription, not a relay thread (#52 )
(sync) move the sync tests into sync/tests.rs (#64 )
build Message and AccountConfig fixtures from their defaults (#62 )
(daemon) end the own-completion test at its own account's sync (#63 )
share the action, restore and approve steps of the CLI and MCP (#51 )
(store) drop the unused Message-ID index (#61 )
say what tokio is for in Cargo.toml (#60 )
one flag check and one source of account defaults (#59 )
(mail_ops) a move no longer claims to return the new uid (#56 )
(daemon) keep test-only client and sync code out of the binary (#50 )
(actions) drop fetch_bodies' unused progress callback (#48 )
describe sync and restore as the daemon does them (#43 )
(cli) print rule errors without faking an event (#54 )
(daemon) make the two timing-dependent daemon tests deterministic (#53 )
(gui) snapshot tests for the main views (#40 )
property tests for message, rules and wire parsing (#36 )
generate app icons from icon.svg with packaging/icons.sh (#33 )
(mcp) sweep every tool with junk arguments (#31 )
deny unwrap, expect and panic in shipped code (#28 )
simplify gui selection, store folder columns and sync pass state (#14 )
(gui) say in the key help that delete from Trash is permanent
describe what delete does and what the Trash view lists
describe the mail window and the [ui] theme
link the docs site and community files from the README (#12 )
sharpen crate keywords and forbid unsafe code (#9 )
publish the mdBook docs to GitHub Pages (#5 )
add peach-and-mint terminal logo and app icon
(engine) make Engine::start infallible
(engine) retry taking an account lock that a concurrent spawn briefly inherited
(sync) a command sent while offline runs after reconnecting
(mail_ops) split fetch_new into search_uids and fetch_envelopes
Install postbode 0.2.0
Install prebuilt binaries via Homebrew
brew install pataar/tap/postbode
Download postbode 0.2.0
0.1.0 - 2026-10-06
Compare
Sorry, something went wrong.
No results found
Release Notes
Added
trust an extra CA per account with ca_file
bound IMAP connect with a timeout and enable TCP keepalive
rules schema, propose, approve, reject and test --stdin
list and save attachments
list --threads groups conversations
full-text search with optional body fetch
mark, move, archive and delete commands with --dry-run
direct message actions through the rules apply path
rules skip mail restored from trash
account column, account key and backup subjects in list, log and trash list output
postbode CLI with run, sync, rules, list, show, log and trash
per-account sync loop with IDLE, rules pass and trash purge
apply rule actions with trash-first delete
trash directory for deleted mail backups
IMAP MailOps on async-imap with IDLE
MailOps trait with recording fake
pure rules evaluation with notification policy
rules.toml parsing, validation and compilation
per-account sqlite store with migrations
header parsing, thread ids and body text extraction
credentials from keyring or password command
account config with aliases and identity matching
platform paths and atomic file writes
Fixed
(imap) do not wait for DNS past the connect timeout
(cli) ask for an extra CA file in account add
hint when the keyring waits on a prompt, search bodies offline
private rules lock, write through symlinked config, keep purging past a bad file
small final-review fixes
serialize rules.toml edits and use unique temp files
delete preview and log say when mail is expunged
clean and validate agent-supplied rule strings
approving a rule starts its clock at approval time
rejecting or approving a rule keeps the user's comments
a disabled rule starts acting from when it is enabled
strip control characters from error lines and rule names, sync exits non-zero on folder errors
report database errors while loading rules as database errors
show password command errors on the terminal
create config and rules files private
rules test rejects unknown names and run validates rules before starting
reject unknown keys in account config
forget first-seen times of rules removed from rules.toml
ignore FETCH responses without INTERNALDATE or headers
move into a folder that already exists on the server
drop the re-select after each applied rule
count folder messages with a COUNT query
fsync the directory after an atomic rename
fall back to folder names for unmarked special-use roles
skip body fetches for messages found by an initial sync
stable integer id for messages FTS and skip unchanged flag writes
strip control characters from server text on the terminal and escape notification markup
equals on from, to and cc matches a bare address
skip flags a message already has and count only executed actions
timer loop for servers without IDLE and reset backoff after a full cycle
report a failing folder and keep syncing the others
write each folder sync in one transaction after the network calls
skip rule actions and show on a folder whose UIDVALIDITY changed
validate new accounts, side-effect-free rule previews, report apply errors
only newly tracked or reset folders count as initial sync
isolate rule failures, reset backoff, skip initial-sync notifications
skip same-folder moves and keep failed applies side-effect free
absolute deadline for IMAP IDLE
deleted mail stays silent and clamp older_than
reject unknown top-level keys and empty rule values
create private dirs recursively and fsync atomic writes
Other
release with release-plz, dist and a Homebrew tap
fmt, clippy, machete, audit and tests on Linux and macOS with live IMAP
live sync, rule delete, UIDVALIDITY and CLI exit-code tests
live IMAP tests against Dovecot with and without MOVE
plan 3 — CI, releases and live IMAP tests
CLI store writes, approval clock, restore keyword caveat and trash retention
approval timing, account scope, dry-run caveat and spec corrections
spec matches the engine features as built
regeneration steps in AGENTS.md
mdBook docs, agent guide and SKILL.md, kept honest by tests
fake IMAP move reports no new uid, like the real client
plan for engine features
share the sync pass, IMAP connect and date formatting
look up fresh messages in a HashSet during the rules run
drop unused trash::read_eml and tokio sync feature
make RecordingOps match IMAP expunge and append semantics
rely on mail-parser for html body text
ensure_account is idempotent
pin rust 1.99 and planned crate versions
scaffold postbode package with spec and plan
Install postbode 0.1.0
Install prebuilt binaries via Homebrew
brew install pataar/tap/postbode
Download postbode 0.1.0