@homebridge-plugins/homebridge-smarthq 0.5.0-beta.5 → 0.5.0-beta.7

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.
Files changed (113) hide show
  1. package/.github/ISSUE_TEMPLATE/config.yml +1 -1
  2. package/.github/copilot-instructions.md +90 -0
  3. package/.github/scripts/branch-helper.sh +41 -0
  4. package/.github/workflows/beta-release.yml +1 -1
  5. package/.github/workflows/release.yml +53 -17
  6. package/CHANGELOG.md +563 -18
  7. package/README.md +15 -0
  8. package/dist/devices/OpalIceMaker/Managers/OpalProgressSvcManager.d.ts +1 -1
  9. package/dist/devices/OpalIceMaker/Managers/OpalProgressSvcManager.d.ts.map +1 -1
  10. package/dist/devices/OpalIceMaker/Managers/OpalProgressSvcManager.js +9 -5
  11. package/dist/devices/OpalIceMaker/Managers/OpalProgressSvcManager.js.map +1 -1
  12. package/dist/devices/advantium.d.ts +10 -0
  13. package/dist/devices/advantium.d.ts.map +1 -0
  14. package/dist/devices/advantium.js +75 -0
  15. package/dist/devices/advantium.js.map +1 -0
  16. package/dist/devices/beverageCenter.d.ts +10 -0
  17. package/dist/devices/beverageCenter.d.ts.map +1 -0
  18. package/dist/devices/beverageCenter.js +125 -0
  19. package/dist/devices/beverageCenter.js.map +1 -0
  20. package/dist/devices/clothesDryer.d.ts +10 -0
  21. package/dist/devices/clothesDryer.d.ts.map +1 -0
  22. package/dist/devices/clothesDryer.js +84 -0
  23. package/dist/devices/clothesDryer.js.map +1 -0
  24. package/dist/devices/clothesWasher.d.ts +10 -0
  25. package/dist/devices/clothesWasher.d.ts.map +1 -0
  26. package/dist/devices/clothesWasher.js +84 -0
  27. package/dist/devices/clothesWasher.js.map +1 -0
  28. package/dist/devices/coffeeMaker.d.ts +10 -0
  29. package/dist/devices/coffeeMaker.d.ts.map +1 -0
  30. package/dist/devices/coffeeMaker.js +79 -0
  31. package/dist/devices/coffeeMaker.js.map +1 -0
  32. package/dist/devices/device.js +1 -1
  33. package/dist/devices/device.js.map +1 -1
  34. package/dist/devices/dishwasher.d.ts +0 -1
  35. package/dist/devices/dishwasher.d.ts.map +1 -1
  36. package/dist/devices/dishwasher.js +47 -12
  37. package/dist/devices/dishwasher.js.map +1 -1
  38. package/dist/devices/hood.d.ts +34 -0
  39. package/dist/devices/hood.d.ts.map +1 -0
  40. package/dist/devices/hood.js +306 -0
  41. package/dist/devices/hood.js.map +1 -0
  42. package/dist/devices/microwave.d.ts +10 -0
  43. package/dist/devices/microwave.d.ts.map +1 -0
  44. package/dist/devices/microwave.js +84 -0
  45. package/dist/devices/microwave.js.map +1 -0
  46. package/dist/devices/oven.d.ts.map +1 -1
  47. package/dist/devices/oven.js +78 -32
  48. package/dist/devices/oven.js.map +1 -1
  49. package/dist/devices/refrigerator.d.ts.map +1 -1
  50. package/dist/devices/refrigerator.js +142 -13
  51. package/dist/devices/refrigerator.js.map +1 -1
  52. package/dist/devices/waterFilter.d.ts +10 -0
  53. package/dist/devices/waterFilter.d.ts.map +1 -0
  54. package/dist/devices/waterFilter.js +67 -0
  55. package/dist/devices/waterFilter.js.map +1 -0
  56. package/dist/devices/waterHeater.d.ts +10 -0
  57. package/dist/devices/waterHeater.d.ts.map +1 -0
  58. package/dist/devices/waterHeater.js +95 -0
  59. package/dist/devices/waterHeater.js.map +1 -0
  60. package/dist/devices/waterSoftener.d.ts +10 -0
  61. package/dist/devices/waterSoftener.d.ts.map +1 -0
  62. package/dist/devices/waterSoftener.js +67 -0
  63. package/dist/devices/waterSoftener.js.map +1 -0
  64. package/dist/platform.d.ts +10 -0
  65. package/dist/platform.d.ts.map +1 -1
  66. package/dist/platform.js +383 -0
  67. package/dist/platform.js.map +1 -1
  68. package/dist/settings.d.ts +13 -0
  69. package/dist/settings.d.ts.map +1 -1
  70. package/dist/settings.js +3 -0
  71. package/dist/settings.js.map +1 -1
  72. package/docs/assets/highlight.css +7 -0
  73. package/docs/assets/main.js +5 -5
  74. package/docs/assets/navigation.js +1 -0
  75. package/docs/assets/search.js +1 -0
  76. package/docs/assets/style.css +248 -226
  77. package/docs/classes/SmartHQPlatform.html +45 -56
  78. package/docs/hierarchy.html +1 -0
  79. package/docs/index.html +22 -12
  80. package/docs/interfaces/DeviceOptions.html +2 -3
  81. package/docs/interfaces/SmartHQPlatformConfig.html +6 -17
  82. package/docs/interfaces/SmartHqContext.html +6 -4
  83. package/docs/interfaces/SmartHqERDResponse.html +7 -8
  84. package/docs/interfaces/credentials.html +3 -4
  85. package/docs/interfaces/devicesConfig.html +7 -8
  86. package/docs/interfaces/options.html +7 -8
  87. package/docs/media/copilot-instructions.md +90 -0
  88. package/docs/modules.html +1 -2
  89. package/docs/variables/API_URL.html +1 -2
  90. package/docs/variables/ERD_CODES.html +1 -2
  91. package/docs/variables/ERD_TYPES.html +1 -2
  92. package/docs/variables/KEEPALIVE_TIMEOUT.html +1 -2
  93. package/docs/variables/LOGIN_URL.html +2 -3
  94. package/docs/variables/OAUTH2_CLIENT_ID.html +1 -2
  95. package/docs/variables/OAUTH2_CLIENT_SECRET.html +1 -2
  96. package/docs/variables/OAUTH2_REDIRECT_URI.html +1 -2
  97. package/docs/variables/PLATFORM_NAME.html +2 -3
  98. package/docs/variables/PLUGIN_NAME.html +2 -3
  99. package/docs/variables/SECURE_URL.html +2 -3
  100. package/docs/variables/default.html +1 -0
  101. package/package.json +21 -28
  102. package/typedoc.json +0 -4
  103. package/vitest.config.ts +6 -5
  104. package/.github/workflows/build.yml +0 -18
  105. package/.github/workflows/changerelease.yml +0 -11
  106. package/.github/workflows/labeler.yml +0 -9
  107. package/.github/workflows/release-drafter.yml +0 -14
  108. package/docs/assets/dmt/dmt-component-data.js +0 -1
  109. package/docs/assets/dmt/dmt-components.css +0 -20
  110. package/docs/assets/dmt/dmt-components.js +0 -67
  111. package/docs/assets/dmt/dmt-search.cmp +0 -0
  112. package/docs/assets/dmt/dmt-theme.css +0 -1
  113. package/docs/functions/default.html +0 -2
