# MauzoTrack 1.0 — Production Release (Build 37)

- Made the mobile notification center a true full-screen workspace from the top edge and replaced awkward row popovers with one compact, viewport-aware action menu.
- Changed Pending Payments export to a real CSV download and made report actions navigate safely inside native clients instead of relying on unsupported popup windows.
- Added a two-step POS review flow: verify products first, then explicitly proceed to the payment section below.
- Updated the product CSV template to match current Single, Wholesale and Wholesale + Single terminology, fields and price rules.
- Added branded Windows protocol registration metadata so the operating-system confirmation identifies MauzoTrack instead of generic Electron wording.
- Removed navigation's drawer-animation wait from cached/prefetched page transitions for faster menu changes.
- Preserved the 1.0.36 notification exclusivity, Recent Sales alignment and release-hygiene fixes.
- Normalized the public product version to MauzoTrack 1.0 while retaining internal Build 37 identifiers for cache/update continuity.

## MauzoTrack 1.0.32 — Mobile Readability & Pending Payments Report

- Redesigned the notification panel to meet the right viewport edge on desktop and increased title, message, metadata and control readability on every screen size.
- Added browser-side installed-app awareness with clear Open App and Update App choices while preserving direct first-time APK/Windows downloads.
- Removed unnecessary Outside Shop Product helper copy and aligned the remaining mobile inputs more cleanly.
- Increased compact action-button and mobile account-menu typography without changing established layouts.
- Added a Pending Payments summary card and a dedicated, filterable pending-payments report with customer follow-up details and scoped exports.
- Replaced the three-state text toggle with a persistent five-level responsive text-size slider that covers content and controls while keeping placeholders compact.

## MauzoTrack 1.0.31 — Native App Opening & Mobile Drawer

- Raised the open mobile sidebar above the top bar and bottom navigation so the MauzoTrack brand, close control and complete navigation are visible.
- Changed Windows startup to open the real MauzoTrack sign-in route directly instead of stopping on an internal connection-settings screen.
- Added silent local/hosted workspace fallback and automatic background retry without requiring the user to configure a server.
- Preserved the signed Android identity and aligned both native installers to release 1.0.32.

## MauzoTrack 1.0.30 — Installer Delivery & Notification Panel

- Bundled the signed Android APK and Windows installer in the complete deployment package so the in-app Install App buttons resolve to real files instead of returning 404/download-failed errors.
- Updated native package versions and installer download paths to 1.0.30.
- Made the desktop notification panel use the full available viewport height while preserving its existing width.
- Replaced the notification X icon with a compact, clearly labelled Close action in light and dark themes.
- Kept a separate source-only archive for fast code transfer without duplicating large native binaries.

## MauzoTrack 1.0.29 — Native Connection Reliability

- Fixed the Windows client being locked to a hosted URL while the active project was running locally.
- Added automatic local-server discovery, a remembered private server address and a clear retry state to Windows.
- Fixed Android blank-screen startup by adding explicit loading, main-frame/HTTP/SSL failure handling and safe WebView process recovery.
- Added Android Wi-Fi gateway discovery for local `:8000` testing plus a remembered private server fallback.
- Kept Android TLS verification enabled and preserved the existing release-signing certificate.
- Updated Install App downloads and static cache versions to 1.0.29.

## MauzoTrack 1.0.28 — Native Installers & Large-Catalogue Performance

- Added a signed Android APK build with WebView file upload support, verified web association, native deep link and offline-safe hosted workspace caching.
- Added a Windows x64 Electron/NSIS installer with single-instance behavior, persistent secure session, shortcuts and `mauzotrack://` protocol registration.
- Install App now hides inside native/standalone clients, detects the related Android app where supported, opens existing clients and otherwise downloads the platform installer.
- Added focused database indexes for category catalogue lookup and product sales aggregation.
- Reduced POS server hydration overhead and changed top-selling cache maintenance to an incremental update after sale completion.
- Precomputed searchable product metadata, reused one collation engine and reduced search render latency to keep 500–1,000+ product catalogues responsive.
- Enabled HTTP compression and safe caching of static assets and installer MIME types.

## MauzoTrack 1.0.27 — Final Dashboard, Notification and Export Corrections

- Keeps Dashboard cards in the required order without Gross Profit and with Pending Payments last.
- Prevents an older local Laravel server on port 8000 from masking the current release after setup/start.
- Removes the notification gear, centers the close icon and makes the mobile panel fill the available viewport.
- Removes the redundant checkout system note from Payment History while preserving user-entered notes.
- Makes Download Current View merge the filters active at click time, including live/AJAX filters.
- Adds regression coverage for Dashboard ordering, Stock filter exports, notifications and payment history.

## MauzoTrack 1.0.26 — Setup Reliability Hotfix

- Restored `.env.example` to the distributable ZIP.
- Setup now creates and verifies `.env` before Composer/Laravel commands continue.
- Setup stops with an actionable error instead of allowing a missing environment file to fail later.
- Existing application keys are detected and preserved when setup is rerun.

## MauzoTrack 1.0.25 — Dashboard, Payments and Notification Refinement

- Removed Gross Profit from Dashboard and restored Out of Stock before Pending Payments.
- Rebuilt Record Payment alignment and Payment History spacing.
- Refined notification header controls and readability.
- Closed stale Outside Shop search feedback on field exit.
- Removed Payment Method from newly pending-sale review and completion output.
- Added View Sale beside Start New Sale after completion.

## MauzoTrack 1.0.24 — Operational UX & Sales Tracking

- Added click-to-close and mobile swipe-to-dismiss notification behavior.
- Moved Settings into a redesigned Owner account menu.
- Added pending-payment customer tracking and Outside Shop source-shop snapshots, including offline sync and reports.
- Added backend-enforced feature switches for returns and Outside Shop Selling.
- Reordered wholesale stock setup and collapsed optional loose stock, notes and descriptions.
- Redesigned payment collection and payment history cards.

## MauzoTrack 1.0.23 — Operations & Security Refinement

- Redesigned Notifications for a cleaner desktop panel and full-height mobile experience.
- Added verification and security email handling for account email, password and creation events.
- Added Dashboard Pending Payments without increasing the management-card count.
- Limited Dashboard Expense Summary to the current day.
- Enabled daily automatic application backups with seven-copy retention and clearer Settings guidance.
- Cached POS catalogue preparation and invalidate it automatically when catalogue or stock data changes.
- Improved Owner password-reset action spacing.

## MauzoTrack 1.0.22 — Payment History & Notification Polish

- Payment History now has consistent responsive inner padding.
- Mobile Notification Center is flush beneath the top header.
- Notification close control uses a centered red-overlay X icon.
- No migration or accounting/payment logic changes.

## MauzoTrack 1.0.21 — Role-Aware Activity Notifications

- Redesigned the notification panel as a compact activity inbox with All / Sales / Inventory tabs and a near-full-screen mobile presentation.
- Added role-aware audiences: Owner actions remain private to that Owner; Manager/Cashier actions are shared with Owner and other staff.
- Added activity events for sale completion/payment state/offline sync/returns/cancellation, product add/import, and stock receive/correction.
- Simplified unpaid-payment reminders to follow-up messages without debt calculations in notification rows while preserving the 24-hour reminder cycle.
- Added click-to-open/read behavior, per-item read/clear controls, Mark all as read and Clear read.
- Replaced Average Paid Order on the Sales summary with Pending Payments count plus a compact balance-due hint.
- Added `activity_notifications` migration and included activity history in backup/reset handling.

## MauzoTrack 1.0.20 — TZS 10 Pricing & Notification Inbox

- Changed all normalized money alignment from nearest TZS 50 to nearest TZS 10.
- Kept mobile Dashboard Recent Sales to a single compact row with a clearer View action.
- Increased collapsed Filter label/description readability on desktop and tablet.
- Added persistent Notification read/seen and clear controls, per-item timestamps, unread badge count, Read all and Clear all.
- Notification dismissals apply to the current 24-hour reminder cycle only; unpaid sales remain intact and can remind again later.
- Added `notification_states` migration; no stock, sale, payment or offline schema behavior was changed.

## MauzoTrack 1.0.19 — Compact Actions & Universal Filters

- Collapsed Return Items and Cancel Remaining Sale workflows on Sale Details to reduce scrolling and visual noise.
- Added automatic menu dismissal after a chosen action for Account, Download Report, overflow and mobile More menus.
- Rebuilt Inventory mobile heading actions as Receive Stock / Correct Stock / Download Report / More in a 2 × 2 layout and made More viewport-safe.
- Replaced Products More with a direct Import Products action; mobile uses a two-column action grid and desktop keeps one row.
- Made filters collapsed by default across desktop, tablet and mobile, including report filters that previously stayed expanded.
- No database migration; 1.0.18 backup compatibility remains supported.

## MauzoTrack 1.0.18 — Notification Center & Sales UI Polish

- Removed the permanent Payment Pending banner from All Sales and moved ongoing debt attention into the new notification center.
- Refined mobile sale cards with `Amount: TZS …`, blue Paid amounts, warning-colour pending amounts, no duplicate Due line, and compact Paid / Payment Pending status labels.
- Aligned Record Payment controls on one desktop input baseline and improved container padding; tablet and mobile layouts remain responsive.
- Removed the duplicate sidebar identity card and simplified the top utility header to Online, Font Size, Notifications and Account. Theme and Language now live inside Account.
- Added Notification Center V1 with pending-payment alerts, active alert count, 24-hour device-reminder throttling, service-worker notification click-through, and secure-context fallback messaging.
- Kept partial-payment accounting, stock behavior and recognition rules unchanged; no migration is required.

## MauzoTrack 1.0.16 — Partial Payments & Responsive Workflow Fixes

- Added partial payment collection for Payment Pending sales. Owner/Manager can record each amount received, see paid amount and remaining balance, and the sale becomes Paid only when the balance reaches zero.
- Kept pending and partially paid sales out of recognized sales/profit until fully paid; recording later payments never deducts stock a second time.
- Added a payment history per sale and Add Payment actions directly from desktop and mobile Sales lists.
- Made POS Payment Status an explicit two-choice decision with no default selection and concise Paid / Payment Pending controls.
- Completed General Products / General Expenses user-facing renaming across product, expense, category and report selectors while preserving legacy internal category names for backups.
- Added Stock Movement History report download with full/current-view support and CSV export endpoint.
- Improved Outside Shop Product header/search spacing and payment/debt layouts for desktop, tablet and mobile.
- Extended backup/reset compatibility for the new sale payment ledger and amount-paid field.

## MauzoTrack 1.0.15 — Payment Confirmation & Smart Outside Products

- Added independent payment confirmation statuses: Paid and Payment Pending. Pending sales deduct physical stock immediately but do not enter recognized sales, gross profit or net profit until Owner/Manager confirmation.
- Added Owner/Manager Confirm Payment action with payment-method correction at confirmation time.
- Preserved Payment Pending independently from offline Pending Sync; offline queued sales keep both dimensions through synchronization.
- Changed TZS alignment from upward 100 rounding to nearest 50 across backend, inputs, prices, expenses, discounts and exports.
- Renamed the user-facing protected product bucket from Uncategorized Products to General Products while preserving the legacy internal category name for backups and historical records.
- Reworked Outside Shop Product into a typed smart matcher (2+ characters), ranked Out of Stock → Low Stock → In Stock, with catalog metadata and normal price prefill while never reducing shop stock for outside-source items.
- Applied the saved Light/Dark theme before first paint and preserved it atomically through shell navigation and PWA/offline startup.
- Added 1.0.15 regression coverage for nearest-50 rounding, pending-payment stock behavior, payment confirmation and offline payment/sync status separation.

## MauzoTrack 1.0.14 — Simplified Product Setup & Responsive Typography

- Simplified Add Product to two operator-facing choices: Single Item and Wholesale Item.
- Added a clear checkbox that enables conversion, derived single cost, single pricing and loose stock only when a Wholesale Item may also be sold as singles.
- Allowed indivisible boxes and sealed cartons to be configured as Single Items without changing the legacy data modes used by backups, reports, sales history, stock movements or offline sync.
- Restored duplicate-product suggestions while the name is being typed, even before a category is selected, with Use Existing and Receive Stock actions.
- Reworked text scaling so readable content grows without independently enlarging every nested span, button, badge or compact control.
- Protected placeholder sizing and made the POS filter grid adapt when Large or Extra Large text is enabled.
- Rebalanced mobile Recent Sales references, totals, metadata and actions.
- Added regression coverage for the simplified product flow, carton-as-single inventory, invalid conversions, duplicate detection and typography safeguards.

## MauzoTrack 1.0.13 — Setup, TZS Alignment & Automatic Offline Sync

- Reordered Wholesale + Single pricing so sealed wholesale cost is entered before dependent single-item pricing, in both Add and Edit Product.
- Added one TZS money policy that rounds upward to the next 100 across inputs, derived costs, sale discounts, partial-return allocations, screens, documents and exports.
- Added a safe migration that aligns existing product prices and derives combined-product single costs from wholesale cost and conversion.
- Rebuilt first-run setup as three isolated steps and moved email verification to the same standalone setup shell.
- Fixed setup category persistence with server-side parsing, case-insensitive deduplication and transaction-safe save/reactivation.
- Expanded the text-size control to actual content typography and added layout safety for cards, actions and data tables.
- Added cashier-scoped offline queues and cached POS URLs, immutable cashier/device metadata, automatic retry on reconnect and Pending → Syncing → Synced feedback.
- Preserved offline physical sales during multi-device stock conflicts while keeping server stock non-negative and recording a resolved reconciliation variance.
- Added focused release tests; the complete suite passes 85 tests and 634 assertions.

## MauzoTrack 1.0.12 — Stock, Backup & Accounting Reconciliation

- Simplified Receive Stock to quantity and receiving unit only; delivery entries no longer change purchase cost, minimum price or selling price.
- Preserved valid receiving choices: Single Only receives singles, Wholesale Only receives wholesale units, and Single & Wholesale offers both.
- Repaired Stock Movement History’s Blade compilation failure and added safe fallbacks for legacy timestamps and unit values.
- Shortened customer-facing backup/restore success notifications and removed filenames and historical-media diagnostics from routine popups.
- Added verified database/media snapshot fingerprints so unchanged backups are reused instead of creating duplicate ZIP files; changed data or media still creates a new backup.
- Added deterministic internal allocation of overall sale discounts without exposing them as direct item discounts.
- Made partial-return refunds independent of product return order and guaranteed a full return reconciles to the exact amount paid.
- Reconciled Top Products sales/profit, Daily and Monthly item counts, Sales lists and Sales exports after partial returns and overall discounts.
- Added backup restore normalization for legacy sale rows that predate internal allocation data.
- Added regression coverage for quantity-only receiving, movement history, duplicate backup detection, return order independence, full refunds and report reconciliation.


## MauzoTrack 1.0.11 — Backup & Receive Stock Regression Fix

- Replaced bulk-only media validation with stable per-file snapshots verified by SHA-256 before archive creation.
- Made persistent shared media override legacy release media predictably while retaining upgrade compatibility.
- Prevented an old missing logo/image reference from blocking both manual backup and the automatic safety backup required before restore; unavailable references are recorded in backup metadata.
- Preserved archive integrity verification, exact selling-mode restore, staged media replacement and database/media rollback protection.
- Restored both Single and Wholesale choices when receiving a product configured for Single & Wholesale sales.
- Kept Single Only and Wholesale Only receiving restrictions intact.
- Corrected server and live-preview weighted-average calculations to use the actual receiving unit conversion instead of assuming every combined-product delivery is wholesale.
- Added regression coverage for persistent product-image restore, historical missing-media backup/restore, both combined-product receiving paths, and unsupported-unit rejection.

## MauzoTrack 1.0.10 — Inventory Costing & Stock Integrity

- Added actual delivery purchase cost to Receive Stock for Owner and Manager workflows.
- Added protected weighted-average costing for Single Only, Wholesale Only and Wholesale + Single products.
- Kept Cashier cost values hidden; authorized Cashier receipts reuse the protected current cost without exposing it.
- Made Wholesale + Single receipts wholesale-only while preserving loose-stock corrections and automatic sealed-unit opening during sales.
- Added live current/new average-cost preview and blocks when a delivery would make an existing selling price loss-making.
- Raised minimum-price protection to the new average cost after each successful receipt without silently changing the normal selling price.
- Recorded received unit cost and delivery total in stock movements and exposed them only to non-Cashier users.
- Locked manual purchase-cost edits and unit conversion while stock remains, preserving valuation and movement history.
- Reclassified bulk stock CSV changes as physical-count corrections; deliveries with cost changes must use Receive Stock.
- Fixed product CSV import so `wholesale_only` remains Wholesale Only and Wholesale + Single cost is derived server-side.
- Added a chunked, read-only `mauzotrack:inventory-audit` release gate for stock buckets, conversion and protected pricing.
- Added Phase 2 regression coverage for weighted costs, loss prevention, mode fidelity, edit locks and inventory auditing.

## MauzoTrack 1.0.9 — Release Safety Foundation

- Upgraded the framework dependency to Laravel 12 and added a reproducible `composer.lock` resolved for PHP 8.2 compatibility.
- Removed the setup command that disabled Composer security blocking; Setup now validates the lock file and fails on known dependency advisories.
- Rebuilt backup creation around one repeatable-read database transaction so all table JSON files come from the same database snapshot.
- Added a SHA-256 integrity manifest, ZIP consistency verification and explicit empty-media directory markers.
- Added media-reference verification so a backup stops safely if a referenced logo or product image changes during capture.
- Preserved Single Only, Wholesale Only and Single & Wholesale product modes exactly during restore.
- Added unique backup filenames so simultaneous backups cannot overwrite one another.
- Added staged media replacement and transactional database rollback when restore fails.
- Added regression tests for backup integrity, selling-mode fidelity, tamper rejection and database rollback.
- Removed obsolete test expectations that presented a sale-level discount as a line-item discount.
- Added a self-contained test encryption key and refreshed release/PWA asset identifiers to 1.0.9.

## MauzoTrack 1.0.8 — Focused Theme, Discount & Export Refinement

