Aventurine releases

v0.9.3 Latest

A features and appearance release. No database changes, so your file opens in this version and in 0.9.2.

Budgets

A new page, and a paid feature. Set one monthly target per category and it applies to every month, past and future alike.

Each budgeted category is a circle. Its size is the target you set, and the level it is filled to is how much of the shown month has reached it. Spending circles are green inside the target and red once past it. Savings and Investing circles are drawn in blue at every level and are never graded, because a month that is still running cannot be told apart from a month that came up short.

Set Budget holds every category in one dialog, with the amount left unallocated against your income updating as you type. Renaming a category keeps its target.

Metrics can report on a single month

The Metrics tab now carries the same joined year and month picker the Cash Flow tab uses, so every section can cover one month instead of the whole year. Debt to income reads N/A for a month, since a balance carried is not measured against a twelfth of the income servicing it.

Cash Flow diagram

The diagram now has a Net Outflow bar as well as a Net Inflow bar, each sized to the total on its own side. A year that outspent its income shows the outflow bar reaching past the channel, and the distance it reaches by is the overspend. Before this, both bars were drawn at the larger of the two totals, so the middle of the diagram could stand taller than the income bar carrying the same figure.

Appearance

New chart colours: green for money arriving, gold for money leaving, replacing the blue and cyan income ramp. Each theme has its own set, picked against that theme's background rather than lightened from the other.

The sidebar, toolbars and row actions are drawn in one filled icon set, and the on/off rows in Settings share a single switch style with the Spending chart's Stacked and Lines control.

Other changes

  • Financial Freedom has been removed from the Dashboard.
  • Nav icons are larger, and the padlock on a locked link stays at the label's size.

Source archive on GitHub

v0.9.2

A features and appearance release. No database changes, so your file opens in this version and in 0.9.1.

Financial Freedom on the Dashboard

A new section at the foot of the Dashboard shows the amount you would need to never work again, and how far your net worth has come towards it. The target is 25 times your average yearly spending, taken from every year your Cash Flow statement covers. The current year is left out while an earlier full year is available, so a part-finished year does not pull the figure down. Progress is measured against the most recent month your Balance Sheet has figures for, and the tile states which month that is.

This started life on the Metrics tab and moved to the Dashboard, because a target that changed every time you picked a different year in a report is not a target.

Spending Trends has a stacked view and a category list

Spending Trends can now be drawn two ways: separate lines per category, or stacked, where the height of a column is that month's total spending. The switch sits next to the chart and your choice is kept between visits.

Beside the chart is a list of every category with its total for the window. Click a swatch to hide that category, or a name to bring just that one forward. Both settings carry down to Top Merchants, so the two cards on the tab cover the same categories in the same colours.

The time windows are now 3 months, 6 months, 1 year, 2 years and 5 years.

Top Merchants bars are coloured by category

Each merchant's bar takes the colour of the category that merchant accounts for most of your spending in, so a band in the chart above and the bars below name the same category with the same colour. Bar length is now the merchant's share of everything you spent over the window, and the amount is printed inside the bar.

The small per-merchant chart and the change percentage have been removed. Both answered a question about direction over time, which the Spending Trends chart above answers with far more room.

Cash Flow diagram

Income and expenses are now told apart by temperature as well as position: cool colours on the left for money arriving, warm colours on the right for money leaving, with the biggest band in each side taking the strongest shade. The total crosses the middle as a channel of its own.

The header now carries a joined year and month picker, so the diagram can show a whole year or a single month of it.

150 more merchant logos

Another 150 brand icons ship with the app, bringing the set to 1,580. As before these are files inside the app, not downloads, so nothing is fetched while you use it. A merchant with no icon still shows its initials.

Other changes

  • The Inflation section has been removed from the Metrics tab. Which costs are rising is a spending question, and the Spending tab charts it against the same figures with a chart per category.
  • Chart axis labels measure their own column, so long amounts are no longer clipped.
  • The Dashboard's month arrows and its year and month pickers are now joined into one control, matching the Cash Flow tab.
  • Wider appearance work across the app: card and control styling, themes, the title bar, tabs, tables and the Transactions page.

Source archive on GitHub

v0.9.1

A security release. No new features and no database changes.

