42 lines
4.2 KiB
JSON
42 lines
4.2 KiB
JSON
{
|
|
"phase": "2",
|
|
"phase_name": "UI Performance",
|
|
"timestamp": "2026-07-30T00:00:00Z",
|
|
"areas_completed": ["Caching approach", "Refresh/staleness UX", "Profiling targets", "Fix scope: backend RPC"],
|
|
"areas_remaining": [],
|
|
"decisions": {
|
|
"Caching approach": [
|
|
{"question": "How should main tabs stay warm across switches?", "answer": "KeepAlive + SWR", "options_presented": ["KeepAlive + SWR (Recommended)", "SWR only", "KeepAlive only"]},
|
|
{"question": "Which views get converted this phase?", "answer": "Profiling decides", "options_presented": ["Profiling decides (Recommended)", "All main tabs"]},
|
|
{"question": "Keep heavy views (Mesh D3+Leaflet) alive?", "answer": "Keep alive, cap KeepAlive max instances", "options_presented": ["Keep alive, cap count (Recommended)", "Exclude heavy views", "You decide"]},
|
|
{"question": "Secondary screens treatment?", "answer": "SWR keyed per item, no KeepAlive", "options_presented": ["SWR, no KeepAlive (Recommended)", "Same as main tabs", "You decide"]}
|
|
],
|
|
"Refresh/staleness UX": [
|
|
{"question": "How visible should background refresh be on a cached tab?", "answer": "Subtle indicator (small spinner/shimmer while loadState === 'refreshing')", "options_presented": ["Invisible (Recommended)", "Subtle indicator", "Stale-age badges"]},
|
|
{"question": "Default staleness TTL?", "answer": "30s default, per-view tuning at Claude's discretion", "options_presented": ["30s, per-view tuning (Recommended)", "Short (10s) everywhere", "Long (60s+) everywhere"]},
|
|
{"question": "Background refresh failure behavior?", "answer": "Silent keep-last; retry on next focus/TTL", "options_presented": ["Silent keep-last (Recommended)", "Toast on failure"]},
|
|
{"question": "sessionStorage persistence?", "answer": "Yes, except large payloads", "options_presented": ["Yes, except large payloads (Recommended)", "Memory only"]}
|
|
],
|
|
"Profiling targets": [
|
|
{"question": "Which surfaces feel slowest?", "answer": "All offered: Apps tab + AppDetails, Mesh, Wallet + send flows, Cloud/Files + Server; user added: Network, Web5, and 'often app store'", "options_presented": ["Apps tab + AppDetails", "Mesh tab", "Wallet tab + send flows", "Cloud/Files + Server"]},
|
|
{"question": "Which real hardware verifies fixes?", "answer": "archi-dev-box (user-specified)", "options_presented": [".228 (Recommended)", ".198 dev pair", "Whichever node showed it"]},
|
|
{"question": "PERF-01 profiling evidence?", "answer": "Committed findings doc in phase dir (surface -> measured cause -> intended fix)", "options_presented": ["Committed findings doc (Recommended)", "Findings in plans only"]},
|
|
{"question": "Pass bar on-device?", "answer": "No visible spinner on revisit (subjective-but-crisp)", "options_presented": ["No visible spinner on revisit (Recommended)", "Numeric budgets"]}
|
|
],
|
|
"Fix scope: backend RPC": [
|
|
{"question": "May this phase touch core/ RPC handlers?", "answer": "Additive changes only — new aggregate/batch endpoints and cheap response-shaping; no refactors of existing handlers or orchestrator", "options_presented": ["Additive changes only (Recommended)", "Frontend only", "Whatever profiling justifies"]},
|
|
{"question": "Client-side waterfall fix pattern?", "answer": "Parallelize (Promise.all) + rpc-client dedup", "options_presented": ["Parallelize + dedup (Recommended)", "Aggregate endpoints", "You decide per view"]},
|
|
{"question": "Deploy discipline?", "answer": "Dev pair only, no OTA this phase", "options_presented": ["Dev pair only, no OTA (Recommended)", "OTA when verified"]}
|
|
]
|
|
},
|
|
"deferred_ideas": [
|
|
"AIUI: permissioned node access — AI assistant talks to the node safely when permissioned, without leaking data, using the same command surface as Pine and everything else enableable in settings",
|
|
"AIUI: chat starts expanded; on mobile it must start on chat, not context (current start-on-context is wrong)",
|
|
"AIUI: deep dive into the content it finds and serves — make it perfect",
|
|
"AIUI: show peer videos and files",
|
|
"IndeeHub cross-node content source: nodes serve uploaded films/music/files to every IndeeHub install (an 'archipelago content source'), with payments",
|
|
"Nostr integration in AIUI made more beautiful"
|
|
],
|
|
"canonical_refs": []
|
|
}
|