Skip to content

UX/UI pass: dark-mode icon fixes, markdown editor, button wiring, dev tooling - #955

Open
Zazawowow wants to merge 6 commits into
mainfrom
ux-ui-pass
Open

UX/UI pass: dark-mode icon fixes, markdown editor, button wiring, dev tooling#955
Zazawowow wants to merge 6 commits into
mainfrom
ux-ui-pass

Conversation

@Zazawowow

Copy link
Copy Markdown
Collaborator

Summary

  • Dark mode icons: eliminate black icons in dark mode via a global style, icon bake repair (IconBakeFix), plus regression tests
  • Markdown editor: helper for the project description in Edit Profile, with behavior/layout/responsive regression coverage (which also caught and fixed a mobile overflow)
  • Button fixes: wire up "Go to Funds" and "See Live Project" buttons in My Projects
  • Dev tooling: scripts/dev-run.sh builds/installs the Android APK alongside every desktop test run; sideloadable APK builds now embed assemblies so they launch when installed outside dotnet -t:Install

Commits

  1. fix(icons): eliminate black icons in dark mode with global style, bake repair, and regression tests
  2. feat(edit-profile): markdown editor helper for project description
  3. test(edit-profile): markdown editor behavior, layout, and responsive regression coverage
  4. fix(my-projects): wire Go to Funds and See Live Project buttons
  5. chore(dev): add dev-run script building APK alongside desktop test runs
  6. fix(dev): embed assemblies in sideloadable APK builds

Testing

  • Layout-regression tests (headless, breakpoint widths) pass, including new markdown editor coverage
  • Verified on desktop and USB-connected Android (signet)

Dorian and others added 6 commits August 11, 2026 17:56
…e repair, and regression tests

Optris.Icons.Avalonia.Icon bakes `Foreground ?? Brushes.Black` into an
IconImage snapshot; icons whose Foreground resolves late (template-hosted
icons like ProjectCard's syncing indicator) kept a permanently black bake
even with a correct Foreground property. Three layers:

- Icons.axaml: default `i|Icon` style now matches everywhere (templates,
  popups), not just UserControl subtrees
- IconBakeFix: Loaded-event guard re-bakes any icon whose baked brush
  diverges from its effective Foreground (installed in app + test host)
- DarkModeIconTests: renders 8 key views under the Dark variant and fails
  on null/black foregrounds, black baked snapshots, or zero-size icons

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds a formatting toolbar (heading, bold, italic, link, image, lists,
quote, code) with caret-aware insertion — wraps selections or inserts
selected placeholders, and line-prefix actions toggle per line. Includes
a Write/Preview toggle rendered with the app's own MarkdownTextBlock so
the preview matches what investors see, plus a collapsible markdown
quick-reference guide.

Responsive: on mobile the Write/Preview toggle becomes a full-width
two-half top row and the formatting buttons spread symmetrically in a
UniformGrid; desktop packs buttons left with the toggle docked right.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…regression coverage

- MarkdownEditorTests: caret-aware wrap/placeholder insertion, line-prefix
  toggling, Write/Preview switching (incl. empty hint and no-op while
  previewing), guide expand/collapse, and toolbar rearrangement in both
  breakpoint directions
- LayoutRegressionTests: audits the Project tab (toolbar + editor + expanded
  quick-reference) at all six viewport widths

Fixes a real overflow the new audit caught: on ≤390px phones the toolbar
buttons' MinWidth=32 forced the last button out of its UniformGrid row —
compact mode now lets the equal cells govern button width.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Claim success modal's "Go to Funds" only closed the modal; it now also
  navigates to the Funds section (same path as the recovery flow)
- "See Live Project" had no click handler at all; it now opens the project's
  public profile via new ShellViewModel.NavigateToProjectDetail: switches to
  Find Projects and opens the detail from the browse list, falling back to
  the search-by-id resolver for projects not yet listed. Detail is opened
  via a posted dispatcher job because selecting the nav item runs an onReuse
  callback that closes any open project detail.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
./scripts/dev-run.sh builds the Android APK every dev cycle (installing and
launching on a USB device when one is connected) before starting the desktop
app, so both surfaces stay validated. Also fixes the stale net9.0-android TFM
in AGENTS.md (App.Android targets net10.0-android).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Debug Android builds default to fast deployment (assemblies pushed over USB,
not packed into the APK) — a sideloaded fast-deployment APK crashes instantly
on launch. The no-device path now builds with EmbedAssembliesIntoApk=true.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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