Archipelago — open-source initial import
This commit is contained in:
@@ -0,0 +1,170 @@
|
||||
# Phase 2: UI Performance - Discussion Log
|
||||
|
||||
> **Audit trail only.** Do not use as input to planning, research, or execution agents.
|
||||
> Decisions are captured in CONTEXT.md — this log preserves the alternatives considered.
|
||||
|
||||
**Date:** 2026-07-30
|
||||
**Phase:** 2-ui-performance
|
||||
**Areas discussed:** Caching approach, Refresh/staleness UX, Profiling targets, Fix scope: backend RPC
|
||||
|
||||
---
|
||||
|
||||
## Caching approach
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| KeepAlive + SWR | KeepAlive for main tabs AND useCachedResource for data | ✓ |
|
||||
| SWR only | Extend useCachedResource, keep full remounts | |
|
||||
| KeepAlive only | Instances alive, ad-hoc data refresh | |
|
||||
|
||||
**User's choice:** KeepAlive + SWR (recommended)
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| Profiling decides | Convert only surfaces PERF-01 names as slow | ✓ |
|
||||
| All main tabs | Blanket conversion | |
|
||||
|
||||
**User's choice:** Profiling decides (recommended)
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| Keep alive, cap count | Include heavy views (Mesh D3+Leaflet), KeepAlive max cap | ✓ |
|
||||
| Exclude heavy views | Only lightweight tabs kept alive | |
|
||||
| You decide | Per-view by measurement | |
|
||||
|
||||
**User's choice:** Keep alive, cap count (recommended)
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| SWR, no KeepAlive | Per-item cache keys, no instance cache | ✓ |
|
||||
| Same as main tabs | KeepAlive + SWR for secondary screens too | |
|
||||
| You decide | Per screen by cardinality | |
|
||||
|
||||
**User's choice:** SWR, no KeepAlive for secondary screens (recommended)
|
||||
|
||||
---
|
||||
|
||||
## Refresh/staleness UX
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| Invisible | Content updates in place, no indicator | |
|
||||
| Subtle indicator | Small spinner/shimmer while refreshing | ✓ |
|
||||
| Stale-age badges | Show data age via isStale/ageMs | |
|
||||
|
||||
**User's choice:** Subtle indicator (declined the "Invisible" recommendation)
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| 30s, per-view tuning | Hook default; Claude tunes per view | ✓ |
|
||||
| Short (10s) everywhere | Fresher, more RPC chatter | |
|
||||
| Long (60s+) everywhere | Minimal chatter | |
|
||||
|
||||
**User's choice:** 30s with per-view tuning (recommended)
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| Silent keep-last | Keep cached data, retry on focus/TTL | ✓ |
|
||||
| Toast on failure | Surface every background failure | |
|
||||
|
||||
**User's choice:** Silent keep-last (recommended)
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| Yes, except large payloads | sessionStorage persist, skip big lists | ✓ |
|
||||
| Memory only | Cold start on every reload | |
|
||||
|
||||
**User's choice:** Persist except large payloads (recommended)
|
||||
|
||||
---
|
||||
|
||||
## Profiling targets
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| Apps tab + AppDetails | App browser + detail/log screens | ✓ |
|
||||
| Mesh tab | Map, contacts, messages | ✓ |
|
||||
| Wallet tab + send flows | Balances, send/receive | ✓ |
|
||||
| Cloud/Files + Server | File browser, node status/settings | ✓ |
|
||||
|
||||
**User's choice:** All four, plus free-text additions: "network and web 5 and cloud and often app store"
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| .228 | Designated gate/test node | |
|
||||
| .198 dev pair | Other dev-pair node | |
|
||||
| Whichever node showed it | User names the node | |
|
||||
|
||||
**User's choice:** Free-text: **archi-dev-box**
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| Committed findings doc | Profiling report in phase dir before fixes | ✓ |
|
||||
| Findings in plans only | No standalone report | |
|
||||
|
||||
**User's choice:** Committed findings doc (recommended)
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| No visible spinner on revisit | Subjective-but-crisp pass bar | ✓ |
|
||||
| Numeric budgets | ms budgets measured on-device | |
|
||||
|
||||
**User's choice:** No visible spinner on revisit (recommended)
|
||||
|
||||
---
|
||||
|
||||
## Fix scope: backend RPC
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| Additive changes only | New aggregate/batch endpoints ok; no refactors/orchestrator | ✓ |
|
||||
| Frontend only | Backend untouched | |
|
||||
| Whatever profiling justifies | Any backend change, gate re-runs as needed | |
|
||||
|
||||
**User's choice:** Additive changes only (recommended)
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| Parallelize + dedup | Promise.all + rpc-client dedup | ✓ |
|
||||
| Aggregate endpoints | Combined-payload RPCs for 3+ call screens | |
|
||||
| You decide per view | Per-screen by measurement | |
|
||||
|
||||
**User's choice:** Parallelize + dedup (recommended)
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| Dev pair only, no OTA | Verify on dev nodes; fleet rollout via release train | ✓ |
|
||||
| OTA when verified | Fleet OTA as part of this phase | |
|
||||
|
||||
**User's choice:** Dev pair only (recommended)
|
||||
|
||||
---
|
||||
|
||||
## Scope routing (freeform input)
|
||||
|
||||
During area selection the user requested a large AIUI/IndeeHub scope expansion. Routed via
|
||||
a follow-up question:
|
||||
|
||||
| Option | Description | Selected |
|
||||
|--------|-------------|----------|
|
||||
| New phase, discuss next | Add roadmap phase + full discuss-phase | |
|
||||
| Backlog only for now | Keep in Deferred Ideas | |
|
||||
| Fold the small UX fixes into Phase 2 | Chat-expanded + mobile-starts-on-chat ride along; big work deferred | ✓ |
|
||||
|
||||
**Notes:** The two UX defaults became D-14 in CONTEXT.md. All other AIUI/IndeeHub items
|
||||
recorded verbatim in Deferred Ideas.
|
||||
|
||||
## Claude's Discretion
|
||||
|
||||
- Per-view TTL values
|
||||
- KeepAlive max cap / eviction tuning
|
||||
- Parallelization vs aggregate endpoint per screen (within additive-only bound)
|
||||
- Refresh indicator placement/styling
|
||||
|
||||
## Deferred Ideas
|
||||
|
||||
- AIUI permissioned node access (Pine-parity command surface, no data leaks)
|
||||
- AIUI content deep-dive ("make it perfect")
|
||||
- AIUI peer videos and files
|
||||
- IndeeHub cross-node content source with payments (films, music, everything)
|
||||
- AIUI Nostr integration polish
|
||||
Reference in New Issue
Block a user