Skip to content

Release v1.5.9 — storefront fixes + POS parked-cart cleanup#4

Merged
dayyanj merged 1 commit into
mainfrom
v1.5.9-release
Jul 12, 2026
Merged

Release v1.5.9 — storefront fixes + POS parked-cart cleanup#4
dayyanj merged 1 commit into
mainfrom
v1.5.9-release

Conversation

@dayyanj

@dayyanj dayyanj commented Jul 12, 2026

Copy link
Copy Markdown
Contributor

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.js
delegated showNotification() to AdminModal.toast(), but
AdminModal only loads in the admin bundle. Every storefront
success/error notification threw ReferenceError. Restored the
inline DOM toast (the .toast / .toast--{type} styles already live
in frontend-base.css).

Guest wishlist 401WishlistViewSet.product_ids required
authentication, but product-card.js hits it on every storefront
page including for guests to paint heart-button state. Gated the
action with AllowAny and short-circuit to {'wishlisted': {}} for
unauthenticated requests.

Admin help search 500 — the search endpoint stopped tolerating
unquoted numeric YAML in help frontmatter. The price-charming topic
listed 9.99 as an unquoted keyword, which parsed as float and
crashed [k.lower() for k in topic.keywords]. Coerced keyword
iteration to str at read time in both the classic search action
and the semantic-search chunker; runtime fix protects deployments
that already have the bad float persisted.

POS parked-cart cleanupcleanup_expired_parked_carts existed
in pos_app/tasks.py but was never in CELERY_BEAT_SCHEDULE, so
expired parked carts accumulated indefinitely. Now runs hourly at
:15 with a 55-minute expiry. Requires celery-beat restart on
upgrade (handled by the installer/upgrader automatically;
source-form operators may need docker compose restart celery_beat).

Test plan

  • Django check: clean
  • Community edition + integration sandbox: 166 tests pass
  • Manual verification on canary fleet instance (fashion) —
    storefront add-to-cart, guest wishlist heart, admin help search,
    POS admin all healthy
  • Migrations: no new migrations in this release

Checklist

  • Every commit is signed off (git commit -s)
  • Tests updated where behaviour changed
  • Docs updated (help topics backfilled, CHANGELOG.md v1.5.9 entry)
  • No new inline <style> or <script>; CSP-safe
  • No hardcoded absolute paths, IPs, or environment-specific hostnames
  • No accidental secrets

Screenshots

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.

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>
@dayyanj dayyanj merged commit b73f776 into main Jul 12, 2026
5 of 7 checks passed
@dayyanj dayyanj deleted the v1.5.9-release branch July 12, 2026 09:54
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant