Skip to content
FreeNew

base-promotions

No summary provided by the publisher yet.

Publisher
webresto
Latest
1.4.0
Updated
10/28/2026
Releases
15

Install

Run this from your platform root. The registry resolves the newest main build unless you pass a version or channel.

msc install --appId=base-promotions

Channels published for this extension: staging main — append --channel=<name> to install one of them.

What this extension does

Promotions API

A module for managing promotions with GraphQL support.

Abstract

The base-promotions module provides functionality for handling promotions in modern applications. It integrates with GraphQL APIs, offering queries for promotion management.

What it does

This module enables your application to:

  • Manage promotions through GraphQL queries
  • Handle promotion data and banners
  • Provide real-time updates via subscriptions

Key Features

  • GraphQL Integration: Provides queries for promotion data
  • Data Storage: Persists promotion information in the database
  • Event System: Supports subscriptions for real-time promotion updates

Changelog

1.5.2 (2026-10-28)

  • The banners page takes a picture of any image type (image/*, the extension from the type) up to 5 MB, as the panel's media manager; a bigger file is refused on the page before it is sent - the proxy in front of the server answered 413 with no reason said.

1.5.1 (2026-10-28)

  • Built with TypeScript 5 (was ^3.1.6): 3.x dropped the import of slugify from the compiled admin app (1.5.0: the picture upload and a new stock without an address failed with "slugify is not defined").
  • The hook's adminizer:loaded handler catches: a failure of the module's admin part is logged and does not stop the panel (Adminizer emits the event inside its start; base-pages 1.5.0 left the HP server's panel unmounted that way).

1.5.0

  • The module's part of the admin panel is an Adminizer app (src/adminizer/BannersApp, enabled on adminizer:loaded):
    • the page "Banners" in "Marketing" (/admin/banners-manager, right banners-manager): two lists, the slides of the menu and the stocks of the site (isStock), each with the switch (saved at once) and the order by dragging (sortOrder, saved on the drop); a banner's title, link, the pictures for the desktop (required), tablet and phone; a stock also its address (/stocks/<mnemonicId>; empty - made from the title), teaser, text (Tiptap) and days. Video, concepts and hours are not edited and are kept. A banner is switched off before it is deleted: the storefronts' subscription cannot tell a record is gone;
    • a picture is uploaded as the request's body and saved as upload-image of the stand does: .tmp/public/uploads/<slug>-<hash>.<ext>, the field stores [{ url: "/uploads/..." }];
    • the info widget banners-count - banners in the carousel, switched on and not a stock; its right is widget-banners-count.
  • The page's source is ui/BannersManager.jsx, the bundle the panel imports - assets/adminizer/BannersManager.js, in the repository: after a change of the source npm run build:adminizer.
  • The model's table in the admin panel is gone (src/lib/bindAdminpanelconfig), and with it the hook's afterHook, which only bound it. The compiled .js and .d.ts of src are gone from the repository, as in the other modules: the build (tsc) makes them.
  • slugify is a dependency: the model and the page use it.
  • The editor's Save, Undo changes and Delete stay at the top while the form scrolls; the questions (unsaved changes, deleting, the link of the text) are the panel's dialog (window.UIComponents.Dialog, ui/ask.jsx), not the browser's confirm and prompt.
  • Each banner of the list has Edit.

1.4.2

  • MCP tools for banners (group banners): banner-list, banner-get, banner-create, banner-update, banner-delete. Image fields take an address (what upload-image returns), a list of them, or { url, "url@0_5x", "url@2x" } objects; null clears one. Registered on mcp:ready when MCP_ENABLED=true, like the tools of banner-cards.
  • The stock resolver is named after its schema field (stock, was streets): the places core refuses a resolver its schema does not declare and halts.

Release history

15 releases
VersionChannelStatus
1.5.2stagingLatest on staging
1.5.1stagingArchived
1.5.0stagingArchived
1.4.2stagingArchived
1.4.1stagingArchived
1.4.0mainLatest stable
1.3.0stagingArchived
1.2.8mainArchived
1.2.7mainArchived
1.2.6mainArchived
1.2.5mainArchived
1.2.4mainArchived
1.2.3mainArchived
1.2.2mainArchived
1.2.1mainArchived

Support

Issues with the extension itself go to the publisher. Anything about the registry goes to us.