Some checks failed
CI / Lint, Unit & Integration Tests (push) Has been cancelled
Multi-pin pickup selection (study §3.4) — previously a standalone unused endpoint + TODO comments: - app/services/pickup-locations.server.ts: pure filterPickupLocationIds + I/O resolvePickupLocations (active + has a PICKUP slot template + ProductRule allowedLocationIds + inventory exclusion). - resolveAvailabilityRequest returns pickupLocations[] on method=PICKUP and defaults the active location to the first eligible pickup point. - apps.scheduling.locations.tsx refactored onto the shared resolver (was a second copy of the logic). - Storefront widget: pickup-location chooser (name + address, optional multi-pin Google map) when >1 eligible point and none block-configured; picking one re-requests availability for that location. New styles + widget.choose_pickup_location locale (en + fr). - Checkout extension Checkout.jsx: same chooser before the date list. - tests/unit/pickup-locations.test.ts (5 cases); suite 161 green. checkout-datetime follow-up fixes from the 808a3b7 review: - typescript devDep ^7.0.2 -> ^5.6.3 (there is no typescript@7 on npm). - Deleted dead shopify.d.ts (Preact-global shim, unused after the React rewrite) and dropped it from tsconfig include. Also stages the CLI-written `uid` lines in the checkout-datetime and payment-customization extension tomls. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
5.1 KiB
5.1 KiB
Handover Status Summary
Based on the original HANDOVER.md and the recent workstreams, here is the current status of the project's action items.
✅ Completed Items
Known Bugs / Open Issues
- B3 | Polaris uncontrolled inputs:
- Status: Completed (
f8dd5b2). Weekday/method/location/zone<Select>s in the Slots, Blackout dates and Rates forms were inert (novalue/onChange) — now controlled. Full admin-form audit done.
- Status: Completed (
- B4 |
checkout-datetimecheckJs& type errors:- Status: Completed (
808a3b7+ follow-up). Rewritten to the React pattern (@shopify/ui-extensions-react/checkout,reactExtension, hooks).tsconfigcheckJs:true,moduleResolution:"bundler". - Follow-up fixes applied:
typescriptdevDep corrected^7.0.2→^5.6.3(TS 7 doesn't exist on npm); deadshopify.d.ts(Preact-global shim, unused after the rewrite) deleted and dropped fromtsconfiginclude. - Still pending: manual QA on a Plus dev store; confirm
OrderStatus.jsx'scustomer-account.order-status.block.rendertarget against current Shopify docs (currently@ts-ignore'd).
- Status: Completed (
- B9 | CI
typecheck:checkout:- Status: Should pass now — extension has
package.json+tsconfig+ realsrc/. Confirm on the first CI run; it needsnpm cito install@shopify/ui-extensions-react,react,typescript.
- Status: Should pass now — extension has
Next-Step Implementation
- P1.1 | Reconcile
checkout-datetimewith live types (B4):- Status: Completed (code). Manual QA on Plus still pending.
- P2.4 | Multi-pin pickup-location selection (study §3.4):
- Status: Completed, end-to-end.
- Backend: new pure
filterPickupLocationIds+ I/OresolvePickupLocationsinapp/services/pickup-locations.server.ts(active + has a PICKUP slot template + ProductRuleallowedLocationIds+ inventory exclusion).resolveAvailabilityRequestnow returnspickupLocations[]onmethod=PICKUPresponses and defaults the active location to the first eligible pickup point.app/routes/apps.scheduling.locations.tsxrefactored to call the shared resolver (was a duplicate implementation). - Storefront widget: renders a pickup-location chooser (name + address, optional multi-pin Google map) when >1 eligible point and none is block-configured; picking one re-requests availability for that location. New
dd-widget__pickup-locationsstyles +widget.choose_pickup_locationlocale (en + fr). - Checkout extension: same chooser in
Checkout.jsxbefore the date list. - Tests:
tests/unit/pickup-locations.test.ts(5 cases). Full suite 161 green.
⏳ Pending Items
1. Immediate Action Items (Server & Infrastructure)
(Note: These were explicitly out of scope for the recent UI workstreams)
- 3.1 | Apply the migration on the test server: Run
npx prisma migrate deployto fix thecolumn does not existerrors crashing the storefront widget and admin pages. - 3.2 | Redeploy the admin app + widget bundle: Restart PM2 for the Remix server and run
shopify app deployto push the theme app extension. - 3.3 | Verify storefront widget end-to-end: Troubleshoot the
/apps/scheduling/availabilityproxy endpoint (Nginx 403 or Shopify 404). - 3.4 | Test-mode toggles: Remove
UNLOCK_ALL_FEATURESfrom.envbefore public launch.
2. Known Bugs / Open Issues
- B1 | Storefront widget "Couldn't load available dates": Blocked by 3.1 and 3.3 (server-side). Not code.
- B2 | App-proxy 403 Forbidden / nginx: Production server's nginx proxy config. Not code.
- B5 |
payment-customizationFunction schema: Runnpm --prefix extensions/payment-customization run typegen, thenshopify app deploy. - B6 | GDPR compliance webhooks: Re-enable in
shopify.app.tomlonce Protected Customer Data Access is granted. Blocked (Shopify approval). - B7 |
read_customersscope: Add back with B6, when returning-customer recognition is built. Blocked. - B8 | Checkout snapshot stale horizon: Periodic worker sweep — needs offline-session storage first so the worker can get an Admin client per shop.
3. Next-Step Implementation (P1 - P4)
- P1.2 | Deploy + smoke
payment-customization: Test on a dev store with a manual COD gateway. - P1.3 | Rates: Product decision required — display-only (current:
delivery-customizationrenames the option with a price label) vs. realdelivery-customizationpricing / carrier integration. Not startable without that call. - P2.5 | Returning-customer recognition: Blocked on B6/B7.
- P2.6 | Cart Transform / deposits: v2 milestone — draft orders +
cart-transformFunction. Its own task. - P3 | BfS / Launch readiness: a11y + perf passes (best against the live store — deferred per earlier direction), empty/loading states, deploy-pipeline automation (fold in
prisma migrate deploy), removeUNLOCK_ALL_FEATURES. - P4 | v1.x fast-follow: Waitlists, self-service reschedule portal (order-status + magic link), email/SMS reminders (BullMQ + a
Notificationmodel), printable run sheets, holiday auto-import. Each is its own milestone (IMPLEMENTATION_PLAN.mdPhase 9).