🎉 400 Stars! As of today, ChoreOps has crossed 400 stars on GitHub — and what better way to celebrate than shipping a release? Thank you to everyone who has starred, reported issues, contributed translations, or spread the word. Four hundred stars on a family chore tracker is a significant milestone.
If ChoreOps is making chore time smoother in your home, please consider giving back:
- ⭐ Star the repository — if you haven't yet, it's the easiest way to help others discover ChoreOps.
- ❤️ Sponsor the project — support ongoing development directly through GitHub Sponsors.
- ☕ Buy Me A Coffee — every coffee fuels the next fix or feature.
Now, on to the release!
This release is a focused polish pass. 1.5.2 continues the 1.5.x theme of correctness and consistency — fixing dashboard preferences that silently ignored your configuration, closing state-transition edge cases around midnight resets and standby claims, and making "never overdue" chores finally tell the truth about being actionable. It also carries meaningful translation improvements from the community.
🔄 Dashboards Must Be Regenerated
To receive all of the improvements in this release, please re-generate your dashboards using the updated templates.
This is required to pick up the dashboard-side preference fixes described below — simply updating the integration alone will not apply them.
🎛️ Dashboard Preferences Now Respect Your YAML
Several long-standing bugs meant some dashboard preferences could never actually take effect. If you ever set a preference to false in your dashboard YAML and wondered why nothing changed — this is the fix.
- Boolean preferences work now. A YAML-level
falsewas previously silently replaced by the defaulttruebefore any logic saw it. All boolean preferences (across Standard, Premier, Essential, Lite, and KidsChores Classic) now respect explicitfalsevalues. - "Show Completed" toggles actually toggle. The settings-panel toggle for hiding completed chores was overridden by the YAML preference; the toggle now wins, as intended.
pref_include_daily_recurring_in_today: falsebehaves as documented. It now relocates all daily-recurring chores (including dated ones) from Today to Later, instead of incorrectly sweeping every chore due today out of the Today group.- Removed:
pref_include_weekly_recurring_in_this_week. This preference has been dead since due dates became required for weekly chores — its documented behavior became impossible. To hide the Due This Week bucket, usepref_exclude_group_list: ['this_week']instead. If you set the old pref in your YAML, it is simply ignored — nothing breaks.
🕛 Midnight Reset & Standby Claim Fixes
Two state-transition edge cases that could produce briefly wrong or confusing chore states:
- No more midnight "overdue" flash. At the midnight approval reset, chores with pending claims or pre-approved completions could briefly publish
overduebefore settling onpending— visible as a flicker on dashboards and a false trigger for overdue automations. The due date is now always advanced before the state transition, so the flash cannot occur. - Standby users respect the claim window. On primary-standby rotation chores, a standby with "claim anytime" could claim before the chore's claim window opened, and the dashboard showed the chore as actionable when it was greyed out for everyone else. A closed claim window now blocks standbys regardless of claim mode.
✅ "Never Overdue" Chores Now Show as Due — Not Pending
Behavior change for automations: automations or dashboard cards that trigger on chore
state: duewill now also fire for never-overdue chores that are past their due date. This is the intended fix — review any state-based triggers if needed.
Chores configured with Overdue Handling: Never overdue that pass their due date used to sit in a generic pending state — understating urgency and indistinguishable from a chore that hadn't come due yet. They now present as due: still never shown as overdue (honoring the setting you chose), but clearly marked as claimable and waiting to be done. The state clears as soon as the chore is completed, and these chores now count toward the assignee's due-today summary until finished.
If you want a chore to simply sit as pending forever, remove its due date instead.
🐛 Other Fixes
- Weekday names accepted in
applicable_days. Creating a chore via thecreate_choreservice with weekday names ("mon","wed") stored them unconverted — the chore never matched its scheduled days, and any later update crashed withinvalid literal for int(). Weekday names now work everywhere. (First contribution from @tmmueller — thank you!) - Standby chores no longer inflate the "today" count. Related follow-up to the claim-window fix, keeping dashboard group counts honest.
🌍 Localization — Community Translations
- 🇩🇪 German and 🇨🇳 Simplified Chinese received further manual review and refinement through Crowdin, including improved wording for badge clear-date labels and report/notification strings.
- Regular syncing of all community translations continues.
Also in this release (wrap-up):
- Dashboard assets updated from ChoreOps-Dashboards 1.1.3 (registry bump + translation sync).
- Translation sync infrastructure now supports skipping machine translation when running manual syncs (no user impact).
### 🙏 Thank You
1.5.2 is another community-driven release. A special welcome to first-time contributor tmmueller, who fixed a real service-layer bug, and to every translator and issue reporter who keeps ChoreOps sharp. Enjoy! 🎉
What's Changed
🐛 Fixes
- fix: standby claim-window gating and midnight reset overdue flash by @ccpk1 in #275
- fix: accept weekday names in chore applicable_days by @tmmueller in #258
- fix(dashboard): repair preference coercion, override precedence, and recurring grouping by @ccpk1 in #276
✨ Enhancements
- fix(chores): present never-overdue past-due chores as due (v1.5.2) by @ccpk1 in #277
- ci(l10n): add enable_mt input to translation sync workflow by @ccpk1 in #278
🌐 Localization
- chore(l10n): sync translations from Crowdin by @github-actions[bot] in #280
New Contributors
- @tmmueller made their first contribution in #258
Full Changelog: 1.5.1...1.5.2