@homebridge-plugins/homebridge-august 3.1.0 → 3.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/scripts/npm-version-script-esm-auto.js +201 -0
- package/.github/scripts/resolve-version-bump-esm.js +118 -0
- package/.github/workflows/release.yml +62 -13
- package/CHANGELOG.md +9 -2
- package/dist/devices/device.d.ts +1 -0
- package/dist/devices/device.d.ts.map +1 -1
- package/dist/devices/device.js +6 -4
- package/dist/devices/device.js.map +1 -1
- package/dist/devices/lock.js +2 -2
- package/dist/devices/lock.js.map +1 -1
- package/dist/homebridge-ui/server.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/package.json +6 -7
- package/dist/platform.d.ts +1 -1
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +2 -9
- package/dist/platform.js.map +1 -1
- package/dist/platform.matter.d.ts +45 -0
- package/dist/platform.matter.d.ts.map +1 -1
- package/dist/platform.matter.js +120 -65
- package/dist/platform.matter.js.map +1 -1
- package/dist/settings.d.ts +4 -4
- package/dist/settings.d.ts.map +1 -1
- package/docs/variables/default.html +1 -1
- package/package.json +6 -7
- package/typedoc.json +1 -1
- package/dist/devices/device.test.d.ts +0 -2
- package/dist/devices/device.test.d.ts.map +0 -1
- package/dist/devices/device.test.js +0 -281
- package/dist/devices/device.test.js.map +0 -1
- package/dist/devices/lock.test.d.ts +0 -2
- package/dist/devices/lock.test.d.ts.map +0 -1
- package/dist/devices/lock.test.js +0 -265
- package/dist/devices/lock.test.js.map +0 -1
- package/dist/index.test.d.ts +0 -2
- package/dist/index.test.d.ts.map +0 -1
- package/dist/index.test.js +0 -97
- package/dist/index.test.js.map +0 -1
- package/dist/platform.matter.test.d.ts +0 -2
- package/dist/platform.matter.test.d.ts.map +0 -1
- package/dist/platform.matter.test.js +0 -385
- package/dist/platform.matter.test.js.map +0 -1
- package/dist/platform.test.d.ts +0 -2
- package/dist/platform.test.d.ts.map +0 -1
- package/dist/platform.test.js +0 -514
- package/dist/platform.test.js.map +0 -1
- package/dist/settings.test.d.ts +0 -2
- package/dist/settings.test.d.ts.map +0 -1
- package/dist/settings.test.js +0 -138
- package/dist/settings.test.js.map +0 -1
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Standalone ESM implementation — self-contained so this file can be copied
|
|
5
|
+
* into other repos without pulling any other files.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import assert from 'node:assert'
|
|
9
|
+
import child_process from 'node:child_process'
|
|
10
|
+
import fs from 'node:fs'
|
|
11
|
+
import process from 'node:process'
|
|
12
|
+
// Minimal, in-file semver utilities used by this script.
|
|
13
|
+
// This avoids an external dependency so the script can run in environments
|
|
14
|
+
// where `semver` isn't installed.
|
|
15
|
+
const semver = {
|
|
16
|
+
// Very small validation: match major.minor.patch with optional prerelease/build
|
|
17
|
+
valid(v) {
|
|
18
|
+
return /^\d+\.\d+\.\d+(?:-[0-9A-Za-z-.]+)?(?:\+[0-9A-Za-z-.]+)?$/.test(v)
|
|
19
|
+
},
|
|
20
|
+
// Return prerelease identifiers array or null
|
|
21
|
+
prerelease(v) {
|
|
22
|
+
const m = v.match(/^\d+\.\d+\.\d+-(.+)$/)
|
|
23
|
+
return m ? m[1].split('.') : null
|
|
24
|
+
},
|
|
25
|
+
// Compare two semver strings in reverse order (for rcompare use)
|
|
26
|
+
rcompare(a, b) {
|
|
27
|
+
// Use standard semver precedence rules for major.minor.patch; ignore prerelease complexity except that prerelease is lower than release
|
|
28
|
+
const pa = a.split('-')
|
|
29
|
+
const pb = b.split('-')
|
|
30
|
+
const aCore = pa[0].split('.').map(Number)
|
|
31
|
+
const bCore = pb[0].split('.').map(Number)
|
|
32
|
+
for (let i = 0; i < 3; i++) {
|
|
33
|
+
if (aCore[i] > bCore[i]) return -1
|
|
34
|
+
if (aCore[i] < bCore[i]) return 1
|
|
35
|
+
}
|
|
36
|
+
// equal core; releases (no prerelease) are greater than prerelease
|
|
37
|
+
if (pa.length === 1 && pb.length > 1) return -1
|
|
38
|
+
if (pa.length > 1 && pb.length === 1) return 1
|
|
39
|
+
// both same prerelease status: compare as strings
|
|
40
|
+
if (a > b) return -1
|
|
41
|
+
if (a < b) return 1
|
|
42
|
+
return 0
|
|
43
|
+
},
|
|
44
|
+
// Increment version by 'major'|'minor'|'patch'
|
|
45
|
+
inc(v, level) {
|
|
46
|
+
if (!this.valid(v)) throw new Error(`Invalid semver passed to inc: ${v}`)
|
|
47
|
+
// strip prerelease/build
|
|
48
|
+
const core = v.split('-')[0].split('+')[0]
|
|
49
|
+
const parts = core.split('.').map(Number)
|
|
50
|
+
switch (level) {
|
|
51
|
+
case 'major':
|
|
52
|
+
parts[0] += 1
|
|
53
|
+
parts[1] = 0
|
|
54
|
+
parts[2] = 0
|
|
55
|
+
break
|
|
56
|
+
case 'minor':
|
|
57
|
+
parts[1] += 1
|
|
58
|
+
parts[2] = 0
|
|
59
|
+
break
|
|
60
|
+
case 'patch':
|
|
61
|
+
default:
|
|
62
|
+
parts[2] += 1
|
|
63
|
+
break
|
|
64
|
+
}
|
|
65
|
+
return parts.join('.')
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const BRANCH_VERSION_PATTERN = /^([A-Z]+)-(\d+\.\d+\.\d+)$/i
|
|
70
|
+
|
|
71
|
+
// Load package.json
|
|
72
|
+
const packageJSON = JSON.parse(fs.readFileSync('package.json', 'utf8'))
|
|
73
|
+
|
|
74
|
+
const refArgument = process.argv[2]
|
|
75
|
+
const tagArgument = process.argv[3] || 'latest'
|
|
76
|
+
|
|
77
|
+
if (!refArgument) {
|
|
78
|
+
console.error('ref argument is missing')
|
|
79
|
+
console.error('Usage: npm-version-script-esm.js <ref> [tag]')
|
|
80
|
+
process.exit(1)
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Queries the NPM registry for the latest version for the provided base version and tag.
|
|
85
|
+
* If the tag is latest, then the base version is returned if it exists. For other tags, the latest
|
|
86
|
+
* version found for that base version and tag is returned.
|
|
87
|
+
* @param baseVersion The base version to query for, e.g. 2.0.0
|
|
88
|
+
* @param tag The tag to query for, e.g. beta or latest
|
|
89
|
+
* @returns {string} Returns the version, or '' if not found
|
|
90
|
+
*/
|
|
91
|
+
function getTagVersionFromNpm(baseVersion, tag) {
|
|
92
|
+
try {
|
|
93
|
+
return JSON.parse(child_process.execSync(`npm info ${packageJSON.name} versions --json`).toString('utf8').trim())
|
|
94
|
+
.filter(v => (tag === 'latest' ? v === baseVersion : v.startsWith(`${baseVersion}-${tag}.`)))
|
|
95
|
+
.reduce((_, current) => current, '')
|
|
96
|
+
} catch (e) {
|
|
97
|
+
console.error(`Failed to query the npm registry for the latest version for tag: ${tag}`, e)
|
|
98
|
+
// throw e;
|
|
99
|
+
return ''
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
function getLatestStableVersionFromNpm() {
|
|
104
|
+
try {
|
|
105
|
+
const versions = JSON.parse(child_process.execSync(`npm info ${packageJSON.name} versions --json`).toString('utf8').trim())
|
|
106
|
+
if (!Array.isArray(versions) || versions.length === 0) return ''
|
|
107
|
+
|
|
108
|
+
// Only consider stable semver versions (no prerelease)
|
|
109
|
+
const stable = versions.filter(v => semver.valid(v) && !semver.prerelease(v))
|
|
110
|
+
if (stable.length === 0) return ''
|
|
111
|
+
|
|
112
|
+
// Sort descending and return the highest
|
|
113
|
+
const sorted = stable.sort(semver.rcompare)
|
|
114
|
+
return sorted[0]
|
|
115
|
+
} catch (e) {
|
|
116
|
+
console.error('Failed to query the npm registry for published versions', e)
|
|
117
|
+
return ''
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
function desiredTargetVersion(ref) {
|
|
122
|
+
// ref is a GitHub action ref string
|
|
123
|
+
if (ref.startsWith('refs/pull/')) {
|
|
124
|
+
throw new Error('The version script was executed inside a PR!')
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
assert(ref.startsWith('refs/heads/'))
|
|
128
|
+
const branchName = ref.slice('refs/heads/'.length)
|
|
129
|
+
|
|
130
|
+
const results = branchName.match(BRANCH_VERSION_PATTERN)
|
|
131
|
+
if (results !== null) {
|
|
132
|
+
if (results[1].toLowerCase() !== tagArgument.toLowerCase()) {
|
|
133
|
+
console.warn(`The base branch name (${results[1]}) differs from the tag name ${tagArgument}`)
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
return results[2]
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
if (branchName === 'latest') {
|
|
140
|
+
// For latest branch, start with package.json version as base
|
|
141
|
+
return packageJSON.version
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
throw new Error(`Malformed branch name for ref: ${ref}. Must be beta-x.x.x, alpha-x.x.x, or 'latest'`)
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
function bumpVersion(baseVersion, level) {
|
|
148
|
+
const normalizedLevel = (level || 'patch').toLowerCase()
|
|
149
|
+
if (!semver.valid(baseVersion)) {
|
|
150
|
+
throw new Error(`Invalid base version passed to bumpVersion: ${baseVersion}`)
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
switch (normalizedLevel) {
|
|
154
|
+
case 'major':
|
|
155
|
+
return semver.inc(baseVersion, 'major')
|
|
156
|
+
case 'minor':
|
|
157
|
+
return semver.inc(baseVersion, 'minor')
|
|
158
|
+
case 'patch':
|
|
159
|
+
default:
|
|
160
|
+
return semver.inc(baseVersion, 'patch')
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
const baseVersion = desiredTargetVersion(refArgument)
|
|
165
|
+
let publishTag = baseVersion
|
|
166
|
+
|
|
167
|
+
if (refArgument.includes('latest')) {
|
|
168
|
+
// For latest branch, determine next version based on npm and bump patch.
|
|
169
|
+
const latestPublishedStable = getLatestStableVersionFromNpm()
|
|
170
|
+
if (latestPublishedStable) {
|
|
171
|
+
console.warn(`Latest published stable version is ${latestPublishedStable}; bumping patch`)
|
|
172
|
+
publishTag = bumpVersion(latestPublishedStable, 'patch')
|
|
173
|
+
} else {
|
|
174
|
+
console.warn('No published stable versions found; bumping package.json version patch')
|
|
175
|
+
publishTag = bumpVersion(baseVersion, 'patch')
|
|
176
|
+
}
|
|
177
|
+
} else {
|
|
178
|
+
// For alpha/beta, query npm for latest
|
|
179
|
+
const latestReleasedVersion = getTagVersionFromNpm(baseVersion, tagArgument)
|
|
180
|
+
if (latestReleasedVersion) {
|
|
181
|
+
console.warn(`Latest published version for ${baseVersion} with tag ${tagArgument} is ${latestReleasedVersion}`)
|
|
182
|
+
publishTag = latestReleasedVersion
|
|
183
|
+
} else {
|
|
184
|
+
console.warn(`No published versions for ${baseVersion} with tag ${tagArgument}`)
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
if (packageJSON.version !== publishTag) {
|
|
189
|
+
console.warn(`Updating version in package.json from ${packageJSON.version} to ${publishTag}`)
|
|
190
|
+
packageJSON.version = publishTag
|
|
191
|
+
fs.writeFileSync('package.json', JSON.stringify(packageJSON, null, 2))
|
|
192
|
+
|
|
193
|
+
// perform the same change to the package-lock.json
|
|
194
|
+
const packageLockJSON = JSON.parse(fs.readFileSync('package-lock.json', 'utf8'))
|
|
195
|
+
packageLockJSON.version = publishTag
|
|
196
|
+
fs.writeFileSync('package-lock.json', JSON.stringify(packageLockJSON, null, 2))
|
|
197
|
+
} else {
|
|
198
|
+
console.warn(`Version in package.json is already ${packageJSON.version}`)
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
console.log(publishTag)
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import fs from 'node:fs'
|
|
4
|
+
import https from 'node:https'
|
|
5
|
+
import process from 'node:process'
|
|
6
|
+
|
|
7
|
+
const allowed = new Set(['major', 'minor', 'patch'])
|
|
8
|
+
|
|
9
|
+
function setOutput(name, value) {
|
|
10
|
+
if (process.env.GITHUB_OUTPUT) {
|
|
11
|
+
fs.appendFileSync(process.env.GITHUB_OUTPUT, `${name}=${value}\n`)
|
|
12
|
+
}
|
|
13
|
+
console.log(`${name}=${value}`)
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function resolveFromLabels(labels) {
|
|
17
|
+
const majorLabels = new Set(['major', 'semver:major', 'release:major', 'breaking', 'breaking-change'])
|
|
18
|
+
const minorLabels = new Set(['minor', 'semver:minor', 'release:minor', 'feature'])
|
|
19
|
+
const patchLabels = new Set(['patch', 'semver:patch', 'release:patch', 'fix'])
|
|
20
|
+
|
|
21
|
+
if (labels.some(label => majorLabels.has(label))) return 'major'
|
|
22
|
+
if (labels.some(label => minorLabels.has(label))) return 'minor'
|
|
23
|
+
if (labels.some(label => patchLabels.has(label))) return 'patch'
|
|
24
|
+
return 'patch'
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function listPrsForCommit(owner, repo, sha, token) {
|
|
28
|
+
return new Promise((resolve, reject) => {
|
|
29
|
+
const path = `/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}/commits/${sha}/pulls`
|
|
30
|
+
const req = https.request(
|
|
31
|
+
{
|
|
32
|
+
hostname: 'api.github.com',
|
|
33
|
+
method: 'GET',
|
|
34
|
+
path,
|
|
35
|
+
headers: {
|
|
36
|
+
Accept: 'application/vnd.github+json',
|
|
37
|
+
Authorization: `Bearer ${token}`,
|
|
38
|
+
'User-Agent': 'homebridge-resolve-version-bump',
|
|
39
|
+
'X-GitHub-Api-Version': '2022-11-28',
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
(res) => {
|
|
43
|
+
let body = ''
|
|
44
|
+
res.setEncoding('utf8')
|
|
45
|
+
res.on('data', (chunk) => {
|
|
46
|
+
body += chunk
|
|
47
|
+
})
|
|
48
|
+
res.on('end', () => {
|
|
49
|
+
if (res.statusCode < 200 || res.statusCode >= 300) {
|
|
50
|
+
reject(new Error(`GitHub API request failed (${res.statusCode}): ${body}`))
|
|
51
|
+
return
|
|
52
|
+
}
|
|
53
|
+
try {
|
|
54
|
+
const parsed = JSON.parse(body)
|
|
55
|
+
resolve(Array.isArray(parsed) ? parsed : [])
|
|
56
|
+
} catch (error) {
|
|
57
|
+
reject(new Error(`Failed to parse GitHub API response: ${error.message}`))
|
|
58
|
+
}
|
|
59
|
+
})
|
|
60
|
+
},
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
req.on('error', reject)
|
|
64
|
+
req.end()
|
|
65
|
+
})
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
async function main() {
|
|
69
|
+
const manualInput = (process.argv[2] || '').trim().toLowerCase()
|
|
70
|
+
if (manualInput) {
|
|
71
|
+
if (!allowed.has(manualInput)) {
|
|
72
|
+
console.error(`Invalid version bump '${manualInput}'. Use major, minor, or patch.`)
|
|
73
|
+
process.exit(1)
|
|
74
|
+
}
|
|
75
|
+
console.error(`Using manual version bump input: ${manualInput}`)
|
|
76
|
+
setOutput('version_bump', manualInput)
|
|
77
|
+
return
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
const repository = process.env.GITHUB_REPOSITORY || ''
|
|
81
|
+
const sha = process.env.GITHUB_SHA || ''
|
|
82
|
+
const token = process.env.GITHUB_TOKEN || ''
|
|
83
|
+
|
|
84
|
+
if (!repository || !sha || !token || !repository.includes('/')) {
|
|
85
|
+
console.error('Missing GITHUB_REPOSITORY, GITHUB_SHA, or GITHUB_TOKEN. Defaulting to patch.')
|
|
86
|
+
setOutput('version_bump', 'patch')
|
|
87
|
+
return
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const [owner, repo] = repository.split('/')
|
|
91
|
+
|
|
92
|
+
try {
|
|
93
|
+
const prs = await listPrsForCommit(owner, repo, sha, token)
|
|
94
|
+
const pr = prs.find((candidate) => candidate.merged_at) || prs[0]
|
|
95
|
+
|
|
96
|
+
if (!pr) {
|
|
97
|
+
console.error('No PR associated with commit; defaulting to patch.')
|
|
98
|
+
setOutput('version_bump', 'patch')
|
|
99
|
+
return
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
const labels = (pr.labels || [])
|
|
103
|
+
.map((label) => (typeof label === 'string' ? label : label.name || ''))
|
|
104
|
+
.map((label) => label.toLowerCase())
|
|
105
|
+
|
|
106
|
+
const bump = resolveFromLabels(labels)
|
|
107
|
+
console.error(`Resolved bump '${bump}' from PR #${pr.number} labels: ${labels.join(', ') || '(none)'}`)
|
|
108
|
+
setOutput('version_bump', bump)
|
|
109
|
+
} catch (error) {
|
|
110
|
+
console.error(`Failed to inspect PR labels, defaulting to patch: ${error.message}`)
|
|
111
|
+
setOutput('version_bump', 'patch')
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
main().catch((error) => {
|
|
116
|
+
console.error(error)
|
|
117
|
+
process.exit(1)
|
|
118
|
+
})
|
|
@@ -7,13 +7,54 @@ on:
|
|
|
7
7
|
- 'beta'
|
|
8
8
|
- 'latest'
|
|
9
9
|
workflow_dispatch:
|
|
10
|
+
inputs:
|
|
11
|
+
release_type:
|
|
12
|
+
description: Release channel
|
|
13
|
+
required: true
|
|
14
|
+
type: choice
|
|
15
|
+
options:
|
|
16
|
+
- latest
|
|
17
|
+
- beta
|
|
18
|
+
- alpha
|
|
19
|
+
default: latest
|
|
20
|
+
is_esm:
|
|
21
|
+
description: Package is ESM
|
|
22
|
+
required: true
|
|
23
|
+
type: boolean
|
|
24
|
+
default: true
|
|
25
|
+
version_override:
|
|
26
|
+
description: Exact version (for example 2.1.0). Leave empty for auto bump.
|
|
27
|
+
required: false
|
|
28
|
+
type: string
|
|
29
|
+
version_bump:
|
|
30
|
+
description: Auto bump type when version_override is empty
|
|
31
|
+
required: false
|
|
32
|
+
type: choice
|
|
33
|
+
options:
|
|
34
|
+
- patch
|
|
35
|
+
- minor
|
|
36
|
+
- major
|
|
37
|
+
default: patch
|
|
38
|
+
max_attempts:
|
|
39
|
+
description: Max retries for prerelease collision handling
|
|
40
|
+
required: false
|
|
41
|
+
type: number
|
|
42
|
+
default: 5
|
|
43
|
+
|
|
44
|
+
# Cancel any in-progress workflow for the same branch. A new push should
|
|
45
|
+
# supersede the previous run rather than racing it to publish.
|
|
46
|
+
concurrency:
|
|
47
|
+
group: release-${{ github.ref }}
|
|
48
|
+
cancel-in-progress: true
|
|
10
49
|
|
|
11
50
|
jobs:
|
|
12
|
-
# ───
|
|
51
|
+
# ─── QUALITY GATE (all branches) ────────────────────────────────────────────
|
|
52
|
+
# Build and test run for EVERY push, regardless of branch. Both the beta
|
|
53
|
+
# and stable release paths depend on these passing before anything is
|
|
54
|
+
# published or version-bumped.
|
|
13
55
|
|
|
14
56
|
# 1️⃣ Build and test
|
|
15
57
|
build_and_test:
|
|
16
|
-
if: startsWith(github.ref_name, 'beta')
|
|
17
58
|
uses: homebridge/.github/.github/workflows/nodejs-build-and-test.yml@latest
|
|
18
59
|
with:
|
|
19
60
|
enable_coverage: false
|
|
@@ -22,10 +63,12 @@ jobs:
|
|
|
22
63
|
|
|
23
64
|
# 2️⃣ Lint
|
|
24
65
|
lint:
|
|
25
|
-
if: startsWith(github.ref_name, 'beta')
|
|
26
66
|
needs: build_and_test
|
|
27
67
|
uses: homebridge/.github/.github/workflows/eslint.yml@latest
|
|
28
68
|
|
|
69
|
+
|
|
70
|
+
# ─── BETA RELEASE (branches starting with "beta") ────────────────────────────
|
|
71
|
+
|
|
29
72
|
# 3️⃣ Publish beta to NPM (OIDC — id-token required here and in the reusable workflow)
|
|
30
73
|
beta-publish:
|
|
31
74
|
if: startsWith(github.ref_name, 'beta')
|
|
@@ -54,23 +97,26 @@ jobs:
|
|
|
54
97
|
|
|
55
98
|
# ─── STABLE RELEASE (branch: "latest") ───────────────────────────────────────
|
|
56
99
|
|
|
57
|
-
#
|
|
100
|
+
# 3️⃣ Determine release type, ESM status, and branch name
|
|
58
101
|
determine-release-type:
|
|
59
102
|
if: github.ref_name == 'latest'
|
|
103
|
+
needs: lint
|
|
60
104
|
uses: homebridge/.github/.github/workflows/determine-release-type.yml@latest
|
|
61
105
|
with:
|
|
62
106
|
ref_name: ${{ github.ref_name }}
|
|
63
107
|
|
|
64
|
-
#
|
|
108
|
+
# 4️⃣ Update version and changelog using the scripts
|
|
65
109
|
update-version:
|
|
66
110
|
if: github.ref_name == 'latest'
|
|
67
111
|
needs: determine-release-type
|
|
68
112
|
uses: homebridge/.github/.github/workflows/update-version.yml@latest
|
|
69
113
|
with:
|
|
70
|
-
release_type: ${{ needs.determine-release-type.outputs.release_type }}
|
|
71
|
-
is_esm: ${{ needs.determine-release-type.outputs.is_esm == 'true' }}
|
|
114
|
+
release_type: ${{ needs.determine-release-type.outputs.release_type || inputs.release_type }}
|
|
115
|
+
is_esm: ${{ needs.determine-release-type.outputs.is_esm == 'true' || inputs.is_esm == 'true' }}
|
|
116
|
+
version_override: ${{ inputs.version_override }}
|
|
117
|
+
version_bump: ${{ inputs.version_bump }}
|
|
72
118
|
|
|
73
|
-
#
|
|
119
|
+
# 5️⃣ Publish to NPM and create GitHub release (OIDC — id-token required here and in the reusable workflow)
|
|
74
120
|
publish-release:
|
|
75
121
|
if: github.ref_name == 'latest'
|
|
76
122
|
needs: [determine-release-type, update-version]
|
|
@@ -82,10 +128,13 @@ jobs:
|
|
|
82
128
|
release_type: ${{ needs.determine-release-type.outputs.release_type }}
|
|
83
129
|
version: ${{ needs.update-version.outputs.version }}
|
|
84
130
|
is_esm: ${{ needs.determine-release-type.outputs.is_esm == 'true' }}
|
|
131
|
+
version_override: ${{ inputs.version_override || '' }}
|
|
132
|
+
version_bump: ${{ inputs.version_bump || 'patch' }}
|
|
133
|
+
max_attempts: ${{ inputs.max_attempts || 5 }}
|
|
85
134
|
secrets:
|
|
86
135
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
87
136
|
|
|
88
|
-
#
|
|
137
|
+
# 6️⃣ Promote branch if this is a prerelease (alpha/beta)
|
|
89
138
|
promote-branch:
|
|
90
139
|
if: ${{ github.ref_name == 'latest' && needs.determine-release-type.outputs.release_type != 'latest' && needs.determine-release-type.outputs.release_type != 'skip' }}
|
|
91
140
|
needs: [determine-release-type, publish-release]
|
|
@@ -93,19 +142,19 @@ jobs:
|
|
|
93
142
|
with:
|
|
94
143
|
branch_name: ${{ needs.determine-release-type.outputs.branch_name }}
|
|
95
144
|
release_type: ${{ needs.determine-release-type.outputs.release_type }}
|
|
96
|
-
is_esm: ${{ needs.determine-release-type.outputs.is_esm == 'true' }}
|
|
145
|
+
is_esm: ${{ needs.determine-release-type.outputs.is_esm == 'true' || inputs.is_esm == 'true' }}
|
|
97
146
|
|
|
98
|
-
#
|
|
147
|
+
# 7️⃣ Notify if any job fails
|
|
99
148
|
workflow-failure:
|
|
100
149
|
if: failure()
|
|
101
|
-
needs: [determine-release-type, update-version, publish-release, promote-branch]
|
|
150
|
+
needs: [build_and_test, lint, determine-release-type, update-version, publish-release, promote-branch]
|
|
102
151
|
uses: homebridge/.github/.github/workflows/report-failure.yml@latest
|
|
103
152
|
with:
|
|
104
153
|
workflow_name: ${{ github.workflow }}
|
|
105
154
|
job_name: ${{ github.job }}
|
|
106
155
|
run_url: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
|
|
107
156
|
|
|
108
|
-
#
|
|
157
|
+
# 8️⃣ Post to Discord (Beta + Stable)
|
|
109
158
|
discord:
|
|
110
159
|
name: Release Notifications
|
|
111
160
|
if: ${{ always() && ((startsWith(github.ref_name, 'beta') && needs.beta-publish.result == 'success') || (github.ref_name == 'latest' && needs.publish-release.result == 'success')) }}
|
package/CHANGELOG.md
CHANGED
|
@@ -2,7 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project are documented in this file. This project follows Semantic Versioning.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## [3.1.1](https://github.com/homebridge-plugins/homebridge-august/compare/v3.1.0...v3.1.1) (2026-04-16)
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
* Matter quality, CI gating, lint coverage, and TypeScript strictness ([#210](https://github.com/homebridge-plugins/homebridge-august/issues/210)) ([67d44fe](https://github.com/homebridge-plugins/homebridge-august/commit/67d44febd15ff8467a73458b262dad620235cfaa))
|
|
10
|
+
|
|
11
|
+
**Full Changelog**: https://github.com/homebridge-plugins/homebridge-august/compare/v3.1.0...v3.1.1
|
|
12
|
+
|
|
6
13
|
## [3.1.0](https://github.com/homebridge-plugins/homebridge-august/releases/tag/v3.1.0) (2026-04-16)
|
|
7
14
|
|
|
8
15
|
### What's Changes
|
|
@@ -344,4 +351,4 @@ All notable changes to this project are documented in this file. This project fo
|
|
|
344
351
|
### What's Changes
|
|
345
352
|
- Initial release
|
|
346
353
|
|
|
347
|
-
**Release**: https://github.com/homebridge-plugins/homebridge-august/releases/tag/v1.0.0
|
|
354
|
+
**Release**: https://github.com/homebridge-plugins/homebridge-august/releases/tag/v1.0.0
|
package/dist/devices/device.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../src/devices/device.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAMpG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAEjF,8BAAsB,UAAU;IAc5B,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,cAAc;IAC3C,SAAS,CAAC,SAAS,EAAE,iBAAiB;IACtC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa;IAf1C,SAAgB,GAAG,EAAE,GAAG,CAAA;IACxB,SAAgB,GAAG,EAAE,OAAO,CAAA;IAC5B,SAAgB,MAAM,EAAG,oBAAoB,CAAA;IAC7C,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAA;IAG3B,SAAS,CAAC,aAAa,EAAG,MAAM,CAAA;IAChC,SAAS,CAAC,iBAAiB,EAAG,MAAM,CAAA;IACpC,SAAS,CAAC,gBAAgB,EAAG,MAAM,CAAA;IACnC,SAAS,CAAC,cAAc,EAAG,MAAM,CAAA;IACjC,SAAS,CAAC,qBAAqB,EAAG,MAAM,CAAA;gBAGnB,QAAQ,EAAE,cAAc,EACjC,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,MAAM,GAAG,aAAa;IA2BpC,oBAAoB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAM1D,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB3D,uBAAuB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../src/devices/device.ts"],"names":[],"mappings":"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"}
|
package/dist/devices/device.js
CHANGED
|
@@ -69,9 +69,10 @@ export class deviceBase {
|
|
|
69
69
|
'overrideHomeKitEnabled',
|
|
70
70
|
'external',
|
|
71
71
|
];
|
|
72
|
+
const rec = device;
|
|
72
73
|
properties.forEach((prop) => {
|
|
73
|
-
if (
|
|
74
|
-
deviceConfig[prop] =
|
|
74
|
+
if (rec[prop] !== undefined) {
|
|
75
|
+
deviceConfig[prop] = rec[prop];
|
|
75
76
|
}
|
|
76
77
|
});
|
|
77
78
|
if (Object.keys(deviceConfig).length !== 0) {
|
|
@@ -164,8 +165,9 @@ export class deviceBase {
|
|
|
164
165
|
* Handles 502 Bad Gateway, 401 Unauthorized, 503 Service Unavailable, and network timeouts
|
|
165
166
|
*/
|
|
166
167
|
isTimeoutError(error) {
|
|
167
|
-
// Check for
|
|
168
|
-
|
|
168
|
+
// Check for august-yale TimeoutError by name (stable contract — works regardless
|
|
169
|
+
// of message format changes) and Node.js network timeouts by message
|
|
170
|
+
if (error.name === 'TimeoutError' || error.message?.includes('ETIMEDOUT')) {
|
|
169
171
|
return true;
|
|
170
172
|
}
|
|
171
173
|
// Check for status codes that indicate session expiration or temporary server issues
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device.js","sourceRoot":"","sources":["../../src/devices/device.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"device.js","sourceRoot":"","sources":["../../src/devices/device.ts"],"names":[],"mappings":"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"}
|
package/dist/devices/lock.js
CHANGED
|
@@ -158,7 +158,7 @@ export class LockMechanism extends deviceBase {
|
|
|
158
158
|
if (this.lockStatus) {
|
|
159
159
|
if (this.lockStatus.state) {
|
|
160
160
|
// Lock Mechanism
|
|
161
|
-
this.platform.augustConfig
|
|
161
|
+
this.platform.augustConfig?.addSimpleProps(this.lockStatus);
|
|
162
162
|
if (this.LockMechanism && (this.lockStatus.state.unlocking || this.lockStatus.state.locking)) {
|
|
163
163
|
await this.warnLog(`LockCurrentState: ${this.LockMechanism.LockCurrentState}, locking/unlocking parseStatus`
|
|
164
164
|
+ ` lockStatus: ${JSON.stringify(this.lockStatus)}`);
|
|
@@ -230,7 +230,7 @@ export class LockMechanism extends deviceBase {
|
|
|
230
230
|
if (this.lockEvent.state) {
|
|
231
231
|
this.debugLog(`lockEvent: ${JSON.stringify(this.lockEvent)}`);
|
|
232
232
|
// Lock Mechanism
|
|
233
|
-
this.platform.augustConfig
|
|
233
|
+
this.platform.augustConfig?.addSimpleProps(this.lockEvent);
|
|
234
234
|
if (this.LockMechanism && (this.lockEvent.state.unlocking || this.lockEvent.state.locking)) {
|
|
235
235
|
await this.debugLog(`is ${this.lockEvent.state.unlocking ? 'Unlocking' : this.lockEvent.state.locking ? 'Locking' : ''}, parseEventStatus`
|
|
236
236
|
+ ` lockEventState: ${JSON.stringify(this.lockEvent.state)}`);
|