Bump version to 0.29.2
This commit is contained in:
@@ -4,6 +4,77 @@ All notable changes to this project will be documented in this file.
|
||||
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
||||
|
||||
## [0.29.2] - 2026-09-30
|
||||
### Added
|
||||
- `core.display_timezone` (env `DISPLAY_TIMEZONE`, default `Europe/Athens`):
|
||||
the timezone times are shown in, while they stay stored in the app
|
||||
timezone (UTC). Set as Filament's display timezone, so every admin date
|
||||
column, entry and picker shows local time (and pickers save UTC), and
|
||||
available on dates as `->inDisplayTimezone()` for hand-formatted ones —
|
||||
storefront pages and emails should use it (3dealer's My orders, tracking
|
||||
timeline and order-placed email do).
|
||||
|
||||
### Fixed
|
||||
- Every time in the admin was shown in UTC — 3 hours behind Greek time in
|
||||
summer, 2 in winter — including Carrier Vouchers, Pending Vouchers, the
|
||||
order page's shipments and the order Timeline (whose view core now
|
||||
overrides, `resources/views/lunarpanel`, since Lunar formats its times by
|
||||
hand). Manual tracking updates entered in local time were saved as if
|
||||
they were UTC; they're now converted.
|
||||
- ACS tracking times (Greek time, no offset) were stored as if they were
|
||||
UTC; they're now read as Greek time, like ELTA's.
|
||||
- ELTA multi-parcel sends: Create Shipment with several packages now
|
||||
creates one shipment per parcel straight away (the extra parcels get
|
||||
their voucher numbers when the main voucher is issued, on first print),
|
||||
so the order shows every parcel from the start. Labels follow ELTA's own
|
||||
client: printing the main voucher prints every parcel in one PDF, each
|
||||
parcel is numbered `00k/00n` (previously every label said `001/00n`),
|
||||
the extra parcels show "ΠΟΛΛΑΠΛΗ ΑΠΟΣΤΟΛΗ - MASTER : <main voucher>" and
|
||||
only the COD warning (the amount is collected on the main voucher), and
|
||||
on A4 they use ELTA's separate single-parcel layout (`label-a4-child`).
|
||||
An extra parcel can't be cancelled on its own — ELTA cancels the whole
|
||||
voucher, so cancelling the main parcel cancels them all.
|
||||
- The order page's shipments list now updates right after Create Shipment
|
||||
and Add manual voucher, instead of only on the next page load.
|
||||
- Pending Vouchers kept ELTA vouchers forever (ELTA has no manifest step,
|
||||
which is what took ACS vouchers off the list). A voucher now leaves once
|
||||
its carrier's hand-over step is done: printed for carriers that issue on
|
||||
print (ELTA), on a manifest for carriers that batch (ACS).
|
||||
- "Issued Manifests" is hidden from the menu while no registered carrier
|
||||
uses manifests (ACS is currently off); the page and past manifests stay
|
||||
reachable.
|
||||
- Carrier Vouchers: the list shows each voucher's **Source** again, colored
|
||||
per source (created here green, manual voucher orange, manual carrier
|
||||
grey, from carrier blue), same on the view page. "Reference sent to the
|
||||
carrier" was only filled for vouchers the carrier reported; shipments now
|
||||
save the reference they send (ELTA `pel_ref_no`, ACS `Reference_Key1`,
|
||||
Box Now `orderNumber`), and older ones show what was sent (the order
|
||||
reference, or `{reference}-{id}` for Box Now).
|
||||
- Multi-parcel sends show which voucher is the main one and which parcels
|
||||
belong to it — "Main voucher · parcel 1 of 3", "Parcel 2 of 3 · of
|
||||
NZ…GR" — on the order page, Pending Vouchers and Carrier Vouchers (list
|
||||
and view), via `Shipment::parcelDescription()`.
|
||||
- Shipping options are now resolved by **place, from the inside out**:
|
||||
postcode → state → country → unrestricted, and the first place with
|
||||
usable rates is the whole answer — outer places are not considered. So a
|
||||
postcode zone offering only Box Now at €4 means customers in that
|
||||
postcode get only Box Now at €4, even if an unrestricted zone offers Box
|
||||
Now and ACS at €8. Postcode zones go from the most specific match to the
|
||||
least (an exact postcode beats a `45*` prefix). Previously Lunar mixed
|
||||
every matching zone together and kept whichever rate per method it met
|
||||
first, so the price depended on the order zones were created in.
|
||||
A place whose rates are all unusable (disabled, outside the customer
|
||||
group or schedule, stock, weight limits, or an unregistered driver) falls
|
||||
through to the next one. It finds every zone containing the address in
|
||||
one query and checks customer groups once for all methods, so it runs a
|
||||
fixed ~10 queries — no more than Lunar's own resolver, which grew with
|
||||
each rate. `Modules\Core\Shipping\Support\PlaceShippingRateResolver`
|
||||
replaces 0.29.1's `RegisteredDriverRateResolver` (its unregistered-driver
|
||||
check is part of it).
|
||||
Exclusion lists don't make a place fall through: an excluded product
|
||||
means "can't be shipped there", so a cart holding one gets that place's
|
||||
remaining options — or none — never an outer place's rule.
|
||||
|
||||
## [0.29.1] - 2026-09-30
|
||||
### Fixed
|
||||
- Checkout crashed ("Driver [acs] not supported", a 500) when a shipping
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
"name": "boboko/core",
|
||||
"description": "Core module — authentication and shared panel behaviour",
|
||||
"type": "library",
|
||||
"version": "0.29.1",
|
||||
"version": "0.29.2",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Modules\\Core\\": "src/"
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@boboko/core",
|
||||
"version": "0.29.1",
|
||||
"version": "0.29.2",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"description": "Portable Stimulus controllers and styles for boboko-core's cart + checkout module. Installed as a real npm dependency (file:../boboko-core in dev, a tagged git install in prod) so a consuming app's `npm install` resolves this package's own dependencies (leaflet, @hotwired/stimulus) transitively, the same way `composer update boboko/*` does for PHP. See CONTRIBUTE.md's \"JS/CSS: a real npm package\" section.",
|
||||
|
||||
Reference in New Issue
Block a user