Your data stays off the disk when your database is encrypted

Aventurine keeps a copy of your figures in memory so moving between pages is instant. On an encrypted database that copy was also being written to disk, where it stayed after the app closed. It is now kept in memory only, and anything an earlier version left behind is cleared the next time you open an encrypted database.

Locking the app now clears the screen

Auto-lock dropped the database key but left your figures readable behind the password prompt. Locking now hides the page, closes any open settings dialogs, and clears the cached copy at the same time.

Encrypting no longer leaves a readable copy behind

Aventurine makes a backup copy of your database before encrypting it, so that a failure part way through cannot damage your file. That backup was readable by other accounts on the same computer, and was simply deleted afterwards rather than erased. It is now owner-only and overwritten before removal. The same permissions fix applies to the backup taken before a database upgrade.

Exported CSV files are safe to open in a spreadsheet

A transaction description that begins with a formula character could be run as a formula when the exported file was opened in Excel or LibreOffice. Descriptions come from your bank's export file rather than from anything you type, so this closes a route that did not depend on you doing anything unusual. Exported files still import back into Aventurine unchanged.

Other fixes

  • Importing a damaged or unusually large spreadsheet reports a problem with the file instead of freezing the app.
  • Very large imports are bounded, so a malformed file cannot lock the window.
  • Cash Flow and Balance Sheet cells now check that the category or account they name exists. Existing entries from older versions are untouched and still editable.
  • The error log is owner-only and no longer grows without limit.
  • Password checks are constant-time.
  • Internal access rules match on whole paths, so a future feature cannot be unlocked by accident.
  • Build tooling updated to clear reported issues. Nothing shipped in the app was affected.

Changes

Full Changelog: v0.9.0 → v0.9.1

Source archive on GitHub

v0.7.1

Aventurine v0.7.1

A fit-and-finish release. The Forecast's planned-item pins now sit on the line they belong to, the import wait bars behave like waits instead of blinking, switching theme no longer throws you out of Settings, the Recurring calendar gets a Today button, and the card tooltips say what a card does without a paragraph about it.

Forecast

  • A planned item's pin sits on the line at its date. The pin used to take its height from the balance the week ended on, so it floated up to a whole week of spending away from the curve, and the bigger the payment you planned, the further the pin drifted from the dip it caused. Pins are now read off the same drawn curve you are looking at.
  • The "tightest week" line is gone, along with the enlarged dot that marked it. A dip that stays above zero is a level the line already draws, and on a rising line the low point was just the first week wearing a warning. Running out of money is still called out.

Importing transactions

  • The progress bar stays up for the whole wait. Short waits show nothing at all, and once a bar does appear it stays long enough to read rather than blinking out halfway through and leaving you on a frozen screen.
  • No blank flash between Map Columns and the import preview. The bar for that step takes over the screen immediately, instead of holding back and showing the bare page where the dialog just was.
  • An import ends where it started. The last screen's buttons are now "Start Another" and "Finish", and Finish closes the modal and leaves you on Transactions with the rows you just added already loaded. It used to send you to the Dashboard.

Settings

  • Switching theme keeps the Settings modal open. Applying a theme used to reload the page, which closed the modal you were standing in. The tokens swap in place now and the charts repaint themselves from the data they already hold.

Recurring

  • A Today button beside the month stepper, so any month the arrows wandered into is one hop from the current one. It stays put and goes disabled while you are on this month, so the arrows and the menu never move under the pointer.

Tooltips

  • The Cash Flow, Top Merchants, Balance Forecast and Net Worth tooltips are short now. Each says what the card shows and what clicking something does, rather than explaining the method in a paragraph.

Look and feel

  • Tab strips are pill shaped, matching the filter chips and the onboarding bar rather than being the only rounded rectangle among them.
  • The scrollbar thumb is a solid bar filling its channel edge to edge, instead of a rounded shape floating inside an inset gutter.
  • The sidebar is narrower by 50px, giving every page that much more room.
  • New sidebar icons. The hand-drawn set is replaced with Lucide icons, drawn on one grid at one weight, and the unused icon files that shipped alongside them are gone.
  • Buttons that navigate no longer wear a "+". A plus in front of "Add balances" promises to add something right here; those buttons take you to the page where you add it, so the label says it on its own.
  • The uncategorized count is off the sidebar. A number you cannot act on where it appears is just a nag; the count lives on the Transactions page, where the rows it refers to are.

