Skip to content

Releases: Springvar/home-assistant-whereabouts-map-card

v0.3.1 — stale detection, accurate data_age, fixed trail history

Choose a tag to compare

@Springvar Springvar released this 07 Sep 18:50

Added

  • Stale-person detection - mark a person stale when their location hasn't updated within stale_after_hours (default: disabled). Stale markers are faded, dimmed, and grayscale, re-evaluated once a minute.
  • data_age built-in sensor - age (in minutes) for display conditions (e.g. sensor: data_age, comparator: gt, value: 1440 hides a person last updated > 24h ago).
  • "Show as stale" editor setting - configurable under Display Conditions with a 1-72h threshold slider.
  • Editor restyled to match the flightradar24-card design language.

Fixed

  • Trail history "Request error" - replaced the REST history fetch with the WebSocket history/history_during_period API (hass.callWS).
  • Stale styling on overlay toggles - person toggle buttons now dim/grayscale when stale, matching map markers.

Install

Replace home-assistant-whereabouts-map-card.js with the file bound to this release.

v0.3.0 — Whereabouts Map Card rename + reworked background maps

Choose a tag to compare

@Springvar Springvar released this 05 Sep 20:47

Whereabouts Map Card v0.3.0

A major update renaming the card to Whereabouts Map Card (companion to the whereabouts-card) and reworking its background-map system with per-user CARTO/Stadia keys and configurable per-theme maps.


Renamed: Lens Map Card → Whereabouts Map Card

  • New custom element type: custom:whereabouts-map-card
  • New built artifact: home-assistant-whereabouts-map-card.js
  • Backwards compatible: existing dashboards using custom:lens-map-card keep working via a registered alias.

Reworked background maps

Tile providers moved into a single data-driven store. Per provider terms, CARTO and Stadia tiles now require a per-user API key — each user creates their own free key and enters it in the card editor.

  • Keyless maps (no key — work out of the box):
    • color — OpenStreetMap
    • satellite — Esri World Imagery
    • topo — OpenTopoMap
  • Keyed maps (require an API key):
  • Fixed a bug where CARTO keys were appended with the Stadia ?api_key= param — CARTO now correctly uses ?key=.
  • The card editor shows provider-specific API-key help inline, with a link to request a key.

Per-theme maps for system

map.type: system no longer hard-codes color/dark. You can now pick one map for light themes and one for dark themes, each able to carry its own API key:

  • map.light → default color
  • map.dark → default dark
  • map.light_api_key
  • map.dark_api_key

Backwards compatible: existing system configurations keep the previous color/dark behavior.

Upgrade notes

  • If you use light, dark, voyager, bw, or outlines, create a free API key and enter it in the card editor (or in map.api_key).
  • Existing custom:lens-map-card dashboards keep working, but the new type is custom:whereabouts-map-card.
  • No other breaking changes.

HACS: re-download the card in HACS and use custom:whereabouts-map-card in your dashboard.

v0.1.5

Choose a tag to compare

@Springvar Springvar released this 13 Jul 20:57

What's New in v0.1.5

