171 lines
5.9 KiB
Markdown
171 lines
5.9 KiB
Markdown
# 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
|