Source archive on GitHub

v0.7.0

Aventurine v0.7.0

A release about who you spend with and what it all looks like: the Spending tab gains a Top Merchants ranking, recognized merchants now show their real logo beside their name, and the reports finally use colour to mean something. The Forecast's transfers switch comes out from behind the menu, and the Transactions edit dialog is a proper form when you are editing one row.

Top Merchants (new)

  • A second card on the Spending tab, ranking the twenty merchants you spent the most with. Trends answers what you spent it on; this answers who you spent it with, over a window you pick: 3, 6, or 12 months, or all time. The window ends with the current, partial month, because "who have I been paying lately" that ignores everything since the 1st reads as broken.
  • One shop is one bar, even when its description changes on every line. Charges are grouped by merchant rather than by raw statement text, so processor prefixes, card masks, store and phone numbers, and trailing state codes stop splitting one business across three bars. Where Aventurine already knows a brand by name, it groups on that instead and the bar carries the brand's icon.
  • Every bar is one colour, and clicking one takes you to the ledger. Length already says how much, so hue would only be encoding rank. A bar opens Transactions filtered to that merchant's rows, using the text those rows actually share rather than any single description.
  • Only spending counts. Income and money moved between your own accounts are left out, on exactly the rule the Trends card next to it uses, so the two cards can never disagree about what an expense is.

Merchant icons

  • Recognized merchants show their logo instead of coloured initials, in the transactions list, the recurring calendar, and the new Top Merchants bars. Aventurine ships 1,229 brand icons as ordinary files inside the app; nothing is downloaded, and an unrecognized merchant keeps the initials circle it always had.
  • Settings, Appearance, Merchant Icons turns them off for the whole app if you would rather see initials everywhere. The change lands on the page you are looking at, with no reload.
  • A logo is only ever shown on an exact match. A row Aventurine cannot name with certainty gets no icon rather than a wrong one, the same abstention the rest of the app makes when it is not sure.

Reports look like the data now

  • Trends lines take a categorical palette. Each line is a category and the legend dots are its label, so the eight series are now as far apart in colour as they are in meaning, instead of eight rungs of one accent that nobody could tell apart.
  • The Cash Flow diagram colours its two sides on different principles. Income keeps the accent, because it is usually one stream arriving; the expense side takes a hue per category, the same spectrum the Spending report and the ledger avatars use. On the old ramp a dozen expense bands sorted by lightness and read as one undifferentiated flow.
  • Both palettes are read from your theme, so switching theme or accent retones the charts.

Forecast

  • "Ignore transfers" is a labelled checkbox in the card header rather than an item behind the menu. It changes what every figure on the card means, so it has to state its own answer without being opened.
  • Transfers are now left out by default. Moving your own money between your own accounts is not spending, and the checkbox says as much at a glance. The prose line that used to explain this is gone; the control speaks for itself.
  • The menu hides when it has nothing to offer, instead of opening on an empty list.

Transactions

  • Editing a single transaction is a labelled form, two columns, each field wide enough to read. It used to be a row of seven controls sharing one dialog width, which truncated account and category names mid-word. Editing several rows at once keeps the control row over the rows it will rewrite, and gets more width for its seven columns.
  • The Type control is gone from the single-row editors. A category owns its transaction's direction, so the field spent nearly all its time locked, restating the answer the Category select above it had already given.
  • Selected rows are visible in the dark theme. The old wash landed at the card's own lightness, so plain hover read louder than an actual selection. Selected rows also respond to the pointer again, and the selection fades in rather than snapping.
  • Filter lists keep a consistent row height. A long Account or Category list used to squash its rows to two thirds of the height a short list kept.

