v3.6.4
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 ofrgba(0,0,0,0.03) - Cap track: now uses
var(--divider-color)instead ofrgba(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:
- Selecting "Timed" task type in the chore config dialog didn't show timed-specific fields until save and reopen
- Timed completions reported base chore points instead of calculated earned points
- 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-itemwith nativeselect/optionelements for notify service and streak reset dropdowns — fixes broken interactivity in recent HA versions - CSS: Removed
overflow: hiddenfrom 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
b86fd8dfeat: configurable time-of-day boundaries (#242)25a98acfeat: make admin panel fully translatable via i18n system (#252)ae1d5eefeat: add panel translations for de, nb, nn, pt, pt-BR (#253)498ab73feat: add Period column to chores management table (#257)167a459fix: syntax error in panel apply dialog — extra closing paren (#263)2af3c82fix: career graph shows flat line for users without history (#259)fa29502fix: resolve translation race condition causing raw keys on first load (#248)c8a2203fix: timed task text visibility in dark mode (#258)6a0c780fix: timed task points display in celebration popup and pending approvals (#244)951f847fix: timed task points mismatch and dialog re-render on task type change (#243)273b208fix: add 11 missing translation keys to all 8 locale files (#241)bbcc3e4fix: panel version display, notify service dropdown, and CSS overflow (#251)fb4d559fix: avatar and icon changes in panel dialogs not persisting (#250)f936f11fix: 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.