finbreak (1.0.1) unstable; urgency=medium

  * On Windows, "Update now" installs the update and reopens finbreak.
    Windows users on 0.1.10 to 1.0.0 install this release by hand once,
    replacing the old .exe in its folder.
  * Leftover download files from failed Windows updates are removed when
    finbreak starts.
  * Installing finbreak on Fedora no longer reports "Transaction failed".

 -- Anthony Schemel <aant.schemel@gmail.com>  Sat, 10 Oct 2026 09:46:44 +0200

finbreak (1.0.0) unstable; urgency=medium

  * When an OFX file holds several accounts, the chooser names each account's
    type in words (for example "Savings") instead of the bank's code.
  * Importing several statements with the same layout asks about the columns
    once, even if you do not name the layout.
  * PDF reports are always exported on a light page.
  * On a Linux computer missing a few common display libraries, finbreak's
    window now opens under X11; the AppImage and the Linux packages carry
    those libraries themselves.
  * Checking a backup now uses disk space in finbreak's own folder instead of
    your computer's memory on some Linux systems.
  * Moving a statement to another account no longer leaves a money transfer
    with both sides in one account and its amounts missing from your totals.
  * A mistyped time zone in Settings or at first run is now refused with a
    message, instead of quietly switching to your computer's zone.
  * Dates with month names, and AM/PM, now follow your computer's language
    instead of always appearing in English.
  * Restoring a backup onto a full disk now says there isn't enough disk
    space, instead of telling you to check the file and the backup password.
  * Saving a backup can no longer delete a file of yours that happens to share
    the backup's name plus ".tmp".
  * Ctrl+Q now quits finbreak from the password screen and the first-run
    screen, not only once you are unlocked.
  * A password you ask a batch import to remember is now saved only when that
    statement is actually imported.
  * A Standard Bank statement row dated just before the statement period no
    longer pushes that row, and every row after it, into the following year.
  * The offer to restore the copy kept from before an update now says when
    that copy was taken.
  * When a PDF statement's password is wrong, the password window now says so
    when it asks again.
  * After creating an account during an import, the import screen now shows
    what it stored, including the warning when the account has no number.
  * finbreak no longer crashes on a computer whose time-zone setting names a
    zone that doesn't exist; it uses the computer's local time instead.
  * A restore that succeeded is no longer reported as failed when finbreak
    can't tidy away its temporary folder afterwards.
  * Choosing the vault file itself as a backup's destination now says so,
    instead of claiming the vault is too large to back up.
  * In languages with their own digits, such as Arabic or Persian, amounts now
    show the cents in those digits too instead of mixing in Western digits.
  * The dashboard and Forecast tab no longer keep each old chart in memory
    every time they refresh.
  * If Settings can't be saved (for example on a full disk), finbreak now says
    so and keeps Settings open instead of crashing.
  * The vault-creation, recovery-code and new-password screens now explain
    problems in plain, translatable words instead of quoting technical error
    text.
  * When an update can't be installed, the message now says why in plain words
    (not enough disk space, or no permission to replace the file) instead of a
    raw technical error.
  * Restoring a backup now clears the old password hint and any failed-unlock
    wait, since the restore sets a new master password.
  * After locking and unlocking, finbreak returns you to the tab you were
    using, not the one it opened on.
  * If finbreak locks itself while the save window is open during a PDF or
    backup export, the export now stops quietly instead of showing a "choose
    another location" error over the lock screen.
  * Help → Check for updates started from the locked screen now tells you the
    result, instead of saying nothing when you are up to date or the check
    fails.
  * A category name containing characters like < or & is shown exactly as
    typed in the dashboard and PDF pie charts, never read as formatting.
  * Years in the PDF report and the month summary, and the numbers on chart
    axes, now use your language's own digits and separators.
  * The Export report window no longer shows empty "Month" and "Year" labels
    when the chosen period does not use them.
  * The dashboard drill-down no longer counts a spending group twice when a
    restored or damaged vault holds a transaction filed on a top-level type.
  * Correction to the 0.1.23 notes: there is no dark PDF export.
  * A statement with separate Withdrawal and Deposit columns now previews
    without adjusting the form.
  * Two accounts or categories whose names differ only in spacing can no
    longer both exist.
  * Pressing Esc during an update download no longer leads to a surprise
    restart.
  * A failed update now says whether the download dropped or the file failed
    its security check.
  * A restore finbreak could not undo now says what happened and not to delete
    anything.
  * Alert text and the password hint are shown exactly as written.
  * Saving a new recovery code can no longer leave you with a saved code that
    does not work.
  * A settings save that fails during setup no longer loses your recovery
    code.
  * A security check that cannot run is no longer reported as a wrong
    password.
  * A damaged security-settings file found after the password is checked is
    reported, not a crash.
  * Closing finbreak while a slow update check is still running no longer ends
    in a crash report.
  * Opening finbreak twice right after a crash no longer risks two copies
    running on the same vault.
  * If the system cannot say where finbreak should keep its data, finbreak now
    says so instead of using the folder it was started from.
  * finbreak no longer risks crashing just after you unlock or create a vault
    on a busy computer.
  * A damaged recovery-code record no longer locks you out with the right
    master password.
  * Restoring a backup can no longer delete the safety copy of the vault it
    replaced.
  * A damaged or tampered backup file is refused with a message, never a
    crash.
  * Standard Bank PDF imports no longer lose transactions silently.
  * An OFX file whose balance is "Infinity" no longer crashes the import.
  * A CSV with an unclosed quote no longer loses transactions silently.
  * Renaming a deeply nested category no longer moves it.
  * No false spending-spike alerts while you have few months imported.
  * Amounts with an impossible fraction of a cent are refused, not rounded.
  * A cancelled batch import no longer leaves its 'amounts are reversed' tick
    behind.
  * PDF reports show negative amounts the way you chose in Settings.
  * Month-end debit orders stay on month-end in the forecast.
  * New-transaction and date-filter defaults use your chosen time zone.
  * Links opened from the Linux AppImage no longer risk failing silently.
  * The Forecast tab no longer says you have no confirmed recurring items when
    you do.
  * A vault settings file hand-edited to an impossible key-strength value now
    gets a clear refusal at unlock instead of an unhandled error.
  * The Linux AppImage no longer crashes on the first keystroke.
  * A saved PDF report now always covers the month its filename names.
  * Recovering from an interrupted restore now survives a power cut.
  * A copied transaction is now cleared from the clipboard even if the vault
    locks first.
  * The updater refuses an older version or another system's file dressed as a
    new release.
  * The updater can no longer overwrite another application's AppImage.
  * The recovery code can no longer be copied around its clipboard auto-clear.
  * Locking now clears every screen straight away, not only the tables.
  * Statement passwords typed during a batch import are forgotten when it
    ends.
  * The password hint now refuses your recovery code however you write it —
    without its last character, spaced out, or split across lines — not only
    the exact printed form.

 -- Anthony Schemel <aant.schemel@gmail.com>  Thu, 08 Oct 2026 14:37:26 +0200

