Repository navigation
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.
- Core tray mechanics
- Guard and modes
- Interface
- Safety and operations
- Distribution and platform
- Deliberate non-features
- Measured divergences in published builds
- See also
| 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 |
| 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).
| 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.)
| 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) |
| 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 |
- 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).
| 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 |
- Comparison with Alternatives — how this feature set compares in October 2026
- The Guard Watcher — the watcher in depth, including its defect
- GUI Pages Guide — where each feature lives in the UI
- Security and Privacy — the trust model behind the safety features
TrayIconGuard · feed 8.6.3 / source tree 8.6.3 (see Changelog and Versioning) · PolyForm Noncommercial 1.0.0 · Repository · Report an issue · Home · Glossary · FAQ · Troubleshooting
Every claim in this wiki is traced to a source line at commit 124e849 or reproduced by
executing the program (build + Wine battery, 2026-10-16); measured discrepancies between
documentation, source and shipped binaries are documented, not smoothed over.
Home Getting Started Features Overview Comparison with Alternatives
Installation and Deployment Configuration Reference Command-Line Interface
How Tray Visibility Works Legacy Script Editions The Guard Watcher
GUI Pages Guide Backups and Snapshots Localization and Themes Self-Updater Guide Security and Privacy Troubleshooting
Architecture Roadmap and Ideas Independent-Audits Testing and QA Building from Source Changelog and Versioning FAQ Glossary
8.6.3 feed / 8.6.3 source · PolyForm Noncommercial 1.0.0