DailyAccounts — Changelog

Every user-visible change to DailyAccounts, newest first.

This log covers changes that matter to users — new features, behaviour changes, removals, and bug-fix summaries. Internal refactors, performance work that doesn’t change behaviour, and code cleanups are left out. The format follows Keep a Changelog.

Back to DailyAccounts

How entries are labelled
  • Added — new capabilities.
  • Changed — adjustments to existing behaviour you should notice.
  • Fixed — defects that affected the product day to day.
  • Security — access-control and protection improvements.
  • Removed — capabilities that were taken out.

3.4.0.0

The release that turns 3.0.0.0 into something worth trusting with a business’s books: a plain-language way in for people who do not think in debits and credits, a paper trail you can actually read, and a verified upgrade path off the version customers are running today.

Upgrading from 3.0.0.0 is automatic and lossless. On first launch the app takes a timestamped backup beside your database, migrates it, and stamps it. This was verified against a database built by the real 3.0.0.0 release: every account, entry, line, user, permission and setting identical, all four reports byte-for-byte unchanged, and existing passwords still working.
Added — Simple Mode
  • Simple Mode is now the default, with an Accountant Mode switch in the top bar. The mode is set per person, not per company — a book-keeper can work in the journal grid while everyone else uses the guided screens, in the same database, on the same entries.
  • Receive Money, Spend Money and Transfer — three guided screens that ask ordinary questions and compose the double-entry for you. One payment can be split across several categories.
  • Transfers between your own accounts are kept deliberately separate from income and expense, so moving money between banks no longer risks overstating both.
  • Plain-language naming throughout Simple Mode: All Transactions, Accounts & Categories.
Added — Records and evidence
  • Customers & Suppliers. Record who a transaction was with, so “how much has this customer paid us?” is answerable. Readable by everyone, editable with the parties-management permission.
  • Receipt attachments. Attach an image or PDF to any entry, including one already posted — paper usually arrives after the entry does. Attachments are stored inside the database, so a backup carries the evidence with it. Only an administrator can remove one.
  • Entry reversal. The supported way to correct a posted entry: it writes a mirror-image entry as a draft you check and post. The original is never altered.
  • Entry history. The audit trail has recorded what happened to each entry since the first release; there is now a panel that shows it.
  • Document numbers — a per-type, per-year reference (CV-0087) to quote to a colleague. Historical entries were numbered in creation order, so old references are real rather than blank.
  • Saved transactions. Recall a frequently used entry with one click. They are kept outside the ledger, so they can never be counted in a report.
  • First-run setup wizard for a brand-new database, and a command palette (Ctrl-K).
Added — Backup to Google Drive
  • Automatic backups to your own Google Drive — hourly, daily, weekly or monthly. Connect the Google account once; the backup runs while DailyAccounts is open, and a backup missed because the computer was switched off runs shortly after the application next starts rather than being skipped until the following week.
  • Back up now, for the moment before you do something you are not sure about.
  • Restore from Drive. The list shows what is actually in your Drive — when each backup was taken and how big it is — and restores the one you choose. A restored backup is added as a new database; the one you are working in is not touched, and switching to the restored copy is a separate, deliberate act on the Database screen.
  • You choose how many to keep. Older backups are removed after each successful backup, or never, if you would rather keep everything. The newest backup is never deleted, whatever the setting says.
  • The backup is a consistent copy taken through the database engine’s online backup interface, not a file copy, so it can be taken safely while people are working — and it is one self-contained file.
  • Nothing is uploaded until a consistent local copy exists, the temporary copy is deleted afterwards, and the Google connection is stored encrypted to your Windows account.
Security & correctness
  • Posted entries are now immutable in the database itself, not only in application code. Four rules inside the file refuse to delete or edit a posted entry or its lines. This mattered: entry lines are removed along with their entry, so any delete that slipped through would have taken the posted financial detail with it.
  • Reports corrected. The ledger now reports a true opening balance, and the cash-flow statement no longer double-counts an entry that touches the same cash account twice.
  • Access revocation is immediate. Disabling a user or changing their permissions invalidates sessions already issued, instead of leaving up to 15 minutes of access.
  • Session renewal detects reuse. Presenting an already-rotated credential revokes the whole family.
  • The server no longer serves developer error pages — full diagnostics and configuration values — because of how the process happened to be launched. It runs in production mode unless explicitly opted out for debugging.
  • The service refuses to start with an empty signing key rather than reporting Running and failing every request.
  • The audit trail now identifies records with text and composite keys. “Who was granted which permission” is recoverable; previously only half of that key was stored.
  • Deleting a draft entry writes an audit row for the entry itself, not only its lines.
