# BUS Core v1.3.1 Release Notes
Immutable
release. Only release title and notes can be modified.
BUS Core v1.3.1 Release Notes
Date: 2026-06-18
Tag: v1.3.1
Summary
BUS Core 1.3.1 is the corrected release for the Invoice Truth MVP, selectable UI theme variants, and browser cache-busting update fix. It supersedes the failed v1.3.0 release attempt, which was tagged from a commit that still reported VERSION = "1.2.4".
What's New
Invoice Truth MVP
- Added Core-owned invoice tables and services for local invoice headers, lines, statuses, totals, and invoice numbers.
- Added canonical invoice API routes under
/app/invoicesfor listing, creating drafts, editing draft headers and lines, issuing, marking paid, voiding, reading detail, and printing. - Added a dedicated
#/invoicesUI with invoice list/detail editing, draft line controls, tax handling, totals, status badges, issue/paid/void actions, and print access. - Added job-to-invoice flow so a job can create a local draft invoice and open it in the invoice editor.
- Added printable invoice HTML at
/app/invoices/{invoice_id}/printfor browser print or save-to-PDF workflows. - Added invoice read/write permissions and route guard coverage for claimed mode.
UI Theme Variants
- Added a UI-only theme manager using
localStorage["bus.ui.themeVariant"]. - Reused the existing Settings theme dropdown as the single selector.
- Added four visual variants: BUS Core Default / Forge Dark, Clean Light, Workshop Slate, and High Contrast.
- Applied themes through
data-bus-themeand CSS variables so visual authority stays in CSS. - Preserved backward compatibility for legacy values:
dark,system,current, anddefaultmap to Forge Dark;lightmaps to Clean Light.
Browser Cache Busting
- The native launcher opens
/ui/shell.html?v=buscore-1.3.1. - Root and UI redirects point to the versioned shell URL.
- Shell CSS/JS assets use
?v=buscore-1.3.1. /ui/*responses return no-store/revalidate headers so updated browser tabs fetch the current frontend without requiring a manual hard reload.
Release Guard Hardening
- Bumped public
VERSIONto1.3.1and resetINTERNAL_VERSIONto1.3.1.0. - Added a release-mirror preflight that fails if a published release tag does not resolve to both the checked-out commit and the current default-branch commit.
- Kept the existing strict
v{VERSION}tag check againstcore/version.py. - Updated release-flow docs and version-drift tests to lock the new guard.
Boundaries
- Invoice lines are billing records only and do not mutate inventory.
- Marking an invoice paid records one local invoice-linked sale
CashEvent. - This release does not add email sending, payment links, customer portals, accounting sync, recurring billing, reminders, or Pro automation.
- Theme state is browser presentation state only and is not backend config, auth, business, inventory, finance, or release-update authority.
Release Procedure Guardrail
Create and publish v1.3.1 only after the version bump commit is on main. The release mirror will fail before mirror/upload work if the tag is created from an older commit or from a branch commit that is not the current default-branch commit.
Manual Test Checklist
- Start BUS Core and verify the Home card reports the 1.3.1 release update.
- Start BUS Core from the native launcher and confirm the opened URL includes
?v=buscore-1.3.1. - Reload
/ui/shell.htmlnormally and confirm the browser requests currentapp.css?v=buscore-1.3.1andapp.js?v=buscore-1.3.1. - Open Settings and confirm the existing theme dropdown contains Forge Dark, Clean Light, Workshop Slate, and High Contrast.
- Open
#/invoices, create a draft invoice, add/edit/delete a line, issue it, print it, mark it paid, and confirm void rules still behave as expected. - From a job detail screen, create a draft invoice and verify it opens in the invoice editor.
- Confirm finance transaction visibility includes invoice-linked paid invoices.
- Confirm inventory quantities do not change when invoice lines are created or edited.
- Confirm claimed-mode users without invoice permission cannot use invoice read/write routes.
Known Limitations
- Invoice print is browser-rendered HTML; Core still does not generate a server-side PDF.
- Invoice sending, online payments, customer portals, accounting sync, recurring billing, and reminders remain outside Core.
- Theme variants are a reversible UI spike and are intentionally local browser state.