Notes de version
Les nouveautés de chaque version d'Isabyte Power Tools — sur les six frameworks.
Trouver des versions
- feat(templates,apt): the Webshop's franchise on Angular — the stores' pages, the store picker at checkout, the shared web walk unchanged (stage B)
- feat(templates,fpt): the Webshop's franchise on Flutter — stores on the tenancy kernel, the store picker at checkout (stage B)
- feat(templates,vpt): the Webshop's franchise on Vue — the stores' pages, the store picker at checkout, the shared web walk unchanged (stage B)
- feat(templates,rpt): the Webshop's franchise on React — the stores' pages, the store picker at checkout, the shared web walk (stage B)
- chore(qa-gate): the three franchise translation exemptions go
- i18n(templates): the Webshop franchise in en-GB
- i18n(templates): the Webshop franchise in zh-CN
- i18n(templates): the Webshop franchise in sv-SE
- i18n(templates): the Webshop franchise in nb-NO
- i18n(templates): the Webshop franchise in fr-FR
- i18n(templates): the Webshop franchise in es-ES
- i18n(templates): the Webshop franchise in de-DE
- feat(templates,npt): the Webshop's franchise on React Native — stores on the tenancy kernel, the store picker at checkout (stage B)
- feat(templates): the Webshop's franchise on the Node API — stores on the tenancy kernel, the checkout's fulfilment seam (stage B)
- feat(templates): the Webshop's franchise on the Dart API — stores on the tenancy kernel, the fulfilment seam (stage B)
- chore(map): stamp the cross-tech review after MapLibre (Android) and the Flutter platform-maps seam landed together
- feat(map): Android draws the open tiles with MapLibre — nothing contacts Google by default
- feat(templates): the Webshop's franchise on the FastAPI API — stores as the tenancy kernel's second tenant kind, and the cart-checkout's fulfilment seam (stage B)
- chore(map): stamp Map after the Flutter platform-maps seam (RN already draws basemap "platform" — nothing to port); commit the add-on's pubspec.lock
- fix(map,flutter): platform-maps proof round — analyzer-clean on 3.47, the add-on suite green on 3.41, the drift replay committed
- feat(map,flutter): Apple Maps / Google Maps for IsabyteMap's basemap "platform" in an OPTIONAL add-on package (isabyte_power_tools_platform_maps)
- fix(templates): the franchise's conformance probes the shop's currency and VAT (first proof run)
- feat(templates): the Webshop franchise's wizard data — questions, guide topics, suggestions, the domain skill (stage A)
- fix(templates,bpt): a store's stock count never reaches a buyer, and headquarters' drafts never reach a franchisee (security review)
- feat(templates,bpt): the Webshop's franchise on the Blazor master — stores on the tenancy kernel, the store picker at checkout; the sub-category's status derived (stage A)
- feat(templates): the Webshop's franchise on the .NET API — stores as the tenancy kernel's second tenant kind, and the cart-checkout's fulfilment seam (stage A)
- feat(templates): the tenancy contract 1.1.0 — the Webshop's franchise, stores as the tenant — and its conformance (stage A)
- fix(templates): five small gaps — copy what the master renders, the header's e-mail gives way, the CMS walks check the box only where it is composed
- fix(angular): wrappers listen from the constructor, so an event fired while the first inputs land is heard
- fix(templates): the assistant's sample library and demo conversations load the master language's seed, else en-US — every stack and Blazor
- feat(map): on a phone IsabyteMap draws only the app's open tiles; Apple/Google maps on request (tileProvider.basemap)
- feat(templates,apt): the Marketplace on Angular — the tenancy kernel and the commerce kernels' additions, and its layouts (stage B)
- fix(templates): one Marketplace branch per layout option, Vue joined to it
- fix(qa-gate,templates): an option may gate the same categories in one branch only
- fix(qa-gate,templates): a question may list an option value only once
- feat(templates,vpt): the Marketplace on Vue — the tenancy kernel and the commerce kernels' additions, and its layouts (stage B)
- docs(bible,templates): regenerate §15.4, the print edition and the i18n snapshot after the merge
- feat(templates,apt): the newer categories' layouts on Angular
- feat(templates,fpt): the newer categories' layouts on Flutter, the Marketplace included (the fan-out after React, Vue and React Native)
- fix(templates): the LMS courses and the demo's sellers load the master language's seed, else en-US — every stack and Blazor
- fix(templates): the LMS sample courses count their lessons the way the catalog card does
- i18n(templates): the waves 1b–4 guide topics in seven cultures — the ten owed template-guide exemptions go
- i18n(templates): the wizard's waves 1b–4 owed translations are paid — the 27 template-i18n exemptions go, en-GB gets its 24 ids
- i18n(templates,fr-FR): the business templates' waves 1b–4 in French — wizard, labels, home pages, sample content
- i18n(templates,de-DE): the business templates' waves 1b–4 in German — wizard, labels, home pages, sample content
- i18n(templates,zh-CN): the business templates' waves 1b–4 in Simplified Chinese — wizard, labels, home pages, sample content
- i18n(templates,es-ES): the business templates' waves 1b–4 in Spanish — wizard, labels, home pages, sample content
- feat(templates,i18n): the business templates' waves 1b-4 in Swedish (sv-SE)
- feat(templates,i18n): the business templates' waves 1b-4 in Norwegian Bokmål (nb-NO)
- feat(templates,npt): the newer categories' layouts on React Native (the fan-out after React and Vue)
- feat(templates,vpt): the newer categories' layouts on Vue (after React's)
- feat(templates,fpt): the Marketplace on Flutter, the tenancy kernel and the commerce pages' seams (stage B)
- feat(templates,npt): the Marketplace on React Native — the tenancy kernel and the commerce kernels' additions (stage B)
- feat(templates,rpt): the newer categories' layouts on React (the first fan-out after the master)
- feat(templates,rpt): the Marketplace on React — the tenancy kernel's pages and the commerce kernels' seams (stage B)
- feat(templates,fpt): Booking, Restaurant, Membership, Course/LMS and Listings on Flutter (stage B)
- feat(templates): the Marketplace on the FastAPI API — the tenancy kernel and the commerce kernels' two seams (stage B)
- feat(templates,node): the Marketplace on the Node API: the tenancy kernel and the commerce kernels' two seams (stage B)
- feat(templates,dart): the Marketplace on the Dart API — the tenancy kernel and the commerce kernels' two seams (stage B)
- fix(templates): the Marketplace's layouts join the master-first tech gate
- fix(templates): the newer categories' layouts stay Blazor-only until each tech's fan-out (master first, gated by tech)
- fix(templates,bpt): the review screenshots' findings — the chat's "_error" alert, the tile board's half-empty row, the magazine's latest list
- feat(templates,bpt): the layout shells reach the newer categories on the Blazor master
- feat(templates): the Marketplace's category data, docs and claims (stage A)
- feat(templates): the Marketplace's Blazor master on the tenancy kernel; a seller's writes are untrusted (security review)
- feat(templates): the tenancy kernel on the .NET API, and the commerce kernels' two seams (the Marketplace, stage A)
- feat(templates): the tenancy contract 1.0.0 and its conformance (the Marketplace, wave 4, stage A)
- feat(templates,npt): Booking, Restaurant, Membership, Course/LMS and Listings on React Native (stage B)
- feat(templates,apt): Booking, Restaurant, Membership, Course/LMS and Listings on Angular (stage B)
- feat(templates,vpt): Booking, Restaurant, Membership, Course/LMS and Listings on Vue (stage B)
- chore(map): stamp the cross-tech review — the deferred tiles are a web-element fix; React Native and Flutter read tileProvider in their first render and never had the defect (map.md)
- fix(map): never request a default tile before the host's properties land — the app's tile provider is the first and only one asked ×3 web techs
- fix(templates): the commerce labels travel with their kernels, so Booking, Restaurant and Membership show no raw keys (all six techs)
- feat(templates,fpt): six layout shells, the house look and a palette per category on Flutter (step H fan-out)
- feat(templates,rpt): Booking, Restaurant, Membership, Course/LMS and Listings on React (stage B)
- fix(templates,fastapi): the booking lock waits on the event loop, never in a pool thread
- feat(templates,npt): six layout shells, the house look and a palette per category on React Native (step H fan-out)
- fix(templates): an account's booking placements are serialised per process — a burst can no longer pass the open-booking cap, on every stack
- fix(templates): harden the availability kernel on every stack — a cap on open bookings, a throttled sweep, no guest data after erasure, no 500 on number exhaustion
- fix(templates,fastapi): the listings search parses coordinates in linear time (the Node ReDoS on near= and bbox=)
- feat(templates,fastapi): the listings kernel (jobs, directory, real estate, classifieds) on the FastAPI API (stage B)
- feat(templates,fastapi): the learning kernel (Course/LMS) on the FastAPI API (stage B)
- feat(templates,fastapi): the subscriptions kernel (Membership, donations) on the FastAPI API (stage B)
- feat(templates,fastapi): the availability kernel (Booking, Restaurant) on the FastAPI API (stage B)
- feat(templates,apt): six layout shells, the house look and a palette per category on Angular (step H fan-out)
- docs(bible,templates): stage B on the Node API for Booking, Restaurant, Membership, Course/LMS and Listings
- fix(templates,node): a certificate names the learner by their display name or by nothing, never by the email address
- fix(templates,node): the listings search parses coordinates in linear time (ReDoS on near= and bbox=)
- feat(templates,node): the listings kernel (jobs, directory, real estate, classifieds) on the Node API (wave 3, stage B)
- feat(templates,node): the learning kernel (Course/LMS) on the Node API (wave 3, stage B)
- feat(templates,node): the subscriptions kernel (Membership, donations) on the Node API (wave 2, stage B)
- feat(templates,node): the availability kernel (Booking, Restaurant) on the Node API (wave 1c, stage B)
- feat(templates,dart): the listings kernel (jobs, directory, real estate, classifieds) on the Dart API (stage B)
- feat(templates,dart): the learning kernel (Course/LMS) on the Dart API (stage B)
- feat(templates,dart): the subscriptions kernel (Membership, donations) on the Dart API (stage B)
- feat(templates,dart): the availability kernel (Booking, Restaurant) on the Dart API (stage B)
- feat(templates,vpt): six layout shells, the house look and a palette per category on Vue (step H fan-out)
- fix(templates,lms): a certificate names the learner by their display name or by nothing, never by the email address
- fix(templates,helpdesk): the demo's sample tickets are keyed on their requesters, and the demo pass reads them back
- feat(templates,fpt): the Webshop, Helpdesk, Blog/magazine, Forum and AI assistant on Flutter (stage B)
- feat(templates,npt): Webshop, Helpdesk, Blog/magazine, Forum and AI assistant on React Native (stage B)
- feat(templates,apt): Webshop, Helpdesk, Blog, Forum and AI assistant on Angular (stage B)
- feat(templates,rpt): six layout shells, the house look and a palette per category on React (step H fan-out)
- fix(templates,node): one rule for role lists, the heading parsed in linear time; docs for stage B on Node
- feat(templates,node): the community kernel (Blog, Forum) on the Node API (wave 2, stage B)
- feat(templates,node): the AI assistant's kernel on the Node API (wave 4, stage B)
- feat(templates,node): the Helpdesk's tickets kernel on the Node API (wave 3, stage B)
- feat(templates,bpt): a palette of one family per category, clearer apart (owner, 2026-10-12)
- fix(templates,bpt): the renderer copies that landed on main carry the snippet fix
- fix(templates,bpt): the CMS home topics' snippet drops a numbered list's marker too
- feat(templates,bpt): six layout shells, the house look and a palette per category on the Blazor master (step H)
- wip(templates): the design.layout question and its per-category defaults (H; not pushed — the shells, guide topic and translations follow)
- feat(templates,vpt): Webshop, Helpdesk, Blog, Forum and AI assistant on Vue (stage B)
- docs(bible,templates): restore six §15.6 paragraphs a merge helper dropped; the gate refuses a duplicate rule id
- feat(templates,rpt): Webshop, Helpdesk, Blog, Forum and AI assistant on React (stage B)
- docs(bible,templates): regenerate §15.4, the print edition and the i18n snapshot after the merge
- feat(templates,lms): the learning kernel's master — contract, conformance, .NET API and Blazor (wave 3, stage A)
- fix(templates,fastapi): SQLite waits 30 s for the write lock, as the .NET template does
- fix(templates,fastapi): the assistant's signed-out limit keys on app.access.client_address
- fix(templates,fastapi): the assistant parses a Markdown heading by hand, in linear time (ReDoS)
- feat(templates,fastapi): the AI assistant API on FastAPI (assistant kernel)
- feat(templates,fastapi): the Blog and Forum APIs on FastAPI (community kernel)
- feat(templates,fastapi): the Helpdesk API on FastAPI (tickets kernel); 64-bit stock, bounded inputs and uploads
- docs(bible,templates): regenerate §15.4, the print edition and the i18n snapshot after the merge
- feat(templates,bpt): Membership on the subscriptions kernel — plans, renewals, the members' gate, donations (wave 2, stage A)
- feat(templates,listings): the listings kernel's master — contract, conformance, .NET API and Blazor (wave 3, stage A)
- fix(templates,dart): the assistant parses Markdown headings by hand — the regex backtracked polynomially (ReDoS)
- feat(templates,dart): the Helpdesk, Blog/magazine, Forum and AI assistant on the Dart API (stage B)
- fix(templates,bpt): the cart badge is composed with the cart page (Webshop, Marketplace), so Booking and Restaurant never link to a 404
- fix(templates,bpt): Booking's Blazor services read who is acting from the connection (ShopUser); booking card fits its inputs; example images are screenshots
- feat(templates): Booking and Restaurant on the availability kernel — contract, conformance, .NET API, Blazor (wave 1c, stage A)
- fix(templates,node): TRUST_PROXY's hop count is a trust function — Fastify's types take no number (every Node API failed tsc)
- fix(templates): the session cookie is Secure outside development on every stack; FastAPI and .NET believe exactly the proxy hops TRUST_PROXY names
- fix(templates): Node believes X-Forwarded-For only from the proxy in front of it; the assistant parses headings by hand (two security findings)
- fix(product-matrix): clear the last three warnings — each hid a gap — and make every warning fatal under --strict
- fix(product-matrix): resolve the master class of theme-loader and the chart modes; the theme loader's events follow the master's order ×5
- fix(templates): robots.txt and the sitemap never take the request's Host; proofs under flock -o and without build-server reuse
- fix(templates,bpt): the storefront pages are the Webshop's (and the Marketplace's), not every category that reuses the catalog
- docs(bible,templates): the Webshop's Blazor pages in §15.6 and their claim; the category's image is a screenshot of the built shop
- feat(templates,bpt): the Webshop's Blazor pages — shop, cart, checkout, orders, back office (wave 1b, stage A)
- feat(templates): the AI assistant's master — contract, .NET API, Blazor (wave 4, stage A)
- feat(templates): the community kernel — Blog/magazine and Forum on .NET and Blazor (wave 2, stage A)
- fix(qa-gate): template-i18n reports untranslated strings per owner — one wave's exemption hid every other wave's
- feat(templates,helpdesk): the Helpdesk's example image is a screenshot of the built template; §15.4 regenerated
- feat(templates,helpdesk): the tickets kernel's master — contract, conformance, .NET API and Blazor (wave 3, stage A)
- fix(templates,bpt): the shop's Blazor services act as the signed-in user, never one a caller names
- fix(presentation): rotation/opacity owner review — dialogue flicker, dropdown/carousel knobs, effect sizing + pointer, rotated demo above the sections (all techs)
- feat(templates,node): the Webshop's API on Node — catalog, checkout, orders through conformance (wave 1b)
- feat(templates,bpt): the Webshop's Blazor services — catalog, cart, checkout, orders (wave 1b, stage A; pages follow the shells)
- fix(templates): every contract parses, with no duplicate keys — customers.openapi.yaml had not parsed at all
- feat(templates): the Webshop on the FastAPI API — catalog, checkout, orders (wave 1b, stage B)
- feat(templates,dart): the Webshop's Dart API — catalog, checkout, orders through conformance (wave 1b)
- fix(templates): an order move is a conditional update — two cancels at once gave the stock back twice
- fix(templates): a Webshop API without sign-in compiles — the payment seam and the order rules are always composed
- feat(templates): the Webshop's contract, conformance and .NET API — catalog, checkout, orders (wave 1b, stage A)
- fix(templates,npt): Skia's CanvasKit follows the demo's sub-path — the image editor drew nothing under /templates/tools/
- chore(qa-gate): stamp Chart after the Flutter date-axis port (React Native already strides through the master's own date-axis module)
- fix(flutter): the date-axis chart thins its tick labels like the master; the knob test asserts the bundled trash glyph
- chore(qa-gate): stamp Grid and Chart after the phone-width ports; record the Chart lock's blind spot
- fix(grid,chart): at a phone's width the native grids scroll instead of squeezing, and chart x labels thin out instead of overlapping
- fix(app-framework,templates,wizard): pages fit a phone when the header holds an e-mail — minmax(0, 1fr); the wizard shows its pictures whole
- fix(templates): fonts whose authors reserve the name are packed renamed "
Subset" (owner's decision) - fix(templates,fpt): the header gives way under a wider font; LicenseRegistry needs foundation (found by the font proof)
- feat(templates): the Flutter and React Native downloads pack the chosen OFL fonts (the native-font exception)
- fix(templates): the evening rebuild holds the heavy-proof lock for its whole run
- chore(regen): the drift replay after the theme loader's brand config — wrappers, bundles, docs, skills ×5
- feat(theming,templates): the theme format's brand layer — Brand group, 11 --isa-* tokens, Theme Studio section, templates read only theme tokens (H0)
- fix(templates): job 5.2 follows the TEST pin policy — a held-back download is not a wrong pin (v1.10.108 red only on 5.2)
- feat(templates): the five static techs publish their demos — walked through the TEST stack first (stage G3, frontends)
- feat(templates,fpt): demo mode and a sub-path in the Flutter template (stages G1, G2); the bible records the five frontends
- feat(templates,apt): demo mode and a sub-path in the Angular template (stages G1, G2)
- feat(templates,npt): demo mode and a sub-path in the React Native template (stages G1, G2)
- feat(templates,vpt): demo mode and a sub-path in the Vue template (stages G1, G2)
- feat(templates,rpt): the React template runs under a sub-path — ISABYTE_BASE_PATH at build time (stage G2)
- feat(templates,rpt): demo mode in the React template — banner, pre-filled sign-in, closed registration, demo.off on a 403 (stage G1)
- docs(parity): React Native image + icon PASS at 2f6ea19a0 — 11 measured cells published, tracker rows ticked
- feat(reactnative): a real
for every photo and the Bootstrap Icons subset font for icons on react-native-web
- feat(templates,hub): the wizard's "Try the demo" link (stage G5) + demo runner hardened after security review
- feat(templates): host the public template demos on demand — stages G3 + G4 (Blazor end to end; the five static techs wired)
- fix(hub-tests): TechStackTests asserts the native reason's stable prefix, not its wording
- feat(templates): Blazor templates run under a sub-path (PathBase) — stage G2, master
- fix(templates): the public demo stores nothing a visitor sends about themselves; /api/demo is a silent 204
- feat(templates): demo mode for Isabyte's public template demos — Blazor, .NET and node APIs (stage G1, master)
- fix(hosts,ui-parity): a demo host's top bar never overflows — React/Vue/Angular fold it into the hamburger when it does not fit, and the harness fails header-overflow by name
- docs(parity): the rich-text-editor rows and cells name the merged fix 496b57d30 (1445beda6 was its pre-rebase sha)
- docs(parity): rich-text-editor cells re-measured after 1445beda6 — React/Vue/Angular PASS 0.0003, RN PASS 0.0136, Flutter 0.104 open (--merge --cells; rpt/vpt/apt 71/79); grid editability row carries 8be17824c
- fix(rich-text-editor): the toolbar is the master's markup on the element, React Native and Flutter — colours before align, Left active on load, fullscreen at the right edge, the razor's separators; the element's host paints no second box
- feat(reactnative,templates)!: React Native primary 0.85 -> 0.86 — the npt template base, the RN demo host and the package build move to Expo SDK 57 / react-native 0.86.3
- fix(grid,demo-spec): the grid demo's ID column is read-only in edit mode on every tech, as on the master
- docs(parity,presentation): visual matrix re-measured at the trio's defaults — no regression; non-default probe agrees on six techs (batch 4 of 4)
- fix(presentation,reactnative-host): the RN demo host applies the trio — its componentMap bypasses the barrel
- fix(presentation): rebuilt bundles + review stamps for batch 3 on top of the image-analysis snapshot fix
- feat(templates,i18n): wave 1a in sv-SE, de-DE, fr-FR, es-ES and zh-CN; the wizard's nb-NO help
- feat(qa-gate,templates): every form control in a template is an Isabyte component, enforced
- docs(parity): dialogue PASS ×5 at b71dc411a — rows ticked, five cells published (matrix.cjs --merge --cells)
- feat(dialogue,playgrounds,parity): the master's "GDPR Settings" footer button on all five techs — native dialogues gain
actions; the native hosts lift the element's action marker - fix(presentation): batch 3 rebased onto the Skia CanvasKit barrel — CanvasKit innermost, re-stamped
- fix(image-analysis)!: the pattern-snapshot thumbnail is the coloured composite the view shows on all six techs; Export Blueprint's file stays the blueprint (owner decision 2026-10-07)
- docs(parity): server-monitor RN cell published (PASS 0.011, --merge --cells; npt 56/64); RN wave 2 summary + the open RN rows' reasons (image, icon: owner decisions; image-editor: Class D; landing-page: the LP programme's per-scene port)
- test(templates): the API a Tools download composes passes conformance on all four stacks
- fix(reactnative,parity): wave 2 batch 8 — the RN server monitor is the master's: rem typography at line-height 1.4, detail-row and disk margins, and the charts its WebGL layer shows (full-width stretch, double-applied alpha) instead of the SVG fallback; server-monitor RN PASS (0.067 -> 0.011, 890 -> 982px)
- feat(templates)!: TEST rebuilds templates for template changes, not component-only changes (owner, 2026-10-08)
- fix(grid)!: an edit-mode editor holds AND shows the cell's full raw value on all six techs (owner decision 2026-10-07)
- docs(parity): rich-text-editor RN cell published (PASS 0.0136, --merge --cells); row carries 33b7ea3e0
- fix(reactnative,parity): wave 2 batch 7 — the RN rich-text editor's content area is the master's (Quill metrics, reboot headings, collapsing margins, list marker boxes, blockquote), separators as the razor, radius 6; rich-text-editor RN PASS (0.102 -> 0.014)
- fix(licensing): every npm and NuGet package ships the licence texts of the third-party material copied into it
- feat(templates): Tools, Reporting and CMS on Angular — wave 1a on all six techs (stage B)
- docs(parity): background PASS ×5 at caec94b21 — rows ticked, five cells published (matrix.cjs --merge --cells)
- fix(playgrounds,background,parity): the master's overlay card on all five techs — slot placeholders gain {{count}} / {{plural}} / {{select}}; a still background repaints after a resize
- feat(reactnative,templates): Skia's CanvasKit loads on demand on the web — the image editor in the browser, Tools on React Native
- fix(flutter): the Upload matrix test finds the master's × remove glyph; the colour selector names its bundled font's package
- docs(parity): RN cells re-published on the merged tree — error-templates, lightning-effect, image-library PASS (matrix.cjs --merge --cells; npt 53/64); row SHAs = the rebased commits
- fix(core,reactnative,parity): wave 2 batch 6 — the RN core-element island gets the master page (host-theme.css island block -> hostTheme.ts demoIslandCss); page prose colours reach RN components (internal host-prose context); error badge is an inline box; lightning-effect + error-templates RN PASS
- chore(presentation): rebuild the bundled CSS after rebasing batch 2 onto the slider fill fix
- docs(parity): Flutter icon PASS at 0d3168d67 — row ticked, cell published (--merge --cells)
- feat(flutter,licensing): IsabyteIcon draws the master's Bootstrap Icons glyphs from a bundled SUBSET font, with its MIT licence shipped in the package
- docs(parity): image-library RN cell re-published (PASS, 0.0056) — matrix.cjs --merge --cells; npt 51/64
- fix(reactnative,parity): wave 2 batch 5 — the RN image library is the master's: own --isa-il-* colours, stretching grid columns, the element's SVG chrome, select-shaped sort/page size; image-library RN PASS (0.387 -> 0.0056)
- fix(slider,parity): the master shows its colour fill — rail on the track container, fill above it, transparent runnable tracks (owner decision 2026-10-07 "Fix master")
- fix(rte,demos): one tech-neutral demo sentence on all six — the seeded editor content no longer names a component library (owner decision 2026-10-07)
- docs(parity): RN grid PASS at 1db20dc85 — row ticked, cell published (--merge --cells)
- fix(reactnative,parity): wave 2 batch 4 — the RN grid is the master's table: popup filter, auto column widths, row/header/paging metrics; grid RN PASS (794 -> 524px)
- feat(presentation): 2D Rotation X / Y + Opacity Level on the Blazor master (batch 1 of 4)
- docs(parity): RN terminal-client PASS at 19ec0231c — row ticked, cell published (--merge --cells)
- fix(reactnative,parity): wave 2 batch 3 — the RN terminal paints the theme's ANSI palette, font and xterm rows; tab bar = the web's CSS; terminal-client RN PASS
- docs(parity): wave 2 batch 2 (RN) re-measured — rich-text-editor 0.131 -> 0.104, image-editor / landing-page notes; 5 RN cells published (--merge --cells)
- fix(core,reactnative,parity): wave 2 batch 2 — the held-back hand-authored fixes land with their RN halves (image editor, landing page, rich-text editor); RN RTE toolbar = the master's
- fix(templates)!: the report CSV never lets a cell run as a spreadsheet formula (master + 4 ports)
- feat(templates): Tools, Reporting and CMS on Flutter (wave 1a, stage B)
- docs(parity): owner-findings batch re-measured — date-range PASS ×5 (rn + flutter rows closed), filter/grid/upload web PASS; 35 cells re-published
- fix(daterange,parity): Flutter keeps the sizer's fractional field widths, RN field line box 21.6 — date-range PASS on rn + flutter
- feat(templates): Tools, Reporting and CMS on Vue (wave 1a, stage B)
- docs(parity): visual wave 2 (RN) published — React Native 47/64 pages PASS, 18 rows ticked; open RN rows annotated
- fix(reactnative,parity): visual-deviation wave 2 (RN) — the master's island environment, value-for-value templates, H16 phase alignment; 18 RN rows closed
- feat(templates): Reporting and CMS on React Native (wave 1a, stage B); Tools held back
- docs(parity): wave 3 batch 3 — tab + lightning-effect Flutter PASS (fpt 43 -> 45 of 64), server-monitor knob pinned on Flutter; tracker, bible §12.6/H18, claim, README; cells published (--merge --cells)
- fix(flutter,parity): wave 3 batch 3 — tab icons + h5/alert, lightning target card, Flutter knob pin for server-monitor (H18 setKnob/textOf)
- docs(parity): owner findings #4/#6/#7/#9 re-measured ×5 — time-selector, tab, image-analysis, map cells published (matrix.cjs --merge --cells)
- chore(regen): job 1.2 replay for the upload house glyphs + switch (owner finding #8)
- fix(upload): the house glyphs + IsabyteSwitch in the Uploaded Files rows, ×6 techs (owner finding #8)
- docs(parity): publish server-monitor react/vue/angular — PASS with the platform knob pinned by the harness (H18), ratio 0.00131 each (matrix.cjs --merge --cells)
- fix(demos): the ServerMonitor demo's platform badge auto-detects again; the harness pins it (H18) ×6
- docs(parity): publish the wave 3 Flutter cells — fpt 17 -> 43 of 64 PASS (matrix.cjs --merge --cells; only Flutter cells changed)
- fix(map): owner finding #4 a–d — smooth zoom, popup text on custom backgrounds, the zoom echo ping-pong, the empty "All" bar graph
- feat(templates): Tools, Reporting and CMS on React, with the shared web walks (wave 1a, stage B)
- chore(regen): demo-copy catalogs ×8 + Flutter demo_copy_data for the engine-free RTE description (owner finding #5)
- fix(rte): the demo copy names no engine — drop "based on Quill.js v2" ×8 cultures and from the seeded content on all six hosts (owner finding #5)
- test(flutter-host): scope the server-monitor columns-section finders — the fixed demo data shows a Linux OS label in the monitor too
- fix(flutter,parity): wave 3 batch 2 — overlays inherit the page text, block slot markup, email/dialogue/panel chrome, RTE + IE + LP Flutter ports
- chore(regen): job 1.2 replay for owner findings #1 #2 #3 + Flutter range on IsabyteTriggerField
- fix(daterange,filter,grid): never clip a date, optional/sided filter chips, themed grid editors (owner findings #1 #2 #3)
- feat(hub): /download/plugins redirects to the visitor's tech site's code-plugins page
- feat(qa-gate): component-revision tracks the hand-authored bases' core stylesheets
- docs(parity): fixed master demo data re-measured — grid + server-monitor PASS ×3 web, RN/Flutter rows re-noted; 10 cells re-published
- fix(demos)!: the master's demo data is fixed — no clock, no unseeded random in the load render ×6
- docs(parity): tab PASS ×3 web after the tech-neutral master copy; dialogue text matches, GDPR button left — 6 cells re-published
- fix(demos,parity): master demo copy is tech-neutral — "any content" on the dialogue and tab ×6
- fix(image-analysis): owner finding #9 — the pattern-snapshot thumbnail was a transparent PNG; RN snapshots the live composite
- docs(parity): terminal-client ×3 web rows closed at 2dcfda4d0 — matrix cells re-published (--merge --cells)
- fix(core,parity): terminal-client's pane outgrew its body — min-width:0, not a measurement artefact; ui-parity
contain - feat(hosts,hub)!: the code plugins have their own page, /download/plugins, and a Download-menu row on all six sites
- fix(tab,time-selector): owner findings #6/#7 — strip line inside the scrollport; the popup fade rides only the open render
- fix(flutter,parity): visual-deviation wave 3 — the master's text environment, Blink's rows, CSS-ported chrome, CanvasKit phase + painted extent
- docs(parity): first-party photos re-measured ×5 — 11 visual rows closed, the matrix re-published cell by cell
- feat(demos)!: the master uses our own photos too — every stock-photo hot-link replaced by the first-party gallery ×6, and a QA check blocks its return
- feat(hub,ci,hosts): no package and no server build is a public download — npm off the /download pages ×6
- feat(react,hub)!: React 19 is the React primary; a primary below the newest line must say why, and the Technology stack page shows it
- fix(security): the self-built Flutter SDK image is localhost/isabyte-flutter — an unqualified Docker Hub name could be squatted
- feat(flutter)!: the Flutter primary is the newest line, 3.47 (3.47.6) — package build, demo host, template base
- chore(templates): merge wave 1a-B's three APIs — claim checks the seam, not its name; CLI build lock
- feat(templates): admin kernel, Reporting and CMS on the node stack
- feat(templates): Reporting and CMS on the FastAPI API — the admin kernel, pages per language, wave 1a stage B
- feat(templates): admin, Reporting and CMS on the Dart API (wave 1a, stage B)
- docs(parity): visual wave 1 published — React/Vue/Angular 61/79 pages PASS each, 27 rows ticked
- feat(templates): CMS on .NET and Blazor — pages per language in a tree, edited in the app
- fix(templates): on Blazor the Admin role follows Admin:Emails, on cookies and open pages
- feat(templates): Reporting on Blazor, with the admin kernel's back office
- fix(templates): an ADMIN_EMAILS account is never erased (security review of the admin kernel)
- feat(templates): the admin kernel's contract, conformance and .NET backend, with Reporting's datasets (wave 1a)
- feat(hub,hosts): Support preselects the visitor's tech in both Technology selects
- fix(parity): visual-deviation wave 1 (web) — the master's demo-island environment, H15 phase alignment, nine rows ×3 closed
- feat(hub): "latest .NET" everywhere, derived component count, no comparison table, versions in use on Support
- feat(bpt,hub,hosts): own-tech downloads + Code plugins ×6, master home "Why" list, Learning FAQ out of the menu, tier feed pinned
- feat(templates): Tools on Blazor — landing-page builder, image editor, server monitor (wave 1a, stage A)
- feat(templates): the proof pipeline carries 18 categories (waves programme, phase 0)
- fix(setup): setup-e2e takes the newest release folder that holds its bundle, not the last folder name
- fix(ci): ecosystem-proof.sh gets the host-runner node too (job 5.2 and the nightly)
- fix(ci): the host-runner template scripts get a node; the Angular 22 dev server drops the removed host-check flag
- fix(slider)!: React/Vue/Angular value-change now fires per step like Blazor; use the change event for commit-only
- fix(templates): hub-bundles creates its scratch base first (found by the first real rebuild run)
- fix(templates): the download carries the chosen version and names the release it pins (evening rebuild, part 3)
- feat(ci): templates rebuilt per change in the evening, not per tag (evening rebuild, part 2)
- feat(templates): fingerprinted cells, release tables and the package pin (evening rebuild, part 1)
- feat(angular): the template base and the demo host move from Angular 18 (support tail) to 22, the newest build-window line; .NET single-line owner decision recorded
- fix(reactnative): the Slider fires onInput per step; record the verified slider event timing
- feat(ci): platform-version policy — a build window of the 3 newest LINES per tech, a dated 12-month support tail, enforced by the QA gate
- docs(effects): the natives take renderer — correct the demo-spec and tutorial copy that said otherwise
- chore(qa-gate): stamp LandingPage after the RN save/palette/mode port
- chore(core): regenerate after the RN LandingPage port (job 1.2 replay) + bible §12.6
- feat(reactnative): LandingPage saveMode + onSaveIsal, paletteColors, onModeChanged
- fix(templates): the npt download's first npm install writes a lock npm ci accepts
- chore(qa-gate): stamp ImageAnalysis after the RN self-compute port
- chore(core): regenerate after the RN ImageAnalysis self-compute (job 1.2 replay) + bible §12.6
- feat(reactnative): ImageAnalysis analyses its own src with the 20 layer props
- feat(ci): version matrix — Vue primary 3.5; Angular 22, React Native 0.87, Flutter 3.47.6 join as the newest tested versions
- feat(rn-host): React Native demo host on Expo SDK 56 / react-native 0.85.3 / React 19.2.3
- feat(wizard): page one shows the business categories as an autoplaying carousel
- chore(matrix): drop the landed npt effects cells from the matrix ledger
- fix(reactnative/host): forward the nativeHost Target knob to the widget; renderer drawn natively
- chore(qa-gate): stamp AnimationEffect, LightningEffect, Background after the RN matrix batch 2
- chore(core): regenerate after the RN matrix batch 2 (effects) + bible §12.6
- feat(reactnative): Background renderer + target + rendererChanged
- feat(reactnative): LightningEffect renderer + rendererChanged
- feat(reactnative): AnimationEffect renderer + rendererChanged + webglNotSupported
- chore(matrix): the fpt LandingPage cells leave the shrink-only matrix ledger
- chore(flutter/landing-page): regenerate after the save/export/palette port (drift-replay) + bible
- feat(landing-page/flutter): saveMode, paletteColors and the modeChanged / export / saveIsal events
- feat(matrix): the Blazor master is the event superset; a new matrix gate keeps the Product quality matrix complete
- chore(flutter/image-editor): regenerate after the config-boundary port (drift-replay) + bible
- feat(flutter/image-editor): port the master's config boundary to the hand-authored Flutter widget
- feat(hub): the Product quality overview opens with the visual matrix; first published ui-parity sweep (run5-full)
- chore(flutter): regenerate after the fpt matrix ports (drift-replay) + review stamps + bible
- feat(flutter/rte): export (html / html-page / docx) + import, enableImport, allowedExportFormats, onExport
- feat(flutter): Grid cellsRendered, ServerMonitor showFilterContent + filterRendered (matrix fpt)
- feat(flutter/effects): renderer + rendererChanged on AnimationEffect, Background and LightningEffect; webglNotSupported; Background target (matrix fpt)
- feat(flutter): Dialogue change, Slider input, Upload itemTemplate/itemsrendered, ResponsiveLayout override (matrix fpt)
- feat(hub): new home hero copy ×7 cultures; page-copy English converges on deployed databases
- chore(core): regenerate tech-stack-status after the RN ledger shrink (job 1.2 replay)
- chore(qa-gate): stamp Grid, ServerMonitor, ImageEditor after the RN matrix batch 1
- chore(core): regenerate after the RN matrix batch 1 (job 1.2 replay) + bible §12.6
- feat(reactnative): ImageEditor enableImport / enableLoad behind an onPickFile seam
- feat(reactnative): Upload itemTemplate + onItemsrendered (generator template)
- feat(reactnative): Grid onCellsRendered — isabyte:cellsrendered on RN
- feat(reactnative): ServerMonitor onFilterRendered — isabyte:filter-rendered on RN
- feat(hub): admin "Technology stack" page — CI platform versions, live matrix results, deviations and rollout
- feat(templates): "Which Visual Studio?" picks the Blazor solution file (.slnx for 2026, .sln otherwise)
- ci(setup): setup-windows.ps1 validates what it takes from the hub's answers — the download path must be the hub's own setup route, the SHA-256 64 hex digits, and the package version (written into Directory.Build.props) a plain numeric version
- ci(setup): setup-windows.ps1 pins the Blazor package the feed serves (an unstamped bundle pinned the repo's base 1.10.0: every page 500)
- ci(setup): setup-windows.ps1 starts the app without its launch profile, so it listens where the diagnosis looks
- ci(setup): setup-windows.ps1 reads a program's exit code before trimming its output (Select-Object -First stopped it early: 'bundle refused')
- ci(setup): isabyte-setup on Windows as one script, runnable on demand, and 3.7 stays a warning
- fix(templates): the Flutter first run discovers before it tests; setup-e2e passes for npm, NuGet and pub on TEST
- fix(hub): Approve and Deny on /activate always answered 400 — found by the first real setup-e2e run
- ci(setup): the nightly setup-e2e — isabyte-setup end to end on TEST, approved on the real /activate page
- i18n(templates): the Editors step in all eight cultures (owner approved the English, 2026-10-03)
- feat(templates): the React Native template moves to Expo SDK 56 — React Native 0.85, React 19 (setup tool phase 3b)
- fix(templates): SETUP.md and the editor tasks send the developer to isabyte-setup only where the tier's hub offers it
- ci(setup): ship isabyte-setup ×5 and the VS Code extension from every tag, served by TEST's /api/setup/tool (setup tool phase 7)
- feat(ide): the VS Code extension — an Isabyte panel with sign-in, the project's setup checklist, offline handling and MCP (setup tool phase 6)
- feat(templates): the Editors step — VS Code, Visual Studio, JetBrains, Android Studio and Xcode files, and SETUP.md in every download (setup tool phase 5)
- feat(setup): isabyte-setup, from a downloaded template to a running app (setup tool phase 4)
- feat(templates): setup data, runtime checks, Node 22 (setup programme phase 3)
- feat(hub): the setup API, per-machine feed credentials, subscribe-and-return (setup programme phase 2)
- feat(hub): device sign-in for tools on the developer's machine (setup programme phase 1)
- fix(hub auth): close the open redirect after sign-in; sign-up keeps its return address
- ci(templates): a tag proves the everything answer sets; a nightly proves Quick-start
- i18n(templates): the live preview's labels in seven cultures
- feat(templates, theme studio): free web fonts, one list for the wizard and the Theme Studio
- feat(templates): a live theme preview on real components in the design step
- feat(templates): the step rail marks the current step and the developer's choices
- feat(templates): on a phone the step icons stay pinned, edge to edge, current in view
- fix(templates): on a phone the wizard's step starts on the first screen
- fix(flutter/test): the terminal-client tab-bar test compiles on the Flutter 3.38.10 floor
- fix(templates): the build-guard test reads the manifest's build (job 1.1 bumps before it tests)
- fix(blazor-host): the master's nav follows the catalogs after the rebase onto the nav sweep
- fix(templates): downloads pin each tech's published package and carry its update routine; the configurator is checked against the live ecosystem; sign-in notes say how to stay current
- i18n: one word per culture for an agent skill, „Vorlage" in the German guide, and the guide's Blazor-only sentences corrected
- i18n(templates): the wizard in seven cultures; the guide's labels follow the translated wizard
- fix(templates): the previews' mockup theme comes from a fixed answer set and is copied only when a token changed
- feat(templates): the web and native proofs take --category=
, and refuse a filter that selects nothing - fix(templates): a download composed from another stack keeps the stack the developer chose
- fix(templates): a hostname typed as a URL no longer refuses the download
- feat(templates): the wizard in eight cultures, and an architecture summary before the code
- fix(templates): a backend-only download ignores its compose.env; stack READMEs say how to run the container
- feat(templates): containers, compose, Kubernetes and Traefik for every tech; social notes with update routines for every tech
- i18n(hosts): the system architect's guide section and menu entry in six cultures
- fix(templates): platform/ providers only fill what a tech lacks entirely
- feat(templates): the Empty app category, the beginners' route (all six techs)
- feat(hosts): "The system architect's Power Tools guide to AI development" on every home page; the wizard first in Getting Started
- feat(templates): the beginner's guide on every wizard question (8 cultures); composing needs an account, not a licence
- test(templates): no Traefik file outside a Traefik choice; the git-mv-by-paths lesson
- feat(templates): environments and certificates in the network step; the interview skill points to the wizard
- feat(templates): every tech covers every level of the wizard (a gate), and the network step
- fix(chart/flutter): island height, core theme fallbacks, legend and 2D lighting on the Flutter chart (sweep R2b (e))
- feat(chart/rn): React Native runs the master's own chart modules through a Canvas2D->SVG recorder (sweep R2b)
- fix(chart): web chart internals match the master — presets from the live master spec, demo-card tokens, ccg form-label (sweep R2b/R14/R16)
- fix(hub): release e-mail demo links resolve to each site's real route
- feat(hub): the home page gets the master's showcase sections — Desktop / Tablet / Mobile pictures through the master's own component
- test(skillsets): the fenced-prop example follows reality; the test runs in core npm test
- fix(demo): server-monitor + terminal-client open like the Blazor master (sweep R11 / R18)
- fix(flutter-host): demoArea.height is a min-height island, bounded only for fill-parent widgets
- feat(loader): every tech renders the master's WebGL loader by default (sweep R12)
- fix(image-analysis): one Save Pattern / Export Blueprint control, reachable in master fullscreen
- docs(demo-specs): correct stale facts in the Upload, Image analysis and Map descriptions
- fix(blazor-host): enhanced-navigation hooks subscribe on Blazor's registry; code-copy buttons work
- fix(blazor-host): the master's nav, Download menu, switcher and footer render in the visitor's culture
- fix(ci): job 3.3 runs last on the one-slot runner; proof installs survive a registry race
- fix(image-analysis): one Select Area control on every tech, normal + fullscreen
- fix(hosts): hub origin is a per-tier build setting on all six hosts (Angular + Flutter no longer hard-code TEST)
- fix(ui-parity): run4-full measurement artefacts H11–H14 + Flutter H8, and the --hub-base doc
- fix(hub): retire the last "downloads" leftovers — hub role line, Learning FAQ, nav breakpoint
- fix(tests): two CI flakes at the root — hub credentials HTML-encoding, RN cold first render
- fix(ci): job 1.6 survives a loaded host — RN host tests at 90 s per test, half the cores
- Merge origin/main into templates-v1 (54 commits: the download move, IE work, label localisation)
- feat(templates): Portfolio and Wiki on React Native and Flutter; CI job 3.3 proves and ships the frontends
- feat(hub): the download move's cut-over — hub /download is a redirect, not a page (WP11)
- feat(templates): Portfolio and Wiki on Vue and Angular; two Angular base fixes
- feat(flutter-host): the site's own public /download page (download move WP10)
- feat(rn-host): the React Native site's own public /download screen (download move, RN WP)
- fix(skillsets): no phantom names in the per-tech skill packs + a CI guard
- feat(angular-host): the Angular site's own public /download page (download move WP8)
- feat(vue-host): the Vue site's own public /download page (download move WP7)
- feat(react-host): the React site's own public /download page (download move WP6)
- feat(templates): Portfolio and Wiki on React; category skills made tech-neutral
- feat(templates): the React Native base and kernels; tech briefs for React Native and Flutter
- feat(hosts): shared catalog keys + .dl-* host-theme styling for the five tech /download pages (download move WP4)
- feat(templates): the Flutter base and kernels; the web newsletter forms send consent
- fix(i18n): localize Upload's labels (and the filter, placeholders, progress caption, dialogue close) on every tech
- feat(blazor): the master renders its own public /download from the hub downloads API (download move, master WP)
- fix(hub): /api/downloads keeps in rendered copy
- feat(templates): Portfolio and Wiki API in the Dart stack — all four stacks done
- fix(templates): the Blazor wiki data map says display name, never the email
- feat(templates): Portfolio and Wiki API in the FastAPI stack
- feat(templates): Portfolio and Wiki API in the Node stack
- fix(templates): separate backends ship their contract; web READMEs follow the chosen backend
- feat(templates): the AI team — switchable roles become specialist subagents in every agent format
- feat(templates): an example image for every business category in the wizard
- fix(templates): a vacuous conformance check; job 3.5 runs the suite's self-test first
- feat(hub): public GET /api/downloads/ + public skillset zips (download-move WP1)
- content(download): WP3 — pages/download copy for the six public tech download pages
- fix(templates): the wiki names editors by display name, never by email
- feat(mcp): serve the skill corpus as always-on MCP tools for tools-only clients
- feat(hub): /Account/Manage/Credentials — registry credential + Server Monitor key (download move WP2)
- feat(templates): the Portfolio and Wiki API — contract 1.1, conformance, .NET reference
- feat(templates): the Angular base and kernels, derived from the React master
- fix(rn): inherited Montserrat typography + hugging roots, CSS-value ports (sweep R8/R9)
- feat(templates): the Vue base and kernels, derived from the React master
- feat(hub/mcp): per-client MCP project instruction file + "Making the MCP server work" ×7 cultures
- fix(upload,image-analysis): port AllowAllFiles ×6 and the master demo's IA size (sweep R4, R6)
- test(templates): web-proof.sh serves through each base's npm run preview and reads the category
- feat(templates): the React base and kernels — the web master for Vue and Angular (wave 0, step 6)
- feat(templates): newsletter sign-ups in the contract (content 1.1) and all four stacks
- feat(templates): Portfolio and Wiki on the Blazor master (wave 0, step 8)
- chore(core): regenerate after V2-25 / V2-24 (job 1.2 replay)
- feat(image-editor): layer multi-select with Merge Layers (n) / Group Layers (n) on the core and Flutter (V2-24 / F2-11 / N2-06)
- chore(qa-gate): stamp the LandingPage cross-tech review after the shared connect-card refactor
- feat(image-editor): the AI panel opens with the master's connect card on every tech (V2-25 / F2-10 / N2-05)
- ci(templates): job 3.5 runs the backend conformance suite for all four stacks
- fix(core): elements carry their own reset instead of the host's Bootstrap reboot (sweep R1)
- i18n(nb-NO): "Release notes" is Versjonslogg everywhere (user ruling)
- test(templates): the hub wizard proof takes HUB_URL; passes on TEST at v1.10.95
- feat(hub): one-line top menu; release notes lose the feed panel and gain a version filter
- chore(core): regenerate after V2-23 / M2-13..M2-16 / C-18b (job 1.2 replay)
- feat(image-editor): text on a fresh layer, bar away from the knob, rotated text edits in place, live-rotating frame, text in transform mode (V2-23, M2-13..M2-16)
- chore(core): regenerate after M2-09..M2-12 / V2-21 / V2-22 (job 1.2 replay)
- feat(image-editor): the layer context menu and the bucket on a mask, every tech (V2-21, V2-22 / M2-12)
- fix(image-editor): dark-theme layer names take the theme text colour (M2-11, master)
- fix(image-editor): a merge leaves only the merged layer (M2-10, master)
- fix(image-editor): a calligraphy stroke commits where it was drawn (M2-09, master)
- merge: the tech-neutral content tree into templates-v1
- feat(templates): the Dart (shelf) stack passes conformance — all four stacks green
- feat(templates): the Node (Fastify + TypeScript) stack passes conformance
- fix(templates): uploaded files can never execute (stored XSS in /files/)
- fix(map): Angular NG0303 on dotted specPath keys, datapoints chrome only on its preset, Flutter export button + pin size + box (sweep R5)
- feat(templates): the FastAPI stack passes conformance; env beats the dev DB settings file
- refactor(templates): one tech-neutral content tree; template sources no longer git-ignored
- feat(templates): wave 0 — the kernel contracts, conformance, and the .NET reference API
- ui-parity: fix the run3-full measurement artefacts (H1-H10 + hub wordmark noise)
- Merge remote-tracking branch 'origin/main' into templates-v1
- test(rn-host): the pinned nav list includes "Start from a template"
- chore(core): regenerate after M2-08 (job 1.2 replay)
- fix(image-editor): the foreground colour is the premise for every tool colour (M2-08, all techs)
- Merge remote-tracking branch 'origin/main' into templates-v1
- Merge remote-tracking branch 'origin/main' into templates-v1
- fix(licence): no key is unlicensed on React Native and Flutter too
- fix(chart): histogram ReferenceError (R3) + chart sizes honoured on every tech (R2)
- feat(template-bench): count only completed work; the company-page pilot
- fix(templates): reconstruction run 2, honest backend status, and the token bench harness
- feat(templates): "Start from a template" x6, the intro article, and the first reconstruction exercise
- ci(templates): prove, bundle and seed the business templates on every tag
- feat(qa-gate): four template checks; bible chapter 15 on business templates
- feat(templates): push the template to GitHub, GitLab or Gitea
- feat(templates): the template wizard on the hub
- feat(templates): a modern website design for the Blazor templates
- feat(templates): the Blazor company-page slice, proven in a browser
- ui-parity: measure the component, not the host chrome
- feat(templates): the Blazor base boots; shell kernel, CLI, database engines as providers
- feat(templates): the wizard's catalogue and Isabyte.Templates.Core
- docs(demo-specs): drop the removed cssClass from four hidden-knob notes
- Merge-follow-up: CssClass removal + master gaps + date/time pickers combined; RichTextEditor restamped; bible §12.6/§13.4, 27 checks, claim no-css-class-parameter
- Merge branch 'worktree-agent-acaf7e227fe066c39' into review-2026-09-28b
- Merge branch 'worktree-agent-ab2ad3c3c13b2ab05' into review-2026-09-28b
- fix(playgrounds): date/time bound knobs are pickers, as on the master
- feat(master-demo): close the 14 genuine "Not on master page" parameter gaps
- Merge-follow-up: matrix regenerated from the combined tree, knob order synced to the master (4 specs), React host locale test follows the LP/IE resx keys, bible §2.3/§2.4/§12.6/§12.7
- Merge branch 'worktree-agent-ad6bd8c7ca9fead7c' into review-2026-09-28b
- Merge branch 'worktree-agent-ad62e34e0bbea8976' into review-2026-09-28b
- Merge branch 'worktree-agent-a66d0771d7e2df888' into review-2026-09-28b
- feat(image): port Srcset/Sizes/Placeholder/Fallback to the Blazor master + Image Basics demo knobs
- fix(product-matrix): "Not on master" means the master page lacks the control
- demo sites x6: follows the visitor's culture (was a literal "en"; Flutter had none)
- feat(blazor-demo): wire the master CssClass knob on 21 pages + a Title field on 15 chart pages
- hub: follows the culture the page renders in (was a literal "en" on every culture)
- Flutter golden: the LP AI-connect card reads "Isabyte Power Tools" (nightly matrix run 591 caught the stale golden)
- Merge branch 'worktree-agent-ace98c8b4c53e8646' into review-2026-09-28b
- feat(server-monitor): one AddIsabyteServerMonitor() registration, Map* fail fast without it
- collector: the start-up error always names the ServerMonitor:MonitorKey setting
- Merge branch 'worktree-agent-a4c620d13e36f8ae0' into review-2026-09-28b
- ServerMonitor agent packages declare OpenSSL (self-contained .NET still dlopens libssl)
- feat(server-monitor): source/sourceToken — poll the collector's HTTP read API on all six techs
- feat(server-monitor): collector + HTTP read API for non-Blazor dashboards
- Merge branch 'worktree-agent-a2e7703ec73018ac0' into review-2026-09-28b
- feat(hub): catalog name + EULA read "Isabyte Power Tools" (EULA v1.2, editorial)
- ServerMonitor installers keep appsettings.json (HubUrl + MonitorKey) across upgrades
- Merge branch 'monitor-key' into review-2026-09-28b
- feat(server-monitor): shared monitor key + push-only ingest route for the ServerMonitor service
- tests: re-anchor the docs-availability negatives on permanent gaps; RN host shell/locale tests follow the nav + LP resx changes
- Merge branch 'worktree-agent-a7146b36ca4bb0518' into review-2026-09-28b
- content(bpt-only): sweep all four Blazor-only articles' samples and claims against the code, x6 cultures
- content(bpt-only): speech-to-text Step 1 lists each component's real backends, all six cultures
- content(bpt-only): fix four Blazor-only hub articles against the code, all six cultures
- qa-gate content-tech-parity: an article with an empty base body is translated only for the techs that carry it
- Merge branch 'worktree-agent-a08997bf60aa4423b' into review-2026-09-28b
- Merge branch 'worktree-agent-ab814881ea31854ed' into review-2026-09-28b
- content(i18n): es-ES + zh-CN for four Blazor-only hub articles
- content(hub): nb-NO + sv-SE for the four Blazor-only articles
- content(i18n): de-DE + fr-FR for the four Blazor-only hub articles
- Merge branch 'hub-content-fixes' into review-2026-09-28b
- registry-auth: throttle only DB evaluations, so a burst from the build host can't 429 CI's valid restores
- content(hub): correctness pass — fixes in every culture, English checked against the code, downloads retired
- Merge branch 'docs-hub-canonical' into review-2026-09-28b
- feat(docs): hub canonical — the Blazor site renders the hub's docs + tutorials
- Merge branch 'worktree-agent-af42c067d7d817ced' into review-2026-09-28b
- Merge branch 'worktree-agent-a520759a7e7e01d1f' into review-2026-09-28b
- content(i18n): hub article batch phase 2 - fr-FR for docs/mcp/ai-skills/terminal tutorial
- Merge branch 'worktree-agent-a3be089be10df4dff' into review-2026-09-28b
- content(i18n): hub article batch phase 2 - de-DE for docs/mcp/ai-skills/terminal tutorial
- Merge branch 'worktree-agent-a874931c48ee8f7d9' into review-2026-09-28b
- content(i18n): hub article batch phase 2 - es-ES for docs/mcp/ai-skills/terminal tutorial
- Merge branch 'worktree-agent-ae8923db6846b1902' into review-2026-09-28b
- content(i18n): hub article batch phase 2 - sv-SE for docs/mcp/ai-skills/terminal tutorial
- content(i18n): hub article batch phase 2 - zh-CN (46 bodies: docs x6 techs, terminal tutorial, mcp, ai-skills)
- Hub article phase 1 merged; drop the phase-2 working plan from the tree
- content(i18n): hub article batch phase 1 - nb-NO for docs/mcp/ai-skills/terminal tutorial + phase-2 plan
- Drift fix: regenerate skillsets, Flutter playground registry and RN ImageEditor dist; add tools/drift-replay.sh (the whole job-1.2 chain)
- Merge branch 'worktree-agent-a4561b725521139e4' into review-2026-09-28b
- Merge branch 'worktree-agent-abf7397b026381058' into review-2026-09-28b
- feat(map natives): port every owed isabyte-map prop/event to RN + Flutter
- Merge branch 'worktree-agent-ac3ab7d02ee5c1c71' into review-2026-09-28b
- feat(rn/image-editor): port the master's config boundary to the hand-authored RN widget
- feat(hub): /download and /support are translatable, in all six cultures
- Merge branch 'worktree-agent-a978ed19bb76d6f48' into review-2026-09-28b
- feat(natives): close owed native-surface gaps — Upload button colours, AnimationEffect minSpeedThreshold/zIndex, Background config, TerminalClient shell
- i18n(lp,ie): every LandingPage/ImageEditor label gets a master resx key, translated ×7
- Customer AI-skill corpus: all 8 phantom types replaced with the real API; orphan tests run in CI; pilot demo apps retired; native-gap ledger split into owed vs not-applicable
- qa-gate: renew the LandingPage cross-tech review stamp
- Visual row in the hub's product matrix; nav parity on all six sites; Flutter Filter events and LandingPage height; Claude defaults that stop sending rejected parameters
- Quality gates for props, translations and hub links; a cross-tech visual parity matrix; hub-boundary and leftover fixes
- Translations: ~600 component strings in sv/fr/es/zh, license.setup.* in all six cultures, terminology fixes
- fix(npt): the full-screen image editor fills the phone screen
- fix(npt,fpt): every Applications demo goes full screen on a phone; Back keeps the catalog's scroll
- build(rn-host): the React Native host type-checks clean, and CI job 1.6 checks it too
- test(rn): the IA-5 frozen-time preset tests pin time with fake timers
- build(hosts): React/Vue/Angular type-checks run clean and block CI — and a Vue docs-language bug
- test(rn-host): the nb-NO locale test asserts the labels the island renders
- fix: small issues from the home-page batches — dark-mode bezel, Flutter tests, analyzer, Knob.vue
- feat(home): the four showcase apps as Desktop / Tablet / Mobile pictures on all six techs
- fix(server-monitor): the mobile detail sheet's charts draw instead of staying blank
- Download menu goes to the hub's /download page ×6; one tech choice at the top of that page
- fix(home): RN category cards stack as blocks, 3 + 3 like the master; master cards equal across rows
- chore(home-showcase): retire the old showcase keys, one shared fallback rule, Task 11 sweep
- test(rn-host): the docs TOC test follows the Tools -> Applications rename
- feat(flutter-host): the home page's four showcase products render live
- feat(rn-host): the home page's four showcase products render live
- feat(angular-host): the home page's four showcase products render live
- feat(vue-host): the home page's four showcase products render live
- fix(home-showcase-probe): the landing-page root wait was master-only (R15)
- feat(demo): a core-model .isal for the five derived hosts (R14)
- feat(react-host): the home page's four showcase products render live
- fix(qa-gate): two false greens the first CI run caught
- fix(qa-gate): reconcile with the tech-bleed work that landed in parallel
- Merge remote-tracking branch 'origin/main'
- docs(skills): the gate becomes the verification step every skill points at
- ci: add job 1.0, the QA gate, and block releases on it
- feat(qa-gate): a house glossary for translation terminology
- feat(qa-gate): a cross-tech review stamp for the 15 hand-authored components
- feat(qa-gate): cross-tech page parity, product wiring and issue-flow wiring
- fix(content): the React Native tutorial stops telling readers about Dart
- feat(qa-gate): pin demo sandbox containment across all four demo pages
- feat(qa-gate): pin the hub's authorisation surface and the licence gating
- fix(demos): Blazor was hiding three components the other five techs all list
- feat(qa-gate): a fast tree-invariant quality gate, and the skill rot it found
- fix(tests): repair the hub suite after UserAiKeyService gained IConfiguration
- feat(hub): the seven public pages ship translated in all eight languages
- fix(hosts): give a switch knob's label room to breathe in the params panel
- feat(hub): the remaining six public pages become translatable
- copy(switcher): drop "Open any of them — your licence covers them all." everywhere
- feat(hub): Products becomes translatable, and the culture survives going interactive
- feat(hub): page-content layer for translatable pages, and guides honour the carried culture
- feat(hub): the language picker becomes site-wide, and the hub honours the carried culture
- feat(hub): language picker moves into the nav stripe as one icon control; About opening rewritten
- fix(hub): humbler hero copy; make the paired download buttons a flex row
- feat(home-parity): showcase i18n keys x8 cultures, the shared scale-to-fit CSS, and a gated fixture stager
- fix(master-home): the showcase panels were 1179px wide at every viewport; scale them instead
- Merge remote-tracking branch 'origin/main' into home-parity-live-demos
- fix(hub): the light theme's wordmark needs DARK artwork — "isa" was invisible on white
- feat(hub-home): tri-coloured isabyte wordmark + a hero line that carries the About vision
- fix(home-showcase-probe): isPainted() missed visibility/opacity; reconcile the landing-page zero-section fallback
- fix(home-showcase-probe): landing-page selector could never fail; no check detected clipped-but-present content
- fix(language): the demo page's showcase cards follow the culture selector, on every tech
- fix(master-home): fill the Landing Page showcase with a real 4-section page, drop 700px→420px
- fix(multi-select): the popup no longer re-animates on every checkbox toggle
- feat(master-home): Server Monitor and Landing Page showcases render live; mockup markup removed
- feat(master-home): Image Editor and Terminal showcases render the live components
- fix(home): query the real New Image dialog class, not a lookalike
- test(home): outcome probe asserting all four showcase panels render live components
- fix(demo): stop the fixtures README citing evidence that doesn't exist
- feat(demo): shared .isai/.isal fixtures for the home-page showcases
- feat(hub): the About page becomes a personal letter, in all seven languages
- Merge: Isabyte MCP agent instructions + three-layer conformance test
- fix(mcp-e2e): make the branch's gates able to fail — final review wave
- Regenerate after the RN layer thumbnails (RN dist)
- ImageEditor round 2 N2-02: React Native layer thumbnails (V2-04 / V2-19 on device)
- Regenerate after the V2-17 labels + engine (job 1.2 replay)
- ImageEditor round 2 V2-17 (+V2-03): Transform mode + Import image into shape — engine lockstep, core element, Flutter, RN renderer
- fix(mcp-ci): smoke-test the built image, not a dependency-less source tree; purge stale skillstage
- docs(mcp-wizard-e2e): drop a redundant missing-from-corpus/ section
- ci(mcp): gate on the MCP smoke test, stamp the image version, ship AGENTS.md in both zips
- fix(mcp-e2e): Layer 3b review round — MapStaticAssets() root-cause attempt, defensive probe
- feat(mcp-e2e): Layer 3b — assert the ImageEditor actually renders
- fix(mcp-e2e): Layer 3a review round — informative CORPUS DEFECT line, RULING R8 file handoff
- fix(mcp-e2e): Layer 3a — RULING R7, corpus-defects/ overrides, and a running app
- feat(mcp-e2e): Layer 3a — scaffold and build from the served wizard blocks
- fix(mcp-e2e): Layer 2 — add the missing wizard placeholder-glossary check
- feat(mcp-e2e): Layer 2 — corpus and instruction conformance over MCP
- fix(mcp-e2e): narrow the Layer-1 theme-tool catch to -32601 only
- feat(mcp-e2e): Layer 1 probe — the MCP server is actually working
- fix(mcp-e2e): close two false-positive gaps in the claim checker (R5, R6)
- feat(mcp-e2e): symbol index and the four claim-checker rules
- fix(mcp): advertise the theme tool only when a CLI is configured; correct its path and harden JSON extraction
- fix(mcp): make the smoke version assertion independent of the server's own env lookup
- feat(mcp): serve AGENTS.md as initialize instructions, real version, drop README resource
- test(mcp): bidirectional routing validation in agents-md test
- feat(mcp): AGENTS.md as the single-source agent instructions
- ImageEditor round 2 M2-07: a freehand stroke lands unselected on the master (Pencil / Spray / Calligraphy)
- Regenerate after the clone pick-up / release labels (job 1.2 replay)
- ImageEditor round 2 M2-05/V2-15: clone tool pick-up / release + brush-size hover ring (master, core, Flutter)
- Regenerate after the ImageEditor open items (job 1.2 replay): Flutter playground registry + docs data, image-editor locale catalogs (8 cultures) + the Flutter catalog, skillsets, component-test status, docs.json, RN dist
- Image editor locale labels on every derived tech (L2-01): the component joins gen-component-locale-labels.mjs, the four host label maps and the Flutter catalog
- ImageEditor round 2 open items: Flutter banner-format picker (F2-06, custom formats threaded), content-signed adjustment cache key (F2-04), masked-layer rotation refuted (F2-03), npt page body colour (H2-02)
- React host: the switch-off test for the Image Library knob (H2-01) — its first insertion missed the file (anchor on a renamed title); register count corrected to React 123
- React / Vue playgrounds: a switched-OFF onValue knob CLEARS its prop (null) instead of withholding it — the Image Library kept its 35 items after the switch went off (H2-01); live evidence for the round 2 cross-tech matrix
- Regenerate after ImageEditor round 2 cross-tech (job 1.2 replay): core dist + types + RCL copy, React/Vue/Angular dists and demo bundles, Angular vendor, RN engine copy + dist, playgrounds.json, Flutter bundle_data + playground registry, docs/skillsets/component-test outputs
- Flutter generator: the package barrel exports centerOfPoints / opCenter / objectCenter (extraExports) — the barrel is generator-owned, the hand edit in b9d3ff08 was rewritten by the next flutter-gen run
- ImageEditor round 2 cross-tech, WP-B/D3/E1: the Flutter widget half of round 2 — delete-layer confirm, Delete key, outside-canvas drag start, text commit, geometry-centre pivot, Auto on tap, thumbnails/flatten via the engine builder; demo greys via chromeOverrides; the Image Library
- ImageEditor round 2 cross-tech, WP-B0: the rotation / skew pivot is engine geometry — centerOfPoints / opCenter / objectCenter exported from the engine (TS), the element delegates
- LandingPage / BannerProducer demo libraries come from the gallery inventory: Featured (9) for the LandingPage master pages + spec preset, all 35 for the BannerProducer
- ImageEditor: the crop confirm says "can be undone" in the six remaining cultures (nb-NO, sv-SE, de-DE, fr-FR, es-ES, zh-CN)
- ImageEditor round 2 cross-tech, WP-C: RN native widget — delete-layer confirm on every path (V2-09), stroke rotation pivots about the engine's opCenter (V2-18), watermark mock note corrected
- ImageEditor round 2 cross-tech, WP-A: DOM hosts verified per host — npt web island applies the per-element theme vars ON the element, injector tests on React/Vue/Angular, probes cover react/angular/rn
- Core: the playgrounds theme test follows V2-08 (image-editor vars ride elementThemeVars, the demo-scope emit is gone), so the core suite is green on main again
- React host: the content test waits for the first article's heading (a CPU-contention flake on the merged-tree run)
- Merge origin/main (ImageEditor round 2 slices A1/A2, R2-C, R2-D) into the ServerMonitor follow-ups, playground bundle regenerated on the merged tree
- Regenerate after ImageEditor round 2 R2-D (job 1.2 replay): core dist + RCL copy, React/Vue/Angular dists and demo bundles, Angular vendor, playgrounds.json, Flutter bundle_data
- ImageEditor round 2 R2-D: demo defaults ON, gallery-generated Image Library, two-tone crosshair cursor, master-parity greys (M2-01/02/03, V2-01/02/08)
- Regenerate after ImageEditor round 2 R2-C (job 1.2 replay): core dist + types + RCL copy, React/Vue/Angular dists and demo bundles, RN engine copy + dist
- ImageEditor round 2 R2-C + V2-12: a calligraphy frame is the ink's bounds on all three engines (M2-04 / V2-11), the master's crop is an undoable command with canvas resync (M2-06), drags may start on the workspace with pointer capture (V2-12)
- Regenerate after ImageEditor round 2 slices A1 + A2 (job 1.2 replay): core dist + types + css, RCL copies, React/Vue/Angular wrappers (lifted labels type), dists, styles.css and demo bundles, skills docs, docs.json / docs_data.dart, RN engine copy + dist
- ImageEditor round 2 slices A1 + A2 (user test findings after v1.10.77): the engine owns the per-layer op mapping (thumbnails + flatten), a decoded-image cache, geometry-centre rotation, a back-buffered raster, a watermark layer, text commit on canvas press, Delete key, clone sliders, delete-layer confirm, 30 master swatches
- Component-test parser: action cells, multi-knob cells and a mapped Preset anchor at their master position; two resynced knobOrders corrected
- ServerMonitor (Flutter): the frame header and the network card no longer overflow; the filter drawer's placement is parity, not a defect
- Demo sections: the columns grid renders as many columns as the section declares on React, Vue and Angular
- Demo specs: knobOrder resynced with the master pages for animation-effect, app-framework, background and lightning-effect
- TerminalClient demo: sandbox is always on, and the public demo host maps neither the terminal hub nor the monitor hub
- Regenerate after ImageEditor N-07 (job 1.2 replay): RN dist (the text glyph painter)
- ImageEditor N-07: the RN widget paints text glyphs — a cached system font, the master's M-04 wrap, baselines at top + ascent, clipped to the box; the jest Skia mock gains matchFont + Text
- Regenerate after ImageEditor C-21 (job 1.2 replay): core dist + RCL copy, React/Vue/Angular dists and demo bundles
- ImageEditor C-21: the four stacked canvases are sized once, not on every render; _renderCanvas refreshes grid, guides and the draft overlay itself
- Regenerate after the ImageEditor M-04 port (job 1.2 replay): core dist + RCL copy, React/Vue/Angular dists and demo bundles
- ImageEditor M-04 ported after acceptance: the core and Dart text wraps break a whitespace-free token at the box width like the textarea; the master's wrap hardened first (a box narrower than a glyph looped forever, the backwards search was quadratic)
- Regenerate after the ImageEditor X-01 / X-02 fixes (job 1.2 replay): core dist + types + RCL copy, React/Vue/Angular dists and demo bundles, RN engine copy + dist (selectObject history option)
- ImageEditor X-01 / X-02 reproduced and fixed: a drawn shape now lands selected with the tool reverted to Move (C-18, master EndShapeCreate parity, sub-3px guard), the master's shape stroke defaults (C-19), text clipped to its box on the core + Flutter (C-20); master _wrapText breaks a whitespace-free token at the box width (M-04, master first)
- Regenerate after the ImageEditor RN native follow-ups (job 1.2 replay): core dist + RCL copy, React/Vue/Angular dists and demo bundles, RN engine copy + dist (the preset normaliser fix, the widget build)
- ImageEditor RN native follow-ups: the shared PlanLayers export tree (N-01), live preset clock + Capture/Resume (N-05), the document tab strip (N-06), host persistence via expo-file-system/expo-sharing (N-03); C-17 the shared engine's load normaliser now keeps a captured effect's animating flag; the C-14 extract test's last line corrected
- Regenerate after the ImageEditor W5 leftovers (job 1.2 replay): core dist + RCL copies, React/Vue/Angular wrappers and dists (lifted labels type), RN engine copy + dist (paste / extract / text-style ops), demo bundles, docs and skills
- ImageEditor W5 leftovers: Copy/Paste with the master's internal clipboard, the floating bar's Snap to position and Extract to layer, and the text object's Properties groups — core + Flutter
- Regenerate after ImageEditor W5 slice 3 (job 1.2 replay): core dist + RCL copies, React/Vue/Angular wrappers and dists (lifted labels type), RN engine copy + dist (the document stack), the Flutter barrel (DocumentSlotInfo export), demo bundles, docs and skills
- ImageEditor W5 slice 3: the document stack and tab strip — the engine opens / switches / closes / renames documents with per-document history, the core renders the master's tab strip above the workspace with the Close Image dialog and the New-Image tab branch, the Flutter port drives its strip from the same engine stack
- Regenerate after ImageEditor W5 slice 2 (job 1.2 replay): core dist + RCL copies, React/Vue/Angular wrappers and dists (lifted labels type), RN engine copy + dist, demo bundles, docs and skills
- ImageEditor W5 slice 2: live preset layers — the engine's opt-in animating flag with Capture/Resume, the master's live effect overlay in the core (auto-play clock, pointer-driven ripple, Space), the preset Properties block replacing the inline row bar, and the Flutter port with one preset Ticker
- Regenerate after ImageEditor W5 slice 1 (job 1.2 replay): core dist + RCL copies, React/Vue/Angular wrappers and dists (lifted labels type), RN engine copy + dist, demo bundles, docs and skills
- ImageEditor W5 slice 1: object style setters — core setObjectStyle with opt-in border alignment / dash / corner radius, a live Properties shape group, the Dart lockstep port, and the Flutter hit-test becomes the master's ContainsPoint (F-13)
- Regenerate the RN package dist + core source maps after ImageEditor W3/W4
- ImageEditor W4 export closure: Flutter exports and saves reach a file on the web, JPEG/WebP are what they claim, RN native encodes the requested format, the master's Ctrl+S no longer opens the browser dialog
- ImageEditor W3 Flutter chrome parity: shapes take the swapper foreground, the frame follows a drag, width/height size the component, the right panel scrolls like the master, the rail loses its scrollbar
- ImageEditor W2 host wiring: the RN and Flutter demo pages pass the demo watermark; the RN island gives its DOM the master's font stack
- Regenerate the web dist for ImageEditor W1 (core bundle + CSS, RCL wwwroot copies, react/vue/angular dist + styles.css + demo islands, angular vendor)
- ImageEditor W1 core chrome parity: the master confines its dialogs to the editor; the element takes the master's rail, swapper, properties, fonts, dialog family, Save semantics and shortcut map
- ImageEditor cross-tech review: the deviation register, the review probe and the parity-index row
- ServerMonitor Phase 2: final review fixes — Dart cap measured on compact JSON, the Flutter overflows recorded, RN preset test id, skill-ref corrections, pinned-prop serializer test
- Switch and checkbox knob rows take the master's shape (React/Vue/Angular/RN)
- React Native ServerMonitor: playground hands the widget sample filter content
- Flutter ServerMonitor: device class from the viewport provider; demo host threads sample filter content
- Task 9 review fix: drop the unproven preset-switch workaround, extend the timer-teardown skill note
- Task 10:
columnsdemo section — React Native and Flutter renderers - Task 9:
columnsdemo-section type — schema, ServerMonitor spec content, React/Vue/Angular renderers - Task 8 review fix: preset-inline cap measured on the bare value, not the rendered attribute
- Task 7 review fix: Flutter event-log coalescing has ONE implementation
- Task 8: current-config serializers receive the active preset's props
- Task 7: event-log coalescing on all five playground hosts
- ServerMonitor Phase 2 (Task 5 review fix): presetControl "dropdown" requires unique preset names
- ServerMonitor Phase 2 (Task 6): presetControl: "dropdown" for React Native and Flutter hosts
- ServerMonitor Phase 2 (Task 5): presetControl: "dropdown" for long preset lists
- ServerMonitor element: [slot=filter] children are adopted into the filter host; the demo spec carries sample filter content
- ServerMonitor spec sync: knobOrder follows the master, theme is preset-owned, the process cap is gated, Single-CPU matches
- ServerMonitor demo copy: the five Phase 1 keys translated in es-ES, de-DE, fr-FR, zh-CN and sv-SE
- ServerMonitor master: Show filter content switch with sample content; the component's stale hostname allowlist is gone
- Regenerate component-test-status for the AnimationEffect knobs
- AnimationEffect: the review's three fixes, landed from the parked WIP
- The docs TOC test follows the Tools -> Applications rename
- Regenerate the three artifacts the Tools -> Applications rename missed
- Regenerate the web dist bundles after reconciling main with origin/main
- The AI panel always shows how to connect, on every tech
- Rename the "Tools" component category to "Applications", all six techs
- Retire the Theme Builder demo page and its nav entries
- Dropdown stops rendering outside its container in a narrow layout
- ServerMonitor: fix a vacuous platform-fallback test, add real EffectivePlatform coverage, and a permanent two-copy guard
- ServerMonitor demo: Max displayed processes becomes a slider, matching the spec
- ServerMonitor demo: the Platform knob is labelled like the other five techs
- ServerMonitor: the regenerated test-matrix artifact for the demo-page changes
- ServerMonitor demo: tests documenting the Current Configuration card and its 1024px gate
- ServerMonitor demo: an event log, with per-tick snapshots coalesced
- ServerMonitor demo: Max displayed processes and Platform label knobs
- ServerMonitor demo: a Preset dropdown replaces the Theme knob
- ServerMonitor: a Platform parameter overrides the detected platform label
- ServerMonitor demo: sandbox is always on, and the host allowlist is gone
- AppFramework: the menu and its items stop re-rendering each other forever
- The editor presents its own full screen on Flutter; on RN the island yields instead
Maintenance release.
- The five derived techs get the phone layout: the mobile layer was dormant, not missing
- ResponsiveLayout: the natives publish their device class to descendants
- The LandingPage editor works on a phone: the master's seven 390x699 defects
- Flutter demo host: remove the orphaned widget tail that has broken its build since 2026-09-08
- Restore the action-knob helpers the release merge dropped from the playground loaders
- Rebuild the derived web artifacts for the v1.10.68 merge
- Merge branch 'lp-editor-parity' into release-v1.10.68
- Merge remote-tracking branch 'origin/main' into release-v1.10.68
- LandingPage React Native: the properties panel reads like the master's (register step R-R-4)
- LandingPage React Native: typing on the canvas, in place (register row N-25)
- LandingPage Flutter: grip drags land, and the toolbars sit where the razor's do (register step R-F-2)
- LandingPage Flutter: the canvas renders the master's page (register step R-F-1)
- LandingPage React Native: the razor's font stack on web, and a drag released off the canvas cancels
- LandingPage React Native: drag and drop, panel collapse and the field toolbars (register step R-R-3)
- LandingPage React Native: the editor shell, chip and toolbars match the master (register step R-R-2)
- LandingPage React Native: the canvas renders the master's page (register step R-R-1)
- Text-input validation message honours the hidden attribute; LandingPage props type badge is the master's pill (register row X-06)
- LandingPage core: the properties panel is the master's detail panel, built from core elements (register step S-06)
- LandingPage core: the master's toolbar popovers, drop selection and popover closing; harness drag-end step (register steps C3b, H-05)
- AppFramework: the derived web artifacts for e72b4f9b
- AppFramework across all six techs, and its Device Mode buttons stop overflowing
- LandingPage: the button block is the master's
element, on the canvas and in the export (register step C4b) - LandingPage core editor: the master's toolbars, grid chrome, panel collapse, sidebar split, tab strip and shell environment (register steps C2, C3, C5, C6, S-01/05/07/08/10)
- LandingPage core canvas: the master's page CSS, typed sections and chrome-free editing (register steps C0-b, C4a, C1)
- LandingPage templates carry the master's own section content (register row F0-1, step C0-a)
- LandingPage editor parity: the gap register with the RN baseline, and the CanvasKit crop anchored on the widget's own canvas
- LightningEffect review: the derived web artifacts for ad9b7f8f
- LightningEffect review: the master's Strike! button and renderer buttons in every host, the npt web island, native bolt stagger + WebGL-look sparks, the Flutter photo target
- ui-parity: a CanvasKit family for scenarios — pointer targets from the master's measured boxes
- ui-parity: host bridges so the RN and Flutter editors can be handed the fixture; runner fixes from the first baselines
- npt: the browser-window-size demo shows the live resolution
- ui-parity: drive the LandingPage EDITOR per state — scenarios, canvas-relative geometry, per-state verdicts
- ImageAnalysis demo: the fixed gallery lion in all six techs, the master gets the params drawer, RN web and Flutter render the image
- Background follow-up: the 2D fallback and Flutter web painters were a vertical mirror of WebGL, image mode never painted under WebGL, the master owns the presets, and every host draws them as buttons
- Flutter host: serve the gallery from web/, not the unreadable asset bundle
- Params drawer docks inline, so the demo content is never behind it
- Flutter TimeSelector: the popup is content-sized, so its footer stops overflowing
- Rebuild the derived web bundles so they carry the Carousel element
- Components rail across the hosts: React Native gets the master's left menu on demo pages, and all five hosts get its per-category collapse chevron
- Regenerate the committed web artifacts for the Background review from a clean worktree
- Background review: bubble spheres + periodic tiling across all five renderers, the
_booldefaultTrue class, page-mode see-through host, the npt web island, Flutter per-pixel fields, and the master's control shapes in every host
- Regenerate component-test-status.json — the last stale drift artifact
- Regenerate the docs + skillset artifacts stranded by the TimeSelector rewording
- Regenerate the committed web artifacts so the dist drift check passes
- RN: rebuild the committed LandingPage dist for the height fix
- RN LandingPage: implement the manifest's
height, so the editor stops sprawling - host-theme: drop the demo-area inset for LandingPage ONLY
- Revert "host-theme: demo area drops its inset so components get the master's width"
- angular host: fix the NG9 break that stopped it compiling
- host-theme: demo area drops its inset so components get the master's width
- core LandingPage: keep the height chain unbroken so the editor stops sprawling
- Flutter: a palette-dropped SECTION lands at the pointer, not at the end
- Flutter: lockstep-port the LandingPage engine insert index
- RN: re-sync the vendored LandingPage engine (positional adds)
- core LandingPage: positional palette adds + pointer-half drop placement
- Palette drags draw the same blue drop indicator, and land on it
- Sections tree: render draggable as "true"/"false", not a bool
- Sections tree: drag content between sections, one owner for section drag (bpt master)
- IsabyteUpload review: the master reads browser files without seeking, the demo page mirrors the hosts' knobs, the native wrappers open the web file dialog and the icon knob draws glyphs
- Fix the v1.10.59 tag run: sort the i18n catalogs, regenerate the Flutter catalog, de-flake the image-analysis snapshot tests
Maintenance release.
- Unship the parallel in-progress work swept into v1.10.57 by mistake
- Fix the WASM client's licence-kernel reference path (v1.10.56 was a no-op)
- Fix the Blazor WASM twin throwing at its entry point on TEST
- Panel topOffset, demo header and nav parity, framework hint, native home pages
- Summonable panel contract, params drawer, cross-site language hop, licence pages, download menu
- content(zh-CN): complete Chinese for the Learning section — 44 bodies
- content(fr-FR): complete French for the Learning section — 44 bodies
- content(es-ES): complete Spanish for the Learning section — 44 bodies
- content(de-DE): complete German for the Learning section — 44 bodies
- content(sv-SE): complete Swedish for the Learning section — 44 bodies
Maintenance release.
- fix(hub): render the MCP/AI guide pages —
shipped as a literal tag
- fix(apt-host): bind the Home FAQ MCP link to the hub, not a deleted field
- feat: hub-hosted guides, switcher route mapping, DateRange flicker fix, license docs + setup pages, per-tech AI skillsets
- fix(language+links): dropdown removal-focusout race, Flutter content links, RN SVG flags
- fix(demo): resync 9 diverged WASM demo twins from their Server bodies
- feat(ie+nav): matrix 0/0/0 — image-editor banner formats + image library; alphabetical demo navs
- feat(map): B6 map epic — matrix 95→10, only the two documented IE gaps remain
- feat(elements): B4+B5 element-prop parity — wrongControl 0, missing down to the map epic
- feat(charts): legend, data-change animation, tooltip templates, client re-bin + date format (red-cells B3)
- feat(demo): matrix param-gap sweep + onValue/valueMap knob machinery (red-cells B1+B2)
- docs: sweep close-out — expect-comment correction + ticket 15
- chore: dead mirror fields + controller doc + expect provenance
- fix(i18n): regen locale labels for aiChatCopy + gate the catalogs in CI
- fix(core): #11b ai-chat chrome family under the CSS-coverage guard
- feat(lp): #11 assistant-bubble Copy action ×3 techs
- fix(i18n): #13c dedicated resx key restores aiConnectInfo translations
- fix(copy): #13b core aiConnectInfo matches its real key store
- fix(copy): #13 native key-storage wording + brand purge completion + zh-CN provider term
- docs(ie): #10 desktop-only AI panel is a documented decision
- test(core): #12 deflake isabyte-chart under full-suite load
- test(demo): #9 harden host clone tests against getter-contract changes
- refactor(lp): #8 drop the unemitted prompt field from the clone contract
- fix(tools): #6 scope-verify the overlay crop + record the LP expectation
- fix(lp): #6 template-modal parity (harness crop bug + core CSS drift)
- feat(rn): #5 port applyAiImageResult (AI image ingestion)
- fix(lp): #4 isolate embedded-editor events at the embed boundary
- feat(tools): #3 wire react+angular into the ui-parity route map
- fix(i18n): #7 nb-NO KI consistency + es/sv polish
- feat(i18n): #7 real translations for the AI strings ×6 cultures
- fix(tickets): #2 vue canvas crash + core-dump sweep
- feat(hub): Developer role access model + per-user AI key page
- test(flutter): regenerate the LP AI connect-card golden after de1903e1
- fix(dist): the event reorder's remaining build outputs
- fix(matrix): green the event-order line — manifest events follow the master
- fix(matrix): green the render-order line — relative ordering + knobOrder sync
- test(demo): vue+angular cover the canned clone loop
- docs(demo): LP clone pipeline recipe
- feat(demo): landing-page demos walk the canned Clone-with-AI loop
- feat(flutter): LP host-owned Clone-with-AI pipeline
- feat(rn): LP host-owned Clone-with-AI pipeline
- feat(lp): optional requestId correlation on the clone contract
- fix(lp): unconditional clone-dialog close, empty-generation guard, request-scoped staleness
- feat(lp): host-owned Clone-with-AI pipeline (lpCloneRequest + cloneResponse)
- fix(copy): LP canned reply matches its prompt-only payload + clean the aiMessages API doc
- docs(demo): LP AI chat recipe
- feat(demo): landing-page demos answer ai-request with the canned reply
- fix(lp): align AI bubble chrome to the master CSS across natives + doc the list-identity contract
- feat(flutter): LP host-owned AI chat (aiMessages + onAiRequest)
- feat(rn): LP host-owned AI chat (aiMessages + onAiRequest)
- test(lp): pin host-owned mode reversal + whitespace prompt guard
- feat(lp): host-owned AI chat surface (aiMessages + isabyte:ai-request)
- feat(demo): rn image-editor demo answers onAiRequest with the canned reply
- docs(demo): RN ImageEditor AI surface now available
- fix(rn): AI chat draft persistence, transcript scroll, and hardened payload tests
- feat(rn): hand-port the ImageEditor AI chat surface (aiMessages + onAiRequest)
- fix(hub): wire the Theme Studio AI panel through the AI proxy
- chore(i18n): regen landing-page labels + docs payload (final review fold-ins)
- fix(i18n): resx parity + proxy-copy accuracy + localized brand purge (final review)
- fix(i18n): gen-demo-copy hard-fails when an EXTRA_KEYS neutral value is missing
- feat(i18n): register AI demo/connect strings in the translation pipelines
- fix(copy): AI connect-card brand + proxy-accurate key-storage copy (EN)
- feat(docs): render usageNotes on all five generated API-reference pages
- docs(demo): AI wiring recipe (image-editor) + honest LP AI status
- feat(docs): demo-spec usageNotes → sanitized usage in the docs payload
- feat(demo): flutter image-editor demo answers onAiRequest with a canned reply
- feat(demo): angular image-editor demo answers ai-request with a canned reply
- feat(demo): vue image-editor demo answers ai-request with a canned reply
- feat(demo): react image-editor demo answers ai-request with a canned reply
- feat(matrix): control-kind dimension per parameter
- feat(matrix): cell detail as a modal; move the matrix to the Support group
- fix(fpt): null-safe hostname in the signed-in hint web shim
- feat(test-matrix): admin Product Test matrix, bug pins, and host test mode
- feat(hub): explain passkeys and API tokens, and make passkey sign-in reachable
- feat(hub): /download leads with the OS choice, and it filters the page
- fix(hub): shrink the staff view pill and let it through on small screens
- fix(hub): package-feed URLs in the docs follow the tier, not the stored text
Maintenance release.
- fix(hosts): ship the switcher's manifest into the images, and unpin the probe
- fix(switcher): theme tokens in host-theme.css, and a visible modal title
- feat(switcher): the last two hosts — React Native and Flutter
- feat(switcher): the brand mark opens a product switcher, on the hub and 4 hosts
- fix(ci): give the RN matrix cell a 30s per-test timeout — 5s assumed an idle runner
- fix(ci): restore the wrapper matrix on tags — it is the release's only component tests
- fix(tools): scope the concurrency canary to this repository
- tools(ci): concurrency canary + correct CLAUDE.md's disk-hygiene claims
- perf(ci): make the release pipeline parallel-safe and move the version matrix nightly
- fix(hub): products page links to the tier you're browsing, not production
- fix(hub): phones open My Account instead of a nav menu they can't scroll
- feat(hub): the tech badge opens a product switcher instead of one exit
- feat(hub): product boxes wear their tech's colours, and the wordmark fits
- fix(support): generate the component dropdown instead of hand-keeping it
- fix(server-monitor): render the sort arrow, not the literal text "u25BC"
- fix(hub): drop the generic glyph beside the flagship product headline
- feat(hub): give the terminal + server-monitor home cards their screenshots
- fix(content): make every tutorial tech-centric, not a port of Blazor
- fix(quickpub): refuse to run while a v* release run is active
- feat(tools): quickpub — tech-scoped publish to the live TEST demo hosts in minutes
- fix(docs-gen): keep Blazor-migration framing out of the API Reference
- fix(content): stop the Learning pages teaching Vue customers Blazor
- fix(fpt): give the docs page its hero band and card index on phones
- fix(npt): collapse the nav behind a hamburger on narrow shells
- fix(hosts): nav dropdowns open on tap and keyboard, not only hover
Maintenance release.
- fix(rn): stop Metro from applying the type-only tsconfig paths at runtime
- fix(blazor): deliver the licence verdict from static SSR, not only interop
- fix(rn): pin one React type identity for the host tsc + refresh stale tests
- feat(registries): per-customer auth for package downloads (hub-minted, licence-tied)
- feat(theme-studio): mobile-friendly on phones — activate the builder's dormant mobile chrome; core licence gate restores on late verdicts
- feat(hub): admin dashboard categories render as distinct group panels
- feat(hub): CI-seeded release notes are VISIBLE immediately, on both tiers
- feat(hosts): auth-aware nav (Sign in <-> My Account + Log out) x6 techs; mobile menu closes on navigation
- feat(hub): prune old release artifacts behind /download
- docs(registries): three guards, not two
- fix(registries): refuse an id that is both dropped and pinned
- feat(registries): retire a package name entirely (DROP_IDS)
- refactor(blazor-test): migrate the test clients off the pre-rename package
- feat(registries): purge BaGetter rows whose blob directory is missing
- fix(registries): repair the package-version prune and extend it to all 3 feeds
- feat(ci): prove licensing works in every artifact before anything is published
- feat(demo-host): minify and integrity-stamp the RCL assets the demo site serves
- fix(apt-host): carry the demo licence in a generated constant, not import.meta.env
Maintenance release.
- feat(hosts+hub): nuget.isabyte.com, Isabyte provider band ×6 homes, catalog grid, full-bleed demo headers, mobile flag alignment
- fix(skills): multi-client README at the SOURCE the skillset zip is built from
- feat(hub): download page UI cleanup + multi-client AI skillsets guidance
- feat(hub): home page — component showcase replaces filler sections
- feat(hub): release-notes lists all three registries; admin note editor stays on-screen on phones
- fix(hub): release-notes page mobile overflow + the focus box on every page title
- fix(ci): un-strand the v1.10.13 deploys — stale Dockerfile gates + dash-echo jq kill
- feat(hub): /products overhaul — flagship + six tech voices + Build-with-AI
- feat(demos): demo-page description copy derived from the master resx, localized ×8
- feat(hub): light theme by default + dark-mode Bootstrap coverage + nav/email fixes
- test(docs): un-rot the RN availability assertions the d1b27fdf map port stranded
- feat(i18n): all 8 master cultures in the 5 native hosts + language-selector a11y
- recovery: add off-site copy of the debiansrv backup/restore kit
- fix(demo): vendor the Nordic GeoJSON sample + surface load failures
- fix(release): seed notes + assets into the hub, not the retired demo-db
- fix(map): GeoJSON review remediations — demo circuit guard + renderer input hardening
- fix(demo): cap the map demo's offline downloads at 250 tiles
- docs(map-offline): record FMTC's GPL-3.0 + fix the stale gap-matrix pointer
- feat(rn-map): persistent offline tiles via the UrlTile cache contract, zero new deps
- feat(flutter-map): IsabyteMapFileOfflineStore — persistent app-sandboxed tiles, zero new deps
- feat(flutter-map): offline store interface + async tile resolver
- fix(registry): folded map chrome never gets generic Flutter builders
- chore(docs): availability regen for the map-chrome natives
- feat(map-chrome): MapDatapoints + MapOfflineStorage hand-ported to RN and Flutter — 50/50