Fixed
  • Importing a database could silently lose recent entries. Import copied the database file alone, but the newest transactions live in a companion log beside it: the copy opened perfectly and was missing them. Import now takes a proper consistent copy, as Backup always did.
  • A malformed stored password returned a server error instead of a failed login.
  • Lists (users, entries, parties) no longer repaint an older result over a newer one when you search or page quickly.
  • The parties screen offered its Add button before the page could service it — the click threw and the dialog never opened.
  • The administrator password fields stayed visibly filled after creating a database, so the next attempt was refused for an empty password while the fields looked complete.
  • The Admin window’s Environment line reported the application’s own build configuration rather than the environment the server was actually running in.
  • The entry screen asked you to confirm saving an entry it was about to refuse for being unbalanced.
  • Starting DailyAccounts when it is already running now brings the existing window to the front instead of showing a dialog saying it is already running.
  • Deleting an account is administrator-only at both ends, not merely hidden in the interface.
  • The Admin window now opens centred.
Changed — for administrators
  • Default ports are 3000 (HTTP) and 3001 (HTTPS).
  • Data lives in %APPDATA%\DailyAccounts — database, configuration and certificates — and is never touched by an application update.
  • The embedded User Guide has been brought up to date with everything above; it previously documented the 3.0.0.0 product, including ports and a data folder that were no longer correct.

3.3.0.0

Added
  • Receipt attachments — an image or PDF stored inside the database alongside the entry it belongs to.
  • Database-level immutability for posted entries, so a posted entry cannot be edited or deleted even by something reaching past the application.

3.2.0.0

Added
  • Saved transactions — recall a frequently used entry rather than retyping it.
  • Entry reversal — correct a posted entry with a mirror-image draft instead of altering the original.
  • Per-type document numbers, with a backfill that numbered existing entries in creation order so historical references are real.

3.1.0.0

Added
  • The groundwork for Simple Mode: the guided entry screens, the customer / supplier dimension, and a per-user entry-mode preference.

3.0.0.0

The first Microsoft Store release of the rebuilt DailyAccounts.

Changed
  • Version numbering was realigned to the Store’s four-part scheme. The Store previously carried 2.2.1.0 of the original DailyAccounts; the entries below this point are the development history of the rebuilt product, which was numbered 1.0 and 1.1 at the time.
  • Databases created by this release upgrade cleanly and losslessly to 3.4.0.0.

2026-05-23

Correctness and polish fixes turned up by a full system test of the API, business logic, and browser UI. Verified end-to-end against a fresh database after rebuild.

Security
  • The Users list and other users’ profiles are no longer visible to regular users. Previously, any logged-in user — even one with no permissions — could call the Users API and see the full list of accounts (usernames, full names, last-login times) and read another user’s profile. Passwords were never exposed, but the user enumeration itself shouldn’t have been possible. Both endpoints are now admin-only; regular users can still view their own profile.
Fixed
  • Income Statement and Balance Sheet now report exact figures to the cent. Previously, individual income accounts could lose their cents (showing whole rupees / dollars only), causing totals to drift by a few cents. The Balance Sheet’s net profit could also disagree with the Income Statement’s net profit by a small amount, and the “Balanced ✓” indicator could incorrectly show as not-balanced even when the books were in order. All five financial reports — Trial Balance, Balance Sheet, Income Statement, Cash Flow, General Ledger — now agree on every number to the cent.
  • Unpost a posted voucher. Admins can again move a posted voucher back to draft state. (A database guard rule was over-broad and was blocking every change to a posted voucher, including the legitimate “unpost” action.)
  • Creating a top-level account no longer errors out. Previously, creating any account without a parent (i.e. an account at the root of the chart) failed with a database error.
  • Session-expiry redirect now works correctly for every page. Previously, when your session timed out you might see a “Network Error” toast and get stuck on a stale page. The next action now cleanly redirects you to the login screen.
  • Settings page registry editor no longer throws an error when loading. The page renders cleanly. If a feature key contains special characters (quote, apostrophe), it now also displays and saves correctly.
  • Cash flow report now includes Income and Expense accounts out of the box. The bundled Generic / Retail / Services chart-of-accounts seeds now correctly classify all Income and Expense accounts as Operating activities.
  • Create a new user with the disabled checkbox. Admins can now create a user who starts in a disabled state. Previously, the “Active” checkbox was silently ignored on user creation; every new user started enabled.
  • Direct URL to an admin-only page as a non-admin now shows a friendly “Access denied” card with a button back to the dashboard, instead of dumping a raw error onto the page.
  • Browser tab favicon 404 no longer pollutes the developer console.

