Version 7.1.0¶
Bug fix and quality-of-life release: resolves 13 issues across BESSER, the Web Modeling Editor, and the Modeling Agent, with improvements to validation, deployment, GitHub sync, and the AI-assisted modeling experience.
Highlights¶
Deserialization fix: Pickle roundtrip for models with enumerations no longer crashes (#490).
SQLAlchemy reserved keyword handling: Class names like
List,Table,Columnno longer collide with SQLAlchemy imports (#489, PR #491).Agent validation at build time: State/intent name collisions are caught early, preventing Render deployment crashes (WME #101).
GitHub sync improvements: B-UML models stored alongside JSON, filename tracks project renames, cross-tab sync (WME #99, WME #100, WME #93).
Vibe modeling agent fixes: Object name duplication, class rename artifacts, and deletion failures resolved (WME #95, WME #96, WME #98).
Validation improvements: Real error messages shown instead of generic placeholders, multiplicity and enum checks added (#487).
B-OCL grammar rewrite: New visitor-pattern OCL parser replaces the legacy listener implementation, fixing parser hangs, infinite loops, and tight coupling (B-OCL #9).
Bug Fixes¶
BESSER Core¶
Fix Enumeration deserialization recursion (#490):
Enumeration.__getattr__now usesobject.__getattribute__to avoid infinite recursion during pickle deserialization – same pattern asObject.__getattr__in v7.0.0.Fix SQLAlchemy reserved keyword conflicts (#489, PR #491): All SQLAlchemy imports aliased with underscore suffixes to prevent class name collisions. Added
validate_model()with clear error messages. Addedenum(lowercase) to reserved names.Add enum value validation in object diagrams (#487):
ObjectModel.validate()now checks that enumeration attribute values are valid literals. Added completeness warnings for objects with no attributes.Add multiplicity validation in domain model:
DomainModel.validate()now checks min/max multiplicity constraints on all association ends.Fix validation error messages: Validation router now passes actual error messages to the frontend instead of generic placeholders. Hyphens in association names, invalid multiplicities, and other construction errors now show specific details.
B-OCL Grammar & Parser¶
Major rewrite of the Object Constraint Language (OCL) parser, addressing 6 critical design flaws (B-OCL #9):
Parser hangs on bad input: New grammar with proper precedence hierarchy + custom
BOCLErrorListenerthat collects errors immediately. Malformed input now produces clear error messages in <4ms instead of hanging up to 60s.Left recursion fixed: ANTLR4’s built-in precedence climbing replaces indirect left recursion through
expression?patterns.Atomic IF-THEN-ELSE-ENDIF: Single rule enforces all four keywords appear together. Standalone
elseis no longer syntactically valid.Visitor pattern: New
BOCLVisitorImpl(~350 lines) replaces the legacy listener pipeline (BOCLListener+RootHandler+FactoryInstance, ~1700 lines total). Grammar changes no longer break the evaluator.Removed legacy classes:
ConstraintRoot,FactoryInstance,InitRoot,OCLParserWrapper,PostConditionRoot,PreConditionRoot,RootHandler, andcomparison_operator_checkerare removed in favor of the new visitor + evaluator pipeline (lives in theboclpackage).New files in BESSER:
besser/BUML/notations/ocl/visitor.py,error_handling.py,BOCLVisitor.py(generated visitor base class), regenerated grammar files.Comprehensive OCL tests: New university model test suite covering complex constraints, navigation, collection operations, and edge cases.
B-OCL-Interpreter package: Released as
boclv1.0.0 on PyPI, now a proper external dependency (added torequirements.txt).
Web Modeling Editor Backend¶
Fix Render deployment crash with agents (WME #101):
process_agent_diagram()now validates at build time. GitHub deploy only processes agent diagrams when the GUI uses agent components.Store B-UML models on GitHub sync (WME #100):
save_project_to_githuband deploy endpoints now exportdomain_model.pyandagent_model.pyinto abuml/directory alongside the project JSON.Merge PR #102: Type-specific input controls for attribute default values – enum dropdowns, number inputs, date/time pickers, boolean dropdowns.
Web Modeling Editor Frontend¶
Fix vibe agent class deletion (WME #95):
removeElement()now throws an error when the target class isn’t found, instead of silently returning the unchanged model.Fix vibe agent object name duplication (WME #98): Frontend strips
: ClassNamefrom objectName before concatenating. Modeling agent prompts and schema enforce proper instance naming.Fix JSON filename on project rename (WME #99):
saveProjectToGitHub()derives the file path from the current project name at save time.Fix GitHub cross-tab sync (WME #93): Added
storageevent listener so linked repo state syncs across browser tabs.Fix GUI table column overflow: Added scrolling to columns manager panel when many columns are configured.
Fix composition relationships in GUI tables:
getEndsByClassId()now handlesClassCompositionandClassAggregationrelationship types.Update method behaviour tooltip (WME #94): Changed from “Python code editor” to “code behaviour”.
Documentation¶
Added GitHub Integration section to the frontend user guide covering connecting, saving, loading previously synced projects, and commit history (WME #92).