Skip to content

v7.13.0

Latest

Choose a tag to compare

@ArmenSl ArmenSl released this 22 Jul 08:24
80ec34f

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-page takes 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 dedicated gui_personalization_utils service 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. 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.

Fixes

  • User-profile criterion parsing: a criterion typed as age == 22 is now split on the stored == operator instead of the first = (which previously captured = 22 as the value and broke type conversion); blank criteria (e.g. age =) are skipped rather than materialized as empty-valued slots.
  • OCL evaluation on user profiles: constraints referencing an attribute left unset on a profile are skipped instead of building an invalid expression like " >= 0 and <= 120" and crashing with a Python invalid syntax error.
  • Backend cleanup: the personalization OpenAI model default is consolidated into a single DEFAULT_OPENAI_MODEL constant, a stray debug print and two dead branches 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 switching, web-app version selection in the generation dialog, and review cleanups (shared variant types, HTML-escaped page/profile names, non-silent generation-flush timeout).