Skip to content

Update docs after: homeMaker-completion#58

Merged
mabry1985 merged 1 commit intodevfrom
feature/update-docs-after-homemaker-completion
Mar 15, 2026
Merged

Update docs after: homeMaker-completion#58
mabry1985 merged 1 commit intodevfrom
feature/update-docs-after-homemaker-completion

Conversation

@mabry1985
Copy link

Summary

473 doc-relevant files changed recently.

Changed files requiring docs review:

  • .automaker/memory/api.md
  • .automaker/memory/architecture.md
  • .automaker/memory/audit.md
  • .automaker/memory/auth.md
  • .automaker/memory/content-pipeline-validation.md
  • .automaker/memory/cost-optimization.md
  • .automaker/memory/database.md
  • .automaker/memory/documentation.md
  • .automaker/memory/gotchas.md
  • .automaker/memory/gtm-signal-intelligence-project.md
  • .automaker/memory/monitoring.md
  • .automaker/memory/...

Created automatically by Automaker

- Add docs/modules/calendar.md with full API reference, data model,
  event types, job scheduling details, and WebSocket events
- Expand docs/modules/sensors.md HA section from a stub into a full
  setup guide covering WebSocket config, ha: namespace, initial state
  fetch, and auth failure behaviour
- Restructure docs/integrations/home-assistant.md to document both
  the direct WebSocket integration (recommended) and the push-via-REST
  alternative, with connection behaviour notes

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@mabry1985 mabry1985 merged commit d5fe72d into dev Mar 15, 2026
3 of 4 checks passed
@github-actions
Copy link

Hi @mabry1985, thank you for your interest in protoMaker! 🙏

We don't accept code contributions via pull requests.

protoMaker uses an ideas-only contribution model — all implementation is handled by AI agents to maintain architectural consistency and code quality standards.

What you can do instead:

  • 💡 Submit your idea using the Idea Submission template — if accepted, our AI agents will implement it
  • 🐛 Report a bug using the Bug Report template
  • Join the discussion on Discord (invite link TBA) to share feedback

You're welcome to fork the repository and use your changes privately — that's what MIT is for. We just can't merge external code back in.

See CONTRIBUTING.md for the full explanation.

Closing this PR automatically.

mabry1985 added a commit that referenced this pull request Mar 16, 2026
* fix: disable express-rate-limit IPv6 validation for custom keyGenerator

The sensor rate limiter uses a custom keyGenerator that falls back to
req.ip when no sensor ID is available. express-rate-limit v7+ flags
this as a potential IPv6 bypass. Disable the validation since our
fallback is intentional and the app runs on Tailscale (trusted network).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: clean old automaker data + scaffold homeMaker-completion project

Remove 16 legacy automaker project plans and 27 memory files inherited
from the protoLabs Studio fork. Create homeMaker-completion project with
4 milestones: rebrand, sensor DB wiring, vendor UI restore, HA client.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: remove close-external-prs workflow that blocks all PRs

