Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

kiosk_set_screensaver_mode ignored: mode is not passed through by the notification parser

Open Beginner friendly
#6,001 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

@bgoncal is already working on this.

Since Oct 7, 2026.

  • #6002 by @bgoncal — open

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
82/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
swift
Domain
mobile

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

bug ios

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

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from home-assistant/iOS

All issues in home-assistant/iOS

Similar issues

More Swift issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.