Merope
PlateThe archive. A photographic plate is a negative, so stars come out dark on pale stock — this is the thing an observer actually handled.Two ways of recording the same sky.SkyThe observation itself. The same stars, the way they looked before the glass.Two ways of recording the same sky.

Peace

An expense tracker that keeps its mouth shut. Every record lives in one SQLite file on your phone — no account, no server, no sync, and nothing on the network unless you ask for it.

Peace is built around the month, and around the thing you do fifty times a month: type an amount.

The pickers sit at the top of the record screen and a calculator keypad at the bottom, so the bottom-right key walks the whole record — account, category, save — and a coffee takes four taps with one thumb. = finishes a sum first if you were still adding things up, and the key’s label always says which of the three it is about to do. It works in split-screen, with a bank notification open beside it, because that is where records actually get logged.

Everything else exists to make the ledger tell the truth afterwards. Transfers appear once instead of twice. A refund nets against the thing it reversed rather than inflating both sides of the month. A credit card reads as money owed rather than an emptied wallet. The percentages on the analysis ring add up to exactly 100. Search shows the total of every match, not of the rows that fit on screen.

What it refuses to do

What an app declines is as much a description of it as what it ships.

  • No sync. Sync means a server, an account, and a copy of your spending somewhere you do not control.
  • No budget carry-over. An unspent limit rolling forward is a limit that gets easier every time you fail to use it. What carries between months is money, and the header does that instead.
  • No single cross-currency total. Valuing a whole balance needs today’s rate, and the only honest rates here belong to past records — each one stored against the record that used it, so a purchase made when the dollar was fifty pounds stays at fifty forever.
  • No settings that do nothing. A control for a preference nothing reads is a switch that silently lies, so each row ships in the same change as the code that honours it.

The whole app makes four outbound calls and there are no others: an exchange rate when you tap for one, a receipt or bank message sent to Gemini if you have supplied your own key, Drive if you have connected it, and a once-a-day check for a newer build. Two of the four are off until you switch them on.

It is an APK you sideload rather than a store listing, and that is the price of reading bank alerts without asking Google’s permission to keep the feature.

Releases

  • v1.7.1

    The Now card explains itself and splits by time as well as by account, and a loan stops being filed as a card.

    Added

    • Now explains itself. The header’s running position reconciles exactly with the Accounts total, and the card now shows the working rather than asking you to trust the number.
    • The breakdown splits by time as well as by account.

    Fixed

    • A loan is not a credit card. It was being drawn as one, with a credit limit it does not have.
  • v1.6.0

    Tags — the axis categories cannot be. Many per record, crossing categories, and archivable when the project they name is over.

    Added

    • Tags. A category answers “what kind of spending was this” and can only answer once. A tag answers “what was this for”, as many times as it needs to, across categories — so “where did the kitchen money go” is still a ring, and the tag can be archived when the kitchen is finished.
  • v1.5.0

    Upcoming payments lifted above the ledger, where a thing you have not paid yet belongs.

    Changed

    • Upcoming occurrences sit above the records list rather than below it. A payment you have not made is a decision waiting, not history.
    • Nine screenshots in the README, all generated by a flow that asserts the totals it is about to photograph — so a wrong screen fails the build rather than being quietly captured.
  • v1.4.0

    Reverse a transfer, let a refund say what it refunds, and hide every amount behind one tap in the header.

    Added

    • One tap hides every amount. The eye in the header masks each figure on every screen, for reading your ledger with someone beside you. It persists, so the eye stays in the header as the way back. Shoulder privacy only — it does not touch screenshots or the recents thumbnail.
    • Reversing a transfer, and a refund that names the purchase it undid.

    Fixed

    • Search finds a transfer by where it landed, rather than by a category a transfer cannot have.
    • A reading fills the note in; it no longer overwrites what you had typed.
    • Pickers open on the current selection instead of at the top.
    • The update-balance sheet and the budget editor both sat under the keyboard.
  • v1.3.0

    Eight fixes to the reader after a week of real use — a cash withdrawal is a transfer, not an expense — and a relicence to GPL-3.0.

    Fixed

    • A withdrawal is a transfer. Cash out of a machine has not been spent; it is spent later, one purchase at a time. Filing it as an expense counted it twice and left the cash account permanently empty. Both halves looked individually plausible, which is why it survived a glance.
    • Bank messages get a category. The prompt never asked for one, so every bank record arrived uncategorised — which read as the model declining to guess, and was the app never putting the question.
    • The currency the message named is the currency entered. The screen took its currency from the account and nothing else, so a correctly-read USD 50.00 was saved as fifty pounds. Not displayed wrong — saved wrong.
    • The message survives a failed reading. The app had the bank’s own words, showed them in the grey row, and threw them away at the one moment they became permanent.

    Changed

    • Relicensed under GPL-3.0, so anything distributed from this comes back rather than disappearing into a closed fork. The name and the icon stay reserved.
  • v1.2.0

    Bank notifications read into records for approval, editable prompts, and a Settings screen that holds your rules rather than the app’s wiring.

    Added

    • Bank alerts captured and offered as records to approve, never written behind your back. Android hands over the notification your messaging app already showed — the same text you read off a lock screen. No READ_SMS, no conversation history, and the sender list starts empty.
    • The finance half of each prompt is yours to edit, so “the card ending 0042 is Kenana” resolves against your real accounts.

    Changed

    • Captured messages join the records list instead of living on a page of their own.
    • Two permissions the app never used are no longer declared.

    Fixed

    • A busy model no longer burns the message it failed to read.
    • The app says when messages are waiting on a key you have not supplied.
  • v1.1.0

    Daily totals in the records list, and a settings row deleted rather than wired to nothing.

    Added

    • A total on each day heading, so the month reads as a sequence of days that each net themselves.

    Fixed

    • The day heading was clipped by the total sitting beside it.
  • v1.0.0

    First light. The whole ledger in one version — keypad entry, budgets, analysis, credit cards, refunds, backups, receipts and recurring payments.

    The version stayed at 1.0.0 for seventy-five builds while the app was built, so this is less a release than the shape of the thing when it was first worth installing.

    Added

    • Recording — a calculator keypad, two-tier categories, transfers written as one atomic pair, refunds that net against the purchase they reverse, and multi-currency with the rate stored per record.
    • Making sense of it — records grouped by day and netted, a category ring with a ranked breakdown, budgets suggested from what you actually spend, free-text search with a total, and balances derived from the ledger rather than stored.
    • Credit cards as money owed rather than an emptied wallet, with per-card fee profiles and balance corrections that move your position without counting as spending.
    • Keeping it — a backup that is a plain zip you can open anywhere, an undo for the last restore, optional Drive backup sealed with a passphrase, and a CSV export that carries both legs of a transfer.
    • Receipts read by Gemini, with your own key, off until you supply one.
    • Recurring payments and portfolio rebalancing, the latter deliberately not wired into the ledger — it never tells you to sell.