homeMaker is a GitHub fork of automaker, so head.repo.fork evaluates
to true for ALL pull requests — not just external ones. This causes
every PR created by auto-mode agents to be immediately closed.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor: Update all protoLabs Studio UI references to homeMaker (#47)

* feat: wire DB into SensorRegistryService for persistent history (#48) (#49)

- Add BetterSqlite3.Database parameter to SensorRegistryService constructor
- Add private db property, SensorReadingRow/AggregatedRow types, DEFAULT_RETENTION_DAYS constant
- Persist sensor readings to sensor_readings SQLite table in report()
- Move homemakerDb instantiation before SensorRegistryService creation in services.ts
- Remove duplicate homemakerDb declaration; getHomemakerDb() singleton is now shared earlier

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: restore vendor UI — route, nav item, CRUD view (#53)

- Add /vendors route wired to VendorsView
- Add Vendors nav item (Store icon) to sidebar
- Create vendors-view with search, category filters, grid layout
- Create vendor-card, vendor-detail-panel (edit/delete), add-vendor-dialog
- Create use-vendors hook with full CRUD against /api/vendors

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs: add calendar module docs and expand HA integration docs (#58)

- Add docs/modules/calendar.md with full API reference, data model,
  event types, job scheduling details, and WebSocket events
- Expand docs/modules/sensors.md HA section from a stub into a full
  setup guide covering WebSocket config, ha: namespace, initial state
  fetch, and auth failure behaviour
- Restructure docs/integrations/home-assistant.md to document both
  the direct WebSocket integration (recommended) and the push-via-REST
  alternative, with connection behaviour notes

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* epic: M4 Home Assistant Integration Client (#60)

* Build HA WebSocket client service (#55)

* chore: clean old automaker data + scaffold homeMaker-completion project

Remove 16 legacy automaker project plans and 27 memory files inherited
from the protoLabs Studio fork. Create homeMaker-completion project with
4 milestones: rebrand, sensor DB wiring, vendor UI restore, HA client.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: remove close-external-prs workflow that blocks all PRs

homeMaker is a GitHub fork of automaker, so head.repo.fork evaluates
to true for ALL pull requests — not just external ones. This causes
every PR created by auto-mode agents to be immediately closed.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor: Update all protoLabs Studio UI references to homeMaker (#47)

* feat: wire DB into SensorRegistryService for persistent history (#48) (#49)

- Add BetterSqlite3.Database parameter to SensorRegistryService constructor
- Add private db property, SensorReadingRow/AggregatedRow types, DEFAULT_RETENTION_DAYS constant
- Persist sensor readings to sensor_readings SQLite table in report()
- Move homemakerDb instantiation before SensorRegistryService creation in services.ts
- Remove duplicate homemakerDb declaration; getHomemakerDb() singleton is now shared earlier

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: add HAClientService for Home Assistant WebSocket integration

Connects to HA via WebSocket API, authenticates with long-lived access
token, subscribes to state_changed events, and auto-registers discovered
entities as homeMaker sensors. Includes exponential-backoff reconnect
and REST endpoints for status, connect, disconnect, and entity listing.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Add HA configuration UI (#56)

* feat: restore vendor UI — route, nav item, CRUD view (#53)

- Add /vendors route wired to VendorsView
- Add Vendors nav item (Store icon) to sidebar
- Create vendors-view with search, category filters, grid layout
- Create vendor-card, vendor-detail-panel (edit/delete), add-vendor-dialog
- Create use-vendors hook with full CRUD against /api/vendors

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: add Home Assistant configuration section to settings UI

- Add HomeAssistantConfig type to GlobalSettings for URL, access token,
  and per-entity sync state persistence
- Add /api/ha/test and /api/ha/entities routes proxying the HA REST API
  for connection testing and entity discovery
- Create HASection settings component with connection status indicator,
  URL/token form, test connection, and entity sync toggle table
- Wire HASection into settings view with 'home-assistant' nav item

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* style: fix prettier formatting in 10 files

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Agent <agent@protolabsai.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
mabry1985 added a commit that referenced this pull request Mar 16, 2026
* homeMaker-completion: rebrand, sensor DB, vendor UI, HA integration

* fix: disable express-rate-limit IPv6 validation for custom keyGenerator

The sensor rate limiter uses a custom keyGenerator that falls back to
req.ip when no sensor ID is available. express-rate-limit v7+ flags
this as a potential IPv6 bypass. Disable the validation since our
fallback is intentional and the app runs on Tailscale (trusted network).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: clean old automaker data + scaffold homeMaker-completion project

Remove 16 legacy automaker project plans and 27 memory files inherited
from the protoLabs Studio fork. Create homeMaker-completion project with
4 milestones: rebrand, sensor DB wiring, vendor UI restore, HA client.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: remove close-external-prs workflow that blocks all PRs

homeMaker is a GitHub fork of automaker, so head.repo.fork evaluates
to true for ALL pull requests — not just external ones. This causes
every PR created by auto-mode agents to be immediately closed.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor: Update all protoLabs Studio UI references to homeMaker (#47)

* feat: wire DB into SensorRegistryService for persistent history (#48) (#49)

- Add BetterSqlite3.Database parameter to SensorRegistryService constructor
- Add private db property, SensorReadingRow/AggregatedRow types, DEFAULT_RETENTION_DAYS constant
- Persist sensor readings to sensor_readings SQLite table in report()
- Move homemakerDb instantiation before SensorRegistryService creation in services.ts
- Remove duplicate homemakerDb declaration; getHomemakerDb() singleton is now shared earlier

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: restore vendor UI — route, nav item, CRUD view (#53)

- Add /vendors route wired to VendorsView
- Add Vendors nav item (Store icon) to sidebar
- Create vendors-view with search, category filters, grid layout
- Create vendor-card, vendor-detail-panel (edit/delete), add-vendor-dialog
- Create use-vendors hook with full CRUD against /api/vendors

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs: add calendar module docs and expand HA integration docs (#58)

- Add docs/modules/calendar.md with full API reference, data model,
  event types, job scheduling details, and WebSocket events
- Expand docs/modules/sensors.md HA section from a stub into a full
  setup guide covering WebSocket config, ha: namespace, initial state
  fetch, and auth failure behaviour
- Restructure docs/integrations/home-assistant.md to document both
  the direct WebSocket integration (recommended) and the push-via-REST
  alternative, with connection behaviour notes

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* epic: M4 Home Assistant Integration Client (#60)

* Build HA WebSocket client service (#55)

* chore: clean old automaker data + scaffold homeMaker-completion project

Remove 16 legacy automaker project plans and 27 memory files inherited
from the protoLabs Studio fork. Create homeMaker-completion project with
4 milestones: rebrand, sensor DB wiring, vendor UI restore, HA client.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: remove close-external-prs workflow that blocks all PRs

homeMaker is a GitHub fork of automaker, so head.repo.fork evaluates
to true for ALL pull requests — not just external ones. This causes
every PR created by auto-mode agents to be immediately closed.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor: Update all protoLabs Studio UI references to homeMaker (#47)

* feat: wire DB into SensorRegistryService for persistent history (#48) (#49)

- Add BetterSqlite3.Database parameter to SensorRegistryService constructor
- Add private db property, SensorReadingRow/AggregatedRow types, DEFAULT_RETENTION_DAYS constant
- Persist sensor readings to sensor_readings SQLite table in report()
- Move homemakerDb instantiation before SensorRegistryService creation in services.ts
- Remove duplicate homemakerDb declaration; getHomemakerDb() singleton is now shared earlier

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: add HAClientService for Home Assistant WebSocket integration

Connects to HA via WebSocket API, authenticates with long-lived access
token, subscribes to state_changed events, and auto-registers discovered
entities as homeMaker sensors. Includes exponential-backoff reconnect
and REST endpoints for status, connect, disconnect, and entity listing.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Add HA configuration UI (#56)

* feat: restore vendor UI — route, nav item, CRUD view (#53)

- Add /vendors route wired to VendorsView
- Add Vendors nav item (Store icon) to sidebar
- Create vendors-view with search, category filters, grid layout
- Create vendor-card, vendor-detail-panel (edit/delete), add-vendor-dialog
- Create use-vendors hook with full CRUD against /api/vendors

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: add Home Assistant configuration section to settings UI

- Add HomeAssistantConfig type to GlobalSettings for URL, access token,
  and per-entity sync state persistence
- Add /api/ha/test and /api/ha/entities routes proxying the HA REST API
  for connection testing and entity discovery
- Create HASection settings component with connection status indicator,
  URL/token form, test connection, and entity sync toggle table
- Wire HASection into settings view with 'home-assistant' nav item

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* style: fix prettier formatting in 10 files

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Agent <agent@protolabsai.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: update board view presentation for home project management

Rename board columns to home-friendly terminology (To Do, In Review,
On Hold), update empty state descriptions to remove dev jargon, add
default home categories (Maintenance, Renovation, Purchase, Research,
DIY, Organization) to the category autocomplete, update the new task
dialog title/placeholders/button text to use home language, and hide
dev-specific card content (git branch name, PR URL). Underlying data
model unchanged.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Agent <agent@protolabsai.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
mabry1985 added a commit that referenced this pull request Mar 16, 2026
* test: add E2E tests for critical homeMaker cross-service flows (#64)

Adds Playwright E2E tests covering four critical integration flows:
1. Sensor lifecycle: register → report reading → query history
2. Maintenance completion: create task → complete → verify XP awarded
3. Inventory + sensor: add asset → link sensor → verify readings
4. Gamification milestone: complete task → achievement unlocked

Tests use API-level requests (no UI interaction required) and support
both AUTOMAKER_AUTO_LOGIN dev mode and API key auth for CI environments.
All four tests pass against the live dev server.

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* refactor: Phase 1: Remove Dev Routes and Nav Items (#65)

* Phase 2: Clean Up Orphaned View Components (#67) (#68)

* test: add E2E tests for critical homeMaker cross-service flows (#64)

Adds Playwright E2E tests covering four critical integration flows:
1. Sensor lifecycle: register → report reading → query history
2. Maintenance completion: create task → complete → verify XP awarded
3. Inventory + sensor: add asset → link sensor → verify readings
4. Gamification milestone: complete task → achievement unlocked

Tests use API-level requests (no UI interaction required) and support
both AUTOMAKER_AUTO_LOGIN dev mode and API key auth for CI environments.
All four tests pass against the live dev server.



* refactor: Phase 1: Remove Dev Routes and Nav Items (#65)

* feat: remove orphaned dev platform view components

Deletes analytics-view, designs-view, docs-view, file-editor-view,
github-issues-view, and project-settings-view — all were unreachable
after route removal in the previous phase. Cleans up the lazy import
and issues tab from ProjectsView that referenced github-issues-view.



---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: home-friendly board view presentation (M2 Phase 2) (#69)

* homeMaker-completion: rebrand, sensor DB, vendor UI, HA integration

* fix: disable express-rate-limit IPv6 validation for custom keyGenerator

The sensor rate limiter uses a custom keyGenerator that falls back to
req.ip when no sensor ID is available. express-rate-limit v7+ flags
this as a potential IPv6 bypass. Disable the validation since our
fallback is intentional and the app runs on Tailscale (trusted network).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: clean old automaker data + scaffold homeMaker-completion project

Remove 16 legacy automaker project plans and 27 memory files inherited
from the protoLabs Studio fork. Create homeMaker-completion project with
4 milestones: rebrand, sensor DB wiring, vendor UI restore, HA client.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: remove close-external-prs workflow that blocks all PRs

homeMaker is a GitHub fork of automaker, so head.repo.fork evaluates
to true for ALL pull requests — not just external ones. This causes
every PR created by auto-mode agents to be immediately closed.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor: Update all protoLabs Studio UI references to homeMaker (#47)

* feat: wire DB into SensorRegistryService for persistent history (#48) (#49)

- Add BetterSqlite3.Database parameter to SensorRegistryService constructor
- Add private db property, SensorReadingRow/AggregatedRow types, DEFAULT_RETENTION_DAYS constant
- Persist sensor readings to sensor_readings SQLite table in report()
- Move homemakerDb instantiation before SensorRegistryService creation in services.ts
- Remove duplicate homemakerDb declaration; getHomemakerDb() singleton is now shared earlier

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: restore vendor UI — route, nav item, CRUD view (#53)

- Add /vendors route wired to VendorsView
- Add Vendors nav item (Store icon) to sidebar
- Create vendors-view with search, category filters, grid layout
- Create vendor-card, vendor-detail-panel (edit/delete), add-vendor-dialog
- Create use-vendors hook with full CRUD against /api/vendors

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs: add calendar module docs and expand HA integration docs (#58)

- Add docs/modules/calendar.md with full API reference, data model,
  event types, job scheduling details, and WebSocket events
- Expand docs/modules/sensors.md HA section from a stub into a full
  setup guide covering WebSocket config, ha: namespace, initial state
  fetch, and auth failure behaviour
- Restructure docs/integrations/home-assistant.md to document both
  the direct WebSocket integration (recommended) and the push-via-REST
  alternative, with connection behaviour notes

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* epic: M4 Home Assistant Integration Client (#60)

* Build HA WebSocket client service (#55)

* chore: clean old automaker data + scaffold homeMaker-completion project

Remove 16 legacy automaker project plans and 27 memory files inherited
from the protoLabs Studio fork. Create homeMaker-completion project with
4 milestones: rebrand, sensor DB wiring, vendor UI restore, HA client.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: remove close-external-prs workflow that blocks all PRs

homeMaker is a GitHub fork of automaker, so head.repo.fork evaluates
to true for ALL pull requests — not just external ones. This causes
every PR created by auto-mode agents to be immediately closed.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor: Update all protoLabs Studio UI references to homeMaker (#47)

* feat: wire DB into SensorRegistryService for persistent history (#48) (#49)

- Add BetterSqlite3.Database parameter to SensorRegistryService constructor
- Add private db property, SensorReadingRow/AggregatedRow types, DEFAULT_RETENTION_DAYS constant
- Persist sensor readings to sensor_readings SQLite table in report()
- Move homemakerDb instantiation before SensorRegistryService creation in services.ts
- Remove duplicate homemakerDb declaration; getHomemakerDb() singleton is now shared earlier

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: add HAClientService for Home Assistant WebSocket integration

Connects to HA via WebSocket API, authenticates with long-lived access
token, subscribes to state_changed events, and auto-registers discovered
entities as homeMaker sensors. Includes exponential-backoff reconnect
and REST endpoints for status, connect, disconnect, and entity listing.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Add HA configuration UI (#56)

* feat: restore vendor UI — route, nav item, CRUD view (#53)

- Add /vendors route wired to VendorsView
- Add Vendors nav item (Store icon) to sidebar
- Create vendors-view with search, category filters, grid layout
- Create vendor-card, vendor-detail-panel (edit/delete), add-vendor-dialog
- Create use-vendors hook with full CRUD against /api/vendors

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: add Home Assistant configuration section to settings UI

- Add HomeAssistantConfig type to GlobalSettings for URL, access token,
  and per-entity sync state persistence
- Add /api/ha/test and /api/ha/entities routes proxying the HA REST API
  for connection testing and entity discovery
- Create HASection settings component with connection status indicator,
  URL/token form, test connection, and entity sync toggle table
- Wire HASection into settings view with 'home-assistant' nav item

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* style: fix prettier formatting in 10 files

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Agent <agent@protolabsai.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: update board view presentation for home project management

Rename board columns to home-friendly terminology (To Do, In Review,
On Hold), update empty state descriptions to remove dev jargon, add
default home categories (Maintenance, Renovation, Purchase, Research,
DIY, Organization) to the category autocomplete, update the new task
dialog title/placeholders/button text to use home language, and hide
dev-specific card content (git branch name, PR URL). Underlying data
model unchanged.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Agent <agent@protolabsai.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: fill in product identity — spec goals, terminology, and home-focused UI strings

- spec.md: filled in Product Goals, Target Users (2-4 users across 1-2 households,
  Tailscale-only), Key Workflows (AI research, maintenance, inventory, budget),
  and Constraints (self-hosted, SQLite, no public internet exposure)
- use-navigation.ts: renamed 'Family Chat' label to 'Household'
- welcome-view.tsx: replaced 'Your autonomous AI development studio' with
  'Your self-hosted home management hub'; replaced 'AI-powered development'
  with 'AI-powered research and planning' on the new project card

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore: remove auto-generated TODO preamble from spec.md now that all sections are filled in

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Claude Agent <agent@protolabsai.com>
mabry1985 added a commit that referenced this pull request Mar 16, 2026
* test: add E2E tests for critical homeMaker cross-service flows (#64)

Adds Playwright E2E tests covering four critical integration flows:
1. Sensor lifecycle: register → report reading → query history
2. Maintenance completion: create task → complete → verify XP awarded
3. Inventory + sensor: add asset → link sensor → verify readings
4. Gamification milestone: complete task → achievement unlocked

Tests use API-level requests (no UI interaction required) and support
both AUTOMAKER_AUTO_LOGIN dev mode and API key auth for CI environments.
All four tests pass against the live dev server.



* refactor: Phase 1: Remove Dev Routes and Nav Items (#65)

* Phase 2: Clean Up Orphaned View Components (#67) (#68)

* test: add E2E tests for critical homeMaker cross-service flows (#64)

Adds Playwright E2E tests covering four critical integration flows:
1. Sensor lifecycle: register → report reading → query history
2. Maintenance completion: create task → complete → verify XP awarded
3. Inventory + sensor: add asset → link sensor → verify readings
4. Gamification milestone: complete task → achievement unlocked

Tests use API-level requests (no UI interaction required) and support
both AUTOMAKER_AUTO_LOGIN dev mode and API key auth for CI environments.
All four tests pass against the live dev server.



* refactor: Phase 1: Remove Dev Routes and Nav Items (#65)

* feat: remove orphaned dev platform view components

Deletes analytics-view, designs-view, docs-view, file-editor-view,
github-issues-view, and project-settings-view — all were unreachable
after route removal in the previous phase. Cleans up the lazy import
and issues tab from ProjectsView that referenced github-issues-view.



---------



* feat: home-friendly board view presentation (M2 Phase 2) (#69)

* homeMaker-completion: rebrand, sensor DB, vendor UI, HA integration

* fix: disable express-rate-limit IPv6 validation for custom keyGenerator

The sensor rate limiter uses a custom keyGenerator that falls back to
req.ip when no sensor ID is available. express-rate-limit v7+ flags
this as a potential IPv6 bypass. Disable the validation since our
fallback is intentional and the app runs on Tailscale (trusted network).



* chore: clean old automaker data + scaffold homeMaker-completion project

Remove 16 legacy automaker project plans and 27 memory files inherited
from the protoLabs Studio fork. Create homeMaker-completion project with
4 milestones: rebrand, sensor DB wiring, vendor UI restore, HA client.



* fix: remove close-external-prs workflow that blocks all PRs

homeMaker is a GitHub fork of automaker, so head.repo.fork evaluates
to true for ALL pull requests — not just external ones. This causes
every PR created by auto-mode agents to be immediately closed.



* refactor: Update all protoLabs Studio UI references to homeMaker (#47)

* feat: wire DB into SensorRegistryService for persistent history (#48) (#49)

- Add BetterSqlite3.Database parameter to SensorRegistryService constructor
- Add private db property, SensorReadingRow/AggregatedRow types, DEFAULT_RETENTION_DAYS constant
- Persist sensor readings to sensor_readings SQLite table in report()
- Move homemakerDb instantiation before SensorRegistryService creation in services.ts
- Remove duplicate homemakerDb declaration; getHomemakerDb() singleton is now shared earlier



* feat: restore vendor UI — route, nav item, CRUD view (#53)

- Add /vendors route wired to VendorsView
- Add Vendors nav item (Store icon) to sidebar
- Create vendors-view with search, category filters, grid layout
- Create vendor-card, vendor-detail-panel (edit/delete), add-vendor-dialog
- Create use-vendors hook with full CRUD against /api/vendors



* docs: add calendar module docs and expand HA integration docs (#58)

- Add docs/modules/calendar.md with full API reference, data model,
  event types, job scheduling details, and WebSocket events
- Expand docs/modules/sensors.md HA section from a stub into a full
  setup guide covering WebSocket config, ha: namespace, initial state
  fetch, and auth failure behaviour
- Restructure docs/integrations/home-assistant.md to document both
  the direct WebSocket integration (recommended) and the push-via-REST
  alternative, with connection behaviour notes



* epic: M4 Home Assistant Integration Client (#60)

* Build HA WebSocket client service (#55)

* chore: clean old automaker data + scaffold homeMaker-completion project

Remove 16 legacy automaker project plans and 27 memory files inherited
from the protoLabs Studio fork. Create homeMaker-completion project with
4 milestones: rebrand, sensor DB wiring, vendor UI restore, HA client.



* fix: remove close-external-prs workflow that blocks all PRs

homeMaker is a GitHub fork of automaker, so head.repo.fork evaluates
to true for ALL pull requests — not just external ones. This causes
every PR created by auto-mode agents to be immediately closed.



* refactor: Update all protoLabs Studio UI references to homeMaker (#47)

* feat: wire DB into SensorRegistryService for persistent history (#48) (#49)

- Add BetterSqlite3.Database parameter to SensorRegistryService constructor
- Add private db property, SensorReadingRow/AggregatedRow types, DEFAULT_RETENTION_DAYS constant
- Persist sensor readings to sensor_readings SQLite table in report()
- Move homemakerDb instantiation before SensorRegistryService creation in services.ts
- Remove duplicate homemakerDb declaration; getHomemakerDb() singleton is now shared earlier



* feat: add HAClientService for Home Assistant WebSocket integration

Connects to HA via WebSocket API, authenticates with long-lived access
token, subscribes to state_changed events, and auto-registers discovered
entities as homeMaker sensors. Includes exponential-backoff reconnect
and REST endpoints for status, connect, disconnect, and entity listing.



---------



* Add HA configuration UI (#56)

* feat: restore vendor UI — route, nav item, CRUD view (#53)

- Add /vendors route wired to VendorsView
- Add Vendors nav item (Store icon) to sidebar
- Create vendors-view with search, category filters, grid layout
- Create vendor-card, vendor-detail-panel (edit/delete), add-vendor-dialog
- Create use-vendors hook with full CRUD against /api/vendors



* feat: add Home Assistant configuration section to settings UI

- Add HomeAssistantConfig type to GlobalSettings for URL, access token,
  and per-entity sync state persistence
- Add /api/ha/test and /api/ha/entities routes proxying the HA REST API
  for connection testing and entity discovery
- Create HASection settings component with connection status indicator,
  URL/token form, test connection, and entity sync toggle table
- Wire HASection into settings view with 'home-assistant' nav item



---------



---------



* style: fix prettier formatting in 10 files



---------




* feat: update board view presentation for home project management

Rename board columns to home-friendly terminology (To Do, In Review,
On Hold), update empty state descriptions to remove dev jargon, add
default home categories (Maintenance, Renovation, Purchase, Research,
DIY, Organization) to the category autocomplete, update the new task
dialog title/placeholders/button text to use home language, and hide
dev-specific card content (git branch name, PR URL). Underlying data
model unchanged.



---------




* feat: fill in product identity — spec goals, terminology, and home-focused UI strings

- spec.md: filled in Product Goals, Target Users (2-4 users across 1-2 households,
  Tailscale-only), Key Workflows (AI research, maintenance, inventory, budget),
  and Constraints (self-hosted, SQLite, no public internet exposure)
- use-navigation.ts: renamed 'Family Chat' label to 'Household'
- welcome-view.tsx: replaced 'Your autonomous AI development studio' with
  'Your self-hosted home management hub'; replaced 'AI-powered development'
  with 'AI-powered research and planning' on the new project card



* chore: remove auto-generated TODO preamble from spec.md now that all sections are filled in



---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Claude Agent <agent@protolabsai.com>
mabry1985 added a commit that referenced this pull request Mar 16, 2026
…tity (#73)

* fix: disable express-rate-limit IPv6 validation for custom keyGenerator

The sensor rate limiter uses a custom keyGenerator that falls back to
req.ip when no sensor ID is available. express-rate-limit v7+ flags
this as a potential IPv6 bypass. Disable the validation since our
fallback is intentional and the app runs on Tailscale (trusted network).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: clean old automaker data + scaffold homeMaker-completion project

Remove 16 legacy automaker project plans and 27 memory files inherited
from the protoLabs Studio fork. Create homeMaker-completion project with
4 milestones: rebrand, sensor DB wiring, vendor UI restore, HA client.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: remove close-external-prs workflow that blocks all PRs

homeMaker is a GitHub fork of automaker, so head.repo.fork evaluates
to true for ALL pull requests — not just external ones. This causes
every PR created by auto-mode agents to be immediately closed.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor: Update all protoLabs Studio UI references to homeMaker (#47)

* feat: wire DB into SensorRegistryService for persistent history (#48) (#49)

- Add BetterSqlite3.Database parameter to SensorRegistryService constructor
- Add private db property, SensorReadingRow/AggregatedRow types, DEFAULT_RETENTION_DAYS constant
- Persist sensor readings to sensor_readings SQLite table in report()
- Move homemakerDb instantiation before SensorRegistryService creation in services.ts
- Remove duplicate homemakerDb declaration; getHomemakerDb() singleton is now shared earlier

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: restore vendor UI — route, nav item, CRUD view (#53)

- Add /vendors route wired to VendorsView
- Add Vendors nav item (Store icon) to sidebar
- Create vendors-view with search, category filters, grid layout
- Create vendor-card, vendor-detail-panel (edit/delete), add-vendor-dialog
- Create use-vendors hook with full CRUD against /api/vendors

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs: add calendar module docs and expand HA integration docs (#58)

- Add docs/modules/calendar.md with full API reference, data model,
  event types, job scheduling details, and WebSocket events
- Expand docs/modules/sensors.md HA section from a stub into a full
  setup guide covering WebSocket config, ha: namespace, initial state
  fetch, and auth failure behaviour
- Restructure docs/integrations/home-assistant.md to document both
  the direct WebSocket integration (recommended) and the push-via-REST
  alternative, with connection behaviour notes

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* epic: M4 Home Assistant Integration Client (#60)

* Build HA WebSocket client service (#55)

* chore: clean old automaker data + scaffold homeMaker-completion project

Remove 16 legacy automaker project plans and 27 memory files inherited
from the protoLabs Studio fork. Create homeMaker-completion project with
4 milestones: rebrand, sensor DB wiring, vendor UI restore, HA client.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: remove close-external-prs workflow that blocks all PRs

homeMaker is a GitHub fork of automaker, so head.repo.fork evaluates
to true for ALL pull requests — not just external ones. This causes
every PR created by auto-mode agents to be immediately closed.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor: Update all protoLabs Studio UI references to homeMaker (#47)

* feat: wire DB into SensorRegistryService for persistent history (#48) (#49)

- Add BetterSqlite3.Database parameter to SensorRegistryService constructor
- Add private db property, SensorReadingRow/AggregatedRow types, DEFAULT_RETENTION_DAYS constant
- Persist sensor readings to sensor_readings SQLite table in report()
- Move homemakerDb instantiation before SensorRegistryService creation in services.ts
- Remove duplicate homemakerDb declaration; getHomemakerDb() singleton is now shared earlier

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: add HAClientService for Home Assistant WebSocket integration

Connects to HA via WebSocket API, authenticates with long-lived access
token, subscribes to state_changed events, and auto-registers discovered
entities as homeMaker sensors. Includes exponential-backoff reconnect
and REST endpoints for status, connect, disconnect, and entity listing.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Add HA configuration UI (#56)

* feat: restore vendor UI — route, nav item, CRUD view (#53)

- Add /vendors route wired to VendorsView
- Add Vendors nav item (Store icon) to sidebar
- Create vendors-view with search, category filters, grid layout
- Create vendor-card, vendor-detail-panel (edit/delete), add-vendor-dialog
- Create use-vendors hook with full CRUD against /api/vendors

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: add Home Assistant configuration section to settings UI

- Add HomeAssistantConfig type to GlobalSettings for URL, access token,
  and per-entity sync state persistence
- Add /api/ha/test and /api/ha/entities routes proxying the HA REST API
  for connection testing and entity discovery
- Create HASection settings component with connection status indicator,
  URL/token form, test connection, and entity sync toggle table
- Wire HASection into settings view with 'home-assistant' nav item

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* style: fix prettier formatting in 10 files

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* test: add E2E tests for critical homeMaker cross-service flows (#64)

Adds Playwright E2E tests covering four critical integration flows:
1. Sensor lifecycle: register → report reading → query history
2. Maintenance completion: create task → complete → verify XP awarded
3. Inventory + sensor: add asset → link sensor → verify readings
4. Gamification milestone: complete task → achievement unlocked

Tests use API-level requests (no UI interaction required) and support
both AUTOMAKER_AUTO_LOGIN dev mode and API key auth for CI environments.
All four tests pass against the live dev server.

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* refactor: Phase 1: Remove Dev Routes and Nav Items (#65)

* Phase 2: Clean Up Orphaned View Components (#67) (#68)

* test: add E2E tests for critical homeMaker cross-service flows (#64)

Adds Playwright E2E tests covering four critical integration flows:
1. Sensor lifecycle: register → report reading → query history
2. Maintenance completion: create task → complete → verify XP awarded
3. Inventory + sensor: add asset → link sensor → verify readings
4. Gamification milestone: complete task → achievement unlocked

Tests use API-level requests (no UI interaction required) and support
both AUTOMAKER_AUTO_LOGIN dev mode and API key auth for CI environments.
All four tests pass against the live dev server.



* refactor: Phase 1: Remove Dev Routes and Nav Items (#65)

* feat: remove orphaned dev platform view components

Deletes analytics-view, designs-view, docs-view, file-editor-view,
github-issues-view, and project-settings-view — all were unreachable
after route removal in the previous phase. Cleans up the lazy import
and issues tab from ProjectsView that referenced github-issues-view.



---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: home-friendly board view presentation (M2 Phase 2) (#69)

* homeMaker-completion: rebrand, sensor DB, vendor UI, HA integration

* fix: disable express-rate-limit IPv6 validation for custom keyGenerator

The sensor rate limiter uses a custom keyGenerator that falls back to
req.ip when no sensor ID is available. express-rate-limit v7+ flags
this as a potential IPv6 bypass. Disable the validation since our
fallback is intentional and the app runs on Tailscale (trusted network).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: clean old automaker data + scaffold homeMaker-completion project

Remove 16 legacy automaker project plans and 27 memory files inherited
from the protoLabs Studio fork. Create homeMaker-completion project with
4 milestones: rebrand, sensor DB wiring, vendor UI restore, HA client.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: remove close-external-prs workflow that blocks all PRs

homeMaker is a GitHub fork of automaker, so head.repo.fork evaluates
to true for ALL pull requests — not just external ones. This causes
every PR created by auto-mode agents to be immediately closed.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor: Update all protoLabs Studio UI references to homeMaker (#47)

* feat: wire DB into SensorRegistryService for persistent history (#48) (#49)

- Add BetterSqlite3.Database parameter to SensorRegistryService constructor
- Add private db property, SensorReadingRow/AggregatedRow types, DEFAULT_RETENTION_DAYS constant
- Persist sensor readings to sensor_readings SQLite table in report()
- Move homemakerDb instantiation before SensorRegistryService creation in services.ts
- Remove duplicate homemakerDb declaration; getHomemakerDb() singleton is now shared earlier

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: restore vendor UI — route, nav item, CRUD view (#53)

- Add /vendors route wired to VendorsView
- Add Vendors nav item (Store icon) to sidebar
- Create vendors-view with search, category filters, grid layout
- Create vendor-card, vendor-detail-panel (edit/delete), add-vendor-dialog
- Create use-vendors hook with full CRUD against /api/vendors

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs: add calendar module docs and expand HA integration docs (#58)

- Add docs/modules/calendar.md with full API reference, data model,
  event types, job scheduling details, and WebSocket events
- Expand docs/modules/sensors.md HA section from a stub into a full
  setup guide covering WebSocket config, ha: namespace, initial state
  fetch, and auth failure behaviour
- Restructure docs/integrations/home-assistant.md to document both
  the direct WebSocket integration (recommended) and the push-via-REST
  alternative, with connection behaviour notes

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* epic: M4 Home Assistant Integration Client (#60)

* Build HA WebSocket client service (#55)

* chore: clean old automaker data + scaffold homeMaker-completion project

Remove 16 legacy automaker project plans and 27 memory files inherited
from the protoLabs Studio fork. Create homeMaker-completion project with
4 milestones: rebrand, sensor DB wiring, vendor UI restore, HA client.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: remove close-external-prs workflow that blocks all PRs

homeMaker is a GitHub fork of automaker, so head.repo.fork evaluates
to true for ALL pull requests — not just external ones. This causes
every PR created by auto-mode agents to be immediately closed.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor: Update all protoLabs Studio UI references to homeMaker (#47)

* feat: wire DB into SensorRegistryService for persistent history (#48) (#49)

- Add BetterSqlite3.Database parameter to SensorRegistryService constructor
- Add private db property, SensorReadingRow/AggregatedRow types, DEFAULT_RETENTION_DAYS constant
- Persist sensor readings to sensor_readings SQLite table in report()
- Move homemakerDb instantiation before SensorRegistryService creation in services.ts
- Remove duplicate homemakerDb declaration; getHomemakerDb() singleton is now shared earlier

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: add HAClientService for Home Assistant WebSocket integration

Connects to HA via WebSocket API, authenticates with long-lived access
token, subscribes to state_changed events, and auto-registers discovered
entities as homeMaker sensors. Includes exponential-backoff reconnect
and REST endpoints for status, connect, disconnect, and entity listing.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Add HA configuration UI (#56)

* feat: restore vendor UI — route, nav item, CRUD view (#53)

- Add /vendors route wired to VendorsView
- Add Vendors nav item (Store icon) to sidebar
- Create vendors-view with search, category filters, grid layout
- Create vendor-card, vendor-detail-panel (edit/delete), add-vendor-dialog
- Create use-vendors hook with full CRUD against /api/vendors

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: add Home Assistant configuration section to settings UI

- Add HomeAssistantConfig type to GlobalSettings for URL, access token,
  and per-entity sync state persistence
- Add /api/ha/test and /api/ha/entities routes proxying the HA REST API
  for connection testing and entity discovery
- Create HASection settings component with connection status indicator,
  URL/token form, test connection, and entity sync toggle table
- Wire HASection into settings view with 'home-assistant' nav item

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* style: fix prettier formatting in 10 files

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Agent <agent@protolabsai.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: update board view presentation for home project management

Rename board columns to home-friendly terminology (To Do, In Review,
On Hold), update empty state descriptions to remove dev jargon, add
default home categories (Maintenance, Renovation, Purchase, Research,
DIY, Organization) to the category autocomplete, update the new task
dialog title/placeholders/button text to use home language, and hide
dev-specific card content (git branch name, PR URL). Underlying data
model unchanged.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Agent <agent@protolabsai.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Phase 1: Spec and User-Facing Copy (#70) (#71)

* test: add E2E tests for critical homeMaker cross-service flows (#64)

Adds Playwright E2E tests covering four critical integration flows:
1. Sensor lifecycle: register → report reading → query history
2. Maintenance completion: create task → complete → verify XP awarded
3. Inventory + sensor: add asset → link sensor → verify readings
4. Gamification milestone: complete task → achievement unlocked

Tests use API-level requests (no UI interaction required) and support
both AUTOMAKER_AUTO_LOGIN dev mode and API key auth for CI environments.
All four tests pass against the live dev server.



* refactor: Phase 1: Remove Dev Routes and Nav Items (#65)

* Phase 2: Clean Up Orphaned View Components (#67) (#68)

* test: add E2E tests for critical homeMaker cross-service flows (#64)

Adds Playwright E2E tests covering four critical integration flows:
1. Sensor lifecycle: register → report reading → query history
2. Maintenance completion: create task → complete → verify XP awarded
3. Inventory + sensor: add asset → link sensor → verify readings
4. Gamification milestone: complete task → achievement unlocked

Tests use API-level requests (no UI interaction required) and support
both AUTOMAKER_AUTO_LOGIN dev mode and API key auth for CI environments.
All four tests pass against the live dev server.



* refactor: Phase 1: Remove Dev Routes and Nav Items (#65)

* feat: remove orphaned dev platform view components

Deletes analytics-view, designs-view, docs-view, file-editor-view,
github-issues-view, and project-settings-view — all were unreachable
after route removal in the previous phase. Cleans up the lazy import
and issues tab from ProjectsView that referenced github-issues-view.



---------



* feat: home-friendly board view presentation (M2 Phase 2) (#69)

* homeMaker-completion: rebrand, sensor DB, vendor UI, HA integration

* fix: disable express-rate-limit IPv6 validation for custom keyGenerator

The sensor rate limiter uses a custom keyGenerator that falls back to
req.ip when no sensor ID is available. express-rate-limit v7+ flags
this as a potential IPv6 bypass. Disable the validation since our
fallback is intentional and the app runs on Tailscale (trusted network).



* chore: clean old automaker data + scaffold homeMaker-completion project

Remove 16 legacy automaker project plans and 27 memory files inherited
from the protoLabs Studio fork. Create homeMaker-completion project with
4 milestones: rebrand, sensor DB wiring, vendor UI restore, HA client.



* fix: remove close-external-prs workflow that blocks all PRs

homeMaker is a GitHub fork of automaker, so head.repo.fork evaluates
to true for ALL pull requests — not just external ones. This causes
every PR created by auto-mode agents to be immediately closed.



* refactor: Update all protoLabs Studio UI references to homeMaker (#47)

* feat: wire DB into SensorRegistryService for persistent history (#48) (#49)

- Add BetterSqlite3.Database parameter to SensorRegistryService constructor
- Add private db property, SensorReadingRow/AggregatedRow types, DEFAULT_RETENTION_DAYS constant
- Persist sensor readings to sensor_readings SQLite table in report()
- Move homemakerDb instantiation before SensorRegistryService creation in services.ts
- Remove duplicate homemakerDb declaration; getHomemakerDb() singleton is now shared earlier



* feat: restore vendor UI — route, nav item, CRUD view (#53)

- Add /vendors route wired to VendorsView
- Add Vendors nav item (Store icon) to sidebar
- Create vendors-view with search, category filters, grid layout
- Create vendor-card, vendor-detail-panel (edit/delete), add-vendor-dialog
- Create use-vendors hook with full CRUD against /api/vendors



* docs: add calendar module docs and expand HA integration docs (#58)

- Add docs/modules/calendar.md with full API reference, data model,
  event types, job scheduling details, and WebSocket events
- Expand docs/modules/sensors.md HA section from a stub into a full
  setup guide covering WebSocket config, ha: namespace, initial state
  fetch, and auth failure behaviour
- Restructure docs/integrations/home-assistant.md to document both
  the direct WebSocket integration (recommended) and the push-via-REST
  alternative, with connection behaviour notes



* epic: M4 Home Assistant Integration Client (#60)

* Build HA WebSocket client service (#55)

* chore: clean old automaker data + scaffold homeMaker-completion project

Remove 16 legacy automaker project plans and 27 memory files inherited
from the protoLabs Studio fork. Create homeMaker-completion project with
4 milestones: rebrand, sensor DB wiring, vendor UI restore, HA client.



* fix: remove close-external-prs workflow that blocks all PRs

homeMaker is a GitHub fork of automaker, so head.repo.fork evaluates
to true for ALL pull requests — not just external ones. This causes
every PR created by auto-mode agents to be immediately closed.



* refactor: Update all protoLabs Studio UI references to homeMaker (#47)

* feat: wire DB into SensorRegistryService for persistent history (#48) (#49)

- Add BetterSqlite3.Database parameter to SensorRegistryService constructor
- Add private db property, SensorReadingRow/AggregatedRow types, DEFAULT_RETENTION_DAYS constant
- Persist sensor readings to sensor_readings SQLite table in report()
- Move homemakerDb instantiation before SensorRegistryService creation in services.ts
- Remove duplicate homemakerDb declaration; getHomemakerDb() singleton is now shared earlier



* feat: add HAClientService for Home Assistant WebSocket integration

Connects to HA via WebSocket API, authenticates with long-lived access
token, subscribes to state_changed events, and auto-registers discovered
entities as homeMaker sensors. Includes exponential-backoff reconnect
and REST endpoints for status, connect, disconnect, and entity listing.



---------



* Add HA configuration UI (#56)

* feat: restore vendor UI — route, nav item, CRUD view (#53)

- Add /vendors route wired to VendorsView
- Add Vendors nav item (Store icon) to sidebar
- Create vendors-view with search, category filters, grid layout
- Create vendor-card, vendor-detail-panel (edit/delete), add-vendor-dialog
- Create use-vendors hook with full CRUD against /api/vendors



* feat: add Home Assistant configuration section to settings UI

- Add HomeAssistantConfig type to GlobalSettings for URL, access token,
  and per-entity sync state persistence
- Add /api/ha/test and /api/ha/entities routes proxying the HA REST API
  for connection testing and entity discovery
- Create HASection settings component with connection status indicator,
  URL/token form, test connection, and entity sync toggle table
- Wire HASection into settings view with 'home-assistant' nav item



---------



---------



* style: fix prettier formatting in 10 files



---------




* feat: update board view presentation for home project management

Rename board columns to home-friendly terminology (To Do, In Review,
On Hold), update empty state descriptions to remove dev jargon, add
default home categories (Maintenance, Renovation, Purchase, Research,
DIY, Organization) to the category autocomplete, update the new task
dialog title/placeholders/button text to use home language, and hide
dev-specific card content (git branch name, PR URL). Underlying data
model unchanged.



---------




* feat: fill in product identity — spec goals, terminology, and home-focused UI strings

- spec.md: filled in Product Goals, Target Users (2-4 users across 1-2 households,
  Tailscale-only), Key Workflows (AI research, maintenance, inventory, budget),
  and Constraints (self-hosted, SQLite, no public internet exposure)
- use-navigation.ts: renamed 'Family Chat' label to 'Household'
- welcome-view.tsx: replaced 'Your autonomous AI development studio' with
  'Your self-hosted home management hub'; replaced 'AI-powered development'
  with 'AI-powered research and planning' on the new project card



* chore: remove auto-generated TODO preamble from spec.md now that all sections are filled in



---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Claude Agent <agent@protolabsai.com>

* epic: M2 Home AI Agent Refinement

* test: add E2E tests for critical homeMaker cross-service flows (#64)

Adds Playwright E2E tests covering four critical integration flows:
1. Sensor lifecycle: register → report reading → query history
2. Maintenance completion: create task → complete → verify XP awarded
3. Inventory + sensor: add asset → link sensor → verify readings
4. Gamification milestone: complete task → achievement unlocked

Tests use API-level requests (no UI interaction required) and support
both AUTOMAKER_AUTO_LOGIN dev mode and API key auth for CI environments.
All four tests pass against the live dev server.



* feat: add home research mode agent and research-first board task UX

- Add `createHomeResearchAgent()` to agent-definitions.ts with WebSearch/WebFetch tools;
  produces structured reports (overview, top options, pros/cons, price ranges, recommendation)
  and is explicitly bounded from writing code or modifying files
- Add `getHomeResearcherPrompt()` in libs/prompts/src/agents/home-researcher.ts and
  export it from the agents barrel
- Extend `featureType` union in libs/types/src/feature.ts to include 'research' alongside
  'code' and 'content'
- Update add-feature-dialog to default new tasks to 'research' type with a task type
  selector (Research vs Code) and research-specific description placeholder examples



---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: correct maintenance API paths — remove extra /schedules segment

Frontend was hitting /api/maintenance/schedules but server mounts at
/api/maintenance. Removed the extra path segment from all hook calls.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Agent <agent@protolabsai.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant