feat!: remove the slot- and device-addressed services - #1507
Merged
Conversation
set_usercode, clear_usercode, set_slot_condition and clear_slot_condition are gone. Their replacements name a person: set_credential, clear_credential, set_condition and clear_condition. The websocket commands the cards use are renamed to match, and the condition pair loses the "slot" in its name it had already outgrown -- it has accepted a name for a while. The usercode pair survives as write_unmanaged_code and clear_unmanaged_code, named for the one thing it is for. Its only caller is the lock-codes card's editor, which edits UNMANAGED slots: codes on a lock that no Lock Code Manager user holds, so there is no name to address them by and the config-level action cannot express them. Keeping a device-level write there is the point of that card rather than a hole in the model. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Entire-Checkpoint: 4cdce1951b8a
5 tasks
This was referenced Aug 28, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Breaking change
Four actions are removed. Each has a replacement that names a person instead of a lock slot:
lock_code_manager.set_usercodeset_credentiallock_code_manager.clear_usercodeclear_credentiallock_code_manager.set_slot_conditionset_conditionlock_code_manager.clear_slot_conditionclear_conditionAll four have logged a deprecation warning since 5.4.0. An automation calling one will fail with "service not found" until it is updated.
The replacements are not drop-in: they take
namerather thanlock_entity_id+code_slot, orslot. That is the point — a slot number stays valid and comes to address whoever occupies that slot next, so an automation holding one silently starts acting on the wrong person.Websocket commands used by the dashboard cards are renamed to match. These are internal, but anyone driving them directly is affected:
lock_code_manager/set_slot_conditionlock_code_manager/set_conditionlock_code_manager/clear_slot_conditionlock_code_manager/clear_conditionlock_code_manager/set_usercodelock_code_manager/write_unmanaged_codelock_code_manager/clear_usercodelock_code_manager/clear_unmanaged_codeProposed change
First of two PRs onto
v6.The condition websocket pair had already outgrown the "slot" in its name — it has accepted
nameanduser_entity_idfor a while — so that rename is mostly telling the truth.The usercode pair is kept, renamed for what it is. Its only caller is the lock-codes card's editor, and that editor is offered for unmanaged slots only (
isUnmanaged && !isEditing): codes sitting on a lock that no Lock Code Manager user holds. There is no name to address them by, so the config-level action cannot express them at all. A device-level write there is the entire point of that card rather than a hole in the model —write_unmanaged_codesays so.Type of change
Additional information
Tests: 2279 passed, 100% coverage held, all hooks pass including the frontend build.
15 test functions covering the removed actions were deleted. Three others used
set_slot_conditiononly as a vehicle to reach unrelated behaviour (a wrong-domain entry, the settle timeout); those were moved ontoset_conditionand are simpler for it — they no longer look up a slot number.