@@ -1,4 +1,4 @@
1
- blank_issues_enabled: false
1
+ blank_issues_enabled: true
2
2
  contact_links:
3
3
  - name: Homebridge Discord Channel for SmartHQ
4
4
  url: https://discord.gg/8fpZA4S
@@ -0,0 +1,90 @@
1
+ # GitHub Copilot Instructions for homebridge-smarthq
2
+
3
+ ## Branch Management and PR Workflow
4
+
5
+ ### Current Project State
6
+
7
+ - **Stable branch**: `latest` (version 0.4.0)
8
+ - **Active beta branch**: `beta-0.5.0` (currently at v0.5.0-beta.4)
9
+ - **Main development**: All new features and non-critical fixes should target `beta-0.5.0`
10
+ - **Critical patches**: For urgent fixes to stable release, may target new `beta-0.4.x` branch
11
+
12
+ ### Branch Targeting Requirements
13
+
14
+ All pull requests **MUST** be directed to a beta branch first, never directly to the main branch (`latest`). This ensures proper testing and gradual release management.
15
+
16
+ ### Beta Branch Creation
17
+
18
+ If no appropriate beta branch exists, create one based on the next possible version using semantic versioning:
19
+
20
+ 1. **Current stable version**: Check `package.json` in the `latest` branch for the current stable version (currently 0.4.0)
21
+ 2. **Current beta version**: Check if `beta-0.5.0` exists and is active (currently has v0.5.0-beta.4)
22
+ 3. **Determine next version** based on change type:
23
+ - **Patch** (bug fixes): If working on 0.4.x patches → create `beta-0.4.1`
24
+ - **Minor** (new features): Use existing `beta-0.5.0` or create next minor version
25
+ - **Major** (breaking changes): 1.0.0 → create `beta-1.0.0`
26
+
27
+ 4. **Create beta branch** from the latest stable branch (if needed):
28
+ ```bash
29
+ git fetch origin
30
+ git checkout latest
31
+ git pull origin latest
32
+ git checkout -b beta-X.Y.Z
33
+ git push origin beta-X.Y.Z
34
+ ```
35
+
36
+ **Current Status**: `beta-0.5.0` branch exists and is active with several beta releases (v0.5.0-beta.1 through v0.5.0-beta.4)
37
+
38
+ ### Required Labels Before Assignment
39
+
40
+ Before assigning any issue to Copilot, the following labels **MUST** be set to determine the semantic version increment:
41
+
42
+ - **`patch`** - For bug fixes, security patches, documentation updates, and other non-feature changes
43
+ - **`minor`** - For new features, enhancements, and backwards-compatible additions
44
+ - **`major`** - For breaking changes, API changes, and backwards-incompatible modifications
45
+
46
+ ### PR Workflow
47
+
48
+ 1. **Check for appropriate beta branch**: Look for existing beta branches that match the intended version
49
+ 2. **Create beta branch if needed**: If no appropriate beta branch exists, create one as described above
50
+ 3. **Target the beta branch**: Always target PRs to the beta branch, not `latest`
51
+ 4. **Use semantic versioning**: Ensure the target beta branch version aligns with the change type (patch/minor/major)
52
+
53
+ ### Branch Naming Convention
54
+
55
+ - Main development branch: `latest`
56
+ - Beta branches: `beta-X.Y.Z` (e.g., `beta-0.5.0`, `beta-0.4.1`, `beta-1.0.0`)
57
+ - Feature branches: Follow standard naming (e.g., `feature/add-support-for-xyz`, `fix/bug-description`)
58
+
59
+ ### Release Process
60
+
61
+ 1. **Beta releases**: PRs merge to beta branches → trigger beta release workflow
62
+ 2. **Stable releases**: Beta branches merge to `latest` → trigger main release workflow
63
+
64
+ ### Examples
65
+
66
+ #### For a Bug Fix (patch):
67
+ - Label: `patch`
68
+ - Target branch: `beta-0.4.1` (for patches to stable 0.4.0) or `beta-0.5.0` (for patches to upcoming 0.5.0)
69
+ - If targeting patches to stable release, create `beta-0.4.1` from `latest`
70
+ - If targeting current development, use existing `beta-0.5.0`
71
+
72
+ #### For a New Feature (minor):
73
+ - Label: `minor`
74
+ - Target branch: `beta-0.5.0` (currently active beta branch)
75
+ - Use existing `beta-0.5.0` branch which is actively receiving minor updates
76
+
77
+ #### For Breaking Changes (major):
78
+ - Label: `major`
79
+ - Target branch: `beta-1.0.0` (if current beta is 0.5.0)
80
+ - Create `beta-1.0.0` from current `beta-0.5.0` or `latest` as appropriate
81
+
82
+ ### Validation
83
+
84
+ Before creating any PR, ensure:
85
+ - [ ] Appropriate label (patch/minor/major) is set on the issue
86
+ - [ ] Target beta branch exists or has been created
87
+ - [ ] Beta branch version matches the semantic version implied by the label
88
+ - [ ] All changes are focused and minimal for the specific issue being addressed
89
+
90
+ This workflow ensures proper version management, thorough testing through beta releases, and maintains stability of the main codebase.
@@ -0,0 +1,41 @@
1
+ #!/bin/bash
2
+
3
+ # Branch Target Helper for homebridge-smarthq
4
+ # This script helps determine which beta branch to target based on change type
5
+
6
+ echo "🏠 Homebridge SmartHQ - Branch Target Helper"
7
+ echo "==========================================="
8
+ echo
9
+
10
+ # Ensure we have the latest remote info
11
+ git fetch origin >/dev/null 2>&1
12
+
13
+ # Get current versions
14
+ STABLE_VERSION=$(git show latest:package.json 2>/dev/null | grep '"version"' | cut -d'"' -f4)
15
+ BETA_BRANCHES=$(git branch -r | grep "origin/beta-" | sed 's/.*origin\///' | sort -V)
16
+
17
+ echo "📊 Current State:"
18
+ echo " Stable version (latest): $STABLE_VERSION"
19
+ echo " Available beta branches:"
20
+ if [ -z "$BETA_BRANCHES" ]; then
21
+ echo " - beta-0.5.0 (active development - v0.5.0-beta.4)"
22
+ else
23
+ for branch in $BETA_BRANCHES; do
24
+ echo " - $branch"
25
+ done
26
+ fi
27
+ echo
28
+
29
+ echo "🎯 Branch Targeting Guide:"
30
+ echo " 🐛 Bug fixes (patch): beta-0.4.1 (patches) or beta-0.5.0 (development)"
31
+ echo " ✨ New features (minor): beta-0.5.0 (active development)"
32
+ echo " 💥 Breaking changes: beta-1.0.0 (create if needed)"
33
+ echo
34
+
35
+ echo "📋 Required Labels:"
36
+ echo " - patch: Bug fixes, security patches, documentation"
37
+ echo " - minor: New features, enhancements"
38
+ echo " - major: Breaking changes, API changes"
39
+ echo
40
+
41
+ echo "⚠️ Remember: ALL PRs must target beta branches, never 'latest' directly!"
@@ -52,4 +52,4 @@ jobs:
52
52
  Version `v${{ needs.publish.outputs.NPM_VERSION }}`
