---
id: TASK-118.4
title: Add multiplayer sync to rwallet (shared treasury view)
status: Done
assignee: []
created_date: '2026-03-16 00:05'
updated_date: '2026-03-16 00:50'
labels:
  - multiplayer
  - tier-2
milestone: Multiplayer Everything
dependencies: []
parent_task_id: TASK-118
priority: medium
---

## Description

<!-- SECTION:DESCRIPTION:BEGIN -->
rwallet currently renders client-side-only wallet data from Safe Global API. Add Automerge sync for shared watchlists and treasury annotations.

## New files:
- `modules/rwallet/schemas.ts` — WalletDoc with watchedAddresses, annotations, dashboardConfig
- `modules/rwallet/local-first-client.ts` — CRUD: addWatchAddress, setAnnotation, updateConfig

## Schema:
```
WalletDoc {
  meta: { module: 'wallet', collection: 'treasury', version: 1 }
  watchedAddresses: Record<string, { address, chain, label, addedBy, addedAt }>
  annotations: Record<string, { txHash, note, authorDid, createdAt }>
  dashboardConfig: { defaultChain, displayCurrency, layout }
}
```

## Component updates (`folk-wallet-viewer.ts`):
- Shared watchlist syncs across space members
- Transaction annotations visible to all
- Dashboard layout preferences synced
<!-- SECTION:DESCRIPTION:END -->

## Acceptance Criteria
<!-- AC:BEGIN -->
- [ ] #1 Watched wallet addresses sync across space members
- [ ] #2 Transaction annotations visible to all space members
- [ ] #3 Dashboard config shared (chain, currency, layout)
- [ ] #4 Demo mode works with local-only state
<!-- AC:END -->

## Implementation Notes

<!-- SECTION:NOTES:BEGIN -->
schemas.ts + local-first-client.ts created
<!-- SECTION:NOTES:END -->
