2026-06-18 18:04:59 +03:00
|
|
|
|
# Backlog
|
|
|
|
|
|
|
2026-06-19 01:15:56 +03:00
|
|
|
|
Open issues, seeding the Gitea tracker via `scripts/create-issues.sh` (run once the
|
|
|
|
|
|
repo exists). `[client]` = iOS, `[backend]` = the platform service on the Docker host,
|
|
|
|
|
|
`[ci]` = build/test.
|
|
|
|
|
|
|
|
|
|
|
|
## Backend — data quality (highest priority)
|
|
|
|
|
|
|
|
|
|
|
|
1. **[backend] F1 stories are mis-classified into tech/finance/politics.** The topic
|
|
|
|
|
|
classifier has no sport category, so F1 (with 100% F1 sources) scatters across topics.
|
|
|
|
|
|
Evidence from the live feed: "Monaco Grand Prix stewards…" → `tech`, "F1 reports 35%
|
|
|
|
|
|
CO2 reduction…" → `finance`, "McLaren launch appeal against Gasly penalty" → `politics`.
|
|
|
|
|
|
Add a `sport` (or `f1`) topic and route motorsport sources there.
|
|
|
|
|
|
2. **[backend] Over-clustering merges unrelated articles.** Stories pair a headline with a
|
|
|
|
|
|
summary about something else, e.g. an Ebola/Bunia (DR Congo) headline carried a
|
|
|
|
|
|
South-Africa summary, and a CRISPR headline carried Drakensberg/SA text. Raise the
|
|
|
|
|
|
TF-IDF similarity threshold (~0.22 → 0.30–0.40) and make the canonical `headline` and
|
|
|
|
|
|
`summary` come from the **same** representative article. This also inflates
|
|
|
|
|
|
`sourceCount` / `crossSourceConfirmation` and the signal score.
|
|
|
|
|
|
3. **[backend] Add accurate per-story tags (topic + region).** So the client can *read*
|
|
|
|
|
|
tags (sport, uganda, east-africa, south-africa, …) instead of keyword-guessing. Unblocks
|
|
|
|
|
|
moving the filter pills to server-side. Pairs with #1/#2.
|
|
|
|
|
|
4. **[backend] Topic-classifier coverage for the 47 feeds.** Ensure science/world/tech map
|
|
|
|
|
|
sensibly into the supported topics.
|
|
|
|
|
|
|
|
|
|
|
|
## Backend — features
|
|
|
|
|
|
|
|
|
|
|
|
5. **[backend] Server-side push for breaking alerts (APNs or ntfy).** Needed for
|
|
|
|
|
|
breaking-story notifications while the app is fully closed; the backend already computes
|
|
|
|
|
|
the stories. Client currently does local notifications + background refresh only.
|
|
|
|
|
|
|
|
|
|
|
|
## Client
|
|
|
|
|
|
|
|
|
|
|
|
6. **[client] Move interest filters server-side once tags exist (#3).** Replace the
|
|
|
|
|
|
client-side keyword filters (F1 / Uganda / East Africa / South Africa) — which only see
|
|
|
|
|
|
loaded stories and match the headline — with backend tag filtering for full coverage.
|
|
|
|
|
|
7. **[client] SSID-based trusted networks.** Pin trusted Wi-Fi by name. Needs the Access
|
|
|
|
|
|
WiFi Information entitlement (real device + paid account); no-ops in the simulator.
|
|
|
|
|
|
Currently approximated by LAN reachability.
|
|
|
|
|
|
8. **[client] Optional in-app WireGuard tunnel.** NetworkExtension packet-tunnel so Jarvis
|
|
|
|
|
|
can bring up a WireGuard tunnel itself (WireGuard/Netmaker configs only). Entitlement +
|
|
|
|
|
|
real device. Deferred.
|
|
|
|
|
|
9. **[client] App icon + launch assets.** `AppIcon` is an empty placeholder.
|
|
|
|
|
|
10. **[client] Flesh out Latest / Search tabs.** (Saved is now an explicit bookmarks list.)
|
|
|
|
|
|
Add proper empty/loading states and dedicated behavior.
|
|
|
|
|
|
11. **[client] Verify hero image loading.** `AsyncImage` against real feed `imageUrl`s
|
|
|
|
|
|
(ATS, redirects, grey fallback) in the article reader.
|
|
|
|
|
|
12. **[client] Offline-first polish.** Pre-cache top stories for true offline-first; today
|
|
|
|
|
|
the green "cached" dot depends on opening an article.
|
|
|
|
|
|
|
|
|
|
|
|
## CI
|
|
|
|
|
|
|
|
|
|
|
|
13. **[ci] Add unit/UI tests + a test matrix leg.** The build matrix compiles but runs no
|
|
|
|
|
|
tests yet.
|
|
|
|
|
|
14. **[ci] Backend CI build matrix.** Python 3.11–3.13 + lint + Docker image build/health
|
|
|
|
|
|
probe, for the backend repo (template lives in chat/handoff).
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## Recently shipped (this iteration)
|
|
|
|
|
|
|
|
|
|
|
|
Signal feed + detail + reader + feed manager; LAN⇄Tailscale connectivity; notifications
|
|
|
|
|
|
(morning/evening briefings + breaking alerts) with Open-Meteo weather; device code signing;
|
|
|
|
|
|
feed resilience (no blank-on-refresh, ignore cancelled, coalesced WS refresh); clearer
|
|
|
|
|
|
empty states; deterministic feed order; read/unread (drop stripe on open); 6-line summary
|
|
|
|
|
|
preview; pinned mutually-exclusive filters (F1 split out, regions non-overlapping,
|
|
|
|
|
|
Finance/Tech by topic); swipe actions (left = save, right = share + mark read).
|