Skip to content

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 27 Jul 16:26
v0.4.0
9a8bf72

0.4.0 (2026-07-27)

Features

  • api/auth: theme-aware transactional email layout derived from app design tokens (#1750) (135605c), closes #1748
  • auth: allow login with username or email (#1730) (d20e998)
  • auth: capture analytics consent at registration, drop post-login prompt (#1744) (42a161b)
  • auth: self-service analytics consent toggle on /settings (#1884) (49a5ae9)
  • dpd: add ConnectionTester so 'Test connection' runs a real auth probe (#1732) (#1733) (b2342e8)
  • erli: fulfillment routing for Erli sources + routing-split bar (#1740) (6224d18), closes #1738 #1739
  • erli: implement OfferReader so listing details render for Erli (#1735) (#1736) (2eee690)
  • infakt: webhook config modal - set signing secret + status (#1770) (#1773) (aebc7cb)
  • listings: per-variant bulk offer config (#1741) (#1757) (c2fc423)
  • listings: reconcile stale terminal offer status against live Allegro publication (#1760) (#1762) (35cfbee)
  • listings: unify offer creation via multi-select picker + bulk wizard (#1754) (#1774) (5fa88bb)
  • listings: unify publish flow + WooCommerce field completeness (epic #1838) (#1870) (65cb8a5)
  • orders: mapping-aware delivery + non-Allegro ship-by (epic #1776) (#1782) (a277764)
  • products: polish product detail page — full-width variant table, rich listing drawer, mobile layout (#1753) (5dde2d4)
  • products: product-detail round-2 — rich variant drawer, single/multi states, master currency & attributes (#1756) (8764423)
  • web/data-table: frozen columns, pinned bulk-action bar, viewport-pinned accordion drawer (#1758) (6e825bc)
  • web/mappings: connection-pair strip, resolved labels, responsive layout (#1784) (#1809) (a318ffd)

Bug Fixes

  • api/auth: add OL_COOKIE_DOMAIN for split-subdomain deploys (#1725) (#1726) (1dcf363)
  • api/integration-tests: disable four core scheduler tasks in the harness (#1889) (7281a10), closes #1888
  • content: allow viewer role read-only access to content tab (#1880) (3c558eb)
  • dpd: carrier population, rejection diagnosability, sender-postcode hint (#1775, #1777, #1778) (#1781) (95bca6d)
  • erli: reconcile frozen-field protection to the verified frozen{} object shape (#1759) (f3a4dd2)
  • inpost: flatten nested ShipX field-errors so target_point rejections classify correctly (#1816) (bafe267)
  • invoicing: thread buyer e-mail to Infakt so send-by-email stops 422ing (#1811) (e824f68)
  • mailer: validate fromAddress shape and reject CRLF header injection (#1771) (dfa897f), closes #1765
  • web/connections: generalize escape-hatch banner copy on advanced setup page (#1746) (8792da9), closes #1745
  • web/connections: WooCommerce setup wizard with capability selection (#1727) (#1731) (4dd3848)
  • web/demo: mask passwords only in PostHog session recordings (#1877) (#1878) (7e23bfa)
  • web/mailer-settings: accept display-name form in From address field (#1761) (7469e3c)
  • web/orders: match products table header alignment and density (#1751) (9a23b17), closes #1747
  • web/orders: surface ShipX per-field validation details in the label-error Alert (#1812) (328a17d)
  • worker: cap master.product.syncAll default page size at 100 (#1723) (#1724) (62ed30b)