- Rebuilt dark-mode surface hierarchy across the app canvas, sidebar, sticky top bar, cards, filters, tables, reports, charts and POS with calmer contrast and reduced blue noise.
- Added an explicit `sale_items.direct_discount_amount` truth field for customer/operator display while retaining `discount_amount` for internal line accounting.
- Migrated ambiguous historical discounts conservatively to sale level so prorated overall values are never presented as product discounts.
- Updated Sale Details, invoices and receipts to render item discounts only when direct line-level evidence exists; invoice totals remain Subtotal, Discount and Net Total.
- Added a reusable Download Report menu with Full Report and Current View choices across core list pages and report detail pages.
- Made Current View exports respect active search, date range, category, status, payment and archive filters while Full Report intentionally ignores those filters.
- Added full/current export endpoints for Daily Summary, Monthly Summary, Top Products and Profit & Loss. No data reset is required.

## MauzoTrack 1.0.7 — Production Reliability & Business Truth

- Fixed Expenses filter actions with a responsive two-row layout and removed the redundant Expense Report category breakdown.
- Added viewport-aware floating action menus so last-row and short-table three-dot menus are never clipped.
- Rebuilt the utility header around a globe-only language menu, profile account menu and compact connection-status dot with automatic offline/online toasts.
- Added a live Current Stock → After Receiving preview to Receive Stock for both single and wholesale units.
- Kept overall sale discounts exclusively at sale level; only direct item discounts are stored and shown on product rows, invoices and receipts.
- Simplified invoices to Subtotal, Discount and Net Total, and renamed the destructive remaining-sale action to Cancel Remaining Sale.
- Moved new product images and business logos to persistent shared media storage outside the versioned release folder, retained legacy-media compatibility, added safe media delivery and included shared media in backup/restore.
- Added the required sales schema migration and regression coverage. No data reset is required.

## MauzoTrack 1.0.6 — Pricing Protection & Mobile POS Corrections

- Fixed formatted-money parsing so Add Product review shows real prices instead of `NaN`.
- Added immediate minimum-price validation and blocked values above the normal selling price.
- Derived Wholesale + Single purchase cost per item from sealed-unit cost and conversion, rounded upward to protect margin.
- Changed the mobile POS product explorer to a clean single-column list.
- Made a short mobile live cart hug its content instead of stretching one product through the sheet.
- Rebuilt mobile review rows with explicit Product, Quantity, Subtotal and Actions areas to prevent overlap.
- Added a soft document-action surface to the completed-sale panel.

## MauzoTrack 1.0.5 — POS & Product Flow Refinement

- Rebalanced Current Sale and Review Sale columns for faster transaction scanning.
- Reorganized post-sale actions into a compact primary/document/history hierarchy.
- Simplified Add Product Step 2 into Individual Item or Wholesale Product, with real Wholesale only and Wholesale + Single behavior.
- Made later pricing, stock, alert and review steps react to the selected selling mode.
- Added a compact mobile five-step indicator and same-row POS selling actions.
- Added Upload Image and Take Photo choices to Edit Product with a polished stock-management helper.
- Replaced noisy per-row discount prompts with line-item editing and preserved protected direct price adjustment.
- Refined cart item wording and the mobile cart summary dock.

## MauzoTrack 1.0.4 — Unified Mobile Consistency Refinement

- Standardized Dashboard, Products, Categories, Stock, Sales, Expenses, Users, Stock Movements and all report screens on one compact mobile operational system.
- Stabilized the mobile topbar so the page title, theme, text-size, language and account controls remain aligned without collisions.
- Introduced one progressive-disclosure filter pattern for data-heavy mobile pages, with helper text, in-panel clear/reset controls and compact two-column fields where practical.
- Replaced horizontal metric scrolling with responsive two-column summary grids across Dashboard, Stock, Sales, Expenses and reports.
- Reworked Dashboard stock attention into one tabbed Low Stock / Out of Stock section while preserving separate headline metrics.
- Kept Product prices together on one line and moved stock to a lighter supporting line; clarified Stock mode/conversion hierarchy.
- Made report records explicit and transaction-ready: labeled Sales metrics, visible Top Products profit, clearer Stock detail labels and natural low-stock wording.
- Made the Profit & Loss chart fit phone width without horizontal scrolling or squeezed desktop-sized bars.
- Redesigned Units & Payments around stable view rows, explicit Edit state, Save/Cancel controls and secondary Disable/Archive actions.
- Preserved desktop tables, role permissions, cashier financial privacy, offline synchronization, stock rules and historical record safety.
- Refreshed release metadata, browser assets, PWA cache and supported backup range. No migration or data reset is required.

## MauzoTrack 1.0.1 — Professional Mobile & Checkout Refinement

- Established one Products-derived mobile data system across Products, Stock, Sales, Categories, Users, Expenses, Stock Movement History, report records, sale items, import previews and backups.
- Replaced stacked table-field cards with compact identity-first list cards using one status, one or two decision metrics, one primary action and a three-dot secondary-action menu.
- Standardized mobile page counts, search/filter density, image/initial tiles, status badges, card rhythm and metadata hierarchy while preserving complete desktop tables.
- Converted Daily Summary and Sale Details tables into native mobile record lists, and made report metrics summary-first with supporting detail available on demand.
- Refined the bottom navigation’s central Sale action to remain prominent without making the whole navigation cell visually heavy.
- Refined the desktop POS filter bar so Search, Category and Arrange By remain aligned, equal-height and contained at practical desktop widths.
- Rebuilt Live Cart rows around Product, Quantity and Subtotal, with compact discount controls and clear lower-row Edit/Remove actions.
- Simplified cart metadata to concise item/unit counts and renamed the secondary action to Clear Cart.
- Replaced the overloaded seven-column Review Sale table with a balanced Product, Quantity, Subtotal and Actions layout; unit price, selling unit, carton opening and discount now appear as compact product metadata.
- Tightened the products/payment split and Payment Summary density while preserving sticky cart behavior, discount privacy, offline sales and all stock rules.
- Corrected topbar, sticky cart, Review Sale and Add Product header collisions across desktop and mobile.
- Removed the exact allowed-discount amount from transaction screens, client messages and backend validation responses while retaining enforcement.
- Tightened Payment Summary, Review Sale line items, totals, primary action and secondary edit/cancel actions.
- Added compact inline pricing validation to the Add Product wizard without weakening purchase, selling or minimum-price rules.
- Stabilized the Products desktop action column and simplified phone product cards to essentials plus optional details and one action.
- Reworked Dashboard Recent Sales as a native phone list, balanced mobile metrics and Expense Summary, and tightened Quick Actions.
- Added collapsible mobile Sales filters, denser summary cards and more compact sale records.
- Removed the global bottom navigation during active mobile POS so the cart/checkout dock has one collision-free interaction area.
- Refreshed release, browser and PWA asset versions. No migration or data reset is required.

