Version 7.13.0¶
Minor release: LLM-driven GUI personalization. The Web Modeling Editor can now adapt no-code GUI pages to individual user profiles with an LLM, model those profiles with a dedicated form editor and the modeling agent, and generate the web application together with one personalized variant per profile. Additive only: when a project defines no variants, generation is byte-for-byte the previous single-app behavior.
Highlights¶
Per-profile GUI page variants: from the GrapesJS-based no-code editor you can auto-personalize a page for a user profile with an LLM. A new backend endpoint
POST /personalize-gui-pagetakes a page snapshot ({components, css}) plus a user-profile model and returns the same shape adapted in styling and wording, ready to be imported back as a page variant. The personalization logic lives in a dedicatedgui_personalization_utilsservice module (the router stays a thin HTTP layer) and its LLM system prompt is a versionable module constant.Personalized web-application generation: the web-app generator can emit one complete app per version — a Base app plus one personalized variant per user profile — each into its own profile-named subfolder of the output ZIP. The frontend assembles the per-version GUI models (
webAppVersions) and the backend generates and zips them; a project with no variants generates exactly one app as before.User-profile modeling: a new form-based user-profile editor, plus modeling- agent support for creating and editing user-profile (
UserDiagram) models, so profiles can be authored by hand or by the assistant.
Fixes¶
User-profile criterion parsing: a criterion typed as
age == 22is now split on the stored==operator instead of the first=(which previously captured= 22as the value and broke type conversion), and blank criteria (e.g.age =) are skipped rather than materialized as empty-valued slots.OCL evaluation on user profiles: constraints that reference an attribute left unset on a profile are now skipped instead of building an invalid expression like
" >= 0 and <= 120"and crashing with a Pythoninvalid syntaxerror.Backend cleanup: the personalization OpenAI model default is consolidated into a single
DEFAULT_OPENAI_MODELconstant (removing inconsistent/invalid defaults), a stray debugprintand two dead branches were removed, and the new parsing logic is covered by regression tests.
Frontend (via the submodule bump)¶
The frontend submodule moves to include the GUI-personalization UI: the user-profile form editor, per-profile page variants with variant switching, web-app version selection in the generation dialog, and review cleanups (shared variant types, HTML-escaped page/profile names in the pages list, and a non-silent generation-flush timeout).