Skip to content

Commit 34cefae

Browse files
squizzer73claude
andcommitted
v0.2.3 — axonometric dollhouse polish, sun theming, TV scaling
- Axo view: dark-by-default rooms, RGB wall glow when lit, double-ring floor glow ellipses, recessed info cards, MDI person icon - Multi-floor: upper floor visually stacks above lower with increased default gap (250) and reduced wall height (25) - Flat view: straight-on tilt (rotateX 38°, perspective-origin 50% 50%), ResizeObserver canvas sizing so grid never bleeds outside wrapper - Sun-based ambient theming via sun.sun elevation (amber → blue tint) - Occupancy pulse animation (0.7 s ease-out keyframe scale) - TV/wallboard text scaling: vw-based clamp() for fonts and icons - Muted dark room colour palette so illuminated rooms stand out clearly - Deploy cmd updated to write both .js and .js.gz - README rewritten; CHANGELOG.md added Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 30195f2 commit 34cefae

7 files changed

Lines changed: 624 additions & 155 deletions

File tree

CHANGELOG.md

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
# Changelog
2+
3+
## [0.2.3] — 2026-05-10
4+
5+
### Added
6+
- **Axonometric dollhouse view** — rooms rendered as 3D boxes with illuminated top face and side wall panels; unlit rooms are dark, lit rooms glow with the light's actual RGB colour
7+
- **Recessed info cards** — temperature, humidity and room name displayed on an inset card embossed into the axo room floor
8+
- **Multi-floor vertical stacking** — upper floors visually float above lower floors with a configurable gap; the two floors overlap slightly for a natural dollhouse silhouette
9+
- **Double-ring floor glow** — two blurred ellipses at the base of each lit room (outer 1.6× radius at 14% opacity, inner at 32%) for realistic light spill
10+
- **MDI person icon in axo view** — SVG path rendered directly, matching the flat-view occupancy watermark
11+
- **Sun-based ambient theming**`sun.sun` elevation drives a subtle inset box-shadow: amber at golden hour (elevation 15°→−6°), blue-amber blend at dusk/dawn, deep blue at night
12+
- **Occupancy pulse animation** — person icon scales in with a `0.7 s ease-out` keyframe animation on appearance
13+
14+
### Changed
15+
- **Dark-by-default room colours** — rooms are dark grey/navy until a light is on, so illumination is immediately obvious; flat-view palette updated to muted dark tones
16+
- **Flat grid tilt**`rotateX(38deg) rotateY(0deg)` with `perspective-origin: 50% 50%` for a straight-on tilt without keystone distortion
17+
- **Canvas sizing**`ResizeObserver` caps canvas width so the rotated grid never bleeds outside the card wrapper
18+
- **TV/wallboard text scaling** — all font sizes use `vw`-based `clamp()` (room name `clamp(0.8rem, 1.2vw, 1.8rem)`, data rows `clamp(0.75rem, 1.0vw, 1.5rem)`, icons `clamp(16px, 1.4vw, 26px)`) for legibility from across a room
19+
- **Default wall height** reduced to `25` (was `80`) for a less exaggerated axo silhouette
20+
- **Default floor gap** increased to `250` (was `150`) for clear floor separation
21+
22+
### Fixed
23+
- SVG blur filters use inline `style="filter:blur()"` instead of `filter="url(#…)"` to avoid the HA `<base>` HTTPS bug
24+
- Deploy command updated to write both `.js` and `.js.gz` so HA's service worker serves the latest build immediately
25+
26+
---
27+
28+
## [0.2.2] — 2026-05-08
29+
30+
### Added
31+
- Axonometric view Phase 1: perspective SVG projection, wall panels, basic floor glow
32+
- HTTPS SVG filter fix (inline `filter:blur()`)
33+
34+
---
35+
36+
## [0.2.1] — prior
37+
38+
### Added
39+
- Occupancy watermark: centred person icon with asymmetric fade (0.5 s in, 7 s out)
40+
41+
---
42+
43+
## [0.2.0] — prior
44+
45+
### Added
46+
- Heatmap thermal overlay: temperature colour ramp and seeded-PRNG humidity droplets
47+
- Heatmap mode toggle in card header (off / temperature / humidity / combined)
48+
49+
---
50+
51+
## [0.1.9] — prior
52+
53+
### Added
54+
- Light spill glow driven by `rgb_color` attribute with 400 ms transition
55+
- Tap to toggle light / long-press for more-info dialog
56+
- Room type icons (19 types, MDI watermark) and room type dropdown in editor
57+
58+
---
59+
60+
## [0.1.0–0.1.8] — prior
61+
62+
Initial builds: grid editor, multi-floor config, CSS 3D perspective floorplan, floating info cards, legend bar, entity pickers, HACS packaging.

