Repository navigation
Compass v1.3.1
Created by @tylahfam97
Check us out at https://privatecompass.app
Hello! Another release just dropped π§
Compass 1.3.1 β Soundings π§
Overview used to repeat the Dashboard. It opened on account admin, then showed you the same
month's income and spending you had just read one page over. It now answers the one question
nothing else in Compass answered: where you stand across everything you own and owe, and which
way that is moving.
New: Soundings
- Overview opens on your net worth drawn as depth. Zero is a waterline across the page.
Everything you own rises above it, everything you owe hangs below it, and the line running
between them is your net worth, month by month, for the last two years. - When you are below the waterline, Compass measures the pace you have actually been climbing
at over the last six months and continues it as a dashed line to the month you cross zero.
That month is printed as a figure of its own, next to the date it lands on. - The pace is measured, never flattered. Three months of statements are needed before Compass
will name one at all, movement under a dollar a month is called level rather than progress,
and a net worth that is flat or falling is told plainly that it is not on course to clear
zero instead of being given an invented date. - Above water, the instrument says so, and names the month you last came up.
New: the account roster
- Every account in view is listed in one table, grouped into bank, investments, credit cards
and loans, with its latest balance, the date that balance was recorded, and its recent
shape. Investment accounts appear here alongside the rest for the first time. - In Global view the table spans profiles, and each profile gets its own row of cash,
invested, owed and net, so you can see who is carrying what before switching. - Accounts you have hidden are still listed, marked as not counted, rather than disappearing.
Changed
- The month picker and the monthly income, expenses and net figures have left Overview. They
belong to the Dashboard, which is where the month lives; Overview is about standing, not
about a month. - Manage Accounts moved from the top of the page to the foot, and lost its box. It is account
housekeeping, not the first thing worth your attention. - Overview now uses the same type, spacing and icons as the rest of the app, including the
shared notice for PIN-locked profiles in place of its old amber banner.
Below decks
- The net worth history behind Soundings is read in two queries instead of forty-eight, so
Overview settles immediately rather than sitting in a loading state. - Its figures and the roster beneath them are computed from one shared set of rules, so a
statement dated ahead of today can no longer make the headline and the table disagree. - Compass is a desktop application, so the phone-width layout tests and the leftover mobile
navigation drawer have been removed rather than maintained. - The end-to-end layout suite no longer times out on slower continuous integration machines.
- Version 1.3.1 across the app, installers, and website.
Compass 1.3.0 β The Chart π§
Compass has always been able to tell you what your money did. This release shows you where it
went, what it cost you to hold and borrow, and how fast this pay cycle is running against your
own usual pace. Three new instruments, all computed on your computer from statements you have
already imported.
New: The Chart
- A new page draws one month of money as currents. Paychecks and other deposits run into your
accounts on the left, then out to scheduled bills (named by their Plan rule), recurring charges
Compass detected (named by the charge), spending categories, card payments, savings, investments,
and debt. Each card's own purchases fan out from the payment that funded it. - Ribbons are as wide as the money. A faint channel shows the whole month; the brighter current
fills it up to the day under the scrubber, and gold particles ride each ribbon. Scrub or play
the days to watch paydays arrive and rent leave; the rows that posted on the selected day send
a short burst. - Every account is drawn as an honest junction. When a month spent more than came in, a "From
balance" leg shows the difference; when less, "Stayed in checking" shows what was not spoken
for. A card whose purchases outran its payments shows the difference as "Carried on card"; one
paid down beyond its purchases shows "Paid down". - Moves between your own accounts are paired from both statements, so a transfer to savings or a
card payment is drawn once and never counted as spending or income. Card refunds net against
their category. - Click any ribbon or place to dim the rest and see the transactions behind it in the same ledger
rows Transactions uses, with a link into Transactions for categories. With nothing selected,
the panel shows the scrubbed day's movements. - The figures above the map: money that reached savings, investments and debt, what came in,
what was spent (card purchases counted once, never their payments), and what stayed in
checking or was drawn from balance. - Node positions never move while scrubbing. Reduced motion hides the particles and the Play
button. On a narrow window the map keeps its width and pans sideways.
New: Cost of money
- Insights gains a second instrument under Fixed and flexible: what your money cost you or earned
you last month. Interest paid is read from the interest lines on your card statements and
estimated for loans from the balance and APR on file; interest and dividends earned come from
interest lines on your bank accounts and dividend and interest rows on brokerage statements. - Underneath, today's balances accrue by the second: what your debts are costing so far today,
and what idle checking above your Plan reserve is forgoing at a savings yield you can edit.
That yield is the one assumption on the page, labelled as such and remembered. - Each card and loan is listed with its balance, rate, and daily cost. A card that was not
charged interest costs nothing however large its statement balance; a loan with no APR on
file is named so you can add one.
New: This pay cycle
- The Dashboard shows the current pay cycle when you are looking at the current month. Paydays
come from your Plan schedule, or, when nothing is scheduled, from the rhythm of your payroll
deposits (with a link to make it exact). - Everyday spending since payday is drawn as a gold line against the average of your past
cycles aligned on the same day, with past cycles faint behind it. Scheduled bills and detected
recurring charges are left out, since they land on fixed dates regardless of pace. - The figure that matters is what each remaining day can carry and still land where the cycle
usually does. Three-paycheck months are called out.
Below decks
- Pure, unit-tested modules behind each instrument: transfer pairing and flow layout, cost of
money, and pay cycle detection. - Version 1.3.0 across the app, installers, and website.
Compass 1.2.3 β Statements From Anywhere π§
A statement should import correctly the first time, whatever bank it came from and however
that bank likes to write its dates. This release widens the import wizard's understanding of
real-world files, makes sure no row ever disappears silently, and quietly tightens the hull.
The import wizard reads more banks' dialects
- Dates now parse in the forms banks actually export: two-digit years ("3/5/24"), dash
separators ("03-05-2024"), compact "20260905", trailing times ("09/05/2026 14:32", "2:32 PM"),
and unambiguous day-first dates ("25/12/2026"). Impossible dates are still rejected rather
than guessed. - Amounts now understand trailing minus signs ("12.34-"), currency codes ("USD 12.34"),
euro/pound/yen symbols, and European decimal commas ("1.234,56") - alongside the existing
parentheses, CR/DR suffixes, and separate debit/credit columns. - Multi-sheet Excel workbooks no longer assume the first sheet is the statement: the wizard
finds the sheet with a date-labeled header and data under it, so a "Summary" cover sheet
can't hijack the import. - A brokerage statement's "Priced as of" date is now found even behind a cover page or a long
disclaimer block, instead of silently stamping holdings with today's date. - Nothing vanishes without a trace: rows left out because they had no usable date and amount
(headers, totals, memo lines) are counted and named on the import summary, separate from
duplicates and real errors. - Fixed a subtle timezone bug where a written-out date ("March 5, 2024") could import as the
previous day for anyone east of UTC.
Rules that show their work
- The Rules Manager now tests every rule as you type it: a live preview shows how many of your
last 1,000 transactions match, with the matched text marked in gold on real examples - so you
know a rule works before you save it, not after. - Saving a rule can now categorize your existing uncategorized transactions in the same breath,
and tells you exactly how many it touched. - Each rule row shows its priority, and editing tools moved to proper icons.
The amount step shows, not tells
- Every previewed amount on the import wizard's Amount step is now labeled with exactly what
Compass will record it as - "money out" or "money in" on bank files, "purchase / charge" or
"payment / refund" on card statements. Flip the signs and the labels update in front of you;
two dense paragraphs of sign theory are gone. - The column-layout question now speaks plainly: one amount column, a Debit/Credit label
column, or two separate Debit and Credit columns.
The line chart knows its accounts
- Slice a report by account and the line view draws one line per account. Keep the scope on
all accounts and it draws your cash & debit and your credit cards as two independent
lines instead of one merged total - the two halves of your money, told apart.
Trust, visibly
- If your system's credential store ever loses Compass's encryption key, Compass restores it
from the local backup key file - and now tells you it happened, right in the app, instead of
only whispering to a terminal nobody has open.
Blending in
- The Transfers & Excluded explainer on Transactions traded its bright blue emoji box for
the app's own quiet hairline-and-gold language. - The last off-palette colors are gone: indigo bars and lines in the debt payoff timeline and
portfolio charts now use Compass's own sea and success tones, stray emoji gave way to the
app's icon set, and new categories default to Compass gold instead of a borrowed blue.
Below decks
- Deleting an account with a long import history now cleans up its orphaned import sessions in
one statement instead of one query per session. - Version 1.2.3 across the app, installers, and website.
Compass 1.2.2 β Money That Is Actually Yours π§
This release makes Compass honest about which money is spoken for and which is genuinely free,
puts a report builder on the plotting table, and gives Trends a voice of its own.
New: The report builder
- Reports opens with a plotting table: measure spending, income, net, or purchase counts;
slice by category, merchant, account, month, or weekday; look back 3, 6, 12 months or all
time; and draw the result as a line-by-line sheet, ranked bars, a wheel, or a line through
time. Split any cut by month or by account - pivot columns on the sheet, segments on the
bars, one series per account on the line - and scope it to all accounts, cash & debit
only, or credit cards only. - Merchants fold on their cleaned identity ("SQ *BLUE BOTTLE 05/21β¦" and "BLUE BOTTLE #12"
are one row), a description search narrows any cut, and everything past the top rows folds
into one honest "Everything else" line. Name a cut and save it; presets live on the page.
Your plan is the source of truth now
- The "Fixed and flexible" instrument on Insights runs on your Plan schedule: planned income
(paychecks, dividends, anything you hard-set) and scheduled bills at their planned monthly
amounts, exactly matching the Plan page. A bonus, a one-off deposit, or a bank descriptor
that doesn't match a rule name no longer distorts the picture. - Flexible spending measured from history is now an overlay you turn on, off by default. It
inherits your categorization - card payments or moves between your own accounts that aren't
categorized as Transfers read as spending - so the instrument names its top flexible
categories to help you find and fix exactly that. - Money into investment categories (crypto, brokerage, retirement) and single purchases of
$1,000+ are reported separately as set-aside money, never as flexible spending. - Months that spend past planned income but are covered by supplemental deposits say so
plainly; the track only turns red when spending passed all income. With no income scheduled
yet, the instrument still works from averaged deposits, says so, and points at Plan. - The plan view and the measured view never mix: measured mode shows the bill payments actually
matched from history next to measured flexible spending, so a bill whose bank descriptor
doesn't match its rule is never counted twice - once as a planned bill and again as
"flexible" - which had been inflating both flexible spending and the over-income figure. - The "fixed costs take X% of income" insight runs on the same maths, so the row and the
instrument can never disagree.
Debt payoff spends only free money
- The payoff plan now works out what a typical month genuinely leaves over - planned income
minus scheduled bills, minus detected recurring charges, minus your normal everyday spending -
and shows the derivation right above the slider. The slider redirects a share of that free
money, not a share of spending you were always going to do. - Cutting categories (dining, shopping, subscriptions...) is now an explicit opt-in on top of
the free-cash redirect, instead of being pre-counted as available. When spending runs past
income, the plan says there is no free cash rather than inventing some.
Trends is the ship's log now
- The three summary tiles and the identical chart cards are gone. The page opens with one serif
figure - everything the log records, net - over a gold running line of the whole voyage,
then reads as one column: the monthly rhythm, where it went, cash on hand, what the cards carry. - Every section header carries its own figure (kept in a typical month, top category of the
range, latest balances), so a heading is never just a label. A gold rule on a section means
it opens for detail - the same affordance gold already means everywhere else in Compass. - Category chips under "Where it went" toggle a category's trend directly; the generic chart
legends are gone.
New insight
- Supplemental income: when deposits land beyond your Plan schedule, Compass names them and
the total, and suggests directing the money - an extra debt payment or a goal contribution -
before it dissolves into the month. Only appears once you have scheduled income to measure
against.
Compass 1.2.0 β Night Navigation π§
This release gives Compass a visual identity of its own. The logo, the navy-and-gold palette,
every page, and every keyboard shortcut are where you left them; what changed is how it all
looks, plus one new planning view.
New: Planned payments against planned income
- Plan now shows the money you have scheduled as one bar: planned income as the track,
planned payments filling it from the left, and the remainder labelled Left for unplanned.
It replaces the two separate "Scheduled margin" and "In vs out" figures, which said the same
thing twice. Detected recurring charges count when the existing "Include detected bills"
toggle is on; budgets are not counted. - The Dashboard's new bearing bar shows the current month as spent, still due, and free
against expected income (income received so far plus scheduled deposits still to come),
with a marker for today. Past months show spent against actual income.
New: Insights that use everything you have imported
- The bills and paychecks you schedule in Plan now drive the Insights page. "Bills due this
week" lists what is coming with the day and amount, and turns into a warning with the exact
shortfall when your checking balance will not cover a bill before the next deposit lands. A
scheduled bill or paycheck that has not posted by its date is called out by name. - Recurring charges are watched for what changes: a subscription that quietly went up (with the
old and new price and the yearly difference), a charge that has just started recurring, a
yearly renewal about to hit, and two identical charges on the same day. - A new "Fixed and flexible" instrument in the context section shows an average month as one
track: scheduled bills you confirmed, recurring charges Compass detected, flexible spending,
and what was left, as lengths of income. The serif figure is the money not spoken for before
the month starts. A companion row warns when fixed costs pass half of income. - Goals join the engine: a balance floor that is short, a spending limit already over or on pace
to be, a streak that reset, and a projected landing date for savings and debt-paydown goals. - Cards and investments: interest actually charged on each card, cards paid in full for two
months running, payments covering only part of new charges, and the fees your investments
cost over the last year. - Housekeeping first: when the newest transaction is weeks old or a tenth of spending is
uncategorized, that is said before anything else, with a one-click way to fix it. - Every row now carries the money at stake and its time frame, and the list is ordered by that
figure inside each severity band rather than by severity alone. Rows with more to show open
inline (a ranked list, a dated timeline, or a share bar) instead of repeating themselves in a
separate spotlight card. The Dashboard's "Worth a look" picks one row per type from the same
ranking. - Retired: the "ghost subscription" rows (which were just the five largest recurring charges),
the subscription total that summed every price a subscription ever had, and "most improved"
comparing a half-finished month with a whole one. Averages no longer include the partial
current month, rules that ignored "exclude from insights" now honour it, month boundaries are
computed in local time, and dismissed warnings no longer light the navigation badge.
New: A typeface, a token system, and a night sky
- Source Serif 4 sets page titles and the one hero figure on each page; Source Sans 3 sets
everything else, with tabular numerals for money. Both fonts ship inside the app, so nothing
is fetched from the network. - The palette is now Compass's own. Dark mode is the navy of the compass mark with a soft
moonlight gradient, a faint graticule of chart lines, and a fine grain; light mode is cool
chart paper with navy ink. Gold is the accent for anything you act on (active navigation,
buttons, focus, clickable charts, what-if values), and a sea blue is reserved for recorded
data such as balances and income. - Three corner radii, navy-tinted shadows, and one chart language (grid, ticks, tooltips,
series colors) replace the mix of defaults that had accumulated. - Category and account colors are harmonized at paint time: each keeps its hue but sits in
the same lightness band as its neighbours, in both themes. Nothing in your data changes.
Changed: Dashboard
- The Dashboard moves to the rule-and-space layout the newer pages already used: the month's
net figure, income and spending with their comparison to last month, then the bearing bar.
Insight cards sit below the numbers they refer to. - Accounts are rows grouped as bank, credit cards, and loans instead of three grids of
tiles; top categories are ranked bars; recent activity uses the same ledger rows as
Transactions. On wide windows the accounts sit beside the categories and insights. - The empty state is a calm single pattern with a one-sentence explanation and one action.
Other pages keep their layouts for now and pick up the new type, tokens, icons, and copy.
Changed: Insights page
- Same sections in the same order; the KPI strip's four figures now live inside the new
instrument. Charts use the shared sea-blue series and tooltip, grade colours come from the
theme tokens, the score modal loses its emoji, the PIN-lock notice matches the other pages,
and the Category trends and Subscription inventory tables gain a 3-month average, a "since"
month, and a price-change column.
Changed: Icons, chrome, and copy
- Icons are now Phosphor. The sidebar is the instrument panel: navy in both themes, the
compass mark in the rail, a gold bearing mark on the active item, and a compass-needle
loading indicator. - Copy is sentence case throughout; arrows, middle dots, and exclamation marks are gone from
buttons and labels, and two garbled strings on Overview and Trends are fixed.
Website
- privatecompass.app mirrors the new palette and fonts, uses the vector mark instead of a
bitmap, and now honours the reduce-motion setting.
Compass 1.0.2 β A Plan That Knows How You Actually Spend β¨
This release simplifies Plan, Transactions, and Goals while preserving Compass's colors,
themes, and branding.
New: Cash-Flow Horizon
- Compare the current projection with extra spending and one dated purchase preview.
Previews never create transactions or scheduled bills. - Inspect daily balances, scheduled events, detected estimates, and hypothetical changes
with the date scrubber or optional playback. The chart uses exact daily steps. - Scenario amounts allocate every cent exactly and stay separate for each profile.
A purchase outside the selected window remains saved but inactive. - Recorded checking-balance dates are available in source details. Missing balances make
safe-to-spend unavailable instead of treating unknown cash as a confirmed zero.
Fixed: Signed Budgets And Rollover
- Category credits can produce negative net usage. A $200 budget with -$50 net used shows
$250 remaining; only the $200 allowance carries forward, plus any prior carry. - Weekly bars show signed daily values and drill into the exact labelled week.
- Budget streak goals and celebrations use covered, completed months and effective limits.
Insights no longer describe a count of qualifying months as a consecutive streak. - Income targets and existing credit/loan account treatment remain unchanged.
Changed: A Workspace That Fits The Window
- All pages use available width and reflow as the window or sidebar changes. Narrow-screen
navigation opens as a dismissible overlay. - Insights puts readable action rows first, with compact context and expandable scores.
Limited history no longer hides otherwise available sections. - Transaction filters, view and sort are remembered per profile for the session, along with
report date ranges and trend windows. Search text is not added to URLs. - Settings prioritizes backups and appearance, remembers System/Light/Dark themes, and
recovers from failed account checks. Bulk data controls remain behind disclosures. - Login particles use restrained depth-aware parallax, retain positions during resize,
and stop when hidden or when reduced motion is enabled, including live preference changes.
Fixed: Safe To Spend Can Go Negative
Plan now displays the actual negative allowance in red instead of stopping at zero.
The number includes your reserved cushion, and a negative allowance no longer produces a
suggestion to move surplus cash.
Changed: Decision-First Workspaces
- Categories: custom categories can be renamed, reordered, or removed from the manager.
Rename and reorder preserve IDs. Removal reassigns linked records atomically; conflicting
budgets or rules must be resolved first. System categories remain protected. - Transaction colors: category colors now provide a subtle whole-row gradient in both
activity and table views, with neutral category controls. - Budgets: the default view emphasizes limits and remaining amounts, with an over-limit
filter and an on-demand editor. Weekly limits now use spending from the labelled week. - Reports: exact selected-period totals, income/spending trends, category shares, and
expense drill-downs lead. Detailed tables and all-time payees expand on demand. Balance
charts use consistent currency units and stop at the selected end date. - Plan: cash outlook and forecast lead; scenario controls sit alongside the chart on wide
screens. Balance arithmetic, action explanations, and scheduled-rule setup expand on demand. - Transactions: a date-grouped activity view emphasizes merchant, account, category, and
amount. The full table remains available, along with search, filters, bulk actions, and editing.
Export and categorization tools now live in a compact menu. - Goals: progress, target gaps, and status filters lead. A compact editor opens when adding
or editing a goal, replacing the always-visible grid of goal types.
New: The Forecast Can Use Your Real Spending
Plan projected your balance from scheduled bills and income only β everyday spending was
always $0 unless you dragged a slider, so the picture was permanently rosier than reality.
Turn on "Include my typical spending" and the forecast folds in what you actually spend
day to day, derived from your last three months of transactions (with your scheduled bills
excluded so nothing counts twice). It uses the median week β a one-off car repair won't
inflate what "typical" means. With it on:
- Safe to spend accounts for the selected everyday-spending baseline
- The math breakdown shows typical spending as its own line, separate from what-if spending
- The extra-spend slider becomes "on top of what you typically spend"
It's opt-in and clearly labelled, and it needs about a month of imported history before it
trusts itself enough to turn on.
New: Confirm Detected Charges In One Click
Compass has always spotted charges repeating in your history, but the only thing you could do
about one was hide it. Now every detected item in Upcoming cash flow has a confirm button that
turns it into a real scheduled bill β pre-filled with its amount and usual date, editable
in the schedule editor like any other rule. The forecast stops guessing about it, and the
"Estimated" label disappears.
New: "What To Do Next" Actually Takes You There
The suggested actions used to describe what you could do. Now they're buttons:
- Schedule your paycheck scrolls you to the rules panel with the income form already open
- Confirm detected charges jumps you to the list
- You have room to move $X opens the debt payoff planner directly
Changed: Plan Remembers Your Scenario
The what-if sliders, the set-aside amount, and the detected-charges toggle all survive
navigating away and coming back β and the window selector has moved up to the page header,
since it's how you look at the page, not a scenario you're trying.
Changed: Quieter When Things Are Fine
The Plan headline no longer glows green when you're okay β a calm border is the good state, so
the red shortfall warning stands out by being the only loud thing on the page. Same principle
applied across the app: saturated color is reserved for things that need your attention.
Changed: Livelier, Smoother, Easier To Read
- Headline numbers count up when they load or change (Dashboard, Overview, Insights).
Plan updates its safe-to-spend amount immediately as scenarios change. - Pages fade in on navigation; cards rise in with a gentle stagger
- Dashboard's Income / Expenses / Net cards now show how they compare to last month
- The Reports category donut and Investments allocation donut are now horizontal bars β shares
you compare by length at a glance instead of decoding arc angles - Updated metrics use tabular digits to keep columns aligned
- Buttons have pressed-state feedback and shared keyboard focus styling
Changed: More Accessible Throughout
- Added dialog semantics to shared modals and keyboard handlers to selected account and insight cards
- Added text alternatives to selected sparklines and mini-charts
- Deepened light-theme status colors and added labels alongside key status indicators
New: First End-To-End Test Suite
npm run test:e2e runs isolated browser tests using an in-memory SQLite database; it does not
read or modify your desktop data. Tests cover negative Plan values, scenario controls,
transaction views and editing, goal filters, and desktop/mobile layouts in both themes.
The optional native smoke suite runs when COMPASS_CDP_URL points at a Tauri debug window
launched with WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS=--remote-debugging-port=9222.
All local, all offline, as always. π§
Compass 1.0.1 β Forecast Accuracy & Loading Feedback π§
A fast follow-up to v1.0 fixing the things real use turned up immediately.
New: Plan Connects Your Spare Money To Your Debt
Plan knew what was coming in and going out, but nothing about what you owe β so a surplus just
sat there being described as a surplus.
Put your spare money to work now takes the gap between your scheduled income and your
scheduled bills, and shows what redirecting it at your cards and loans would actually do: the
date they'd clear under minimum payments, the date they'd clear with your surplus behind them,
and the interest that difference saves. One click opens the full payoff planner already in
Compass, pre-loaded with those accounts.
The suggested actions know about your debt too β instead of "that surplus could go toward a
goal or a debt", it now names the account and the balance still costing you interest.
New: Plan Now Shows What's Actually Yours To Decide
Plan could tell you your balance over time, but never the number people actually want: how much
of what's coming in is genuinely free once your bills are paid.
- An After bills figure sits alongside safe-to-spend and the low point β the income arriving
in this window minus the bills scheduled against it. When it's negative, your bills for the
period exceed the pay arriving and the difference is coming out of savings, which is worth
knowing. - A one-line breakdown spells out the whole picture β
$3,834 now + $2,331 coming in β $2,374 bills β $2,449 everyday = $1,342 left on Aug 31β
so where the projection lands is arithmetic you can follow rather than a number to trust - The chart now shades bills still due at each point, so the gap between your balance and
that band is what's left for everyday life and saving. It steps down only when a bill is
actually due β everyday spending is deliberately left out of it, since an estimate of your own
choices isn't an obligation - Setting money aside draws a line on the chart, so it's something you can see the balance
approach rather than just a number
Fixed: Chart Amounts Were 100Γ Too Small
The projection chart's vertical axis showed $15 where it meant $1,500 β the axis was reading
dollars as cents. Hovering a point gave the right figure, which made the mismatch easy to miss.
Changed: Plan Layout
The green summary is followed by the sliders, then the chart, then what to do next β so a change
to a slider and its effect on both the numbers and the chart are visible together instead of
needing a scroll between them.
Changed: Plan Now Asks You What Window To Use
The forecast used to run over a fixed 30, 60 or 90 days β while the What-if slider said "this
month", which wasn't the period it was actually calculating. Two different answers to the same
question, which made the whole panel hard to trust.
Plan now has three windows that match how people actually think about their balance:
- Rest of month (the new default) β today through the last day of this month
- To next paycheck β today through your next scheduled income
- Through next month β today through the last day of the following month
That third one deliberately ends on a month boundary rather than counting a flat 30 days. A
rolling 30-day window starting mid-month stops before the next month's rent is due, so a bill
you definitely owe simply vanished from the list. Ending on the last day of next month means
every bill in both months is accounted for.
Bills more than a fortnight out are now grouped under their real month name too β a window
spanning two months used to label September's bills "later this month", which made them look
like duplicates of August's.
Every figure moves with the window: safe to spend, the projected low point, money in versus out,
the chart, the bill list and the suggested actions. The headline states the exact range it used
(Aug 18 β Aug 31 Β· 14 days) so there's no ambiguity about what any number covers.
"To next paycheck" needs a scheduled income to aim at. If you haven't added one yet, Compass
falls back to the rest of the month and tells you why rather than quietly showing something else.
Improved: The What-if Panel Explains Itself
The window picker now sits inside the What-if box alongside the sliders, since it's the same
kind of question. Each control explains what it does and what it doesn't:
- Spend an extraβ¦ is an amount across the whole window, spread evenly β and now shows the
per-day figure that works out to. Previously it always divided by 30 regardless of the window
being shown, so the arithmetic didn't match the label. - Keep β¦ untouched makes clear it comes off "safe to spend" and doesn't move the projection.
- The panel states up front that nothing here is saved or changes your data.
Fixed: Cancelled Subscriptions Never Went Away
A charge that recurred for a few months and then stopped kept its streak forever β so a
subscription you cancelled in April was still listed under Subscriptions and still being billed
against you in the Plan forecast months later. Anything not seen for 2 months is now treated
as cancelled and drops out of both. If it ever reappears in an import, it comes straight back.
Fixed: Your Own Bills Counted Twice in the Forecast
Compass only skipped a detected charge if its description matched a scheduled bill exactly.
In practice nobody types SOFI BANK PL DES:PL PYMT ID:T86083200 INDN:...WEB β they type "SoFi".
So the bill you entered and the charge Compass detected were both projected, doubling it. Matching
is now based on the amount plus a recognisable overlap in the description, so a hand-typed name
lines up with whatever your bank actually writes.
New: Hide a Detected Charge
Detected charges are guesses, and sometimes the guess is wrong β a one-off that looked like a
pattern, or a transfer that isn't a bill. Hover any detected item on Plan β What's coming, or
any row under Insights β Subscriptions, and hide it. It's removed from the forecast, the
subscription totals and the insights, with an Undo and a "Restore hidden" link if you change your
mind. Bills you scheduled yourself are never hidden this way β they're facts, not guesses.
Fixed: The App Looked Frozen While Importing
Two separate causes. The import step showed a static icon while it wrote transactions to the
database, so a large file looked like a hang. It now shows a moving spinner. Separately, the
reduce-motion support added in v1.0 was too aggressive and stopped loading spinners and skeletons
animating at all β for anyone with reduce-motion enabled, every loading state in the app appeared
frozen. Loading indicators now keep moving (just slowly) because they're feedback, not decoration.
Fixed: Pages Could Get Stuck Loading Forever
v1.0 made failed page loads show an error, but the loading skeleton underneath never cleared β so
you'd get an error message floating over a page that span forever. The skeleton now clears and you
get the page, the explanation and a Retry button.
Fixed: Transactions Silently Stopped at 500
A month with more than 500 transactions quietly dropped the rest with no indication. It now tells
you how many are shown and suggests narrowing the search.
Fixed: Erasing a Profile Left Traces
Erasing a profile's data removed everything from the database but left behind app memory tied to
it β celebrated milestones, dismissed insights, hidden charges. A fresh start now really is one.
Improved: Faster First Launch After Updating
The new database indexes are created in a single operation rather than three, which matters if
you have years of history.
Compass 1.0.0 β Version One π§
Compass is out of pre-release. Version one is the same app you've been using, finished: nothing
here changes how your money is counted, and nothing needs to be re-imported.
New: Plan β Compass Now Looks Forward
Every screen in Compass has described the past. The new Plan tab describes what's coming.
It projects your checking balance forward 30, 60 or 90 days using the bills and income you've
scheduled, the recurring charges Compass spots in your history, and an estimate of everyday
spending drawn from your last 3 months. The headline answers the question people actually have:
do I make it to payday? Underneath it are three numbers β what's safe to spend today, the
lowest point your balance is projected to reach and when, and total money in versus out over the
window.
Below the chart, What if⦠lets you drag a slider to see what an extra few hundred dollars of
spending does to that low point, or set aside a cushion you don't want to dip into, and watch
the whole projection respond instantly.
What's coming lists every bill and paycheck the forecast is counting on, grouped by week.
Charges Compass inferred from your history are marked as detected rather than confirmed β they
are an educated guess about a pattern, not something you told us, and they're labelled that way.
You can switch them off entirely if you'd rather only plan against what you've entered yourself.
New: What To Do Next
Compass has always described your money. Plan adds a short list that recommends β the amount
you'd need to find before a projected shortfall and what that works out to per day, a nudge to
schedule your paycheck if nothing is scheduled, a heads-up when your cushion gets thin, and a
prompt to put a surplus to work when you're comfortably ahead. Only what applies to you appears,
ordered by how pressing it is, and the list is empty when there's genuinely nothing to do.
New: Last Month In Review
The "Welcome to August" message that appeared when the calendar turned over now actually says
something. It recaps the month that just ended: money in, money out, what you kept, how your
spending compared to the month before, where most of it went, and how many budgets you held.
It waits for you to dismiss it rather than disappearing on a timer, and falls back to the old
welcome message when there's nothing to summarise.
Some deliberate limits, so the number means something:
- Checking and debit accounts only. "Will I make it to payday" is a question about spendable
cash. Folding revolving credit balances in would make the figure harder to explain than it is
useful. - At least 2 months of history required. With less than that, a spending estimate is noise,
and a forecast you might actually rely on shouldn't be built from noise. Compass tells you how
much history you have instead of guessing. - Bills you've scheduled are never double-counted. The everyday-spending estimate has your
known bills removed from it first, so rent doesn't get charged twice. - If you haven't scheduled any income, Compass says so β without a paycheck in the picture a
forecast only ever slopes downward, which looks far worse than reality.
Moved: Scheduled Bills & Income
Recurring bills and paychecks now live on the Plan page, directly beneath the forecast they
drive, rather than at the bottom of Settings. Settings links across to it. They're still
reminder-only: nothing ever posts a real transaction on your behalf.
New: Compass Now Celebrates When You Hit Something
Progress with money is slow and mostly invisible. A card balance drops a little each month, a
goal creeps toward its target, and the moment it actually lands passes without anything marking
it. Compass now notices those moments and says something.
Celebrations come in two sizes. The big ones β a debt reaching zero, a goal completed, net worth
crossing into positive territory β get a full congratulations dialog and a confetti burst, and
wait for you to dismiss them. The smaller ones appear as a banner at the top of the screen and
clear themselves after a few seconds.
What Compass watches for:
- Debt paid off β a loan or credit card reaching a zero balance
- Debt paid down β passing 25%, 50% and 75% of the way to zero, measured against the
earliest balance on record for that account - Net worth turning positive β the first month you own more than you owe
- Net worth milestones β passing $1K, $5K, $10K, $25K, $50K, $100K, $250K, $500K and $1M
- Goals reached β any goal hitting 100%
- Budgets held β finishing a full calendar month inside your monthly budgets
- Health Score grade up β your Financial Health Score moving up a letter grade
Each milestone celebrates once, per profile, and is remembered across restarts β so reopening
the Insights page doesn't replay it. The exception is the Health Score grade, which celebrates
again if you lose a grade and earn it back, because that's a real accomplishment the second time
too. If you've turned on your system's "reduce motion" setting, the confetti is skipped and you
still get the message.
A few deliberate details, so nothing feels random:
- Only the highest milestone you've newly passed is announced. Importing years of history at
once gives you a single "$100K net worth" moment rather than nine banners counting up to it. - Budget celebrations only ever refer to a month that has actually finished β a budget you're
still in the middle of can still be blown, and congratulating you early would be dishonest. - Multiple budgets held in the same month are announced together ("3 budgets held"), not one
after another. - The first time you open Compass after updating, your current Health Score grade is recorded
quietly as a starting point. You won't be congratulated for a grade you already had β only for
the next one you earn.
Because net worth milestones are new, one may fire shortly after updating if you're already past
one of those marks. That's a one-time catch-up, not a bug.
Fixed: Failures No Longer Happen in Silence
If loading a page failed β a database problem, a permissions issue β Compass showed you an empty
page and said nothing. In an app about your money, an empty page reads like lost data. Every page
now tells you when something went wrong and offers to try again.
New: Suggested Budgets
A blank Budgets page asks you to invent numbers you don't have, which is where most people give
up. Compass can now propose a starter set from your last 3 months of spending, rounded to
sensible figures. Nothing is final β edit or delete any of them.
Improved: Accessibility
Compass now honours your system's "reduce motion" setting throughout β the confetti, the
particle field, the glows and the page transitions all stand down. There's also a Reduce
motion in Compass switch in Settings, for calmer animation in this app without turning it on
system-wide. Dialogs now keep keyboard focus inside them while open and hand it back where it
came from on close, and the remaining unlabelled icon buttons have been named for screen readers.
New: Erase a Profile's Data
Settings gains a way to permanently delete everything belonging to one profile β transactions,
accounts, budgets, goals, scheduled items and custom categories β while leaving your other
profiles untouched. It takes a typed confirmation, and it points you at Backup first, because it
cannot be undone. An app that promises your data never leaves your machine should also be able to
forget it on request.
Improved: The Guided Tour Is Easier To Find
"Replay the guided tour" now also lives in Settings, not only tucked in the sidebar footer.
Improved: Speed on Larger Histories
Transactions were only indexed by date, while nearly every screen also filters by profile. On a
few years of data that meant scanning the whole table repeatedly. Added the indexes that were
missing β the difference grows with the size of your history.
Improved: Empty Goals Page
The Goals page now shows all eight goal types with a one-line explanation of each, and clicking
one sets up the form for it, instead of an empty list and a sentence.
Compass 0.9.9 β Brokerage Statements & Honest Numbers π
Full E*TRADE statement support, plus a round of accuracy fixes to how your savings rate and
investment totals are calculated. Some of your numbers will change after updating β that's
intentional, and explained below.
New: E*TRADE / Morgan Stanley Client Statements
Compass now reads an E*TRADE (Morgan Stanley) monthly or quarterly client statement PDF
directly. Unlike a portfolio-positions export, a statement carries the whole picture, and
Compass now imports all of it:
- Holdings β symbol, shares, share price, total cost, market value and estimated annual income
- Activity β the period's buys, sells, dividends, interest, fees, deposits, withdrawals and
transfers, each categorized automatically - Period totals β beginning and ending value, change in value, cash balance, and realized
and unrealized gain
The statement's own period-end date is used as the snapshot date, so importing a few months of
back statements builds a real portfolio history rather than stacking them all on today.
New: Activity and Income & Gains Views
The Investments page gains two new tabs alongside Holdings. Activity lists every transaction
from your imported statements, filterable by type. Income & Gains shows dividends and
interest you actually received, charted by month, next to realized gains β a real counterpart to
the "Est. Annual Income" tile, which has always been the brokerage's forward-looking projection
rather than a record of anything paid.
New: Re-Import Protection for Statements
Importing the same statement twice used to silently double every position in it. Compass now
notices when a snapshot already exists for that account and date and asks whether to replace it,
rather than quietly counting everything twice.
Fixed: One Account's Statement Could Hide All Your Other Investment Accounts
If you held, say, a 401(k) that reports quarterly and a brokerage account that reports monthly,
importing the monthly statement made the 401(k) disappear from the Investments page, your
portfolio value, and your net worth. Nothing was ever deleted β Compass was looking for holdings
dated on one single "most recent" date and quietly dropping every account that hadn't filed a
statement on exactly that day. Each account is now read as of its own latest statement. The
portfolio value chart was affected by the same issue and no longer collapses toward zero on
months where only one account reported. The Investments page also now lists each account with
its own "priced as of" date so mixed statement schedules are visible rather than silent.
Fixed: Savings Rate Ignored Credit Card Spending
Your savings rate is meant to be the share of income you didn't spend. It was only counting
money that left your checking account, so anything charged to a credit card was invisible to it β
which could show a comfortable savings rate in a month you actually spent more than you earned.
Card purchases now count as spending, while the card payment itself is still treated as a
transfer so nothing is counted twice.
Expect your savings rate to drop if you use credit cards regularly. The old number was
flattering, not accurate. Your Financial Health Score may drop alongside it, and budgets now
count card purchases against their category the same way the Budgets page always has.
Fixed: Savings Rate Math and Labelling
Three separate problems made the savings rate on the Insights page disagree with the savings
rate chart directly above it:
- It averaged each month's percentage rather than dividing the actual dollars, so a single
unusual month could swing the figure wildly past anything your real income and spending
justified - It blended in the current, half-finished month, so the number drifted every day
- It was labelled "Current rate" while actually being a multi-month average β now labelled
"3-month average"
Fixed: Pages Disagreeing About the Same Numbers
Several figures were calculated independently in different places and had drifted apart. The
Trends expense chart excluded credit card spending while the cumulative-net line on the same
page included it; the All Accounts overview counted transfers and loan statement rows as
spending while the Dashboard didn't; a budget-streak goal could break a streak the Budgets page
showed as under budget; and the "low balance" insight reported only one checking account's
balance if you had more than one. Every reporting figure now comes from a single shared
definition, so the same number means the same thing everywhere.
Improved: Existing Investment Formats
The other supported formats got the same depth of extraction while this work was underway.
Fidelity exports now use the file's own download date instead of today's, and correctly identify
stocks, ETFs and funds even when the export leaves its type column blank (previously everything
landed under "Other"). Thrivent's combined stock/ETF holdings are now filed individually rather
than all as ETFs, cash sweep funds are recognized as cash, and holdings without a ticker fall
back to their CUSIP. Principal 401(k) statements now also record their period totals.
Compass 0.9.8 β Quality of Life π οΈ
A round of small but real quality-of-life improvements ahead of v1.0.
New: Edit an Account's Interest Rate & Minimum Payment Anytime
Previously, a credit card's APR and minimum payment could only be set once, during import -
there was no way to update them later if a rate changed. Both are now editable directly from an
account's detail view (click any credit card or loan tile), no re-import required.
New: Backup Reminder
Settings now shows how long it's been since your last backup, with a gentle nudge if it's been
30+ days (or if you've never backed up at all) - so it's easier to notice before it matters.
Improved: Insights Page Loading State
The Insights page now shows the same loading skeleton as every other page while your data is
being analyzed, instead of a different one-off spinner.
Improved: Roadmap Refresh
The README's "Path to v1.0" section now reflects everything shipped in the last few releases -
the visual refresh, the balance-integrity fixes, and import duplicate detection.
Compass 0.9.7 β Import Duplicate Protection π
A focused release closing a real gap: a transaction entered by hand and later seen on an
imported statement had no way to be recognized as the same one.
New: The Import Wizard Now Catches Possible Duplicates of Manual Entries
Manually-added transactions never had a way to match against a real import - so entering one by
hand and later importing a statement that includes it could quietly double-count it. The import
wizard now checks incoming statement rows against your existing manual entries (same amount, a
close date, and a similar description) and, only when it finds a likely match, shows a
side-by-side comparison before anything is saved: keep both, keep your manual entry, or keep the
imported one. Nothing is ever deleted automatically - "keep both" is the default for anything you
don't explicitly resolve. This step stays out of the way entirely when nothing looks like a
duplicate, which is the common case.
Compass 0.9.6 β Premier UI Refresh β¨
A visual polish pass ahead of v1.0 - a calmer, more professional look plus a handful of real
month-picker bugs found along the way.
Fixed: Manually Adding/Editing/Deleting a Transaction Could Corrupt Your Account Balance
If you manually added, edited, or deleted a transaction dated on or before the day you last
entered your account's real balance, the running balance could silently fail to update - e.g.
adding a $300 transfer out of an account showing $315 could still show $315 afterward instead of
$15, throwing off every balance calculated from that point on. This is now fixed: your entered
balance correctly shifts by the change instead of absorbing it. The same stale-balance problem
could also happen when importing another batch of transactions right after - the Import
wizard's "Current balance" field now correctly suggests your balance including the new
transactions instead of the old, pre-import figure, so accepting the suggested value is safe
again. A third, deeper case affected accounts that were originally imported with their own
running-balance column and never had a manually-entered balance at all: adding a second manual
transaction right after a first one could bump every earlier transaction's balance up by the
new amount instead of applying it correctly. All three now share the same fix, so your real
balance stays correct through any combination of manual entries and imports. If an account was
already thrown off by this before updating, re-confirm its real balance once (via a small
re-import through the Import wizard's "Current balance" field) to reset it - this fix prevents
it happening again, but can't retroactively repair a balance that was already thrown off.
New: A Calmer, More Professional Look
The tiled background texture is gone, replaced by a barely-there gradient. Gold is now reserved
specifically for things you can click or interact with (chart cards, profile switching, the
onboarding checklist), while blue carries everything else - navigation, buttons, and structural
chrome - for a more consistent, less "busy" feel throughout the app.
Improved: Dimmed and Contained the Glow on Clickable Cards
The gold glow that signals a chart card can be clicked for detail was brighter than intended and
bled out past the card's own edges. It's now dimmer and clipped to the card itself.
Fixed: Some Month Pickers Were Missing Their Forward/Back Buttons
The Transactions page's month picker had no way to step forward or backward a month - only
Dashboard, Overview, Budgets, Goals, and Reports had them. All month pickers are now consistent.
Fixed: The Month Picker Could Silently Jump to a Different Month Than Expected
If the real current month had no transactions yet, every month picker used to quietly jump to
whichever past month last had data - easy to miss, and confusing right at the start of a new
month. Every page now always defaults to the actual current month, and each page's selection is
now remembered independently when navigating between tabs, resetting to the current month again
on profile switch.
New: A Friendlier Empty State for a Transaction-Free Month
The Transactions page now says "No transactions for this month - Add some now!" (with a button
to add one directly) when a month is genuinely empty, instead of a generic "no results" message
meant for search/filters.
Fixed: "Try Demo Mode" Could Appear After You Already Had Real Data
The empty-month Demo Mode button only checked whether demo accounts already existed, not whether
the profile had any real transactions at all - so it could resurface on a month with no data even
after you'd been actively using the app. It now only appears for a profile that has never had any
real transactions, and correctly reappears if everything is later cleared.
Compass 0.9.5 β Data Integrity Hardening π
A behind-the-scenes release focused on making sure your data stays correct and intact, even when
something goes wrong mid-operation - plus a handful of real import correctness fixes found during
the audit.
Fixed: Schema Migrations Could Be Left Half-Applied
Migrations that rebuild a table (rename β recreate β copy β drop) previously ran as several
separate, independently-committed database statements. If Compass or the computer crashed partway
through, the database could be left with a renamed-away table and no replacement. Every migration
now runs inside one real database transaction - a crash or error midway rolls back the whole thing,
leaving your existing data untouched instead of half-migrated.
Fixed: A Crash Mid-Import Could Leave a Partially Imported File
CSV/XLSX imports inserted transactions one row at a time, each its own independent database write.
Imports now run inside one transaction, so an interruption partway through can no longer leave a
statement half-imported.
Fixed: Import Summaries Could Mislabel Real Errors as "Duplicates"
Any row that failed to insert - for any reason - was previously counted as a "duplicate skipped,"
even if the real cause was a genuine data or constraint error unrelated to it already existing.
Compass now distinguishes true duplicates from real errors and reports them separately, so the
import summary never quietly hides a real problem behind a reassuring "duplicates skipped" message.
Fixed: Two Legitimately Identical Transactions in One File Could Be Wrongly Treated as a Duplicate
Two genuinely separate transactions with identical details (e.g. two $5 purchases at the same
merchant on the same day) could collide and get silently dropped as if the second one were a
re-import of the first. Both are now imported correctly, while re-importing an already-imported
file is still correctly recognized as all duplicates.
Fixed: Capital One-Style Statements (Separate Debit/Credit Columns) Silently Dropped Rows
Banks that export two separate amount columns instead of one signed column - Capital One being the
common example - previously only read the Debit column, so any row with a value only in the Credit
column (a payment, refund, or cashback) was silently skipped. Compass now supports mapping separate
Debit and Credit columns directly, so nothing gets left out.
Fixed: Saved Column Mappings Could Collide Across Profiles
Two profiles importing the same bank's CSV format could overwrite each other's saved column
mapping. Mappings are now scoped per profile.
Fixed: A Manually Chosen Sign-Flip Setting Wasn't Saved
The "flip amounts" choice for banks that export expenses as positive numbers wasn't persisted with
the rest of a saved column mapping, so it could be lost on a later import for a custom bank. It's
now saved and restored correctly.
Fixed: Backups Read the Database File Directly
Backups previously read compass.db straight off disk while the app had it open, relying on the
assumption that nothing would ever be mid-write. Backups now take a proper SQLite snapshot first,
guaranteeing a consistent copy every time.
Fixed: A Restore Could Leave a Mismatched Database/Key Pair
If restoring a backup failed partway through swapping files into place, the live database and its
encryption key could end up as a mismatched pair. Restores are now fully rolled back on any
failure, and the newly restored database is verified to actually open before being trusted.
Fixed: Impossible Calendar Dates Could Be Silently Accepted
A date like February 31st could previously be normalized into a string and imported as if it were
valid. Dates are now validated against the real calendar before being accepted; amount parsing also
now recognizes trailing "CR"/"DR" suffixes some statements use.
Cleanup: Removed Dead Code
Removed several unused/unreachable leftovers found during this pass, including an entire unused
Rust command module that wasn't even compiled into the app.
A correctness release for anyone who gets money back into a spending category - a reimbursement,
refund, or shared-cost repayment deposited back into your account and categorized alongside the
original expense.
Fixed: Spending Categories Ignored Credits Filed Under Them
Category totals across Insights, Reports, Trends, Budgets, Goals, and the Dashboard only ever
summed the debits in a category, completely ignoring any credits (refunds, reimbursements, a
roommate paying you back) filed under that same category. For example, $2,740 spent on Rent with
a $1,700 reimbursement credited back would previously show as $2,740 spent instead of the correct
net $1,040. Every category total now nets debits against credits (excluding credit card/loan
payment credits, which are debt reduction, not refunds, and continue to be tracked separately).
This affects budget progress, category breakdowns, spending insights (unusual spikes, budget
suggestions, category creep, most-improved), and reduce-spend goals.
New: Clickable Cards Now Signal Themselves
Cards that open more detail on click - Credit Card/Investment Health, debt payoff accounts, and
Dashboard's Bank/Credit Card/Loan tiles - now glow softly and shimmer to signal they're
interactive, and show a "Click for more details" hint after a second of hovering.
New: A Settings Page
A dedicated home for backup/restore and recurring transactions, linked from the sidebar.
Currency stays USD-only for now.
New: One-Click Encrypted Backup & Restore
Export Backup bundles your entire database and its encryption key into a single
.compassbackup file - no more manually copying compass.db and compass.key separately.
Restoring is validated before anything touches your live data (a bad or mismatched-key backup
is rejected up front) and takes effect on the next relaunch, which Compass triggers
automatically.
New: User-Defined Recurring Transactions
Schedule a bill or paycheck ahead of time - monthly, weekly, or every two weeks - from the new
Settings page, instead of only finding out it's recurring after it's already happened a few
times. Reminder-only: nothing is ever posted automatically, you stay in control of every real
transaction.
New: Bulk Transaction Operations
Select multiple transactions on the Transactions page (checkbox column, "select all" in the
header) to recategorize or delete them all at once, instead of one at a time.
New: Automated Test Suite
The core balance/category-netting math (utils.ts, voice.ts, the new recurring.ts) now has
unit test coverage via Vitest (npm test), so future changes to this arithmetic have a
regression safety net.
Docs: README Accuracy Pass
Fixed a couple of stale claims - loan and investment statements already accept PDF (the
"Known Limitations" table said otherwise), and the Goals table was missing three real goal
types (Balance Floor, Debt Paydown, Savings Target). The Roadmap section now reflects the
actual path to v1.0.