Repository navigation
Release v0.4.26 - #151
Merged
Merged
Release v0.4.26#151
Conversation
The context switcher lists the stores and networks the application route loaded once at boot. A network created from the switcher opened its overview without reloading that list, so it only showed after a page reload. The first store had the same problem: the engine loaded with no stores and nothing reloaded after it was saved. The storefront service now remembers the stores and networks it creates, and the switcher lists them alongside the loaded ones, leaving deleted records out. Saving the first store also refreshes the engine, so the dashboard, order alerts and counts load for it.
…rder panel scrolls The network's orders opened an order in the resource context panel, which has no URL, so the open order could not be reloaded or shared. They now open it at networks/:network/orders/:order with the store's order route and template, over the network's list. The in-place panel (dashboard, customer panel, network overview, checkout siblings, redemptions) never scrolled: ember-ui's tab wrapper is a flex item, but the overlay body's inner wrapper around it was not a flex column, so the tab content had no height to scroll within. The panel now uses Storefront's overlay body layout with the inner wrapper as a column.
Checkout stamps meta.food_truck_id on a truck order, but the order list and
detail resources dropped it, so the console could not tell a truck order from
a store order. Both resources now send food_truck_id and food_truck ({ id,
name }), the truck named by its vehicle as the console names trucks. A page of
orders looks its company's trucks up once.
The fulfillment cell (store and network orders) shows a truck badge with the
truck's name, a checkout from one truck carries it on its group row, and the
order panel header shows it next to the store.
…, not on a fixed day The store's message is stamped with the real clock and the reply was fixed at 2026-10-14 11:00, so from 15 Oct the reply sorted first and the test failed.
…d store settings The save bar re-renders when the form's input and change events bump a revision, or when an action does. Toggles fire neither (ember-ui's Toggle is a span with a click handler), and the network settings set every toggle with (mut @model...) directly, so switching a network online, or any of its rules, left Save disabled. Ember Data's changedAttributes() is not tracked, so the store's Online toggle and the currency, order config, phone and POD selects of both pages had the same gap. Both pages now set those values through setAttribute and setOption, which bump the revision the save bar reads.
Whether a truck is available came from its Fleet-Ops vehicle's online flag, set by the driver's Navigator app or a telematics device. A store that added its trucks to a network found them all offline with no way to switch them on in Storefront. A truck's status (active or inactive) now decides it alone: - The API's truck online, and a catalog's truck subjects, report status === 'active', whatever the vehicle reports. - The console's truck card, panel, trucks page tabs (all, active, inactive) and identity indicator follow the status; the vehicle online badge and 'last online' are gone. - The dashboard's attention count is trucks_inactive (was trucks_offline: active trucks whose vehicle was offline).
…and-networks fix(switcher): show newly created stores and networks without a page reload
fix(orders): network orders open at their own URL, and the in-place order panel scrolls
feat(orders): show the food truck an order was placed at
fix(settings): toggles, selects and pickers enable Save on network and store settings
fix(trucks): a truck takes orders by its Storefront status alone
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #151 +/- ##
===========================================
Coverage 100.00% 100.00%
- Complexity 3853 3927 +74
===========================================
Files 222 224 +2
Lines 14005 13989 -16
===========================================
- Hits 14005 13989 -16
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
…els after a refresh The network settings page lists network.gateways and network.notification_channels, but only the networks list requested them, and entering a network skips that list (3160a75). After a refresh the page showed none of the saved ones. The settings route now loads the gateways and channels the network owns, gated by the list permissions.
…els (server) Product categories and catalog (menu) categories nest: Drinks › Coffee › Cold brew. A parent is in the same store or catalog and of the same kind, and a tree is at most three levels deep; CategoryTreeObserver refuses anything else with a 422 and moves a removed category's subcategories up a level. - Public categories carry parent (public id) and depth; with_subcategories lists the categories under each one; with_products&rollup=1 brings every product under a category. - Products filtered by a category (public category=, console category and category_slug) include its subcategories' products; category_direct=1 keeps an exact match. Public products carry their category's public id. - A catalog saves its categories as a tree (parent_uuid, or parent_key for a category created in the same save), validated whole and attached top-down; the public catalog payload gives each category's parent.
…n a modal The catalog editor's pencil button only renamed a category inline, so a menu category could not get an icon. It now opens the product category modal on the catalog category (name, description, icon upload). Changes stay on the page until the catalog is saved, like every other editor change; cancel restores them. A set icon shows in the category row, and Duplicate copies each category's description and icon. Catalog::setCategories() now writes description, icon, icon_color and icon_file_uuid when the payload carries them (left alone when it does not), and the catalog category resource returns icon and icon_color, plus icon_file_uuid on internal requests, so the editor's save round trip keeps them.
- Product categories: the category form has a parent picker (the store's tree, minus the category itself, its subcategories and anything past three levels); the sidebar's rows offer New subcategory up to the second level; the category page's header shows its path and rolled-up product count; the product form names each category option by its path. - Bulk move to category now shows the store's categories in tree order (the modal ignored the categories it was given and showed the network picker). - Catalog editor: categories show as a tree with indent, outdent, add subcategory and move within siblings; removing one moves its subcategories up; new categories carry a key so a subcategory can sit under one before it is saved; a duplicated catalog keeps its tree. - A refused parent (the server's 422) is shown and the form stays open.
The console builds the category tree and the parent picker from parent_uuid, which core's internal Category resource sends from 1.6.71 (core-api#316). Without it a nested category would read as top-level and be saved as one.
The catalog editor's category edit modal (#155) replaces the inline rename; a new subcategory now opens in it to be named, and duplicating a catalog keeps both the tree and each category's description and icon.
…ory's icon
Uploading an icon in the new and edit product category modals set the
category's `icon` string attribute to the uploaded File record as well as
`icon_file_uuid` and `icon_url`. The string transform turned the record into
"<model::file:{uuid}>", which the save sent and core-api stored in
`categories.icon`, in place of any icon name the category had. The upload now
sets only `icon_file_uuid` and `icon_url`, as the catalog category modal does.
…persist fix(networks): saved gateways and notification channels disappear from network settings after a refresh
fix(catalogs): edit a catalog category's name, description and icon in a modal
feat(categories): nest product and catalog categories up to three levels
fix(products): stop saving the uploaded icon file record into a category's icon
…atus as soon as QPay confirms the payment The published Storefront app (1.2.x) asks GET checkouts/status once when the customer returns from the bank app, without verify, and completes only on an order. Since status stopped asking QPay without verify=1 and created the order only 15 seconds after the payment was recorded, those customers were left waiting. A request without verify now verifies with QPay (still at most once every 5 seconds per checkout) and creates the order straight away, as before. Apps that send verify are unchanged. (cherry picked from commit bdbed81)
fix(qpay): QPay orders complete in the published app again
…hosen status
Every keystroke rebuilt the promotion builder's open step, so a field lost
focus after one character: each step's summary reads the form, the steps
getter returned new objects, and the unkeyed {{#each}} matched them by
identity. The steps are now keyed by id.
Creating a promotion failed with "The selected status is invalid": the
Save button called save() with its click event, which became the status.
save() takes a status only when given a string ("draft").
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.
Release branch for v0.4.26, cut from
mainafter v0.4.25. Versions are bumped incomposer.json,extension.jsonandpackage.json, andRELEASE.mdhas the notes.This branch collects:
meta.food_truck_idandmeta.food_truckto the order API.onlinenow meansstatus === 'active'. Pairs with fix(trucks): a truck is live by its Storefront status, not its vehicle's connectivity storefront-app#81.iconandicon_color.<model::file:…>into the category'siconcolumn. The upload sets onlyicon_file_uuidandicon_url.Before merging
^1.6.71: release core-api 1.6.71 (with fix(find): key the filter and request caches by the controller's own class core-api#315 and #316) first.composer.jsonrequires^1.6.71, so this release's CI waits for v1.6.71 to be tagged.onlinemeans in the API. Postman's food truckonlinedescription and the fleetbase.io food trucks page need updating. Ship the app change (fix(trucks): a truck is live by its Storefront status, not its vehicle's connectivity storefront-app#81) with it.meta.food_truck_idandmeta.food_truckinFleetbase Storefront API/Orders/.resources/object.yaml.ConsoleOrderChatControllerTest. It began failing on 15 Oct (onmaintoo) because it compared a real-clock timestamp against a fixed date.content/docs/storefront/catalog/overview.mdx) to cover editing a catalog category's name, description and icon.Merging this tags
v0.4.26. The version comes from the branch name and is checked against the version files and the first line ofRELEASE.md.