finbreak (0.1.23) unstable; urgency=medium

  * A recovery code — a second way into your vault if you forget your master
    password. Shown once when the vault is created; finbreak keeps no copy.
    Existing vaults are upgraded on next unlock, with a copy taken first.
  * SECURITY.md and CODE_OF_CONDUCT.md, and a private channel for reporting a
    vulnerability.
  * CSV import now guesses the column mapping from the file's own headers.
  * Batch import review no longer slows down as files are added, and schema
    v14 indexes transfer-candidate detection.
  * The time zone picked in Settings now decides what "today" means, not just
    how dates look.
  * Categories and accounts whose names only look identical are no longer both
    accepted.
  * The chosen date format now reaches the Transfers, Recurring, Forecast and
    Alerts screens.
  * A screen reader can now name every password and recovery-code box.
  * The import wizard no longer crashes if the vault locks itself partway
    through, and two copies of finbreak can no longer open one vault after a
    crash.

 -- Anthony Schemel <aant.schemel@gmail.com>  Mon, 07 Sep 2026 00:01:00 +0200

finbreak (0.1.22) unstable; urgency=medium

  * Imported credit-card statements no longer carry a stray "Continued on
    next page" tacked onto the last transaction of each page. Amounts were
    never affected; only the description text.
  * The README now explains how to name a desktop shortcut for the Linux
    AppImage, so a hand-made one does not leave two finbreak icons in the
    panel.

 -- Anthony Schemel <aant.schemel@gmail.com>  Tue, 19 Aug 2026 20:45:00 +0200

