Skip to content

moving from wpf to avalonia to make this crossplatform, linux first#102

Draft
Ashfaaq18 wants to merge 51 commits intomainfrom
feature/refactor-gui
Draft

moving from wpf to avalonia to make this crossplatform, linux first#102
Ashfaaq18 wants to merge 51 commits intomainfrom
feature/refactor-gui

Conversation

@Ashfaaq18
Copy link
Owner

@Ashfaaq18 Ashfaaq18 commented Mar 1, 2026

fix #100

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 parity missing (OS startup registration not wired in Avalonia).
  • Minimize-on-start behavior parity missing (currently persistence-level only).
  • Reset data behavior parity missing (currently placeholder).
  • Update check behavior parity missing (currently placeholder).
  • Download update behavior parity missing (currently placeholder).
  • Dark mode runtime behavior parity incomplete (setting exists; full runtime theme switching parity pending).
  • Mini-widget-related settings behavior parity missing (visibility/transparency currently not backed by a real mini-widget window).

5) Mini Widget Parity (Major Gap)

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

6) Windowing / Secondary Windows Parity

  • About window implemented.
  • Confirmation dialog parity missing (WPF reset confirmation flow not ported as real dialog window).
  • Custom title bar and window controls implemented.

7) Tray / Lifecycle Parity

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

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 parity not finalized.
  • README/user-facing Avalonia guidance not finalized.
  • Installer/release parity with WPF distribution not finalized.

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 gui from wpf to avalonia moving from wpf to avalonia to make this crossplatform, linux first Mar 11, 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.

Port this to linux

1 participant