## MauzoTrack 1.0 — Document Corrections Completion Pass

- Completed the exact five-step Add Product flow, explicit upload/camera image controls, safe minimum-price wording and richer final product review.
- Finished the two-stage POS Review Sale layout with a dedicated selling-unit column, stable two-column catalogue, safer mobile layout and clearer completed-sale hierarchy.
- Replaced unnecessary lightweight Filter buttons with live search/select behavior while preserving explicit View Report actions for date-heavy reports.
- Standardized business timestamps, management row actions, accessibility labels and impact-aware deactivation confirmations.
- Added mobile record cards to wide report details and branded print headers to screen-printable business reports.
- Added report summary blocks and richer empty states to downloadable A4 documents.
- Added a Default Sale Document setting for 58 mm, 80 mm or A4 output.
- Added `CORRECTIONS_AUDIT.md` with requirement-by-requirement completion evidence and verification guidance.
- No migration or data reset is required.

## Hotfix 8.19 — Compact POS Selling Buttons

- Reduced Single and Wholesale action height, vertical padding and text size by a restrained amount.
- Preserved the two-button layout, prices, colors, stock behavior and cart logic while fitting more catalog content on screen.
- Applied a proportionate compact treatment to phone layouts and refreshed browser/PWA asset versions.
- No migration or data reset is required.

## Hotfix 8.18 — Two-stage POS Review & Pay

- Split POS into a focused Add Products stage and a professional Review & Pay stage.
- Kept the live desktop cart sticky and added a full mobile-friendly final review.
- Added edit, quantity, remove, product-discount and selling-unit visibility to final review.
- Added an optional overall TZS sale discount with client and server minimum-price enforcement.
- Allocated overall discounts safely across saved sale items so profit, invoice and return calculations remain consistent.
- Preserved direct quick-add, carton opening, outside products, draft recovery and automatic offline synchronization.
- Refreshed browser/PWA asset versions; no migration or data reset is required.

## Hotfix 8.17 — Quick-add POS & Persistent Cart

- Replaced the mandatory POS configuration step with direct selling-unit actions on every product card.
- Repeated quick-add taps now increase the existing matching cart line, with click locking to prevent accidental duplicates.
- Kept the cart visible beside the catalog on desktop and added a compact mobile cart dock with an expandable checkout sheet.
- Moved advanced quantity, selling price and discount changes into one Cart Item editor while preserving minimum-price and sealed-carton opening safeguards.
- Kept Outside Shop Products simple while allowing their quantity, price and discount to be edited from the cart.
- Increased all five Settings tab labels by exactly 2 px and retained responsive horizontal scrolling on narrow screens.
- Made release-folder Setup reruns preserve the existing Owner profile, shop settings, units and payment-method state instead of reseeding over them.
- Refreshed browser/PWA asset versions; no migration or data reset is required.

## Hotfix 8.16 — Readability Balance

- Increased professional-card amount text by a restrained 1–2 px while preserving single-line currency/value formatting and standard-bold weight.
- Increased Settings tab labels and icons to a comfortable readable size while preserving the weighted five-tab layout.
- Promoted View Sales History from a plain text link to a full blue action aligned with Start New Sale.
- Refreshed browser/PWA asset versions; no migration or data reset is required.

## Hotfix 8.15 — Card Rhythm & Checkout Polish

- Kept `TZS` and each monetary value together on one line across the reusable professional summary cards.
- Reduced monetary typography to standard bold and tuned responsive sizes for uniform dashboard and report cards.
- Compacted Settings tab labels and icons so the five sections remain aligned without overlap.
- Corrected the Profit & Loss chart color collision so only the measured bars are filled, matching the approved chart design.
- Hid Receipt & Invoice completion controls when invoice/receipt settings are disabled; Start New Sale and View Sales History remain available.
- Added regression coverage for the clean P&L bar classes and conditional POS document actions.
- Refreshed browser/PWA asset versions; no migration or data reset is required.

## Hotfix 8.14 — Professional Cards & Profitability Visuals

- Introduced one reusable professional metric-card system across Dashboard, Stock, Expenses and every report summary.
- Replaced heavy side strips with restrained semantic top accents, modern icon tiles, consistent borders, typography and spacing.
- Rebuilt Sales, Expense, Low Stock, Daily, Monthly, Stock and Reports Overview totals with the same responsive visual hierarchy.
- Refined report filter panels and action buttons without changing their data or behavior.
- Upgraded Settings tabs to a modern icon-led segmented navigation while preserving all five existing sections.
- Replaced the Profit & Loss financial flow with a responsive, accessible bar chart using exact live report values, plus a compact net-profit and margin panel.
- Preserved two-column phone summaries, dark mode, print behavior and all existing report calculations.

## Hotfix 8.13 — Final Simplicity & Navigation Polish

- Replaced mixed emoji/symbol navigation with one consistent modern SVG icon family across the desktop sidebar, mobile bottom bar, Reports and Dashboard actions.
- Kept report menu cards in a compact two-column phone grid, with a subtle blue depth layer and clearer report affordances.
- Hid the global pending-sales badge when the queue is empty; it appears automatically only when offline sales need synchronization.
- Reworked management Quick Actions into a true 3×2 desktop / 2×3 phone layout, including a single Manage Stock action containing Receive Stock and Correct Stock.
- Split the POS source choice into Shop Products and Outside Shop Product tabs without clearing the current cart.
- Replaced the old Profit & Loss bar graph with a responsive financial waterfall flow from sales to net profit.
- Standardized every report screen on one **Download Report** action; CSV remains visible only for import templates.

