gina 0.3.1 → 0.3.2

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 (501) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/CONVENTIONS.md +42 -0
  3. package/README.md +8 -6
  4. package/ROADMAP.md +5 -2
  5. package/bin/cli +1 -0
  6. package/bin/gina +4 -0
  7. package/framework/v0.3.2/VERSION +1 -0
  8. package/framework/v0.3.2/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
  9. package/framework/{v0.3.1 → v0.3.2}/core/asset/plugin/dist/vendor/gina/inspector/index.html +4 -0
  10. package/framework/{v0.3.1 → v0.3.2}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +160 -9
  11. package/framework/{v0.3.1 → v0.3.2}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +250 -7
  12. package/framework/v0.3.2/core/asset/plugin/dist/vendor/gina/js/gina.min.js +532 -0
  13. package/framework/v0.3.2/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
  14. package/framework/v0.3.2/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
  15. package/framework/v0.3.2/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +8 -0
  16. package/framework/v0.3.2/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
  17. package/framework/v0.3.2/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
  18. package/framework/{v0.3.1 → v0.3.2}/core/connectors/couchbase/index.js +33 -13
  19. package/framework/{v0.3.1 → v0.3.2}/core/controller/controller.js +20 -1
  20. package/framework/{v0.3.1 → v0.3.2}/core/controller/controller.render-json.js +60 -14
  21. package/framework/v0.3.2/core/deps/swig-1.4.2/dist/swig.min.js +7 -0
  22. package/framework/{v0.3.1 → v0.3.2}/core/gna.js +35 -1
  23. package/framework/{v0.3.1 → v0.3.2}/core/server.isaac.js +30 -8
  24. package/framework/{v0.3.1 → v0.3.2}/core/server.js +50 -9
  25. package/framework/{v0.3.1 → v0.3.2}/helpers/context.js +1 -0
  26. package/framework/{v0.3.1 → v0.3.2}/lib/cmd/bundle/add.js +0 -1
  27. package/framework/{v0.3.1 → v0.3.2}/lib/cmd/bundle/start.js +11 -13
  28. package/framework/{v0.3.1 → v0.3.2}/lib/cmd/framework/restart.js +10 -1
  29. package/framework/v0.3.2/lib/cmd/inspector/help.js +48 -0
  30. package/framework/v0.3.2/lib/cmd/inspector/help.txt +28 -0
  31. package/framework/v0.3.2/lib/cmd/inspector/open.js +510 -0
  32. package/framework/{v0.3.1 → v0.3.2}/lib/index.js +1 -0
  33. package/framework/{v0.3.1 → v0.3.2}/lib/model.js +27 -3
  34. package/llms.txt +6 -1
  35. package/package.json +101 -101
  36. package/schema/connectors.json +99 -12
  37. package/schema/routing.json +93 -7
  38. package/schema/watchers.json +29 -0
  39. package/script/post_install.js +5 -1
  40. package/framework/v0.3.1/VERSION +0 -1
  41. package/framework/v0.3.1/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -21544
  42. package/framework/v0.3.1/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
  43. package/framework/v0.3.1/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
  44. package/framework/v0.3.1/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -286
  45. package/framework/v0.3.1/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
  46. package/framework/v0.3.1/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
  47. /package/framework/{v0.3.1 → v0.3.2}/AUTHORS +0 -0
  48. /package/framework/{v0.3.1 → v0.3.2}/LICENSE +0 -0
  49. /package/framework/{v0.3.1 → v0.3.2}/core/asset/html/nolayout.html +0 -0
  50. /package/framework/{v0.3.1 → v0.3.2}/core/asset/html/static.html +0 -0
  51. /package/framework/{v0.3.1 → v0.3.2}/core/asset/img/android-chrome-192x192.png +0 -0
  52. /package/framework/{v0.3.1 → v0.3.2}/core/asset/img/android-chrome-512x512.png +0 -0
  53. /package/framework/{v0.3.1 → v0.3.2}/core/asset/img/apple-touch-icon.png +0 -0
  54. /package/framework/{v0.3.1 → v0.3.2}/core/asset/img/favicon-16x16.png +0 -0
  55. /package/framework/{v0.3.1 → v0.3.2}/core/asset/img/favicon-32x32.png +0 -0
  56. /package/framework/{v0.3.1 → v0.3.2}/core/asset/img/favicon.ico +0 -0
  57. /package/framework/{v0.3.1 → v0.3.2}/core/asset/plugin/README.md +0 -0
  58. /package/framework/{v0.3.1 → v0.3.2}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
  59. /package/framework/{v0.3.1 → v0.3.2}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
  60. /package/framework/{v0.3.1 → v0.3.2}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
  61. /package/framework/{v0.3.1 → v0.3.2}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
  62. /package/framework/{v0.3.1 → v0.3.2}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
  63. /package/framework/{v0.3.1 → v0.3.2}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
  64. /package/framework/{v0.3.1 → v0.3.2}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
  65. /package/framework/{v0.3.1 → v0.3.2}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
  66. /package/framework/{v0.3.1 → v0.3.2}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
  67. /package/framework/{v0.3.1 → v0.3.2}/core/asset/plugin/dist/vendor/gina/html/toolbar.html +0 -0
  68. /package/framework/{v0.3.1 → v0.3.2}/core/asset/plugin/dist/vendor/gina/html/toolbar.html.br +0 -0
  69. /package/framework/{v0.3.1 → v0.3.2}/core/asset/plugin/dist/vendor/gina/html/toolbar.html.gz +0 -0
  70. /package/framework/{v0.3.1 → v0.3.2}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
  71. /package/framework/{v0.3.1 → v0.3.2}/core/asset/plugin/dist/vendor/gina/js/gina.js +0 -0
  72. /package/framework/{v0.3.1 → v0.3.2}/core/config.js +0 -0
  73. /package/framework/{v0.3.1 → v0.3.2}/core/connectors/ai/index.js +0 -0
  74. /package/framework/{v0.3.1 → v0.3.2}/core/connectors/ai/lib/connector.js +0 -0
  75. /package/framework/{v0.3.1 → v0.3.2}/core/connectors/couchbase/lib/connector.js +0 -0
  76. /package/framework/{v0.3.1 → v0.3.2}/core/connectors/couchbase/lib/connector.v2.js +0 -0
  77. /package/framework/{v0.3.1 → v0.3.2}/core/connectors/couchbase/lib/connector.v3.js +0 -0
  78. /package/framework/{v0.3.1 → v0.3.2}/core/connectors/couchbase/lib/connector.v4.js +0 -0
  79. /package/framework/{v0.3.1 → v0.3.2}/core/connectors/couchbase/lib/n1ql.js +0 -0
  80. /package/framework/{v0.3.1 → v0.3.2}/core/connectors/couchbase/lib/session-store.js +0 -0
  81. /package/framework/{v0.3.1 → v0.3.2}/core/connectors/couchbase/lib/session-store.v2.js +0 -0
  82. /package/framework/{v0.3.1 → v0.3.2}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
  83. /package/framework/{v0.3.1 → v0.3.2}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
  84. /package/framework/{v0.3.1 → v0.3.2}/core/connectors/mysql/index.js +0 -0
  85. /package/framework/{v0.3.1 → v0.3.2}/core/connectors/mysql/lib/connector.js +0 -0
  86. /package/framework/{v0.3.1 → v0.3.2}/core/connectors/postgresql/index.js +0 -0
  87. /package/framework/{v0.3.1 → v0.3.2}/core/connectors/postgresql/lib/connector.js +0 -0
  88. /package/framework/{v0.3.1 → v0.3.2}/core/connectors/redis/index.js +0 -0
  89. /package/framework/{v0.3.1 → v0.3.2}/core/connectors/redis/lib/session-store.js +0 -0
  90. /package/framework/{v0.3.1 → v0.3.2}/core/connectors/sql-parser.js +0 -0
  91. /package/framework/{v0.3.1 → v0.3.2}/core/connectors/sqlite/index.js +0 -0
  92. /package/framework/{v0.3.1 → v0.3.2}/core/connectors/sqlite/lib/connector.js +0 -0
  93. /package/framework/{v0.3.1 → v0.3.2}/core/connectors/sqlite/lib/session-store.js +0 -0
  94. /package/framework/{v0.3.1 → v0.3.2}/core/content.encoding +0 -0
  95. /package/framework/{v0.3.1 → v0.3.2}/core/controller/controller.framework.js +0 -0
  96. /package/framework/{v0.3.1 → v0.3.2}/core/controller/controller.render-stream.js +0 -0
  97. /package/framework/{v0.3.1 → v0.3.2}/core/controller/controller.render-swig.js +0 -0
  98. /package/framework/{v0.3.1 → v0.3.2}/core/controller/controller.render-v1.js +0 -0
  99. /package/framework/{v0.3.1 → v0.3.2}/core/controller/index.js +0 -0
  100. /package/framework/{v0.3.1 → v0.3.2}/core/deps/busboy-1.6.0/LICENSE +0 -0
  101. /package/framework/{v0.3.1 → v0.3.2}/core/deps/busboy-1.6.0/README.md +0 -0
  102. /package/framework/{v0.3.1 → v0.3.2}/core/deps/busboy-1.6.0/lib/index.js +0 -0
  103. /package/framework/{v0.3.1 → v0.3.2}/core/deps/busboy-1.6.0/lib/types/multipart.js +0 -0
  104. /package/framework/{v0.3.1 → v0.3.2}/core/deps/busboy-1.6.0/lib/types/urlencoded.js +0 -0
  105. /package/framework/{v0.3.1 → v0.3.2}/core/deps/busboy-1.6.0/lib/utils.js +0 -0
  106. /package/framework/{v0.3.1 → v0.3.2}/core/deps/busboy-1.6.0/package.json +0 -0
  107. /package/framework/{v0.3.1 → v0.3.2}/core/deps/optimist-0.6.1/LICENSE +0 -0
  108. /package/framework/{v0.3.1 → v0.3.2}/core/deps/optimist-0.6.1/index.js +0 -0
  109. /package/framework/{v0.3.1 → v0.3.2}/core/deps/optimist-0.6.1/package.json +0 -0
  110. /package/framework/{v0.3.1 → v0.3.2}/core/deps/optimist-0.6.1/readme.markdown +0 -0
  111. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/CONTRIBUTING.md +0 -0
  112. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/HISTORY.md +0 -0
  113. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/LICENSE +0 -0
  114. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/Makefile +0 -0
  115. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/README.md +0 -0
  116. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/bin/swig.js +0 -0
  117. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/browser/comments.js +0 -0
  118. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/browser/index.js +0 -0
  119. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/docs/docs/api.html +0 -0
  120. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/docs/docs/browser.html +0 -0
  121. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/docs/docs/cli.html +0 -0
  122. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/docs/docs/extending.html +0 -0
  123. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/docs/docs/filters.html +0 -0
  124. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/docs/docs/includes/TYPES.html +0 -0
  125. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/docs/docs/includes/macros.html +0 -0
  126. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/docs/docs/index.html +0 -0
  127. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/docs/docs/layout.html +0 -0
  128. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/docs/docs/loaders.html +0 -0
  129. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/docs/docs/previous.html +0 -0
  130. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/docs/docs/tags.html +0 -0
  131. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/docs/docs.json +0 -0
  132. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/docs/index.html +0 -0
  133. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/docs/index.json +0 -0
  134. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/docs/js/lib/rainbow.min.js +0 -0
  135. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/docs/js/master.js +0 -0
  136. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/docs/layouts/html5.html +0 -0
  137. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/docs/layouts/master.html +0 -0
  138. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/docs/less/button.less +0 -0
  139. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/docs/less/fork.less +0 -0
  140. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/docs/less/header.less +0 -0
  141. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/docs/less/layout.less +0 -0
  142. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/docs/less/mixins.less +0 -0
  143. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/docs/less/rainbow.less +0 -0
  144. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/docs/less/reset.less +0 -0
  145. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/docs/less/sidenav.less +0 -0
  146. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/docs/less/swig.less +0 -0
  147. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/docs/less/variables.less +0 -0
  148. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/index.js +0 -0
  149. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/lib/dateformatter.js +0 -0
  150. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/lib/filters.js +0 -0
  151. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/lib/lexer.js +0 -0
  152. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/lib/loaders/filesystem.js +0 -0
  153. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/lib/loaders/index.js +0 -0
  154. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/lib/loaders/memory.js +0 -0
  155. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/lib/parser.js +0 -0
  156. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/lib/swig.js +0 -0
  157. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/lib/tags/autoescape.js +0 -0
  158. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/lib/tags/block.js +0 -0
  159. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/lib/tags/else.js +0 -0
  160. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/lib/tags/elseif.js +0 -0
  161. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/lib/tags/extends.js +0 -0
  162. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/lib/tags/filter.js +0 -0
  163. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/lib/tags/for.js +0 -0
  164. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/lib/tags/if.js +0 -0
  165. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/lib/tags/import.js +0 -0
  166. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/lib/tags/include.js +0 -0
  167. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/lib/tags/index.js +0 -0
  168. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/lib/tags/macro.js +0 -0
  169. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/lib/tags/parent.js +0 -0
  170. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/lib/tags/raw.js +0 -0
  171. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/lib/tags/set.js +0 -0
  172. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/lib/tags/spaceless.js +0 -0
  173. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/lib/utils.js +0 -0
  174. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/package.json +0 -0
  175. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/scripts/config-lint.js +0 -0
  176. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/scripts/githooks/post-merge +0 -0
  177. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/scripts/githooks/pre-commit +0 -0
  178. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/basic.test.js +0 -0
  179. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/bin/bin.filters.js +0 -0
  180. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/bin/bin.locals.js +0 -0
  181. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/bin/bin.locals.json +0 -0
  182. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/bin/bin.tags.js +0 -0
  183. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/bin/bin.test.js +0 -0
  184. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/bin/custom_filter.bin.html +0 -0
  185. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/bin/custom_tag.bin.html +0 -0
  186. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/bin/custom_tagControls.bin.html +0 -0
  187. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/bin/custom_varControls.bin.html +0 -0
  188. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/bin/options.js +0 -0
  189. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/extends_1.expectation.html +0 -0
  190. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/extends_1.test.html +0 -0
  191. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/extends_2.expectation.html +0 -0
  192. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/extends_2.test.html +0 -0
  193. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/extends_base.html +0 -0
  194. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/extends_layouts/extends_4.base.html +0 -0
  195. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/extends_layouts/extends_4.middle.html +0 -0
  196. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/extends_layouts/extends_bare.html +0 -0
  197. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/extends_layouts/extends_base.html +0 -0
  198. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/extends_layouts/extends_include.html +0 -0
  199. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/extends_layouts/extends_real_base.html +0 -0
  200. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/extends_set.expectation.html +0 -0
  201. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/extends_set.test.html +0 -0
  202. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/extends_tests/extends_3.expectation.html +0 -0
  203. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/extends_tests/extends_3.test.html +0 -0
  204. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/extends_tests/extends_4.expectation.html +0 -0
  205. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/extends_tests/extends_4.test.html +0 -0
  206. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/import.expectation.html +0 -0
  207. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/import.test.html +0 -0
  208. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/include.expectation.html +0 -0
  209. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/include.test.html +0 -0
  210. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/include_bar.html +0 -0
  211. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/include_extends.expectation.html +0 -0
  212. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/include_extends.test.html +0 -0
  213. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/includes.html +0 -0
  214. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/macros.expectation.html +0 -0
  215. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/macros.html +0 -0
  216. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/macros.test.html +0 -0
  217. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/nested_blocks.expectation.html +0 -0
  218. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/nested_blocks.test.html +0 -0
  219. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/nested_blocks_parent.html +0 -0
  220. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/parent-parent.expectation.html +0 -0
  221. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/parent-parent.test.html +0 -0
  222. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/parent.expectation.html +0 -0
  223. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/parent.test.html +0 -0
  224. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/set.expectation.html +0 -0
  225. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/set.test.html +0 -0
  226. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases-error/circular.test.html +0 -0
  227. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases-error/circular_parent.html +0 -0
  228. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases-error/extends-non-existent.test.html +0 -0
  229. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases-error/report-filename-partial.html +0 -0
  230. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases-error/report-filename.test.html +0 -0
  231. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/comments.test.js +0 -0
  232. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/filters.test.js +0 -0
  233. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/loaders.test.js +0 -0
  234. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/regressions.test.js +0 -0
  235. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/tags/autoescape.test.js +0 -0
  236. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/tags/else.test.js +0 -0
  237. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/tags/extend.test.js +0 -0
  238. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/tags/filter.test.js +0 -0
  239. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/tags/for.test.js +0 -0
  240. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/tags/if.test.js +0 -0
  241. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/tags/import.test.js +0 -0
  242. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/tags/include.test.js +0 -0
  243. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/tags/macro.test.js +0 -0
  244. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/tags/parent.test.js +0 -0
  245. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/tags/raw.test.js +0 -0
  246. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/tags/set.test.js +0 -0
  247. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/tags/spaceless.test.js +0 -0
  248. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/tags.test.js +0 -0
  249. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/templates.test.js +0 -0
  250. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/variables.test.js +0 -0
  251. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-1.4.2/tests/whitespace.test.js +0 -0
  252. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-client/swig-2.0.0.min.js +0 -0
  253. /package/framework/{v0.3.1 → v0.3.2}/core/deps/swig-client/swig.js +0 -0
  254. /package/framework/{v0.3.1 → v0.3.2}/core/dev/index.js +0 -0
  255. /package/framework/{v0.3.1 → v0.3.2}/core/dev/lib/class.js +0 -0
  256. /package/framework/{v0.3.1 → v0.3.2}/core/dev/lib/factory.js +0 -0
  257. /package/framework/{v0.3.1 → v0.3.2}/core/dev/lib/tools.js +0 -0
  258. /package/framework/{v0.3.1 → v0.3.2}/core/locales/README.md +0 -0
  259. /package/framework/{v0.3.1 → v0.3.2}/core/locales/currency.json +0 -0
  260. /package/framework/{v0.3.1 → v0.3.2}/core/locales/dist/language/en.json +0 -0
  261. /package/framework/{v0.3.1 → v0.3.2}/core/locales/dist/language/fr.json +0 -0
  262. /package/framework/{v0.3.1 → v0.3.2}/core/locales/dist/region/en.json +0 -0
  263. /package/framework/{v0.3.1 → v0.3.2}/core/locales/dist/region/fr.json +0 -0
  264. /package/framework/{v0.3.1 → v0.3.2}/core/locales/index.js +0 -0
  265. /package/framework/{v0.3.1 → v0.3.2}/core/mime.types +0 -0
  266. /package/framework/{v0.3.1 → v0.3.2}/core/model/entity.js +0 -0
  267. /package/framework/{v0.3.1 → v0.3.2}/core/model/index.js +0 -0
  268. /package/framework/{v0.3.1 → v0.3.2}/core/model/template/entityFactory.js +0 -0
  269. /package/framework/{v0.3.1 → v0.3.2}/core/model/template/index.js +0 -0
  270. /package/framework/{v0.3.1 → v0.3.2}/core/plugins/README.md +0 -0
  271. /package/framework/{v0.3.1 → v0.3.2}/core/plugins/index.js +0 -0
  272. /package/framework/{v0.3.1 → v0.3.2}/core/plugins/lib/file/README.md +0 -0
  273. /package/framework/{v0.3.1 → v0.3.2}/core/plugins/lib/file/build.json +0 -0
  274. /package/framework/{v0.3.1 → v0.3.2}/core/plugins/lib/file/package.json +0 -0
  275. /package/framework/{v0.3.1 → v0.3.2}/core/plugins/lib/intl/README.md +0 -0
  276. /package/framework/{v0.3.1 → v0.3.2}/core/plugins/lib/intl/build.json +0 -0
  277. /package/framework/{v0.3.1 → v0.3.2}/core/plugins/lib/intl/package.json +0 -0
  278. /package/framework/{v0.3.1 → v0.3.2}/core/plugins/lib/intl/src/main.js +0 -0
  279. /package/framework/{v0.3.1 → v0.3.2}/core/plugins/lib/storage/README.md +0 -0
  280. /package/framework/{v0.3.1 → v0.3.2}/core/plugins/lib/storage/build.json +0 -0
  281. /package/framework/{v0.3.1 → v0.3.2}/core/plugins/lib/storage/package.json +0 -0
  282. /package/framework/{v0.3.1 → v0.3.2}/core/plugins/lib/storage/src/main.js +0 -0
  283. /package/framework/{v0.3.1 → v0.3.2}/core/plugins/lib/validator/README.md +0 -0
  284. /package/framework/{v0.3.1 → v0.3.2}/core/plugins/lib/validator/build.json +0 -0
  285. /package/framework/{v0.3.1 → v0.3.2}/core/plugins/lib/validator/package.json +0 -0
  286. /package/framework/{v0.3.1 → v0.3.2}/core/plugins/lib/validator/src/form-validator.js +0 -0
  287. /package/framework/{v0.3.1 → v0.3.2}/core/plugins/lib/validator/src/main.js +0 -0
  288. /package/framework/{v0.3.1 → v0.3.2}/core/router.js +0 -0
  289. /package/framework/{v0.3.1 → v0.3.2}/core/server.express.js +0 -0
  290. /package/framework/{v0.3.1 → v0.3.2}/core/status.codes +0 -0
  291. /package/framework/{v0.3.1 → v0.3.2}/core/template/_gitignore +0 -0
  292. /package/framework/{v0.3.1 → v0.3.2}/core/template/boilerplate/bundle/config/app.json +0 -0
  293. /package/framework/{v0.3.1 → v0.3.2}/core/template/boilerplate/bundle/config/connectors.json +0 -0
  294. /package/framework/{v0.3.1 → v0.3.2}/core/template/boilerplate/bundle/config/routing.json +0 -0
  295. /package/framework/{v0.3.1 → v0.3.2}/core/template/boilerplate/bundle/config/settings.json +0 -0
  296. /package/framework/{v0.3.1 → v0.3.2}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
  297. /package/framework/{v0.3.1 → v0.3.2}/core/template/boilerplate/bundle/config/templates.json +0 -0
  298. /package/framework/{v0.3.1 → v0.3.2}/core/template/boilerplate/bundle/config/watchers.json +0 -0
  299. /package/framework/{v0.3.1 → v0.3.2}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
  300. /package/framework/{v0.3.1 → v0.3.2}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
  301. /package/framework/{v0.3.1 → v0.3.2}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
  302. /package/framework/{v0.3.1 → v0.3.2}/core/template/boilerplate/bundle/index.js +0 -0
  303. /package/framework/{v0.3.1 → v0.3.2}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
  304. /package/framework/{v0.3.1 → v0.3.2}/core/template/boilerplate/bundle_public/css/default.css +0 -0
  305. /package/framework/{v0.3.1 → v0.3.2}/core/template/boilerplate/bundle_public/css/home.css +0 -0
  306. /package/framework/{v0.3.1 → v0.3.2}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
  307. /package/framework/{v0.3.1 → v0.3.2}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
  308. /package/framework/{v0.3.1 → v0.3.2}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
  309. /package/framework/{v0.3.1 → v0.3.2}/core/template/boilerplate/bundle_public/readme.md +0 -0
  310. /package/framework/{v0.3.1 → v0.3.2}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
  311. /package/framework/{v0.3.1 → v0.3.2}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
  312. /package/framework/{v0.3.1 → v0.3.2}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
  313. /package/framework/{v0.3.1 → v0.3.2}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
  314. /package/framework/{v0.3.1 → v0.3.2}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
  315. /package/framework/{v0.3.1 → v0.3.2}/core/template/command/gina.bat.tpl +0 -0
  316. /package/framework/{v0.3.1 → v0.3.2}/core/template/command/gina.tpl +0 -0
  317. /package/framework/{v0.3.1 → v0.3.2}/core/template/conf/env.json +0 -0
  318. /package/framework/{v0.3.1 → v0.3.2}/core/template/conf/manifest.json +0 -0
  319. /package/framework/{v0.3.1 → v0.3.2}/core/template/conf/package.json +0 -0
  320. /package/framework/{v0.3.1 → v0.3.2}/core/template/conf/settings.json +0 -0
  321. /package/framework/{v0.3.1 → v0.3.2}/core/template/conf/statics.json +0 -0
  322. /package/framework/{v0.3.1 → v0.3.2}/core/template/conf/templates.json +0 -0
  323. /package/framework/{v0.3.1 → v0.3.2}/core/template/error/client/json/401.json +0 -0
  324. /package/framework/{v0.3.1 → v0.3.2}/core/template/error/client/json/403.json +0 -0
  325. /package/framework/{v0.3.1 → v0.3.2}/core/template/error/client/json/404.json +0 -0
  326. /package/framework/{v0.3.1 → v0.3.2}/core/template/error/server/html/50x.html +0 -0
  327. /package/framework/{v0.3.1 → v0.3.2}/core/template/error/server/json/500.json +0 -0
  328. /package/framework/{v0.3.1 → v0.3.2}/core/template/error/server/json/503.json +0 -0
  329. /package/framework/{v0.3.1 → v0.3.2}/core/template/extensions/logger/config.json +0 -0
  330. /package/framework/{v0.3.1 → v0.3.2}/helpers/console.js +0 -0
  331. /package/framework/{v0.3.1 → v0.3.2}/helpers/data/LICENSE +0 -0
  332. /package/framework/{v0.3.1 → v0.3.2}/helpers/data/README.md +0 -0
  333. /package/framework/{v0.3.1 → v0.3.2}/helpers/data/package.json +0 -0
  334. /package/framework/{v0.3.1 → v0.3.2}/helpers/data/src/main.js +0 -0
  335. /package/framework/{v0.3.1 → v0.3.2}/helpers/dateFormat.js +0 -0
  336. /package/framework/{v0.3.1 → v0.3.2}/helpers/index.js +0 -0
  337. /package/framework/{v0.3.1 → v0.3.2}/helpers/json/LICENSE +0 -0
  338. /package/framework/{v0.3.1 → v0.3.2}/helpers/json/README.md +0 -0
  339. /package/framework/{v0.3.1 → v0.3.2}/helpers/json/package.json +0 -0
  340. /package/framework/{v0.3.1 → v0.3.2}/helpers/json/src/main.js +0 -0
  341. /package/framework/{v0.3.1 → v0.3.2}/helpers/path.js +0 -0
  342. /package/framework/{v0.3.1 → v0.3.2}/helpers/plugins/README.md +0 -0
  343. /package/framework/{v0.3.1 → v0.3.2}/helpers/plugins/package.json +0 -0
  344. /package/framework/{v0.3.1 → v0.3.2}/helpers/plugins/src/api-error.js +0 -0
  345. /package/framework/{v0.3.1 → v0.3.2}/helpers/plugins/src/main.js +0 -0
  346. /package/framework/{v0.3.1 → v0.3.2}/helpers/prototypes.js +0 -0
  347. /package/framework/{v0.3.1 → v0.3.2}/helpers/task.js +0 -0
  348. /package/framework/{v0.3.1 → v0.3.2}/helpers/text.js +0 -0
  349. /package/framework/{v0.3.1 → v0.3.2}/lib/archiver/README.md +0 -0
  350. /package/framework/{v0.3.1 → v0.3.2}/lib/archiver/build.json +0 -0
  351. /package/framework/{v0.3.1 → v0.3.2}/lib/archiver/package.json +0 -0
  352. /package/framework/{v0.3.1 → v0.3.2}/lib/archiver/src/dep/jszip.min.js +0 -0
  353. /package/framework/{v0.3.1 → v0.3.2}/lib/archiver/src/main.js +0 -0
  354. /package/framework/{v0.3.1 → v0.3.2}/lib/async/package.json +0 -0
  355. /package/framework/{v0.3.1 → v0.3.2}/lib/async/src/main.js +0 -0
  356. /package/framework/{v0.3.1 → v0.3.2}/lib/cache/README.md +0 -0
  357. /package/framework/{v0.3.1 → v0.3.2}/lib/cache/build.json +0 -0
  358. /package/framework/{v0.3.1 → v0.3.2}/lib/cache/package.json +0 -0
  359. /package/framework/{v0.3.1 → v0.3.2}/lib/cache/src/main.js +0 -0
  360. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/aliases.json +0 -0
  361. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/bundle/arguments.json +0 -0
  362. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/bundle/build.js +0 -0
  363. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/bundle/copy.js +0 -0
  364. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/bundle/cp.js +0 -0
  365. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/bundle/help.js +0 -0
  366. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/bundle/help.txt +0 -0
  367. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/bundle/list.js +0 -0
  368. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/bundle/remove.js +0 -0
  369. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/bundle/rename.js +0 -0
  370. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/bundle/restart.js +0 -0
  371. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/bundle/rm.js +0 -0
  372. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/bundle/status.js +0 -0
  373. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/bundle/stop.js +0 -0
  374. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/cache/stats.js +0 -0
  375. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/env/add.js +0 -0
  376. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/env/get.js +0 -0
  377. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/env/help.js +0 -0
  378. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/env/help.txt +0 -0
  379. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/env/link-dev.js +0 -0
  380. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/env/list.js +0 -0
  381. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/env/remove.js +0 -0
  382. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/env/rm.js +0 -0
  383. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/env/set.js +0 -0
  384. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/env/unset.js +0 -0
  385. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/env/use.js +0 -0
  386. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/framework/arguments.json +0 -0
  387. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/framework/build.js +0 -0
  388. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/framework/dot.js +0 -0
  389. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/framework/get.js +0 -0
  390. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/framework/help.js +0 -0
  391. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/framework/help.txt +0 -0
  392. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/framework/init.js +0 -0
  393. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/framework/link-node-modules.js +0 -0
  394. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/framework/link.js +0 -0
  395. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/framework/msg.json +0 -0
  396. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/framework/open.js +0 -0
  397. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/framework/set.js +0 -0
  398. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/framework/start.js +0 -0
  399. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/framework/status.js +0 -0
  400. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/framework/stop.js +0 -0
  401. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/framework/tail.js +0 -0
  402. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/framework/update.js +0 -0
  403. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/framework/version.js +0 -0
  404. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/gina-dev.1.md +0 -0
  405. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/gina-framework.1.md +0 -0
  406. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/gina.1.md +0 -0
  407. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/helper.js +0 -0
  408. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/index.js +0 -0
  409. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/minion/help.js +0 -0
  410. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/minion/help.txt +0 -0
  411. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/msg.json +0 -0
  412. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/port/help.js +0 -0
  413. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/port/help.txt +0 -0
  414. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/port/inc/scan.js +0 -0
  415. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/port/list.js +0 -0
  416. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/port/reset.js +0 -0
  417. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/port/set.js +0 -0
  418. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/project/add.js +0 -0
  419. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/project/arguments.json +0 -0
  420. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/project/build.js +0 -0
  421. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/project/help.js +0 -0
  422. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/project/help.txt +0 -0
  423. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/project/import.js +0 -0
  424. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/project/list.js +0 -0
  425. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/project/move.js +0 -0
  426. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/project/remove.js +0 -0
  427. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/project/rename.js +0 -0
  428. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/project/restart.js +0 -0
  429. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/project/rm.js +0 -0
  430. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/project/start.js +0 -0
  431. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/project/status.js +0 -0
  432. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/project/stop.js +0 -0
  433. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/protocol/help.js +0 -0
  434. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/protocol/help.txt +0 -0
  435. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/protocol/list.js +0 -0
  436. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/protocol/set.js +0 -0
  437. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/scope/add.js +0 -0
  438. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/scope/help.js +0 -0
  439. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/scope/help.txt +0 -0
  440. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/scope/link-local.js +0 -0
  441. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/scope/link-production.js +0 -0
  442. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/scope/list.js +0 -0
  443. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/scope/remove.js +0 -0
  444. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/scope/rm.js +0 -0
  445. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/scope/use.js +0 -0
  446. /package/framework/{v0.3.1 → v0.3.2}/lib/cmd/view/add.js +0 -0
  447. /package/framework/{v0.3.1 → v0.3.2}/lib/collection/README.md +0 -0
  448. /package/framework/{v0.3.1 → v0.3.2}/lib/collection/build.json +0 -0
  449. /package/framework/{v0.3.1 → v0.3.2}/lib/collection/package.json +0 -0
  450. /package/framework/{v0.3.1 → v0.3.2}/lib/collection/src/main.js +0 -0
  451. /package/framework/{v0.3.1 → v0.3.2}/lib/config.js +0 -0
  452. /package/framework/{v0.3.1 → v0.3.2}/lib/cron/README.md +0 -0
  453. /package/framework/{v0.3.1 → v0.3.2}/lib/cron/package.json +0 -0
  454. /package/framework/{v0.3.1 → v0.3.2}/lib/cron/src/main.js +0 -0
  455. /package/framework/{v0.3.1 → v0.3.2}/lib/domain/LICENSE +0 -0
  456. /package/framework/{v0.3.1 → v0.3.2}/lib/domain/README.md +0 -0
  457. /package/framework/{v0.3.1 → v0.3.2}/lib/domain/dist/2025-03-14_13-41-20_UTC.dat +0 -0
  458. /package/framework/{v0.3.1 → v0.3.2}/lib/domain/dist/public_suffix_list.dat +0 -0
  459. /package/framework/{v0.3.1 → v0.3.2}/lib/domain/dist/public_suffix_list.dat.br +0 -0
  460. /package/framework/{v0.3.1 → v0.3.2}/lib/domain/dist/public_suffix_list.dat.gz +0 -0
  461. /package/framework/{v0.3.1 → v0.3.2}/lib/domain/package.json +0 -0
  462. /package/framework/{v0.3.1 → v0.3.2}/lib/domain/src/main.js +0 -0
  463. /package/framework/{v0.3.1 → v0.3.2}/lib/generator/index.js +0 -0
  464. /package/framework/{v0.3.1 → v0.3.2}/lib/inherits/LICENSE +0 -0
  465. /package/framework/{v0.3.1 → v0.3.2}/lib/inherits/README.md +0 -0
  466. /package/framework/{v0.3.1 → v0.3.2}/lib/inherits/package.json +0 -0
  467. /package/framework/{v0.3.1 → v0.3.2}/lib/inherits/src/main.js +0 -0
  468. /package/framework/{v0.3.1 → v0.3.2}/lib/logger/README.md +0 -0
  469. /package/framework/{v0.3.1 → v0.3.2}/lib/logger/package.json +0 -0
  470. /package/framework/{v0.3.1 → v0.3.2}/lib/logger/src/containers/default/index.js +0 -0
  471. /package/framework/{v0.3.1 → v0.3.2}/lib/logger/src/containers/file/index.js +0 -0
  472. /package/framework/{v0.3.1 → v0.3.2}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
  473. /package/framework/{v0.3.1 → v0.3.2}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
  474. /package/framework/{v0.3.1 → v0.3.2}/lib/logger/src/containers/mq/index.js +0 -0
  475. /package/framework/{v0.3.1 → v0.3.2}/lib/logger/src/containers/mq/listener.js +0 -0
  476. /package/framework/{v0.3.1 → v0.3.2}/lib/logger/src/containers/mq/speaker.js +0 -0
  477. /package/framework/{v0.3.1 → v0.3.2}/lib/logger/src/helper.js +0 -0
  478. /package/framework/{v0.3.1 → v0.3.2}/lib/logger/src/main.js +0 -0
  479. /package/framework/{v0.3.1 → v0.3.2}/lib/math/index.js +0 -0
  480. /package/framework/{v0.3.1 → v0.3.2}/lib/merge/README.md +0 -0
  481. /package/framework/{v0.3.1 → v0.3.2}/lib/merge/package.json +0 -0
  482. /package/framework/{v0.3.1 → v0.3.2}/lib/merge/src/main.js +0 -0
  483. /package/framework/{v0.3.1 → v0.3.2}/lib/proc.js +0 -0
  484. /package/framework/{v0.3.1 → v0.3.2}/lib/routing/README.md +0 -0
  485. /package/framework/{v0.3.1 → v0.3.2}/lib/routing/build.json +0 -0
  486. /package/framework/{v0.3.1 → v0.3.2}/lib/routing/package.json +0 -0
  487. /package/framework/{v0.3.1 → v0.3.2}/lib/routing/src/main.js +0 -0
  488. /package/framework/{v0.3.1 → v0.3.2}/lib/routing/src/radix.js +0 -0
  489. /package/framework/{v0.3.1 → v0.3.2}/lib/session-store.js +0 -0
  490. /package/framework/{v0.3.1 → v0.3.2}/lib/shell.js +0 -0
  491. /package/framework/{v0.3.1 → v0.3.2}/lib/state.js +0 -0
  492. /package/framework/{v0.3.1 → v0.3.2}/lib/swig-filters/README.md +0 -0
  493. /package/framework/{v0.3.1 → v0.3.2}/lib/swig-filters/package.json +0 -0
  494. /package/framework/{v0.3.1 → v0.3.2}/lib/swig-filters/src/main.js +0 -0
  495. /package/framework/{v0.3.1 → v0.3.2}/lib/url/README.md +0 -0
  496. /package/framework/{v0.3.1 → v0.3.2}/lib/url/index.js +0 -0
  497. /package/framework/{v0.3.1 → v0.3.2}/lib/url/routing.json +0 -0
  498. /package/framework/{v0.3.1 → v0.3.2}/lib/validator.js +0 -0
  499. /package/framework/{v0.3.1 → v0.3.2}/lib/watcher/package.json +0 -0
  500. /package/framework/{v0.3.1 → v0.3.2}/lib/watcher/src/main.js +0 -0
  501. /package/framework/{v0.3.1 → v0.3.2}/package.json +0 -0