Numbers and layout

  • Statement and report amounts always show cents. A whole-dollar amount without them shifted its digits a character to the right and broke the column you read down. Typed cells pad out once you leave them, never while you are typing.
  • The Dashboard's Monthly Cash Flow chart fills its card instead of leaving a band of dead space under the header whenever the taller card beside it set the row height.
  • Hover states work throughout. Several buttons, chips and settings segments had been naming a fixed colour that happened to be their resting colour in one theme, so they had no hover state at all there. They all take the same lift now, and a filled delete button no longer draws near-black text on red in the dark theme.
  • Preferences is a stable frame. The footer stays put at a fixed height and the modal no longer resizes as you move between tabs.
  • Top Merchants and the Recurring calendar quiet down a little: full-width hover bands on the merchant rows, squared off rather than pill shaped, and amounts at regular weight since the bar beside them already carries the emphasis.

Source archive on GitHub

v0.6.1

Aventurine v0.6.1

A smaller, tidying-up release: the Dashboard is one scrolling page again instead of two tabs, the ledger's filters take several values at once, and the Transactions scrollbars stay where you can actually reach them.

Dashboard

  • Both views are on the page at once. Month to Month and Year to Year used to be two tabs; they are now two stacked sections, each with its own heading and the one control that scopes it — the month stepper for the first, the range picker for the second. No more clicking a tab to remember what the other half said.
  • Empty cards get to the point. The glyph tile and the explanatory sentence are gone; an empty card is a headline and, where there is somewhere useful to go, a button that takes you there.
  • Empty states sit in the middle of their card instead of hugging the bottom edge where the chart would have been.
  • No balances at all means no placeholder figures — the net worth card drops its two em dashes and gives the whole card to the notice. A range that merely happens to be empty keeps its numbers, because those are real.
  • The accounts card tells "nothing picked" apart from "nothing to pick" — with no accounts yet it points at the Balance Sheet like its neighbours, rather than asking you to select from an empty row.

Transactions

  • Type, Account and Category filter on several values at once. Each of those three chips is now a checkbox list that matches as OR, so you can ask for Groceries plus Dining, or two accounts side by side. The chip names the first pick and counts the rest — Groceries +2 — so you can read it without opening the popover.
  • Export follows the same lists. A multi-value filter narrows the exported file exactly the way it narrows the table, and a filter with nothing ticked is rejected rather than quietly widening the export to your whole ledger.
  • Deleted categories and accounts only drop themselves out of a filter now, instead of clearing the whole chip.
  • The scrollbars stay where you are looking. The vertical bar used to live at the right edge of the row — 1250px out — so it slid off-screen as soon as the window was narrow enough to need horizontal scrolling, which read as the bar vanishing. Both bars now belong to the data rows, with the column header pulled sideways in step.
  • The pagination footer holds still. It moved out of the table, so the row count and page controls no longer drift sideways when you scroll the columns.

Recurring

  • Calendar chips carry the accent instead of a neutral grey tile — a grid of grey chips on a grey-ruled calendar read as chrome rather than as your content. They use the same fill, hover and label colours as the app's primary buttons, so they follow your theme's accent.
  • Chip labels are crisp at full strength. The name and amount used to fade toward the fill to rank them, which at that size read as washed-out grey; order and the numeric face carry the ranking instead.
  • A projected charge is no longer dimmed on the grid. The hover card already spells it out — "Projected" versus "Charged" — and dimming cost the label the little contrast it had.

Source archive on GitHub

v0.6.0

Aventurine v0.6.0

Two features rebuilt around the thing you actually point at: the Forecast is now one account's balance with planned items pinned onto the line, and the Recurring page is the calendar itself. Plus 615 new merchants in the naming dictionary.

Balance Forecast (rebuilt)

  • Renamed from Cash Flow Forecast — what it projects is one account's balance, and the tab next to it is already Cash Flow.
  • It now follows the account you picked. The projection is driven by that account's own transactions, so a Checking forecast is no longer bent by credit-card and savings spending. An account with no transactions of its own falls back to your whole ledger, and the report tells you when that happened.
  • Range and history are separate knobs. Switching between 1, 3 and 6 months changes how far the line is drawn — it no longer silently re-estimates the trend from a different slice of history.
  • Months you never imported are skipped, not counted as months where you spent nothing.
  • The chart is split at today, which sits dead centre: real weekly balances on the left, the projection on the right. The two halves meet at one level and are told apart by weight — solid and filled versus dashed and fainter — with a divider and a bold Today tick.
  • History stops at your first transaction instead of drawing a flat line back through months that were never imported.
  • Planned items are pins on the line. Hover the line to get a + at the date you are pointing at; hover a pin for its label, date and amount, with edit and delete right there. The separate Planned Items card and its form are gone.
  • One card, one sentence. Above the chart you get the answer in words; the dip warning, the account fallback and a stale starting balance appear only when they change how the number should be read.
  • A starting balance older than today is disclosed rather than quietly closed — the transactions since then are already counted in it, and re-deriving would double-count.
  • Account and range are now the same picker widget, and the transfers toggle moved into the menu.

