framework-m-studio 0.17.2__tar.gz → 0.18.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (297) hide show
  1. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/CHANGELOG.md +7 -1
  2. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/PKG-INFO +3 -3
  3. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/pyproject.toml +3 -3
  4. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/cli/release/__init__.py +2 -0
  5. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/cli/release/cli.py +13 -0
  6. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/cli/release/orchestrator.py +96 -0
  7. framework_m_studio-0.17.2/src/framework_m_studio/static/assets/index-CVv-McVR.js → framework_m_studio-0.18.0/src/framework_m_studio/static/assets/index-viorSw2T.js +45 -45
  8. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/static/index.html +1 -1
  9. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/templates/plugin/package.json.template +4 -4
  10. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/CHANGELOG.md +7 -1
  11. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/package.json +3 -3
  12. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_release_cli.py +137 -0
  13. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/.gitignore +0 -0
  14. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/LICENSE +0 -0
  15. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/README.md +0 -0
  16. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/docs/api/index.md +0 -0
  17. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/docs/user-guide.md +0 -0
  18. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/__init__.py +0 -0
  19. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/aggregate_builder.py +0 -0
  20. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/app.py +0 -0
  21. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/cli/__init__.py +0 -0
  22. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/cli/codegen.py +0 -0
  23. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/cli/constants.py +0 -0
  24. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/cli/contrib.py +0 -0
  25. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/cli/deps.py +0 -0
  26. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/cli/dev.py +0 -0
  27. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/cli/dev_link.py +0 -0
  28. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/cli/docs.py +0 -0
  29. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/cli/new.py +0 -0
  30. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/cli/proxy.py +0 -0
  31. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/cli/quality.py +0 -0
  32. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/cli/release/gitops.py +0 -0
  33. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/cli/release/graph.py +0 -0
  34. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/cli/release/lockfile_sync.py +0 -0
  35. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/cli/release/models.py +0 -0
  36. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/cli/release/versioning.py +0 -0
  37. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/cli/screenshots.py +0 -0
  38. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/cli/studio.py +0 -0
  39. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/cli/translations.py +0 -0
  40. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/cli/utility.py +0 -0
  41. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/cli/verify.py +0 -0
  42. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/codegen/__init__.py +0 -0
  43. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/codegen/annotation_parser.py +0 -0
  44. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/codegen/generator.py +0 -0
  45. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/codegen/meta_extractor.py +0 -0
  46. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/codegen/parser.py +0 -0
  47. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/codegen/templates/__init__.py.jinja2 +0 -0
  48. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/codegen/templates/controller.py.jinja2 +0 -0
  49. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/codegen/templates/doctype.py.jinja2 +0 -0
  50. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/codegen/templates/test_doctype.py.jinja2 +0 -0
  51. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/codegen/test_generator.py +0 -0
  52. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/codegen/transformer.py +0 -0
  53. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/core/adapters/cst/mutator.py +0 -0
  54. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/core/codegen/augmentation_gen.py +0 -0
  55. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/core/discovery/pydantic.py +0 -0
  56. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/core/discovery/roles.py +0 -0
  57. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/core/frontend.py +0 -0
  58. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/core/gitops.py +0 -0
  59. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/core/repositories/fs_mx_repo.py +0 -0
  60. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/core/repositories/git_mx_repo.py +0 -0
  61. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/core/shell.py +0 -0
  62. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/data_elements.py +0 -0
  63. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/dev_config.py +0 -0
  64. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/discovery.py +0 -0
  65. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/docs/ast_parsers.py +0 -0
  66. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/docs/audit.py +0 -0
  67. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/docs/exporters.py +0 -0
  68. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/docs/formatters.py +0 -0
  69. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/docs/generator.py +0 -0
  70. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/docs/openapi.py +0 -0
  71. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/docs/screenshots.py +0 -0
  72. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/doctypes/virtual_doc_type/__init__.py +0 -0
  73. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/doctypes/virtual_doc_type/controller.py +0 -0
  74. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/doctypes/virtual_doc_type/doctype.py +0 -0
  75. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/doctypes/virtual_field/__init__.py +0 -0
  76. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/doctypes/virtual_field/controller.py +0 -0
  77. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/doctypes/virtual_field/doctype.py +0 -0
  78. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/ephemeral.py +0 -0
  79. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/git/__init__.py +0 -0
  80. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/git/adapter.py +0 -0
  81. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/git/github_provider.py +0 -0
  82. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/git/protocol.py +0 -0
  83. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/guardrail.py +0 -0
  84. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/live_preview.py +0 -0
  85. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/metadata_editor.py +0 -0
  86. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/print_adapter.py +0 -0
  87. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/protocol_scanner.py +0 -0
  88. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/py.typed +0 -0
  89. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/resources/blueprints/standard.json +0 -0
  90. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/resources/roles/crm.json +0 -0
  91. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/resources/roles/financial.json +0 -0
  92. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/resources/roles/hr.json +0 -0
  93. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/resources/roles/inventory.json +0 -0
  94. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/resources/roles/project.json +0 -0
  95. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/resources/roles/standard.json +0 -0
  96. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/routers/__init__.py +0 -0
  97. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/routers/aggregate.py +0 -0
  98. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/routers/doctypes.py +0 -0
  99. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/routers/print.py +0 -0
  100. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/routers/publish.py +0 -0
  101. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/routers/roles.py +0 -0
  102. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/routers/shell.py +0 -0
  103. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/routes.py +0 -0
  104. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/schema_diff.py +0 -0
  105. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/schemas.py +0 -0
  106. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/sdk_generator.py +0 -0
  107. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/services/__init__.py +0 -0
  108. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/services/aggregate.py +0 -0
  109. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/services/doctype.py +0 -0
  110. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/services/print_service.py +0 -0
  111. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/services/publish.py +0 -0
  112. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/services/shell.py +0 -0
  113. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/services/workspace.py +0 -0
  114. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/shell_plugin_config.py +0 -0
  115. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/sidebar_config.py +0 -0
  116. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/static/.gitkeep +0 -0
  117. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/static/assets/index-D8voZ-lm.css +0 -0
  118. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/static/assets/rolldown-runtime-CMxvf4Kt.js +0 -0
  119. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/static/assets/vendor-icons-D2zb75Z-.js +0 -0
  120. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/static/assets/vendor-react-BOMmkTcq.js +0 -0
  121. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/static/assets/vendor-tamagui-jE-K7TKU.js +0 -0
  122. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/static/favicon.png +0 -0
  123. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/storage/__init__.py +0 -0
  124. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/storage/file_adapter.py +0 -0
  125. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/storage/git_api_adapter.py +0 -0
  126. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/storage/protocol.py +0 -0
  127. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/templates/app/README.md.template +0 -0
  128. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/templates/app/__init__.py.template +0 -0
  129. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/templates/app/doctypes_init.py.template +0 -0
  130. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/templates/app/pyproject.toml.template +0 -0
  131. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/templates/doctype/__init__.py.template +0 -0
  132. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/templates/doctype/controller.py.template +0 -0
  133. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/templates/doctype/doctype.py.template +0 -0
  134. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/templates/doctype/test.py.template +0 -0
  135. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/templates/plugin/.gitignore.template +0 -0
  136. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/templates/plugin/Dashboard.tsx.template +0 -0
  137. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/templates/plugin/README.md.template +0 -0
  138. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/templates/plugin/favicon.png +0 -0
  139. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/templates/plugin/index.html.template +0 -0
  140. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/templates/plugin/index.tsx.template +0 -0
  141. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/templates/plugin/plugin.config.ts.template +0 -0
  142. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/templates/plugin/theme.css.template +0 -0
  143. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/templates/plugin/tsconfig.json.template +0 -0
  144. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/templates/plugin/vite.config.mfe.ts.template +0 -0
  145. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/templates/plugin/vite.config.ts.template +0 -0
  146. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/visual_designer.py +0 -0
  147. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/src/framework_m_studio/workspace.py +0 -0
  148. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/.gitignore +0 -0
  149. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/.npmrc +0 -0
  150. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/Dockerfile +0 -0
  151. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/README.md +0 -0
  152. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/eslint.config.js +0 -0
  153. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/index.html +0 -0
  154. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/public/favicon.png +0 -0
  155. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/App.css +0 -0
  156. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/App.test.tsx +0 -0
  157. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/App.tsx +0 -0
  158. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/components/AggregateTab.test.tsx +0 -0
  159. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/components/AggregateTab.tsx +0 -0
  160. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/components/AutoForm.tsx +0 -0
  161. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/components/AutoTable.tsx +0 -0
  162. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/components/CodePreview.tsx +0 -0
  163. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/components/ControllerEditor.tsx +0 -0
  164. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/components/ERDView.tsx +0 -0
  165. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/components/FieldEditor.tsx +0 -0
  166. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/components/LayoutDesigner.tsx +0 -0
  167. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/components/MetaEditor.test.tsx +0 -0
  168. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/components/MetaEditor.tsx +0 -0
  169. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/components/MigrationTab.test.tsx +0 -0
  170. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/components/MigrationTab.tsx +0 -0
  171. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/components/ModuleExplorer.tsx +0 -0
  172. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/components/NestedEditorDrawer.tsx +0 -0
  173. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/components/PrintTab.test.tsx +0 -0
  174. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/components/PrintTab.tsx +0 -0
  175. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/components/PropertiesPanel.tsx +0 -0
  176. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/components/SandboxPreview.tsx +0 -0
  177. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/components/TableFieldEditor.tsx +0 -0
  178. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/components/breadcrumb/index.tsx +0 -0
  179. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/components/fields/DefaultFieldComponents.tsx +0 -0
  180. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/components/fields/index.ts +0 -0
  181. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/components/fields/resolveFieldComponent.ts +0 -0
  182. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/components/layout/index.tsx +0 -0
  183. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/components/menu/index.tsx +0 -0
  184. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/designer/DesignerCanvas.test.tsx +0 -0
  185. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/designer/DesignerCanvas.tsx +0 -0
  186. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/designer/components/PaletteItem.tsx +0 -0
  187. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/designer/components/SectionDropZone.tsx +0 -0
  188. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/designer/hooks/useDesignerState.ts +0 -0
  189. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/index.css +0 -0
  190. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/index.tsx +0 -0
  191. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/pages/doctypes/edit.tsx +0 -0
  192. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/pages/doctypes/index.ts +0 -0
  193. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/pages/doctypes/list.tsx +0 -0
  194. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/pages/index.ts +0 -0
  195. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/pages/prints/PrintBuilderPage.tsx +0 -0
  196. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/pages/prints/index.ts +0 -0
  197. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/pages/shell-config/ShellConfiguratorPage.tsx +0 -0
  198. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/pages/shell-config/index.ts +0 -0
  199. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/providers/ThemeContext.ts +0 -0
  200. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/providers/constants.ts +0 -0
  201. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/providers/data.ts +0 -0
  202. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/providers/theme.tsx +0 -0
  203. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/providers/useTheme.ts +0 -0
  204. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/registry/defaultComponents.ts +0 -0
  205. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/registry/fieldComponents.ts +0 -0
  206. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/registry/index.ts +0 -0
  207. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/services/mock_data.ts +0 -0
  208. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/setupTests.ts +0 -0
  209. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/utils/mockDataGenerator.ts +0 -0
  210. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/src/vite-env.d.ts +0 -0
  211. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/tsconfig.json +0 -0
  212. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/tsconfig.node.json +0 -0
  213. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/vite.config.ts +0 -0
  214. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/studio_ui/vitest.config.ts +0 -0
  215. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/cli/test_new.py +0 -0
  216. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/cli/test_verify.py +0 -0
  217. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/codegen/test_annotation_parser.py +0 -0
  218. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/codegen/test_meta_extractor.py +0 -0
  219. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/conftest.py +0 -0
  220. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/core/adapters/test_cst_mutator.py +0 -0
  221. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/core/codegen/test_augmentation_gen.py +0 -0
  222. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/core/discovery/test_pydantic_discovery.py +0 -0
  223. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/core/discovery/test_role_discovery.py +0 -0
  224. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/core/repositories/test_fs_mx_repo.py +0 -0
  225. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/core/test_frontend.py +0 -0
  226. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/core/test_gitops.py +0 -0
  227. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/core/test_shell.py +0 -0
  228. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/doctypes/virtual_doc_type/test_virtual_doc_type.py +0 -0
  229. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/doctypes/virtual_field/test_virtual_field.py +0 -0
  230. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_aggregate_builder.py +0 -0
  231. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_aggregate_builder_branches.py +0 -0
  232. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_aggregate_generator.py +0 -0
  233. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_api_routes.py +0 -0
  234. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_builder_shell_routes.py +0 -0
  235. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_cli.py +0 -0
  236. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_cli_openapi.py +0 -0
  237. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_cli_utility.py +0 -0
  238. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_codegen_cli.py +0 -0
  239. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_contrib_cli.py +0 -0
  240. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_core_frontend.py +0 -0
  241. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_data_elements.py +0 -0
  242. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_data_elements_extended.py +0 -0
  243. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_deps_cli.py +0 -0
  244. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_dev.py +0 -0
  245. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_dev_cli_coverage.py +0 -0
  246. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_dev_config.py +0 -0
  247. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_dev_link.py +0 -0
  248. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_discovery.py +0 -0
  249. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_docs_ast_parsers.py +0 -0
  250. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_docs_audit.py +0 -0
  251. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_docs_exporters.py +0 -0
  252. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_docs_generator.py +0 -0
  253. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_docs_generator_enhanced.py +0 -0
  254. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_docs_generator_extended.py +0 -0
  255. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_doctype_service_coverage.py +0 -0
  256. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_ephemeral.py +0 -0
  257. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_frontend_integration.py +0 -0
  258. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_generator.py +0 -0
  259. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_git_adapter.py +0 -0
  260. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_git_protocol.py +0 -0
  261. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_github_provider.py +0 -0
  262. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_guardrail.py +0 -0
  263. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_live_preview.py +0 -0
  264. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_lockfile_sync.py +0 -0
  265. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_metadata_editor.py +0 -0
  266. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_multi_repo_workspace.py +0 -0
  267. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_new_cli.py +0 -0
  268. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_parser.py +0 -0
  269. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_print_adapter.py +0 -0
  270. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_print_router_isolated.py +0 -0
  271. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_protocol_scanner.py +0 -0
  272. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_protocol_scanner_extended.py +0 -0
  273. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_proxy.py +0 -0
  274. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_quality_cli.py +0 -0
  275. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_release_cli_more.py +0 -0
  276. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_release_gitops.py +0 -0
  277. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_release_graph.py +0 -0
  278. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_release_orchestrator.py +0 -0
  279. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_release_versioning.py +0 -0
  280. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_routes_extended.py +0 -0
  281. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_schema_diff.py +0 -0
  282. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_screenshot_pipeline.py +0 -0
  283. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_sdk_generator.py +0 -0
  284. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_shell_plugin_config.py +0 -0
  285. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_sidebar_routes.py +0 -0
  286. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_storage_adapters.py +0 -0
  287. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_studio.py +0 -0
  288. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_studio_codegen_generator.py +0 -0
  289. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_studio_init.py +0 -0
  290. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_transformer.py +0 -0
  291. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_translations_cli.py +0 -0
  292. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_uimeta_routes.py +0 -0
  293. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_utility_cli.py +0 -0
  294. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_utility_cli_enhanced.py +0 -0
  295. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_visual_designer.py +0 -0
  296. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_workspace.py +0 -0
  297. {framework_m_studio-0.17.2 → framework_m_studio-0.18.0}/tests/test_workspace_coverage.py +0 -0
@@ -1,4 +1,10 @@
1
- ## framework-m-studio v0.17.2
1
+ ## framework-m-studio v0.18.0
2
+
3
+ ### Features
4
+
5
+ - add commit scope linting and CI validator (96cb12a)
6
+
7
+ **framework-m-studio** v0.17.3: internal dependency bump due to **framework-m** update## framework-m-studio v0.17.2
2
8
 
3
9
  ### Bug Fixes
4
10
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: framework-m-studio
3
- Version: 0.17.2
3
+ Version: 0.18.0
4
4
  Summary: Framework M Studio - Visual DocType Builder & Developer Tools
5
5
  Project-URL: Homepage, https://gitlab.com/castlecraft/framework-m
6
6
  Project-URL: Documentation, https://gitlab.com/castlecraft/framework-m#readme
@@ -20,8 +20,8 @@ Classifier: Typing :: Typed
20
20
  Requires-Python: >=3.12
21
21
  Requires-Dist: bandit>=1.9.4
22
22
  Requires-Dist: build>=1.5.0
23
- Requires-Dist: framework-m-core>=0.24.0
24
- Requires-Dist: framework-m>=0.12.2
23
+ Requires-Dist: framework-m-core>=0.26.0
24
+ Requires-Dist: framework-m>=0.14.0
25
25
  Requires-Dist: honcho>=2.0.0
