Skip to content

Releases: osswald/order-platform

Release v2.15.4

Choose a tag to compare

@github-actions github-actions released this 15 Sep 15:07

fix(pi): SumUp cancel, failure sheet, and pay lock

Summary

  • Operators can Abbrechen an in-progress SumUp connected checkout from the shared waiting overlay (all POS entry points).
  • Failed/declined/timed-out SumUp attempts show a prominent failure sheet (not toast-only); dismiss returns to settle/pay without auto-retry.
  • Cancel is quiet (Twint-style); order stays unpaid; pay is locked for the whole collection window to avoid empty-settle races after a reported failure.

OpenSpec change: sumup-payment-fail-cancel-ux.

Test plan

  • Unit: sumupCheckout cancel during poll terminates and rejects with cancelled
  • Unit: timeout/failed status still terminate and do not return a payment
  • Unit: resolvePayment sets failure message on fail, not on cancel; onSumupHide on both
  • Unit: App overlay shows Abbrechen / failure sheet and wires cancel + dismiss
  • Unit: useSplitPay ignores re-entry while collection is in flight
  • Unit: PayOrderView mock includes terminalPaymentBusy lock exports
  • Manual: start SumUp connected on register/table/collective → Abbrechen → still on settle, can pay again with another method
  • Manual: decline/timeout → failure sheet → OK → retry or other method; no “nothing to settle”

Release

  • No release (merge only; latest Pi images update)
  • release:patch — bugfix release
  • release:minor — feature release
  • release:major — breaking release

Add exactly one release label to the PR if you want a semver bump, Git tag, and GitHub Release on merge. Do not edit VERSION manually — automation commits the bump on this branch after you add the label.

See docs/RELEASE.md.

Open in Web Open in Cursor 

Release v2.15.3

Choose a tag to compare

@github-actions github-actions released this 15 Sep 11:35

fix(pi): recover cash-register orders from stuck pickup-counter schema

Summary

  • Cash-register order submit 500s on Pis stuck at Alembic 006_cash_session_uuid because event_pickup_counters.station_uuid was never added (waiter orders still work).
  • Make migrations 006010 idempotent so upgrade can pass columns/tables already applied via runtime patches.
  • Add apply_pickup_counter_schema_patches() so startup rebuilds the composite PK even if Alembic was previously blocked.

Test plan

  • cd pi/backend && uv run pytest tests/test_pickup_counter_schema_drift.py -v
  • cd pi/backend && uv run pytest tests/ -q
  • ./scripts/lint.sh --staged
  • After merge/OTA: restart Pi backend, confirm Alembic reaches 010_pickup_counter_station (or patch applies), submit a cash-register order successfully

Release v2.15.2

Choose a tag to compare

@github-actions github-actions released this 13 Sep 15:21

fix(cloud): save pickup prefix mode from Stammdaten

Summary

  • Move Abholcode-Buchstabe von into event Stammdaten (Config) so mode persists with Speichern
  • Remove the Stationen/Kassen autosave bridge that left Station falling back to Kasse after reload
  • Archive OpenSpec change pickup-prefix-mode-stammdaten and sync main pickup-prefix-mode spec

Test plan

  • Cloud frontend unit tests
  • Backend test_events_crud pickup prefix mode round-trip + pickup prefix mode suite
  • Lint + typecheck
  • Manual: Stammdaten → Station → Speichern → reload → still Station; Stationen shows letters; Kassen hides register letters

Release v2.15.1

Choose a tag to compare

@github-actions github-actions released this 13 Sep 14:33

Cursor/fix locked additions edit dialog 040a

Summary

Test plan

  • Tests pass locally / in CI

Release

  • No release (merge only; latest Pi images update)
  • release:patch — bugfix release
  • release:minor — feature release
  • release:major — breaking release

Add exactly one release label to the PR if you want a semver bump, Git tag, and GitHub Release on merge. Do not edit VERSION manually — automation commits the bump on this branch after you add the label.

See docs/RELEASE.md.

Release v2.15.0

Choose a tag to compare

@github-actions github-actions released this 13 Sep 14:09

feat(cloud): drag layout cells onto empty grid slots

Summary

  • Cloud event Layouts grid: drag a filled cell onto an empty slot to move it (row/col only); content preserved
  • Drops onto occupied cells are rejected (no swap/overwrite); empty cells are not drag sources
  • Short press still opens the cell edit dialog; Pointer Events with movement threshold separate click vs drag
  • OpenSpec change archived; living spec added under openspec/specs/cloud-layout-cell-drag-move/

Test plan

  • Open event config → Layouts; drag a filled button onto an empty slot and confirm it moves
  • Try dropping onto an occupied cell — source stays put, target unchanged
  • Click a cell (no drag) — edit dialog still opens
  • Confirm autosave picks up the move (dirty → saved)
  • cd cloud/frontend && npm test -- --run src/utils/layoutCellMove.spec.ts src/components/EventConfigLayoutsSection.spec.ts

Release v2.14.1

Choose a tag to compare

@github-actions github-actions released this 13 Sep 13:25

fix(cloud): autosave pickup prefix mode from stations UI

Summary

Fixes stations-tab autosave for Abholcode-Buchstabe von and Abholcode-Buchstaben.

