Skip to content

Releases: sergon2000/lovelace-track-history-card

v1.6.0

Choose a tag to compare

@sergon2000 sergon2000 released this 18 Jun 18:08
c8bf423

Features

  • Overlap-aware stop markers. Stop markers that would visually overlap at the current zoom now merge into a single combined marker (coloured by the roles involved — green/red/half-half/orange, with a "multiple" glyph). Zooming in splits them apart again. Clicking a combined marker zooms in just enough to break the group apart; when the stops it covers are virtually coincident and no zoom level can separate them, the click opens a popup listing those stops with their times instead.
  • New min_time option (default 10 min, range 1–30). A group of points now becomes a stop only when it meets both conditions: at least min_points points and a time span (first→last point) of at least min_time minutes. Brief pauses are treated as in-transit. Configurable in YAML and in the visual editor, under "minimum points per cluster".
  • Datapoint count in mid-stop popups. Intermediate stop popups now show how many recorded positions make up the cluster (e.g. 📍 14 points).

See CLUSTERING.md for the full clustering & marker-merging logic.

v1.5.2

Choose a tag to compare

@sergon2000 sergon2000 released this 14 Jun 09:47
e958921

Patch release.

  • Fix: map disappearing after switching views — leaving the card's view and returning (or opening the visual editor) detached the card and destroyed the Leaflet map, leaving it blank until a full page reload or a date/device change. The card now redraws the map automatically when it is re-attached to the DOM (#52).

v1.5.1

Choose a tag to compare

@sergon2000 sergon2000 released this 14 Jun 07:54
0e4225d

Patch release with two refinements to the reverse-geocoding labels:

  • Shorter labels — dropped the ISO country code suffix; stops now read e.g. Main St, Madrid instead of Main St, Madrid · ES (#50).
  • Mobile layout fix — a long location label no longer pushes a stop's time range / dwell duration onto a second line; the location truncates with an ellipsis while the time stays pinned to the right (#51).

v1.5.0

Choose a tag to compare

@sergon2000 sergon2000 released this 14 Jun 00:15
2cc8e73

✨ Features

  • Reverse geocoding for stops (opt-in) — stops that fall outside every Home Assistant zone can now be labelled with their address (street, city and ISO country code, e.g. Calle Mayor 3, Madrid · ES), shown both in the timeline and the marker popups. HA zones still take precedence.
    • Enable it with the Reverse geocoding checkbox in the editor's Advanced section (or reverse_geocode: true).
    • Off by default — your stop coordinates are sent to an external service (the public Nominatim server by default; geocode_url accepts any Nominatim-compatible endpoint).
    • The map and timeline render immediately; addresses fill in progressively. Lookups are throttled (~1/sec) and cached in your browser for 90 days.
    • Place names are localised to your Home Assistant UI language.

v1.4.2

Choose a tag to compare

@sergon2000 sergon2000 released this 13 Jun 19:17
938da16

🐛 Fixes

  • Combined start/end marker — when a day starts and ends in the same place, the track line now meets the combined marker exactly instead of stopping slightly short of it (a small offset that was visible when zooming in).

v1.4.1

Choose a tag to compare

@sergon2000 sergon2000 released this 13 Jun 18:52
03f01b5

🐛 Fixes

  • Date format — the date now displays in the format configured in the user's Home Assistant profile (DMY / MDY / YMD / language / system) instead of the browser's locale. The picker is now a button showing the formatted date that opens the native calendar.
  • No more flicker when changing the date or device: the map is reused across loads (only the track layers are swapped) instead of being torn down and rebuilt, the summary/timeline panels are replaced in place rather than blanked first, and more tiles are kept buffered to avoid flashing the empty background while panning.

v1.4.0

Choose a tag to compare

@sergon2000 sergon2000 released this 13 Jun 18:01
8475a21

✨ New features

Zones

  • Stops now show the Home Assistant zone they fall in (if any). In the timeline it appears after Start/End in parentheses, and on its own line under Stop N; in the map marker popups it's appended after the label (and shown first for the combined start/end marker). The smallest zone wins when they overlap.

Units

  • New units option: metric (m / km) or imperial (ft / mi). It also sets the unit of cluster_radius.

Direction arrows

  • Arrows are now spread evenly by real distance along the path (uniform density) instead of by vertex index.
  • New show_arrows toggle and configurable arrow_count (default 30), both available in the visual editor right below the title.

Device selector

  • Shows the linked person's name in the device selector, keeping the tracker names when two trackers share a user. The selector is relabelled Track of.

Config validation

  • Numeric options are now range-checked (clamped) both in the editor and in YAML: arrow_count 10–30, map_height 200–1000, cluster_radius 50–500, min_points 2–5. The allowed ranges are shown in the editor field labels.

🔧 Changes

  • Default map_height is now 450px.
  • Default cluster_radius is now 200 (minimum 50).

v1.3.0

Choose a tag to compare

@sergon2000 sergon2000 released this 13 Jun 08:48
b2e0b2f

Highlights

Timeline redesign

  • Redistributed the timeline to use the full card width: icon + name on the left, time/range and distance right-aligned in their own column.
  • Vertical connector line between events for a proper timeline feel.
  • Intermediate stops now show their dwell duration (e.g. (7 h 21 min)) under the time range.
  • Zebra background on stop rows so the right-hand value reads as part of the same row; movement segments stay transparent.

Map & popups

  • New recenter control to refit the map to the track.
  • Intermediate stop popups are now labelled (Start / Stop N / End) and show the dwell duration in parentheses, matching the timeline.
  • Timeline stop markers are coloured to match the map (green start, orange numbered mid-stops, red end).

Fixes

  • Vertically centered the recenter button icon.
  • Correct dwell-duration calculation (milliseconds vs. seconds).

v1.2.1

Choose a tag to compare

@sergon2000 sergon2000 released this 12 Jun 21:02
9815dd3

Fixes

  • Direction arrows now sit exactly on the smoothed line (previously offset on curves)
  • Direction arrows no longer cover stop/start/end markers — those always render on top
  • Times are shown using the user's Home Assistant time format (12h/24h) and language, instead of the browser default

v1.2.0

Choose a tag to compare

@sergon2000 sergon2000 released this 12 Jun 16:21
04aa49f

What's new in v1.2.0

Timeline

  • New optional Timeline panel below the map (show_timeline) listing each stop with its time range and the distance travelled while moving between stops

Map & clustering

  • Combined start/end marker (half green / half red) when the day starts and ends in the same zone; circular start/end markers, color-only
  • Start shows departure time, end shows arrival time
  • Intermediate stops numbered from 1, with the same number shown on the map marker and the timeline
  • Track line smoothed per segment so it always passes through every stop
  • Single stray GPS points between clusters are ignored (no more line spikes; surrounding points stay one cluster)
  • min_points configurable minimum points per cluster (default 3)
  • Map theme option: system / light / dark

Fixes

  • Past days now load correctly — fetch via the history/stream WebSocket subscription (the one-shot REST/WS history endpoints returned empty for fully past days)
  • Map no longer renders above the Home Assistant header when scrolling
  • Selected date/device preserved across re-renders; next-day arrow enabled correctly
  • Editor: map height / cluster radius / min points grouped in an Advanced section that stays open while editing; title & default device fields render correctly

Docs

  • Added CLUSTERING.md explaining the clustering and rendering logic