Kommercio · Changelog
Each entry links to the authoritative handshake on disk — the full list of files touched, why, and any caveats. JSON Feed 1.1 at /changelog.json.
Full fix pass on seven bugs from the admin smoke-test report. Product + Customer + Supplier forms no longer silently drop fields to the backend — explicit field mapping, correct type coercion, no more `...form` spread. Migration 0020 adds source/notes/tags to customer + supplier. New TagsInput, PostSaveToast (ISR warning), shared formErrors helper that parses FastAPI `detail` envelopes into human-readable messages. Stock Adjustments New button wired to a working form. PO create builds the required supplier_snapshot jsonb and includes a real supplier picker. PDF export renders on a worker thread with a 10k-row cap; client shows loading state + 90s timeout.
Admin nav restructured to match the Pakk pattern. 9 top tabs (Sales, Inventory, Purchases, Accounting, Web, Files, Reports, Setup, Admin) each open a mega-menu flyout with grouped sub-nav. Every filter, every stage, every preset rendered flat — no popovers, no hidden dropdowns. Kebab `⋮` kept as informational indicator: hover tooltip says the flat list is exhaustive. Top tabs scroll horizontally on narrow viewports instead of truncating. Web-disabled products, missing images, inactive suppliers, expired discounts, failed webhooks, audit errors — all reachable from nav with one click.
New migration 0019 adds allow_backorder + ETA on products and is_backorder + expected_at on order lines. Backend checkout guard: 400 on OOS orders unless the product explicitly allows backorders. New /admin/backorders page with 5-card summary, filters, and one-click Fulfil. Dashboard nudge banner. PDP honours the flag: three-state stock pill, ETA subline, BackOrder JSON-LD, disabled button when not purchasable. Product form gets a Backorders section.
New first-party `homepage-flagship` builder template, recommended for trade merchants. 9 sections: announcement bar, hero with trade CTA, 4-icon value-prop strip, featured categories (category-first beats product-first for SMB), bestsellers carousel, editorial split, review highlights, new arrivals, payment trust badges. Sits above homepage-commerce in the picker as the default for new tenants.
Site-wide social-share metadata: OG and Twitter summary_large_image cards cascade to every marketing page. 14 pure-function unit tests cover the trade-discount logic unified in rounds 19/21. 12 live-stack smoke tests cover the PDP slug routing added in round 18 — malformed slugs, non-existent refs, path traversal attempts.
Added /platform/system/health with the shape the /status dots were actually expecting (the older /system endpoint is Core-facing and stayed unchanged). Surfaced the trade/pricing-scheme discount as a visible line item in the cart so signed-in wholesale shoppers see exactly what they save. Refreshed the root README to match the current state of the repo.
Global search now covers purchase orders, estimates, and batches. Added /privacy, /terms, /security, /cookies, /gdpr redirects to /legal/*, plus /docs → /api/v1/docs and /pricing → apex anchor. Revenue/Orders dashboard cards carry honest tooltips (gross, inc tax, not net of card fees). The 404 page no longer dead-ends — it offers 4 primary jumps and 10 section chips.
Unified the trade discount: /me/tier and checkout now both read pricing_scheme.relative_adjustment, so what the PDP badge claims is what the cart charges. Shipped /blog, /integrations, /careers, /partners marketing stubs so the apex footer links all resolve. Added this changelog + JSON feed. Seeded Organization and WebSite JSON-LD on the canonical host for richer search snippets.
Six /features/* pages and /about filled in. PDP backend accepts both UUID and slug so pretty URLs work. Dropped the stale Spring-sale countdown from the default homepage template. Added a dashboard banner flagging products without images and a /products/missing-images endpoint behind it.
Hardened /sign-up to read plan/trial/src query params and stamp Clerk metadata. Built /demo (form + Calendly-ready), /status (polling dot grid), and the five-page /legal/* pack. Added a rate-limited /platform/contact endpoint. Published a full apex wiring patch for Daniel.
Shipped the cross-entity global search palette (⌘K / Ctrl+K / /). Daily audit prune job with 365-day retention. Bulk-brand picker in the products bar. Cloudflare R2 offsite backup sync with path-style addressing configured and verified.
Seven /reports/*.pdf endpoints behind CSV+PDF buttons on each report card. Bulk-edit categories across selected products. New /admin/audit-log with facet filters, severity pills, and clickable subject links. Vim-style keyboard shortcuts at the admin root.
CSV report exports across the admin. Bulk set_field action on products. Ticket email notifications. AdminThemeBridge publishes CSS vars so tenant accent colour cascades through admin chrome.
contenteditable-based rich text editor (no external dep). Migration 0018 adds webhook_subscription. Drag-and-drop file uploads in the admin. Bulk rename options across variants.
Purchase order stage tabs. Assembly build production flow that decrements component stock. Pricing scheme CRUD for tier discounts. Variant and related-product group management.
Supplier category picker. Expenses CRUD. Websites settings. Batch inventory lenses with FEFO. Estimate tabs. Bank reconciliations.
25 new admin pages and 15 API routers in a single overnight push — trade essentials (leads, wholesale customers, credit management), content (posts, forms, files), reports hub, VAT returns, and ops polish.
One-shot homepage generator: five questions, logo upload with brand-colour extraction, eight aesthetic blueprints, deterministic palette, two-phase Claude pipeline. Full themed homepage in ~45–60s.
Shopper-facing order detail page with noindex and ownership guards. Return request flow. Admin picking list wire-up. Weekly PSI audit. Cloudflare prep for custom domains.
/admin/analytics dashboard with KPIs, daily bar chart, top 10. Fulfilment state machine (PAID → PICKING → PACKED → SHIPPED → DELIVERED). CSV import with dry-run preview. Low-stock email digest. B2B tier badge. Cart + wishlist count cookies for zero-cost badge rendering.