@mohasinac/appkit 4.12.1 → 4.12.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -899,6 +899,12 @@ const rawTesterChecklistItems = [
899
899
  description: "Repeat on COD, UPI-manual and Razorpay. Acceptance test for the whole pricing change — if any two of those four disagree, something is reading a different source than it charges from.",
900
900
  href: "/checkout",
901
901
  },
902
+ {
903
+ key: "addons-follow-cart-not-checkout-request",
904
+ label: "Add-on fees are charged strictly according to the per-store checkboxes on the cart page — leaving the cart and returning, or re-entering checkout, never adds or drops an add-on on its own",
905
+ description: "Hardened 2026-08-21. The add-on booleans used to be accepted in the checkout request body as well as being stored per-store on the cart, so two sources could disagree about what the buyer had actually selected — and the cart's selection is the only one the buyer ever saw. The request body no longer carries them at all. To test: tick gift wrap for seller A only, go to checkout and note the Total, press Back to the cart, then return to checkout — the same single gift-wrap fee must still be there, for seller A only, with an unchanged Total. Repeat having ticked nothing and confirm no add-on line ever appears.",
906
+ href: "/cart",
907
+ },
902
908
  ],
903
909
  },
904
910
  {
@@ -2470,8 +2476,8 @@ const rawTesterChecklistItems = [
2470
2476
  },
2471
2477
  {
2472
2478
  key: "admin-decided-order-no-live-buttons",
2473
- label: "An order already rejected as fraud, or already sent back for re-upload, shows that state instead of offering live Verify / Reject buttons again",
2474
- description: "Previously only the payment status was consulted, so a decided order still rendered as a fresh \"please verify\" and could be actioned a second time. Reject one order as fraud, reopen it, and confirm it now reads as rejected with no action buttons.",
2479
+ label: "An order already rejected as fraud, or already sent back for re-upload, shows that state instead of offering live Verify / Reject buttons again — on BOTH the row drawer and the full /admin/orders/[id]/view page",
2480
+ description: "Previously only the payment status was consulted, so a decided order still rendered as a fresh \"please verify\" and could be actioned a second time. Reject one order as fraud, reopen it, and confirm it now reads as rejected with no action buttons. Check both surfaces separately: as of 2026-08-21 the full-page variant did not receive paymentReviewOutcome at all, so it kept offering live Verify/Reject on an already-decided order even once the drawer had been fixed — a double-action risk visible only if you open the standalone page rather than the drawer.",
2475
2481
  href: "/admin/orders",
2476
2482
  },
2477
2483
  {
@@ -136,7 +136,16 @@ export async function applySieveToFirestore(params) {
136
136
  const merged = { ...SIEVE_DEFAULTS, ...rest };
137
137
  const effective = withAliasesExpanded(model, aliases);
138
138
  const processor = new SieveProcessorBase({
139
- adapter: createFirebaseAdapter(),
139
+ // MUST be the enhanced adapter, not the stock one. This is the path
140
+ // `BaseRepository.sieveQuery` delegates to, so it is what ProductRepository
141
+ // and most other repositories actually run — only `FirebaseSieveRepository`
142
+ // used the enhanced adapter, and nothing extends that. With the stock
143
+ // adapter a same-field OR group (`listingType==art|stickers`, i.e. every
144
+ // multi-select facet in the app) became a `whereOr` call the Admin SDK does
145
+ // not implement; `throwExceptions: false` then swallowed it and the clause
146
+ // vanished, returning the ENTIRE collection instead of the selected subset.
147
+ // See __tests__/sieve-or-group.test.ts.
148
+ adapter: createEnhancedFirebaseAdapter(),
140
149
  autoLoadConfig: false,
141
150
  options: merged,
142
151
  fields,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mohasinac/appkit",
3
- "version": "4.12.1",
3
+ "version": "4.12.3",
4
4
  "license": "MIT",
5
5
  "publishConfig": {
6
6
  "access": "public"