Skip to content

Commit 58e697a

Browse files
committed
v3.1.3 (#234)
* filterPico two-stage check: replace the always-true `AffectedZones !== undefined` guard (which incorrectly skipped audio Picos, fan Picos, and scene-only Picos) with a proper two-stage filter — Stage 1 checks for non-empty `AffectedZones` arrays (zone-wired Picos); Stage 2 fetches each button's `ProgrammingModel` → `Preset` and checks for any non-empty `*Assignments` array (scene-programmed Picos) ([#233](#233)) * plugin/package rename: publish under `@homebridge-plugins/homebridge-lutron` and align plugin identity (`PLUGIN_NAME`, UI certificate commonName, npm metadata) with the new package name * lint compatibility: resolve constructor-name linting by instantiating Homebridge platform accessories via an uppercase constructor alias (`PlatformAccessoryCtor`) * branding/docs normalization: update README/docs user-facing naming to "Homebridge Lutron" / "Lutron", refresh generated TypeDoc output, and update repository/wiki/release links to `homebridge-plugins/homebridge-lutron` * dependency metadata: bump Homebridge beta compatibility from `^2.0.0-beta.110` to `^2.0.0-beta.111` **Full Changelog**: v3.1.2...v3.1.3 v3.1.3 * filterPico two-stage check: replace the always-true `AffectedZones !== undefined` guard (which incorrectly skipped audio Picos, fan Picos, and scene-only Picos) with a proper two-stage filter — Stage 1 checks for non-empty `AffectedZones` arrays (zone-wired Picos); Stage 2 fetches each button's `ProgrammingModel` → `Preset` and checks for any non-empty `*Assignments` array (scene-programmed Picos) ([#233](#233)) * plugin/package rename: publish under `@homebridge-plugins/homebridge-lutron` and align plugin identity (`PLUGIN_NAME`, UI certificate commonName, npm metadata) with the new package name * lint compatibility: resolve constructor-name linting by instantiating Homebridge platform accessories via an uppercase constructor alias (`PlatformAccessoryCtor`) * branding/docs normalization: update README/docs user-facing naming to "Homebridge Lutron" / "Lutron", refresh generated TypeDoc output, and update repository/wiki/release links to `homebridge-plugins/homebridge-lutron` * dependency metadata: bump Homebridge beta compatibility from `^2.0.0-beta.110` to `^2.0.0-beta.111` **Full Changelog**: v3.1.2...v3.1.3
1 parent 6761c2b commit 58e697a

18 files changed

Lines changed: 475 additions & 334 deletions

.github/copilot-instructions.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,26 @@ All Matter device types use `api.matter.deviceTypes.*` objects from the homebrid
6767
- [Sensors (§7)](https://github.com/homebridge-plugins/homebridge-matter/wiki/Section-7-Sensors) — OccupancySensor
6868
- [Closure Devices (§8)](https://github.com/homebridge-plugins/homebridge-matter/wiki/Section-8-Closure) — WindowCovering
6969

70+
## Changelog Format Requirements
71+
72+
When generating a changelog release entry, always use this exact structure:
73+
74+
1. Release header with compare URL using `compare/tag/vX.Y.Z`:
75+
76+
```md
77+
## [X.Y.Z](https://github.com/homebridge-plugins/homebridge-updater/compare/tag/vX.Y.Z) (YYYY-MM-DD)
78+
```
79+
80+
2. Standard sections as needed (`### Bug Fixes`, `### Enhancements`, `### Documentation`, etc.).
81+
82+
3. End each release entry with a full changelog comparison URL to the previous version:
83+
84+
```md
85+
**Full Changelog**: https://github.com/homebridge-plugins/homebridge-updater/compare/vX.Y.(Z-1)...vX.Y.Z
86+
```
87+
88+
Do not omit either URL line when creating a new release entry.
89+
7090
## Working Effectively
7191

7292
### Bootstrap and Build

.github/workflows/release.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ jobs:
9292
body: |
9393
**Beta Release**
9494
**Version**: v${{ needs.beta-publish.outputs.NPM_VERSION }}
95-
[How To Test Beta Releases](https://github.com/homebridge-plugins/homebridge-lutron-caseta-leap/wiki/Beta-Version)
95+
[How To Test Beta Releases](https://github.com/homebridge-plugins/homebridge-lutron/wiki/Beta-Version)
9696
9797
9898
# ─── STABLE RELEASE (branch: "latest") ───────────────────────────────────────
@@ -164,6 +164,6 @@ jobs:
164164
title: ${{ startsWith(github.ref_name, 'beta') && 'Homebridge Lutron Beta Release' || 'Homebridge Lutron Release' }}
165165
description: |
166166
Version `v${{ startsWith(github.ref_name, 'beta') && needs.beta-publish.outputs.NPM_VERSION || needs.update-version.outputs.version }}`
167-
url: "https://github.com/homebridge-plugins/homebridge-lutron-caseta-leap/releases/tag/v${{ startsWith(github.ref_name, 'beta') && needs.beta-publish.outputs.NPM_VERSION || needs.update-version.outputs.version }}"
167+
url: "https://github.com/homebridge-plugins/homebridge-lutron/releases/tag/v${{ startsWith(github.ref_name, 'beta') && needs.beta-publish.outputs.NPM_VERSION || needs.update-version.outputs.version }}"
168168
secrets:
169169
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK_URL_LATEST }}

CHANGELOG.md

Lines changed: 91 additions & 71 deletions
Large diffs are not rendered by default.

README.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
<span align="center">
22

3-
<a href="https://github.com/homebridge/verified/blob/master/verified-plugins.json"><img alt="homebridge-verified" src="https://raw.githubusercontent.com/homebridge/plugins/latest/icons/homebridge-lutron-caseta-leap.png?sanitize=true" width="150px"></a>
3+
<a href="https://github.com/homebridge/verified/blob/master/verified-plugins.json"><img alt="homebridge-verified" src="https://raw.githubusercontent.com/homebridge/plugins/latest/icons/homebridge-lutron.png?sanitize=true" width="150px"></a>
44

5-
# LutronCasetaLeap
5+
# Homebridge Lutron
66

7-
<a href="https://www.npmjs.com/package/@homebridge-plugins/homebridge-lutron-caseta-leap"><img title="npm version" src="https://badgen.net/npm/v/@homebridge-plugins/homebridge-lutron-caseta-leap?icon=npm&label" ></a>
8-
<a href="https://www.npmjs.com/package/@homebridge-plugins/homebridge-lutron-caseta-leap"><img title="npm downloads" src="https://badgen.net/npm/dt/@homebridge-plugins/homebridge-lutron-caseta-leap?label=downloads" ></a>
7+
<a href="https://www.npmjs.com/package/@homebridge-plugins/homebridge-lutron"><img title="npm version" src="https://badgen.net/npm/v/@homebridge-plugins/homebridge-lutron?icon=npm&label" ></a>
8+
<a href="https://www.npmjs.com/package/@homebridge-plugins/homebridge-lutron"><img title="npm downloads" src="https://badgen.net/npm/dt/@homebridge-plugins/homebridge-lutron?label=downloads" ></a>
99
<a href="https://discord.gg/8fpZA4S"><img title="discord-lutron" src="https://badgen.net/discord/online-members/8fpZA4S?icon=discord&label=discord" ></a>
1010
<a href="https://paypal.me/donavanbecker"><img title="donate" src="https://badgen.net/badge/donate/paypal/yellow" ></a>
1111
<a href="https://github.com/homebridge/homebridge/wiki/Verified-Plugins"><img title="donate" src="https://badgen.net/badge/homebridge/scoped/purple" ></a>
@@ -112,11 +112,11 @@ I'd love to have complete, tested support of all remote types. If you have hardw
112112

113113
If you need find a bug, need help with this plugin, or have questions, the best way to reach me is via a Github Issue. Please don't be shy about opening one. You can also reach me via the email address in my Github profile.
114114

115-
This plugin doesn't often change, but when I add big features or make big changes, I will occasionally join the [`#lutron-caseta-leap`](https://discord.com/channels/432663330281226270/927991341923852389) channel on the [Homebridge Discord server](https://discord.gg/RcV7fa8).
115+
This plugin doesn't often change, but when I add big features or make big changes, I will occasionally join the [Lutron channel](https://discord.com/channels/432663330281226270/927991341923852389) on the [Homebridge Discord server](https://discord.gg/RcV7fa8).
116116

117117
### Something weird is happening / The plugin is running slowly / Devices aren't appearing
118118

119-
If the plugin is generally misbehaving, users have reported success in running this plugin in a [child bridge](https://github.com/homebridge/homebridge/wiki/Child-Bridges). Doing this will require adding the bridge as a separate device and re-configuring your devices, which may or may not be acceptable. [This issue](https://github.com/homebridge-plugins/homebridge-lutron-caseta-leap/issues/96) has some steps to accomplishing that.
119+
If the plugin is generally misbehaving, users have reported success in running this plugin in a [child bridge](https://github.com/homebridge/homebridge/wiki/Child-Bridges). Doing this will require adding the bridge as a separate device and re-configuring your devices, which may or may not be acceptable. [This issue](https://github.com/homebridge-plugins/homebridge-lutron/issues/96) has some steps to accomplishing that.
120120

121121
Why does this change things? To be honest, I don't really know (and not knowing really bugs me). I've tried my best to follow best practices in designing this plugin but it seems to help sometimes. :(
122122

config.schema.json

Lines changed: 91 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,15 @@
2020
"type": "boolean",
2121
"title": "Exclude Pico remotes that are associated with devices directly or in the Lutron app"
2222
},
23+
"clickSpeed": {
24+
"type": "string",
25+
"title": "Double- and long-press speed",
26+
"oneOf": [
27+
{ "title": "Fast", "enum": ["fast"] },
28+
{ "title": "Medium (default)", "enum": ["medium"] },
29+
{ "title": "Slow", "enum": ["slow"] }
30+
]
31+
},
2332
"excludedDeviceTypes": {
2433
"type": "array",
2534
"title": "Exclude specific device types (HAP + Matter)",
@@ -46,15 +55,6 @@
4655
"uniqueItems": true,
4756
"default": []
4857
},
49-
"clickSpeed": {
50-
"type": "string",
51-
"title": "Double- and long-press speed",
52-
"oneOf": [
53-
{ "title": "Fast", "enum": ["fast"] },
54-
{ "title": "Medium (default)", "enum": ["medium"] },
55-
{ "title": "Slow", "enum": ["slow"] }
56-
]
57-
},
5858
"logLevel": {
5959
"type": "string",
6060
"title": "Log Verbosity",
@@ -69,11 +69,11 @@
6969
"buttonPressLogging": {
7070
"type": "string",
7171
"title": "Button Press Logging",
72-
"description": "How verbose to be about button-press events specifically. 'Debug' is the default and means presses are quiet in normal logs (visible only with global Homebridge debug). Use 'Info' if you want to see presses while wiring up automations without enabling global debug. Use 'Silent' to drop them entirely.",
73-
"default": "debug",
72+
"description": "How verbose to be about button-press events specifically. 'Info' is the default so presses are visible in normal logs. Use 'Debug' to show presses only with global Homebridge debug enabled. Use 'Silent' to drop them entirely.",
73+
"default": "info",
7474
"oneOf": [
75-
{ "title": "Debug — visible only with global debug (default)", "enum": ["debug"] },
76-
{ "title": "Info — visible in normal logs", "enum": ["info"] },
75+
{ "title": "Info — visible in normal logs (default)", "enum": ["info"] },
76+
{ "title": "Debug — visible only with global debug", "enum": ["debug"] },
7777
{ "title": "Silent — never logged", "enum": ["silent"] }
7878
]
7979
}
@@ -86,12 +86,6 @@
8686
"description": "When enabled, the plugin will use the Homebridge Matter API to register accessories if it is available.",
8787
"default": true
8888
},
89-
"preferMatter": {
90-
"type": "boolean",
91-
"title": "Prefer Matter over HAP",
92-
"description": "When both Matter and HAP are available, prefer the Matter API for accessory registration.",
93-
"default": true
94-
},
9589
"secrets": {
9690
"type": "array",
9791
"items": {
@@ -108,84 +102,6 @@
108102
}
109103
},
110104
"layout": [
111-
{
112-
"key": "options",
113-
"type": "div",
114-
"displayFlex": true,
115-
"items": [
116-
{
117-
"key": "options.filterPico",
118-
"notitle": false,
119-
"type": "boolean",
120-
"flex": "1 1 150px"
121-
},
122-
{
123-
"key": "options.clickSpeed",
124-
"notitle": false,
125-
"type": "string",
126-
"flex": "1 1 150px"
127-
}
128-
]
129-
130-
},
131-
{
132-
"key": "options.excludedDeviceTypes",
133-
"type": "checkboxes",
134-
"title": "Exclude specific device types (HAP + Matter)",
135-
"description": "Select one or more device types to exclude from registration.",
136-
"titleMap": [
137-
{ "name": "WallDimmer", "value": "WallDimmer" },
138-
{ "name": "WallSwitch", "value": "WallSwitch" },
139-
{ "name": "SerenaTiltOnlyWoodBlind", "value": "SerenaTiltOnlyWoodBlind" },
140-
{ "name": "RPSOccupancySensor", "value": "RPSOccupancySensor" },
141-
{ "name": "Pico2Button", "value": "Pico2Button" },
142-
{ "name": "Pico2ButtonRaiseLower", "value": "Pico2ButtonRaiseLower" },
143-
{ "name": "Pico3Button", "value": "Pico3Button" },
144-
{ "name": "Pico3ButtonRaiseLower", "value": "Pico3ButtonRaiseLower" },
145-
{ "name": "Pico4Button", "value": "Pico4Button" },
146-
{ "name": "Pico4Button2Group", "value": "Pico4Button2Group" },
147-
{ "name": "Pico4ButtonScene", "value": "Pico4ButtonScene" },
148-
{ "name": "Pico4ButtonZone", "value": "Pico4ButtonZone" },
149-
{ "name": "PaddleSwitchPico", "value": "PaddleSwitchPico" },
150-
{ "name": "FourGroupRemote", "value": "FourGroupRemote" }
151-
]
152-
},
153-
{
154-
"type": "div",
155-
"displayFlex": true,
156-
"items": [
157-
{
158-
"key": "options.logLevel",
159-
"notitle": false,
160-
"type": "string",
161-
"flex": "1 1 200px"
162-
},
163-
{
164-
"key": "options.buttonPressLogging",
165-
"notitle": false,
166-
"type": "string",
167-
"flex": "1 1 200px"
168-
}
169-
]
170-
},
171-
{
172-
"type": "div",
173-
"displayFlex": true,
174-
"items": [
175-
{
176-
"key": "enableMatter",
177-
"notitle": false,
178-
"type": "boolean",
179-
"flex": "1 1 150px"
180-
},
181-
{
182-
"key": "preferMatter",
183-
"notitle": false,
184-
"type": "boolean",
185-
"flex": "1 1 150px"
186-
}
187-
]
188-
},
189105
{
190106
"key": "secrets",
191107
"type": "array",
@@ -227,6 +143,84 @@
227143
}
228144
]
229145

146+
},
147+
{
148+
"type": "fieldset",
149+
"title": "Global Options",
150+
"items": [
151+
{
152+
"key": "options",
153+
"type": "div",
154+
"displayFlex": true,
155+
"items": [
156+
{
157+
"key": "options.filterPico",
158+
"notitle": false,
159+
"type": "boolean",
160+
"flex": "1 1 150px"
161+
},
162+
{
163+
"key": "options.clickSpeed",
164+
"notitle": false,
165+
"type": "string",
166+
"flex": "1 1 150px"
167+
}
168+
]
169+
170+
},
171+
{
172+
"type": "div",
173+
"displayFlex": true,
174+
"items": [
175+
{
176+
"key": "enableMatter",
177+
"notitle": false,
178+
"type": "boolean",
179+
"flex": "1 1 300px"
180+
}
181+
]
182+
},
183+
{
184+
"key": "options.excludedDeviceTypes",
185+
"type": "checkboxes",
186+
"title": "Exclude specific device types (HAP + Matter)",
187+
"description": "Select one or more device types to exclude from registration.",
188+
"titleMap": [
189+
{ "name": "WallDimmer", "value": "WallDimmer" },
190+
{ "name": "WallSwitch", "value": "WallSwitch" },
191+
{ "name": "SerenaTiltOnlyWoodBlind", "value": "SerenaTiltOnlyWoodBlind" },
192+
{ "name": "RPSOccupancySensor", "value": "RPSOccupancySensor" },
193+
{ "name": "Pico2Button", "value": "Pico2Button" },
194+
{ "name": "Pico2ButtonRaiseLower", "value": "Pico2ButtonRaiseLower" },
195+
{ "name": "Pico3Button", "value": "Pico3Button" },
196+
{ "name": "Pico3ButtonRaiseLower", "value": "Pico3ButtonRaiseLower" },
197+
{ "name": "Pico4Button", "value": "Pico4Button" },
198+
{ "name": "Pico4Button2Group", "value": "Pico4Button2Group" },
199+
{ "name": "Pico4ButtonScene", "value": "Pico4ButtonScene" },
200+
{ "name": "Pico4ButtonZone", "value": "Pico4ButtonZone" },
201+
{ "name": "PaddleSwitchPico", "value": "PaddleSwitchPico" },
202+
{ "name": "FourGroupRemote", "value": "FourGroupRemote" }
203+
]
204+
},
205+
{
206+
"type": "div",
207+
"displayFlex": true,
208+
"items": [
209+
{
210+
"key": "options.logLevel",
211+
"notitle": false,
212+
"type": "string",
213+
"flex": "1 1 200px"
214+
},
215+
{
216+
"key": "options.buttonPressLogging",
217+
"notitle": false,
218+
"type": "string",
219+
"flex": "1 1 200px"
220+
}
221+
]
222+
}
223+
]
230224
}
231225
]
232226

0 commit comments

Comments
 (0)