Skip to content

# BUS Core v1.3.1 Release Notes

Choose a tag to compare

@truegoodcraft truegoodcraft released this 18 Jun 20:54
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/invoices for listing, creating drafts, editing draft headers and lines, issuing, marking paid, voiding, reading detail, and printing.
  • Added a dedicated #/invoices UI 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}/print for 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-theme and CSS variables so visual authority stays in CSS.
  • Preserved backward compatibility for legacy values: dark, system, current, and default map to Forge Dark; light maps 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 VERSION to 1.3.1 and reset INTERNAL_VERSION to 1.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 against core/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.html normally and confirm the browser requests current app.css?v=buscore-1.3.1 and app.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.