Skip to content

v0.4.0 — Agent-quality release

Choose a tag to compare

@longevityboris longevityboris released this 05 Apr 05:41
· 95 commits to main since this release

What's new

Agent-breaking bug fixes

  • Errors to stdout — JSON error envelopes now go to stdout (not stderr) so agents always get the response
  • Typed error codes — "not found" → exit 3, network errors → exit 1 (retryable), not just "internal_error"
  • FTS triggers — search is now O(1) instead of rebuilding the entire index on every query
  • Lean list payloads — inbox list, search, thread no longer return full HTML bodies (saves tokens)
  • archived field — now present in all message responses (was a ghost column)

New commands

  • inbox mark <ids...> --read/--unread — toggle read state (bulk)
  • inbox thread <id> — conversation view via RFC 5322 headers
  • inbox unarchive <ids...> — restore archived messages (bulk)
  • inbox stats — mailbox counts: total, inbox, unread, archived, sent
  • inbox delete/archive — now accept multiple IDs

Improvements

  • Cursor pagination with --after <id> + has_more + next_cursor
  • Bulk mutation responses: {requested_ids, updated_ids, missing_ids}
  • Thread indexes on rfc_message_id and in_reply_to
  • Cursor ordering: (created_at DESC, id DESC) for stable pagination
  • Updated agent-info manifest with all new commands

macOS menu bar daemon

  • Fixed menu item clicks (proper ObjC action targets via define_class!)
  • app.run() + finishLaunching() for correct AppKit event handling
  • NSTimer-based display refresh (live unread count updates)
  • Optimistic UI: Mark All Read clears badge instantly

Install

cargo install email-cli
# or
brew install 199-biotechnologies/tap/email-cli