Release v1.5.9 — storefront fixes + POS parked-cart cleanup#4
Merged
Conversation
Fixes: - Storefront add-to-cart 500 (showNotification ReferenceError from frontend-utils.js delegating to admin-only AdminModal.toast). - Guest wishlist 401 (WishlistViewSet.product_ids now AllowAny with empty short-circuit for unauthenticated). - Admin help search 500 (unquoted numeric YAML in help frontmatter crashed keyword iteration; str-coerced at read time in both the classic search action and the semantic chunker). Added: - Merchant help topics for voucher CSV/XLSX import (1.5.5), hosted-services free tier (1.5.7), and updated POS topics after 1.5.8. - Hourly cleanup of expired POS parked carts (missing beat schedule). Requires celery-beat restart on upgrade. See CHANGELOG.md for full v1.5.9 entry. Signed-off-by: Dayyan James <dayyan.james@gmail.com>
9 tasks
dayyanj
added a commit
that referenced
this pull request
Jul 12, 2026
The earlier PRs #3 (v1.5.8) and #4 (v1.5.9) both landed the OSS-side work but silently dropped 8 files during the sync + branch + commit flow. shop/main has the correct content since those tags were cut, but the public tree has been running stale on: - CHANGELOG.md — v1.5.8 + v1.5.9 entries were missing (public still showed v1.5.7 at top) - core/version.py — stuck at 1.5.7 (should be 1.5.9) - cart/models.py, cart/views.py — v1.5.9 storefront add-to-cart / guest wishlist regression fixes - core/api/help_views.py, core/services/semantic_search.py — v1.5.9 admin help search 500 fix (unquoted numeric YAML in help frontmatter) - core/settings.py — v1.5.9 hourly cleanup-expired-parked-carts beat schedule (plus any settings drift between 1.5.7 and 1.5.9) - core/fixtures/help_embeddings.jsonl.gz — regenerated embeddings for the backfilled voucher / hosted-services / POS help topics Files were copied verbatim from git-archive of shop@v1.5.9 (same source the earlier syncs should have used). Blocklist rules unchanged; verified no forbidden strings. Root cause of the earlier drops is under investigation — likely a race in the sync-to-open + branch + commit flow that reset the working tree back to origin/main state after the sync rsync'd new content. Follow-up work will harden the sync script. Signed-off-by: Dayyan James <dayyan.james@gmail.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What / why
Follow-up release to v1.5.8 addressing three regressions found during
demo-fleet testing, backfilling merchant help content for features
that shipped without corresponding docs, and adding a missing beat
schedule for expired POS parked carts.
How
Storefront add-to-cart 500 — the refactored
frontend-utils.jsdelegated
showNotification()toAdminModal.toast(), butAdminModalonly loads in the admin bundle. Every storefrontsuccess/error notification threw
ReferenceError. Restored theinline DOM toast (the
.toast/.toast--{type}styles already livein
frontend-base.css).Guest wishlist 401 —
WishlistViewSet.product_idsrequiredauthentication, but
product-card.jshits it on every storefrontpage including for guests to paint heart-button state. Gated the
action with
AllowAnyand short-circuit to{'wishlisted': {}}forunauthenticated requests.
Admin help search 500 — the search endpoint stopped tolerating
unquoted numeric YAML in help frontmatter. The price-charming topic
listed
9.99as an unquoted keyword, which parsed as float andcrashed
[k.lower() for k in topic.keywords]. Coerced keyworditeration to
strat read time in both the classic search actionand the semantic-search chunker; runtime fix protects deployments
that already have the bad float persisted.
POS parked-cart cleanup —
cleanup_expired_parked_cartsexistedin
pos_app/tasks.pybut was never inCELERY_BEAT_SCHEDULE, soexpired parked carts accumulated indefinitely. Now runs hourly at
:15with a 55-minute expiry. Requirescelery-beatrestart onupgrade (handled by the installer/upgrader automatically;
source-form operators may need
docker compose restart celery_beat).Test plan
storefront add-to-cart, guest wishlist heart, admin help search,
POS admin all healthy
Checklist
git commit -s)<style>or<script>; CSP-safeScreenshots
None — bug-fix release, no user-visible UI changes beyond making
existing UI actually work.
Related issues
None. Regressions surfaced during v1.5.8 canary deployment on the
demo fleet.