finbreak (0.1.21) unstable; urgency=medium

  * The Linux app-store (Flatpak) build now starts -- the build announced in
    0.1.20 could not open at all, because a security library the app-store
    runtime does not ship was missing.
  * A statement with an unreadable line that moved money is now refused with
    a message, instead of being imported with wrong totals.
  * A custom date format with no year no longer dates every transaction 1900;
    finbreak now says the year is missing.
  * A remembered statement password is moved to the account the transactions
    actually land on, rather than left on an unrelated one.
  * The "the day and month might be swapped" warning no longer appears on a
    May statement, where the two readings agree.
  * The import screen has a Back button, so the advice to go back and check
    the column mapping is now advice you can follow.
  * A statement finbreak had already imported no longer hides the rows it
    could not read, and one bad row reads "1 row" rather than "1 rows".
  * An unreadable amount names the value it could not read, instead of
    showing internal programmer text.
  * Importing a damaged spreadsheet no longer closes the app when the Date
    column is changed.
  * When no row of a PDF or OFX statement can be read, the advice points at
    the per-row reasons rather than at a screen those formats never show.
  * The import screen no longer re-reads the whole statement for every
    character typed into the date-format box.
  * The built-in install check (--self-test) now works on a machine with no
    display, such as a server reached over SSH.

 -- Anthony Schemel <aant.schemel@gmail.com>  Mon, 17 Aug 2026 12:00:00 +0200

finbreak (0.1.20) unstable; urgency=medium

  * SECURITY: updated the library finbreak uses to verify that a downloaded
    update really came from us; the previous version had a published flaw
    (CVE-2026-69247).
  * SECURITY: dependencies are now checked against two advisory databases
    rather than one, catching a hijacked or typosquatted package that carries
    no CVE at all.
  * SECURITY: release builds pin their build tools to exact, unchangeable
    versions, so a tool cannot be silently repointed at different code that
    would land inside a signed download.
  * SECURITY: restoring a maliciously-crafted backup can no longer exhaust
    memory before you have logged in; a backup survives a power cut straight
    after saving; and one written into a shared folder cannot be hijacked.
  * SECURITY: another user on the same computer can no longer stop finbreak
    from starting.
  * Import a whole folder of statements in one go -- a mix of CSV, OFX and
    PDF -- reviewing everything on one screen before anything is written.
  * Statements file themselves under the right account, read from the account
    number printed on them, and offer to create the account if it is new.
  * The dashboard says in a sentence what your month did, and stays quiet when
    the month is ordinary or the history is too short to judge.
  * Delete several statements at once, and confirm or reject several suggested
    transfers at once.
  * Importing a statement no longer re-sorts your whole history.
  * Accented shop names are matched consistently across import and
    categorisation.
  * Standard Bank statements now tell you when a line could not be read,
    instead of dropping it silently.
  * A Standard Bank statement with an out-of-range opening or closing balance
    is refused with a message instead of crashing the import.
  * An OFX file with an unusable closing balance is reported rather than
    failing silently.
  * Many smaller fixes across the Accounts, Forecast, Transactions and import
    screens.

 -- Anthony Schemel <aant.schemel@gmail.com>  Fri, 07 Aug 2026 10:00:00 +0200

