Commit Graph
18 Commits
Author SHA1 Message Date
SandersandClaude Opus 4.8 da65bf6f8e Add per-app rules, transfer pairing, self-merchant flag, two-step onboarding
Notification parsing:
- Per-app parse rules (parse_rules.packageName; getEnabledForApp, NULL = legacy global)
- Transfer pairing: transfer_pair_matcher + transfer_pairing_blocklist table/dao/repo
- source_apps.selfMerchant flag (Ozon inbox rework: default account picker, suppress
  AI category prefill + rule suggestion)
- raw_messages.diagnostics dump captured under diagnostic-mode toggle
- Inbox card / settings / log UI reworks

Onboarding:
- Two-step flow (name -> first account); UserSeeder seeds categories only, no accounts

Schema bumped to v11; drop obsolete migration + mixed-merchant tests, add new coverage.
Add ios/ platform folder.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 22:49:04 +03:00
SandersandClaude Opus 4.8 1ac68c0eb1 Add "mixed merchant" marker for notification parsing
Introduce ParseRuleKind.mixedMerchant to flag merchants whose category
varies (Ozon, marketplaces). When set, the pipeline suppresses the
merchant→category rule suggestion in the Inbox so the card shows
"confirm once" instead of "Create rule". Inbox action "Categories vary"
creates the marker rule, removes any existing merchant→category rule and
observed candidate, and rewrites the draft cache without the suggestion.

Adds findMixedMerchantRule lookup, InboxController.markMerchantMixed,
localizations (en/ru), UI in inbox_card/rule_editor, and tests.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 18:56:50 +03:00
SandersandClaude Opus 4.8 1e15250c27 Add diagnostic mode for notification capture
When enabled, the native listener captures every post from monitored
apps (including empty/duplicate placeholders like "Конфиденциально")
and stores a full dump of key/postTime/visibility/flags/extras in the
new raw_messages.diagnostics column (schemaVersion 9), shown in the
parsing-log detail panel. Dedup is salted with postTime in this mode so
two distinct posts (placeholder then real-text update) both appear while
reboot redelivery still collapses. Toggle lives in parsing settings
(Android), synced to native via the ingest worker.

Also gate the parsing worker drain on the feature being enabled, with an
explicit re-drain when it is turned back on.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 00:17:50 +03:00
SandersandClaude Opus 4.8 ab66aebc5e Switch AI notification parsing from OpenRouter to DeepSeek API
Replace the OpenRouter HTTP client with a DeepSeek client:
- data/openrouter/ -> data/deepseek/; OpenRouterClient -> DeepSeekClient
  (+ DeepSeekCompletion / DeepSeek*Exception)
- base URL api.deepseek.com, drop OpenRouter-only headers
- DeepSeek has no strict json_schema: use response_format json_object
  and rely on the prompt for shape (ai_schema.dart removed)
- secure-storage key openrouter_api_key -> deepseek_api_key
- default model deepseek/deepseek-v4-flash -> deepseek-chat
- l10n strings, test dart-defines (DEEPSEEK_API_KEY/_TEST_MODEL), docs

Also bundles in-progress findBodyIgnoreRule (body-level ignore rules
applied before the AI call) already present in the working tree.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 00:23:38 +03:00
SandersandClaude Opus 4.8 76f301b758 Add native notification ingest and source-app allowlist
- Android NotificationListenerService plugin + queue store, MethodChannel
  bridge, and Flutter ingest worker / access controller
- source_apps allowlist (DAO, repo, settings + source_apps screen)
- schema v8 migration + decision_gate / dedup / draft_codec updates
- l10n strings and tests

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 00:08:18 +03:00
Sanders 6358c3e71b Add account bind 2026-06-01 17:51:25 +03:00
Sanders 512ea44192 Add habits 2026-06-01 10:58:38 +03:00
Sanders 7d7036c67e fix tests 2026-06-01 00:55:38 +03:00
Sanders 5dab1bd418 Stage 2 ai for sms 2026-05-31 16:40:13 +03:00
Sanders 50d56b91d2 Stage ai for sms 2026-05-30 20:38:00 +03:00
Sanders 054bef832b Stage 1 sms 2026-05-30 00:18:06 +03:00
Sanders ad6d0f44bf Add accs 2026-05-28 17:27:06 +03:00
Sanders f8f14270bd Add categories 2026-05-28 16:08:16 +03:00
Sanders 739ee363d3 Add add info 2026-05-28 11:53:26 +03:00
Sanders 46fbfd9da8 Add add trans 2026-05-28 00:27:51 +03:00
Sanders 8fe4245bd3 Add filter 2026-05-27 17:46:56 +03:00
Sanders 9e4f7ae751 fixes 2026-05-27 17:01:13 +03:00
Sanders fe67189ac7 Locale 2026-05-27 10:36:03 +03:00