Merge Luma launcher fork into monorepo
CI / Identify a merged version PR (push) Canceled after 0s
CI / Rust checks, rendering, and native package (push) Canceled after 0s
CI / Publish release and Homebrew feed (push) Canceled after 0s
Release PR / Maintain Version Packages PR (push) Canceled after 0s

Move trampoline files (boot-hook, watcher, overlay) into trampoline/
subdirectory. Add upstream Luma v2.3.1 source at repo root with our
additions:

- Page::Ha (4th nav tab) with placeholder empty state
- HA tab config schema and default entity mapping (ha-home/)
- Nav keys renamed: "home" → "start", new "ha" tab between Apps and Settings
- All state.rs/view.rs/main.rs/tests.rs updated for 4-tab navigation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Kaloyan DanchevandClaude Opus 4.6 committed 2026-10-24 11:52:55 +03:00
1 parent bc3ca0f3b9
commit cbea5a322f
204 files changed
+25056 -65

No files matched your search

+148
View File
@@ -0,0 +1,148 @@
{
"version": 1,
"ha": {
"url": "wss://ha.xtrm-lab.org/api/websocket",
"token": ""
},
"weather": {
"entity_id": "weather.forecast_home"
},
"vacuum": {
"entity_id": "vacuum.living_room_roborock_s7_pro_ultra",
"cleaning_mode_entity": "select.living_room_roborock_s7_pro_ultra_cleaning_mode",
"rooms": {
"16": "Kitchen",
"17": "Bedroom",
"18": "Dining Room",
"19": "Corridor",
"20": "Bathroom",
"21": "Living Room",
"22": "Master Bedroom",
"23": "Corridor 2",
"24": "Bedroom 2"
}
},
"rooms": [
{
"id": "living_room",
"name": "Living Room",
"background": "living-room.jpg",
"sensors": [
"sensor.living_room_thermostat_temperature",
"sensor.living_room_thermostat_humidity"
],
"cards": [
{ "type": "climate", "entity_id": "climate.living_room_thermostat", "name": "Thermostat" },
{ "type": "climate", "entity_id": "climate.living_room_radiator", "name": "Radiator" },
{ "type": "range", "entity_id": "light.living_room_light", "name": "Ceiling Light" },
{ "type": "range", "entity_id": "light.tv_lights", "name": "TV Lights" },
{ "type": "range", "entity_id": "light.rgbic_strip_lights_z1", "name": "LED Strip 1" },
{ "type": "range", "entity_id": "light.rgbic_strip_lights_z2", "name": "LED Strip 2" },
{ "type": "toggle", "entity_id": "light.picture_frame_lamp", "name": "Picture Lamp" },
{ "type": "toggle", "entity_id": "cover.living_room_curtain", "name": "Curtain" },
{ "type": "vacuum", "entity_id": "vacuum.living_room_roborock_s7_pro_ultra", "name": "Roborock" }
]
},
{
"id": "kitchen",
"name": "Kitchen",
"background": "kitchen.jpg",
"sensors": [
"sensor.kitchen_termostat_temperature",
"sensor.kitchen_termostat_humidity"
],
"cards": [
{ "type": "climate", "entity_id": "climate.kitchen_termostat", "name": "Thermostat" },
{ "type": "toggle", "entity_id": "switch.dishwasher_power", "name": "Dishwasher" }
]
},
{
"id": "bedroom",
"name": "Dad's Bedroom",
"background": "bedroom.jpg",
"sensors": [],
"cards": [
{ "type": "climate", "entity_id": "climate.main_bedroom_radiator", "name": "Radiator" },
{ "type": "toggle", "entity_id": "light.bedroom_ceiling_light", "name": "Ceiling" },
{ "type": "toggle", "entity_id": "light.bedroom_desk_lights", "name": "Desk" },
{ "type": "range", "entity_id": "light.bedroom_led_strip", "name": "LED Strip" }
]
},
{
"id": "dining_room",
"name": "Dining Room",
"background": "dining-room.jpg",
"sensors": [],
"cards": [
{ "type": "range", "entity_id": "light.dining_room_light", "name": "Light" }
]
},
{
"id": "entrance",
"name": "Entrance",
"background": "entrance.jpg",
"sensors": [],
"cards": [
{ "type": "toggle", "entity_id": "light.entrance_light_1", "name": "Light" },
{ "type": "toggle", "entity_id": "light.entrance_mirror_light", "name": "Mirror" }
]
},
{
"id": "dari_bedroom",
"name": "Dari's Bedroom",
"background": "dari-bedroom.jpg",
"sensors": [],
"cards": [
{ "type": "climate", "entity_id": "climate.girls_bedroom_radiator", "name": "Radiator" }
]
},
{
"id": "teo_s_bedroom",
"name": "Teo's Bedroom",
"background": "teo-bedroom.jpg",
"sensors": [],
"cards": [
{ "type": "toggle", "entity_id": "light.boys_smartlight", "name": "Light" }
]
},
{
"id": "main_bathroom",
"name": "Main Bathroom",
"background": "bathroom.jpg",
"sensors": [],
"cards": [
{ "type": "toggle", "entity_id": "light.bathroom_light_1", "name": "Light 1" },
{ "type": "toggle", "entity_id": "light.bathroom_light_2", "name": "Light 2" }
]
},
{
"id": "kids_bathroom",
"name": "Kids Bathroom",
"background": "kids-bathroom.jpg",
"sensors": [],
"cards": [
{ "type": "toggle", "entity_id": "light.kids_bathroom_light_1", "name": "Light 1" },
{ "type": "toggle", "entity_id": "light.kids_bathroom_light_2", "name": "Light 2" },
{ "type": "toggle", "entity_id": "switch.washing_machine_power", "name": "Washing Machine" },
{ "type": "toggle", "entity_id": "switch.dryer_power", "name": "Dryer" }
]
},
{
"id": "scenes",
"name": "Scenes",
"background": "scenes.jpg",
"sensors": [],
"cards": [
{ "type": "action", "entity_id": "scene.tv_mode", "name": "TV Mode" },
{ "type": "action", "entity_id": "scene.living_room_100", "name": "Living Room 100%" },
{ "type": "action", "entity_id": "scene.living_room_lights_10", "name": "Living Room 10%" },
{ "type": "action", "entity_id": "scene.desk_mac", "name": "Desk: Mac" },
{ "type": "action", "entity_id": "scene.desk_pc", "name": "Desk: PC" },
{ "type": "action", "entity_id": "scene.curtains_close", "name": "Close Curtains" },
{ "type": "action", "entity_id": "script.tv_ambient_on", "name": "TV Ambient On" },
{ "type": "action", "entity_id": "script.tv_ambient_off", "name": "TV Ambient Off" },
{ "type": "action", "entity_id": "script.living_dining_all_off", "name": "All Lights Off" }
]
}
]
}
+105
View File
@@ -0,0 +1,105 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Luma Home Tab Configuration",
"description": "Configuration for the Home Assistant tab in the Luma launcher on webOS TV",
"type": "object",
"required": ["version", "ha", "rooms"],
"properties": {
"version": {
"const": 1,
"description": "Schema version"
},
"ha": {
"type": "object",
"required": ["url", "token"],
"properties": {
"url": {
"type": "string",
"description": "Home Assistant WebSocket URL (wss://...)"
},
"token": {
"type": "string",
"description": "Long-lived access token"
}
}
},
"weather": {
"type": "object",
"properties": {
"entity_id": {
"type": "string",
"description": "Weather entity to display (e.g. weather.forecast_home)"
}
}
},
"vacuum": {
"type": "object",
"properties": {
"entity_id": {
"type": "string",
"description": "Vacuum entity ID"
},
"cleaning_mode_entity": {
"type": "string",
"description": "Select entity for cleaning mode (vacuum/mop/vac_and_mop)"
},
"rooms": {
"type": "object",
"description": "Map of segment ID to display name",
"additionalProperties": { "type": "string" }
}
}
},
"rooms": {
"type": "array",
"items": {
"type": "object",
"required": ["id", "name", "cards"],
"properties": {
"id": {
"type": "string",
"description": "HA area_id or custom slug"
},
"name": {
"type": "string",
"description": "Display name"
},
"background": {
"type": "string",
"description": "Background image filename (served from config dir)"
},
"sensors": {
"type": "array",
"description": "Sensor entity IDs shown as badges in room header",
"items": { "type": "string" }
},
"cards": {
"type": "array",
"items": {
"type": "object",
"required": ["type", "entity_id"],
"properties": {
"type": {
"enum": ["toggle", "range", "climate", "action", "vacuum"],
"description": "Card type"
},
"entity_id": {
"type": "string",
"description": "HA entity ID"
},
"name": {
"type": "string",
"description": "Override display name (defaults to HA friendly_name)"
},
"icon": {
"type": "string",
"description": "Override icon name"
}
}
}
}
}
}
}
}
}