Skip to content

2026.08.09.1

Web dashboard hero conformance: standardised header, Safe to Spend states, period selector, Balance Projection footer (KAN-850)

The top of your dashboard now has a cleaner, more consistent look, bringing your greeting, the Add Transaction button, the month selector, and your key numbers together in one refreshed header. Safe to Spend uses clearer color-coded states so you can tell at a glance whether you’re comfortable, running tight, or about to overspend, with a bold warning when your spending would take you below what’s safe. A new period selector lets you view your spending for this month, last month, or the last three months, and the Spending by Category and Spending by Payee breakdowns update to match. Your Balance Projection can now be filtered to all accounts, just checking, or just savings, and it marks where today falls along the timeline. It also shows your lowest projected balance and the date it’s expected, highlighted in red whenever that balance is projected to drop below zero. Together these updates make it easier to read your financial picture and see what’s coming.

Enable Google Sign-In for the mobile app (iOS + Android builds) (KAN-852)

The Tovari mobile app now lets you sign in with your Google account, so you no longer need a separate email and password to get into the app on your phone or tablet. Choose the ‘Sign in with Google’ option on the login screen, pick your Google account, and you’re in — the same quick sign-in the web app already offered, now on both iPhone and Android. If you’re new to Tovari, signing in this way sets up your account for you in a single step. If you already use an email and password, nothing changes — that sign-in keeps working exactly as before. The app also switches cleanly between different Google accounts, so signing out and back in with a different account works the way you’d expect.

Update Balance Projection widget to match iOS/Android design spec (KAN-854)

The Balance Projection now gives you a clearer, easier-to-read picture of where your balance is headed in the days ahead. It highlights the lowest point your balance is expected to reach and the exact date it happens, so you can spot a tight spot before it arrives. A clearly marked zero line and a shaded area below it let you see at a glance whether — and when — your balance might dip into the negative. The highlight on your lowest point turns red when your balance is projected to fall below zero, and if you’re already below zero the view says so in plain language. The refreshed look matches the rest of the app for a more consistent, polished experience.

Review Center (web) / Alerts (iOS + Android): detected-item queues with approve-before-apply (KAN-906)

Tovari now has a Review Center on the web and an Alerts tab on iPhone and Android — one place that gathers everything Tovari has noticed but hasn’t acted on yet. You’ll find money you moved between your own accounts that is still being counted as spending, repeating charges that could become scheduled bills, and transactions still waiting to be filed into a category. Nothing is ever applied on its own: every item shows you exactly what it will change before you approve it, and anything you approve can be undone. A count sits beside Review Center and on the bell so you can tell at a glance whether anything needs you, and it disappears completely when nothing does. Reviewing transfers has moved out of the transaction register into this one place, so you are never asked the same question in two different spots.

Native mobile signup: Phase 1 — account creation through budget interview (iOS + Android) (KAN-908)

You can now create a Tovari account directly from the iPhone and Android apps, without having to start on the web. Signing up guides you through it one step at a time: enter your name, email, and password, confirm your email with a code we send you, then review and accept the Terms of Use and Privacy Policy. From there the app helps you get going right away with a brief welcome, adding your first accounts, and a short setup where you choose the spending categories you want to budget. Returning users can sign in with an email and password, use Sign in with Apple or Google, and complete two-step verification when it is turned on for the account. And if something goes wrong along the way, such as a wrong password, a locked account, no connection, or a session that has expired, the app now explains clearly what happened and how to continue.

Web Dashboard Board: rebuild from scratch per Claude Design brief (supersedes KAN-819, KAN-850) (KAN-929)

Your dashboard has a refreshed design that gives you a clearer, at-a-glance view of your money. At the top, your Safe to Spend amount now shows one of three plainly labeled states — healthy, getting tight, or negative — so you always know where you stand, and you can open a breakdown to see how each of your accounts and your upcoming bills add up to that figure.

Key numbers like your net worth and total spending now sit together in one row, and dedicated cards track your financial goals, account balances, spending by category and by payee, and the budget categories you’re watching. A month selector lets you step back through earlier periods to compare your spending over time, and the balance projection at the bottom can now include your investment accounts alongside your other balances. Together these give you a faster, more accurate read on your finances the moment you open the app.

Safe to Spend settings: user-configurable planning window + “getting tight” threshold (web, mobile web, Expo) (KAN-938)

