diff --git a/scripts/odysseus-mail b/scripts/odysseus-mail index fcd8c6a5a..e63d9f166 100755 --- a/scripts/odysseus-mail +++ b/scripts/odysseus-mail @@ -2,7 +2,7 @@ """odysseus-mail — Unix-style command-line wrapper around the email backend that powers the web UI. -Calls the same helpers `routes/email_helpers.py` exports, so a request +Calls the same helpers `routes/email/email_helpers.py` exports, so a request issued from the shell hits IMAP/SMTP through the same connection pool and the same parsing pipeline as the HTTP routes. State is shared via `data/app.db` and `data/.app_key` (passwords decrypt automatically). diff --git a/specs/email-contacts.md b/specs/email-contacts.md index 53d73d0ee..204a97b57 100644 --- a/specs/email-contacts.md +++ b/specs/email-contacts.md @@ -8,7 +8,8 @@ This spec covers mail and contacts in: - app wiring in `app.py`; - `core.database.EmailAccount`; -- `routes/email_routes.py`, `routes/email_helpers.py`, and `routes/email_pollers.py`; +- canonical `routes/email/email_routes.py`, `routes/email/email_helpers.py`, and + `routes/email/email_pollers.py`, plus their shims at the old flat paths; - email threading in `src/email_thread_parser.py`; - email MCP tools in `mcp_servers/email_server.py`; - canonical contact/CardDAV routes in `routes/contacts/contacts_routes.py`, diff --git a/specs/persistence.md b/specs/persistence.md index 318e0a027..39224f9cc 100644 --- a/specs/persistence.md +++ b/specs/persistence.md @@ -16,7 +16,7 @@ This spec covers durable state in: - `src/attachment_refs.py`, `src/upload_handler.py`, and `routes/upload_routes.py` for durable upload references and retention; - JSON stores managed by `core/auth.py`, `src/settings.py`, `src/api_key_manager.py`, `src/preset_manager.py`, `src/integrations.py`, `src/upload_handler.py`, `src/personal_docs.py`, `src/research_handler.py`, `src/bg_jobs.py`, `routes/prefs_routes.py`, canonical `routes/contacts/contacts_routes.py` and `routes/vault/vault_routes.py` plus their shims, `routes/cookbook_routes.py`, and memory/skills managers; -- `routes/email_helpers.py` scheduled-email storage; +- canonical `routes/email/email_helpers.py` scheduled-email storage; - `routes/backup_routes.py` and `scripts/odysseus-backup`; - runtime data under `data/`. @@ -61,7 +61,7 @@ Email default-account state is serialized per owner. Startup normalizes legacy d `core/models.py` owns pure dataclasses used by `SessionManager`. It does not own database persistence. -`routes/email_helpers.py` owns a second SQLite database at `data/scheduled_emails.db` for scheduled email, summary, reply, tag, sender-signature, urgency-alert, calendar-extraction, and cache state. Its migrations and owner backfills are local to that module, not `core/database.py`, and those auxiliary tables are owner-scoped. +`routes/email/email_helpers.py` owns a second SQLite database at `data/scheduled_emails.db` for scheduled email, summary, reply, tag, sender-signature, urgency-alert, calendar-extraction, and cache state. Its migrations and owner backfills are local to that module, not `core/database.py`, and those auxiliary tables are owner-scoped. ## Migration Policy