2026-05-22

A broad cleanup and reliability pass across reports, the chart of accounts, the web UI, and authentication.

Changed
  • Light theme is the default. New users open the app in light mode. The theme toggle in the top bar still switches to dark; your choice is remembered per browser.
  • No more dark flash when moving between pages. Earlier the page would briefly render dark before switching to your chosen theme; that flicker is gone.
  • Trial Balance report now shows three columns per account — gross Debit, gross Credit, and Net Balance — instead of just net balance on one side. The grand-total row sums the gross columns; both totals will match (debits equal credits across the period). This gives you full visibility into what’s hitting each account, not just the final position.
  • Cash Flow Statement has been rewritten. It now walks the actual vouchers that moved cash in or out and attributes each cash movement to the account on the other side of the entry. Non-cash transactions are correctly excluded — credit sales, accruals, write-offs, and journal transfers no longer inflate the cash flow numbers. The total Net Cash Change now exactly equals the change in cash account balances over the period (a true reconciliation).
  • General Ledger now shows credit-normal accounts (Income, Liabilities, Equity) with proper “CR” labels. A natural credit balance like 5,000.00 CR no longer displays as -5,000.00. Running balances also climb in the natural direction for each account type.
  • Reports include accounts with history even if disabled. Disabling an account used to hide its past entries from past-period reports, which made history look wrong. Now reports include any account that had activity in the period regardless of its current enabled/disabled state. Empty disabled accounts are still hidden from cluttering the view.
  • Session expiry now auto-redirects to the login page. If your session times out (8-hour idle limit) or you’re signed out from another tab, the next click takes you cleanly to login instead of showing a blank page or stale data.
Fixed
  • Special characters in account names, voucher descriptions, user names, and fiscal year labels now render correctly everywhere. Apostrophes, ampersands, quotes, and angle brackets used to break the UI or silently corrupt nearby buttons; now they display as typed.
  • Dashboard panel load errors are reported in a single warning toast naming which panels failed, instead of silently leaving placeholder dashes. If the server is down, you’ll know immediately.
  • “Deactivate this database” on the control panel now only deactivates the named database. Previously it would deactivate every registered database — only affecting setups that used the multi-database feature.
  • Dashboard fiscal-year chip no longer gets stuck on “FY ...” placeholder text when the fiscal year fails to load.
Removed
  • Six unused medical / clinic billing report endpoints that had been left over from an earlier vertical of this codebase. None of them were reachable from the user interface; their removal has no user impact.

1.0 — January 2026

First release of the rebuilt DailyAccounts.

Added
  • Double-entry bookkeeping — every transaction posts a debit and matching credit automatically.
  • Voucher entry — payment, receipt, journal, and contra voucher types with narration support.
  • Chart of accounts with grouped ledger management across assets, liabilities, income, and expenses.
  • Trial Balance report — real-time debit/credit totals per ledger with drill-down to vouchers.
  • Balance Sheet — automatically computed from ledger balances with asset/liability grouping.
  • Profit & Loss statement generated from income and expense ledger activity.
  • Day Book — chronological view of all voucher entries for a selected date range.
  • Ledger statement — full transaction history per account with running balance.
  • Browser-based reporting interface — all reports accessible from any device on the local network.
  • Multi-company support — separate databases per company, switch without restarting.
  • Financial year management with opening balance carry-forward.

Back to DailyAccounts