package/CHANGELOG.md CHANGED
@@ -6,6 +6,19 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html),
6
6
  and is generated by [Changie](https://github.com/miniscruff/changie).
7
7
 
8
8
 
9
+ ## 0.3.2 - 2026-04-07
10
+ ### Added
11
+ * JSON Schema files for all config files (app, connectors, manifest, routing, settings, watchers, crons) — published at gina.io/schema/*
12
+ * Entity short-name aliases — use self.getEntity('user') instead of self.getEntity('user/user')
13
+ ### Changed
14
+ * Server engines — font MIME types (woff/woff2/otf/ttf) and Inspector endpoint improvements
15
+ * Inspector UI — tab layout presets (Balanced/Backend/Frontend/Custom with drag-to-reorder), query performance banners, missing-index banners, cross-bundle QI propagation, render-json Inspector data feed, _inspectorActive profiling gate
16
+ ### Fixed
17
+ * Model loading without onInitialize hook — entities load correctly when the model has no onInitialize
18
+ * CLI stability and install path edge cases
19
+ * getConfig() proxy override — guards against undefined PROXY_HOSTNAME on same-origin POST requests with Origin header
20
+ * bundle:start crash on unregistered bundle — isDefined guard moved before property access
21
+
9
22
  ## 0.3.1 - 2026-04-06
10
23
  ### Added
11
24
  * SQL index reporting Phase A (#QI1): connectors read indexes.sql at startup and populate query instrumentation index badges in the Inspector
package/CONVENTIONS.md CHANGED
@@ -500,6 +500,48 @@ All planned releases should stay in the `0.1.x` series (see roadmap) to avoid th
500
500
 
501
501
  ---
502
502
 
503
+ ## 17. Comma-First Object Literals (JS only)
504
+
505
+ **Current practice:** Multi-line object and array literals use comma-first style with colon alignment. This applies to JavaScript source files only — JSON config files (`routing.json`, `settings.json`, `env.json`, etc.) use standard trailing-comma JSON syntax.
506
+
507
+ ```js
508
+ // correct — comma-first with colon alignment
509
+ var note = {
510
+ id : store.nextId++
511
+ , text : text
512
+ , createdAt : new Date().toISOString()
513
+ };
514
+
515
+ var options = {
516
+ hostname : target.hostname
517
+ , port : target.port
518
+ , path : target.path
519
+ , method : 'GET'
520
+ , headers : headers
521
+ };
522
+
523
+ // also applies to arrays when elements are on separate lines
524
+ var bundles = [
525
+ 'api'
526
+ , 'dashboard'
527
+ , 'public'
528
+ ];
529
+ ```
530
+
531
+ **Rules:**
532
+ - First property on the opening `{` / `[` line (no leading comma)
533
+ - Subsequent properties prefixed with `, ` (comma + space) at the same indentation level as the first property's key, minus 2 characters
534
+ - Colons aligned with spaces (matching §7 alignment conventions)
535
+ - **JS only** — JSON files cannot use comma-first (JSON syntax requires trailing commas between values, and the last value must have no trailing comma)
536
+ - Do not mix comma-first and comma-last in the same file
537
+
538
+ **Why:**
539
+ - Cleaner diffs — adding or removing a property touches exactly one line
540
+ - Missing commas are immediately visible (they line up vertically)
541
+ - Aligns naturally with Gina's colon-alignment style
542
+
543
+ ---
544
+
503
545
  ## Known Anti-Patterns
504
546
 
505
547
  | Anti-pattern | Location | Risk | Roadmap item |
package/README.md CHANGED
@@ -37,12 +37,14 @@ gina bundle:start api @myproject
37
37
  open https://localhost:3100
38
38
  ```
39
39
 
40
- ## What's in 0.3.1
41
-
42
- - **Dependency reduction** — `ssl-checker`, `colors`, and `uuid` removed; engine.io is now the sole runtime dependency
43
- - **HTTP/2 direct stream for HTML** `render-swig.js` uses `stream.respond()` + `stream.end()` directly, bypassing the HTTP/1.1 compat layer
44
- - **SQL index reporting** — MySQL, PostgreSQL, and SQLite connectors read `indexes.sql` at startup; Inspector Query tab shows index badges per query
45
- - **Release workflow fixes** — auto-delete publish branch; stable docs merge to main
40
+ ## What's in 0.3.2
41
+
42
+ - **JSON Schema for config files** — 7 schemas published at `gina.io/schema/*` (app, connectors, manifest, routing, settings, watchers, crons)
43
+ - **Model loading without `onInitialize`**entities load correctly when the model has no `onInitialize` hook
44
+ - **Entity short-name aliases** — use `self.getEntity('user')` instead of the full `self.getEntity('user/user')`
45
+ - **`getConfig()` proxy override fix** — guards against undefined `PROXY_HOSTNAME` on same-origin POST requests
46
+ - **Inspector polish** — tab layout presets (Balanced/Backend/Frontend/Custom with drag-to-reorder), query performance banners, missing-index banners, cross-bundle QI propagation, `render-json` Inspector data feed
47
+ - **CLI stability fixes** — `bundle:start` crash on unregistered bundle, install path edge cases
46
48
 
47
49
  See the full [Changelog](./CHANGELOG.md) and [Roadmap](./ROADMAP.md).
48
50
 
package/ROADMAP.md CHANGED
@@ -13,7 +13,8 @@ This roadmap covers planned features, architectural improvements, new connectors
13
13
  | **Apr 2026** | `0.1.8` ✅ | Scaffold correctness · K8s support · Dependency injection · Automatic version migration |
14
14
  | **Q2 2026** | `0.2.0` ✅ | Stability · WatcherService · Redis & SQLite connectors · K8s session storage · Startup cache · Pointer compression · Couchbase v2 deprecation · Couchbase security & critical bug fixes · HTTP/2 security hardening |
15
15
  | **Q3 2026** | `0.3.0` ✅ | Async/await · Dev hot-reload · MySQL & PostgreSQL connectors · AI Phase 2 · Tutorials · Mobile backend guide · Route radix tree · Connector peerDependencies · 103 Early Hints · HTTP/2 observability · Security & CVE page · Couchbase connector hardening · Inspector Phase 1 + Phase 2 · CLI Tier 1 (project lifecycle, port:set, framework:get) |
16
- | **Q3 2026** | `0.3.1` | Release workflow fixes · SQL query index reporting · HTTP/2 performance · Dependency reduction (`ssl-checker`, `colors`, `uuid` Node.js built-ins) |
16
+ | **Q3 2026** | `0.3.1` | Release workflow fixes · SQL index reporting Phase A · HTTP/2 direct stream for HTML · Dependency reduction (`ssl-checker`, `colors`, `uuid` removed — engine.io sole runtime dep) |
17
+ | **Q3 2026** | `0.3.2` | Publish JSON Schema files for config files · Model loading fixes · Entity short-name aliases |
17
18
  | **Q4 2026** | `0.4.0` | TypeScript declarations · AI agents (OpenAPI, MCP) · ScyllaDB connector · PWA scaffold · Prometheus metrics · Advanced tutorial · Website redesign · Docs offline ZIP · Bun investigation · Couchbase v2 removal · HTTP/2 hardening · Trailer support · CLI Tier 2 (bundle/project status, rename, copy, protocol:remove, minions) |
18
19
  | **Q1 2027** | `0.5.0` | ESM support · Template engine migration · Structured logging · Alt-Svc · HTTP/2 priorities · WebSocket over HTTP/2 · Inspector Production · CLI Tier 3 (project:move, framework:update, backup/restore, man pages) |
19
20
  | **Q3 2027** | `1.0.0` | First stable release — Windows alpha compatibility is a hard gate |
@@ -206,6 +207,7 @@ A cold audit of the Couchbase connector identified two critical security vulnera
206
207
  | Status | Feature | Version | Target |
207
208
  | --- | --- | --- | --- |
208
209
  | ✅ | **JSON Schemas for config files** — Machine-readable schemas for `routing.json`, `connectors.json`, `app.json`, `settings.json`, `app.crons.json`. Adds `"$schema"` references to generated scaffold files. Gives editors free validation and autocomplete; gives AI assistants authoritative field names so generated config is correct on the first attempt. | `0.2.0` | Q2 2026 |
210
+ | ✅ | **Publish JSON Schema files at `gina.io/schema/*`** — 7 JSON Schema files published: `app.json`, `app.crons.json`, `connectors.json`, `manifest.json`, `routing.json`, `settings.json`, `watchers.json`. IDEs can now download and validate config files automatically. | `0.3.2` | Q3 2026 |
209
211
  | 📋 | **TypeScript declaration files** — Cross-listed with Modernisation Phase 4. Essential for AI code generation accuracy. | `0.4.0` | Q4 2026 |
210
212
 
211
213
  ### Phase 2 — Gina apps can use AI
@@ -277,7 +279,8 @@ Gina's built-in per-bundle inspector. Phases 1–2 ship as an embedded SPA at `/
277
279
  | Status | Feature | Version | Target |
278
280
  | --- | --- | --- | --- |
279
281
  | 🔨 | **`services/src/inspector/` standalone bundle** — ~~Rename `services/src/toolbar/` to `services/src/inspector/`~~ (done). Inspector SPA as a standalone gina bundle on port 4101. Connects to bundles via authenticated WebSocket. The embedded SPA at `/_gina/inspector/` remains for quick dev-mode access. | `0.5.0` | Q1 2027 |
280
- | 🔨 | **Agent endpoint (`/_gina/agent`)** — ~~Dev-mode SSE endpoint — combined data + log stream, CORS, HTTP/2 support, Inspector SPA `tryAgent()` with `?target=` param~~ (done). Remaining: upgrade to authenticated WebSocket, API key gating, production-safe toggle. | `0.5.0` | Q1 2027 |
282
+ | | **Agent endpoint — dev-mode SSE (`/_gina/agent`)** — Combined data + log SSE stream. CORS, server.js + server.isaac.js (HTTP/2), Inspector SPA `tryAgent()` with `?target=` param. Named events (`event: data`, `event: log`). Manual connect form on "No source" overlay. | `0.3.0` | 2026-04-05 |
283
+ | 📋 | **Agent endpoint — production auth** — Upgrade `/_gina/agent` to authenticated WebSocket. API key gating (`inspector.agent_key` in `settings.json`), production-safe toggle. | `0.5.0` | Q1 2027 |
281
284
  | 📋 | **Toggleable instrumentation** — Runtime toggle for query instrumentation independent of `NODE_ENV_IS_DEV`. Enable in production for a time window without full dev mode. Minimal overhead when disabled. | `0.5.0` | Q1 2027 |
282
285
  | 📋 | **Multi-bundle dashboard** — Discover all running bundles via `ports.json`, connect to each agent. Full-stack request tracing across bundle boundaries. | post-1.0.0 | — |
283
286
  | 📋 | **Browser extension companion** — Chrome/Firefox DevTools panel. Thin UI shell connecting to the standalone Inspector via WebSocket. Optional — not a replacement. | post-1.0.0 | — |
package/bin/cli CHANGED
@@ -304,6 +304,7 @@ async function onExec() {
304
304
  'cache:',
305
305
  'dev:',
306
306
  'env:',
307
+ 'inspector:',
307
308
  'scope:',
308
309
  'framework:',
309
310
  'minion:',
package/bin/gina CHANGED
@@ -121,6 +121,10 @@ function runAsSubProcess() {
121
121
  var error = null;
122
122
  child.stderr.on('data', function(err) {
123
123
  error = err.toString();
124
+ // Skip Node.js ExperimentalWarning messages (benign — e.g., SQLite on Node 25+)
125
+ if (/ExperimentalWarning/.test(error)) {
126
+ return;
127
+ }
124
128
  if (/Debugger listening|Debugger attached|Warning|address already in use/i.test(error)) {
125
129
  console.warn(error);
126
130
  return process.exit(1);
@@ -0,0 +1 @@
1
+ 0.3.2
@@ -87,10 +87,14 @@
87
87
  Custom
88
88
  </button>
89
89
  </div>
90
+ <button class="bm-btn bm-layout-reset fade-out" id="bm-layout-reset">Reset</button>
90
91
  <div class="bm-layout-preview" id="bm-layout-preview"></div>
91
92
  </div>
92
93
  <!-- Environment info (different bg, resizable) -->
93
94
  <div class="bm-settings-env-wrap" id="bm-settings-env-wrap">
95
+ <button class="bm-env-copy" id="bm-env-copy" title="Copy environment info">
96
+ <svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="5" y="5" width="8" height="8" rx="1"/><path d="M3 11V3a1 1 0 0 1 1-1h8"/></svg>
97
+ </button>
94
98
  <div class="bm-settings-env" id="bm-settings-env"></div>
95
99
  <div class="bm-resize-handle" id="bm-env-resize" title="Drag to resize">&#x2261;</div>
96
100
  </div>
@@ -2,7 +2,7 @@
2
2
  /* ── Font ─────────────────────────────────────────────────────────────────── */
3
3
  @font-face {
4
4
  font-family: "have_heart_oneregular";
5
- src: url("https://gina.io/css/fonts/have_heart_one-webfont.woff2") format("woff2"), url("https://gina.io/css/fonts/have_heart_one-webfont.woff") format("woff");
5
+ src: url("have_heart_one-webfont.woff2") format("woff2");
6
6
  font-weight: normal;
7
7
  font-style: normal;
8
8
  font-display: swap;
@@ -495,6 +495,11 @@ input:checked ~ .bm-toggle-track::after {
495
495
  letter-spacing: 0.02em;
496
496
  }
497
497
 
498
+ .bm-lp-pill-hidden {
499
+ opacity: 0.35;
500
+ text-decoration: line-through;
501
+ }
502
+
498
503
  .bm-lp-arrow {
499
504
  color: var(--text-dim);
500
505
  font-size: 10px;
@@ -502,6 +507,26 @@ input:checked ~ .bm-toggle-track::after {
502
507
  margin: 0 1px;
503
508
  }
504
509
 
510
+ .bm-lp-arrow-dim {
511
+ opacity: 0.25;
512
+ }
513
+
514
+ /* Reset — .bm-btn sized for the settings row, fade in/out with Custom */
515
+ .bm-layout-reset {
516
+ height: 22px;
517
+ font-size: 10px;
518
+ line-height: 22px;
519
+ padding: 0 8px;
520
+ opacity: 1;
521
+ visibility: visible;
522
+ transition: color 0.15s, border-color 0.15s, background 0.15s, opacity 0.25s ease, visibility 0.25s ease;
523
+ }
524
+ .bm-layout-reset.fade-out {
525
+ opacity: 0;
526
+ visibility: hidden;
527
+ pointer-events: none;
528
+ }
529
+
505
530
  /* Light theme adjustments */
506
531
  [data-theme=light] .bm-layout-btn.active {
507
532
  color: #fff;
@@ -544,6 +569,58 @@ input:checked ~ .bm-toggle-track::after {
544
569
  position: relative;
545
570
  }
546
571
 
572
+ /* ── Tab close button (custom mode — hide tabs) ────────────────────── */
573
+ .bm-tab-close {
574
+ display: none;
575
+ font-size: 13px;
576
+ line-height: 1;
577
+ color: var(--text-dim);
578
+ opacity: 0;
579
+ margin-left: 4px;
580
+ padding: 0 2px;
581
+ cursor: pointer;
582
+ transition: opacity 0.15s, color 0.15s;
583
+ vertical-align: middle;
584
+ }
585
+
586
+ .bm-tabs.bm-drag-mode .bm-tab-close {
587
+ display: inline;
588
+ }
589
+
590
+ .bm-tabs.bm-drag-mode .bm-tab:hover .bm-tab-close {
591
+ opacity: 0.6;
592
+ }
593
+
594
+ .bm-tab-close:hover {
595
+ opacity: 1 !important;
596
+ color: var(--err);
597
+ }
598
+
599
+ /* Nudge animation — staggered wiggle when entering custom mode */
600
+ @keyframes bm-nudge {
601
+ 0% {
602
+ transform: translateX(0);
603
+ }
604
+ 20% {
605
+ transform: translateX(-3px);
606
+ }
607
+ 40% {
608
+ transform: translateX(3px);
609
+ }
610
+ 60% {
611
+ transform: translateX(-2px);
612
+ }
613
+ 80% {
614
+ transform: translateX(1px);
615
+ }
616
+ 100% {
617
+ transform: translateX(0);
618
+ }
619
+ }
620
+ .bm-tab-nudge {
621
+ animation: bm-nudge 0.35s ease-in-out;
622
+ }
623
+
547
624
  /* ── Footer ─────────────────────────────────────────────────────────── */
548
625
  .bm-footer {
549
626
  display: flex;
@@ -557,18 +634,26 @@ input:checked ~ .bm-toggle-track::after {
557
634
  }
558
635
 
559
636
  .bm-footer-version {
560
- color: var(--text-dim);
561
- font: 10px var(--sans);
562
- white-space: nowrap;
563
- opacity: 0.7;
637
+ display: flex;
638
+ align-items: baseline;
639
+ gap: 5px;
564
640
  flex-shrink: 0;
641
+ white-space: nowrap;
565
642
  }
566
643
 
567
644
  .bm-footer-brand {
568
645
  font-family: "have_heart_oneregular";
569
646
  font-weight: 400;
570
- font-size: 13px;
571
- vertical-align: baseline;
647
+ font-size: 18px;
648
+ color: var(--text-dim);
649
+ opacity: 0.5;
650
+ letter-spacing: 0.02em;
651
+ }
652
+
653
+ .bm-footer-ver {
654
+ font: 9px var(--mono);
655
+ color: var(--text-dim);
656
+ opacity: 0.5;
572
657
  }
573
658
 
574
659
  /* Memory gauge (inside footer) */
@@ -653,6 +738,37 @@ input:checked ~ .bm-toggle-track::after {
653
738
  word-break: break-all;
654
739
  }
655
740
 
741
+ /* Copy env button */
742
+ .bm-env-copy {
743
+ position: absolute;
744
+ top: 6px;
745
+ right: 8px;
746
+ z-index: 2;
747
+ background: none;
748
+ border: 1px solid transparent;
749
+ border-radius: 4px;
750
+ padding: 3px;
751
+ cursor: pointer;
752
+ color: var(--text-dim);
753
+ opacity: 0.4;
754
+ transition: opacity 0.15s, color 0.15s, border-color 0.15s;
755
+ }
756
+ .bm-env-copy svg {
757
+ width: 13px;
758
+ height: 13px;
759
+ display: block;
760
+ }
761
+ .bm-env-copy:hover {
762
+ opacity: 1;
763
+ color: var(--accent);
764
+ border-color: var(--border);
765
+ }
766
+ .bm-env-copy.copied {
767
+ opacity: 1;
768
+ color: var(--ok);
769
+ border-color: var(--ok);
770
+ }
771
+
656
772
  /* Resize handle */
657
773
  .bm-resize-handle {
658
774
  position: absolute;
@@ -1261,6 +1377,39 @@ details[open] > summary.bm-summary::before {
1261
1377
  font-style: italic;
1262
1378
  }
1263
1379
 
1380
+ /* ── Tab empty state (JSON-only APIs — no view/forms) ──────────────── */
1381
+ .bm-tab-empty {
1382
+ display: flex;
1383
+ flex-direction: column;
1384
+ align-items: center;
1385
+ justify-content: center;
1386
+ padding: 48px 24px;
1387
+ text-align: center;
1388
+ min-height: 200px;
1389
+ }
1390
+
1391
+ .bm-tab-empty-icon {
1392
+ width: 40px;
1393
+ height: 40px;
1394
+ color: var(--text-dim);
1395
+ opacity: 0.35;
1396
+ margin-bottom: 16px;
1397
+ }
1398
+
1399
+ .bm-tab-empty p {
1400
+ font-size: 14px;
1401
+ color: var(--text-dim);
1402
+ margin: 0 0 8px;
1403
+ }
1404
+
1405
+ .bm-tab-empty-hint {
1406
+ font-size: 11px;
1407
+ color: var(--text-dim);
1408
+ opacity: 0.6;
1409
+ max-width: 280px;
1410
+ line-height: 1.5;
1411
+ }
1412
+
1264
1413
  .bm-hint {
1265
1414
  color: var(--text-dim);
1266
1415
  font: 12px var(--sans);
@@ -3261,11 +3410,13 @@ details[open] > summary.bm-summary::before {
3261
3410
  font-size: 9px;
3262
3411
  }
3263
3412
  .bm-footer-version {
3264
- font-size: 9px;
3265
3413
  padding-left: 4px;
3266
3414
  }
3267
3415
  .bm-footer-brand {
3268
- font-size: 11px;
3416
+ font-size: 15px;
3417
+ }
3418
+ .bm-footer-ver {
3419
+ font-size: 8px;
3269
3420
  }
3270
3421
  /* Scroll area: tighter padding */
3271
3422
  .bm-scroll-area {