1.7.0: shipping rule "Only" reserves a method, "Show" no longer does

Since 1.6.0 "Show" both whitelisted a method for its group and hid it from
everybody else. A group shown ordinary methods next to a free one therefore
took the ordinary ones away from every stranger, who was left with only the
free method. "Only" now carries the reservation; "Show" is just the group's
whitelist. Existing show rules are converted to only once on update so the
checkout does not change until the shop chooses.

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
kristianwind
2026-10-02 12:28:45 +02:00
co-authored by Claude Code
parent 5875638f2c
commit 0793a1ee82
11 changed files with 129 additions and 37 deletions
+9 -7
View File
@@ -53,13 +53,15 @@ A fragment pattern (`john`) matches `john@anywhere.com` and also
### Shipping
Per group, per shipping method, one of **show** or **hide**.
Per group, per shipping method, one of **show**, **only** or **hide**.
The consequence worth understanding before using this tab: a method any group
is told to **show** becomes reserved. Customers who match no group stop seeing
it everywhere on the shop, not only inside that group. That is the point — it
is how "free delivery for approved addresses" stays unavailable to everybody
else — but it means adding one show rule changes what strangers see.
**Show** offers the method to the group (and, once any method is shown, the
group is offered only the methods marked show or only). Nobody else is
affected. **Only** does the same and also *reserves* the method: customers
outside the group stop seeing it everywhere on the shop. That is how "free
delivery for approved addresses" stays unavailable to everybody else — set the
free methods to **only** and the ordinary ones (parcel shops, pickup) to
**show**. Adding one only rule changes what strangers see.
## How to tell it is working
@@ -81,7 +83,7 @@ Not "no errors". A specific number on a specific screen:
4. **Shipping, if you set any rules.** With rules in place, compare the
checkout as a matching customer and in a private window as a stranger. The
reserved method must be absent for the stranger. Both should show at least
method marked only must be absent for the stranger. Both should show at least
one method; if the stranger sees *everything*, the rules emptied the list
and the never-leave-them-stranded fallback returned all of them.