Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 10 additions & 17 deletions RELEASE_SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,19 @@

## What's New

This release is a reliability and polish pass on the bank report wizard -- the PDFs you hand to a lender now render correctly in every case that was previously fragile, from long German descriptions to multi-page tables. It also adds a configurable login rate limit, a "No Category" option for subsidies, and three security fixes.
This release brings focused improvements to invoice management and diary navigation. You can now filter invoices to show only work-in-progress items with pending payments, visualize staged deposits as expandable rows, and load diary entries via infinite scroll for a smoother browsing experience.

### Highlights

- **Report table columns now flow through to the exported PDF.** The Show/Hide columns you toggle in the wizard preview are respected in the downloaded document, not just the on-screen preview.
- **Long rows are handled cleanly.** Descriptions that need to continue onto the next page are now clearly marked as continuations instead of reading like truncated or broken rows.
- **Split invoices are footnoted correctly.** The report now distinguishes an invoice split across budget lines from one split via a deposit tagged to a different source, so the footnote on each row explains the right reason.
- **Editable fields in the report editor have sensible length limits**, so cover letters and usage descriptions stay within what the PDF layout can safely render.
- **Fixed German header word-breaks, a missing timestamp on later report pages, and the page footer's locale**, so multi-page German-language reports read correctly throughout.
- **AI-assisted report generation is now guarded** against switching report type or source while a generation is still in progress, preventing content written for the wrong report from landing in your draft.
- **Configurable login rate limiting.** New `AUTH_RATE_LIMIT_MAX` and `AUTH_RATE_LIMIT_WINDOW` settings let you tune the login endpoint's rate limit for your household's network setup -- see the [Configuration guide](https://cornerstone.steiler.dev/getting-started/configuration#authentication-rate-limiting).
- **Subsidies can now include uncategorized items.** A subsidy program's applicable-categories picker gained a "No Category" option, so a subsidy can cover budget lines that have no category assigned.
- **Budget source drill-down is deposit-aware.** Instalment-paid invoices now show the correct paid and outstanding split when viewed from a financing source.
- **Failed column-preference saves now surface an error toast** in list views instead of failing silently.

### Security

- Fixed an IPv6 address-normalization bypass in the login rate limiter (CVE-2026-15144).
- Remediated a credential-leak/SSRF vulnerability in the `undici` HTTP client (GHSA-g4rg-993r-mgx8).
- Remediated a vulnerability in the `brace-expansion` dependency (GHSA-rhx6-c78j-4q9w).
- **Invoices — Show only open items view** — A new toggle at the top of the invoice list narrows the view to pending invoices and invoices with pending deposits, sorted by earliest due date. Pending deposits appear as expandable child rows under their invoice for at-a-glance visibility of what is left to pay. The header shows open-payable and refunds-due totals so you always know your cash-flow position.
- **Diary — Infinite scroll navigation** — Diary entries now load automatically as you scroll, with a "Load more" button for keyboard-accessible batch loading. Old bookmarked diary links continue to open the diary normally.
- **Bug fixes** — Invoice status badges now display with correct color. Resolved stale-fetch races in the diary when filters or search are reset.

### Behind the Scenes

- Large dependency and security update sweep across production, development, and GitHub Actions packages
- Addressed 15 orphan security advisories via package overrides and lockfile reconciliation
- CI Jest timeout increase to improve reliability on resource-constrained runners

## Upgrade

Expand Down
14 changes: 13 additions & 1 deletion docs/src/guides/budget/vendors-and-invoices.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,22 @@ Click a vendor to see their detail page, which shows the vendor's information, a
Navigate to **Budget > Invoices** in the sidebar to see all invoices across all vendors. (Invoices remain in the Budget section; only the vendor records themselves moved to Settings.) The list supports:

- **Search** -- Find invoices by number or vendor name
- **Status Filter** -- Filter by Quotation, Pending, Paid, or Claimed
- **Status Filter** -- Filter by Quotation, Pending, Paid, or Claimed (disabled while "Open Items" mode is active)
- **Sorting** -- Sort by date, amount, or status
- **Pagination** -- Browse through large invoice lists

#### Show Only Open Items

Click the **"Show only open items"** toggle at the top of the invoice list to focus on work-in-progress invoices. This view shows:

- **Pending invoices** and invoices with pending deposits, sorted by earliest due date so your most urgent payables surface first
- **Expandable deposit rows** -- Each invoice that has pending deposits shows a child row for each one, so you can see at a glance which deposits are still outstanding
- **Open totals** in the header:
- **Payable** -- The total amount you still owe across all visible invoices and pending deposits
- **Refunds due** -- The total amount you are expecting back (when deposits exceed the final invoice amount)

The "Open Items" mode is mutually exclusive with the Status filter (Status filtering is disabled while Open Items mode is on) and persists in the URL as `?openOnly=true`, so you can bookmark or share the focused view.

### Creating an Invoice

Click **New Invoice** -- either from a vendor's detail page or from the top of the **Budget > Invoices** list. Provide:
Expand Down
1 change: 1 addition & 0 deletions docs/src/guides/diary/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ The diary provides:
- **Photo Annotation** -- Mark up photos with rectangles, arrows, text, measurements, and more, directly in the browser (touch-enabled)
- **Drafts** -- Pick an entry type and start drafting immediately; the entry is saved as a draft until you promote it to a full entry, with auto-save while you type
- **Signature Capture** -- Collect digital signatures from users or vendors with a drawing canvas; signed entries become immutable
- **Infinite Scroll** -- Entries load automatically as you scroll; a "Load more" button lets you fetch the next batch without scrolling
- **Filtering** -- Filter the diary by Manual (the default), All, or Automatic entries with type-specific filter chips, plus a separate Drafts chip to show or hide unfinished work

## Entry Types
Expand Down