53
53
  url: "https://github.com/homebridge-plugins/homebridge-smarthq/releases/tag/v${{ needs.publish.outputs.NPM_VERSION }}"
54
54
  secrets:
55
- DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK_URL_BETA || secrets.DISCORD_WEBHOOK_URL_LATEST }}
55
+ DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK_URL_BETA || secrets.DISCORD_WEBHOOK_URL_LATEST }}
@@ -1,35 +1,71 @@
1
- name: Release
1
+ name: Unified Release
2
2
 
3
3
  on:
4
- release:
5
- types: [published]
4
+ push:
5
+ branches:
6
+ #- "alpha-*"
7
+ #- "beta-*"
8
+ - latest
9
+ workflow_dispatch:
6
10
 
7
11
  jobs:
8
- build_and_test:
9
- uses: homebridge/.github/.github/workflows/nodejs-build-and-test.yml@latest
12
+ # 1️⃣ Determine release type, ESM status, and branch name
13
+ determine-release-type:
14
+ uses: homebridge/.github/.github/workflows/determine-release-type.yml@latest
10
15
  with:
11
- enable_coverage: false
12
- secrets:
13
- token: ${{ secrets.GITHUB_TOKEN }}
16
+ ref_name: ${{ github.ref_name }}
17
+
18
+ # 2️⃣ Update version and changelog using the scripts
19
+ update-version:
20
+ needs: determine-release-type
21
+ uses: homebridge/.github/.github/workflows/update-version.yml@latest
22
+ with:
23
+ release_type: ${{ needs.determine-release-type.outputs.release_type }}
24
+ is_esm: ${{ needs.determine-release-type.outputs.is_esm == 'true' }}
14
25
 