## Hotfix 8.12 — Pre-Multishop UX & Performance Pass

- Shortened first-run setup to shop identity, Owner sign-in details, optional categories and safe defaults.
- Made staff email optional while keeping a verified Owner email mandatory for account recovery.
- Simplified Categories, Reports, Expenses, Settings, stock entry, product pricing protection and POS secondary actions.
- Added one-field product-unit creation with automatic singular/plural labels.
- Kept bulk stock import quantity-only; pricing remains controlled from Product details.
- Added import-side price protection so unsafe selling prices are rejected before products are created.
- Ordered product row locks during checkout to improve simultaneous multi-till sales and reduce repeated queries.
- Reduced POS catalog memory by selecting only fields required for selling, and paginated large category product management.
- Added reusable accessible confirmation, reason and notification surfaces instead of browser-native dialogs.
- Kept offline sales synchronization automatic and removed staff-facing sync-management screens.
- Preserved the immutable checkout price of completed offline sales when catalog minimum prices change before reconnection, preventing valid physical sales from remaining pending forever.
- Added progressive stock pickers, database aggregates, current-page sales aggregates, incremental stock refresh, request cancellation and short-lived navigation prefetching.
- Preserved complete horizontally scrollable report tables on phones while tightening cards and actions elsewhere.
- Added a desktop sidebar identity, compact mobile language/text controls and consistent action colors/tooltips.
- Added duplicate expense submission protection and maintained server-side price/discount safeguards.
- Made setup reruns non-destructive and added one-click Start and Verify scripts for Windows/XAMPP.
- Added regression coverage for the simplified setup, optional staff emails, safe prices and progressive management flows.
- Replaced report-format dropdowns with one consistent **Download Report** action that opens the PDF-ready report; CSV remains visible only for import templates.

## Hotfix 8.10 — Inventory Sold/Status Alignment
- Centered the Sold and Status headers directly over their row values.
- Applied the same alignment on desktop, tablet, and mobile table layouts.
- Refreshed the PWA cache; no database migration is required.

## Hotfix 8.9 — Table Rhythm & Blink Reduction
- Report-style automatic sizing for Products and Inventory tables.
- Even cell padding and compact Sold/Status/Actions columns.
- Stable shell navigation extended to safe content links.
- Live-filter tables no longer collapse while updating.

## Hotfix 8.8 — Table Balance & Login Spacing

- Removed Inventory's Total Single Stock column.
- Rebalanced Products columns and restored the bold Selling Mode heading.
- Added color-coded product action buttons.
- Added reliable login/recovery spacing and refreshed the PWA cache.

## Hotfix 8.7 — Compact Table Refinement

- Removed bold weight from Products Selling Mode values.
- Stacked wholesale and single stock badges in the Products table.
- Stacked single and wholesale sold quantities in Inventory to reduce horizontal width.
- Added extra top spacing before the forgot-password link on login.

# Changelog

## MauzoTrack v0.9.9 hotfix 8.3

- Corrected Products column spacing without reducing row height: Stock is narrower and right-aligned, while Status and Actions are centered and closer.
- Restored comfortable first/last cell padding so the table no longer feels pressed against its card edges.
- Added safe shell navigation for main index pages so sidebar and topbar stay stationary while content changes.
- Kept POS and unsaved forms on normal secure navigation to preserve cart and form safety; no cross-document snapshot transition was reintroduced.

## MauzoTrack v0.9.9 hotfix 8.2

- Rebalanced the Hotfix8 desktop density so Dashboard, sidebar, Products and Stock controls remain comfortably readable.
- Kept six Dashboard totals on one row while restoring practical title and amount sizes.
- Reduced Products row padding and price/stock gaps, then increased table labels and values without reintroducing horizontal overflow.
- Restored normal desktop sizing for Stock Overview actions while retaining a single-row heading.

## MauzoTrack v0.9.9 hotfix 8.1

- Fixed the Dashboard 500 error introduced by the Hotfix8 Expense Summary join/group expression on some MySQL configurations.
- Replaced the fragile cross-table expression with two small, portable aggregate queries while retaining expense-name fallback labels and the top-three limit.

## MauzoTrack v0.9.9 hotfix 8

- Kept all six management Dashboard totals on one compact desktop row while preserving the two-column phone layout.
- Removed the duplicate desktop account card and tightened sidebar spacing so more navigation remains visible.
- Reworked the Products table with compact price blocks, stacked wholesale/single stock and narrower status/action columns.
- Kept the Stock Overview heading and its five actions on one compact desktop row, including at larger text settings.
- Reduced the completed-sale modal to a medium layout and removed unnecessary line-count and sync wording from its summary.
- Kept every report-card title on one desktop line and reduced low-stock/expense Dashboard typography.
- Dashboard fallback expenses now display the expense name instead of “Uncategorized Expenses”; lists remain limited to 3 low-stock items, 3 expense summaries and 5 recent sales.
- Updated the Windows setup BAT to start on `0.0.0.0:8000` and open MauzoTrack automatically in the default browser.

## MauzoTrack v0.9.9 hotfix 7

- Merged Cashier Add Stock and Adjust Stock into one permission while synchronizing the legacy keys for backup compatibility.
- Removed the non-editable Offline Sales Mode labels from Settings; offline protection remains enabled internally.
- Simplified Product Units to one Unit Name field with automatic singular/plural labels.
- Kept Piece/Pieces and Carton/Cartons as fresh defaults, with Item/Items used when no special single unit is selected.
- Moved the desktop account identity and Install MauzoTrack action into the sidebar, while preserving the compact mobile account control.
- Refreshed the PWA asset cache and added regression coverage for the merged permission, unit inflection and simplified shell.

## MauzoTrack v0.9.9 hotfix 6.3

- Removed Chromium cross-document snapshot ghosting that briefly displayed the previous and next pages together.
- Kept normal server navigation visually stable with consistent page geometry and a fresh PWA asset version.

## MauzoTrack v0.9.9 hotfix 6.2

- Fixed the squeezed Owner email-verification/local-testing layout caused by stale PWA CSS and brittle grid sizing.
- Versioned shared assets to prevent old PWA styling from breaking updated screens.

## MauzoTrack v0.9.9 hotfix 6.1

