openclaw-windows-node/tests
Christine Yan adcccc9b56
feat: video capture frontend — consent, notifications, activity stream & settings (#292)
* feat: add recording state tracking to NodeService

Add IsScreenRecording/IsCameraRecording properties and RecordingStateChanged
event to NodeService. Wrap OnScreenRecord and OnCameraClip handlers to set
state and raise events before/after async recording calls.

This enables downstream UI components (tray icon, toasts, activity log) to
react to recording lifecycle changes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* feat: add toast notifications for screen and camera recording

Show toasts on recording start, completion, and failure for both screen
recording and camera clips. Extract reusable ShowToast helper and add
localized strings for all 5 locales (en-us, fr-fr, zh-cn, zh-tw, nl-nl).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* feat: log recording events to activity stream

Add recording start/complete events with emoji indicators (🔴/) to the
activity stream. Render emoji in a separate TextBlock element to prevent
color emoji clipping by the card's CornerRadius clip mask.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* feat: add recording consent dialog before first recording

Show a standalone WindowEx consent dialog the first time an agent
requests screen or camera recording. Consent is tracked separately
per recording type (ScreenRecordingConsentGiven, CameraRecordingConsentGiven)
so users can allow screen recording without granting camera access.
The dialog uses extend-into-titlebar styling, Mica backdrop, and
SetForegroundWindow to ensure visibility.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* feat: add privacy settings UI and polish consent dialog

- Add Privacy section to Settings with screen/camera recording toggles
- Settings toggles auto-refresh when consent changes externally
- Fix consent dialog z-order with HWND_TOPMOST technique
- Fix button width (MinWidth instead of fixed Width)
- Add SettingsManager.Saved event for cross-component reactivity
- Allow button uses AccentButtonStyle for consistency
- Remove misleading 'only asked once' from privacy text

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix: serialize consent dialogs and settings saves to prevent races

- Add SemaphoreSlim guard in EnsureRecordingConsentAsync so concurrent
  recording requests coalesce onto a single consent dialog per type
- Add lock around SettingsManager.Save() to prevent concurrent file writes
- Update privacy toggle text in all 5 locales to clarify that enabling
  skips future consent prompts (e.g. 'Allow screen recording without prompting')

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* feat: add 3-2-1 countdown overlay before recording starts

Show a translucent topmost countdown window (3 → 2 → 1) before screen
and camera recordings begin, similar to Windows Snipping Tool. Gives users
clear visual indication that recording is about to start.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix(video): harden recording consent persistence

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix: settings dirty-state guard, consent dialog copy, and tests

- Add dirty-state guard to SettingsPage: external consent saves no
  longer overwrite unsaved user edits on the Settings page
- Update consent dialog description in all 5 locales to explicitly
  state that the choice persists until changed in Settings
- Add 4 focused tests for settings save thread safety, Saved event,
  consent persistence, and consent revocation

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Christine Yan <christineyan@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Scott Hanselman <scott@hanselman.com>
2026-05-07 17:05:17 -04:00
..
OpenClaw.Shared.Tests audio: Whisper STT + Piper TTS as MCP-callable node capabilities (#288) 2026-05-07 16:22:18 -04:00
OpenClaw.Tray.IntegrationTests feat: winnode CLI for invoking node commands over local MCP (#250) 2026-05-01 09:27:50 -07:00
OpenClaw.Tray.Tests feat: video capture frontend — consent, notifications, activity stream & settings (#292) 2026-05-07 17:05:17 -04:00
OpenClaw.Tray.UITests chore(deps): bump Microsoft.Windows.SDK.BuildTools to 10.0.28000.1839 (#282) 2026-05-07 10:56:09 -04:00
OpenClaw.WinNode.Cli.Tests feat: winnode CLI for invoking node commands over local MCP (#250) 2026-05-01 09:27:50 -07:00
Directory.Build.props feat: add native WinUI A2UI renderer and MCP hardening (#239) 2026-04-29 22:53:50 -07:00