pickupPrefixMode lived on stammdaten (manual Save) while the control sits in the autosaved stations UI. Changing the mode marked the form dirty forever, so the status bar never showed a successful autosave even when station letters did save via configuration PUT.

Changes

  • Include pickupPrefixMode in configuration autosave watch + snapshot
  • Persist mode with a partial event PUT alongside configuration save
  • Clear stammdaten dirty state for that field after a successful mode save
  • Unit coverage for snapshot/payload/baseline helpers

Test plan

  • eventDetailSave unit tests
  • Related pickup-prefix section + dirty autosave tests
  • Lint
  • Manual: on Stations, switch mode and edit station letters; status bar should reach saved

Release

  • No release (bugfix for already-shipped UI)
Open in Web Open in Cursor 

Release v2.14.0

Choose a tag to compare

@github-actions github-actions released this 13 Sep 12:38
d959c6a

Layout cell locked additions (one-tap combo buttons)

Summary

  • Layout cells can lock Zusätze onto a single base article (locked_addition_ids) for predefined POS variants.
  • Combo cells are one-tap: cart line gets locked additions at qty 1 with no Zusätze sheet (waiter + register).
  • Grid disables a combo button when the base or any locked Zusatz is unsellable.
  • Cloud admin cell dialog configures locked Zusätze when exactly one article and no vouchers are selected.
  • Vouchers and classic multi-article cells are unchanged.
  • OpenSpec change archived; main spec synced at openspec/specs/layout-cell-locked-additions/.

Test plan

  • Cloud backend: tests/test_layout_cell_locked_additions.py
  • Cloud frontend: layouts payload + cell dialog specs
  • Pi frontend: bundleHelpers + combo contract tests
  • Lint / openspec validate
  • Manual: create combo cell in event App-Layouts, sync Pi, one-tap add on register layout
Open in Web Open in Cursor 

Release v2.13.0

Choose a tag to compare

@github-actions github-actions released this 13 Sep 10:37
84923b4

feat: pickup prefix mode (register vs station)

Summary

Event-level pickup_prefix_mode (register | station) so pickup-code letters can come from production stations instead of cash registers.

Changes

  • Cloud: events.pickup_prefix_mode, event_stations.pickup_code_prefix, validation, mode lock after leaving config, event copy, edge bundle
  • Cloud UI: mode control with show/hide of register vs station prefix fields; i18n; OpenAPI types
  • Pi: per-station pickup counters, mode-aware allocation, restore/lifecycle; alembic 010_pickup_counter_station
  • OpenSpec: archived pickup-prefix-mode into openspec/changes/archive/2026-09-13-pickup-prefix-mode/ with main specs synced (pickup-prefix-mode, updated station-scoped-pickups)

Test plan

  • Cloud backend pickup-prefix-mode tests
  • Pi backend allocation / counter tests
  • Cloud + Pi frontend tests / typecheck as applicable
  • Lint
  • CI green on feature branch
Open in Web Open in Cursor 

Release v2.12.4

Choose a tag to compare

@github-actions github-actions released this 06 Sep 09:15
99372b3

Combine Dependabot updates and fix open security alerts

Summary

  • Combine grouped Dependabot updates from #313, #315, #317, #318, #319, #320, #321, and #322 onto one CI-verified branch (no VERSION bump).
  • Land lockfile security floors the grouped PRs missed: js-yaml ≥ 4.3.1, nanoid ≥ 3.3.18, postcss ≥ 8.5.23, plus pypdf ≥ 6.16.1 (resolved to 6.17.0) and brace-expansion 5.0.9.
  • Fix CodeQL #21/#22 by navigating the cloud admin UI only to same-origin relative paths after login and organisation/tenant hard-reloads.

Test plan

  • Cloud backend pytest (610 passed)
  • Pi backend pytest (404 passed)
  • Cloud frontend tests + typecheck (365 passed)
  • Pi frontend tests (470 passed)
  • Website tests (8 passed)
  • ./scripts/lint.sh
  • After merge, confirm GitHub Dependabot alerts 63, 68–71, 73–74, 76–79 and Code scanning #21/#22 clear (may wait for dependency-graph refresh)

Release v2.12.3

Choose a tag to compare

@github-actions github-actions released this 18 Aug 21:25
760761e

Kitchen monitor open-order count and table vs pickup icons

Summary

Kitchen Bestellungen chrome on the Pi monitor:

  • Title row shows the open-ticket count next to the station: Grill · 8 offen (including 0; still visible on Produkte)
  • Each ticket title line gets a table vs pickup icon (official MDI table-chair / food-takeout-box) at the top right
  • Table sky #38bdf8, pickup violet #c084fc — glyph only, so wait-time green/amber/red bars stay the urgency channel
  • Ticket header padding, column gap, and min column width are unchanged

OpenSpec change kitchen-monitor-open-count-and-type is implemented, synced to openspec/specs/kitchen-monitor-order-chrome/spec.md, and archived.

Test plan

  • Pi frontend kitchen tests: KitchenMonitorHeader.spec.ts, KitchenTicketColumn.spec.ts, kitchenTicketType.test.ts (17 passed)
  • Full Pi frontend suite: 470 passed
  • npm run typecheck in pi/frontend
  • ./scripts/lint.sh --staged

Release

  • No release (merge only; latest Pi images update)
  • release:patch — bugfix release
  • release:minor — feature release
  • release:major — breaking release
Open in Web Open in Cursor