- Added a local-only testing continuation when email uses the log driver, without falsely verifying the Owner email or enabling password recovery.

## MauzoTrack v0.9.9 hotfix 6

- Removed the staff-facing Offline Sync Center and moved retry/reconciliation fully into the background.
- Preserved completed offline sales when catalog products or payment methods change before reconnection.
- Cleared untrusted legacy browser queues so records from before Factory Reset cannot return.
- Limited Dashboard low-stock and expense lists to three entries and recent sales to five.
- Required first-run verification of the Owner email and added secure email password reset from the login page.

## MauzoTrack v0.9.9 hotfix 5

- Rotated offline sync identity after Factory Reset and cleared obsolete browser stock/queues.
- Added conflict retry, discount removal, approval and discard actions plus an Offline Sync Center.
- Replaced full stock downloads with incremental reconciliation and affected-product responses.
- Stopped caching dynamic authenticated pages while preserving the offline POS.
- Optimized navigation summaries, reports, searches and POS totals with SQL aggregation, cache invalidation and supporting indexes.
- Replaced repeated identity polling with immediate cross-tab account notifications.
- Moved Logout to the side menu and made Switch Account respond immediately.

## MauzoTrack v0.9.9 hotfix 2

- Replaced unstyled framework pagination SVGs with compact global Previous/page/Next controls.
- Improved Daily Summary card headings, padding and card sizing on desktop and mobile.
- Added an always-available top-bar install control with native PWA installation when supported and guided mobile installation otherwise.
- Added install-ready 192px and 512px PNG icons and refreshed the PWA cache.
- Rebranded the application, installer, reports, exports, backups, setup and recovery wording to MauzoTrack while retaining legacy backup compatibility.

## v0.9.9 hotfix 1

- Fixed the Sales page Blade parse error caused by tightly nested inline action directives.
- Compacted Product stock cells into a readable one-line sealed-and-loose breakdown with the total below.
- Capitalized username display labels while preserving lowercase usernames for sign-in.
- Hid the POS line-preview Discount row until Apply a discount is enabled.
- Bumped the PWA cache key so browsers receive the corrected CSS, JavaScript and views.

## v0.9.9

- Added unique usernames for every account; username is the short display name across MauzoTrack and users can sign in with username or email.
- Split Owner Settings into General, Sales & Cashier Permissions, Units & Payments, Backup & Recovery, and Danger Zone tabs.
- Simplified Item Bought Elsewhere to name, free-form unit, quantity, purchase cost and selling price only.
- Made Cancel Sale permanently clear the saved POS cart draft after confirmation.
- Removed purchase costs, profits and total stock value from Cashier-facing pages while preserving selling prices and stock quantities.
- Limited authenticated navigation caching to the offline POS so an Owner's cached financial pages cannot appear to a Cashier using the same browser profile.
- Restored the previously approved exact-match Kiswahili translation behavior to prevent partial phrases from being translated awkwardly.
- Changed logout and idle expiry to a session-safe sign-out route so expired CSRF tokens no longer show 419 Page Expired.

## v0.9.8

- Added account-safe tab identity protection so a tab opened for one user cannot silently operate as another user after a shared Chrome session changes.
- Added an Owner setting to allow or block Cashiers from creating catalog products.
- Made discounts opt-in and added per-cart discount editing, removal and a one-click clear-all discount action.
- Redesigned Access Denied, desktop Sale Summary, Stock Sync Review filters and the role-aware mobile bottom navigation.
- Kept English as the fresh-install default and completed embedded/dynamic replacements from the approved Kiswahili Assist glossary.
- Removed prefilled demo login details and added a secure local Owner password-reset command.
- Required the exact Factory Reset safety backup to be downloaded and replaced the fixed phrase with a random eight-character mixed security code.
- Added a visible PWA Install App option for supported desktop/mobile browsers, with iPhone/iPad Add to Home Screen guidance.

## v0.9.7

- Added automatic recreation of Laravel runtime cache, session, compiled-view and log directories after ZIP extraction.
- Prevented product and outside-item sales below purchase cost, including discount checks.
- Improved low-stock priority so available sealed cartons cover low loose-piece stock.
- Added the dashboard Out of Stock card in place of the redundant Total Products card and added per-product Add Stock actions.
- Added separate Owner settings for Cashier stock additions and adjustments.
- Required a freshly downloaded safety backup before System Restore is unlocked.
- Reworked Daily Summary, Sales filters, Sale Details and Settings spacing for desktop and mobile.
- Simplified Stock Sync Review wording, corrected active navigation state and standardized stock unit labels.
- Added consistent action tooltips and horizontal table action rows.

## v0.9.6

- Added first-run setup with Cash, Piece/Pieces, Carton/Cartons and protected Uncategorized defaults only.
- Added separate low-stock alerts for loose pieces and sealed cartons.
- Added per-user English/Kiswahili switching from the main navigation using the approved translation workbook.
- Added configurable idle logout with a one-minute warning.
- Added archive/restore workflows that preserve historical records.
- Added password + safety-backup protected factory reset.
- Added invoice-controlled 58 mm / 80 mm thermal receipt printing and removed WhatsApp sharing.
- Strengthened online idempotency and multi-device offline sync; stock conflicts create reviewable variances instead of rejecting completed physical sales.
- Compacted mobile report cards, action rows and the completed-sale summary.
- Expense creation now records the current business date automatically.

## v0.9.5

- Rebuilt the authenticated phone shell with a compact top bar and role-safe bottom navigation.
- Changed dashboard summaries, quick actions, report menus, and report metrics to compact two-column phone grids.
- Kept complete data tables horizontally scrollable instead of converting them into reduced mobile cards.
- Corrected broad mobile button rules so paired actions remain aligned without overlap or unnecessary full-width stacking.
- Reworked Product Units into compact expandable rows with editing controls shown only when requested.
- Kept two POS products per row on common phone widths, compacted selected-item/cart controls, and added a live mobile cart dock.
- Corrected Daily Summary date/button alignment, renamed Download PDF to Download Summary, and fixed narrow Profit & Loss overflow.
- Updated PWA cache and backup metadata while preserving restore compatibility from v0.9.2 through v0.9.5.

