diff --git a/.planning/REQUIREMENTS.md b/.planning/REQUIREMENTS.md index b9bd193f..65ef6579 100644 --- a/.planning/REQUIREMENTS.md +++ b/.planning/REQUIREMENTS.md @@ -25,6 +25,9 @@ declared exit criteria (multinode pass + workstreams B/C/F), `.planning/codebase - [ ] **UIFIX-01**: The FIPS/Tor pills on cloud files are kept (never removed by cleanups) and render at mobile widths — on mobile, users can see each file's security/transport state (BLOCKER) - [ ] **UIFIX-02**: The connected-nodes list scrolls at row-matched height — its height tracks the taller right-hand sibling in the row and the inner list scrolls within it, never growing to fit all rows scroll-free (BLOCKER) - [ ] **UIFIX-03**: On short viewports the onboarding confirmation tickbox is discoverably visible — an on-brand affordance (scroll cue, sticky footer, or equivalent) makes it obvious without altering tall-screen appearance (BLOCKER) +- [ ] **UIFIX-04**: Paid Files pictures open in the app's lightbox, not a browser tab — consistent with the rest of the app's media UX +- [ ] **UIFIX-05**: Entering picture-in-picture on a video closes the lightbox with a fluid on-brand animation +- [ ] **UIFIX-06**: Surfaces with genuinely slow opens show house-style loader states — no dead-feeling clicks (cached revisits stay spinner-free per PERF-02) ### UI Performance (PERF) @@ -111,6 +114,9 @@ Which phases cover which requirements. Updated during roadmap creation. | UIFIX-01 | Phase 1 | Pending | | UIFIX-02 | Phase 1 | Pending | | UIFIX-03 | Phase 1 | Pending | +| UIFIX-04 | Phase 1 | Pending | +| UIFIX-05 | Phase 1 | Pending | +| UIFIX-06 | Phase 1 | Pending | | PERF-01 | Phase 2 | Complete | | PERF-02 | Phase 2 | Complete (02-02 tracer + 02-04..02-07 extended KeepAlive/cache to every main tab, each dev-preview-verified against archi-dev-box per D-11) | | PERF-03 | Phase 2 | Pending | diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index 22478457..931f4f66 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -35,7 +35,7 @@ signed/decentralized registry and a user installs it on their node. **Goal**: Federation and mesh are tight — a structured review of the fleet/federation and mesh code feeds fixes so node removal sticks, sync converges, and mesh messaging (including attachments) behaves identically everywhere it runs **Depends on**: Nothing (first phase) -**Requirements**: FED-01, FED-02, FED-03, FED-04, FED-05, FED-06, FED-07, UIFIX-01, UIFIX-02, UIFIX-03 +**Requirements**: FED-01, FED-02, FED-03, FED-04, FED-05, FED-06, FED-07, UIFIX-01, UIFIX-02, UIFIX-03, UIFIX-04, UIFIX-05, UIFIX-06 **Success Criteria** (what must be TRUE): 1. A structured code review of the federation/fleet area (`core/archipelago/src/federation`, node sync, FIPS/transport dial layer) and the mesh area (`core/archipelago/src/mesh`, mesh RPC surface) produces a findings list, and every finding is fixed or explicitly deferred with a reason @@ -48,7 +48,10 @@ signed/decentralized registry and a user installs it on their node. 8. The FIPS/Tor pills on cloud files are kept and visible at mobile widths (UIFIX-01, BLOCKER, added 2026-07-30 — see `.planning/todos/pending/2026-07-30-keep-fips-tor-pills-on-cloud-files-and-show-them-on-mobile.md`) 9. The connected-nodes list scrolls at row-matched height instead of growing to fit (UIFIX-02, BLOCKER, added 2026-07-30 — see `.planning/todos/pending/2026-07-30-connected-nodes-list-must-scroll-at-row-matched-height.md`) 10. The onboarding tickbox is discoverably visible on short viewports via an on-brand affordance (UIFIX-03, BLOCKER, added 2026-07-30 — see `.planning/todos/pending/2026-07-30-onboarding-tickbox-hidden-below-fold-on-short-screens.md`) - NOTE for criteria 7–10: all four were added after phase 1's 10 plans were written — before phase 1 execution completes, create gap plan(s) covering FED-07 + UIFIX-01/02/03 (desktop visuals must remain untouched per the standing visual-invisibility rule) + 11. Paid Files pictures open in the app lightbox, not a browser tab (UIFIX-04, added 2026-07-30 — see `.planning/todos/pending/2026-07-30-peer-files-pictures-open-in-tab-not-lightbox.md`) + 12. Picture-in-picture closes the lightbox with a fluid on-brand animation (UIFIX-05, added 2026-07-30 — see `.planning/todos/pending/2026-07-30-pip-should-close-lightbox-with-fluid-animation.md`) + 13. Genuinely slow opens show loader states (UIFIX-06, added 2026-07-30 — see `.planning/todos/pending/2026-07-30-missing-loader-states-on-slow-opens.md`; 02-08's flagged timing regressions are the starting inventory) + NOTE for criteria 7–13: all were added after phase 1's 10 plans were written — before phase 1 execution completes, create gap plan(s) covering FED-07 + UIFIX-01..06 (existing desktop visuals must remain untouched per the standing visual-invisibility rule; UIFIX items themselves are user-approved visual changes) **Plans**: 10 plans diff --git a/.planning/STATE.md b/.planning/STATE.md index 42bd9292..b00e369a 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -110,6 +110,9 @@ Decisions are logged in PROJECT.md (10 locked ADRs in the `` block + - [blocker/security] Fedimint gateway must not install with a pre-set password — tracked as FED-07 / Phase 1 gap plan (`.planning/todos/pending/2026-07-30-fedimint-gateway-must-not-install-with-preset-password.md`) - [blocker/ui] Connected-nodes list must scroll at row-matched height, not grow to fit (`.planning/todos/pending/2026-07-30-connected-nodes-list-must-scroll-at-row-matched-height.md`) - [blocker/ui] Onboarding tickbox hidden below fold on short screens — make it beautifully obvious (`.planning/todos/pending/2026-07-30-onboarding-tickbox-hidden-below-fold-on-short-screens.md`) +- [major/ui] Paid Files pictures open in browser tab, not the app lightbox — UIFIX-04 (`.planning/todos/pending/2026-07-30-peer-files-pictures-open-in-tab-not-lightbox.md`) +- [major/ui] PiP should close the lightbox with a fluid animation — UIFIX-05 (`.planning/todos/pending/2026-07-30-pip-should-close-lightbox-with-fluid-animation.md`) +- [major/ui] Missing loader states on slow opens — UIFIX-06 (`.planning/todos/pending/2026-07-30-missing-loader-states-on-slow-opens.md`) ### Blockers/Concerns diff --git a/.planning/todos/pending/2026-07-30-missing-loader-states-on-slow-opens.md b/.planning/todos/pending/2026-07-30-missing-loader-states-on-slow-opens.md new file mode 100644 index 00000000..04171c26 --- /dev/null +++ b/.planning/todos/pending/2026-07-30-missing-loader-states-on-slow-opens.md @@ -0,0 +1,16 @@ +--- +created: 2026-07-30T22:19:31.770Z +title: Add loader states to surfaces that take time to open +area: ui +severity: major +files: + - neode-ui/src/views (inventory needed — which opens are slow with no loading affordance) +--- + +## Problem + +Dorian (2026-07-30): "some stuff doesn't have loader states when it's gonna take time to open" — certain screens/actions with genuinely slow opens give no loading feedback, so the UI feels dead/broken while working. + +## Solution + +Inventory slow-open surfaces (02-08's PERF-AFTER timings + the flagged timing regressions are a starting list: Discover, Server, Web5, Fleet, AppDetails, OpenWrtGateway); add house-style skeletons/spinners where an open can exceed ~300ms, consistent with the phase 2 rule that cached revisits show no spinner (loaders only where genuinely uncached/slow, e.g. first visits and secondary screens). Tracked as UIFIX-06 (phase 1). Await 02-08's classification for pointers. diff --git a/.planning/todos/pending/2026-07-30-peer-files-pictures-open-in-tab-not-lightbox.md b/.planning/todos/pending/2026-07-30-peer-files-pictures-open-in-tab-not-lightbox.md new file mode 100644 index 00000000..a7ad0aeb --- /dev/null +++ b/.planning/todos/pending/2026-07-30-peer-files-pictures-open-in-tab-not-lightbox.md @@ -0,0 +1,16 @@ +--- +created: 2026-07-30T22:19:31.770Z +title: Paid Files pictures open in a browser tab instead of the app lightbox +area: ui +severity: major +files: + - neode-ui/src/views/Cloud.vue (Paid Files sub-tab — locate the picture click handler) +--- + +## Problem + +Dorian (2026-07-30, on archi-dev-box; initially said "peer files", corrected to **Paid Files**): in the Cloud tab's Paid Files section, clicking a picture opens it in a new browser tab rather than the in-app lightbox that exists elsewhere ("the lightbox we've made"). Inconsistent media UX. + +## Solution + +Route Paid Files image clicks through the existing lightbox component (find where other Cloud/media surfaces invoke it and reuse — likely the same lightbox used by My Files). Tracked as UIFIX-04 (phase 1). Await 02-08's classification report for exact file/line pointers. diff --git a/.planning/todos/pending/2026-07-30-pip-should-close-lightbox-with-fluid-animation.md b/.planning/todos/pending/2026-07-30-pip-should-close-lightbox-with-fluid-animation.md new file mode 100644 index 00000000..77b8ef13 --- /dev/null +++ b/.planning/todos/pending/2026-07-30-pip-should-close-lightbox-with-fluid-animation.md @@ -0,0 +1,16 @@ +--- +created: 2026-07-30T22:19:31.770Z +title: Picture-in-picture should close the lightbox with a fluid animation +area: ui +severity: major +files: + - neode-ui/src (lightbox/video player components — locate exact files) +--- + +## Problem + +Dorian (2026-07-30): entering picture-in-picture on a video does not close the lightbox — the lightbox stays open behind/around the PiP window. The handoff should close the lightbox with a fluid animation (lightbox shrinks/hands off into the PiP window rather than abruptly). + +## Solution + +Listen for the PiP enter event on the video element; animate the lightbox closed (house-style transition) as PiP begins. Tracked as UIFIX-05 (phase 1). Await 02-08's classification report for exact file/line pointers.