Releases
Changelog
What shipped in DockingWare, one entry per production release. Bodies are the GitHub Release notes, dated by the git tag.
-
v2.29.0
v2.29.0: sales order pages, stricter documents, and a password rule
The sales order list shows 100 orders at a time. Documents accept JPEG, PNG, GIF, WEBP, and PDF. A new password needs 8 characters, an uppercase letter, and a number.
-
v2.28.0
v2.28.0: warehouse on the order, formula prices, and QuickBooks payments
A sales order is filled from one warehouse. Prices can be a percent off the catalog or a percent on cost. QuickBooks payments update the invoice balance.
-
v2.27.0
v2.27.0: stock per warehouse, document numbers, and QuickBooks nets
Stock is kept per warehouse, with existing rows on Main. Blank sales orders, purchase orders, and pallets get a number when you save. A QuickBooks-mode invoice sends the net line amount.
-
v2.26.0
v2.26.0: sell prices, invoice email, and a Main warehouse
A sales order line can take a customer price, a price list, or a pack price. A posted customer invoice can be emailed as a PDF, with Reply-To set to the company billing email. Each company has a Main warehouse.
-
v2.25.0
v2.25.0: discounts and estimated tax on the order, and a parked channel row
A draft wholesale order can store a discount and an estimated sales tax. A channel listing or order that fails five times in a row is parked, and Sync Health can unpark it.
-
v2.24.0
v2.24.0: a shipped order can be invoiced, a pick is not yet a shipment
A shipped wholesale order can open a draft customer invoice from its header. An ecommerce pick is recorded as picked and not yet shipped, and on-hand stock waits for the shipment.
-
v2.23.0
v2.23.0: a dozen has a price, a reverse leaves nothing behind, one ship is one row
Seventy-four commits. A dozen is sold as a dozen, with the price in the same unit. An opening-inventory reverse moves the ledger as much as the stock. One shipped unit writes one SHIP row, in the same transaction that moves it.
-
v2.22.0
v2.22.0 — the door closes, the catalog fits, the nine have a cause
Public registration is closed. An opening inventory file of a real catalog runs in batches, with a progress bar and a named putaway failure. The nine unexplained products have a cause, and they are not fixed.
-
v2.21.0
v2.21.0 — the shortage gets a name, the pick gets a witness
Fourteen sprints, four additive migrations. A line that cannot be found is closed short with a reason instead of hanging, the desktop pick is verified by scan, and the reconciliation number stops counting noise as a discrepancy.
-
v2.20.0
v2.20.0 — the ledger gets a guard, the error points at the field
Nine sprints, zero migrations. Two ledger holes found by audit and closed before any customer could find them; a registry that makes the third one impossible to add silently.
-
v2.19.0
v2.19.0 — the three rescued items, the two orphans, orders that survive the tab
Six sprints, two additive migrations, every one PO-smoked before merge.
-
v2.18.0
v2.18.0 — The queue empties itself
New - **Print the SKU itself and its FNSKUs** (SKU-LABEL-01): the Print Unit Labels dialog always offers the SKU row — the "no active UOM barcodes" refusal is gone for good.
-
v2.16.0
v2.16.0 — Three sprints: over-receipt recorded, labels that scan back, credit and aging
New - **Over-receipt on Removals is recorded, never refused** (MP-RETURNS-02): a completed Removal still classifies; extra units post with witness, `CHANNEL_RETURN_OVER_RECEIPT` becomes a derived n…
-
v2.17.0
v2.17.0 — Sign in with Google, the app wears its mark
New - **Sign in with Google** (AUTH-GOOGLE-01): OIDC authorization-code flow, ID token verified server-side through Google's official library (JWKS, `aud`, `iss`, `exp`).
-
v2.15.0
v2.15.0 — Channel returns and the honest ATP strip
New - **Channel Returns** (Warehouse Operations): receive marketplace removals and channel customer returns that have no local sales order.
-
v2.13.0
v2.13.0 — The product form breathes
Minor release. No migrations. ## Operator-facing **The product form got a hierarchy.** Identity is one clean card (SKU, item code, and the lifecycle status chip). Supplier codes and scan aliases li…
-
v2.14.0
v2.14.0 — The desktop pack verifies
Minor release. One additive migration (nullable witness columns). ## Operator-facing **A desktop packer can no longer close a B2B pack blind.** Every line must be scanned (exact match
-
v2.14.1
v2.14.1 — The app answers on its own subdomain
Fixed - **CORS for the domain split** (#155): the backend now accepts requests from `app.dockingware.com`.
-
v2.10.0
v2.10.0 — Channel reserve: the last N pieces belong to B2B
Minor release. One additive migration (nullable columns). ## Operator-facing **Per-product channel reserve.** Set "hold back N pieces" and/or "publish only X% " on a product and every sales channel…
-
v2.11.0
v2.11.0 — Alternate barcodes: the relabeled return scans home
Minor release. One additive migration (new empty table). ## Operator-facing **Alternate barcodes per product.** Relabeled units
-
v2.11.1
v2.11.1 — alias reactivation fixed
Scope Patch: SKU-BARCODE-01-HF1 (#138) — alias deactivate → reactivate no longer self-collides; the include-self UPC seal is untouched (failability-proven).
-
v2.12.0
v2.12.0 — Product lifecycle enforced
Minor release. One additive migration (backfill runs before enforcement starts). ## Operator-facing **DRAFT, ACTIVE, and DISCONTINUED now mean something.** A DRAFT product cannot be sold
-
v2.9.1
v2.9.1 — Four small debts, one sweep
Patch release. No migrations. - The mapping checkbox that read "On" now reads **Assemble fallback** with a tooltip
-
v2.9.0
v2.9.0 — Physical ledger view, assemble cascade (off), packaging stock
Minor release. Two additive migrations (new empty tables). ## Operator-facing - **Movement views show physical rows by default.** Reservations and pipeline rows sit behind a "Show reservations" tog…
-
v2.8.1
v2.8.1 — The badge measures connectivity
Patch release. Deployed to `production` at `2d6b13bf` → superseded by this tag's head. ## Operator-facing **The dashboard hero badge now reports connectivity, not operations.** Green LIVE (internet…
-
v2.7.0
v2.7.0 — Bundles: sell the pack, stock the parts
v2.7.0 — Bundles: sell the pack, stock the parts - KIT-01: Bundle engine (ecommerce v1) — a kit is a catalog/sales entity that is NEVER stocked.
-
v2.8.0
v2.8.0 — Named errors where the operator looks + an honest /health
Frontend-only release.
-
v2.6.0
v2.6.0 — The packing bench buys its own labels
v2.6.0 — The packing bench buys its own labels - C1: Parcel labels at the existing DTC ship gate — rates, buy, void and re-buy, label document, tracking stamped automatically onto the sales order a…
-
v2.4.0
v2.4.0 — The split floor: station console + pick-to-tote
v2.4.0 — The split floor: station console + pick-to-tote - STATION-02: Desktop station console — keyboard-first pack bench over the same STATION-01 services; L17 golden proves console ledger is byt…
-
v2.5.0
v2.5.0 — Observability: the system screams first (first-client gate OPEN)
v2.5.0 — Observability: the system screams first The release that opens the first-client gate.
-
v2.5.1
v2.5.1 — /health reports current Prisma state
Patch: /health reports current Prisma state — a superseded July rolled-back row no longer degrades the probe (prod was reporting degraded while healthy).
-
v2.3.0
v2.3.0 — Ola S complete: the channel watches itself
v2.3.0 — Ola S complete: the channel watches itself - S4: Channel hardening — webhook auto-verification with self-repair, silence detector with named alerts + auto-resolve on proof of life, order r…
-
v2.2.0
v2.2.0 — bump version to 2.2.0
Rollback plan: re-deploy v2.1.0 (all migrations in range are additive — safe).
-
v2.1.0
v2.1.0 — Channel contract grows: inventory out, POs grow up
v2.1.0 — Channel contract grows: inventory out, POs grow up - S2: Outbound inventory sync — ATP publicado a Shopify por evento + reconciliación (#46) - PO-ENRICH-01: Payment terms, direcciones estr…
-
v2.0.0
v2.0.0 — First formal release
DockingWare v2.0.0 First formally tagged release.