26
26
  Requires-Dist: httpx>=0.28.1
27
27
  Requires-Dist: ipython>=9.14.1
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "framework-m-studio"
3
- version = "0.17.2"
3
+ version = "0.18.0"
4
4
  description = "Framework M Studio - Visual DocType Builder & Developer Tools"
5
5
  readme = "README.md"
6
6
  license = { text = "Apache-2.0" }
@@ -21,8 +21,8 @@ classifiers = [
21
21
  ]
22
22
 
23
23
  dependencies = [
24
- "framework-m-core>=0.24.0",
25
- "framework-m>=0.12.2",
24
+ "framework-m-core>=0.26.0",
25
+ "framework-m>=0.14.0",
26
26
  # Code generation
27
27
  "libcst>=1.8.6",
28
28
  "jinja2>=3.1.6",
@@ -11,6 +11,7 @@ from framework_m_studio.core.shell import run_cmd
11
11
  from .cli import (
12
12
  release_app,
13
13
  release_auto_command,
14
+ release_lint_scopes_command,
14
15
  release_mr_command,
15
16
  release_plan_command,
16
17
  release_prepare_command,
@@ -64,6 +65,7 @@ __all__ = [
64
65
  "push_release_branch",
65
66
  "release_app",
66
67
  "release_auto_command",
68
+ "release_lint_scopes_command",
67
69
  "release_mr_command",
68
70
  "release_plan_command",
69
71
  "release_prepare_command",
@@ -15,6 +15,7 @@ from .orchestrator import (
15
15
  _load_release_config,
16
16
  compute_release_plan,
17
17
  create_or_update_mr,
18
+ lint_release_scopes,
18
19
  prepare_release,
19
20
  push_release_branch,
20
21
  run_release_orchestration,
@@ -199,6 +200,18 @@ async def release_tag_command(
199
200
  await tag_and_release(release_config, root_path, git_provider, dry_run)
200
201
 
201
202
 
203
+ @release_app.command(name="lint-scopes")
204
+ def release_lint_scopes_command(
205
+ base: str,
206
+ head: str = "HEAD",
207
+ config: str = "release-config.json",
208
+ root: str | None = None,
209
+ ) -> None:
210
+ """Lint that modified packages have corresponding release scopes/tags."""
211
+ root_path = Path(root) if root else Path.cwd()
212
+ lint_release_scopes(config, root_path, base, head)
213
+
214
+
202
215
  def release_schema_command(output: str | None = None) -> None:
203
216
  """Generate JSON schema for the release configuration."""
204
217
  from .models import ReleaseConfig
@@ -397,3 +397,99 @@ async def run_release_orchestration(
397
397
 
398
398
  desc = "\n\n".join(sections)
399
399
  await create_or_update_mr(branch, config.target_branch, title, desc, provider_cls)
400
+
401
+
402
+ def lint_release_scopes(config_path: str, root: Path, base: str, head: str) -> None:
403
+ """Verify that all modified packages have corresponding release scopes/tags in commits."""
404
+ import sys
405
+
406
+ from .gitops import _parse_commit_message
407
+
408
+ config = _load_release_config(config_path, root=root)
409
+
410
+ # 1. Get changed files in the diff range
411
+ cmd_diff = ["git", "diff", "--name-only", f"{base}...{head}"]
412
+ res_diff = subprocess.run(
413
+ cmd_diff, cwd=root, capture_output=True, text=True, check=True
414
+ )
415
+ changed_files = [
416
+ line.strip() for line in res_diff.stdout.splitlines() if line.strip()
417
+ ]
418
+
419
+ # 2. Map changed files to packages
420
+ modified_packages = []
421
+ for pkg in config.packages:
422
+ pkg_modified = False
423
+ for path in pkg.paths:
424
+ norm_path = path.strip("/") + "/"
425
+ if any(
426
+ f.startswith(norm_path) or f == path.strip("/") for f in changed_files
427
+ ):
428
+ pkg_modified = True
429
+ break
430
+ if pkg_modified:
431
+ modified_packages.append(pkg)
432
+
433
+ if not modified_packages:
434
+ CLIConsole().success("✅ No packages modified in this range.")
435
+ return
436
+
437
+ # 3. Get all commits in the diff range
438
+ sep = "||COMMIT_SEP||"
439
+ log_format = f"%H%n%s%n%b%n{sep}"
440
+ cmd_log = ["git", "log", f"{base}..{head}", f"--pretty=format:{log_format}"]
441
+ res_log = subprocess.run(
442
+ cmd_log, cwd=root, capture_output=True, text=True, check=True
443
+ )
444
+
445
+ commits = []
446
+ if res_log.stdout:
447
+ raw_commits = res_log.stdout.split(sep)
448
+ for raw in raw_commits:
449
+ if not raw.strip():
450
+ continue
451
+ lines = raw.strip().split("\n")
452
+ if len(lines) < 2:
453
+ continue
454
+ parsed = _parse_commit_message("\n".join(lines[1:]), lines[0])
455
+ if parsed:
456
+ commits.append(parsed)
457
+
458
+ # 4. Validate that each modified package matches at least one commit
459
+ missing_scopes = []
460
+ for pkg in modified_packages:
461
+ matched = False
462
+ for commit in commits:
463
+ if commit.body_tags:
464
+ if "*" in commit.body_tags:
465
+ matched = True
466
+ break
467
+ if (
468
+ (pkg.name in commit.body_tags)
469
+ or (pkg.publish_name and pkg.publish_name in commit.body_tags)
470
+ or (commit.scope in pkg.scopes)
471
+ or any(tag in pkg.scopes for tag in commit.body_tags)
472
+ ):
473
+ matched = True
474
+ break
475
+ else:
476
+ if (pkg.include_global and not commit.scope) or (
477
+ commit.scope in pkg.scopes
478
+ ):
479
+ matched = True
480
+ break
481
+ if not matched:
482
+ missing_scopes.append(pkg)
483
+
484
+ if missing_scopes:
485
+ CLIConsole().error("❌ Commit message scope linting failed!")
486
+ for pkg in missing_scopes:
487
+ CLIConsole().error(
488
+ f"Package '{pkg.name}' was modified but no commits in range contain the "
489
+ f"scope '{pkg.scopes[0]}' or body tag 'Releases: {pkg.name}' / 'Releases: *'."
490
+ )
491
+ sys.exit(1)
492
+
493
+ CLIConsole().success(
494
+ "✅ All modified packages have corresponding release scopes/tags."
495
+ )