Recurring (rebuilt around the calendar)

  • You choose what's tracked. Detection is a guess, so it no longer fills the page by itself: the page starts empty, you run Find recurring schedules from the menu, and tick the ones you recognize.
  • The calendar is the whole page — the side table is gone. Each occurrence is a chip in its day; hover one (or click to pin it) and a card opens with the full schedule: name, type, cadence, amount, edit and delete.
  • Edit in place. The pencil turns that card into inputs and ✓ saves all four fields at once — nothing is written while you are typing.
  • Jump from a schedule to its evidence — the merchant name in the card links into Transactions, pre-filtered to that series, as an ordinary filter chip you can edit or clear.
  • Add a schedule by hovering a day and clicking the + that appears; the date you pointed at is already filled in.
  • Deleting a detected schedule just un-tracks it — it returns to the picker with your corrections intact. Manual ones are removed outright. Either way your transactions are never touched.
  • Clear all recurring schedules in the menu empties the calendar, not your history.
  • Edits never lose the chip — if a cadence change or a new schedule lands in another month, the calendar moves to it instead of letting it disappear.

Cleaner names and categories

  • 615 new merchants in the dictionary: regional and international fast food, upscale and specialty grocery, fine dining, third-wave coffee and bakeries, and a long tail of smaller and premium brands.
  • Every addition stays precision-first — names that double as a surname, a city, or an ordinary word are deliberately left out rather than risking a wrong match, and the test corpus grew alongside to keep it that way.

Charts and Dashboard

  • Axis labels no longer repeat themselves. A 9,000–9,400 axis used to read $9K, $9K, $9K; every axis in the app now picks one scale and the fewest decimals that keep each gridline distinct — and honours your separator and currency-symbol settings.
  • Capital Snapshot is now called Balances.
  • The month picker stops twitching — stepping from May to September no longer moves the arrows or resizes the menu.

Under the hood

  • Database schema v14; existing databases migrate automatically on open.

Source archive on GitHub

v0.5.0

Aventurine v0.5.0

Two big new experiences — a Recurring page and first-run onboarding — plus account-aware imports and a restructured navigation.

Recurring (new page)

  • See every recurring charge in one place — subscriptions, bills, and recurring transfers (autosave / auto-invest) detected automatically from your history.
  • Every detected schedule is editable — correct the name, direction, cadence, or amount; your fixes stick without touching the underlying transactions.
  • Add schedules by hand or remove ones you don't want tracked.
  • Monthly calendar view blending actual past charges with projected upcoming occurrences.

Onboarding

  • First-run setup on a fresh database — answer one question (which account) and hand over one bank export; accounts, history, and categories are derived from the import.
  • Abandoning setup leaves nothing behind; starter accounts stay hidden until you actually use them.

Transactions & imports

  • Imports now remember their account — each transaction is linked to the Balance Sheet account it came from.
  • Transaction table makeover — Type and Category merged into one column, fixed table layout issues, refreshed import UI.
  • New default amount filters and bar-chart slicers for drilling into activity.
  • Expanded merchant dictionary for cleaner names and better auto-categorization.

Simpler money directions

  • The separate *savings* / *investing* directions are retired: everything is now income, expense, or transfer. Money moved between your own accounts no longer inflates income or spending anywhere in the app.

Navigation & look

  • Navigation restructure — reorganized sidebar; the home page is now the Dashboard.
  • New logo and refreshed title bar.
  • New theme plus continued UI unification and polish across pages.

Source archive on GitHub

v0.4.0

Aventurine v0.4.0

A big visual refresh across the Dashboard and Statements, a smoother import experience, and more flexible categories.

Dashboards & navigation

  • Dashboard overhaul with a new tabbed layout for cleaner navigation between views.
  • Cash Flow chart redesigned with upgraded visuals.

