CodeNomad/docs/help/ru
Pascal André c82dd8fbf6
Some checks are pending
Publish help / build (push) Waiting to run
Publish help / deploy (push) Blocked by required conditions
fix(notifications): show Windows system notifications and keep their permission (#1109)
## Summary

System notifications on Windows: everything about them in one PR.

1. **Windows data profiles never showed system notifications**
(`fix(windows): show system notifications from every data profile`).
Tauri runs each data profile, such as **dev**, under its own
AppUserModelID (`…client.scope.s<hash>`), and its notifications carry
that ID; Windows shows a desktop app's notifications only under an ID it
knows, and the installer's Start menu shortcut carries the stable ID
alone. Windows recorded every notification (100 on the affected machine)
and displayed none. Every launch now registers the running ID under
`HKCU\Software\Classes\AppUserModelId\<identifier>` (`DisplayName`
CodeNomad, `IconUri` the bundled web app icon
`resources\server\public\pwa-192x192.png`, which the packaged-resource
smoke check requires; `windows_notification_identity.rs`). Electron
always uses the stable ID.
2. **The permission was lost at every restart on Windows.** The
notification plugin's page script reports *denied* there until the page
requests permission, though Windows never asks, so Settings asked again
after each restart. The check now asks the native plugin command, which
answers granted on desktop: granted once, kept.
3. **Notifications were held back whenever the window was visible**
(`fix(notifications): hold system notifications back only while
focused`). With **Notify when the app is focused** off (the default), an
open window stays visible behind other applications or on another
screen, so nothing was sent unless CodeNomad was minimized. Delivery is
now skipped only while the window is visible and focused
(`document.hasFocus()`). The setting's subtitle and the Settings help
say *focused* in all ten languages; `dev-docs/SETTINGS.md` records the
rule.

Out of scope by decision: several CodeNomad windows open on the same
project may each send the event's notification (as they already do when
the setting is on), and focus inside a browser preview counts as leaving
the page.

## Validation

- Affected machine: no profile notification showed before; after
registering its ID as above, a notification sent under it showed in the
notification centre under CodeNomad.
- `cargo test --bins -- windows_notification_identity` (writes the key,
reads back both values).
- `tests/browser/system-notification-focus.test.ts`: real routed
notification from a visible page; nothing while focused, one once focus
is lost, one while focused with the setting on; red on the previous
visibility check.
- `npm run typecheck --workspace @codenomad/ui`, `npm run test:help`.
2026-10-23 04:03:26 +02:00
..
browser-sidecars.md docs(agents): keep AGENTS.md to universal rules and agent docs to the current state (#1082) 2026-10-21 16:59:43 +02:00
conversations.md docs(help): bring the user guide back in line with the current app (#1079) 2026-10-21 14:38:29 +02:00
desktop.md docs(help): bring the user guide back in line with the current app (#1079) 2026-10-21 14:38:29 +02:00
extensions.md docs(help): multilingual help site with in-app Help menu and palette entry (#859) 2026-10-14 22:44:56 +02:00
files.md docs(help): bring the user guide back in line with the current app (#1079) 2026-10-21 14:38:29 +02:00
history.md fix(timeline): mirror every transcript block in order and keep clicks on the clicked marker (#1086) 2026-10-22 05:32:43 +02:00
index.md fix(workspaces): closing a project tab closes the project in CodeNomad (#970) 2026-10-15 15:14:29 +02:00
install.md chore(opencode): qualify and recommend runtime 2.1.3 (#1098) 2026-10-22 16:17:20 +02:00
integrations.md docs(help): bring the user guide back in line with the current app (#1079) 2026-10-21 14:38:29 +02:00
missions.md docs(help): bring the user guide back in line with the current app (#1079) 2026-10-21 14:38:29 +02:00
mobile.md docs(help): bring the user guide back in line with the current app (#1079) 2026-10-21 14:38:29 +02:00
opencode.md chore(opencode): qualify and recommend runtime 2.1.3 (#1098) 2026-10-22 16:17:20 +02:00
permissions.md docs(help): bring the user guide back in line with the current app (#1079) 2026-10-21 14:38:29 +02:00
projects.md docs(help): bring the user guide back in line with the current app (#1079) 2026-10-21 14:38:29 +02:00
providers.md docs(help): bring the user guide back in line with the current app (#1079) 2026-10-21 14:38:29 +02:00
remote-access.md docs(help): bring the user guide back in line with the current app (#1079) 2026-10-21 14:38:29 +02:00
remote-control.md docs(help): bring the user guide back in line with the current app (#1079) 2026-10-21 14:38:29 +02:00
security.md docs(help): bring the user guide back in line with the current app (#1079) 2026-10-21 14:38:29 +02:00
server.md chore(opencode): qualify and recommend runtime 2.1.3 (#1098) 2026-10-22 16:17:20 +02:00
settings.md fix(notifications): show Windows system notifications and keep their permission (#1109) 2026-10-23 04:03:26 +02:00
shortcuts.md fix(transcript): jump between user messages with Alt+Up/Down, also from the composer (#1087) 2026-10-21 20:36:02 +02:00
support.md docs(help): bring the user guide back in line with the current app (#1079) 2026-10-21 14:38:29 +02:00
troubleshooting.md chore(opencode): qualify and recommend runtime 2.1.3 (#1098) 2026-10-22 16:17:20 +02:00
updates.md docs(help): bring the user guide back in line with the current app (#1079) 2026-10-21 14:38:29 +02:00
voice.md docs(help): bring the user guide back in line with the current app (#1079) 2026-10-21 14:38:29 +02:00