Zerosum
Zerosum

🧩 Zerosum v1.5.6 β€” Splits in Full Detail

Tag every line, note every leg, and a wave of speed underneath. This release brings full per-child editing to split transactions β€” separate tags and a separate note for each split row, on desktop and mobile. Plus calendar-rule recurring (every 3rd Wednesday, last day of month, arbitrary intervals), loan-payment templates, multi-currency support, and a long stack of pending-review polish, fixes, and quiet perf wins.

βœ‚οΈ Splits, Now With Per-Line Detail

  • Tag each split row independently. Splits no longer share one tag set. The Costco run that's "groceries portion + household portion + electronics portion" can now have a different tag on each line β€” and they show up correctly in Spending by Tag, tag filters, and #tagname search.

  • A note on every line. Each split row gets its own free-form note in addition to the parent transaction's note. Useful for itemizing "what was this $43.27 for, exactly" without polluting the top-level memo.

  • Same UX everywhere. Inline desktop edit, mobile drawer, pending-approval row, and the recurring template editor all carry the same per-row tag picker + note input. The top-level tag picker hides when you're in split mode (it's analytics-invisible there anyway), and bulk-tag from the toolbar disables when a split is in the selection β€” with a tooltip explaining why.

  • Carries through recurring. Make a tagged-and-noted split recurring and every spawned occurrence inherits the per-child metadata. No more re-tagging every monthly Costco run.

  • Saved-row rendering. Each split child line now shows its own tag chips and note text on both desktop and mobile saved views β€” what you typed in the editor is what you see in the list.

β†’ Splits help-center article Β· Tags and splits

πŸ” Recurring β€” Calendar-Aware Rules

  • Every 3rd Wednesday. Recurring templates now support week-of-month rules: "1st Friday", "Last Tuesday", "3rd Wednesday" β€” for things like rent that lands on a specific weekday-of-month rather than a fixed day number.

  • Last day of the month. A dedicated "Last day" rule that handles 28/29/30/31 correctly across every month β€” bills that hit on the 31st no longer skip February.

  • Arbitrary intervals. Every 2 weeks, every 3 months, every 6 weeks, etc. Pick a unit (week/month/year) and a number β€” the engine handles the rest.

  • Loan-payment recurring. Loan payments can now be set up as recurring templates (previously blocked). Backed by tightened recurring eligibility so system-kind transactions stay out.

🌍 Multi-Currency Support

  • 0, 2, and 3-decimal currencies. Yen (Β₯), KWD (3 decimals), and standard 2-decimal currencies all render and parse correctly throughout the app β€” display, input, CSV export. Pick your currency in budget settings and amounts behave consistently everywhere.

πŸ“… Calendar β€” Daily Net Totals

  • See each day's net at a glance. The calendar now shows a net (inflow βˆ’ outflow) total under each day cell. The legacy "Add" button on the calendar header is gone β€” adding a transaction goes through the same dialog as the rest of the app.

πŸ“‹ Pending Review β€” Bulk Polish

  • Progress toast + spinner. Bulk-approve and bulk-reject now surface a progress toast while the work runs, with a spinner so you know it didn't get lost.

  • Staged-edit selection. Edits made during pending review are remembered when you toggle selection β€” you don't lose your category or payee picks if you accidentally untick + retick a row.

  • Reconciled empty state CTA. When the pending list is empty because everything is reconciled, a helpful "go to pending review" link replaces the dead-end blank state.

🏦 Accounts Page Redesigned

  • Mirrors the sidebar. The Accounts list now follows the same tree + group ordering as the sidebar, so jumping between the two views doesn't feel like a different app.

  • Sync dot colors that match. Green / yellow / red sync dots are now consistent between the sidebar avatar and the accounts page header β€” and the dot anchors cleanly to the account avatar instead of drifting.

⚑ Speed Wins

  • Bulk operations, hardened. Move, duplicate, delete, bulk-edit, and bulk-approve all chunk requests at 100–500 transactions and use single updateMany / createMany writes server-side. Working with hundreds of rows at a time is now snappy instead of stuttery.

  • Dialogs preload on intent. Hover or focus a button that opens a dialog and the chunk loads in the background β€” by the time you click, it's instant. Applied across 9+ commonly-used dialogs.

  • Mobile tap reliability. Killed iOS Safari's 300ms tap-delay penalty across the app and tightened the numpad press feedback. Inputs feel native again on iPhone.

πŸ› οΈ Fixes & Polish

  • Currency input β€” strict to your budget format. Typing 1,000 no longer auto-converts to 1000 if your budget uses comma-as-decimal. Format follows the budget setting precisely.

  • Currency paste handles thousand separators. Pasting 1,234.56 into an input no longer drops the trailing digits.

  • Edit Starting Balance / Balance Adjustment rows. These previously-locked rows can now be edited where it makes sense (note, cleared, date) without breaking the engine.

  • Refresh payee recent-category cache. The "recently used categories for this payee" suggestions now update immediately after you save a transaction, not on the next page load.

  • Pending approval β€” no more flash. Approving a row no longer flashes the empty state for a half-second before the row disappears. Bulk approve is the same.

  • Charts β€” no re-animation on tab nav. Switching analytics tabs no longer re-runs the chart entry animation if you've already loaded that view.

  • Pending bulk approve disable. The Approve button correctly disables when any selected pending row is missing a required category for a budget or credit-card outflow.

  • CC accounts ordering. Credit-card accounts are now sorted within their group in the picker to match the sidebar order.

  • Numpad backspace. After deleting digits, the next typed digit now appends instead of replacing.

πŸ“š Help center

  • Tags β€” added per-split tag guidance: how to apply tags to split children, how the bulk-tag flow handles splits, and how per-child tags propagate through recurring templates.

  • Transactions β€” splits β€” added a callout covering per-line tags + notes, and noted that the parent tag picker is hidden in split mode.

  • Help center β€” RTB formula β€” cleaner copy on the Ready-to-Budget formula and dropped a stale refunds callout.


Pedro Fidalgo
Published by Pedro Fidalgo