CLAUDE.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,13 @@ npm run dev # watch mode (rebuilds on save)
1111
npm run lint # lint src/**/*.js with eslint
1212
```
1313

14-
After building, copy `dist/house-card.js` to `/config/www/house-card.js` on the Home Assistant instance.
14+
After building, deploy to the HA instance (network share must be mounted first):
15+
16+
```bash
17+
cp dist/house-card.js /Volumes/config/www/community/lovelace-house-card/house-card.js && gzip -9 -c dist/house-card.js > /Volumes/config/www/community/lovelace-house-card/house-card.js.gz
18+
```
19+
20+
The share mounts at `/Volumes/config` (SMB). If it's not mounted, prompt the user to mount it before deploying. HACS downloads the card to `/Volumes/config/www/community/lovelace-house-card/`.
1521

1622
## Architecture
1723

README.md

Lines changed: 42 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,21 @@
11
# House Card
22

3-
A visual house floorplan card for Home Assistant. Build a stylised representation of your home using a grid-based room editor, then display entity states — lights, occupancy, temperature — directly on the floorplan.
3+
A visual house floorplan card for Home Assistant. Draw rooms on a configurable grid, bind entity states to each room, and view your home as either a flat overhead grid or a **3D axonometric dollhouse** — complete with light glow, occupancy indicators, temperature/humidity data, and time-of-day ambient lighting.
44

55
## Features
66

7-
- **Grid-based room editor** — draw rectangular rooms on a configurable grid per floor
8-
- **Multi-floor support** — tab-based floor switching on mobile, side-by-side on wallboard
9-
- **Light state** — rooms glow when lights are on
10-
- **Occupancy indicator** — green dot when a motion/occupancy sensor is triggered
11-
- **Temperature overlay** — displays current temperature sensor value in the room
12-
- **Scales to card size** — works on mobile dashboards and large wallboard displays
7+
- **Grid-based room editor** — drag to draw rectangular rooms on a configurable grid per floor
8+
- **Axonometric dollhouse view** — 3D perspective with illuminated wall panels, floor glow, and recessed info cards per room
9+
- **Flat grid view** — clean overhead plan with CSS 3D tilt, per-room info cards, and light spill glow
10+
- **Multi-floor support** — stacked dollhouse floors with visible separation; tab switching in flat mode
11+
- **Light state** — rooms and wall panels glow with the light's actual RGB colour when on; dark otherwise
12+
- **Occupancy indicator** — animated person icon appears when a motion/occupancy sensor is triggered; asymmetric fade-out (0.5 s in, 7 s out)
13+
- **Temperature & humidity display** — sensor values shown on recessed in-room info cards
14+
- **Heatmap thermal overlay** — colour-ramp temperature overlay and humidity droplets per room
15+
- **Sun-based ambient theming** — subtle amber tint at golden hour, blue tint at night; driven by `sun.sun` elevation
16+
- **TV/wallboard optimised**`vw`-based `clamp()` font and icon sizing so text is legible from across the room
17+
- **Room type icons** — 19 room types (bedroom, kitchen, lounge, etc.) with MDI watermark icons
18+
- **Tap to toggle light / long-press for more-info**
1319
- **HACS compatible**
1420

1521
## Installation via HACS
@@ -21,11 +27,11 @@ A visual house floorplan card for Home Assistant. Build a stylised representatio
2127

2228
## Manual Installation
2329

24-
Copy `dist/house-card.js` to your `/config/www/` directory, then add to your Lovelace resources:
30+
Copy `dist/house-card.js` to your `/config/www/community/lovelace-house-card/` directory, then add to your Lovelace resources:
2531

2632
```yaml
2733
resources:
28-
- url: /local/house-card.js
34+
- url: /hacsfiles/lovelace-house-card/house-card.js
2935
type: module
3036
```
3137
@@ -36,30 +42,37 @@ Add via the Lovelace UI editor (recommended) or manually:
3642
```yaml
3743
type: custom:house-card
3844
title: My House
45+
heatmap_mode: off # off | temperature | humidity | combined
46+
temperature_range: [16, 26]
47+
humidity_floor: 50 # hide humidity droplets below this %
48+
3949
floors:
4050
- id: ground
4151
name: Ground Floor
4252
cols: 8
4353
rows: 6
54+
temperature_range: [14, 28] # optional per-floor override
4455
rooms:
4556
- id: lounge
4657
name: Lounge
4758
col: 0
4859
row: 0
4960
width: 3
5061
height: 2
51-
color: '#4a90d9'
62+
color: '#3d5a78'
63+
room_type: lounge
5264
entities:
5365
light: light.lounge
5466
occupancy: binary_sensor.lounge_motion
5567
temperature: sensor.lounge_temperature
68+
humidity: sensor.lounge_humidity
5669
- id: kitchen
5770
name: Kitchen
5871
col: 3
5972
row: 0
6073
width: 2
6174
height: 2
62-
color: '#50c878'
75+
room_type: kitchen
6376
entities:
6477
light: light.kitchen
6578
occupancy: binary_sensor.kitchen_motion
@@ -75,17 +88,29 @@ floors:
7588
| `row` | Yes | Starting row (0-indexed) |
7689
| `width` | Yes | Width in grid cells |
7790
| `height` | Yes | Height in grid cells |
78-
| `color` | No | Room accent colour (hex) |
79-
| `entities.light` | No | Light entity ID |
80-
| `entities.occupancy` | No | Binary sensor for occupancy |
81-
| `entities.temperature` | No | Temperature sensor entity ID |
91+
| `color` | No | Room accent colour (hex); auto-assigned from palette if omitted |
92+
| `room_type` | No | One of 19 types — drives watermark icon and default label |
93+
| `heatmap` | No | Set `false` to opt this room out of the thermal overlay |
94+
| `entities.light` | No | Light entity (supports `rgb_color` and `brightness` attributes) |
95+
| `entities.occupancy` | No | Binary sensor for occupancy/motion |
96+
| `entities.temperature` | No | Temperature sensor entity |
97+
| `entities.humidity` | No | Humidity sensor entity |
98+
99+
### Room types
100+
101+
`bedroom`, `master_bedroom`, `bathroom`, `toilet`, `kitchen`, `lounge`, `living_room`, `dining`, `office`, `study`, `hall`, `entrance`, `landing`, `garage`, `garden`, `utility`, `conservatory`, `playroom`, `gym`
82102

83103
## Development
84104

85105
```bash
86106
npm install
87107
npm run dev # watch mode
88-
npm run build # production build
108+
npm run build # production build → dist/house-card.js
89109
```
90110

91-
Output is `dist/house-card.js` — copy to `/config/www/house-card.js`.
111+
After building, deploy to the HA instance (network share must be mounted at `/Volumes/config`):
112+
113+
```bash
114+
cp dist/house-card.js /Volumes/config/www/community/lovelace-house-card/house-card.js && \
115+
gzip -9 -c dist/house-card.js > /Volumes/config/www/community/lovelace-house-card/house-card.js.gz
116+
```

0 commit comments

Comments
 (0)