Skip to content

feat(desktop): tray icon + close-to-tray setting#50

Merged
keyldev merged 7 commits into
mainfrom
fix/desktop-ux-tray
Jul 2, 2026
Merged

feat(desktop): tray icon + close-to-tray setting#50
keyldev merged 7 commits into
mainfrom
fix/desktop-ux-tray

Conversation

@keyldev

@keyldev keyldev commented Jul 2, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • tray menu: open, add camera, settings, about, exit
  • optional close-to-tray (off by default); hidden window releases live streams
  • restore un-minimizes to the pre-minimize state and activates the window
  • one-click fill of NETSurveillance-style main/sub RTSP URLs
  • uses the credential fields, falls back to stock admin/empty
  • localizer strings for this branch (incl. upcoming tray items)
  • lucide geometries rendered to 2x bitmaps (NativeMenuItem has no vector slot)
  • accent-colored stroke, cached across language-switch menu rebuilds
  • new IconCog + IconPower geometries in Theme.axaml

Related

Type

  • Bug fix
  • Feature
  • Refactor / cleanup
  • Docs / CI
  • Other:

Checklist

  • Builds with 0 warnings (TreatWarningsAsErrors=true).
  • Tests pass (dotnet test); new Core logic has unit tests.
  • No layering violation — App references Core only (Infrastructure / Video / Devices wired via DI in a head).
  • Scope stays within one phase (didn't pull work from a later phase's "Не входит").
  • README / docs updated if public commands, options, or setup changed.

Platforms tested

  • Windows
  • Linux
  • macOS
  • Android
  • iOS
  • CI build only

Screenshots / notes

keyldev added 7 commits July 2, 2026 19:20
- returning from Main left the process alive in Task Manager on Windows 10
- graceful dispose (bounded 10s) still runs first; Environment.Exit is the backstop
- full-bleed grid pressed against the physical screen edges
- mobile fullscreen video stays edge-to-edge
- one-click fill of NETSurveillance-style main/sub RTSP URLs
- uses the credential fields, falls back to stock admin/empty
- localizer strings for this branch (incl. upcoming tray items)
- tray menu: open, add camera, settings, about, exit
- optional close-to-tray (off by default); hidden window releases live streams
- restore un-minimizes to the pre-minimize state and activates the window
- settings SaveAsync: bare `await using` captured the dispatcher; a blocking
  wait in OnClosing then deadlocked the UI thread (frozen app)
- hide-to-tray no longer blocks on the save at all; Hide() is posted after
  the close dispatch (inline Hide is silently dropped by Avalonia)
- real close keeps a bounded 5s wait so the write lands before forced exit
- lucide geometries rendered to 2x bitmaps (NativeMenuItem has no vector slot)
- accent-colored stroke, cached across language-switch menu rebuilds
- new IconCog + IconPower geometries in Theme.axaml
- menu shows the bitmap at pixel size; the 2x bitmap overflowed the icon
  slot and got cropped to its corner
@keyldev keyldev merged commit 42318a3 into main Jul 2, 2026
5 checks passed
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