Version 1.0.1
Latest 31 August 2026Closes all twenty-four findings of the post-release audit of 1.0.0. No new features — this is money that was counted twice, times that shifted on import, series edits that rewrote history they had no business touching, and a calendar that did more work than it needed to.
Fixed — money and history
- Editing a recurring appointment no longer rewrites the payment history of the whole series. Both “this and following” and “entire series” were pushing the open occurrence’s payment status across every other one — including visits settled months earlier — and because the amount paid never travelled with it, occurrences were left reading Unpaid while still holding a recorded amount, which the Money view then counted twice over. What has been billed and collected is now strictly per-appointment, and a series edit only re-prices occurrences where no money has changed hands.
- The Money view no longer counts waived appointments as money you are owed. A waived booking was contributing its full price to total billed and therefore sat in outstanding forever, while never appearing in the unpaid worklist that is meant to account for exactly that figure. Waived amounts now leave billed, paid and outstanding — and the per-service and per-resource breakdowns — and are reported on a card of their own when there are any.
- Editing a recurring appointment is now checked against the same rules as editing a single one. “This and following” and “entire series” wrote straight to the database, so a series could be moved onto a closed day, on top of existing bookings, or over occurrences that had already happened — none of which a single-appointment edit has ever allowed. The editor now lists which occurrences clash and offers to go ahead anyway, and leaves completed, cancelled and no-show occurrences as they are.
- Splitting a counted series with “this and following” no longer leaves the remainder the wrong length. The new series inherited the original “ends after N” as though none of those occurrences had been used, so the tail ran on past the end of what was booked. The remainder is now counted from the split, and an occurrence you had already edited on its own travels with the tail rather than being stranded behind it.
Fixed — booking and the calendar
- An appointment can be marked Completed, No-show or Cancelled from the editor again. The status dropdown had been inert for those three values: choosing Completed and saving reported that the appointment was already Completed. One mistakenly marked as finished can now also be set back to Scheduled, which is what the message tells you to do.
- A cancelled appointment no longer squeezes the one beside it. Cancelled and no-show bookings were taking a lane in the day view’s overlap layout, so a single cancellation permanently halved the width of the live appointment next to it. They are still drawn, struck through as before, but no longer count as occupying the slot — the same rule conflict detection has always used.
- A recurring appointment starting more than three months out no longer shows up as a single booking. Its occurrences were not created until the start date drew close, because the rolling horizon measured a future series’ runway from today rather than from the day the series begins. A future series now materializes its first year from its own start date.
- Start-time suggestions can no longer run past the end of the day. On a business day ending close to midnight, rounding a free window up onto the slot grid could wrap around to 00:00, and a long evening appointment could be offered a slot finishing the following morning.
- Typing over the client name without choosing from the list no longer saves the appointment against the previous client. Replacing “John Smith” with “Jo” and clicking away left the box reading “Jo” while the booking still belonged to John Smith. An edit that no longer matches the chosen client clears the selection, which is re-established only by picking from the list.
- Searching now ignores letter case. “physio” found nothing when the appointment was titled “Physio Review”. This affected the calendar search, the client list, and the export and print filters that share the same predicate. Typing a
%or_now searches for that character rather than acting as a wildcard.
Fixed — import, export and reminders
- Imported
.icsfiles no longer shift every appointment by your time-zone offset. A trailingZmarks a UTC timestamp, which is what Google Calendar and Outlook export; it was being stripped and the value read as local wall-clock. All-day dates are still never shifted, and this app’s own exports round-trip unchanged as before. - Importing an
.icsfile no longer mangles text containing a backslash. A path likeC:\notescame back asC:\followed by a line break andotes. - CSV exports no longer let a client name or note act as a spreadsheet formula. A value beginning
=,+,-or@was written straight through and evaluated when the file was opened in Excel; such values are now marked as literal text. This covers the client, appointment and takings exports. - Exporting or printing now tells you when cancelled appointments were left out, instead of quietly producing a file with fewer appointments than the screen shows.
- An unacknowledged reminder no longer opens a new toast every thirty seconds. Only Dismiss and Open marked a reminder as fired, so one nobody was there to answer re-appeared on every poll — up to about 120 stacked windows over its one-hour catch-up window. A reminder already on screen is now left alone.
Fixed — startup and stability
- The window icon crashed the app on launch, because it was referenced by a relative address that could not be resolved once packaged.
- A failure while the app is starting up now reports itself and closes, instead of leaving a process running with no window and no tray icon — reachable only through Task Manager.
- A read error during the reminder check no longer produces a dialog every thirty seconds, faster than it could be dismissed. Brief failures are ridden out silently, and a check that keeps failing stops and says so once.
- The app no longer opens with the appointment editor panel already showing — empty pickers, both footer rows drawn over each other, and the series prompt and conflict banner both visible on a brand-new appointment.
Changed
- Business hours are now saved as a pair, and only when the pair makes sense. Setting a closing time earlier than or equal to the opening time is refused with an explanation, instead of being saved and quietly making every day report as closed — which left the app unable to accept any booking at all, with nothing on screen saying why.
- Restoring from a backup now saves a copy of your current data first, so restoring the wrong file can be undone — and the chosen file is checked to be an Executive Appointment Scheduler backup before anything is replaced, rather than any database file being accepted.
- Start time no longer presents an unexplained empty dropdown when a resource has nothing free. It says why — a day off, or a fully booked diary — and still offers the business day, so booking outside normal hours remains possible.
- A second launch brings the running app to the front instead of showing an “already running” dialog. Closing the window only hides it to the tray, so this is the normal way to re-open it.
- The first-run resource is named
Mainrather than your Windows account name, which read as a leaked detail and put a real person’s name on calendar columns and printed day sheets. - Selecting a sidebar item no longer makes its label disappear, and the sidebar now shows the logo lockup, which the product name had been too wide for. The name remains available to screen readers.
- The series prompt no longer overflows the editor panel — its three choices are stacked full-width — and client detail fields render at their intended width rather than about a third of it.
Performance
- The calendar is quicker to load and to search. Typing in the search box now waits for a pause rather than reloading the entire view on every keystroke; Day view fetches its appointments and every resource’s availability in a fixed number of reads instead of several per resource (a ten-resource day went from around forty round trips to four), and Week view reads the whole week at once rather than a query per day. Overlapping reloads can no longer interleave and leave the columns half-rebuilt.
- Choosing a date range in the Money view loads the figures once instead of three times, and appointment colours are parsed once per colour rather than once per appointment on every reload.
Added
- A full user guide, including how to return the database to a first-run state.
- A published privacy policy.