You can now tell Tovari how far ahead to plan your Safe to Spend number and when to warn you that money is getting tight. In Settings, choose whether the figure covers your next one, two or three paychecks — it now covers two by default, so the number reflects a little more of the road ahead than it did before. You can also let Tovari work out your safety cushion automatically or set an amount of your own, and a live preview shows exactly what your new number will be before you save it. Because these settings belong to your household rather than to one person, both of you always see the same figure and the same status, and you’re told if your partner changes something while you’re editing. If Tovari doesn’t have enough spending history yet, it now says so plainly and offers to set a starting cushion, instead of calling a very small balance healthy. Everywhere the number appears — your dashboard, your reports and your phone — it now reads from one place, so the amount, the status and the wording always match.

Web Dashboard Board: reconcile rebuilt UI against Claude Design brief & mocks (KAN-929 follow-up) (KAN-1014)

The dashboard did not look the way it was designed to: the header felt boxed-in, spacing and text sizes were inconsistent, and some details didn’t match the rest of the app. It now matches the intended design — the colored header stretches across the full width of the page, and the cards below line up with cleaner, more consistent spacing. Your Safe to Spend amount stands out more clearly: it shows in green when you’re in good shape, amber when things are getting tight, and inside a solid red box with a “Needs Attention” tag when you’re short. Opening the Safe to Spend breakdown now slides the details in right under the header instead of covering the page, and every amount going out is shown in red so shortfalls are easy to spot. When an account is short, the breakdown also tells you plainly which account it is and by how much, with a suggestion for what to do about it. The month controls and buttons at the top of the dashboard now work and look the same as they do on the Budget screen.

Show when a scheduled bill already has a matching pending bank transaction (web + mobile) instead of flagging it red as overdue (KAN-1015)

When a payment for one of your scheduled bills had already arrived at your bank but hadn’t finished going through, the app used to mark that bill red as if you had missed it — even though the money was already on its way. Now the bill shows a clear “payment pending” look instead: a blue highlight, a PENDING tag, and a note that the payment is at your bank and will take care of the bill automatically once it finishes. A bill that is truly late, with no payment on the way, still shows red, so that warning keeps its meaning. If you try to mark a bill as paid while a matching payment is already pending, the app now pauses and asks you to confirm first — showing you the pending payment — so you don’t accidentally record the same payment twice. This works the same on the website, on your phone’s browser, and in the iPhone and Android apps.

Row-menu “Make recurring” still offered on transfer legs whose counterpart hasn’t arrived (KAN-631)

When you move money between your own accounts, the app records both sides of that movement so it isn’t counted as spending. But if only one side had come in from your bank so far, the menu on that row still offered to turn it into a recurring bill. Setting one up would have counted the same movement twice — making your Safe to Spend and your projected balances look lower than they really are. That option is now correctly hidden on both sides of every transfer, whether or not the matching side has arrived yet. Everything else on the row menu is unchanged, and ordinary transactions can still be made recurring exactly as before.

mergePayees does not repoint bills.payee_id (leaves bills on an inactive payee) (KAN-640)

When you merged two payees together or deleted a payee, any bills connected to that payee could get stuck — trying to edit one of those bills failed with a confusing “Payee not found” message. That no longer happens. Merging payees now moves their bills over to the payee you keep, and a bill only takes on the kept payee’s name if you had not given it a custom name of your own. Deleting a payee now simply unlinks its bills, and each bill keeps its name so nothing disappears from your schedule. Bills that were already stuck from earlier merges or deletions are repaired automatically, so you can edit them again.

deletePayee / softDeleteOrphanedPayees can deactivate a payee a bill still references (KAN-641)

When you deleted a payee, or when the app automatically tidied up payees that no longer seemed to be in use, a bill that still relied on that payee could be left pointing at one that had been removed. That bill would then stop working and could no longer find its payee, even though you had never touched the bill itself. Now, deleting a payee cleanly releases it from any bills that were still using it, so those bills continue to work normally. The automatic cleanup also leaves a payee in place whenever a bill still depends on it, so it can never strand one of your bills. Any bills that were already affected by this problem are repaired automatically and open and work as expected again.

summarize() counts ended-but-active recurring bills in the Bills hero totals and activeBillCount (KAN-780)

