MailOps v0.2.0: Safer multi-account operations and development harness
MailOps v0.2.0: Safer multi-account operations and development harness
MailOps 0.2.0 fixes account-isolation and draft-execution defects while keeping
the local-first operator loop: sync, inspect, triage, draft, review, apply, audit.
This is a minor alpha release because it changes local schema and policy behavior.
What changed
- Message identity is scoped to each account, preventing identical Message-IDs in
different mailboxes from overwriting each other. Migration preserves stored IDs,
content, folder links, indexes, and triggers transactionally. - Proton sync binds cursors to UIDVALIDITY, validates returned UIDs, reads with
BODY.PEEK[], and retains bounded retry behavior after errors and mailbox resets. - Draft proposals freeze reviewed account, recipients, and reply context. Apply
checks account/login identity and enforces risk floors and per-action approval. - Durable execution claims prevent duplicate concurrent or interrupted apply
attempts. Uncertain provider results block automatic retries and local rollback. - New draft references verify Message-ID and UIDVALIDITY during reconciliation.
- TOML parsing, credential/traceback redaction, resource cleanup, and literal
terminal rendering are hardened. Untrusted mail cannot use Rich markup to hide
reviewed text; control characters display as visible escapes. - A shared validation command checks architecture, docs, lint, tests, and synthetic
CLI behavior. CI covers Windows/Linux with Python 3.10/3.13, builds packages,
checks private-file exclusion and metadata, and audits resolved dependencies. - All six MailOps Codex skills now use deliberate mailbox-home/account targeting
and current credential, installation, review, and release guidance.
Upgrade instructions
-
Stop MailOps operations and back up the entire established
MAILOPS_HOME
before running 0.2.0. Most state-using commands initialize/migrate the database.
Migration cannot reconstruct messages already overwritten by older versions. -
Install the wheel attached to this GitHub release in the intended environment:
python -m pip install ./mailops-0.2.0-py3-none-any.whl -
Set
MAILOPS_HOMEto the existing absolute store path. Verify the account and
inspect pending batches before any provider action. Recreate and review legacy
proposals that lack frozen recipients. -
Legacy UID-only draft refs now report
unverified. Actions markedexecuting
oruncertainneed Proton Drafts/audit inspection; do not reset/retry them blindly. -
Refresh installed skills from
skills/using the maintained installation guide.
The attached wheel and source archive are GitHub release artifacts. Do not assume
this version is available from PyPI unless separately published there.
Validation and limits
Local Windows validation passed 140 tests, structural checks, lint, isolated CLI
scenarios, packaging checks, and built-wheel smoke tests. A point-in-time audit of
57 resolved development/runtime packages found no known vulnerabilities. Remote
results are available in Validate MailOps.
No operational mailbox database was migrated during release validation. Live Bridge
login/sync/draft acceptance remains untested for this release; provider tests use
fakes. Thread grouping and triage remain heuristic; bounded sync is not a complete
mirror of existing flags/deletions. State and exports are plaintext on disk.
Sending, deletion, bulk archive/move, provider rule application, and Gmail runtime
remain unimplemented. Creating a reviewed Proton draft never sends it.
See the changelog,
alpha guide,
release checks,
and quality report.