a love letter to tangled (android, iOS, and a search API)
19
fork

Configure Feed

Select the types of activity you want to include in your feed.

1--- 2title: Roadmap 3updated: 2026-03-24 4--- 5 6## API: Constellation Integration 7 8Add a Constellation client to the Go API for enriching search results with social signals. 9 10- [x] Constellation XRPC client (`internal/constellation/`) with `getBacklinksCount` and `getBacklinks` 11- [x] User-agent header with project name and contact 12- [x] Enrich search results with star counts from Constellation 13- [x] Profile summary endpoint (`GET /profiles/{did}/summary`) with follower/following counts from Constellation 14- [x] Cache Constellation responses with short TTL (star/follower counts change infrequently) 15 16## API: Semantic Search Pipeline 17 18Nomic Embed Text v1.5 via Railway template, async embedding pipeline. 19 20- [ ] Deploy nomic-embed Railway template (`POST /api/embeddings` with Bearer auth) 21- [ ] Embedding client in Go API (`internal/embedding/`) calling the Nomic service 22- [ ] Embed-worker: consume `embedding_jobs` queue, generate 768-dim vectors, store in `document_embeddings` 23- [ ] `GET /search/semantic` endpoint using DiskANN vector_top_k 24- [ ] Reembed command for bulk re-generation 25 26## API: Hybrid Search 27 28Combine keyword and semantic results. 29 30- [ ] Score normalization (keyword BM25 → [0,1], semantic cosine → [0,1]) 31- [ ] Weighted merge (0.65 keyword + 0.35 semantic, configurable) 32- [ ] Deduplication by document ID 33- [ ] `matched_by` metadata in results 34 35## API: Search Quality 36 37- [ ] Field weight tuning based on real queries 38- [ ] Recency boost for recently updated content 39- [ ] Star count ranking signal (via Constellation) 40- [ ] State filtering defaults (exclude closed issues) 41- [ ] Better snippets with longer context 42- [ ] Relevance test fixtures 43 44## API: Observability 45 46- [ ] Structured metrics: ingestion rate, search latency, embedding throughput 47- [ ] Dashboard or log-based monitoring 48 49## App: Search & Discovery 50 51Wire the Explore tab to the search API and add activity feed. 52 53**Depends on:** API: Constellation Integration 54 55- [x] Search service pointing at Twister API 56- [x] Constellation service for star/follower counts 57- [x] Debounced search on Explore tab with segmented results 58- [x] Recent search history (local) 59- [x] Graceful fallback when search API unavailable 60- [x] Activity feed data source investigation (Jetstream vs polling) 61- [x] Activity tab with filters, infinite scroll, pull-to-refresh 62- [x] Home tab: surface recently viewed repos/profiles 63 64## App: Authentication & Social 65 66Bluesky OAuth and authenticated actions. 67 68**Depends on:** App: Search & Discovery (for Constellation service), API: Constellation Integration 69 70- [ ] OAuth setup with `@atcute/oauth-browser-client` 71- [ ] Login page, OAuth flow, callback handling 72- [ ] Capacitor deep link configuration 73- [ ] Session management (restore, refresh, logout, account switcher) 74- [ ] Auth-aware XRPC client using dpopFetch 75- [ ] Star repos (write to PDS, count from Constellation) 76- [ ] Follow users (write to PDS, count from Constellation) 77- [ ] React to content (write to PDS, count from Constellation) 78- [ ] Authenticated profile tab (pinned repos, stats, starred, following) 79- [ ] Personalized feed ("For You" / "Global" toggle) 80 81## App: Write Features 82 83**Depends on:** App: Authentication & Social 84 85- [ ] Create issue (title + markdown body) 86- [ ] Comment on issues and PRs (threaded) 87- [ ] Close/reopen issues 88- [ ] Edit profile (bio, links, avatar, pinned repos) 89- [ ] OAuth scope upgrade flow 90 91## App: Offline & Performance 92 93**Depends on:** App: Search & Discovery (for cache persistence of search/feed data) 94 95- [ ] Dexie setup with database schema (query cache + pinned content tables) 96- [ ] TanStack Query persister backed by Dexie 97- [ ] Pinned content store (save/unsave files for offline reading) 98- [ ] Pinned files UI (list, pin/unpin actions on file viewer, last-fetched timestamp) 99- [ ] Offline detection and banner 100- [ ] Secure token storage (Capacitor Secure Storage) 101- [ ] Cache eviction (per-type limits and TTL, pinned content exempt) 102- [ ] List virtualization for large datasets 103- [ ] Lazy-load avatars, prefetch on hover 104- [ ] Code splitting and bundle optimization (target <500KB JS) 105 106## App: Real-Time & Advanced 107 108**Depends on:** App: Authentication & Social, App: Offline & Performance 109 110- [ ] Jetstream integration for live `sh.tangled.*` events 111- [ ] Live UI indicators (new commits, new feed items, PR status) 112- [ ] Custom feed presets ("My repos", "Watching", "Team") 113- [ ] Repo forking 114- [ ] Labels (display, filter, manage) 115- [ ] Expanded reactions with emoji picker 116- [ ] PR interdiff (compare rounds) 117- [ ] Knot info display 118 119## App: Push Notifications 120 121**Depends on:** App: Authentication & Social 122 123- [ ] Register device token on login 124- [ ] Subscribe to relevant events 125- [ ] Deliver via APNs/FCM 126- [ ] Handle notification taps (deep link to relevant screen)