Skip to content

Releases: DeepakSilaych/umber

Umber v0.1.3

Choose a tag to compare

@DeepakSilaych DeepakSilaych released this 28 Jul 06:22

Calendar periods instead of rolling windows.

Changed

The widget and home screen now show last 24 hours · this week · last week · this month ·
last month
, with weeks starting Monday. The week-on-week percentage is gone.

Rolling 7- and 30-day figures reshuffled their boundaries every day, so they could never be
compared against anything. "This week vs last week" is how people actually reason about their own
spending. The 24-hour figure stays rolling on purpose — it answers "what have I just spent", which
a number that resets at midnight cannot.

The widget also shows how many transactions are waiting to be categorised, tapping straight
through to the Review tab.

Fixed

  • The widget rendered its cramped layout at any size. Under SizeMode.Responsive,
    LocalSize reports the matched breakpoint rather than the real widget size — a 260dp-tall
    widget read as 140dp. Now uses SizeMode.Exact.
  • Content ran off the bottom edge. Glance clips silently, so a period simply vanished mid-line.
    Rows are now dropped by height tier, and the sparkline only appears where there is room.
  • Daily average divides by days elapsed this month, not a flat 30 — on the 3rd, dividing by 30
    understated spending tenfold.

Verify

APK SHA-256      9371cfc9b528d842e6ad68e6b0163fe6854839fa466b451e7c2b8625c3141693

Umber v0.1.2

Choose a tag to compare

@DeepakSilaych DeepakSilaych released this 28 Jul 06:08

Widget layout fix, now verified on a real device.

Fixed

  • The widget left two thirds of a 2×2 empty. Its size breakpoints assumed a "large" widget was
    250×200dp; a 2×2 is closer to 160×160, so every 2×2 rendered the short layout inside a tall box.
    Breakpoints now match sizes launchers actually produce, and the chart is anchored to the bottom
    edge so the space in between is filled.

A 2×2 now shows the 24-hour figure, the week-on-week trend, the review count, the top three
categories and the 30-day sparkline — all in one glance.

Verify

APK SHA-256      8994301b29a64d227b4542d65f50c9cb0c173ad1cb3ba0f20d715b88d53caef2

Same signing key as before, installs as an upgrade.

Umber v0.1.1

Choose a tag to compare

@DeepakSilaych DeepakSilaych released this 27 Jul 21:51

Fixed

  • .xlsx statements were unselectable. Android types them as
    application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, which the file picker's
    allowlist omitted — so the file was greyed out with no explanation. The picker no longer filters
    by MIME at all; format is identified from magic bytes, which is why filtering by MIME was
    self-defeating in the first place.

Widget

  • Empty state. A fresh install rendered ₹0, indistinguishable from a week of no spending.
  • Weekly trend — last 7 days against the 7 before, so the number has a reference point.
  • Review nudge — "N to categorise", tapping straight through to the Review tab.
  • Most recent sparkline bucket highlighted.
  • Data load wrapped in a guard: a thrown query used to leave a permanently broken widget on the
    home screen with no way to retry.
  • Settings → Home screen widget adds it in one tap. Previously the widget existed but nothing
    in the app mentioned it.

Also

  • App icon repainted umber to match the logo (it was still green from before the rename).
  • Settings → About shows the running version and links to releases.
  • README documents every permission the APK requests, including the four WorkManager merges in.

Updates

Umber can't check for updates itself — no network permission. Use
Obtainium pointed at this repo for update notifications.

Verify

APK SHA-256      20e2a25a7e6dff606d655c286c32c120aed016170b59cacaab848c9ae7d08305
Signing cert     e98c1305c140dd954ccce7d4b7efe207436c87c29c94475aa7d1859bbb587773

Same signing key as v0.1.0, so this installs as an upgrade. 133 unit tests pass.

Umber v0.1.0

Choose a tag to compare

@DeepakSilaych DeepakSilaych released this 27 Jul 20:59

First public build of Umber — an offline expense tracker for Indian bank and UPI SMS.

Android 8.0+ · 12 MB · no INTERNET permission

Install

Download umber-0.1.0.apk below and open it. You'll need to allow installs from unknown sources.

On first launch, grant SMS access, then Settings → Import history → 1 year to populate the
ledger and give the classifier something to learn from.

Not on the Play Store, and won't be: READ_SMS is a restricted permission that Google's
permitted-use list doesn't cover for expense tracking.

What's in it

  • Reads bank and UPI SMS — live, plus 1 month / 3 months / 1 year of history
  • Statement import.xlsx, CSV or TSV, no per-bank configuration
  • On-device categorisation — merchant memory → logistic regression over character n-grams →
    bundled lexicon of ~200 Indian merchants
  • Learns from corrections — one tap writes merchant memory, retro-labels that merchant's
    history and takes a gradient step
  • Cross-source dedupe — a statement overlapping months of SMS won't double anything
  • Reimbursement netting — pay a friend ₹1,000 and get it back, and you spent ₹0
  • Home-screen widget — rolling 24h / 7d / 30d spend
  • CSV export — plain numbers that sum in a spreadsheet

Privacy

The app ships without INTERNET. Not a policy — the permission isn't in the manifest, so it
cannot open a socket. Cloud backup is disabled too, since the database holds raw bank SMS.
No reverse geocoding (that would need network), so locations are coordinates only.

Known limitations

  • Merchant extraction is the weakest link; bank templates vary a lot. Settings → "Messages skipped"
    shows why anything was ignored — please open an issue with redacted examples.
  • Legacy .xls and PDF statements unsupported — export .xlsx or CSV instead.
  • Unminified, so stack traces in bug reports stay readable.

Verify

APK SHA-256      5e6e0972e52c46856f8e05dab43cb06f9d0d30a5f8f2e8d542a983894de58a40
Signing cert     e98c1305c140dd954ccce7d4b7efe207436c87c29c94475aa7d1859bbb587773

133 unit tests pass. See ARCHITECTURE.md for how it works.