BUS Core v1.3.0
Immutable
release. Only release title and notes can be modified.
BUS Core v1.3.0 Release Notes
Date: 2026-06-18
Tag: v1.3.0
Summary
BUS Core 1.3.0 combines the local Invoice Truth MVP with selectable UI theme variants. This release keeps Core local-first: invoices, invoice lines, printable invoice HTML, and theme preference all stay inside the local app experience without adding cloud billing, payment processing, telemetry, CDN assets, or backend theme configuration.
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
- 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.
Release Hygiene
- Bumped public
VERSIONto1.3.0;INTERNAL_VERSIONis1.3.0.1after the browser cache-busting release fix. - Updated package metadata, Windows version metadata, SOT, API/UI contract docs, README, Home latest-update copy, changelog, and release notes.
- Removed accidentally tracked local GitHub CLI tooling from
.tools/and ignored.tools/going forward. - Added the Invoices sidebar icon mapping and icon asset.
- Added browser cache-busting for the native launcher, root/UI redirects, shell CSS/JS asset URLs, and
/ui/*response headers so users do not need to manually hard reload after updating.
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.
Upgrade Notes
- Release tag should be
v1.3.0to match the strict SemVer authority incore/version.py. - Startup schema materialization remains code-driven and additive; no separate migration runner is introduced.
- Existing local data remains in the operator's BUS Core AppData-backed SQLite database.
Manual Test Checklist
- Start BUS Core and verify the Home card reports the 1.3.0 release update.
- Start BUS Core from the native launcher and confirm the opened URL includes
?v=buscore-1.3.0. - Reload
/ui/shell.htmlnormally and confirm the browser requests currentapp.css?v=buscore-1.3.0andapp.js?v=buscore-1.3.0. - Open Settings and confirm the existing theme dropdown contains Forge Dark, Clean Light, Workshop Slate, and High Contrast.
- Change the theme, reload the app, and confirm the selected theme persists.
- 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.