Skip to content

Polish app UX and recover project browsing from service outages - #977

Open
Zazawowow wants to merge 11 commits into
mainfrom
further-ux-polish
Open

Zazawowow wants to merge 11 commits into
mainfrom
further-ux-polish

Conversation

@Zazawowow

Copy link
Copy Markdown
Collaborator

Improves desktop/mobile UX and keeps project browsing usable during service outages. Indexer reads retry verified fallback servers, relay discovery retries after connection failures, and project loading distinguishes empty results from errors while retaining cached projects.

  • Virtualize project rows; standardize typography and semantic colours; add keyboard focus, Escape navigation, accessible labels, and truncated-text tooltips.
  • Correct notification severity and improve password visibility and seed-backup guidance.
  • Add regression coverage for layout, virtualization, project recovery, colour tokens, and indexer failover; support Linux development setup.
  • Fix two issues found during pre-PR validation: a missed claim-error colour token and insufficient wallet funds waiting on project/relay lookups before reporting an error.

Validation:

  • SDK: 351 passed, 14 existing skips; shared: 170 passed on .NET 8; CLI: 20 passed.
  • Layout/regression suite: all 197 passed, including the colour-token guard, responsiveness, virtualization, and recovery tests.
  • Additional UI integration checks: 18 passed initially; the remaining wallet/payment test passed unchanged after the insufficient-funds fix. Local log-export/NIP44/fee checks: 10 passed, 5 existing container-dependent skips.
  • Settings end-to-end test passed on an isolated X display.
  • Desktop Debug/Release builds, self-contained Linux x64 publish, and Android Release build passed. No Android device was connected.
  • Shell syntax and diff whitespace checks passed (allowing the repository's CRLF line endings).

Validation limitations:

  • CreateProject, MultiFund, and MultiInvest end-to-end flows reached deployment but could not publish profiles to the configured Nostr relays (30-second publication timeouts). MultiFund was reproduced on the isolated display. Full transaction-flow validation remains outstanding.
  • The retired src/avalonia/AngorApp.Tests suite cannot restore: its .NET 9 projects reference .NET 10 SDK/document projects (NU1201). The same framework mismatch exists on main; retired app code is unchanged.
  • BigFund/BigInvest and infrastructure-dependent OneClickInvest Lightning/OnChain scenarios were excluded per repository guidance. An initial broad integration run was stopped after stalling; narrower regression runs supplied the results above.

Full local logs, including initial failures and diagnostic stacks, are retained in /tmp/angor-pr-validation/. No test assertions were relaxed.

…raphy migration, password reveal, seed UX

- Fix: failure toasts (claim/release/wallet create/import/settings/funders/edit-profile)
  no longer render as green success toasts — ToastRequested now carries ToastSeverity
  end-to-end; all failure call sites pass ToastSeverity.Error
- Keyboard: global :focus-visible ring (V2 theme replaced Fluent templates so none existed);
  Escape closes shell modals / steps back (reuses TryHandlePlatformBack) at shell root,
  plus Settings network/wipe modals; accessible names on icon-only shell buttons
- Tokens: danger/warning/Bitcoin accent literal hexes migrated to semantic brushes
  (DangerBrush, DangerBrightBrush, DangerSoftBrush, WarningBrush, WarningBrightBrush,
  WarningSoftBrush, BitcoinAccentBrush)
- Typography: 938 TextBlock FontSize attributes migrated to Typography classes
  (Size-XXS..XXL + interim exact-pixel Size-10..80 gap steps); XMl validated pre-write
- Tooltips: truncated bound TextBlocks now show the full value on hover (31 sites)
- Passwords: eye reveal toggles on PrivateKeysPasswordModal + claim/release password
  fields; plaintext-download warning + live seed word-count hint in CreateWalletModal
- Dead code: remove InvestPageViewModel.SubmitOpacity (real CanSubmit/IsEnabled is used)
… guard

- Project grid now row-chunks (ProjectRowViewModel) and renders via
  VirtualizingStackPanel + UniformRowPanel: only visible rows materialize and
  recycle instead of inflating every ProjectCard in a non-virtualizing
  ResponsiveGrid. View reports width-driven column count to the VM which
  re-chunks rows synchronously (keeps headless tests deterministic).
- ProjectListVirtualizationTests: chunk order/count invariants + rendered
  proof that long lists only realize viewport rows (+overscan).
- HexLiteralGuardTests: first source-scan test — fails if the seven migrated
  danger/warning/Bitcoin hexes reappear as literals in UI/{Sections,Shell,Shared}.
- ResponsiveGrid unchanged for the bounded grids (MyProjects, Portfolio).

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant