Repository navigation
Conversation
Prints, as JSON, incoming mail from the last N days that comes from a Tier 3 sender or scores at least --min-score. Leaves out the user's own addresses, server-deleted messages, and unflagged no-reply senders. Reuses the dashboard's scored-message projection, so no subject, body, filename or full URL is exposed. Consumed by a local Claude Code pane that lists and toasts these rows. Docs: ADR 0003, CHANGELOG Tests: test_needs_me_lists_scored_incoming Verified: 254 passed/2 skipped, ruff clean, ty unchanged (47 pre-existing), cross-checked by qwen-3.8 (cerebras lane)
There was a problem hiding this comment.
If your organization's extra usage balance is empty, an organization admin can add extra usage credits at claude.ai/admin-settings/usage. If its monthly spend limit was reached, an admin can raise it on the same page. If neither applies, contact Anthropic support.
Once extra usage is available, someone with write access to this repository can comment @claude review on this pull request to trigger a review.
A server-rejected password login raised imapclient's LoginError out of cmd_sync, which stopped every later account and left last_error empty. It is now recorded as the account's last_error and the sync moves on, exiting 1 as for any failed account. OAuth2 accounts keep their refresh path, and other errors still propagate. Found when a needs-me consumer polling `nodary sync` stalled on one account whose Google Workspace password was no longer accepted. Tests: test_sync_continues_after_password_login_rejected (fails before) Verified: 255 passed/2 skipped, ruff clean, ty unchanged (47 pre-existing), cross-checked by qwen-3.8 (cerebras lane)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What & why
Adds
nodary needs-me [--days N] [--min-score S], which prints, as JSON, incoming mail from the last N days (default 30) that comes from a Tier 3 sender or scores at least S (default 25).Scores answer "is this suspicious?". The trust tiers already answer "does this need me?", but only the dashboard could show them. This command gives other local consumers that view without opening the database: a Claude Code pane that lists and toasts these rows, or a Mail smart mailbox.
Left out:
user_identities)no-reply,no.reply,donotreply,mailer-daemon,bounce, ...) unless they reach the score threshold. Replying once in a thread such a sender started can lift it to Tier 3, yet it cannot be a correspondent.--days < 1and--min-scoreoutside 0-100 exit 2 before the database is opened. The decision is recorded in ADR 0003.On a real 35k-message database this cut the 30-day view from 120 rows to about 45.
Checklist
uv run pytestpasses (254 passed, 2 skipped)uv run ruff format . && uv run ruff check .cleanENGINE_VERSIONis unchangedty checkreports the same 47 diagnostics asmain, none in the changed files.Privacy notes
Output uses the dashboard's
_SCORED_MESSAGE_COLSprojection and_scored_payload, so no subject, body, filename or full URL is exposed. The command only reads, and writes only to stdout.