15
- publish:
16
- needs: build_and_test
17
- if: ${{ github.repository == 'homebridge-plugins/homebridge-smarthq' }}
26
+ # 3️⃣ Publish to NPM and create GitHub release
27
+ publish-release:
28
+ needs: [determine-release-type, update-version]
18
29
  permissions:
19
30
  id-token: write
20
- uses: homebridge/.github/.github/workflows/npm-publish-esm.yml@latest
31
+ contents: write
32
+ uses: homebridge/.github/.github/workflows/publish-release.yml@latest
33
+ with:
34
+ release_type: ${{ needs.determine-release-type.outputs.release_type }}
35
+ version: ${{ needs.update-version.outputs.version }}
36
+ is_esm: ${{ needs.determine-release-type.outputs.is_esm == 'true' }}
21
37
  secrets:
22
- npm_auth_token: ${{ secrets.npm_token }}
38
+ NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
39
+
40
+ # 4️⃣ Promote branch if this is a prerelease (alpha/beta)
41
+ promote-branch:
42
+ needs: [determine-release-type, publish-release]
43
+ if: ${{ needs.determine-release-type.outputs.release_type != 'latest' && needs.determine-release-type.outputs.release_type != 'skip' }}
44
+ uses: homebridge/.github/.github/workflows/promote-branch.yml@latest
45
+ with:
46
+ branch_name: ${{ needs.determine-release-type.outputs.branch_name }}
47
+ release_type: ${{ needs.determine-release-type.outputs.release_type }}
48
+ is_esm: ${{ needs.determine-release-type.outputs.is_esm == 'true' }}
49
+
50
+ # 5️⃣ Notify if any previous job fails
51
+ workflow-failure:
52
+ if: ${{ failure() }}
53
+ needs: [determine-release-type, update-version, publish-release, promote-branch]
54
+ uses: homebridge/.github/.github/workflows/report-failure.yml@latest
55
+ with:
56
+ workflow_name: ${{ github.workflow }}
57
+ job_name: ${{ github.job }}
58
+ run_url: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
23
59
 
60
+ # 6️⃣ Post to Discord
24
61
  github-releases-to-discord:
25
62
  name: Discord Webhooks
26
- needs: [build_and_test,publish]
27
- if: ${{ github.repository == 'homebridge-plugins/homebridge-smarthq' }}
63
+ needs: [determine-release-type, update-version, publish-release]
28
64
  uses: homebridge/.github/.github/workflows/discord-webhooks.yml@latest
29
65
  with:
30
66
  title: "SmartHQ Release"
31
67
  description: |
32
- Version `v${{ needs.publish.outputs.NPM_VERSION }}`
33
- url: "https://github.com/homebridge-plugins/homebridge-smarthq/releases/tag/v${{ needs.publish.outputs.NPM_VERSION }}"
68
+ Version `v${{ needs.update-version.outputs.version }}`
69
+ url: "https://github.com/homebridge-plugins/homebridge-smarthq/releases/tag/v${{ needs.update-version.outputs.version }}"
34
70
  secrets:
35
71
  DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK_URL_LATEST }}