A patch release focusing on UI polish and theme consistency.
Corrected an issue where some form input fields would incorrectly retain dark theme styling when the light theme was active.
Added a toggle for the template feature in the "Add Transaction" modal. The template selection and saving fields are now hidden by default, providing a cleaner interface for simple entries.
A major update focused on user experience, quality-of-life, and onboarding. Tidy is now faster to learn and more efficient to use day-to-day.
New users are now welcomed with a fully-featured demo mode. You can explore the app with sample data without needing to connect a folder or Google Drive account first. Your work in this mode is temporary and is not saved until you connect your own storage.
Tidy now respects your system's preferred color scheme. The interface, including all charts, will automatically adapt to a polished dark theme.
Transaction entry is now faster with payee memory and category auto-fill. You can also now save frequently used transactions as templates for quick loading.
Pots with a goal amount and date will now display a helpful hint showing how much you need to save each month to stay on track.
This update makes budgets more proactive and visible, helping you make smarter spending decisions in the moment.
When adding or editing a transaction, the form now shows you the real-time status of the selected category's budget, including how much you have remaining.
The Summary panel will now display small amber "chips" for up to three categories that are approaching their budget limit, giving you an early warning on your spending.
The tooltip for the spending donut chart on the Dashboard now includes budget information, showing you exactly how much you've spent versus your budget for that category.
This release focuses on significant accessibility improvements and user interface polish, making the app easier to navigate and visually clearer.
The main view tabs are now fully accessible, featuring proper ARIA roles and keyboard navigation support (Left/Right arrows) so screen readers can correctly interpret and announce the active panel.
The over-budget progress bar has been switched from red to a gentler amber gradient, providing a less alarming visual cue when you've overspent in a category.
Corrected minor issues where tab button styling and panel visibility could become out of sync with the application state, ensuring a more reliable user interface.
This release focuses on making the Google Drive sync feature significantly more robust, intelligent, and communicative, especially when dealing with network errors or multi-device conflicts.
The app now caches Google Drive file metadata to perform conditional uploads. This prevents accidental overwrites and ensures that changes are only sent when the local data is newer than the cloud version.
Added intelligent retry/backoff helpers for all Google Drive operations. The app will now automatically retry failed requests due to temporary network issues, making the sync process more reliable.
Enhanced the sync conflict handling to gracefully manage 412 "Precondition Failed" errors from Google Drive. If another device has updated the file, these conflicts are now clearly surfaced in the existing review modal.
When disconnecting from Google Drive, the app now properly revokes the OAuth token and clears all Drive-related metadata. The UI copy has also been updated to provide clearer, Drive-specific guidance during the sync and conflict process.
This is a significant data engine update that improves correctness, especially for recurring items and sorting. All existing data will be automatically migrated to the new, more robust format upon loading.
Recurring transactions scheduled for the 29th, 30th, or 31st of the month will now correctly appear on the last day of shorter months (e.g., February 28th), preventing them from being skipped.
Transactions created on the same day will now maintain a consistent order across sessions and devices. This is achieved by using new UUIDs and creation timestamps for deterministic sorting, which resolves potential inconsistencies in sync and export operations.
The data persistence layer has been upgraded. All items now use universally unique identifiers (UUIDs) and include `createdAt` and `updatedAt` timestamps. This strengthens the foundation for all create, edit, and sync operations.
This version introduces a more robust and reliable saving mechanism to prevent data loss and provide clearer feedback on data persistence.
Implemented a serialized write queue with debounced `markDirty` scheduling to prevent overlapping autosave writes, ensuring data integrity.
The folder write helper and autosave UI feedback have been updated. The status light now accurately reflects the completion of the write operation, giving users a clear indication of when their data is saved.
Manual saves and Google Drive sync now trigger the queued save pipeline. This ensures that all local data persistence is atomic and prevents race conditions.
The first official public release of Tidy! This version focuses on stability, quality-of-life improvements, and a more intuitive user interface.
The app now securely remembers your Google Sign-In across sessions. If you close your browser and come back later, you'll be automatically signed in.
For mobile users (especially on Android), the app now remembers previously connected local folders. You'll see a simple "Click to reconnect" button in Settings to re-grant permission without having to find the folder every time.
The controls at the top of the app have been reorganised for clarity. Sync status (for both Local Folder and Google Drive) is now grouped together with clearer icons and tooltips.
You can now toggle the summary's closing balance between 'Cleared' (your actual, confirmed balance) and 'Planned' (a forecast including pending items). The app remembers your choice.
Corrected a logical inconsistency where the "Planned Closing Balance" in the summary didn't align with the running total in the calendar view. Both figures are now in sync and provide a true forecast.
Replaced direct HTML injection with safe text helpers across the app to prevent potential cross-site scripting (XSS) vulnerabilities from user-provided data like payees or notes.
The "Export to CSV" button on the Dashboard is now fully functional. The export is guarded against CSV injection attacks by ensuring data that looks like a formula (e.g., starting with '=') is safely formatted.