kiosk_set_screensaver_mode ignored: mode is not passed through by the notification parser
Maintainers usually reply within 1 day
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 82/100
Research direction
Read Sources/SharedPush/Sources/NotificationParserLegacy.swift and trace how kiosk command values are forwarded; compare this with KioskPushCommandTests, which currently call the command parser directly. Add parser-level coverage for kiosk_set_screensaver_mode and verify the mode reaches the command and updates the expected value.
Written by the indexing model from the issue text.
Description
Description
Sending the kiosk remote command kiosk_set_screensaver_mode with a mode value has no effect. The screensaver mode is not changed.
Steps to reproduce
Enable kiosk mode with the screensaver enabled and Accept kiosk remote commands on.
Keep the app in the foreground.
Send:
yaml
action: notify.mobile_app_
data:
message: kiosk_set_screensaver_mode
data:
mode: clock
Check Settings > Kiosk mode > Screensaver > Mode.
Expected: Mode changes to Clock.
Actual: Mode is unchanged. No toast or notification is shown.
Likely cause
NotificationParserLegacy (Sources/SharedPush/Sources/NotificationParserLegacy.swift) explicitly passes level and volume through to the client for the kiosk commands, but not mode:
swift
// Pass kiosk command values (kiosk_set_brightness / kiosk_set_volume) through to the client.
if let level = data["level"] { payload["level"] = level }
if let volume = data["volume"] { payload["volume"] = volume }
KioskPushCommand.screensaverMode(from:) looks for mode at the top level of userInfo or under homeassistant. The top-level key is never forwarded, so mode resolves to nil and the command is dropped. The unit tests in KioskPushCommandTests pass because they call screensaverMode(from:) directly and bypass the parser.
Suggested fix
Add a passthrough for mode alongside level and volume:
swift
if let mode = data["mode"] { payload["mode"] = mode }
A parser test covering kiosk_set_screensaver_mode would also help.
Workaround
Send the value under action_data as well, since that is forwarded as homeassistant:
yaml
data:
message: kiosk_set_screensaver_mode
data:
mode: clock
action_data:
mode: clock
Environment
Companion app: 2026.9.3
iPadOS: 27.0.1
Home Assistant: 2026.9.4
Device: iPad 10th gen
- Dominant language
- Swift
- Stars
- 2.4k
- Forks
- 531
- Avg merge
- 13h 16m
- Merged PRs (30d)
- 197
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from home-assistant/iOS
-
Assist pipeline pickers never refresh a non-empty cache, so new pipelines are missing from CarPlay Quick AccessPossibly taken @bgoncal claimed this today. Openbug ios
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
home-assistant/iOS#6000 ·
Maintainers usually reply within 1 day
-
The label displayed in Control Center appears to be inverted relative to the current cover state.Openbug ios
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
home-assistant/iOS#5989 ·
Maintainers usually reply within 1 day
-
bug ios
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
home-assistant/iOS#5844 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
home-assistant/iOS#5570 · 1 comment ·
Maintainers usually reply within 1 day
-
bug mac
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
home-assistant/iOS#5009 · 1 comment ·
Maintainers usually reply within 1 day
All issues in home-assistant/iOS
Similar issues
-
Native HTTP policy fixture rejects its pathless response URLPossibly taken A pull request linked to this issue is open or already merged. Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Maintainers usually reply within 1 day
-
bug fixed (pending release)
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
vorssaint/vorssaint-utils#2810 · 1 comment ·
Maintainers usually reply within 1 day
-
Notion AI: getSpaces response exceeds 5 MB plugin limit for multi-workspace accountsPossibly taken A pull request linked to this issue is open or already merged. Openclawsweeper:fix-shape-clear clawsweeper:queueable-fix clawsweeper:source-repro impact:auth-provider issue-rating: 🦞 diamond lobster no-stale P2
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
steipete/CodexBar#4341 · 2 comments · 1 reaction ·
Maintainers usually reply within 1 day
-
area: docs area: ios S3: minor
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
manaflow-ai/cmux#18416 · 1 comment ·
Maintainers usually reply within 1 day