Mealz SSR API Changelog
3.3.12 [29/09/2026]
Fixed
- recipe-card — v3
- Drink vs meal badge uses
recipe-type(id === 'drink') instead of meal-type tags (CU-12451cu52wb). - Recipe fetches
includerecipe-type(and list it in sparsefields[recipes]where used). Shelf MULTIPLE relies on miam-apisuggestions-batchalways returningrecipe-type(see miam-api !2157).
- Drink vs meal badge uses
Updated
- env - bump mealz-components CDN in
.env.uat/.env.production: V1@1.3.20, V2@2.12.1, V3@3.2.9.
3.3.11 [24/09/2026]
Updated
- env - bump CDN in
.env.uat/.env.production: components V2@2.12.0, V3@3.2.8; SDK V2@10.9.0; SDK V1@9.1.33(ligne 9.1.x).
3.3.10 [17/09/2026]
Fixed
- recipe-details - v2
- Resolves guests server-side like recipe-card (basket guests when the recipe is in basket, otherwise optional
serves, otherwise recipenumber-of-guestswith fallback4) and always injects the value indata-serveson the SSR config node. - Accepts optional
store_id/mealz_store_idso basket guests can be resolved on standalone opens.
- Resolves guests server-side like recipe-card (basket guests when the recipe is in basket, otherwise optional
- catalog-header - v2, v3
- The spotlight header CTA now appends
from=headerviaappendQueryToUrlin both the v2 and v3 spotlight services, so retailers whose category URL already carries a query string (e.g. CoursesU?section=categorie&categorie=) no longer get a second?. The spotlight category page loads and themeals-space-headerpageview/recipe.addevents fire again; path-based retailers are unchanged.
- The spotlight header CTA now appends
- recipe-card / catalog-list — v2
plannerin recipe-card and catalog-liststarting-dataare serialized as booleans (true/false), not query-string values ("true"/"false"), so client analytics no longer receivecategory_id: truewhen opening recipe details from the planner catalog.
Internal
- Add CoursesU Salesforce Commerce Cloud sandboxes (
bbqx-001–bbqx-009.my.commercecloud.salesforce.com) to CORS (CU-86cbea7bp).
Updated
- env - bump CDN in
.env.uat/.env.production: components V2@2.11.8, V3@3.2.7; SDK V2@10.8.0; SDK V1@9.1.32(ligne 9.1.x).
3.3.9 [09/09/2026]
Updated
- env — bump mealz-components CDN in
.env.uat/.env.production: V2@2.11.7, V3@3.2.6(recognizecuisine-actuelleorigin) (CU-86cbdtw2g).
Internal
- Demo supplier-defaults: Cuisine Actuelle token
originset tocuisine-actuelle(CORS stayscuisineactuellefor cuisineactuelle.fr).
3.3.8 [08/09/2026]
Updated
- env — bump mealz-components CDN in
.env.uat/.env.production: V2@2.11.6, V3@3.2.5(Cuisine Actuelle / no-supplier partner label fix) (CU-86cbdtw2g).
3.3.7 [02/09/2026]
Internal
- Add cuisineactuelle to CORS
3.3.6 [31/08/2026]
Fixed
- recipe-card — v3 MULTIPLE (
POST /v3/recipe-card/multiple): shelf and search cards now resolve sponsorlogo-urlfrom JSON:APIincluded(and requestinclude=sponsorsonsuggestions-batch), so the sponsored brand logo renders like on catalog.
3.3.5 [27/08/2026]
Internal
- V2 - Update mealz-component to 2.11.5
- V2 - Update SDK to 10.7.1
- V3 - Update mealz-component to 3.2.4
3.3.4 [25/06/2026]
Internal
- V1 - Update SDK version to 9.1.31
3.3.3 [21/08/2026]
Fixed
- recipe-card — v3 MULTIPLE (
fetchMultiple): analyticspathin card and likestarting-datais nowAnalyticsPaths.EMPTYso search/rayon events use the real page URL instead of/miam/recipes(#86cb7tdfe). Invalidate Redis MULTIPLE/catalog caches after deploy.
Internal
- V3 - Update mealz-component to 3.2.3
3.3.2 [19/08/2026]
Updated
- env — v3
- Point UAT and production
LIT_CMPNTS_URL_V3atmealz-components@3.2.2(shared-analytics 4.13.1 so client events also POST to BigQuery).
- Point UAT and production
3.3.1 [19/08/2026]
Added
- bootstrap — v3
- Core bootstrap config now includes
envfrom processENV(dev/uat/prod) so the client can gate analytics at runtime without a per-environment components build.
- Core bootstrap config now includes
Fixed
- styles / my-space / history — v3
GET /v3/styles/catalog/my-space(and catalog-history) now includesrecipe-card/variant-3CSS. The history drawer always renders variant-3 cards, even when the pagerecipe_card_variantis another value.
3.3.0 [14/08/2026]
Added
- recipe-pricing — v3
- Optional
display_no_storequery parameter shows the "Show price" CTA when no store is selected (default off) - Optional
mealz_store_idquery parameter to set the selected store by internal id
- Optional
- demo
/external-recipes- Embeds v3
recipe-pricingwithdisplay_no_store=truefor the no-supplier journey
- Embeds v3
Fixed
- catalog-toolbar — v3
- Planner catalog search bar SSR partial now renders the
expandedstate when asearchquery param is active, so the term stays visible after results reload.
- Planner catalog search bar SSR partial now renders the
Updated
- planner-entry — v3
- Variants have been separated into separate templates (
planner-entry-variant-{1,2,3}.ejs), aligning with Mealz's variant versioning rules (same pattern as recipe-card). - On
/planner/entry, the query param remainsvariant; on/catalog(and styles), the parent param remainsplanner_entry_variant. - Invalid variant values now return
400 Bad RequestviaVariantService.normalizePlannerEntryVariant(default3). - Style manifests load
planner-entry/variant-N/planner-entry.css;GET /v3/styles/planner/planner-entry?variant=and catalog styles acceptplanner_entry_variant.
- Variants have been separated into separate templates (
Fixed
- my-space / history — v3
historyStyleis now included in historystartingDataso load-more keeps the same grid/list style as the initial render
3.2.0 [31/07/2026]
Added
- basket — v1 & v2
- New route
POST /basket/payment-startedto be notified by retailer when the payment process start. This route use same contract ashandle-paymentand manage a synchronization with retailer cart before sending analytics event.
- New route
Updated
- recipe-pricing — v1 / v2
- Accept either
recipe_id(Mealz internal id) orrecipe_ext_id(external id). External ids are resolved to a Mealz id before rendering starting data.
- Accept either
Fixed
- i18n — v2 & v3
- SSR controllers now resolve template locale from
mealz-custom-langwhen present, falling back tolanguage-id.
- SSR controllers now resolve template locale from
Updated
- catalog-toolbar - v2
- Moved promotions entry to a discount button in the home toolbar; removed the catalog-home promotions banner.
Internal
- V2 - Update SDK to 10.7.0
- V2 - Update mealz-component to 2.11.3
- V3 - Update mealz-component to 3.1.1
3.1.0 [23/07/2026]
Added
- mealz-bootstrap
- Optional incoming
cookies-consent: trueheader is mapped into the bootstrap JSON ascookiesConsent: true(cookies-consent: trueis equivalent toforbidProfiling: false; when the header is absent, profiling stays off).
- Optional incoming
Fixed:
- analytics:
HttpService.sendAnalyticsEventcatches network/fetch failures and logs a warning instead of rejecting, so payment/SSR flows are not interrupted by analytics outages
- catalog — v3
- Catalog home toolbar « Promo' » chip is hidden when the selected store has no promotional recipes (
filter[discounted_ingredients_count]with POS and guests; the chip only renders when at least one promo recipe is available for that store.
- Catalog home toolbar « Promo' » chip is hidden when the selected store has no promotional recipes (
- planner — v3
/recipes/suggestresponses now include sponsors;formatRecipesexposessponsorLogoUrlon suggested recipes for planner suggestion cards (SSR first paint).planner-recipe-suggestion-cardusescurrentRecipefor promo and sponsor badges so the next-suggestion preview shows the correct recipe badges.
3.0.0 [03/07/2026]
Breaking changes:
- core — v3
- V3 does not maintain
GET /v2/mealz-window-bootstrap(SDK WebC) to access window.mealz without a component. Integrators on v3 should useGET /v3/coreinstead.
- V3 does not maintain
- recipe-card & catalog — v3
- Recipe card variants were reshaped to align with Mealz's new versioning rules:
- Unused recipe-card variant 2 was removed. Former variants 3 and 4 are now variants 2 and 3, respectively.
- On
/recipe-cardendpoints, thedisplay_variantquery parameter has been renamedvariant; this will be the standard name for variant parameters going forward. - On other endpoints that render recipe cards (e.g.
/catalog),display_recipe_variantparameters have been renamedrecipe_card_variant; this matches the naming pattern for endpoints whose sub-features have variants. - Variant 2 (formerly variant 3) now only differs from variant 1 in that the like button is in the footer instead of the top-right corner.
- Variant 3 (formerly variant 4, history drawer only) stayed unchanged.
- Recipe card variants were reshaped to align with Mealz's new versioning rules:
Added
- core — v3:
GET /v3/corereturns the necessary scripts to make the core mealz logic availaible (services & window.mealz & global components like modals and the drawer-view-swapper). - recipe-tag - v3
- Added route /recipe-tags to fetch multiple recipe-tag components in batch.
- Params are store_id (as usual) and product_ids (an array of product IDs)
- Like the /recipe-card/multiple route, the response is a JSON array of
{ html: string, productId: string }, with each object'shtmlcontaining the recipe-tag markup for thatproductId
- Added route /recipe-tags to fetch multiple recipe-tag components in batch.
- catalog — v3
- Added all-recipes-banner partial on catalog-home after the first category block, linking to the all-recipes catalog list route.
all_recipes=trueon catalog list and load-more routes keeps only user preference filters (include_tags,exclude_tags,guests); search, promotions, and recipe-type filters are stripped, and the recipe-type filter UI is disabled.- Catalog list toolbar and page title use the
CATALOG_ALL_RECIPESpage whenall_recipesis active.
- recipe-card - v3
- Added drink badge for recipes that are drinks
- When a shelf context has no recipe suggestion, renders a generic redirect card (
recipe-card-generic, classredirect-card) linking to the catalog home; batch/recipe-card/multipleinserts it only for the lowest-position missing context, and single-card routes setinitializedObject.isGenericwhen the suggestion API returns empty. - Optional query param
allow_default(defaulttrue) onGET /recipe-cardandPOST /recipe-card/multiple; setallow_default=falseto skip the generic redirect card when no suggestion is found. - Localized copy via
texts.v3.RECIPE_CARD_GENERIC(TITLE,CTA) inen,fr, andfr-supermrkt.
- recipe-card-cta
- Added new param recipe_name (acts like the recipe_name attribute on legacy
<webc-miam-recipe-card-cta>)
- Added new param recipe_name (acts like the recipe_name attribute on legacy
- mealz-bootstrap - v3
- V3 standalone HTML entry points (page routes and directly-fetchable components) load a per-request core entry module (
GET /v3/core/bootstrap.js) that inlines the bootstrap config (built from request headers) and callsensureBootstrapped(config)directly, somealz-componentsinitializes supplier, user, session, POS, and basket before client-side fetches run. The config travels base64url-encoded in thebootstrapConfigquery param — there is no<script type="application/json" id="mealz-bootstrap">JSON tag. Because the config lives inside the core module the client must load anyway, it can no longer be detached/reordered from its consumer, which removes the CSR bootstrap race inmiam-injector. bootstrap.util.ts(buildBootstrapScriptHtml) renders the core entry<script type="module">into page HTML;GET /v3/core/bootstrap.jsdecodes thebootstrapConfigparam and re-serializes it (JSON round-trip) into the served module body.- The bootstrap config passes
ssrApiUrl(SSR API v3 base, e.g.{SSR_API_URL}/v3) andmiamApiUrl(mealz-hub base fromMEALZ_HUB_API_URL, no/api/v1suffix) so a single publishedmealz-componentsbuild works in dev, UAT, and prod without per-env baked URLs.
- V3 standalone HTML entry points (page routes and directly-fetchable components) load a per-request core entry module (
- basket-preview — v3
GET /v3/catalog/my-space/basket-previewacceptsin_drawer(defaulttrue) andstore_idquery params. Settingin_drawer=falserenders the<mealz-basket-preview>component without the drawer wrapper, enabling the endpoint to be used as a standalone embeddable SSR fragment.
Fixed
- my-space - v2 & v3
- Back button in Mon carnet now links to catalog home instead of
history.back(), so Favoris/Historique tab switches no longer replay when returning to the catalog home page.
- Back button in Mon carnet now links to catalog home instead of
- catalog - v3
- catalog-list and my space pages now correctly disable personalization if the corresponding attributes is present in supplierToken
- catalog - v2 & v3
- display-recipe-variant was not processed for any catalog endpoint, so the variant returned was always the variant 1
- recipe/multiple - v2 & v3
- display-variant was not processed for the /multiple endpoint, so the variant returned was always the variant 1
- preferences - v1, v2 & v3
- Removed duplicate
CacheModule.register()from versioned shared modules soPOST /cache/setand SSR preference reads share the same global cache; v3 catalog toolbar badge count and recipe filters now apply after saving preferences in the drawer.
- Removed duplicate
- catalog & planner — v3
- The preferences button is now opt-in on shelves: it is only displayed when the supplier token explicitly sets
noPersonalizationOnShelves: false. When the flag is absent or set totrue, the button stays hidden.
- The preferences button is now opt-in on shelves: it is only displayed when the supplier token explicitly sets
Updated
- Removed all links to webc-miam for V2
- routing - v3
- Added "fake" routing using a "section" query param for the catalog pages of CoursesU
- catalog-toolbar - v2
- Updated toolbar template structure to match the new toolbar layout, including right-side history switch placement in my-space/history view.
Internal
- demo-app
- Added v3 to the demo
- Added product images and prices to retailer-cart page, which are fetched after each product add from basket-sync and stored in cookies
- Fixed total basket price in store-header to not use mealzInternal since it will not exist after SDK migration
- Updated "dev" npm command to use port 4200
- Added CSS override to recipe-cards in shelves so that they are the same size as the products
- Removed /ssr page that wasn't used anymore
- Environment Configurator has been moved to a FAB to take up less space
- Now uses mealz-hub instead of doing manual calls to miam-api
- Moved mealz initialization from a script in assets to a component with useEffect
- Added a new page /external-recipes to test no-supplier mode. The page uses separate cookies for env so the "external recipe website" and "retailer website" are completely separated.
- Changed cookies keys prefixes from "_miam/" to "demoNext/" because it was confusing to use the same names as the localStorage keys used by mealz-components
- Added forcePosCallback for after basket transfer from /external-recipes
- Added a utils file for cookies manipulation
- Changed retailer cart to separate carts by user-id by including the id in the cookie key
- Added an option to switch between precise style mode and all styles mode for V3 onward
- Initialize and keep
mealz.setStickyHeaderHeight(...)in sync with.store-headerheight so sticky catalog toolbar offset is correct in demo - On v3,
InitMealzonly wires retailer hooks (force POS, router URLs, language); supplier, user, POS, and basket setup are delegated to SSR-injected bootstrap instead of cookie-basedsetupWithToken/loadWithExternalId/pos.load.
- mealz-bootstrap
- SSR bootstrap helpers live under
src/shared/utils/mealz-bootstrap/(nomealz-hubdependency); unit tests forbuildBootstrapFromHeaders.
- SSR bootstrap helpers live under
- catalog - v3
- Removed
sessionIdfrom page-levelstarting-dataon catalog and planner routes; session is provided via the bootstrap script (kept on standalonerecipe-cardSSR fragments such as shelves).
- Removed
- env
- Renamed all "MIAM_DS_" env vars to "MEALZ_DS_"
- Added
MEALZ_HUB_API_URL(client-facing miam-api base for bootstrap; distinct from serverAPI_URLwhich includes/api/v1).
- recipe-card - v3
- Variants have been separated into separate folders, so modifying or deprecating one of them is easier and cannot impact other variants
- Templates that were only displayed in the recipe-card have been moved to the new /recipe-card folder for clarity
- styles - v3
- Refactored the controller to use versioned recursive style.ts files coupled to each .ejs template instead of using the same arrays for all versions
- catalog-list-filters.util
- Extracted catalog list filter building (
buildCatalogListFilters,isQueryFlagEnabled) used by the v3 catalog list controller.
- Extracted catalog list filter building (
- utils
- Added a util method that checks if a base url already contains '?' before adding a query param so the final url doesn't have two '?' characters
2.15.1 [07/08/2026]
Internal
- V2 - Update mealz-component to 2.11.4
2.15.0 [31/07/2026]
- basket — v1 & v2
- New route
POST /basket/payment-startedto be notified by retailer when the payment process start. This route use same contract ashandle-paymentand manage a synchronization with retailer cart before sending analytics event.
- New route
Updated
- recipe-pricing — v1 / v2
- Accept either
recipe_id(Mealz internal id) orrecipe_ext_id(external id). External ids are resolved to a Mealz id before rendering starting data.
- Accept either
Internal
- V2 - Update SDK to 10.7.0
- V2 - Update mealz-component to 2.11.3
2.14.1 [27/07/2026]
Fixed
- i18n — v2
- SSR controllers now resolve template locale from
mealz-custom-langwhen present, falling back tolanguage-id.
- SSR controllers now resolve template locale from
Internal
- V2 - Update mealz-component to 2.11.2
2.14.0 [17/07/2026]
Updated
- catalog-toolbar - v2
- Updated toolbar template structure to match the new toolbar layout, including right-side history switch placement in my-space/history view.
- Moved promotions entry to a discount button in the home toolbar; removed the catalog-home promotions banner.
2.13.1 [17/07/2026]
Internal
- V2 - Update mealz-component to 2.11.1
2.13.0 [16/07/2026]
Updated
- recipe-pricing - v2:
- Added a
mealz_store_idquery parameter to set selected store by internal store id - Added optional
display_no_storequery parameter to enable display of "Show price" button when no store is selected. By default, this mode is off.
- Added a
Fixed
- planner — v2
- Suggestion card display sponsor logo if required.
- catalog & planner — v2
- When
noPersonalizationOnShelvesis set on the supplier token, the preferences button is now hidden consistently on catalog list/search pages and in the meal planner header (it was already hidden on catalog home/category). - The preferences button is now opt-in on shelves: it is only displayed when the supplier token explicitly sets
noPersonalizationOnShelves: false. When the flag is absent or set totrue, the button stays hidden.
- When
2.12.1 [09/07/2026]
Internal
- Update SDK to 9.1.30 / 10.6.0
2.12.0 [01/07/2026]
Added
- recipe-card — v1 & v2
- New route
POST /recipe-card/multiple-rawfor batch recipe resolution. Takes an array of recipe contexts (productIds and position) plus store_id, and returns matching Mealz recipe IDs for all resolved contexts in a single request. Responds with{ data: [{ recipeId, position }] }, returning matched positions only (contexts with no matching recipe are omitted).
- New route
Internal
- Update SDK to 10.5.11
2.11.0 [11/06/2026]
Added
- supplier-selector — v2
GET /v2/supplier-selectorserves a minimal SSR page that loads the SDK web component script,drawer-view-swapper, andinit-supplier-selector-drawer.
- recipe-details — v2
GET /v2/recipe-detailsserves a minimal SSR page that loads the SDK web component script,drawer-view-swapper, andinit-recipe-details-drawer, with a hidden config node carryingrecipeIdandinitialTabIndex. Query params:recipe_idorrecipe_ext_id(resolved viaRecipesService.getRecipeByExtIdwhen the Mealz id is omitted), and optionalinitial_tab_index(default0). Responds with400if neither id is set and404ifrecipe_ext_iddoes not resolve.
- recipe-card — v1 & v2
- Optional query parameter
recipe_ext_id: load the recipe card from the retailer’s external recipe id (viaRecipesService.getRecipeByExtId/GET /recipes/external/:id), as a third option alongsiderecipe_idandsurrounding_products_ids. At least one of the three must still be provided. - When the card is resolved from
recipe_ext_id, “in basket” is computed from the resolved Mealz recipe id (recipe_idwins if both ids are supplied).
- Optional query parameter
Updated
- i18n — PLANNER_MENU_OPTION.CANCEL (en / fr)
- Planner menu-option CTA copy: “Empty menu” (en) and “Vider le menu” (fr), replacing “Cancel menu” / “Abandonner le menu”.
Fixed
- recipe-card — v2
GETrecipe-card: when the request relies onrecipe_ext_idonly (norecipe_id), an unknown external id returns 404 Not Found instead of failing during render.sponsorLogoUrlis read safely when the recipe payload is absent (e.g. empty suggestion result).
- catalog/my-space/basket-preview - v2
- Optional query
selected_tab:1opens the products segment first; any other value (including omitted) opens the recipes segment (0), matching the SDK basket preview tab index used byopenPreview.
- Optional query
2.10.7 [27/05/2026]
Fixed
- nextjs-demo:
- Calls
mealz.pos.loadonly when aposIdcookie is set, so no-supplier suppliers (e.g. Marmiton) no longer trigger an invalid POS load on demo startup. - Removed default
posIdfrom Marmiton insupplier-defaults.json.
- Calls
Added
- nextjs-demo:
- New suppliers to supplier-defaults.json: Cuisine Az and Cuisine Actuelle
2.10.6 [21/05/2026]
Internal
- Update SDK to 10.5.5
2.10.5 [21/05/2026]
Internal
- Update mealz-component to 2.9.0
2.10.4 [20/05/2026]
Added
- mealz-window-bootstrap — v2:
GET /v2/mealz-window-bootstrapreturns an HTML fragment containing only the WebC SDK script (SDK_WEBC_URL_V2) so integrators can obtainwindow.mealz/window.mealzInternalafter load without additional Lit components or Mealz SSR markup in the response. - no-supplier-add-to-cart-cta - v2
- Added an attribute and a class "in-basket"
- client-scripts — v1 & v2
GET /v1/client-scripts/recipe-card-show-tracking.jsandGET /v2/client-scripts/recipe-card-show-tracking.jsserve therecipe-card-show-trackingintegration bundle (integrations/recipe-card-show-tracking.min.js) forrecipe.showviewport analytics on retailer pages.- Resolution order:
sendFilefromDOCKER_CMPNTS_PATHwhen the file exists; otherwise/integrations/recipe-card-show-tracking.min.jswhenENV=dev; otherwise to${LIT_CMPNTS_URL_V2|V1}/integrations/recipe-card-show-tracking.min.js.
Fixed
- recipe-card - v1 / v2:
- Fixed a 500 error that could occur when a cached recipe was used instead of a fresh API fetch
- all routes - v1 / v2:
includeddata was not passed to Recipe instances on creation, which could cause errors due to getters not resolving correctly
2.10.3 [04/05/2026]
- V2 - Updated mealz-components to 2.8.2
2.10.2 [04/05/2026]
- Added Marmiton to CORS
2.10.1 [04/05/2026]
- Added CuisineAz to CORS
2.10.0 [21/04/2026]
Updated
- planner-entry - v2
- Added planner entry variants via
variant=1|2|3to support hero current-selection, hero custom-menu, or dual-card layouts. - Refactored planner entry views into reusable stepper and avatars partials, with localized hero copy and assets.
- Added planner entry variants via
- catalog-home - v2
- Optional query
planner_entry_variant(1|2|3, default3): same layout semantics asGET /v2/planner/entry?variant=. Embedded planner block SSR passesvariantinstarting-dataand loads current-selection / custom menu data only when needed for that variant.
- Optional query
- planner-dashboard - v2
- Planner menu-option SSR
starting-datanow includesplannerEntryVariant(1|2|3, same value as the resolved layout variant) when built from planner-entry or catalog-home, so the web component can attach it toplanner.mode.selectanalytics.
- Planner menu-option SSR
- catalog-home — v1 & v2
- Recipe card and like-button
starting-dataincludecategoryIdper catalog package so home-page sections map recipes to their parent category for client analytics.
- Recipe card and like-button
- catalog-category — v1 & v2
- Pass the current category package id as
categoryIdfor recipe cards and likes on dedicated category pages.
- Pass the current category package id as
- recipe-card.service — v1 & v2
setRecipeCardsStartingDataaccepts an optionalcategoryIdserialized into each card’sstarting-data.
- like-button.service — v1 & v2
- Like
starting-dataandsetLikesForRecipesaccept optionalcategoryId.
- Like
- like-button (HTTP)
GET /like-buttonaccepts optional query parameterspathandcategory-id, forwarded into like-button initialization.
Fixed
- planner-entry - v2
- Preserve the existing current menu state for variant 1 so planner-entry reuses the current menu instead of creating a new one before redirecting.
- catalog-home / planner-entry - v2
- Resolved
variant(and related flags) being undefined when rendering the planner entry partial from catalog-home.
- Resolved
Internal
- Shared
resolvePlannerEntryVariant()insrc/shared/utils/planner-entry-variant.util.tsfor planner-entry and catalog-home controllers. - Added npm
overridesforpath-to-regexp(^8.4.0),lodash(^4.18.1), andpicomatch(^4.0.4) to patch high-severity vulnerabilities in transitive dependencies until upstream packages (NestJS core, cli) ship updated resolutions. - catalog
- Reduced requests time for most catalog and planner routes by using promise.all instead of sequential awaits wherever possible. The differences with before are mostly small as most routes were already quite efficient, but catalog-home was reduced from an average of 5000ms to an average of 1800ms
2.9.0 [03/04/2026]
Added
- planner - v2
- New back button before menu title
updated
- recipe-card - v1 / v2:
- Changed every icon to a generic one for consistency
2.8.1 [26/03/2026]
Fixed
- catalog-home - v1
- Fixed
CatalogPages is not definederror:CatalogPagesenum is now passed to the EJS context, andcatalog-home.ejsusesCatalogPages.HOME(instead ofPages.CATALOG_HOME) when includingcatalog-toolbar.ejs.
- Fixed
2.8.0 [26/03/2026]
Added
- my-space - v1 & v2
- Added container div with a class name .mealz-my-space around the content of the page to make it more coherent with the other pages and facilitate page-specific style overriding
- Added classes names .mealz-tab-favorites and .mealz-tab-history on the tabs (className .mealz-catalog-tabs__item) so the tab icons can overriden individually
Updated
- recipe-card - v2
- Recipe card
display_variant(1–4) is normalized on the API and applied in SSR (recipe-card.ejs): badge and bottom like-button layout match legacy Angular behavior;POST /recipe-card/multipleno longer forces badge/like flags off.
- Recipe card
Internal
- catalog-toolbar & breadcrumb - v1 | v2
- Replaced raw string page comparisons with
Pagesenum (v2) andCatalogPages/Pages(v1 toolbar) for consistent page detection across catalog views. - v1 catalog-toolbar: supports v1
CatalogPagesenum values. - v2 catalog-toolbar: uses
Pages.CATALOG_*for home, favorites, my-space, and history tab logic. - v2 breadcrumb: uses
Pagesenum keys in page titles map instead of raw strings. - v1 catalog-home: fixed page value to
Pages.CATALOG_HOME. - Update mealz-component version to 2.7.1
- Replaced raw string page comparisons with
2.7.0 [19/03/2026]
Added
- catalog/my-space - v2
- New query param
show_tab_selectorto toggle the segmented control (Favoris/Historique tabs). Whenfalseor0, tabs are hidden and the page title shows the active section ("Favoris" or "Historique") instead of "Mon carnet".
- New query param
- basket-preview - v2
- New route
GET /v2/catalog/my-space/basket-previewto render basket preview standalone (title, show_tab_selector, embed query params). - New EJS template
basket-preview.controller.ejswith drawer-view-swapper and init-basket-preview-drawer scripts for direct navigation.
- New route
Removed
- catalog-favorites - v2
- Removed standalone catalog-favorites page route (
GET /v2/catalog/favorites) was not used. Favorites are only available via my-space (/v2/catalog/my-space). v1 catalog-favorites remains unchanged.
- Removed standalone catalog-favorites page route (
Updated
- baskets-service - v2
- Handle 400 response with "Inexistant record for point_of_sale_id" gracefully: return empty basket instead of throwing.
- my-space-service - v2
- Added readonly to constructor dependencies.
- planner-menu-option - v2
- Custom menu recipe avatars: when more than 6 recipes, show 5 avatars plus an overflow badge (+N) instead of empty plate placeholders.
- catalog - Implemented versioned endpoints for catalog categories, favorites, and my-space load-more. Routes now use explicit
@Version('1')/@Version('2')and call the corresponding v1/v2 services. - packages - v1:
getPackageByIdnow unwrapsresponse.dataand returns the package object directly; throwsNotFoundExceptioninstead ofBadRequestExceptionwhen the API returns no data (aligned with v2 semantics). - no-supplier-add-to-cart-cta - v2
recipe_idquery param is now treated as external recipe ID: the service resolves it to the internal recipe ID viaRecipesService.getRecipeByExtIdbefore checking basket status. Falls back to the provided value when no match is found.
- recipes - v2
- Added
getRecipeByExtId(headers, recipeExtId)to fetch recipe by external ID (cached 5s, returns null when not found).
- Added
Internal
- Refactored catalog controllers to use version-specific service instances (CatalogCategoryServiceV1/V2, etc.) instead of runtime version detection for load-more routes.
- demo
- Added basket preview to custom-elements demo page.
- no-supplier-add-to-cart-cta - v2
- Added unit tests for NoSupplierAddToCartCtaService.
- Update mealz-components to 2.7.0 and SDK to 10.4.0
2.6.3 [03/03/2026]
Updated
- planner - v2
- When fetching the current menu, if the selected store differs from the menu
point-of-sale-id, the menu is patched to match the selected store to keep planner data consistent. - Removed deprecated planner entrypoints and links: dashboard page (
GET /plannerlegacy),GET /planner-card-link,GET /planner-banner-link. The planner landing endpoint now renders the current menu experience (planner-current-menu). - Updated routing configuration: removed
planner.dashboard; planner routing now relies onplanner.currentonly.
- When fetching the current menu, if the selected store differs from the menu
Fixed
- recipes - v2
hasPromotions()now returnsfalsewhenstoreIdis missing, allowing planner screens to work without a selected POS.
- recipe-pricing - v2
- Pricing wrapper is only displayed when
price-per-serveexists, preventing empty pricing blocks.
- Pricing wrapper is only displayed when
2.6.2 [26/02/2026]
Fixed
- Added missing scripts in no-supplier-add-to-cart-cta (drawer-view-swapper & basket-transfer-modal)
Internal
- Update SDK 9.1 to 9.1.26
2.6.1 [12/02/2026]
Internal
- Update mealz-components to 2.6.1
2.6.0 [12/02/2026]
Added
- recipe-card-cta
- Added class variants to separate default and planner usecase
- packages
- Added
from=headerquery parameter to package URLs when redirecting from the header - Added analytics path to header starting-data for tracking events
- Added
- menu - v2
- New route
GET /menu/merge-authless-menu?authless_id=...to transfer the authless user's current menu to the logged-in user (replaces menu, no merge). Calls backendPATCH /menus/transfer-authless. To be used at end of auth flow when the user had built a menu while unauthenticated.
- New route
Updated
- styles
- Added drawer stylesheets to recipe-card
- Added recipe-details and like button stylesheets to recipe-card-cta
- planner-entry
- Replaced minus and plus icon in the stepper with
<img>to replace easily for suppliers overrides
- Replaced minus and plus icon in the stepper with
- recipe-card-cta
- Added the parameter
to_basket_on_clickthat is provided in the starting data
- Added the parameter
- planner-budget-gauge - v2
- Reordered layout: overflow badge now appears before the edit button
Internal
- planner-onboarding-modal - v2
- Refactored initialization from EJS template include to JavaScript helper module (
init-planner-onboarding-modal.min.js)
- Refactored initialization from EJS template include to JavaScript helper module (
2.5.1 [05/02/2026]
Updated
- catalog-home-header
- Increase header height to 200px on desktop for custom header
2.5.0 [22/01/2026]
Added
- planner-onboarding-modal
- Added planner onboarding modal route to display onboarding content standalone.
- planner-current-menu - v2
- Added support for prefilled recipes (featured recipes)
Internal
- Update allowed origin for webview
- Update version for mealz-components to 2.5.0
- Update version for SDK to 10.3.0
2.4.2 [13/01/2026]
Internal
- Update version for mealz-components to 2.4.2
2.4.1 [10/01/2026]
Fixed
- catalog-list - v2
- Fix
recipe_type_filterhandling and normalize query parsing (string/boolean) so the view and starting-data receive a real boolean. - Fix merge regression where
recipeTypeFilterwas typed asstringinCatalogListService(causing TS build failure).
- Fix
Internal
- Update version for mealz-components to 2.4.1 and SDK to 10.2.3 - v2
- navigation
- Manage mobile webview navigation based on User-Agent
2.4.0 [29/12/2025]
Internal:
- navigation
- Manage mobile webview navigation based on User-Agent
Added
- planner-quick-menu - v2
- Added SSR template
planner-quick-menu.ejsto render a compact “quick menu” (menu count + thumbnails preview).
- Added SSR template
Updated
- planner-current-menu - v2
- Update template structure to match planner v3 design (header/footer + suggestion area)
- Integrated quick menu as an alternate footer (mobile) and extracted the primary footer into
planner-current-menu.footer.ejsto improve responsiveness/maintainability.
- planner-recipe-suggestion - v2
- Add “Our suggestions” block with optional next suggestion card and recipe labels (prep/cooking/difficulty)
- planner-quick-menu - v2
- Refined quick menu rendering logic and markup (thumbnail slots, data attributes, buttons).
- catalog-list
- Added meals type filters when the catalog list is opened from the planner
Fixed
- styles
- Add planner entry css in catalog and catalog-home styles routes
- Add planner quick menu css in planner styles route
2.3.1 [16/12/2025]
Update
- Update version for mealz-components to 2.3.2 and SDK to 10.2.1 - v2
Fixed
- planner-menu-option - v2
- Now display current menu recipe in custom menu option, not only empty plates.
- planner-budget-gauge - v2
- Don't display budget gauge if budget is empty or 0
- planner-current-menu - v2
- Suggested recipe detail now uses guests selected in planner entry (no fallback to 4)
- Renamed AddToCartCtaController into NoSupplierAddToCartCtaController
2.3.0 [12/12/2025]
Added:
- planner-entry - v2
- Added new
/v2/planner/entryroute and controller for planner home entry component - Added planner entry integration in catalog home page
- Added planner entry template with guest stepper and menu options
- Added new
- planner-entry.controller.spec.ts - v2
- Added comprehensive unit tests for PlannerEntryController
- catalog-home-header
- New
CatalogHomeHeaderControllerwith routeGET /catalog/headerto render the catalog home header - Added styles includes for
catalog-home-header.cssin all style routes
- New
- catalog-settings
- Introduced
CatalogSettingsServiceto fetch and cache supplier catalog settings
- Introduced
- packages-service
- Added
getPackageSpotlightsmethod to retrieve and build spotlighted package CTA
- Added
Updated:
- catalog-home - v2
- Integrated planner entry component with current menu and custom menu data
- Added planner entry data fetching with error handling (feature gracefully degrades if unavailable)
- planner-budget-gauge - v2
- Added budget edit button functionality
- Added formatted budget values (budgetLimitFormatted, budgetTotalFormatted) alongside numeric values
- Improved budget display logic with better conditional rendering
- planner-menu-option - v2
- Updated custom menu display to always show 6 empty plate images
- Added new empty plate images (webp and jpg formats) for custom menu slots
- Removed cancel button from custom menu option
- Improved recipe avatar display logic
- planner-current-menu - v2
- Changed default recipe display to always show suggestion first when available, even if menu has recipes
- Enhanced budget gauge initialization with formatted price values
- planner-recipe-suggestion - v2
- Fixed button styling to always show primary style on "Add meal" button
- styles - v2
- Added planner-entry CSS to planner styles group
- catalog-home
- Header markup replaced with include of
catalog-home-header.ejs
- Header markup replaced with include of
Fixed:
- planner-current-menu - v2
- Fixed recipe display priority to show suggestions by default
Internal:
- i18n - v2
- Updated French and English translations for planner menu options with new wording
- catalog-home.controller - v2
- Added PlannerDashboardService dependency for planner entry data fetching
- Improved error handling for planner entry feature (warns but doesn't break if unavailable)
2.2.2 [11/12/2025]
Updated
- recipe-pricing
- Now update pricing card when a product added or removed from basket
Fixed
- recipe-card
- Fix guests in recipeCardStartingData for multiple route
2.2.1 [04/12/2025]
Config
- Update mealz-components to 1.3.15 and 2.1.1 - v1 | v2
2.2.0 [03/12/2025]
Updated
- recipe-pricing - v1 | v2
- Refactored to be independent and rendered via dedicated route
- Pricing calculation moved to client-side
- recipe-card-cta - v1 | v2
- Refactored to be independent and rendered via dedicated route
- Added RecipeCardCtaController for standalone rendering
- like-button - v1 | v2
- Refactored to be independent and rendered via dedicated route
- recipe-card - v1 | v2
- Updated to use extStoreId instead of storeId in multiple suggestions route
- recipes-service
- Updated getMultipleSuggestedRecipes to use point-of-sale-ext-id instead of point-of-sale-id
Added
- Added recipe-card-cta route
Fixed:
- like-button
- Fix like-button standalone render route
2.1.2 [28/11/2025]
Config
- Update SDK to 10.0.2 / 9.1.23 and mealz-components to 2.0.2
2.1.1 [12/11/2025]
Fixed:
- render - v1 | v2
- Fix rendering strategy to avoid conflict between parallels requests with /v1 and /v2 versions
2.1.0 [12/11/2025]
Added:
- routing
- Added retailerCart URL configuration to routing files (dev/uat/prod)
- Added retailerCartPageUrl method to RoutingService with fallback to catalog home
Updated:
- planner-current-menu
- Updated to redirect to retailer cart URL after menu finalization instead of catalog home
- Added fallback to previous behavior if retailer cart URL not configured
2.0.3 [10/11/2025]
Internal
- Set base dir version view from interceptor instead app global middleware.
- Update mealz-component to
2.0.1and SDK to10.0.1and9.3.1
2.0.2 [03/11/2025]
Internal
- logging-service
- Include request body in log metadata for POST routes
- Ensure unique insertId for each log entry to prevent Google Cloud Logging collisions
2.0.1 [03/11/2025]
Fixed:
- styles - v1
- Fixed styles for my-space
2.0.0 [03/11/2025]
Fixed:
- templates:
- Migrated all CSS classes from
miam-ds-*tomealz-ds-*across all EJS templates (v1 and v2) that remains
- Migrated all CSS classes from
- my-space-controller:
- Added
history_stylequery parameter with 'list' | 'grid' values (default: 'list')
- Added
- translations:
- Fixed translation keys in history-order-expanded template
- basket-controller:
- Fix
/basket/merge-authless-basketroute method from POST to GET to fit with docs
- Fix
Internal
- analytics-service
- Send events to bigQuery instead Plausible
- Add ANALYTICS_URL environment variable for analytics endpoint configuration
- Add ANALYTICS_ENABLED environment variable for development environment
Internal:
- Added add-to-cart CTA to demo
2.0.0-beta.5 [09/10/2025]
Added:
- recipe-card - v1 | v2
- Added "keyword" and "categoryId" body parameters support in /multiple route for recipe suggestions
- Created ItemExtIdsDTO type to standardize request body structure across v1 and v2
Updated:
- recipe-card - v1 | v2
- Removed redundant "supplier-id" from request body in /multiple route (already present in URL query params)
Internal
-
http-service - v1 | v2
- add TraceContextService and TraceInterceptor
- propagate X-Cloud-Trace-Context and traceparent
-
logger-service - v1 | v2
- Migrated to Winston with @google-cloud/logging-winston transport
- Logs now use structured format for GCP
2.0.0-beta.4
Updated:
- environment
- Changed SDK_WEBC_URL_V2 from webc-miam.js to webc-miam-fr.js in both main and demo/nextjs environments
- Update versions UAT
2.0.0-beta.3
Added:
- planner-current-menu
- Added a button to access onboarding from current menu for both mobile and desktop views
- planner-dashboard
- Added onboarding modal access button with help icon
Updated:
- planner-dashboard
- Restructured history section
2.0.0-beta.2
Fixed:
- recipe-card - v1 | v2
- Changed NotFoundException throws to return null or empty arrays when no recipe suggestions found
- catalog-list - v2
- Fixed loadMore functionality in meal planner to properly display selected recipes state (inMenu) instead of always showing as unselected
- planner - v2
- Fixed meal planner catalog to only display main dishes (plats) instead of showing desserts, drinks, and starters when planner=true
2.0.0-beta.1
Fixed:
- catalog-list:
- Added recipe type filter to catalog list controller and service to properly filter recipes by type in load more functionality
- catalog:
- Updated shouldRemovePersonalization to use supplier.noPersonalizationOnShelves in multiple controllers for better personalization handling
Updated:
- planner:
- Updated French translations and replaced icons in planner views for better user experience
- routing:
- Added catalog structure to routing configuration for production and UAT environments
2.0.0-beta
Breaking changes:
Upgraded from miam-ds@1.2.6 to mealz-ds@2.0.0. The design system was renamed from miam-ds to mealz-ds, and all references were updated accordingly.
Added:
- all-recipes-banner
- New all recipes banner on catalog home
- catalog-list
- Added
plannerto request parameters (default: false) - Added
all_recipesto request parameters (default: false)
- Added
- planner
- Added planner-budget-gauge component
- Added planner-current-menu component and controller
- Added planner-dashboard component and controller
- Added planner-menu-option component
- Added planner-recipe-card component and controller
- Added planner-recipe-list component
- Added planner-recipe-suggestion component
- Integrated PreferencesService for recipe suggestions to append user preferences filters to suggestion URLs
- planner-link
- Introduced
PlannerCardLinkControllerandPlannerBannerLinkControllerfor handling planner link routes. - Added tests for the new planner link controllers to ensure proper functionality.
- Introduced
- preferences
- Added PreferencesService with methods to fetch user preferences data and build filter URLs
- Enhanced PreferencesService with comprehensive test coverage for all edge cases
- price
- Add dynamic currency formatting based on language settings
- drawer:
- New routes to fetch mandatory JS and CSS for component
- supplier-configuration:
- Added new supplier configuration for CoursesU in local environment
- add-to-cart-cta:
- Added AddToCartCtaController for rendering add-to-cart CTA components
- Created AddToCartCtaService to check if recipe is in user's basket using BasketsService
- Implemented EJS templates (add-to-cart-cta.ejs, add-to-cart-cta.controller.ejs) for SSR rendering
- Added CSS styling with animations and responsive design through styles controller
- Integrated with existing basket state management and starting data pattern
Updated:
- catalog-list
- Updated view for planner compatibility
- Added query recipe_type_id to filter by recipe type (e.g. "starter", "main-dish", "dessert", "drink")
- catalog-toolbar
- Updated view for planner compatibility
- recipe-card-cta
- Updated view for planner compatibility
- recipe-card
- Updated view for planner compatibility
- styles
- Updated
StylesControllerto include new style groups for planner links.
- Updated
- searchbar:
- Replace catalog searchbar with miam-ds-searchbar
Fixed:
- planner:
- Fixed catalog list style inclusion in planner to ensure proper component functionality
- recipe:
- Added check on sponsors before matching included to prevent bug
Internal:
- Added mealz-hub service to Docker Compose configuration for local development
- Added planner page to the demo
- Added config in the demo to test addProductsToCart & removeProductsFromCart instead of pushProductsToCart
- Logging out in demo site was creating an error
Fixed:
- searchbar:
- Fix searchbar placeholder on favorite page
1.3.20 - [23/10/2025]
Internal
- analytics-service
- Send events to bigQuery instead Plausible
- Add ANALYTICS_URL environment variable for analytics endpoint configuration
- Add ANALYTICS_ENABLED environment variable for development environment
- Analytics can now be disabled in development mode by setting ANALYTICS_ENABLED=false
- UAT and PROD environments always send analytics regardless of ANALYTICS_ENABLED setting
1.3.19 - [16/10/2025]
Config
- Update version for mealz-components 1.3.13
1.3.18 - [13/10/2025]
Internal
- cache-service
- UserID is now optional in cache key.
- pos-service
- Updated pos service to remove userID from cache key usage.
- Logging System:
- Implemented logger with Google Cloud Logging integration
- Added distributed tracing support using AsyncLocalStorage
1.3.17 - [25/09/2025]
Added
- recipe-card
- Added "keyword" body attribute to /multiple route
Config:
- Update version for SDK to 9.1.21
1.3.16 - [03/09/2025]
Fixed:
- recipe-card
- Changed NotFoundException throws to return null or empty arrays when no recipe suggestions found
1.3.15 - [26/08/2025]
Added
- recipe-card
- Added "categoryId" body attribute in /multiple route
Fixed:
- catalog-list
- Fix button preferences displayed on search results despite configuration to turn them off
Config:
- Update version for mealz-component to 1.3.12
- Update versions for local and UAT
1.3.14 - [06/08/2025]
Config:
- Update component version 1.3.11 in env
1.3.13 - [04/08/2025]
Fixed:
- recipe-card:
- Fix pricing flickering with loader
Config:
- Update component versions in env
1.3.12 - [04/08/2025]
Config:
- Update component versions in env
1.3.11 - [04/08/2025]
Fixed :
- recipe-card:
- Revert usage of store ext id in route multiple
1.3.10 - [04/08/2025]
Updated:
- recipe-card:
- Optimized /multiple route performance by moving dynamic data fetching to client-side
- Removed server-side API calls for likes, pricing, and basket data
- Simplified data formatting and reduced parallel API calls
1.3.9 [24/06/2025]
Fixed:
- recipe-card-cta
- Fix displaying CTA when shouldRemovePersonalization is true
1.3.8 [23/06/2025]
Config:
- Update SDK / Component versions in env
1.3.7 [23/06/2025]
Fixed:
- demo/retailer-cart:
- Optimized cart updates by only triggering the retailerBasketChanged event once after adding multiple products instead of after each individual product
- recipe-card:
- Fixed recipe card basket detection when using suggested recipes, ensuring correct guest count is displayed for recipe cards loaded via product suggestions
Deleted:
- pricebookKey:
- Remove deprecated variable pricebookKey
1.3.6 [16/06/2025]
Fixed:
- recipe-card:
- Fixed issue where all recipe cards in multiple route used the same guest count instead of respecting individual recipe guest settings
- recipe-pricing:
- Fixed issue where recipe cards in catalog home beyond the first two categories used a hardcoded guest count of 4 instead of the recipe's actual guest count
1.3.4 [10/06/2025]
Fixed:
- recipe-pricing:
- Revert previous changes
1.3.3 [10/06/2025]
Updated:
- If render if called and price is defined, update the view
1.3.2 [06/06/2025]
Fixed:
- catalog:
- All /load-more routes were missing
shouldRemovePersonalization: false
- All /load-more routes were missing
1.3.1 [06/06/2025]
Added:
- styles:
- Added
/styles/catalog/my-spacewhich corresponds to the styles for the/my-spaceroute. It combines the previous routes/styles/catalog/catalog-history&/styles/catalog/catalog-favorites
- Added
Updated:
- recipe-card:
- Added a global configuration in supplier-tokens to disable personalization in both recipe-card routes. When disabled, the pre-rendered recipes-cards will not display the like button nor the cart CTA at prerender, and both will be displayed client-side, to avoid issues with caching between users.
- /multiple route now uses the new suggestion-batch route from miam-api for better performances
- preferences:
- Preferences are disabled if personalization is disabled, meaning the button will not be rendered and if the user had any preferences set, they are removed
Fixed:
- recipe-card
- The /multiple route now returns a JSON array of the recipe cards instead of one HTML
- my-space:
- Added missing paths in startingData for favorites & history
1.3.0 [23/05/2025]
Updated:
- my-space:
- History now has a toggle to switch the view style between 'grid' and 'list' mode
- Added a new param
history_styleto the /my-space route. The param only has an effect when used alongsidetab=historyand can have as value either 'grid' or 'list', defaulting to 'grid' of not passed. - Using the new view style toggle will put in the currentUrl either
&history_style=gridor&history_style=list, which can be passed to the /my-space route
1.2.26 [19/05/2025]
Internal:
- Update CI to push to artifact registry
- Added 2 more cards on shelf demo page
- Fixed potential error on demo if there was not enough product to display cards
1.2.25 [05/05/2025]
- Removed @google-cloud/logging which had performance issues and replaced with correctly formatted console.log
1.2.24 [02/05/2025]
- Revert previous tag for performances reasons
1.2.23 [02/05/2025]
Internal:
- upgraded Nest to v11
- Added @google-cloud/logging library for better logging on GCP
- Added new Logger service to log for GCP in uat & prod and use default Logger only for dev
- Updated fetch to node-fetch to have the option to log response headers with response.entries()
1.2.22 [29/04/2025]
Fixed:
- Handle-payment doesn't confirms the basket twice if called twice in a row
- Added headers to the plausible calls just in case they weren't automatically passed
1.2.21 [23/04/2025]
Updated to webc-miam@9.1.15 Updated to mealz-components@1.2.8
1.2.20 [23/04/2025]
Updated:
- handle-payment route now checks the order-id param if passed to not confirm different baskets for the same order
Internal:
- Added more logs for plausible events in order to check if they are sent correctly
1.2.19 [22/04/2025]
Fixed:
- Added url attribute in the body of requests sent to plausible, as its absence caused these requests to return a 400 error
1.2.18 [22/04/2025]
Internal:
- Added more logs for headers checks on all routes
1.2.17 [18/04/2025]
Updated to mealz-components@1.2.7
1.2.16 [18/04/2025]
Updated to webc-miam@9.1.14 Updated to mealz-components@1.2.6 Updated to miam-ds@1.2.6
Fixed:
- toolbar: anchor was missing a navigate back
Internal:
- supplier-values:
- Added Marmiton default values for the env-configurator
- recipe-card:
- Added an id on the format
mealz-recipe-card-{RECIPE-ID}
- Added an id on the format
1.2.15 [14/04/2025]
Updated to webc-miam@9.1.13
1.2.14 [04/04/2025]
Updated to webc-miam@9.1.12
1.2.13 [03/04/2025]
Fixed:
- Resolved issue where recipe details always opened with 4 guests by refining guest count logic in : catalog-category, catalog-favorites, catalog-home, catalog-list, my-space
- catalog-home:
- Did not have an empty state for extreme cases of contradictory preferences
Internal:
- Removed unused
servesquery param in load-more functionality for: catalog-category, catalog-favorites, catalog-list, my-space
1.2.12 [31/03/2025]
Internal:
- Changed all urls from unpkg to cdn.jsdelivr/npm to avoid unpkg that was down on 31/03/2025
1.2.11 [28/03/2025]
Fixed:
- catalog-favorites:
- Fixed init state was incorrect
Internal:
- Fixed log in case of missing auth headers
1.2.10 [26/03/2025]
Fixed:
- Updated to webc-miam@9.1.8 to fix bug on basket-preview opening the last added recipes instead of the one clicked in some cases
- miam-api prod URL had an unnecessary "/"
1.2.9 [24/03/2025]
Fixed:
- recipe-card:
- Optimized performances for the /recipe-card route: Should reduce response times by 150 to 200ms
1.2.8 [21/03/2025]
Fixed:
- Better logging for supplier-token errors
- catalog-routing:
- Added redirecting url for my-space for the catalog-routing config for supplier 23
- catalog-toolbar:
- Removed href for the back button as now the component does a native back action client-side
- recipe-card:
- Optimized performances for the /recipe-card/multiple route: Should reduce response times by 150 to 200ms
Internal:
- Fixed coverage rules to be at 100%
- Gave access in the starting data of
recipe-pricingif the recipe is already in the basket
1.2.7 [07/03/2025]
Updated:
- Added automatic completion filters for all routes returning recipe-cards - recipes without their primary ingredient available in the store will not appear anymore
Fixed:
- Fixed null error when store_id was not provided for all routes returning recipe-cards
1.2.6 [28/02/2025]
Internal:
- Added unit tests to all services
- git-hooks:
- Added a pre-push hook that runs tests before pushing anything upstream
- demo-app:
- retailer-cart: Added basket sync on demo start up as first basket change call is dedicated to sync
- Fixed generate-authless route call asking for headers
- catalog-category
- Added analytics path to starting-data so mealz-components can send pageview event
- catalog-favorites
- Added analytics path to starting-data so mealz-components can send pageview event
- retailer-cart:
- Added basket sync on demo start up as first basket change call is dedicated to sync
1.2.5 [21/02/2025]
Fixed:
- handle-payment:
- Fixed possible concurrency errors and undefined errors
- Does not try to confirm an empty basket
- Correctly sends the analytics events
1.2.4 [07/01/2025]
Added:
- recipe-card:
- Added a new route /recipe-card/multiple to fetch more than one card at once. It takes an array of surrounding_products_ids as input and returns a HTML of all cards
1.2.3 [31/01/2025]
Internal:
- catalog-category
- Added analytics path to starting-data so mealz-components can send pageview event
- catalog-favorites
- Added analytics path to starting-data so mealz-components can send pageview event
- retailer-cart:
- Added basket sync on demo start up as first basket change call is dedicated to sync
1.2.2 [17/01/2025]
Fixed:
- recipes:
- Fixed number of guests for recipes in the basket, ensuring the number of guests remains as it was when the recipe was added to the basket
- recipe-card
- Fixed JSON parsing error for surroundingProductsIds by adding a try-catch block
- Prevent null reference errors when accessing recipe pricing data
- recipe-pricing
- Load discounted ingredients count when the recipe is already in the basket
Internal:
- Added a new page to the demo simulate a retailer cart and interactions with the products (add, update, remove)
1.2.1 [10/01/2025]
Updated:
- recipe-card:
- Added the attribute aria-hidden="true" to recipe picture as redundant with recipe label
Fixed:
- Fixed CORS configuration to allow all localhost origins, removing the restriction to only port 4200
- recipe-card:
- Favorite button was still displayed when user was not logged
Internal:
- recipes
- Updated
page_sizeandpage_numbersearch request params
- Updated
- catalog-home
- Added
sessionIdto starting-data to synchronize session id with SDK
- Added
- recipe-card
- Added
sessionIdto starting-data to synchronize session id with SDK
- Added
- catalog-home:
- Added analytics path & category id to starting-data so mealz-components can send category.display event
1.2.0 [20/12/2024]
Added:
- catalog-history
- Added component + controller for JS injection
- Added search functionality
- Added "no history" view
- catalog-tabs
- Added tabs for Favorites / History
- drawer
- Added component
- history-order
- Added component
- recipe-card
- Added a variant
- http.service
- Added
profilingas an optional header for all routes, defaulting totrue - Added
profiling=offquery param in all requests tomiam-apiwhen the profiling header value is "false"
- Added
Updated:
- All features now have semantic tags (p, h1, h2, h3, h4) instead of div and spans around texts
- recipe-card
- Removed the
profilingquery param from therecipe-cardroute
- Removed the
- recipe-pricing
- Removed the
profilingquery param from therecipe-pricingroute
- Removed the
- catalog-toolbar
- Renamed the favorites button to my space