Repository navigation
Add a dedicated top-level Memory Sync settings page consolidating all sync sources, status and settings #3301
Description
Summary
Add a dedicated, top-level Memory Sync page in Settings that is the single, focused home for everything about memory syncing: every connected source/integration listed with its last-synced time, how much is synced, whether it's syncing now, per-source settings, and the opt-in toggle. The existing controls on the Intelligence page stay as a secondary entry point.
Problem
Memory-sync controls today live on the Intelligence page (/intelligence → memory tab, MemoryWorkspace) and in a buried Settings panel: MemoryDataPanel at /settings/memory-data, reachable only via Advanced → Developer Options, which renders the entire MemoryWorkspace (status tiles + sources registry + the memory graph). There's no clean, prominent place a user can go to manage "what syncs, how much, how fresh, and is it running right now." Sync configuration, status, and opt-in are scattered and hard to find.
We want one prominent Settings → Memory Sync page that consolidates this, while leaving the Intelligence-page controls in place too.
Solution (scope: app, mostly reuse)
- New top-level Settings entry — add a prominent "Memory Sync" item to the Settings home (General area), with a new route (e.g.
/settings/memory-sync). Retire/redirect the buried Advanced → Memory Data panel to this new page.- Wire-up follows the existing pattern: nav item in
app/src/components/settings/SettingsHome.tsx(id/title/description/icon/route), route inapp/src/pages/Settings.tsx(wrapSettingsPage(<MemorySyncPanel />)), and a'memory-sync'entry + breadcrumb inapp/src/components/settings/hooks/useSettingsNavigation.ts(SettingsRouteunion).
- Wire-up follows the existing pattern: nav item in
- New panel
MemorySyncPanel.tsx(app/src/components/settings/panels/) — reuse the already-portableMemorySourcesRegistryandMemoryTreeStatusPanel(both used today inMemoryDataPanel). Compose them into a sync-focused layout without the force-directed graph (that stays on Intelligence). Surface per source:- opt-in toggle (enable/disable sync)
- last synced (relative time) + freshness pill
- how much is synced (chunk counts) and pending
- is syncing now state with live progress
- per-source settings (limits — see Default memory sync sources to on with conservative limits, add per-source settings and an "All In" option #3293) accessible inline
- Intelligence page unchanged — keep its existing memory-sync controls as a secondary entry point; add a link from Intelligence to the new Settings page.
- i18n — all new strings via
useT()inen.tsplus real translations in every locale file (settings.memorySync.*, reuse existingmemoryTree.*/memorySources.*keys where possible).
Acceptance criteria
- Top-level entry — a "Memory Sync" item appears prominently in Settings (not buried under Advanced) and routes to a dedicated page; the old
/settings/memory-datapath redirects there. - Source list with details — the page lists every connected source/integration with opt-in toggle, last-synced time, amount synced (chunks), pending count, and a live "syncing now" indicator.
- Per-source settings inline — per-source sync settings/limits are viewable and editable from this page (builds on Default memory sync sources to on with conservative limits, add per-source settings and an "All In" option #3293).
- Opt-in from one place — a user can enable/disable any source's sync entirely from this page.
- Intelligence preserved — existing Intelligence-page sync controls remain functional; a link to the new Settings page is present.
- i18n — all new strings go through
useT()and exist in every locale with real translations (pnpm i18n:check+pnpm i18n:english:checkpass). - Diff coverage ≥ 80% — the implementing PR meets the changed-lines coverage gate.
Related
- Settings wiring:
app/src/pages/Settings.tsx,app/src/components/settings/SettingsHome.tsx,SettingsSectionPage.tsx,hooks/useSettingsNavigation.ts - Existing (buried) panel:
app/src/components/settings/panels/MemoryDataPanel.tsx - Reused components:
app/src/components/intelligence/MemorySourcesRegistry.tsx,MemoryTreeStatusPanel.tsx,MemoryWorkspace.tsx - Builds on Default memory sync sources to on with conservative limits, add per-source settings and an "All In" option #3293 (per-source settings + All In). Sync-status accuracy depends on Per-source memory sync indicators and live syncing/synced counters are unreliable #3295. Pairs with the configurable sync-interval issue (filed separately).
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsDone
Activity
feat(settings): add top-level Data Sync page in Account (tinyhumansai…
graycyrus commentedon Jun 11, 2026
this is done