Auger/progress.md

2.6 KiB

Progress

Last updated: 2026-03-06

Current Status

The project is in a functional prototype stage: core feed aggregation and embedding-based grouping are implemented, but production hardening and test quality are still pending.

Completed

  • Flutter app shell with desktop platform support (macOS, Linux, Windows).
  • Navigation between Home and Settings pages (go_router).
  • Persistent settings management via Provider + SharedPreferences.
  • Default catalog of business/finance feeds.
  • Feed parsing for both RSS and Atom formats.
  • Concurrent feed retrieval and aggregation.
  • OpenRouter embeddings integration (openai/text-embedding-3-small).
  • Relevance filtering using keyword embedding similarity.
  • Event grouping by cosine similarity.
  • JSON output export pipeline for raw/enriched/relevant/grouped datasets.

In Progress / Partial

  • UX for long-running pipeline execution:
    • Processing runs on button tap with console logs only.
    • No progress indicator, cancellation, or error surface in UI.
  • Data quality controls:
    • No deduplication or normalization layer before grouping.
    • No source weighting/confidence scoring.
  • Architecture maturation:
    • Core pipeline is orchestrated in UI layer rather than dedicated service/use-case layer.

Known Defects and Risks

  • SettingsPage can crash when API key is empty:
    • apiKey.substring(0, 8) is called even when key is "".
  • Disabled feeds are still processed:
    • Home page currently sends all feed URLs, not only enabled == true.
  • updateFeed replaces feed object and can change derived id:
    • If title/url changes, later operations using old id may become inconsistent.
  • No guardrails for invalid/empty API key before embedding requests.
  • Error handling is mostly print-based and non-user-visible.

Validation Snapshot (run on 2026-03-06)

  • flutter analyze: fails with 24 issues
    • Includes 2 warnings (immutability, unused import) and multiple lint infos.
  • flutter test: fails
    • Existing test is the default counter smoke test and does not match current UI.

Testing Coverage

  • No meaningful unit tests for:
    • feed parsing
    • similarity calculations
    • grouping behavior
    • settings persistence
  • No widget/integration tests for Home and Settings user flows.

Next High-Impact Steps

  1. Fix the SettingsPage API key crash and respect feed enabled flags during aggregation.
  2. Replace template widget test with app-specific widget tests for navigation + settings.
  3. Extract pipeline orchestration from HomePage into a dedicated service for testability.
  4. Add structured error/reporting model surfaced in the UI.
  5. Add retry/backoff and timeout handling for external requests.