{"id":336302,"date":"2026-07-07T12:26:10","date_gmt":"2026-07-07T12:26:10","guid":{"rendered":"https:\/\/fr.wordpress.org\/plugins\/build-your-own-for-woocommerce\/"},"modified":"2026-10-02T20:22:05","modified_gmt":"2026-10-02T20:22:05","slug":"tlloancy-step-configurator-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/ky.wordpress.org\/plugins\/tlloancy-step-configurator-for-woocommerce\/","author":22011295,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.5.9","stable_tag":"1.5.9","tested":"7.1.2","requires":"6.0","requires_php":"8.1","requires_plugins":null,"header_name":"Tlloancy Step Configurator for WooCommerce","header_author":"tlloancy","header_description":"Generic step-by-step product configurator with WooCommerce integration.","assets_banners_color":"d0cec7","last_updated":"2026-10-02 20:22:05","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":780,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"tlloancy","date":"2026-07-07 12:25:36","revision":3599031},"1.1.0":{"tag":"1.1.0","author":"tlloancy","date":"2026-07-17 15:31:57","revision":3611735},"1.2.0":{"tag":"1.2.0","author":"tlloancy","date":"2026-07-17 21:37:14","revision":3612012},"1.2.1":{"tag":"1.2.1","author":"tlloancy","date":"2026-07-17 22:05:13","revision":3612030},"1.2.2":{"tag":"1.2.2","author":"tlloancy","date":"2026-07-18 14:06:17","revision":3612649},"1.2.3":{"tag":"1.2.3","author":"tlloancy","date":"2026-07-18 15:00:19","revision":3612714},"1.2.4":{"tag":"1.2.4","author":"tlloancy","date":"2026-07-18 18:51:52","revision":3612909},"1.2.5":{"tag":"1.2.5","author":"tlloancy","date":"2026-07-18 19:55:23","revision":3612955},"1.2.6":{"tag":"1.2.6","author":"tlloancy","date":"2026-09-15 11:16:27","revision":3696851},"1.2.7":{"tag":"1.2.7","author":"tlloancy","date":"2026-09-15 20:13:56","revision":3697658},"1.3.0":{"tag":"1.3.0","author":"tlloancy","date":"2026-09-16 01:03:30","revision":3697813},"1.4.0":{"tag":"1.4.0","author":"tlloancy","date":"2026-09-16 12:37:08","revision":3698585},"1.4.1":{"tag":"1.4.1","author":"tlloancy","date":"2026-09-16 20:57:29","revision":3699227},"1.5.0":{"tag":"1.5.0","author":"tlloancy","date":"2026-09-18 14:27:37","revision":3702137},"1.5.1":{"tag":"1.5.1","author":"tlloancy","date":"2026-09-18 15:08:15","revision":3702205},"1.5.2":{"tag":"1.5.2","author":"tlloancy","date":"2026-09-18 18:44:34","revision":3702578},"1.5.3":{"tag":"1.5.3","author":"tlloancy","date":"2026-09-25 13:33:31","revision":3713116},"1.5.4":{"tag":"1.5.4","author":"tlloancy","date":"2026-09-25 14:19:07","revision":3713171},"1.5.5":{"tag":"1.5.5","author":"tlloancy","date":"2026-09-26 23:33:59","revision":3714841},"1.5.6":{"tag":"1.5.6","author":"tlloancy","date":"2026-09-29 11:32:05","revision":3718910},"1.5.7":{"tag":"1.5.7","author":"tlloancy","date":"2026-09-30 18:29:08","revision":3721844},"1.5.8":{"tag":"1.5.8","author":"tlloancy","date":"2026-10-02 09:15:35","revision":3724436},"1.5.9":{"tag":"1.5.9","author":"tlloancy","date":"2026-10-02 20:22:05","revision":3725453}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3599031,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-772x250.png":{"filename":"banner-772x250.png","revision":3599031,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"tlsc\/wizard":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"tlsc\/wizard","title":"Tlloancy Step Configurator Wizard","category":"widgets","icon":"admin-customizer","description":"Interactive step-by-step product configurator.","keywords":["wizard","configurator","tlloancy"],"textdomain":"tlloancy-step-configurator-for-woocommerce","supports":{"html":false,"align":["wide","full"]},"editorScript":"file:.\/index.js"}},"tagged_versions":["1.0.0","1.1.0","1.2.0","1.2.1","1.2.2","1.2.3","1.2.4","1.2.5","1.2.6","1.2.7","1.3.0","1.4.0","1.4.1","1.5.0","1.5.1","1.5.2","1.5.3","1.5.4","1.5.5","1.5.6","1.5.7","1.5.8","1.5.9"],"block_files":[],"assets_screenshots":{"screenshot-1.gif":{"filename":"screenshot-1.gif","revision":3599031,"resolution":"1","location":"assets","locale":"","width":800,"height":427}},"screenshots":{"1":"Demo of the step-by-step configurator wizard with live pricing."}},"plugin_section":[],"plugin_tags":[6410,851,270469,17648,286],"plugin_category":[45],"plugin_contributors":[232640],"plugin_business_model":[],"class_list":["post-336302","plugin","type-plugin","status-publish","hentry","plugin_tags-builder","plugin_tags-configurator","plugin_tags-tlloancy","plugin_tags-wizard","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-tlloancy","plugin_committers-tlloancy"],"banners":{"banner":"https:\/\/ps.w.org\/tlloancy-step-configurator-for-woocommerce\/assets\/banner-772x250.png?rev=3599031","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/tlloancy-step-configurator-for-woocommerce\/assets\/icon-256x256.png?rev=3599031","icon_2x":"https:\/\/ps.w.org\/tlloancy-step-configurator-for-woocommerce\/assets\/icon-256x256.png?rev=3599031","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/tlloancy-step-configurator-for-woocommerce\/assets\/screenshot-1.gif?rev=3599031","caption":"Demo of the step-by-step configurator wizard with live pricing."}],"raw_content":"<!--section=description-->\n<p>Tlloancy Step Configurator for WooCommerce lets customers assemble a customizable product through a mobile-first wizard, with live pricing and WooCommerce cart integration.<\/p>\n\n<ul>\n<li>Reusable generic engine (steps, options, variants)<\/li>\n<li>Data-driven flows (config.flow, step.applies_to, option.unlock_flow, limit_rules)<\/li>\n<li>CSV \/ XML nomenclature import and export<\/li>\n<li>Sequential wizard with slide-in menu, progress bar, and photos on cards when you attach them<\/li>\n<li>Optional accordion layout (Settings) \u2014 all sections on one page, product-page style<\/li>\n<li>Unavailable options: hide the card, or keep it greyed out and not selectable<\/li>\n<li>In-admin Guide: one made-to-measure walkthrough, both layouts, with a glossary<\/li>\n<li>Variant card order: an Order field, then price when two variants share the same number<\/li>\n<li>Numeric steps (min \/ max \/ unit) and an optional base-price formula on the variant. A card step\u2019s slug in that formula is the selected supplement<\/li>\n<li>Base price plus supplements, with mandatory server-side revalidation<\/li>\n<li>WooCommerce integration via cart_item_data<\/li>\n<li>Gutenberg block <code>tlsc\/wizard<\/code><\/li>\n<li>Shortcode <code>[tlsc_wizard]<\/code><\/li>\n<li>Demo seed isolated in <code>\/seed-data<\/code><\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Copy the <code>tlloancy-step-configurator-for-woocommerce<\/code> folder to <code>wp-content\/plugins\/<\/code><\/li>\n<li>Activate the plugin<\/li>\n<li>WooCommerce must be installed and active<\/li>\n<li>Insert the <strong>Tlloancy Step Configurator Wizard<\/strong> block or shortcode on a page<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20customize%20the%20steps%3F\"><h3>How do I customize the steps?<\/h3><\/dt>\n<dd><p>Use <strong>Tlloancy Configurator &gt; Steps<\/strong>, <strong>Options<\/strong> and <strong>Configs<\/strong> in the WordPress admin.<\/p><\/dd>\n<dt id=\"how%20do%20i%20import%20a%20bom%20%2F%20nomenclature%3F\"><h3>How do I import a BOM \/ nomenclature?<\/h3><\/dt>\n<dd><p>BOM means Bill of Materials. Use <strong>Tlloancy Configurator &gt; Import CSV \/ XML<\/strong>, or see <code>docs\/USER-GUIDE.md<\/code> (English), <code>docs\/MODE-DEMPLOI.md<\/code> (French), and <code>seed-data\/examples\/<\/code>.<\/p><\/dd>\n<dt id=\"which%20currency%20is%20used%3F\"><h3>Which currency is used?<\/h3><\/dt>\n<dd><p>The currency and symbol position from WooCommerce \u2192 Settings \u2192 General. The wizard, the cart and the order use that format.<\/p><\/dd>\n<dt id=\"where%20is%20the%20documentation%3F\"><h3>Where is the documentation?<\/h3><\/dt>\n<dd><ul>\n<li>English: <code>docs\/USER-GUIDE.md<\/code><\/li>\n<li>French: <code>docs\/MODE-DEMPLOI.md<\/code><\/li>\n<\/ul><\/dd>\n<dt id=\"can%20customers%20buy%20the%20configurable%20product%20from%20the%20product%20page%3F\"><h3>Can customers buy the configurable product from the product page?<\/h3><\/dt>\n<dd><p>No. The shell product is only sold through the wizard. Native Add to cart and express-pay buttons on that product are blocked.<\/p><\/dd>\n<dt id=\"how%20do%20photos%20work%20in%20the%20wizard%3F\"><h3>How do photos work in the wizard?<\/h3><\/dt>\n<dd><p>Configurations with an image show a full-width photo on the card. Options with an image show a small rounded thumbnail. No image means a pictogram only. Next, Back and the steps menu scroll the page back to the top of the wizard. In the accordion, OK and the steps menu scroll the opened section up under the price bar.<\/p><\/dd>\n<dt id=\"does%20an%20import%20rename%20the%20shell%20product%3F\"><h3>Does an import rename the shell product?<\/h3><\/dt>\n<dd><p>No. Import and reactivation leave the name already set in WooCommerce. The demo seed name is used only when that product does not exist yet.<\/p><\/dd>\n<dt id=\"do%20photos%20survive%20an%20import%3F\"><h3>Do photos survive an import?<\/h3><\/dt>\n<dd><p>Export first, then import that file. From 1.5.3, CSV and XML keep the photo URL on variants and options, plus extra info, whether an option can be ordered, and whether a variant is visible. A file exported before 1.5.3 has no photo column: importing it clears the photos. The picture files stay in the Media Library.<\/p><\/dd>\n<dt id=\"where%20does%20the%20customer%20see%20the%20configuration%3F\"><h3>Where does the customer see the configuration?<\/h3><\/dt>\n<dd><p>Cart, checkout, the thank-you page, My Account \u2192 Orders, and the customer order emails. The merchant \u201cNew order\u201d email stays short; the full breakdown is on the WooCommerce order screen.<\/p><\/dd>\n<dt id=\"will%20updating%20break%20an%20existing%20configurator%20%28e.g.%20a%20salad%20bar%29%3F\"><h3>Will updating break an existing configurator (e.g. a salad bar)?<\/h3><\/dt>\n<dd><p>No. Numeric steps, price formulas and the accordion layout are opt-in. Existing steps stay single\/multiple, an empty formula keeps base price + supplements, and the layout defaults to step-by-step.<\/p><\/dd>\n<dt id=\"how%20do%20i%20price%20a%20product%20from%20width%20%C3%97%20height%3F\"><h3>How do I price a product from width \u00d7 height?<\/h3><\/dt>\n<dd><p>Add numeric steps whose slugs are the formula variables (e.g. largeur, hauteur). On the variant, set an optional base-price formula such as max({base}, {largeur} * {hauteur} \/ 10000 * 89). The slug of a card step is the sum of the selected options\u2019 supplements, or 0 when none is selected. When the formula names that slug, those supplements are not added again. Leave the formula empty to keep classic pricing. See docs\/USER-GUIDE.md.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20available%20for%20order%20is%20off%3F\"><h3>What happens when Available for order is off?<\/h3><\/dt>\n<dd><p>Settings \u2192 Unavailable options. Hide removes the card. Show as unavailable keeps it greyed out, labelled unavailable, and not selectable. The cart still rejects that option.<\/p><\/dd>\n<dt id=\"where%20is%20the%20in-admin%20guide%3F\"><h3>Where is the in-admin guide?<\/h3><\/dt>\n<dd><p>Tlloancy Configurator \u2192 Guide. It walks through one made-to-measure blind, from the page to the cart, in both layouts. The screen is on the left, the clicks on the right. A glossary at the bottom defines the field names.<\/p><\/dd>\n<dt id=\"what%20is%20the%20accordion%20layout%3F\"><h3>What is the accordion layout?<\/h3><\/dt>\n<dd><p>Settings \u2192 Wizard layout. Step by step is the original wizard (one screen, Next \/ Back). Accordion lists every section on one page \u2014 better for measured products on a product page. Only one section stays open; click the open heading to fold it. A folded heading shows a small photo of the selected card next to its name, when that card has one. A choice without a photo, and a numeric step, stay text only. OK opens the next section and scrolls it up under the price bar. The steps menu does the same. Switching layout does not change saved data.<\/p><\/dd>\n<dt id=\"how%20do%20i%20change%20the%20order%20of%20the%20variant%20cards%3F\"><h3>How do I change the order of the variant cards?<\/h3><\/dt>\n<dd><p>Variants &amp; Pricing \u2192 Order on each variant. Cards follow that number. Variants with the same number stay in price order. In a CSV or XML config row the same value is <code>sort_order<\/code> \/ <code>sort<\/code>.<\/p><\/dd>\n<dt id=\"can%20the%20customer%20unselect%20a%20variant%3F\"><h3>Can the customer unselect a variant?<\/h3><\/dt>\n<dd><p>Yes. Click the selected configuration card again to clear it. Later steps hide until they pick another. Add to cart stays disabled until a variant is chosen. Rename the first step under Settings \u2192 First-step label (e.g. Type de confection, Model).<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.5.9<\/h4>\n\n<ul>\n<li>Activation leaves the store currency, the symbol position and the default country as set in WooCommerce. Prices in the wizard, the cart and the order use that format.<\/li>\n<li>The configurable product is created after WooCommerce has registered the product post type.<\/li>\n<li>The plugin header declares the WooCommerce versions it requires and has been tested with, and High-Performance Order Storage.<\/li>\n<li>CSV import passes the escape argument to str_getcsv.<\/li>\n<li>Database tables are updated once per schema version.<\/li>\n<li>Docs (USER-GUIDE \/ MODE-DEMPLOI) and the readme FAQ cover the store currency.<\/li>\n<\/ul>\n\n<h4>1.5.8<\/h4>\n\n<ul>\n<li>Accordion: a folded section shows a small photo of the selected card next to its name, when that card has one. A choice without a photo, and a numeric step, stay text only.<\/li>\n<li>Docs (USER-GUIDE \/ MODE-DEMPLOI) and the readme FAQ cover it.<\/li>\n<\/ul>\n\n<h4>1.5.7<\/h4>\n\n<ul>\n<li>A card step\u2019s slug in a variant formula is the sum of the selected options\u2019 price supplements, or 0 when none is selected. When the formula names that slug, those supplements are not added again. The step overage still is. An empty formula still adds every supplement once.<\/li>\n<li>Accordion: OK opens the next section and scrolls it up under the price bar. The steps menu does the same.<\/li>\n<li>Docs (USER-GUIDE \/ MODE-DEMPLOI) and the readme FAQ cover both.<\/li>\n<\/ul>\n\n<h4>1.5.6<\/h4>\n\n<ul>\n<li>Variants have an Order field. Cards follow that number, then the price when two variants share it.<\/li>\n<li>CSV and XML config rows store that number (<code>sort_order<\/code> \/ <code>sort<\/code>).<\/li>\n<li>Docs (USER-GUIDE \/ MODE-DEMPLOI) and the readme FAQ cover the variant order.<\/li>\n<\/ul>\n\n<h4>1.5.5<\/h4>\n\n<ul>\n<li>Settings: Unavailable options. Hide removes the card. Show as unavailable keeps it greyed out and not selectable. The cart still rejects an unavailable option.<\/li>\n<li>Admin menu Guide: a walkthrough of one made-to-measure blind, in both layouts, with a contents list and a glossary.<\/li>\n<li>Docs (USER-GUIDE \/ MODE-DEMPLOI) and the readme FAQ cover unavailable options and the Guide.<\/li>\n<\/ul>\n\n<h4>1.5.4<\/h4>\n\n<ul>\n<li>Import and reactivation leave an existing shell product name alone. The demo seed name is used only when that product is created.<\/li>\n<li>Docs (USER-GUIDE \/ MODE-DEMPLOI) and the readme FAQ state that.<\/li>\n<\/ul>\n\n<h4>1.5.3<\/h4>\n\n<ul>\n<li>CSV and XML import\/export keep variant and option photos, option extra info, option availability, and whether a variant is visible in the wizard. An older file without those columns still imports; photos stay empty.<\/li>\n<li>Docs (USER-GUIDE \/ MODE-DEMPLOI) and the Import \/ Export screen explain what a round trip keeps, and that a pre-1.5.3 file clears photos.<\/li>\n<li>Steps list: numeric min\/max uses a prefixed view variable (Plugin Check).<\/li>\n<\/ul>\n\n<h4>1.5.2<\/h4>\n\n<ul>\n<li>Variant cards: click the selected configuration again to deselect it. Dependent steps leave the wizard until another variant is chosen.<\/li>\n<li>fr_FR catalogue for 1.5 wizard\/admin strings (Personalize your product, Done, formulas, numeric fields) plus a compiled .mo so the front end is no longer mixed EN\/FR.<\/li>\n<li>Docs (USER-GUIDE \/ MODE-DEMPLOI) cover deselecting a variant and the first-step label.<\/li>\n<\/ul>\n\n<h4>1.5.1<\/h4>\n\n<ul>\n<li>Accordion: only one section open at a time; click the open heading (including the first variant step) to fold it. Choosing a variant no longer jumps to the next section by itself.<\/li>\n<li>Accordion Add to cart: full-width control on a quiet bar \u2014 no coral strip under a faded button.<\/li>\n<li>Settings: layout and palette cards deselect immediately when you pick another (no leftover highlight before Save).<\/li>\n<li>Demo seed and steel palette renamed Maison Thomas (<code>seed-data\/maison-thomas.php<\/code>). An existing <code>muka<\/code> palette option still loads that steel theme.<\/li>\n<li>Docs (USER-GUIDE \/ MODE-DEMPLOI) cover accordion folding, the cart button, and the Maison Thomas seed.<\/li>\n<\/ul>\n\n<h4>1.5.0<\/h4>\n\n<ul>\n<li>Numeric step type (min \/ max \/ increment \/ unit \/ default). The step slug is the formula variable. Existing single\/multiple steps are unchanged.<\/li>\n<li>Optional variant base-price formula ({slug} tokens, + \u2212 \u00d7 \u00f7, min\/max\/round\/ceil\/floor). Empty formula = previous pricing (base + supplements + overage).<\/li>\n<li>Optional option effect: add a delta to a numeric step before the formula (e.g. a breaking hem adds 2 cm to height).<\/li>\n<li>Settings: wizard layout \u2014 Step by step (default) or Accordion. Missing option keeps the original wizard.<\/li>\n<li>Admin screens stacked full-width (form then list) so fields no longer overflow the list. Step type toggles choice limits vs numeric bounds.<\/li>\n<li>Sample import seed-data\/examples\/nomenclature-dimensions-sample.xml. Docs (USER-GUIDE \/ MODE-DEMPLOI) cover dimensions, formulas and layout.<\/li>\n<li>CSV\/XML import\/export: extra optional columns\/attributes (backward compatible).<\/li>\n<\/ul>\n\n<h4>1.4.1<\/h4>\n\n<ul>\n<li>Wizard: a configuration with an image uses a full-width photo band; an option with an image uses a 72\u00d772 rounded thumbnail; no image still shows a pictogram (never an empty band)<\/li>\n<li>Next \/ Back \/ the steps menu scroll the page back to the top of the wizard; the page itself still scrolls with the mouse<\/li>\n<li>Admin: variant\/option image previews use the same rounded rectangle crop as the wizard, not a circle<\/li>\n<li>Docs and FAQ updated for card photos and step-change scroll<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>Steps admin: per-variant min\/max\/included\/required is a table (tick a variant to override) instead of a JSON textarea \u2014 limit_rules is built from that POST array, not from typed JSON<\/li>\n<li>Fixed: ticking a variant did not enable the Min\/Max\/Included\/Required inputs (the row stayed greyed out)<\/li>\n<li>Max on a step shows how many options currently exist for that step<\/li>\n<li>tlsc_configs.image_url (dbDelta); image picker on Variants (media enqueued on configurator admin screens); URL stored on the cart config payload; wizard formula cards, cart \/ order \/ admin thumbnails and customer-email images use it; XML import\/export adds an image attribute (CSV schema unchanged)<\/li>\n<li>Native add-to-cart validation, Store API add-to-cart\/cart-item, and cart check reject or remove the shell product without tlsc_selections; product-page add-to-cart (classic + blocks CSS) and the loop add-to-cart link are hidden; Stripe \/ PayPal \/ WooPayments product express buttons are disabled<\/li>\n<li>Order-item recap (formula + steps) on the thank-you page, My Account and customer emails; merchant \u201cNew order\u201d emails skip it<\/li>\n<li>Plugin Check: recap thumbnail output goes through wp_kses; Store API exception messages are escaped<\/li>\n<li>Fixed: with overage_price set, the wizard hint used max (e.g. 2\/13) instead of included (2\/2); option cards kept saying Included after the included quota was full<\/li>\n<li>Last wizard step shows \u201cAdding\u2026\u201d while the cart request runs<\/li>\n<li>Gutenberg block editor strings go through wp.i18n (wp_set_script_translations); admin Error \/ Network error alerts are translated<\/li>\n<li>Docs (USER-GUIDE \/ MODE-DEMPLOI) and readme FAQ updated for wizard-only purchase, customer recap, and the included-quota counter<\/li>\n<li>fr_FR .po\/.mo and .pot updated for the new strings<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Steps can now define an \"included\" selection count (per variant, in limit_rules) plus a flat overage_price \u2014 selections beyond the included count are charged instead of being blocked outright, up to the (now separately raised) max<\/li>\n<li>Wizard: live price and selection hint reflect the overage as soon as the client crosses the included threshold, not just at checkout<\/li>\n<li>Fixed: the front-end wizard didn't split a multi-value unlock_flow (added in 1.2.7) on comma, so a combo option unlocking two flows at once showed neither of them client-side despite the server accepting it<\/li>\n<li>Maison Thomas seed: Ingr\u00e9dients bruts\/nobles now allow selecting beyond the included amount (2 for Petite, 3 for Grande) at +1,50\u20ac each<\/li>\n<\/ul>\n\n<h4>1.2.7<\/h4>\n\n<ul>\n<li>Option unlock_flow now accepts several comma-separated flows (e.g. dessert,boisson), so one option (e.g. a combo) can unlock more than one extra sub-flow at once<\/li>\n<li>Fixed: CSV\/XML import used to sanitize unlock_flow as a single slug directly at insert time, silently mangling multi-value input \u2014 now shares the same sanitizer as the admin form<\/li>\n<\/ul>\n\n<h4>1.2.6<\/h4>\n\n<ul>\n<li>Order admin screen: configurator selections now shown as a formatted breakdown (grouped by step) instead of raw JSON meta<\/li>\n<li>CSV \/ XML nomenclature export (Import \/ Export screen), mirroring the existing import format \u2014 usable as a backup or as a template for another install<\/li>\n<\/ul>\n\n<h4>1.2.5<\/h4>\n\n<ul>\n<li>Wizard palette setting: Default (coral), Salade (herb green), Maison Thomas (concrete &amp; steel)<\/li>\n<li>Presets inject CSS variables on the wizard only; factory coral remains the default<\/li>\n<\/ul>\n\n<h4>1.2.4<\/h4>\n\n<ul>\n<li>Same screen: group steps that share a same_screen code on one wizard screen<\/li>\n<li>Optional steps: clearer hints + Next becomes Skip when nothing is selected<\/li>\n<li>Safer required casting from DB (string \"0\" no longer treated as true)<\/li>\n<li>Optional single-select: re-click to deselect<\/li>\n<li>Updated fr_FR translations; wizard CSS cache-bust via filemtime<\/li>\n<\/ul>\n\n<h4>1.2.3<\/h4>\n\n<ul>\n<li>Plugin Check: drop load_plugin_textdomain, WP 6.0-safe list check, prefixed view variables<\/li>\n<li>Import notices via user transient (no unsanitized error query args)<\/li>\n<\/ul>\n\n<h4>1.2.2<\/h4>\n\n<ul>\n<li>Extensibility hooks for addons: tlsc_cart_item_data, tlsc_pre_add_to_cart, tlsc_add_to_cart_request<\/li>\n<li>JS events tlsc:beforeAddToCart and tlsc:stepShown<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Configurable first-step label (Settings \u2192 Formula \/ Pack \/ Configuration\u2026)<\/li>\n<li>Dynamic step hints from effective min\/max\/required (including limit_rules)<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Data-driven flows: config.flow, step.applies_to (comma-separated), option.unlock_flow<\/li>\n<li>Per-config limit_rules JSON on steps<\/li>\n<li>CSV \/ XML nomenclature import (admin + TLSC_Importer + tlsc_import_payload filter)<\/li>\n<li>Generic demo seed (no client branding)<\/li>\n<li>English UI source strings + languages\/*.pot and fr_FR translation<\/li>\n<li>Bilingual docs: USER-GUIDE.md (EN) + MODE-DEMPLOI.md (FR)<\/li>\n<li>Sample industrial-style CSV\/XML under seed-data\/examples\/<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Step scope applies_to<\/li>\n<li>Wizard + pricing filter applicable steps<\/li>\n<li>TLSC_Activator::reseed()<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<\/ul>","raw_excerpt":"Generic step-by-step product configurator with WooCommerce integration.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/336302","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=336302"}],"author":[{"embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/tlloancy"}],"wp:attachment":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=336302"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=336302"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=336302"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=336302"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=336302"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=336302"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}