## v0.9.4

- Added same-category duplicate-product suggestions with direct Adjust Stock and Edit Product actions.
- Replaced the Add Product-style edit flow with focused Basic Details, Pricing, and Product Settings choices.
- Added deactivation confirmation, All Products as the default filter, and automatic live search for Products and Inventory.
- Made new numeric fields blank, normalized leading zeros, and enforced positive selling prices.
- Rebuilt POS as a progressive product-selection and item-configuration flow with search, sorting, and ten-item pagination.
- Kept cashiers on POS after checkout and added a structured completion modal with invoice actions, next-sale choices, and seven-day signed WhatsApp invoice links.
- Simplified Backup & Download with Create/Restore choices and restore details shown only when requested.
- Standardized success notifications in English and refreshed responsive/PWA/version metadata.
- Kept v0.9.2 and v0.9.3 backup restore compatibility while creating new backups as v0.9.4.

## v0.9.3

- Added explicit Cashier carton opening: when loose stock is insufficient, POS requests confirmation, converts sealed stock to singles, and records the conversion online or offline.
- Added partial item returns for Owner/Manager with quantity limits, proportional refunds, same-bucket stock restoration, net sale/profit totals, and a permanent return audit trail.
- Added Owner-managed payment methods with add, rename, enable/disable, safe deletion rules, POS integration, expense integration, and historical labels.
- Added validated backup restore for v0.9.2/v0.9.3 ZIPs, path/size/schema checks, automatic pre-restore safety backup, transactional database replacement, and product image recovery.
- Simplified Add Product Step 2 to choose how stock is being added: Single Items or Cartons/Wholesale. Wholesale products include single-sale pricing for cartons opened by staff.
- Kept stock quantities out of Product Edit; Inventory remains the source of truth for additions and adjustments.
- Added Net Profit and exact Cartons/Pieces counts to Sales Report, net-of-return figures across business summaries, and Out of Stock to Low Stock Report.
- Replaced paired export buttons with one Download Report menu and Download CSV/Download PDF choices.
- Polished dashboard, POS calculation layout, report cards, Settings snapshot, backup actions, and responsive layouts.

## v0.9.2

- Split inventory into exact loose-single and sealed-wholesale stock buckets.
- Made POS selling type stock-aware: one available type is selected automatically; both are shown only when both have stock.
- Prevented single sales from silently opening or consuming wholesale stock.
- Replaced separate online/offline checkout buttons with one reliable Complete Sale action.
- Removed catalog-product Outside Purchase fields from POS; purchase cost now appears only in Outside Item Not in Catalog.
- Rebuilt Add Product as a three-step progressive flow: Basic Details, Selling Mode, then relevant Price & Stock fields.
- Made the single unit label optional and defaulted unlabeled products to Item/Items.
- Added safe v0.9.1-to-v0.9.2 stock-bucket migration and exact offline bucket reservations.
- Added cumulative stock validation for carts containing multiple lines of the same product.
- Added concurrency-safe daily invoice numbering and transaction-safe sale voiding.
- Protected product mode/conversion edits that would strand or reinterpret existing stock.
- Corrected low-stock lists so Out of Stock products are not counted as Low Stock.
- Fixed global hidden-element CSS behavior and added responsive no-overlap rules for POS and product forms.
- Expanded backups to include Product Units and sale-number sequences.
- Locked required Offline Sales Mode on and refreshed PWA caches to v0.9.2.

## v0.9.1

- Added Owner-configured Single and Wholesale Product Units.
- Added dynamic singular/plural unit names throughout POS, products, inventory, stock movements, and exports.
- Changed selling modes to Single Only, Wholesale Only, and Single & Wholesale.
- Added progressive Add Product sections and image preview/remove controls.
- Fixed instant POS category filtering and product/category search.
- Defaulted catalog items to Shop Stock and hid Outside Cost unless needed.
- Hid minimum/effective prices from cashier while preserving discount-limit enforcement.
- Added configured-unit support for manual outside items.
- Added real server reachability checks for online/offline POS buttons.
- Added optional invoice controls governed by Settings.
- Added short invoice references using INV-YYMMDD-0001.
- Added unit-name snapshots to sale items for historical invoices.
- Updated stock import and exports for single/wholesale terminology.
- Retained v0.9 reports, imports, backups, and offline-safe sales behavior.

## v0.9

- Added expanded reports, import/export tools, and backup creation/download.


## Hotfix 8.6 — Products & Inventory Table Restore
- Restored the preferred Products table layout with Selling Mode, compact price/stock display and icon actions.
- Product “Added by” now shows only the creator role (Owner, Manager or Cashier).
- Restored separate Wholesale Stock and Single Stock columns in Inventory / Stock.
- Sold quantities stay on one line, for example `7 Bottles` or `2 Cartons + 5 Bottles`.
- Reduced desktop column padding and tuned widths to limit horizontal scrolling.
- Renamed the sidebar PWA action from “Install MauzoTrack” to “Install App”.


## Hotfix 8.11 — Mobile Navigation & Dashboard Actions
- Eliminated the mobile drawer/content blink by closing the drawer before atomic content replacement.
- Kept the application shell persistent and removed cross-fade view transitions.
- Added lightweight navigation progress and faster pointer-down fetching.
- Rebuilt Quick Actions as 3×2 desktop cards and 2×3 mobile cards.
- Renamed the POS manual purchase action to Outside Shop Product and added a distinct visual treatment.
## MauzoTrack 1.0 — Professional Operations Release

- Added a cohesive professional interface layer with consistent actions, accessible focus states, light/dark theme switching and polished feedback.
- Added automatic live filtering and mobile operational cards across Products, Stock, Sales, Expenses, Users, Categories and Movement History.
- Rebuilt Add Product as a guided five-step workflow with a final review and Save & Add Another.
- Added automatic product image optimization and fast thumbnail generation with a safe original-file fallback when GD is unavailable.
- Added optional supplier/source capture when receiving stock and a before/after preview for stock corrections.
- Unified A4 reports and invoices with thermal receipts under configurable business branding, contact details and receipt visibility settings.
- Preserved existing stock buckets, returns, offline POS, role permissions, backup/restore and all established business rules.
