a love letter to tangled (android, iOS, and a search API)
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)