The totals at the top of the Bills screen were counting bills that had already finished. A recurring bill that reached its end date or its final payment — like a paid-off loan or an expired subscription — was still included in your active bill count and in the Monthly Out and Monthly In amounts, making them look higher than they really were. Those finished bills are now left out of the totals, so the numbers at the top reflect only the bills that will actually come due again. Finished bills still appear in your bills list, so nothing disappears — the count at the top may simply be smaller than the number of bills you see listed. This correction applies on both the web and the mobile app.

GET /bills/due computes status/daysUntil from server-UTC today instead of the client timezone (KAN-781)

The bill details shown on the Budget screen could judge due dates by the wrong day. Because the app was checking the date against a clock in a different time zone than yours, looking at your budget in the evening could show a bill that is actually due tomorrow as due today, or a bill due today as already overdue. The app now uses your own local calendar day when deciding whether a bill is upcoming, due today, or overdue. A bill due tomorrow now correctly shows as due in one day, and a bill due today no longer appears overdue. Nothing else about your bills changed — amounts, due dates, and paid status are exactly as they were.

Stale transfer suggestions never retired — review list doesn’t re-apply refutation on read (KAN-815)

When Tovari spots money that appears to move between two of your own accounts, it lists these as possible transfers for you to review and link together. Previously, some of these suggestions stuck around even after they clearly no longer qualified, such as a card payment or an everyday purchase that was never a transfer between your accounts. Because each suggestion was only checked at the moment it was first created, these outdated, false matches lingered indefinitely and could never clear on their own. That was risky, because confirming one of them would have wrongly hidden a real expense or deposit from your reports.

Now the possible-transfers list re-checks every suggestion each time you open it and automatically removes any that no longer qualify, so you only see genuine transfer matches that are worth reviewing.

Fix “Enter now” on a pending row duplicating the charge when the bank posts it (KAN-816)

Previously, if you marked a pending charge as entered before your bank officially posted it, the app could add the bank’s posted version as a separate transaction, counting the same charge twice and throwing your account balances off. Now, entering a pending charge early settles that same transaction in place when the bank posts it, so the charge is only ever recorded once and your balances stay accurate.

Any duplicate charges this problem had already created have been cleaned up and the affected balances corrected. You can safely enter a pending charge ahead of the bank without worrying about it doubling up later.

Entering a scheduled bill after its bank payment already imported creates a permanent duplicate (entered-occurrence merge only runs bank→entered, never entered→bank) (KAN-931)

When you had a scheduled bill on a connected bank account and its real payment had already been imported from your bank, marking that bill as paid used to add a second, separate line for the very same payment. The two entries never linked together on their own, so the duplicate stayed until you spotted it and manually matched or removed one — throwing off your balances and spending totals in the meantime. Now, before adding a new entry, the app checks the account for a payment that already arrived from your bank and matches the bill. When it finds a clear, confident match, it marks the scheduled bill as paid by that existing payment instead of creating a duplicate, keeping the actual bank amount even when it differs a little from the bill’s usual figure. If there’s any doubt, it leaves your entry exactly as it worked before, so nothing is ever combined by mistake.

Web Reports payee tab silently applies hidden budget-only scope with no visible toggle (KAN-948)

The Spending by Payee view in Reports was quietly leaving some of your spending out of the picture. If you had turned on “Budget Only” in the Income vs Expenses report, that same narrowing was silently applied to your payee totals too — even though the payee view offers no such option and gave no sign it was happening. This is now fixed: Spending by Payee always shows your complete spending for the chosen time period, across everything you spent, on both the web and the mobile app. If some payee totals look higher than before, that is the previously hidden spending being counted again — the numbers are now complete. The Income vs Expenses report keeps its Budget Only option and works exactly as it did before.

Auto-link matcher data defect: 0/180 transfer legs auto-linked in prod (KAN-836 exposes symptom, does not fix it) (KAN-982)

