Skip to content

Extension seams

The MVP is local only. These are the places a hosted backend would attach. None of them is implemented.

Seam Today Where
Content store LocalStore over IndexedDB ContentStore in packages/store/src/types.ts
Bundle codec Shared zip reader and writer. Its doc comment says it is shared by LocalStore and a remote store BundleCodec
Store mode storeMode is local or remote, and storage.managed can pin it. The popup shows a Remote badge and "Not signed in" for remote. No remote store exists behind it apps/extension/lib/settings.ts
Authentication auth.status always returns signed in with two fixed roles apps/extension/lib/background.ts
Telemetry events.push accepts up to 100 guidance events per call and discards them apps/extension/lib/background.ts
Manifest refresh A 5-minute alarm is created on install; nothing listens for it apps/extension/lib/background.ts
identity permission Declared; no code uses it manifest
Roles and segments In the schema; not evaluated packages/schema

What a remote store would need

  1. Implement ContentStore (fourteen methods) against an API.
  2. Honour storeMode: remote where the store is chosen.
  3. Replace the fixed auth.status response with a real session.
  4. Add a handler for the alarm, or remove the alarm.
  5. Decide what events.push sends and where.
  6. Revisit permissions and the privacy policy. Both state that nothing is transmitted.

Gotchas

  • The alarms and identity permissions are declared ahead of use. A store reviewer may ask why; see store readiness.
  • ConflictError and the etag exist because a shared store has concurrent editors. A single local user rarely hits them.