Version 7.3.0

This release introduces a new UserDiagram for describing the different end-user profiles of apps, the Agent Personalization workflow to create variations of the same agent for each user profile, and a standalone chatbot deploy target on the existing GitHub deploy flow. It also tightens the deploy export so diagrams.json written into deployed repos is re-importable through the editor, and gates the new recommendation endpoints behind GitHub OAuth so the BESSER server’s OpenAI quota cannot be drained anonymously.

New Features and Improvements

User Diagram

  • Added UserDiagram as a first-class diagram type for describing the different user profiles of created apps, capturing personal information, language profile, competences, accessibility constraints, abilities, and cultural dimensions in the same metamodel space as the rest of B-UML.

  • Shipped an OCL constraint set (pi_age_range, skill_name_not_empty, education_required_fields, disability_description_not_empty) declared in constants/user_buml_model.py and evaluated by the existing check_ocl_constraint pipeline.

  • Extended the validation router so the same /validate-diagram endpoint covers UserDiagram payloads alongside the existing diagram types.

  • Added a dedicated palette in the Web Modeling Editor (UserModelName, UserModelAttribute, UserModelIcon).

  • The attribute-edit panel now supports enumeration values with case-insensitive enum lookup.

  • Documentation: docs/source/buml_language/model_types/user_diagram.rst.

Agent Personalization Pipeline

  • Based on a given agent model, user model, and agent profile (defining user specific customizations), a personalized model can be generated, reflecting the customizations

  • The BAF_generator can now ingest multiple agent models with a user-profile-to-agent-model mapping and generate an agent that provides a personalized experience based on the available profiles.

  • Documentation: docs/source/generators/agent_personalization.rst.

Standalone Chatbot Deploy

  • Extended POST /github/deploy-webapp to accept a deploy_config.target of "webapp" or "chatbot" (the frontend translates its "agent""chatbot" at the wire boundary).

Web Modeling Editor

  • Added the agent-personalization workflow with AgentConfigurationPanel (absorbing the previous two personalization panels) and an agent-variant management UI on the agent diagram.

  • Added the Deploy → “Publish to Render” agent target so users can deploy a personalized chatbot directly from the editor.

  • Added v2 LocalStorageRepository migrations for besser_systemConfig and the legacy agentConfig key.

  • Migrated useGitHubRepo.createRepo to apiClient.post with X-GitHub-Session forwarded; DeployWebappResponse is hoisted at module scope and the deployment_urls/is_first_deploy fallback lives in a single toGitHubRepoResult mapper.

  • Added a real UI-driven Playwright spec at tests/e2e/github-deploy.spec.ts that drives the production Deploy menu and asserts the captured request body carries projectExport.version === "2.0.0" and a non-empty project.diagrams map.

  • Object diagram now prefers the className label for user-model elements.

B-UML Metamodel

  • Fixed Object._validate_object_completeness so a child class that only inherits attributes is still flagged when no slot values are provided. The check now calls classifier.attributes and classifier.inherited_attributes() directly (instead of guarding with hasattr/getattr defaults that masked real type bugs).

Testing

  • Backend full pytest suite: 771 passed, 5 skipped, 3 xfailed.

  • New unit tests cover user_profile_utils (safe_path traversal/prefix-sibling, generate_user_profile_document smoke), agent_config_recommendation_utils (markdown-fence JSON extraction, clamp + whitelist normalization, lru_cache identity), and agent_config_manual_mapping_utils (representative profiles for older-adults, language-code-switching, and low-literacy abbreviation rules; determinism + deepcopy safety).

  • New behavioral integration tests in test_api_integration.py cover /recommend-agent-config-mapping end-to-end (real helpers, no LLM mock), /recommend-agent-config-llm with out-of-range LLM responses to verify clamping, and /deploy-webapp with deploy_target="agent" driving the chatbot path via a mocked PyGithub client.

  • Frontend vitest: 23/23 on shared/utils/__tests__/projectExportUtils.test.ts (existing 20 + 3 new envelope-contract cases — version pin, ISO exportedAt round-trip, diagramTypes argument forwarding).

  • Tightened test_relationship_fk_placement slicing to stop at the #--- relationship-block separator so a non-deterministic class-ordering run no longer leaks Sensor.dt_id into PhysicalAsset’s slice.

  • Added .github/codeql/codeql-config.yml excluding py/clear-text-storage-sensitive-data: the rule fires on the f.write(render_config) calls in the deploy paths because render.yaml references env-var KEY names (OPENAI_API_KEY, STREAMLIT_DB_PASSWORD) so Render can wire secrets at deploy time — no password VALUES are written.