Skip to content

UI polish, Android relaunch crash fix, and parallel investment scanning - #949

Merged
dangershony merged 2 commits into
mainfrom
ui-polish-and-scan-perf
Jul 24, 2026
Merged

UI polish, Android relaunch crash fix, and parallel investment scanning#949
dangershony merged 2 commits into
mainfrom
ui-polish-and-scan-perf

Conversation

@Zazawowow

Copy link
Copy Markdown
Collaborator

Summary

Android

  • Adaptive launcher icon: mipmap-based icon with monochrome foreground and Angor green (#5FAF78) background, plus round icon variant
  • Fix crash on activity relaunch (config change outside ConfigurationChanges): cached section views were still parented to the dead SectionPanel, causing "already has a visual parent" — detach before re-adding

UI

  • New i|Icon.Spin style (infinite 360° rotation) applied to the syncing arrows-rotate icons in FundersView and ProjectCard
  • MyProjects: on mobile the sidebar is now hidden entirely instead of rendered chrome-less (test updated to match new intended behavior)
  • FundersView: bottom padding on expanded investor row
  • Fix black icons on first launch in dark mode: Optris i:Icon bakes its Foreground at construction before theme dictionaries are reachable; force one theme-variant flip once startup theming settles

SDK perf — faster "Syncing funding data…"

  • ProjectInvestmentsService: parallelize spent-fund checks (Task.WhenAll instead of O(funders × stages) sequential awaits) and fetch tx hex + info concurrently
  • ProjectStatistics: run investment scan and project fetch concurrently

Testing

  • dotnet build src/design/App.Desktop — clean
  • Layout-regression suite: 92/92 passed
  • SDK tests: 333 passed, 14 skipped

… parallel investment scan

- Android: adaptive launcher icon (mipmap + monochrome foreground, Angor green background)
- UI: infinite-rotation Spin class for syncing icons in FundersView and ProjectCard
- UI: hide MyProjects sidebar entirely on mobile instead of stripping chrome
- fix: detach cached section views on Android activity relaunch to avoid 'already has a visual parent' crash
- fix: force one theme-variant flip at startup so icons are not baked black in dark mode
- perf: parallelize spent-fund checks and tx hex/info fetches in ProjectInvestmentsService; run scan and project fetch concurrently in ProjectStatistics
// Collect all stage work items first so the spent-fund checks (each an
// indexer round-trip) can run in parallel instead of O(funders × stages)
// sequential awaits — this dominated the "Syncing funding data…" time.
var workItems = new List<(QueryTransactionOutput qouts, Transaction trx, int stageIndex,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this code we need to check carefully that it didnt break anything

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Split this change out to #951 per the concern about unbounded parallelism at scale (hundreds of investors x stages). PR #949 now reverts ProjectInvestmentsService.cs to main; #951 re-applies the parallelization with a SemaphoreSlim bound (12 concurrent indexer requests) and a unit test asserting the max in-flight cap.

…ounded concurrency for projects with hundreds of investors)
@dangershony
dangershony merged commit c0aad07 into main Jul 24, 2026
3 checks passed
@dangershony
dangershony deleted the ui-polish-and-scan-perf branch July 24, 2026 22:41
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.

2 participants