Skip to content

Features Overview

Mikhail Deynekin edited this page Oct 16, 2026 · 1 revision

Features Overview

Every feature below is stated with the source module that implements it and, where relevant, with the measured caveat that comes with it. This page is the honest matrix: what the program does, what it deliberately does not do, and where the published builds diverge from their own documentation.


Contents


Core tray mechanics

Feature Implementation Notes
Per-icon promotion via IsPromoted src/core/trayicons.cpp the same store the Windows Settings toggles use
Friendly names from FileDescription, EN(0409) then RU(0419) then file name trayicons.cpp:40-68 cached per executable
Extracted icons for the list SHGetFileInfoW + HICON cache freed at shutdown
Wildcard exclusions (name and full path) store::IsExcluded onedrive.exe, *teams*
Per-icon user-hidden intent settings.icons.userHidden applies in custom mode
Drag-reorder of the list icons.cpp + settings.icons.order persisted per machine
Legacy belt EnableAutoTray=0 legacy.cpp optional, default on
HideSCA* cleanup at the correct Policies path legacy.cpp counts and removes =1 values
TrayNotify cache reset (phantom icons) legacy.cpp explicit repair only
Guarded Explorer restart explorer.cpp kill → ≤8 s → manual start → ≤4 s

Guard and modes

Feature Implementation Notes
Registry watcher (RegNotifyChangeKeyValue, subtree, NAME+LAST_SET) guard.cpp armed and re-armed per pass
Debounce (50–5000 ms, default 400) guard.cpp + settings clamp UI segment 200/400/800/1500
Polling fallback (Off/2/5/15 s) guard.cpp the path that reconciles in published builds — see caveat
Visibility modes full/custom/compact guard.cpp, tray radios, --mode compact keeps only the app's own icon
Auto Explorer restart with cooldown (≥10 s, default 60) and 2-pass flap protection guard.cpp opt-in
Pause/resume (UI, tray, IPC --toggle-guard) guard.cpp amber tray dot while paused
Session statistics (passes, promotions, last fix, uptime) guard::Stats Guard page card
Balloons on promotions trayicon.cpp toggleable

Warning

Measured caveat: in the published 8.3.0/8.4.0 source the armed registry event is not part of the worker's wait set, so with the default pollMs: 0 no pass runs until a poll timer or stop signal wakes the loop. Event-driven re-promotion therefore requires either a non-zero polling interval or the patched build in this wiki's fix bundle (The Guard Watcher).

Interface

Feature Implementation Notes
Seven pages: Dashboard, Tray icons, Guard, Appearance, Backups, Activity, About src/ui/pages/* lazy-built, last page restored
Custom-drawn Fluent kit (buttons, toggles, segments, search, overlay scrollbars) ui/kit/ retained-mode widgets, 16 ms animation timer only while moving
Light/Dark/System themes, live Windows follow ui/theme.cpp WM_SETTINGCHANGE(ImmersiveColorSet)
Eight accent presets or Windows colorization theme.cpp:154-164 hex list in Localization and Themes
30 locales, per-string EN fallback, live switch ui/lang/ ru complete; tiers documented
Per-Monitor-V2 DPI, dark title bar, rounded corners (Win 11) mainwindow.cpp:479-486 DWM attributes
Responsive nav rail (244 px → 64 px below 860 px window width) mainwindow.cpp min window 720×520
Keyboard map (Ctrl+1…7, Ctrl+F, F5, Tab/Esc, Shift+close) mainwindow.cpp:598-650 focus rings on all focusable widgets
Tray icon with state dot, double-click opens, TaskbarCreated re-add trayicon.cpp legacy callback version on purpose (Win11 RMB fix)
Close-to-tray with one-time hint balloon mainwindow.cpp:854-866 Shift bypasses
--ui-test [page] self-screenshot QA mode mainwindow.cpp:666-680 produced this wiki's Wine screenshots

Tray menu, exactly as built in code: Show · Full / Custom / Compact radios · Promote all now · Pause/Resume guard · Author's website · Exit. (The repository's user guide additionally lists Restart Explorer, which the code does not add to this menu — recorded in Changelog and Versioning.)

Safety and operations

Feature Implementation Notes
Schema-8 JSON snapshots, auto-backup before bulk changes, 30 kept backup.cpp restore/export/delete with confirmations
14-day rotating logs + 500-entry in-memory ring log.cpp Activity page, export to file
Atomic settings/snapshot writes fs.cpp tmp + replace
Copy diagnostics (OS, theme, language, paths, last 25 log lines) about.cpp clipboard, for bug reports
CLI: 18 verbs, exit codes 0/1/2/3, JSON mode cli.cpp Command-Line Interface
Single instance + IPC (show, toggle-guard, exit) app.cpp, cli.cpp mutex + WM_COPYDATA
Embedded installer wizard / portable / --uninstall installer.cpp, setupwizard.cpp Apps & Features entry; per-user only
Self-updater: HTTPS feed, SHA-256 pin, rename-chain apply, relaunch update.cpp opt-in checks; confirm before apply (GUI)

Distribution and platform

Fact Measured value
Executable single statically linked PE32+; 1,052,672 B (HEAD build), 1,076,224 B (release 8.4.0)
Imported DLLs 16, all Windows system libraries (advapi32, bcrypt, comctl32, comdlg32, dwmapi, gdi32, gdiplus, kernel32, msvcrt, ole32, oleaut32, shell32, shlwapi, user32, version, winhttp)
Compilers mingw-w64 cross (CI gate: zero warnings) and MSVC 2022 (CI job)
Store kit MSIX manifest + 37 assets + packing script (store/), Desktop Bridge fullTrust
Licensing PolyForm Noncommercial 1.0.0

Deliberate non-features

  • No UAC prompts, no machine-wide or Group-Policy mode — per-icon promotion has no GPO; the 6.x “AllUsers” mode was removed as fiction.
  • No telemetry, crash reporting, or analytics of any kind; network only for explicit update checks.
  • No shell hooking, no taskbar replacement, no Explorer patches — plain registry reconciliation through documented shell state.
  • No Mica/acrylic backdrops: solid Fluent palettes by design decision (stability over effect).
  • No RTL layout mirroring yet: RTL locales are translated but render LTR (tracked).

Measured divergences in published builds

Divergence Where
Version strings drift (help 8.1.0, status/JSON/diagnostics 8.0.0, source 8.3.0, feed/release 8.4.0) Changelog and Versioning
PE resource copyright says MIT while the license is PolyForm Noncommercial same
Feed notes advertise all-users scope and About buttons absent from source and binary same
Docs list a tray-menu item the menu does not contain; EN/RU-only language prose predates 30 locales same
Invalid CLI arguments and two unsupported-store paths exit silently Command-Line Interface

See also

Clone this wiki locally