-
Notifications
You must be signed in to change notification settings - Fork 1
Add camera, Video Doorbell, cook doorbell, probe sensors, and cook-mode switches #2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
22 commits
Select commit
Hold shift + click to select a range
212f901
docs: design for expanded HomeKit features (doorbell, camera, probes,…
keithah 0d661c1
docs: plain doorbell now + camera later, snapshot vs video clarified
keithah 61ed24d
docs: implementation plan for expanded HomeKit features
keithah 297f3fa
feat: config types and normalization for doorbell, modes, probe sensors
keithah 356fa9f
feat: parse food-probe telemetry and add startMode helper
keithah f4573af
feat: add doorbell, cook-mode switch, and probe sensor accessories
keithah 09b8b79
feat: config UI for doorbell, probe sensors, and cook-mode switches
keithah b1c5dc2
docs: document new opt-in features and intentional omissions
keithah c7405c6
feat: parse 10011 camera frames into latest snapshot URL
keithah 8f08023
feat: interior camera + Video Doorbell (snapshot + ffmpeg live stream)
keithah 45572bb
docs: mark camera feature as built in spec
keithah 16d8606
fix: parse real probe telemetry format (sensor_data.probe array)
keithah 57f6138
chore: 0.1.1-beta.0
keithah 8057515
feat(ui): expose doorbell, camera, probe, and mode-switch settings in…
keithah 3100969
fix(camera): don't advertise audio — video-only feed, fixes stream crash
keithah 25f5aed
feat(camera): live view advances — pipe evolving stills into ffmpeg
keithah d0add8f
fix(probe): single food probe, not left/right
keithah 706ca52
fix(probe): remove legacy left/right probe services on upgrade
keithah d7865c9
chore: release 0.2.0-beta
keithah 4012cc3
chore: release 0.2.0-beta.1
keithah d39f8e3
fix: remove unsupported door-open trigger
keithah 2cbe2f5
docs: align PR2 validation notes
keithah File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
95 changes: 95 additions & 0 deletions
95
docs/superpowers/plans/2026-07-08-doorbell-probe-polish.md
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,95 @@ | ||
| # Doorbell and Probe Polish Implementation Plan | ||
|
|
||
| > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. | ||
|
|
||
| **Goal:** Remove the unsupported door-open doorbell trigger and make the food-probe accessory singular while cleaning up legacy plural accessories. | ||
|
|
||
| **Architecture:** Keep the changes in existing boundaries: `protocol.ts` owns normalized config shape, `platform.ts` owns accessory UUID/name lifecycle, schema/UI/README expose user-facing config. Add protocol and platform tests so behavior is covered without depending on a real Homebridge runtime. | ||
|
|
||
| **Tech Stack:** TypeScript, Homebridge plugin API types, Vitest. | ||
|
|
||
| --- | ||
|
|
||
| ### Task 1: Remove Unsupported Door-Open Trigger | ||
|
|
||
| **Files:** | ||
| - Modify: `src/protocol.ts` | ||
| - Modify: `src/protocol.test.ts` | ||
| - Modify: `config.schema.json` | ||
| - Modify: `homebridge-ui/public/index.html` | ||
| - Modify: `README.md` | ||
| - Modify: `docs/superpowers/specs/2026-07-08-june-expanded-homekit-features-design.md` | ||
|
|
||
| - [ ] **Step 1: Write failing protocol tests** | ||
|
|
||
| In `src/protocol.test.ts`, change expected doorbell trigger objects so they only contain `done` and `ready`, and add an assertion that an input `doorOpen` value is ignored. | ||
|
|
||
| - [ ] **Step 2: Run protocol tests to verify failure** | ||
|
|
||
| Run: `npm test -- src/protocol.test.ts` | ||
| Expected: FAIL because `normalizeOvenConfig` still returns `doorOpen`. | ||
|
|
||
| - [ ] **Step 3: Remove `doorOpen` from normalized config** | ||
|
|
||
| In `src/protocol.ts`, change `JuneDoorbellConfig.triggers` to `{ done: boolean; ready: boolean }` and remove the `doorOpen` default/pass-through line. | ||
|
|
||
| - [ ] **Step 4: Remove user-facing config entries** | ||
|
|
||
| Remove `doorOpen` from `config.schema.json` properties and form list. Remove stale docs language that describes door-open as pending or tentative. | ||
|
|
||
| - [ ] **Step 5: Run protocol tests** | ||
|
|
||
| Run: `npm test -- src/protocol.test.ts` | ||
| Expected: PASS. | ||
|
|
||
| ### Task 2: Singular Probe Accessory and Legacy Cleanup | ||
|
|
||
| **Files:** | ||
| - Modify: `src/platform.ts` | ||
| - Create: `src/platform.test.ts` | ||
|
|
||
| - [ ] **Step 1: Write failing platform tests** | ||
|
|
||
| Create `src/platform.test.ts` with fake Homebridge API classes. Test that enabling `probeSensors` registers an accessory named `Kitchen Probe` for an oven named `Kitchen`, and that a cached legacy UUID generated from `ovenId:probes` is unregistered. | ||
|
|
||
| - [ ] **Step 2: Run platform tests to verify failure** | ||
|
|
||
| Run: `npm test -- src/platform.test.ts` | ||
| Expected: FAIL because current code registers `Kitchen Probes` and treats `ovenId:probes` as the current wanted UUID. | ||
|
|
||
| - [ ] **Step 3: Rename platform kind and display name** | ||
|
|
||
| In `src/platform.ts`, change the accessory kind from `probes` to `probe`, bind the accessory with `${oven.name || 'June'} Probe`, and instantiate `JuneProbeSensorAccessory` for `kind === 'probe'`. | ||
|
|
||
| - [ ] **Step 4: Add legacy cleanup** | ||
|
|
||
| In `src/platform.ts`, ensure the previous UUID generated from `${client.config.ovenId}:probes` is not marked wanted and is unregistered by the existing stale cleanup path. | ||
|
|
||
| - [ ] **Step 5: Run platform tests** | ||
|
|
||
| Run: `npm test -- src/platform.test.ts` | ||
| Expected: PASS. | ||
|
|
||
| ### Task 3: Full Verification | ||
|
|
||
| **Files:** | ||
| - No new files beyond Tasks 1-2. | ||
|
|
||
| - [ ] **Step 1: Run full test suite** | ||
|
|
||
| Run: `npm test` | ||
| Expected: all test files pass. | ||
|
|
||
| - [ ] **Step 2: Run lint/typecheck** | ||
|
|
||
| Run: `npm run lint` | ||
| Expected: TypeScript exits 0. | ||
|
|
||
| - [ ] **Step 3: Run build** | ||
|
|
||
| Run: `npm run build` | ||
| Expected: TypeScript emits `dist` successfully. | ||
|
|
||
| - [ ] **Step 4: Commit and push** | ||
|
|
||
| Commit focused changes and push to `feature/expanded-homekit-features`. | ||
Oops, something went wrong.
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Keep the Markdown heading hierarchy sequential.
### Task 1skips directly from the H1 title to H3. Change task headings to##(or add an H2 section) to satisfy MD001 and preserve document navigation.🧰 Tools
🪛 markdownlint-cli2 (0.22.1)
[warning] 13-13: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3
(MD001, heading-increment)
🤖 Prompt for AI Agents
Source: Linters/SAST tools