You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
_enforcer.OnBreachAlert+=(app,delay,proc)=>_=_emailService.SendAlertAsync($"Limit Breach: {app}",$"{app} exceeded its daily limit. Closing in {delay}s.");
401
420
_enforcer.OnAppKilled+=(app)=>_=_emailService.SendAlertAsync($"App Closed: {app}",$"{app} was closed after exceeding its limit.");
402
421
_enforcer.OnAppTerminatedBySchedule+=(app)=>_=_emailService.SendAlertAsync($"Schedule Block: {app}",$"{app} was closed by schedule rule.");
Copy file name to clipboardExpand all lines: README.md
+26-2Lines changed: 26 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -26,6 +26,10 @@ and monitor usage — all from a beautiful web dashboard.
26
26
-**Real‑time usage tracking** — counts foreground use by default, with optional per-app background tracking
27
27
-**Concurrent app accounting** — a foreground game and opted-in background communication apps can accumulate time simultaneously
28
28
-**Overlay focus filtering** — prevents voice and notification overlays from being mistaken for deliberate app switches
29
+
-**Lock and idle awareness** — tracking always pauses on the Windows lock screen, with optional configurable idle suspension
30
+
-**Tracking diagnostics** — shows which processes are counted, ignored, paused, or running without background permission
31
+
-**Scheduled parent summaries** — optional daily, weekly, or monthly email reports with automatic next-start catch-up
32
+
-**Tamper alerts** — optional email/webhook alerts for deleted data/config, clock changes, watchdog failure, and repeated login failures
29
33
-**Daily time limits** — set per‑app limits (e.g. Fortnite 120 min/day); apps are auto‑closed when exceeded
30
34
-**Graceful countdown** — full‑screen warning popup with countdown before an app is killed
31
35
-**Bonus time** — grant extra minutes from the dashboard without changing limits
@@ -95,10 +99,24 @@ Tracking behavior is configured independently for every process using the **Back
95
99
96
100
Background accounting is concurrent. For example, if a game is in the foreground while Discord, Telegram, Signal, Skype, Teams, Zoom, or another opted-in application is running, the same elapsed second can be added to both applications. An application is counted only once per sample even if it is both foreground and enabled for background tracking.
97
101
102
+
When several executables map to the same app name, they share one usage total and limit. Reaching that limit closes every running executable mapped to the app, not only the first process.
103
+
98
104
> **Important:** Background mode measures process runtime, not microphone activity. An application left open but unused continues accumulating time, and its daily limit can be reached while it remains in the background.
99
105
100
106
Usage is sampled approximately once per second using a monotonic clock. Large timing gaps caused by sleep, hibernation, or a stalled process are discarded instead of being charged as usage. Accumulated time is persisted according to `FlushIntervalSec`.
101
107
108
+
Tracking always pauses while the Windows desktop is locked. **Settings → Pause all usage tracking when idle** can optionally pause foreground and background accounting after 1–240 minutes without keyboard or mouse input; it is disabled by default because controllers, video playback, and voice calls may not generate normal Windows input.
109
+
110
+
The Live tab's **Tracking Diagnostics** card explains each running configured process: counted as foreground, counted in background, not counted because background mode is disabled, or paused because Windows is locked/the user is idle.
111
+
112
+
### Scheduled summaries and tamper alerts
113
+
114
+
Both features are disabled by default and configured under **Settings → Scheduled Reports & Security Alerts**. Summaries support daily, weekly, or monthly delivery using the computer's local time. Weekly reports have a weekday selector; monthly reports accept days 1–31 and automatically use the month's last valid day when necessary.
115
+
116
+
If the computer is off at the scheduled time, the app sends only the latest missed period after the next startup. The due period is marked complete only after email delivery succeeds. Summary email requires Gmail credentials but does not require breach-notification email to be enabled.
117
+
118
+
Tamper alerts use every configured channel available: email and webhook. Alerts are deduplicated while a condition remains active and cover missing database/config files, clock jumps of at least five minutes, an unavailable/stopped watchdog, and dashboard login lockouts after repeated failures.
119
+
102
120
The **Today** and **History** tabs include a **Show foreground/background breakdown** checkbox. When enabled, charts use stacked foreground and background segments and tables show Foreground, Background, and Total columns. If an opted-in background app becomes the accepted foreground app, that interval is classified only as foreground and is never double-counted.
103
121
104
122
Usage recorded by an older release has only a total and cannot be reconstructed by source. After upgrading, that time is shown as **Legacy** / **unclassified** in breakdown mode while its original total remains unchanged. New usage is classified fully.
@@ -279,14 +297,14 @@ Once installed, the `GameHost` service runs under the SYSTEM account and automat
279
297
280
298
| Tab | Description |
281
299
|-----|-------------|
282
-
|**Live**| Currently active app, quick actions (pause, resume, block all, extend time) |
300
+
|**Live**| Currently active app, tracking diagnostics, quick actions (pause, resume, block all, extend time) |
283
301
|**Today**| Bar chart and table of today's total usage, with optional foreground/background breakdown |
284
302
|**History**| Historical totals and foreground/background breakdown with filters, charts, and stats (7/14/30/90 days or custom range) |
285
303
|**Limits**| One combined table with per-process background/overlay checkboxes, optional daily limits, bonus time, status, and app management |
286
304
|**Discover**| Scan system for installed games/apps, add them with default limit |
287
305
|**Schedule**| Time‑based allowed hours rules per app |
**Admin password:** On first setup, create it from the trusted local dashboard on the child PC. Remote browsers are then redirected to `login.html` and must authenticate before dashboard assets are served. The authenticated session is stored in an HTTP-only, SameSite cookie. Use **Settings → Logout** to clear it. The password also protects dashboard changes (pause, resume, reset, kill, settings edits) and shutdown.
292
310
@@ -394,6 +412,12 @@ A: No. It counts whenever the configured process is running. This avoids applica
394
412
**Q: Can background tracking cause an application to reach its daily limit while minimized?**
395
413
A: Yes. Background-counted time uses the same daily usage total and limit enforcement as foreground time. Close the application when it is not being used, increase its limit, or disable background tracking.
396
414
415
+
**Q: Why is a running app not accumulating time?**
416
+
A: Open **Live → Tracking Diagnostics**. It shows whether the process is foreground, allowed in background, paused by the lock screen/idle setting, or simply running without background tracking enabled.
417
+
418
+
**Q: Does tracking continue while Windows is locked or the PC is idle?**
419
+
A: It always pauses while Windows is locked. Idle pausing is optional and disabled by default; enable it and choose a threshold in **Settings** if desired. Be cautious on PCs used with controllers, videos, or voice calls because those activities may not reset the Windows keyboard/mouse idle timer.
420
+
397
421
**Q: How do I set up email notifications?**
398
422
A: Enable 2FA on your Gmail account, generate an [App Password](https://support.google.com/accounts/answer/185833), and enter your Gmail address and the app password in **Settings → Email Notifications & Control**. See the [Email control](#email-control-optional) section for all commands.
0 commit comments