Commit 9e8e367
Phase 1: Spec and User-Facing Copy (#70)
* 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>1 parent d961342 commit 9e8e367
File tree
112 files changed
+415
-12925
lines changed- apps/ui
- src
- components
- layout
- sidebar/hooks
- views
- analytics-view
- board-view
- components/kanban-card
- dialogs
- designs-view
- dnd
- inspector
- library
- renderer
- docs-view
- file-editor-view
- components
- github-issues-view
- components
- dialogs
- hooks
- project-settings-view
- components
- config
- hooks
- projects-view
- routes
- tests/homeMaker
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
112 files changed
+415
-12925
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
9 | | - | |
10 | 9 | | |
11 | 10 | | |
12 | 11 | | |
| |||
28 | 27 | | |
29 | 28 | | |
30 | 29 | | |
31 | | - | |
32 | 30 | | |
33 | 31 | | |
34 | 32 | | |
| |||
59 | 57 | | |
60 | 58 | | |
61 | 59 | | |
62 | | - | |
63 | 60 | | |
64 | 61 | | |
65 | 62 | | |
| |||
92 | 89 | | |
93 | 90 | | |
94 | 91 | | |
95 | | - | |
96 | | - | |
97 | | - | |
98 | 92 | | |
99 | 93 | | |
100 | 94 | | |
| |||
108 | 102 | | |
109 | 103 | | |
110 | 104 | | |
111 | | - | |
112 | | - | |
113 | | - | |
114 | 105 | | |
115 | 106 | | |
116 | 107 | | |
| |||
164 | 155 | | |
165 | 156 | | |
166 | 157 | | |
167 | | - | |
168 | | - | |
169 | | - | |
170 | 158 | | |
171 | 159 | | |
172 | 160 | | |
| |||
258 | 246 | | |
259 | 247 | | |
260 | 248 | | |
261 | | - | |
262 | | - | |
263 | | - | |
264 | | - | |
265 | 249 | | |
266 | 250 | | |
267 | 251 | | |
| |||
271 | 255 | | |
272 | 256 | | |
273 | 257 | | |
274 | | - | |
275 | | - | |
276 | 258 | | |
277 | 259 | | |
278 | 260 | | |
| |||
Lines changed: 6 additions & 28 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
32 | | - | |
33 | 32 | | |
34 | | - | |
35 | 33 | | |
36 | 34 | | |
37 | | - | |
38 | | - | |
39 | 35 | | |
40 | | - | |
41 | | - | |
42 | 36 | | |
43 | 37 | | |
44 | 38 | | |
45 | | - | |
46 | 39 | | |
47 | 40 | | |
48 | | - | |
49 | | - | |
50 | | - | |
51 | | - | |
52 | 41 | | |
53 | 42 | | |
54 | 43 | | |
| |||
59 | 48 | | |
60 | 49 | | |
61 | 50 | | |
62 | | - | |
63 | | - | |
64 | | - | |
65 | | - | |
66 | 51 | | |
67 | 52 | | |
68 | 53 | | |
69 | 54 | | |
70 | | - | |
71 | | - | |
72 | | - | |
73 | | - | |
74 | 55 | | |
75 | 56 | | |
76 | 57 | | |
| |||
80 | 61 | | |
81 | 62 | | |
82 | 63 | | |
83 | | - | |
84 | | - | |
85 | 64 | | |
86 | 65 | | |
87 | 66 | | |
| |||
91 | 70 | | |
92 | 71 | | |
93 | 72 | | |
94 | | - | |
95 | 73 | | |
96 | 74 | | |
97 | 75 | | |
| |||
130 | 108 | | |
131 | 109 | | |
132 | 110 | | |
133 | | - | |
| 111 | + | |
134 | 112 | | |
135 | 113 | | |
136 | 114 | | |
| |||
172 | 150 | | |
173 | 151 | | |
174 | 152 | | |
175 | | - | |
176 | | - | |
| 153 | + | |
| 154 | + | |
177 | 155 | | |
178 | 156 | | |
179 | 157 | | |
| |||
185 | 163 | | |
186 | 164 | | |
187 | 165 | | |
188 | | - | |
| 166 | + | |
189 | 167 | | |
190 | 168 | | |
191 | | - | |
| 169 | + | |
192 | 170 | | |
193 | 171 | | |
194 | 172 | | |
195 | 173 | | |
196 | 174 | | |
197 | | - | |
| 175 | + | |
198 | 176 | | |
199 | 177 | | |
200 | 178 | | |
| |||
This file was deleted.
0 commit comments