mk "[backend] F1 stories mis-classified into tech/finance/politics"\
"The topic classifier has no sport category, so F1 (100% F1 sources) scatters across topics. Live evidence: 'Monaco Grand Prix stewards…' -> tech, 'F1 reports 35% CO2 reduction…' -> finance, 'McLaren launch appeal against Gasly penalty' -> politics. Add a sport/f1 topic and route motorsport sources there."
"Stories pair a headline with an unrelated summary: an Ebola/Bunia (DR Congo) headline carried a South-Africa summary; a CRISPR headline carried Drakensberg/SA text. Raise the TF-IDF similarity threshold (~0.22 -> 0.30-0.40) and make canonical headline + summary come from the SAME representative article. Also inflates sourceCount/crossSourceConfirmation/score."
mk "[backend] Add accurate per-story tags (topic + region)"\
"Expose accurate tags (sport, uganda, east-africa, south-africa, ...) so the client reads them instead of keyword-guessing. Unblocks server-side filter pills. Pairs with the F1 and over-clustering fixes."
mk "[backend] Topic-classifier coverage for the 47 feeds"\
"Ensure science/world/tech map sensibly into the supported topic slugs."
# --- Backend: features ---
mk "[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 ---
mk "[client] Move interest filters server-side once backend tags exist"\
"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."
mk "[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."
mk "[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."
mk "[client] App icon + launch assets"\
"AppIcon is an empty placeholder."
mk "[client] Flesh out Latest / Search tabs"\
"Saved is now an explicit bookmarks list. Add proper empty/loading states and dedicated behavior to Latest and Search."
mk "[client] Verify hero image loading in the reader"\
"AsyncImage against real feed imageUrls (ATS, redirects, grey fallback) in the article reader."
mk "[client] Offline-first polish"\
"Pre-cache top stories for true offline-first; today the green cached dot depends on opening an article."
# --- CI ---
mk "[ci] Add unit/UI tests + a test matrix leg"\
"The build matrix compiles but runs no tests yet; add a test target and a test matrix leg."
mk "[ci] Backend CI build matrix"\
"Python 3.11-3.13 + lint + Docker image build/health probe for the backend repo (template in the handoff)."