v7.8.1
Patch release: makes project-exported BUML files load again in the Web Modeling Editor. v7.8.0's project import flow rejected model.py files that embed a Project(...) wrapper around a flat domain-model block, returning a "Could not parse BUML file" error or, worse, silently importing an empty diagram. No metamodel, generator, or API contract changes — backend-only.
Fixes
parse_buml_contentsandbox missingProject: the class diagram converter'sexec()sandbox inbesser/utilities/web_modeling_editor/backend/services/converters/buml_to_json/class_diagram_converter.pystripsimportandfromstatements before execution and injects the metamodel symbols it needs.Projectwas never in that injection list, so any file whose tail looked likeproject = Project(name=..., models=[domain_model], ...)failed withNameError: name 'Project' is not definedbefore theDomainModelcould be lifted out. A no-opProjectstub is now provided in the sandbox so trailing project definitions parse harmlessly.project_to_jsonignored flat project files: the project converter atbesser/utilities/web_modeling_editor/backend/services/converters/buml_to_json/project_converter.pyonly scans for# STRUCTURAL MODEL #(and the numbered/titled variants) as section anchors. Files exported with the older flat layout (# Classes,# Relationships,# Generalizations,# Domain Model, then# PROJECT DEFINITION #) hitmodels=[...]but produced zero extracted sections, leaving every diagram empty. When section extraction yields nothing,project_to_jsonnow falls back to_build_project_from_single_diagramagainst the full content and restores the projectname,description, andownerfrom theProject(...)wrapper./get-json-modelread the wrong project shape: the project branch inbesser/utilities/web_modeling_editor/backend/routers/conversion_router.pystill looked for the legacy flat shape (parsed_project["ClassDiagram"]) instead of theschemaVersion=3nested shape (parsed_project["diagrams"]["ClassDiagram"][i]). Even afterproject_to_jsonstarted returning populated diagrams, the endpoint surfacedNoneand raised "Could not parse BUML file." The branch now honourscurrentDiagramTypeandcurrentDiagramIndices, falling through the legacy priority order if the active diagram is empty.
A regression test (test_project_to_json_handles_missing_section_headers) in tests/utilities/web_modeling_editor/backend/services/converters/test_project_single_diagram_fallback.py guards the section-header-less project case end-to-end.