Skip to content

moving from wpf to avalonia#102

Merged
Ashfaaq18 merged 84 commits into
mainfrom
feature/refactor-gui
Apr 6, 2026
Merged

moving from wpf to avalonia#102
Ashfaaq18 merged 84 commits into
mainfrom
feature/refactor-gui

Conversation

@Ashfaaq18

@Ashfaaq18 Ashfaaq18 commented Mar 1, 2026

Copy link
Copy Markdown
Owner

starting the crossplatform port with this framework move

WPF -> Avalonia Parity Checklist (Feature-Based)

1) App Structure / Core Migration

  • Avalonia project added and buildable alongside WPF.
  • Platform abstractions project in place (INetworkCaptureService, IProcessIconService, etc.).
  • Core/shared VM extraction started (OpenNetMeter.Core).
  • Avalonia main window shell with Summary / History / Settings tabs.

2) Summary Tab Parity

  • Summary layout ported.
  • Live graph rendering wired.
  • Active processes list wired.
  • Active process sorting wired.
  • Footer download/upload speed display wired to settings format.

3) History Tab Parity

  • History layout ported.
  • Profile/date filtering wired.
  • Production DB read path wired.
  • Totals calculation wired.
  • Sorting wired.
  • History process icon binding wired.

4) Settings Tab Parity (UI vs Behavior)

  • Settings UI mostly present.
  • Settings JSON persistence wired for core fields.
  • Network target + speed unit/magnitude values persist.
  • Start-with-Windows behavior.
  • Minimize-on-start behavior parity.
  • Reset data behavior parity.
  • Update check behavior parity.
  • Download update behavior parity.
  • Dark mode runtime behavior parity incomplete (setting exists; full runtime theme switching parity pending).
  • Mini-widget-related settings behavior parity.

5) Mini Widget Parity

  • Avalonia mini widget window.
  • Always-on-top/pinned widget behavior.
  • Widget show/hide flow.
  • Widget position persistence.
  • Widget transparency/background.
  • Widget live metric binding parity.

6) Windowing / Secondary Windows Parity

  • About window implemented.
  • Confirmation dialog.
  • Custom title bar and window controls implemented.

7) Tray / Lifecycle Parity

  • System tray icon/menu parity.
  • Tray-based hide/show/minimize.
  • WPF-style startup/minimized-to-tray lifecycle parity.

8) Platform Service Parity

  • Windows network capture service wired for Avalonia.
  • Placeholder network capture service for non-Windows.
  • Windows process icon service wired.
  • Placeholder process icon service for non-Windows.
  • Linux real capture backend not implemented.
  • macOS real capture backend not implemented.
  • Linux/mac startup registration backends not implemented.
  • Linux/mac tray/mini-widget equivalents not implemented.

9) Logging / Diagnostics

  • Event logger upgraded in Avalonia (WPF-style API + app lifecycle hooks).
  • Catch blocks instrumented with logging.
  • Windows-only callsites properly marked (CA1416 warnings resolved without suppression).

10) Release / CI / Docs Parity

  • Linux publish path/script exists.
  • Avalonia CI workflow.
  • README/user-facing Avalonia guidance not finalized.
  • Installer/release parity with WPF.

as of commit 27506fc
this has a minimal buildable, runnable windows and Linux binary

as of commit f306775
image

as of commit 122b0a0
image

@Ashfaaq18 Ashfaaq18 marked this pull request as draft March 1, 2026 12:27
Ashfaaq18 added 28 commits March 1, 2026 20:39
…enNetMeter.Core with UiVisibility bridge for WPF
…k registration into IStartupRegistrationService
@Ashfaaq18 Ashfaaq18 changed the title moving from wpf to avalonia to make this crossplatform, linux first moving from wpf to avalonia Mar 25, 2026
move shared resources to repo root and update callers
@Ashfaaq18

Copy link
Copy Markdown
Owner Author

The progress has been great. port is almost complete. the things remaining for full wpf parity is just implementing the light mode. Ill continue the development now in the main branch.

@Ashfaaq18 Ashfaaq18 marked this pull request as ready for review April 6, 2026 09:12
@Ashfaaq18 Ashfaaq18 merged commit bb70ee9 into main Apr 6, 2026
1 check passed
@Ashfaaq18

Copy link
Copy Markdown
Owner Author

accidentally squash merged this, ill open another pr

@Ashfaaq18 Ashfaaq18 mentioned this pull request Apr 6, 2026
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