-
Notifications
You must be signed in to change notification settings - Fork 0
ThinAppViewCore
Shared Swift package for the Thin AppView read index — used by services/appview (read routes, sidebar projection) and Charybdis at services/appview-worker (Jetstream ingestion and durable-inbox projection, RSS polling, proactive backfill).
Package: packages/swift/ThinAppViewCore
Architecture: Thin-AppView
| Component | Role |
|---|---|
ThinAppViewIndexer |
Map firehose/repo commits → IndexedContentItem
|
RenderFieldExtractor |
Extract list-row fields from standard.site records |
AppViewProjectionCacheStore |
Stale-first sidebar/unread/first-page snapshots, with SQLite, Postgres, or Redis implementations |
SQLiteThinAppViewStore / PostgresThinAppViewStore
|
Equivalent index stores; hosted services use Postgres, while SQLite remains useful in package tests |
ThinAppViewWorkerRuntime |
Jetstream ingestion and durable-inbox projection, Skyreader RSS polling, proactive PDS backfill, and TTL cleanup |
FirehoseSubscriber |
Jetstream WebSocket relay consumer and cursor recovery |
RssFeedIdentity / RSS ingest helpers |
Normalize feed/article identities and avoid duplicate rows across polls |
The package also owns unread filtering, publication-scope aliases, materialized counter updates, viewer-feed membership, historical Tap recovery state, and cache invalidation. Redis remains an optional disposable side-cache; durable index and recovery state stays in Postgres. See Redis for the current hosted selection and Development-first change discipline.
cd packages/swift/ThinAppViewCore
swift testRuns explicitly in the CI charybdis job. Redis client behavior is tested
separately in packages/swift/SocialWireRedis, including a live Redis service in
CI.
- Service-API — HTTP surfaces on gateway + appview
- Database — durable and rebuildable table ownership
- Redis — optional cache and coordination layer
- Web-app / Apple-client — client flags
- Charybdis test plan