When you moved money between two of your own accounts — like paying your credit card from your checking account — the app often failed to recognize the two sides as one transfer, so the payment could show up as if you had spent that money. The app now recognizes these matching pairs far more reliably and connects them automatically, keeping money you moved between your own accounts out of your spending totals. Credit card payments brought in from your bank now land in the Credit Card Payment category consistently, instead of sometimes being labeled as loan payments. On the Reports screen, the Budget Only filter is now visible on the Spending by Category and Spending by Month views, and it switches off automatically when you move to a view where it doesn’t apply — so a report always shows exactly what its filter says. On your phone, editing one side of a linked transfer no longer offers the option to make it recurring, since moving money between your own accounts isn’t a bill. Transactions already in your history keep their current categories; these improvements apply as new activity comes in.

KAN-836 shipped the rejected option — spend universes were decomposed, not aligned (KAN-997)

The Budget screen’s monthly spending total was counting money you moved between your own accounts as if it were spending, so the total there could disagree with the totals shown in Reports and in the yearly budget view. Your Safe to Budget amount was also being reduced by those same account-to-account moves, making it look like you had less to work with than you really did. Both are fixed: the monthly total now matches Reports and the yearly view exactly, and moving money between your accounts no longer counts against what you can budget. Because of this, some people will see their Safe to Budget amount go up — that higher number is the correct one. Transfer categories still appear everywhere you pick a category, so you can keep labeling those moves the same way you always have.

Tab key does not reliably advance to the next form field — skips fields in Account creation and Bill entry forms (KAN-1041)

Previously, pressing the Tab key while filling out a form didn’t always move to the next field — it could silently skip over items like the account type when adding a new account, or the category and account when scheduling a bill, forcing you to reach for the mouse. Now Tab reliably advances through every field in order with nothing skipped, and Shift+Tab moves back through them the same way. This works across the New Account form and the bill scheduler, including their dropdown menus, which you can now open and choose from entirely with the keyboard. A subtle outline also appears around whichever control you’ve tabbed to, so it’s always clear where you are on the form.

payee_mappings not repointed by POST /payees/merge; loadNormalizationContext reads it with no is_active filter (KAN-1116)

When you merged two payees into one, the app was quietly leaving traces of the old payee behind, so newly imported transactions could still be matched to the payee you thought was gone — merging now carries everything over to the payee you kept. Deleting a payee that your scheduled bills relied on also used to unlink those bills silently, with no warning; the app now tells you how many scheduled bills would be affected and asks you to confirm before going ahead. Your bill names are preserved either way, so nothing on your schedule loses its label. Separately, if you deleted a transaction and later tried to enter it again, the app could wrongly refuse to save the new copy; that now works — re-entering a deleted transaction saves normally, while accidental double entries are still caught. Together these fixes make merging and deleting payees safe and predictable, with no leftover connections behind the scenes.

Reconcile budget totals universe with canonical spend universe (Total Spent vs totalOutflowCents) (KAN-836)

On your dashboard, the total for how much you’ve spent could differ from the spending totals shown on other screens, with nothing to explain why. The gap came from money moving into or out of accounts you don’t track in the app: your dashboard total counted those movements while the other screens left them out. Now, whenever any of that untracked activity is part of your spending total, a short note appears just beneath it telling you how much of the total it accounts for. If the figure ever looks off, you can see the reason at a glance and reconcile it against your other screens. The totals themselves haven’t changed — you simply get the explanation that was missing before.

Shared accessible Select/dropdown primitive for the remaining div-onClick sites app-wide (KAN-1054)

Many of the app’s dropdown menus and pickers — like the category picker in the transaction register, the account filters on the Bills and Reports pages, and the account type selector — could only be used with a mouse: pressing Tab skipped right over them and the arrow keys did nothing. Now every one of these menus can be reached with the Tab key and used entirely from the keyboard. Arrow keys move through the choices, Enter picks the highlighted one, and Escape closes the menu and returns you to where you were. Screen readers also announce these menus properly now, so it is clear what each control is and which option is highlighted. Everything looks exactly the same as before — nothing moved or changed visually. Clicking anywhere outside an open menu now closes it in a few more places, matching how the rest of the app already behaves.

AccountFormModal: add focus trap, role=dialog, and Escape-to-close (KAN-1055)

The window for adding or editing an account now behaves the way you would expect a pop-up window to. Pressing the Escape key closes it, just like clicking Cancel or clicking outside it. When you move through the window with the Tab key, your place now stays inside the window instead of wandering off into the page behind it. When the window closes, you are returned to the spot you were working from before it opened. And if you use a screen reader, the window now announces itself properly, including whether you are adding a new account or editing an existing one.