finbreak (0.1.19) unstable; urgency=medium

  * The Accounts tab is now a sortable table of Name, Type, Account number,
    Note and Status, with columns you can resize and reorder.
  * Each account can store an account number and a free-text note, both held
    in the encrypted vault and masked as dots plus the last four digits.
  * A "Show account numbers" tick-box reveals every account number in full
    for 30 seconds, then hides them again automatically.
  * The Forecast table and the Home dashboard breakdown lists now remember
    their column widths and order, like every other table in the app.
  * The dashboard scrolls instead of squashing when the window is too small,
    so the three breakdown columns stay readable.
  * Alerts moved off the dashboard into an "Alerts" button and dialog, so the
    page no longer shifts up and down as alerts come and go.
  * Only one copy of finbreak runs at a time — launching it again raises the
    window you already have.
  * Window → Reset layout now restores column widths and order as well as the
    window size, in the same click.
  * Running the AppImage no longer puts a duplicate finbreak icon in the
    taskbar, and the import preview table remembers its column widths.

 -- Anthony Schemel <aant.schemel@gmail.com>  Sun, 02 Aug 2026 12:00:00 +0200

finbreak (0.1.18) unstable; urgency=medium

  * A new Forecast tab projects your balance forward from confirmed recurring
    income and expenses, to month-end or 30, 60 or 90 days ahead.
  * Spending alerts on the Home dashboard flag unusual spend, a newly-appeared
    recurring charge, or an expected debit that didn't post — each dismissable.
  * Account-level balance reconciliation on the Accounts tab checks that
    imported transactions bridge each statement's closing balance to the next.
  * The update prompt now lists what changed in every release you skipped, not
    just the newest one, and the download bar shows real progress.
  * The forecast no longer counts credit-card and loan debt as spendable cash;
    it anchors on current and savings accounts and names what it excluded.
  * The Recurring and Transfers tabs show amounts with the currency symbol and
    thousands grouping, matching the rest of the app.
  * CSV import reports a friendly "not valid CSV" message instead of crashing
    on a corrupt or truncated file.
  * Security: updates install the exact bytes that passed the signature check;
    the update check enforces HTTPS on redirects, not just the first request.

 -- Anthony Schemel <aant.schemel@gmail.com>  Tue, 28 Jul 2026 12:00:00 +0200

finbreak (0.1.17) unstable; urgency=medium

  * Flatpak + native Linux packages (RPM/deb) — install finbreak via GNOME
    Software, KDE Discover, or your distro's package manager.
  * Categories can now be organised three levels deep (Type > Category >
    Sub-category), with rename, move and delete at every level.
  * "Report an Issue" menu item; signed SHA256SUMS checksums and per-platform
    software-component lists (SBOMs) for independent release verification.
  * Forgotten-password vault reset on the unlock screen, and a "Verify backup"
    button in Settings that checks a backup is readable before you rely on it.
  * Amounts show the currency symbol ("R 1,234.49") with a dedicated Currency
    column; confirmed transfers now show directionally on the Transactions tab.
  * Optional password hint on the unlock screen; copied amounts/descriptions
    auto-clear from the clipboard; repeated wrong unlock attempts are throttled.

 -- Anthony Schemel <aant.schemel@gmail.com>  Thu, 23 Jul 2026 12:00:00 +0200

finbreak (0.1.16) unstable; urgency=medium

  * OFX import now files each transaction under the date the bank printed, even
    when the statement carries a timezone.
  * The delete-statement confirmation no longer over-states the loss when the
    statement overlaps another one you keep.
  * Deleting a statement no longer loses transactions that an overlapping
    statement still covers — they are handed over to the statement you keep.

 -- Anthony Schemel <aant.schemel@gmail.com>  Sat, 18 Jul 2026 12:00:00 +0200
