Repository navigation
Releases: ottoherdy/worktime-tracker
Release list
v2.15.0
Added
- This month / Last month / Everything buttons in the export dialog,
so the from-date does not have to be typed correctly to get the range you
meant.
Changed
- The export dialog opens on the start of last month rather than this one.
The old default silently excluded the month people most often open the dialog
about: a month closes, its rows never arrived, and an export started on the
first of the new month sends only the new month — reporting success while
changing nothing.
v2.14.4
Fixed
- The
export_alltally could not answer the question people actually bring to
it.total=152says how many days the run considered, but not which days, so
"month X is missing from the sheet" stayed ambiguous between a day that was
skipped, a day that failed, and a day that was never in local storage at all.
The line now prints the date range it covered, thesinceandforceit ran
with, and the size of local storage. - An entry that could not be parsed into a row counted as a failure but did not
count toward the consecutive-failure abort, so a run could grind through a
whole year of them one warning at a time.
v2.14.3
Fixed
- Sheets failures named the worksheet but not the spreadsheet, which leaves the
obvious question open when the fix is "go and widen that tab" — there is more
than one document a tab calledWorktimecould live in. Both the per-day
warning and theexport_allabort now name the spreadsheet the config entry
points at and print its URL, so the tab to edit is one click away.
v2.14.2
Fixed
- The
export_allabort told you to go and read the warning above it. Home
Assistant's error panel shows that abort on its own, so the reason was one
log level and several screens away from the line that announced the problem.
The abort now quotes the rejection Sheets actually returned, and names the
worksheet it was writing to.
v2.14.1
Fixed
- A failed Sheets append said only
Failed to write data. Home Assistant's
google_sheetsintegration wraps every underlying API error in that one
string, and the cause — which carries the status code and Google's own
message — was dropped on the floor. The warning now names the worksheet and
the chained cause, so a too-narrow sheet, a revoked token and a quota
rejection stop looking identical. export_allworked through every remaining day after a structural failure,
turning one misconfiguration into one warning per day. It now stops after
five consecutive failures and says why.export_allsent its appends as fast as it could manage. The Sheets API
allows 60 writes per minute, so a forced export of a long range spent its
tail being rejected for quota. Appends are now paced.
Documentation
- The column table listed 15 columns; the integration writes 19.
Week,
Month,Top-up typeandTop-up hourswere missing. A sheet built to
match the old table is too narrow to accept a row. - Documented that the worksheet needs at least 20 columns: the 19 written
here plus thecreatedcolumn thatgoogle_sheetsadds to every row. A grid
that stops at 19 rejects the entire write withexceeds grid limits.
v2.14.0
Added
- An Export to Sheets dialog in the card footer, with a from-date and a
Re-send days already marked as pushed option. Both were reachable only by
callingexport_allby hand before. The footer link is now on by default —
an export button that ships switched off helps nobody.
Changed
- The footer link no longer fires an unconditional export behind a confirm
dialog. It opens the range picker instead, defaulting to the first of the
current month.
Fixed
- Documented the case the old button could not fix: a day is skipped when its
fingerprint matches the last push, so rows lost on the Sheets side — a cleared
tab, a deleted range, a push recorded but never delivered — stayed missing no
matter how often the export was re-run. The force option ignores fingerprints.
docs/sheets.mdnow also reads thesent/skipped/failed/totallog line as a
diagnosis.
v2.13.0
Added
- Days can be booked before they happen. The card's look-up picker no longer
stops at today, so a week of vacation or sick leave can be entered in advance
with Add, or in one go withset_period. A booked day that has not yet
arrived is marked Planned in the look-up box. sensor.this_month_hours_this_monthgained anupcoming_daysattribute
listing those pre-booked days, and each entry in the week sensors'days
attribute carries aplannedflag.
Fixed
- Leave dated in the future inflated the week and month totals.
set_period
already accepted future ranges, and the hours it credited were summed over the
whole week or calendar month while the matching overtime figure only ever
built its expected total from days up to today — so booking next week's
vacation showed up immediately as overtime that had not been worked. Both
totals now stop at today; planned days start counting on the day they arrive.
v2.12.1
Fixed
-
Leave days were wiped on every restart.
_async_savewrote the HA store
version into the payload'sschema_versionfield, which is always1, so the
v1→v2 migration ran on every load and never converged. That migration rebuilt
leave_recordsfromhistoryalone, keeping only sick days — so vacation,
off, flex, work-from-home, red days and squeeze days were discarded each time,
and sick days went with them on the following restart.The migration now merges into the existing
leave_recordsinstead of
replacing it, carries over every key it does not touch, and the saved
schema_versionis a real schema constant, so it runs once and stops. -
Arrival and departure margins, and the Google Sheets sync fingerprints, were
dropped by the same migration. Both are preserved now.
Days already lost cannot be recovered — they are gone from storage. Re-enter a
stretch withworktime_tracker.set_period, then run
worktime_tracker.export_allto bring Google Sheets back in line.
v2.12.0
Added
clear_daynow appears in the Home Assistant UI with a name, description and
date picker. It was registered in code but missing fromservices.yaml, so it
could only be called by the card or from YAML.- Every service now offers the
entry_prefixfield in the UI. All nine accepted
it already, but five did not declare it — which is exactly the field you need
on a multi-instance setup.
Fixed
- Service translations listed
export_history, which does not exist, and were
missing four services that do. All nine are now present in English and Swedish.
Changed
- Documentation split up. The README is now a short introduction and install
guide; the reference material moved todocs/— configuration, the card,
entities, services, day types, Google Sheets and troubleshooting. - Documented the four day types that were never written down (
home,
vacation,red_day,squeeze_day), theset_periodservice, day splitting
via top-up, and the six configuration settings added since 2.9.0. - Releases are now published automatically when the manifest version changes, so
HACS shows an update with the changelog section as its notes. - Commit messages follow Conventional Commits, enforced in CI. See
CONTRIBUTING.md.