mirror of
https://github.com/cassandra/home-information.git
synced 2026-06-11 17:15:38 -04:00
* Rebalance EntityGroupType buckets and close 18-type coverage gap (#367) The prior bucket layout silently routed 15% of EntityTypes (FREEZER, GARAGE_DOOR, LEAK_SENSOR, all pool types, etc.) through the OTHER fallback because they had no explicit assignment, and conflated heterogeneous types in OUTDOORS/UTILITIES/LIGHTS_SWITCHES. New layout is 15 buckets organized by how a homeowner partitions their LocationView: AUTOMATION (controllable end-points), SECURITY, SENSORS (new), APPLIANCES (now subsumes HVAC), POOL (new), GENERAL (new — catchall distinct from the silent OTHER fallback), and friends. Every EntityType now has an explicit bucket assignment, pinned by a new invariant test. * Hide delegate entities from edit-mode sidebar entity list (#367) Placing a principal entity in a LocationView or Collection automatically pulls its delegates along, and unplacing the principal removes them. Showing the delegates as separately-toggleable rows in the same edit sidebar invited confusing partial states (an Area added without its proxy sensor, etc.). EntityManager.create_location_entity_view_group_list and CollectionManager.create_entity_collection_group_list now accept an exclude_delegates kwarg; the two manage-items sidebars opt in. The entity-pairing modal keeps the default and continues to surface delegates so the relationship can be broken there. * Refine EntityGroupType: drop OTHER, fold EntityType.OTHER into GENERAL (#367) Three follow-up adjustments to the rebalance: - AREA moves from GENERAL to STRUCTURAL — areas are spatial regions of the home, structural by nature. - PUMP, MOTOR, SUMP_PUMP move from GENERAL to ELECTRICAL — they're electrically driven and don't fit a domain bucket. - EntityGroupType.OTHER is removed; EntityType.OTHER lives in GENERAL alongside AUTOMOBILE and CONSUMABLE. There's no longer a separate silent-fallback bucket — GENERAL is the explicit catchall, and the full-coverage invariant test ensures every EntityType has an assignment.