Mark each item open/mitigated/done, fold completed work into Shipped, and upgrade the clustering bug with the on-device Jackson/airport over-merge proof and a concrete TF-IDF/embeddings fix. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
62 lines
4.3 KiB
Bash
Executable File
62 lines
4.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Create issues on self-hosted Gitea from docs/BACKLOG.md.
|
|
# You supply the token (this script never stores it). Generate one in Gitea:
|
|
# Settings → Applications → Generate New Token (scope: write:issue, read/write repo)
|
|
#
|
|
# Run:
|
|
# GITEA_URL=http://10.10.1.21:3002 GITEA_OWNER=kutesir GITEA_REPO=jarvis \
|
|
# GITEA_TOKEN=xxxxxxxx bash scripts/create-issues.sh
|
|
set -euo pipefail
|
|
: "${GITEA_URL:?set GITEA_URL e.g. http://10.10.1.21:3002}"
|
|
: "${GITEA_OWNER:?set GITEA_OWNER e.g. kutesir}"
|
|
: "${GITEA_REPO:?set GITEA_REPO e.g. jarvis}"
|
|
: "${GITEA_TOKEN:?set GITEA_TOKEN (Gitea → Settings → Applications → Generate Token)}"
|
|
API="$GITEA_URL/api/v1/repos/$GITEA_OWNER/$GITEA_REPO/issues"
|
|
|
|
mk() {
|
|
local body
|
|
body=$(python3 -c 'import json,sys; print(json.dumps({"title":sys.argv[1],"body":sys.argv[2]}))' "$1" "$2")
|
|
curl -sf -X POST "$API" \
|
|
-H "Authorization: token $GITEA_TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d "$body" >/dev/null && echo " + $1"
|
|
}
|
|
|
|
# --- Backend: data quality ---
|
|
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."
|
|
mk "[backend] Catastrophic over-clustering: unrelated articles merged on one shared word" \
|
|
"Confirmed on-device: a story merged a Russian-film-director article + 'Who is afraid of Michael Jackson?' + 'Chelsea Jackson Roberts' (wellness), grouped on the surname Jackson. Another merged 'Gunfire at Niger airport' + 'L.A. County Whiteman Airport crash' + 'Niger fintech', grouped on airport/Niger. Wrong headline/summary/topic + inflated signal. Raise TF-IDF threshold hard (~0.22 -> 0.45-0.55), require multiple shared distinctive terms / named-entity overlap + tight time window; if still over-merging move to sentence embeddings (all-MiniLM-L6-v2, cosine >= 0.6). Canonical headline + summary must come from the SAME article. No client fix possible."
|
|
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)."
|
|
|
|
echo "Done."
|