Fixes

  • Editor crash on empty groups — Fixed "Cannot use in operator to search for type in undefined" error when toggling group logic (AND/OR) or adding conditions to empty groups.
  • Add/remove conditions in groups — Fixed context extraction from path strings. Paths like person:0:0 were parsed with context "person" instead of "person:0", causing all add/update/remove operations to silently fail. Extracted shared _parsePath() helper.
  • ResizeObserver feedback loop — Fixed infinite requestAnimationFrame loop that caused map to crash and show only blue tiles. Added re-entrancy guard to prevent observer-triggered resize cascades.
  • Map center fallback — When center type is visible and no markers are loaded yet, map now defaults to Oslo (59.9, 10.7) instead of [0,0] (Gulf of Guinea).
  • User sensor logic — Fixed user == person.ivar to check if the logged-in user is associated with that person entity (by looking up the entity's user_id attribute), instead of comparing the evaluated person's entity_id.

v0.1.4

Choose a tag to compare

@Springvar Springvar released this 13 Jul 18:24

What's New in v0.1.4

Fixes

  • Panel mode fill — Card now fills the available height in panel views instead of being fixed at 400px. Uses flexbox layout that works in both panel mode (full height) and grid mode (constrained by grid cell).

v0.1.3

Choose a tag to compare

@Springvar Springvar released this 13 Jul 18:19

What's New in v0.1.3

Features

  • DEFAULT Condition Reference — New DefaultCondition type ({ type: "DEFAULT" }) that references the card-level default conditions from within a person's override conditions.
  • Enables patterns like DEFAULT OR [custom conditions] — show a person if the default conditions match OR if custom conditions match.
  • Works inside AND, OR, and NOT groups. With no defaults defined, DEFAULT evaluates to true.
  • Editor shows a purple "DEFAULT" badge and "+ Default" button in person condition editors (not available in the default conditions section itself).

Configuration

  • New condition type: { type: "DEFAULT" } — usable in person.displayConditions

v0.1.2

Choose a tag to compare

@Springvar Springvar released this 12 Jul 20:05

What's New in v0.1.2

Major Features

  • Advanced Display Conditions — Replace flat display rules with a recursive condition tree supporting AND/OR groups and NOT conditions for complex person visibility logic.
  • Built-in Selectors — New condition selectors: who (match specific persons), where (match zones), when (time-of-day and day-type), user (logged-in user), random (probabilistic), distance, and state.
  • Smart Value Inputs — Editor auto-detects sensor type and provides appropriate input widgets: dropdowns for who/where/user, multi-select chips for when, number inputs for distance/random, and dynamic inputs for custom named sensors.
  • Tree-Based Condition Editor — Collapsible condition groups with colored badges (blue=Value, orange=Group, red=NOT), nested AND/OR/NOT conditions to arbitrary depth.
  • Backward Compatibility — Old display_rules configs are automatically migrated to the new displayConditions format on load.

Fixes

  • Deep copy frozen config objects in setConfig to prevent "object is not extensible" error

Configuration Updates

  • displayConditions replaces display_rules as the primary condition system
  • person.displayConditions replaces person.displayRules for per-person overrides
  • Old display_rules / person.displayRules configs continue to work via auto-migration

v0.1.1

Choose a tag to compare

@Springvar Springvar released this 07 Jun 18:35

What's New in v0.1.1

Major Features

  • History Trail — Track person movement over time with configurable history window (max_age), distance cutoff (max_distance), and proximity filtering to remove GPS drift near current position. Trails rendered as colored polylines with opacity gradient from newest to oldest.
  • Trail Opacity Controls — Configure newest_opacity (default 1), oldest_opacity (default 0.3), and midpoint slider (0-100) controlling the fade curve.
  • Per-Person Trail Colors — Auto-assigned from 20-color palette, overridable per person via trail color picker.
  • Connection Line — Dashed line drawn from current position to the last unfiltered trail point for visible persons.
  • Overlay Controls — Auto-zoom toggle button and per-person visibility toggle buttons in the top-right corner of the map. Configurable via show_auto_zoom and show_toggle_buttons.
  • Auto Zoom — Works for all center types: fitBounds for visible center, zoom-to-fit for others. Toggleable via overlay button.
  • Auto-Recenter — Map re-centers when target moves >100m (configurable threshold respect).
  • Map Interactivity Togglemap.interactive controls zoom/pan/scroll behavior.
  • Auto-Detect Current User — No need to set current_user manually; detected from hass.user.id.
  • New Map Tile Layers — Added none, light, voyager, satellite, topo.
  • Center Type: visible — Centers on centroid of all visible persons. With auto zoom uses fitBounds, without uses centroid + configured zoom.

Fixes

  • Map rendering reliability: retry loop, ResizeObserver, container dimension guards
  • Leaflet CSS/JS loading stability (CSS in Lit template, JS via document.head)
  • Marker flickering eliminated by diffing instead of recreating all markers
  • Current user marker rendered below others via zIndexOffset
  • Display rules: fixed empty-array fallthrough bug
  • Trail history fetched from HA recorder via REST API
  • Reconnection after navigation: clears markers, re-fetches trails
  • Config guarded against undefined/null

Configuration Updates

  • trail.enabled, trail.max_age, trail.max_distance, trail.proximity, trail.newest_opacity, trail.oldest_opacity, trail.midpoint, trail.colors
  • show_auto_zoom, show_toggle_buttons
  • map.interactive, map.type now includes none/light/voyager/satellite/topo
  • center.type expanded to user/visible/home/fixed/person:<entity_id>
  • zoom.auto_level works with all center types

v0.1.0

Choose a tag to compare

@Springvar Springvar released this 22 Apr 20:51