Statements

  • Statements section rebuilt — new tabs and an end-to-end UI/UX overhaul.
  • Unified column-management modals — one consistent way to show/hide and manage columns across Statements.
  • Fixed-width transaction table columns, giving Description and Notes more room (long category names now wrap).

Import

  • Loading bar for long operations — imports and other hang-time events now show progress instead of appearing frozen.
  • European bank export fix — better handling of European CSV formats.
  • Fixed a transaction-import loading issue.

Categories

  • Updated default categories.
  • Character limit on category names, with improved text-wrapping behavior.

Look & feel

  • Unified buttons and dropdown menus across the app for a consistent style.
  • Refreshed color tokens — retired the legacy olive palette in favor of the primary accent tokens, with tuned light/dark theme colors. Computed values now use the accent color, reserving blue for category alerts.

Source archive on GitHub

v0.3.0

What's Changed

Full Changelog: v0.2.4 → v0.3.0

Source archive on GitHub

v0.2.4

What's Changed

Full Changelog: v0.2.3 → v0.2.4

Source archive on GitHub

v0.2.3

Oliv 0.2.3

Automatic transaction categorization (on-device)

  • New imports are now categorized automatically — on your machine, no cloud, no network.
  • Ships a built-in merchant lexicon and a richer canonical category set, with flexible category types you can rename, merge, and add on top.
  • Corrections are learned: the more you use it, the better it gets. It stays silent rather than guessing wrong.

Budgeting

  • Added budgeting on top of the category system.
  • The in-app updater has been retired — Oliv ships no updater and never phones home. Update by installing a newer build.

Transactions

  • Overhauled filters plus transaction search.

Cash Flow

  • Chart waves are now clickable: jump straight to a transaction report for that category and date.
  • Cash Flow report UI updates; new year-tables default to fully synced.

Polish

  • Filter-chip colors, graph midpoint so flat lines no longer sit on the floor, reorganized nav menu, and menu spacing fixes.

Source archive on GitHub

v0.2.2

Oliv 0.2.2

A polish-and-stability release centered on the Transactions and Categories pages, with a more robust and self-describing data layer underneath.

Interface

  • Transactions table redesign — headers, footers, and the leading columns now stay pinned while you scroll, and the long-standing glitches around table corners and scrollbars are fixed.
  • Lighter category management — adding a category is now a more compact, lower-friction flow.
  • Consistent visuals across the app — drop shadows and corner radii are standardized to a small set of tokens, and the row "⋮" menu is now a circular button aligned to the layout grid.
  • Steadier tables — a section's header is the same height whether it's expanded or collapsed, and the spacing between the filter chips and the table is tightened.

New

  • Active database name in the title bar — see which file you're working in at a glance.

Security & data

  • File writes are contained to paths you authorize — the app can no longer write outside the locations you explicitly pick (exports, backups, database files).
  • More portable database — months are stored as 1–12 integers and the schema now documents itself, so the file is cleaner to inspect and query with external SQLite tools. (The app's import/export and on-screen data are unchanged.)

Under the hood

  • Tag-driven CI release workflow for reproducible Linux builds.
  • Repository housekeeping (internal design-system and docs no longer shipped).
Oliv is in beta — please back up your database before upgrading.

Source archive on GitHub

v0.2.0

v0.2.0 - Table feature improvements

Tables now behave more like spreadsheets.

  • Active cell has a colored border set to the primary accent color
  • The user can select multiple cells with a mouse drag or "Shift" + Arrow Keys on their keyboard
  • Copy, paste, and delete work on multi-selected cells

UI/UX improvements

  • Unified font faces
  • 4px scale added to all styles and tokenized
  • Light and Dark theme specific optimizations (mostly to do with shadows)

Source archive on GitHub

v0.1.1

v0.1.1 - Settings and theme fixes

Fixed the orphaned settings.html page which is now managed through the chrome partial.

Standardized themes using a proper color scale, added some polish, and make it easier to edit or enhance in the future.

Source archive on GitHub

Aventurine has no auto-updater and never checks for one. The app makes no network calls at all, so it cannot tell you a new version exists — this page is how you find out. New versions are installed when you decide to install them.

Each release links to its source archive. The packaged desktop app is downloaded from the beta page.