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.

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.) Existing databases need their internal rule replaced once after this update; new databases pick up the fix automatically — see the SQL snippet below.
  • 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 a JavaScript 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. (Affects new databases. For existing databases, edit each Income/Expense account on the Chart of Accounts page and set CF Section to Operating.)
  • 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 JSON error onto the page.
  • Browser tab favicon 404 no longer pollutes the developer console.
Notes for existing databases. If your database was created before this update and you want unpost to work without recreating the database, run this SQL against it once:
DROP TRIGGER trg_voucher_no_edit_if_posted;
CREATE TRIGGER trg_voucher_no_edit_if_posted
  BEFORE UPDATE ON voucher_master
  WHEN OLD.posted = 1 AND NEW.posted = 1
BEGIN
  SELECT RAISE(ABORT, 'Cannot modify a posted voucher.');
END;
For the cash-flow report on existing databases, open each Income and Expense account from the Chart of Accounts page and set its CF Section field to Operating (or whichever category fits — Investing / Financing — for special-purpose accounts).

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 public release.

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.
  • Supports Windows 7, 8, 10, and 11 (32-bit and 64-bit).

Back to DailyAccounts