Skip to content

v3.6.4

Choose a tag to compare

@tempus2016 tempus2016 released this 04 May 12:07
· 554 commits to main since this release
1810acc

If you installed v3.6.3: that release contained a syntax error in taskmate-panel.js (an extra closing parenthesis in the bonus/penalty apply dialog) that prevented the entire admin panel from loading. v3.6.4 fixes this — please update immediately. All Lovelace cards were unaffected; only the sidebar admin panel was broken. (#263)

This release includes everything from v3.6.3 plus the hotfix above.


What's New

Configurable Time-of-Day Boundaries (#242)

You can now customise when morning, afternoon, evening, and night start and end to match your household's schedule.

How to use: Go to TaskMate Admin Panel → Settings → Time-of-day boundaries. Each period has a start and end time (HH:MM format):

Period Default Start Default End
Morning 06:00 12:00
Afternoon 12:00 17:00
Evening 17:00 21:00
Night 21:00 23:59

These boundaries affect:

  • Which chores appear on the child card at any given time
  • Claim windows and locked-preview labels
  • Period detection for time-of-day chore filtering

Admin Panel Fully Translatable (#252, #253)

The entire admin panel is now internationalised via the same i18n system used by all Lovelace cards. 423 translation keys have been added, covering:

  • All tab names, button labels, field labels, and help text
  • Status badges, dropdown menus, toast notifications
  • Dialog headers, form field hints, empty state messages
  • Time category labels, assignment modes, recurrence options

Supported languages: English, English (GB), German, French, Norwegian Bokmål, Norwegian Nynorsk, Portuguese, and Portuguese (Brazil).

The panel automatically uses your Home Assistant language setting — no configuration needed.


Period Column in Chores Table (#257)

The chores management table in the admin panel now shows a Period column displaying each chore's time category (Morning, Afternoon, Evening, Night, or Anytime) as a pill badge. No more embedding timing info in chore names — the scheduling intent is visible at a glance.


Bug Fixes

Admin Panel Syntax Error (v3.6.3 Regression) (#263)

v3.6.3 introduced a stray ) in _renderApplyDialog() that closed the _dialogShell() call prematurely. This caused a JavaScript SyntaxError that prevented the admin panel from loading entirely. All Lovelace cards were unaffected — only the sidebar panel was broken. Fixed by removing the extra parenthesis.


Career Graph Shows Flat Line for Users Without History (#259)

The career points graph relied solely on career_score_history, which only accumulates data going forward from when the feature was introduced. For existing users who upgraded, this store was empty — producing a flat line despite months of completed chores.

Fix (two-part):

  • Backend: On startup, if a child has fewer than 7 career history entries, the coordinator reconstructs the full history from all stored completions and transactions (up to 90 days), anchored from the current career score.
  • Frontend: When stored history is sparse, _buildCareerSeries() reconstructs career evolution client-side from the same completion/transaction data used by daily and cumulative modes.

Existing users will see their career graph populate automatically after updating — no action needed.


Translation Race Condition Causing Raw Keys on First Load (#248)

Cards could display raw translation keys (e.g., child.todays_chores instead of "Today's Chores") on initial page load. The old cold-cache fix ran before locale fetches completed and nothing triggered a re-render afterwards.

Fix:

  • The fallback locale (en-GB) is now pre-loaded eagerly when the localise module initialises
  • After every successful locale fetch, all TaskMate cards in the DOM are re-rendered via _refreshTaskMateCards()
  • Cards that briefly show raw keys now self-correct within milliseconds once translations arrive

Timed Task Text Invisible in Dark Mode (#258)

Timer counters and progress bars used hardcoded colours that were invisible against dark backgrounds.

Fix: Replaced hardcoded colours with Home Assistant theme-aware CSS variables:

  • Timer counter text: now uses var(--primary-text-color) instead of #2c3e50
  • Timer display background: now uses var(--secondary-background-color) instead of rgba(0,0,0,0.03)
  • Cap track: now uses var(--divider-color) instead of rgba(0,0,0,0.06)

Timers are now fully legible across all HA themes.


Timed Task Points Display in Celebration Popup and Pending Approvals (#244)

Timed tasks showed static chore base points instead of actual earned points (calculated from duration) in celebration popups and the pending approvals sensor.

Fix: Celebration popup now captures calculated timed points before calling the stop service. Pending approvals sensor now computes timed points from timed_duration_seconds using the same formula: (elapsed ÷ rate_window) × rate_points.


Timed Task Points Mismatch and Dialog Re-render (#243)

Three interconnected issues:

  1. Selecting "Timed" task type in the chore config dialog didn't show timed-specific fields until save and reopen
  2. Timed completions reported base chore points instead of calculated earned points
  3. Celebration popup used wrong points for timed tasks

Fix: Added rerender flag to task type selector so timed fields appear immediately. Updated completions to calculate actual earned points. Changed celebration to read points from the completion record.


11 Missing Translation Keys Across All Locales (#241)

Eleven keys were missing from all 8 locale files, causing untranslated text:

  • Timed task controls: child.start, child.pause, child.paused, child.resume, child.done
  • Colour picker: common.default
  • Rotation tab: dashboard.tab_rotation, dashboard.empty_rotation, dashboard.rotation_skip_confirm, dashboard.rotation_skip_hint, dashboard.rotation_unassigned

All added and translated across all 8 supported languages.


Panel Version Display, Notify Service Dropdown, and CSS Overflow (#251)

  • Version: Panel now extracts version dynamically from the module URL instead of using a stale hardcoded string
  • Dropdowns: Replaced ha-select/mwc-list-item with native select/option elements for notify service and streak reset dropdowns — fixes broken interactivity in recent HA versions
  • CSS: Removed overflow: hidden from panel sections that was clipping dropdown menus

Avatar and Icon Changes Not Persisting in Panel Dialogs (#250)

Icon/avatar changes in child, reward, bonus, and penalty dialogs were silently discarded on save. The panel relied on value-changed events from ha-icon-picker whose detail structure varies across HA versions.

Fix: Added _syncIconPickers() that reads icon values directly from the DOM before every save operation, ensuring changes persist regardless of event handling differences.


Unused Import Lint Fix (#262)

Removed unused date import from coordinator.py flagged by ruff (F401).


Full Changelog

  • b86fd8d feat: configurable time-of-day boundaries (#242)
  • 25a98ac feat: make admin panel fully translatable via i18n system (#252)
  • ae1d5ee feat: add panel translations for de, nb, nn, pt, pt-BR (#253)
  • 498ab73 feat: add Period column to chores management table (#257)
  • 167a459 fix: syntax error in panel apply dialog — extra closing paren (#263)
  • 2af3c82 fix: career graph shows flat line for users without history (#259)
  • fa29502 fix: resolve translation race condition causing raw keys on first load (#248)
  • c8a2203 fix: timed task text visibility in dark mode (#258)
  • 6a0c780 fix: timed task points display in celebration popup and pending approvals (#244)
  • 951f847 fix: timed task points mismatch and dialog re-render on task type change (#243)
  • 273b208 fix: add 11 missing translation keys to all 8 locale files (#241)
  • bbcc3e4 fix: panel version display, notify service dropdown, and CSS overflow (#251)
  • fb4d559 fix: avatar and icon changes in panel dialogs not persisting (#250)
  • f936f11 fix: remove unused date import from coordinator (#262)

Updating

In HACS: go to TaskMate → Redownload, select version v3.6.4, then restart Home Assistant. Do a hard browser refresh (Ctrl+Shift+R) to clear cached card JavaScript.