title: Roadmap updated: 2026-03-26#
API: Search Stabilization#
Highest priority. This work blocks further investment in search quality and broader discovery features.
- Stabilize local development around PostgreSQL, with SQLite kept only as a rollback path
- Document backup, restore, and disk-growth procedures for the experimental local DB
- Research production backend options: PostgreSQL, Turso remote/libSQL, and Turso embedded replicas
- Write a production storage decision record with workload and operational tradeoffs, using
docs/adr/pg.mdanddocs/adr/turso.md - Define the migration path from the experimental local setup to the chosen production backend
- Add a durable read-through indexing job queue for records fetched through the API
- Add API smoke tests for
healthz,readyz,search,documents, indexing, and activity inpackages/scripts/api/- desertthunder.dev DID:
did:plc:xg2vq45muivyy3xwatcehspu - Twisted AT URI:
at://did:plc:xg2vq45muivyy3xwatcehspu/sh.tangled.repo/3mho6hukiei22 - Profile AT URI:
at://did:plc:xg2vq45muivyy3xwatcehspu/sh.tangled.actor.profile/self - Follow AT URI (desertthunder.dev follows npmx):
at://did:plc:xg2vq45muivyy3xwatcehspu/sh.tangled.graph.follow/3mhofstanru22 - Star AT URI (desertthunder.dev stars microcosm-rs):
at://did:plc:lulmyldiq4sb2ikags5sfb25/sh.tangled.repo/3lvsxzinfz222
- desertthunder.dev DID:
Adddirectly invoking the scripts is fine.justtargets for smoke-test runs locally and against a remote base URL- Reuse the existing normalization and upsert path for on-demand indexing jobs
- Trigger indexing jobs from repo, issue, PR, profile, and similar fetch handlers
- Add dedupe, retries, and observability for indexing jobs
- Add a JetStream cache consumer with a persisted timestamp cursor
- Seed the JetStream cursor to
now - 24hon first boot and rewind slightly on reconnect - Store and serve bounded recent activity from the local cache
- Keep Tap as the authoritative indexing and bulk backfill path
- Define a controlled backfill and repo-resync playbook for recovery (
docs/reference/resync.md)
API: Constellation Integration#
Completed on 2026-03-25
API: Keyword Search Quality#
Improve keyword search quality without external dependencies.
Depends on: API: Search Stabilization
- Synonym expansion at query time (e.g. "repo" matches "repository")
- Stemming and parser tuning for PostgreSQL full-text search
- Prefix search support for autocomplete
- Field weight tuning based on real query patterns
- Recency boost for recently updated content
- Star count ranking signal (via Constellation)
- State filtering defaults (exclude closed issues)
- Better snippets with longer context
- Relevance test fixtures
API: Observability#
Depends on: API: Search Stabilization
- Structured metrics: ingestion rate, search latency, embedding throughput
- Dashboard or log-based monitoring
API: Embedding Adapter#
Depends on: API: Search Stabilization
- Add an embedding provider interface in the API
- Add a
llama.cppHTTP adapter targetingllama-embeddings - Add PostgreSQL embedding schema and jobs using
pgvector - Define source-code chunking and repo re-embed triggers
- Add
embedandreembedoperational commands - Add queue-depth, latency, and throughput metrics for embeddings
- Keep semantic or hybrid retrieval behind a non-default search mode
App: Search & Discovery#
Wire the Explore tab to the search API and add activity feed.
Depends on: API: Constellation Integration
- Search service pointing at Twister API
- Constellation service for star/follower counts
- Debounced search on Explore tab with segmented results
- Recent search history (local)
- Graceful fallback when search API unavailable
- Activity feed data source investigation (Jetstream vs polling)
- Activity tab with filters, infinite scroll, pull-to-refresh
- Home tab: surface recently viewed repos/profiles
App: Authentication & Social#
Bluesky OAuth and authenticated actions.
Depends on: App: Search & Discovery (for Constellation service), API: Constellation Integration
- OAuth setup with
@atcute/oauth-browser-client - Login page, OAuth flow, callback handling
- Capacitor deep link configuration
- Session management (restore, refresh, logout, account switcher)
- Auth-aware XRPC client using dpopFetch
- Star repos (write to PDS, count from Constellation)
- Follow users (write to PDS, count from Constellation)
- React to content (write to PDS, count from Constellation)
- Authenticated profile tab (pinned repos, stats, starred, following)
- Personalized feed ("For You" / "Global" toggle)
App: Write Features#
Depends on: App: Authentication & Social
- Create issue (title + markdown body)
- Comment on issues and PRs (threaded)
- Close/reopen issues
- Edit profile (bio, links, avatar, pinned repos)
- OAuth scope upgrade flow
App: Offline & Performance#
Depends on: App: Search & Discovery (for cache persistence of search/feed data)
- IndexedDB-backed local cache and bookmark storage for first release
- Migrate offline cache and saved-content storage from IndexedDB to SQLite
- TanStack Query persister backed by SQLite or equivalent app-managed store
- Pinned content store (save/unsave files for offline reading)
- Pinned files UI (list, pin/unpin actions on file viewer, last-fetched timestamp)
- Offline detection and banner
- Migrate auth/session data to Ionic secure storage
- Cache eviction (per-type limits and TTL, pinned content exempt)
- List virtualization for large datasets
- Lazy-load avatars, prefetch on hover
- Code splitting and bundle optimization (target <500KB JS)
App: Real-Time & Advanced#
Depends on: App: Authentication & Social, App: Offline & Performance
- Jetstream integration for live
sh.tangled.*events - Live UI indicators (new commits, new feed items, PR status)
- Custom feed presets ("My repos", "Watching", "Team")
- Repo forking
- Labels (display, filter, manage)
- Expanded reactions with emoji picker
- PR interdiff (compare rounds)
- Knot info display
App: Push Notifications#
Depends on: App: Authentication & Social
- Register device token on login
- Subscribe to relevant events
- Deliver via APNs/FCM
- Handle notification taps (deep link to relevant screen)