gina 0.6.2-alpha.1 → 0.6.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 (561) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +15 -25
  3. package/ROADMAP.md +8 -6
  4. package/framework/v0.6.2/VERSION +1 -0
  5. package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/asset/plugin/dist/vendor/gina/js/gina.js +12 -3
  6. package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +160 -160
  7. package/framework/v0.6.2/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
  8. package/framework/v0.6.2/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
  9. package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/config.js +63 -2
  10. package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/controller/controller.js +279 -10
  11. package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/controller/controller.render-nunjucks.js +5 -1
  12. package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/controller/controller.render-swig.js +13 -1
  13. package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/gna.js +31 -0
  14. package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/conf/env.json +12 -0
  15. package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/nunjucks-filters/src/main.js +7 -1
  16. package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/proc.js +15 -1
  17. package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/swig-filters/src/main.js +12 -1
  18. package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/uuid/src/main.js +12 -3
  19. package/framework/{v0.6.2-alpha.1 → v0.6.2}/package.json +1 -1
  20. package/gna.js +4 -4
  21. package/llms.txt +5 -3
  22. package/package.json +3 -3
  23. package/schema/settings.json +22 -0
  24. package/script/perf/analyze-cpuprofile.js +187 -0
  25. package/script/perf/profile-baseline.js +811 -0
  26. package/script/perf/ws-codec-server.js +44 -0
  27. package/utils/prototypes.json_clone.js +5 -2
  28. package/framework/v0.6.2-alpha.1/VERSION +0 -1
  29. package/framework/v0.6.2-alpha.1/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
  30. package/framework/v0.6.2-alpha.1/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
  31. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/AUTHORS +0 -0
  32. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/LICENSE +0 -0
  33. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/asset/html/nolayout.html +0 -0
  34. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/asset/html/static.html +0 -0
  35. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/asset/img/android-chrome-192x192.png +0 -0
  36. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/asset/img/android-chrome-512x512.png +0 -0
  37. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/asset/img/apple-touch-icon.png +0 -0
  38. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/asset/img/favicon-16x16.png +0 -0
  39. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/asset/img/favicon-32x32.png +0 -0
  40. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/asset/img/favicon.ico +0 -0
  41. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/asset/plugin/README.md +0 -0
  42. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
  43. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
  44. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
  45. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
  46. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
  47. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
  48. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
  49. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
  50. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
  51. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
  52. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
  53. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
  54. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
  55. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
  56. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
  57. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
  58. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
  59. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/connectors/ai/index.js +0 -0
  60. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/connectors/ai/lib/connector.js +0 -0
  61. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/connectors/couchbase/index.js +0 -0
  62. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/connectors/couchbase/lib/connector.js +0 -0
  63. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/connectors/couchbase/lib/connector.v3.js +0 -0
  64. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/connectors/couchbase/lib/connector.v4.js +0 -0
  65. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/connectors/couchbase/lib/n1ql.js +0 -0
  66. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/connectors/couchbase/lib/session-store.js +0 -0
  67. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
  68. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
  69. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/connectors/duckdb/index.js +0 -0
  70. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/connectors/duckdb/lib/connector.js +0 -0
  71. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/connectors/mongodb/index.js +0 -0
  72. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/connectors/mongodb/lib/connector.js +0 -0
  73. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/connectors/mongodb/lib/job-store.js +0 -0
  74. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
  75. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/connectors/mongodb/lib/session-store.js +0 -0
  76. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/connectors/mysql/index.js +0 -0
  77. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/connectors/mysql/lib/connector.js +0 -0
  78. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/connectors/postgresql/index.js +0 -0
  79. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/connectors/postgresql/lib/connector.js +0 -0
  80. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/connectors/redis/index.js +0 -0
  81. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/connectors/redis/lib/connector.js +0 -0
  82. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/connectors/redis/lib/job-store.js +0 -0
  83. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/connectors/redis/lib/render-cache-store.js +0 -0
  84. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/connectors/redis/lib/session-store.js +0 -0
  85. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/connectors/scylladb/index.js +0 -0
  86. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/connectors/scylladb/lib/connector.js +0 -0
  87. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/connectors/scylladb/lib/session-store.js +0 -0
  88. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/connectors/sql-parser.js +0 -0
  89. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/connectors/sqlite/index.js +0 -0
  90. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/connectors/sqlite/lib/connector.js +0 -0
  91. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/connectors/sqlite/lib/job-store.js +0 -0
  92. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/connectors/sqlite/lib/session-store.js +0 -0
  93. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/content.encoding +0 -0
  94. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/controller/controller.framework.js +0 -0
  95. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/controller/controller.render-json.js +0 -0
  96. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/controller/controller.render-nunjucks-async.js +0 -0
  97. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/controller/controller.render-stream.js +0 -0
  98. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/controller/controller.render-swig-async.js +0 -0
  99. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/controller/controller.render-v1.js +0 -0
  100. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/controller/index.js +0 -0
  101. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/controller/inspector-window-emit.js +0 -0
  102. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/controller/release-banner.js +0 -0
  103. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/dev/index.js +0 -0
  104. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/dev/lib/class.js +0 -0
  105. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/dev/lib/factory.js +0 -0
  106. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/dev/lib/tools.js +0 -0
  107. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/locales/README.md +0 -0
  108. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/locales/currency.json +0 -0
  109. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/locales/dist/language/en.json +0 -0
  110. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/locales/dist/language/fr.json +0 -0
  111. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/locales/dist/region/en.json +0 -0
  112. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/locales/dist/region/fr.json +0 -0
  113. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/locales/index.js +0 -0
  114. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/mime.types +0 -0
  115. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/model/entity.js +0 -0
  116. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/model/index.js +0 -0
  117. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/model/template/entityFactory.js +0 -0
  118. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/model/template/index.js +0 -0
  119. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/README.md +0 -0
  120. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/index.js +0 -0
  121. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/csrf/README.md +0 -0
  122. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/csrf/package.json +0 -0
  123. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/csrf/src/main.js +0 -0
  124. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/README.md +0 -0
  125. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/coep/README.md +0 -0
  126. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/coep/package.json +0 -0
  127. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
  128. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/coop/README.md +0 -0
  129. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/coop/package.json +0 -0
  130. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
  131. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/corp/README.md +0 -0
  132. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/corp/package.json +0 -0
  133. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
  134. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/csp/README.md +0 -0
  135. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/csp/package.json +0 -0
  136. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
  137. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
  138. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
  139. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
  140. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/hsts/README.md +0 -0
  141. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/hsts/package.json +0 -0
  142. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
  143. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
  144. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
  145. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
  146. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/package.json +0 -0
  147. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
  148. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
  149. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
  150. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/src/main.js +0 -0
  151. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
  152. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
  153. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
  154. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
  155. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
  156. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
  157. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
  158. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
  159. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
  160. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
  161. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
  162. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
  163. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
  164. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
  165. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
  166. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
  167. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
  168. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
  169. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/session/README.md +0 -0
  170. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/session/package.json +0 -0
  171. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/session/src/main.js +0 -0
  172. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/storage/README.md +0 -0
  173. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/storage/build.json +0 -0
  174. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/storage/package.json +0 -0
  175. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/storage/src/main.js +0 -0
  176. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/validator/README.md +0 -0
  177. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/validator/build.json +0 -0
  178. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/validator/package.json +0 -0
  179. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/validator/src/form-validator.js +0 -0
  180. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/plugins/lib/validator/src/main.js +0 -0
  181. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/router.js +0 -0
  182. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/server.express.js +0 -0
  183. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/server.isaac.js +0 -0
  184. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/server.js +0 -0
  185. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/status.codes +0 -0
  186. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/_gitignore +0 -0
  187. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/boilerplate/bundle/config/app.json +0 -0
  188. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/boilerplate/bundle/config/connectors.json +0 -0
  189. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/boilerplate/bundle/config/routing.json +0 -0
  190. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/boilerplate/bundle/config/settings.json +0 -0
  191. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
  192. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/boilerplate/bundle/config/templates.json +0 -0
  193. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/boilerplate/bundle/config/watchers.json +0 -0
  194. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
  195. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
  196. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
  197. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/boilerplate/bundle/index.js +0 -0
  198. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/boilerplate/bundle/locales/en.json +0 -0
  199. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
  200. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/boilerplate/bundle_public/css/default.css +0 -0
  201. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/boilerplate/bundle_public/css/home.css +0 -0
  202. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
  203. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
  204. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/boilerplate/bundle_public/js/components/x-checklist.js +0 -0
  205. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
  206. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
  207. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/boilerplate/bundle_public/readme.md +0 -0
  208. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/boilerplate/bundle_public/sw.js +0 -0
  209. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
  210. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
  211. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
  212. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
  213. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/boilerplate/bundle_templates/html/includes/x-checklist.html +0 -0
  214. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
  215. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/command/gina.bat.tpl +0 -0
  216. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/command/gina.tpl +0 -0
  217. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/conf/manifest.json +0 -0
  218. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/conf/package.json +0 -0
  219. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/conf/settings.json +0 -0
  220. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/conf/statics.json +0 -0
  221. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/conf/templates.json +0 -0
  222. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/error/client/json/401.json +0 -0
  223. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/error/client/json/403.json +0 -0
  224. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/error/client/json/404.json +0 -0
  225. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/error/server/html/50x.html +0 -0
  226. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/error/server/json/500.json +0 -0
  227. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/error/server/json/503.json +0 -0
  228. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/core/template/extensions/logger/config.json +0 -0
  229. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/helpers/console.js +0 -0
  230. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/helpers/context.js +0 -0
  231. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/helpers/data/LICENSE +0 -0
  232. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/helpers/data/README.md +0 -0
  233. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/helpers/data/package.json +0 -0
  234. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/helpers/data/src/main.js +0 -0
  235. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/helpers/dateFormat.js +0 -0
  236. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/helpers/index.js +0 -0
  237. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/helpers/json/LICENSE +0 -0
  238. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/helpers/json/README.md +0 -0
  239. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/helpers/json/package.json +0 -0
  240. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/helpers/json/src/main.js +0 -0
  241. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/helpers/path.js +0 -0
  242. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/helpers/plugins/README.md +0 -0
  243. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/helpers/plugins/package.json +0 -0
  244. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/helpers/plugins/src/api-error.js +0 -0
  245. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/helpers/plugins/src/main.js +0 -0
  246. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/helpers/prototypes.js +0 -0
  247. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/helpers/task.js +0 -0
  248. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/helpers/text.js +0 -0
  249. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/admin/package.json +0 -0
  250. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/admin/src/main.js +0 -0
  251. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/archiver/README.md +0 -0
  252. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/archiver/build.json +0 -0
  253. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/archiver/package.json +0 -0
  254. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/archiver/src/dep/jszip.min.js +0 -0
  255. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/archiver/src/main.js +0 -0
  256. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/async/package.json +0 -0
  257. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/async/src/main.js +0 -0
  258. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/audit/package.json +0 -0
  259. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/audit/src/main.js +0 -0
  260. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/audit-store.js +0 -0
  261. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/authn/package.json +0 -0
  262. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/authn/src/lockout.js +0 -0
  263. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/authn/src/main.js +0 -0
  264. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/authn/src/totp.js +0 -0
  265. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/authz-gate/package.json +0 -0
  266. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/authz-gate/src/main.js +0 -0
  267. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cache/README.md +0 -0
  268. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cache/build.json +0 -0
  269. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cache/package.json +0 -0
  270. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cache/src/main.js +0 -0
  271. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/aliases.json +0 -0
  272. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/audit/arguments.json +0 -0
  273. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/audit/help.txt +0 -0
  274. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/audit/verify.js +0 -0
  275. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/bundle/add.js +0 -0
  276. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/bundle/arguments.json +0 -0
  277. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/bundle/build.js +0 -0
  278. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/bundle/copy.js +0 -0
  279. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/bundle/cp.js +0 -0
  280. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/bundle/help.js +0 -0
  281. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/bundle/help.txt +0 -0
  282. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
  283. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/bundle/list.js +0 -0
  284. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/bundle/man.js +0 -0
  285. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/bundle/mcp-start.js +0 -0
  286. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/bundle/mcp.js +0 -0
  287. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/bundle/oas.js +0 -0
  288. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/bundle/openapi.js +0 -0
  289. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/bundle/remove.js +0 -0
  290. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/bundle/rename.js +0 -0
  291. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/bundle/restart.js +0 -0
  292. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/bundle/rm.js +0 -0
  293. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/bundle/start.js +0 -0
  294. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/bundle/status.js +0 -0
  295. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/bundle/stop.js +0 -0
  296. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/bundle/types.js +0 -0
  297. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/cache/arguments.json +0 -0
  298. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/cache/clear.js +0 -0
  299. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/cache/help.txt +0 -0
  300. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/cache/stats.js +0 -0
  301. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/connector/add.js +0 -0
  302. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/connector/arguments.json +0 -0
  303. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/connector/help.js +0 -0
  304. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/connector/help.txt +0 -0
  305. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/connector/infer.js +0 -0
  306. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/connector/list.js +0 -0
  307. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/connector/migrate.js +0 -0
  308. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/connector/models.js +0 -0
  309. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/connector/remove.js +0 -0
  310. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/connector/rm.js +0 -0
  311. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/connector/test.js +0 -0
  312. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/container/arguments.json +0 -0
  313. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/container/help.js +0 -0
  314. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/container/help.txt +0 -0
  315. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/container/man.js +0 -0
  316. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/container/ps.js +0 -0
  317. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/container/stop.js +0 -0
  318. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/controller/add.js +0 -0
  319. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/controller/arguments.json +0 -0
  320. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/controller/help.txt +0 -0
  321. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/controller/inc/args.js +0 -0
  322. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/controller/inc/namespace.js +0 -0
  323. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/controller/inc/reference-rewrite.js +0 -0
  324. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/controller/inc/reference-scan.js +0 -0
  325. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/controller/inc/scaffold.js +0 -0
  326. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/controller/remove.js +0 -0
  327. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/controller/rename.js +0 -0
  328. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/controller/rm.js +0 -0
  329. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/env/add.js +0 -0
  330. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/env/get.js +0 -0
  331. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/env/help.js +0 -0
  332. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/env/help.txt +0 -0
  333. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/env/link-dev.js +0 -0
  334. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/env/list.js +0 -0
  335. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/env/remove.js +0 -0
  336. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/env/rm.js +0 -0
  337. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/env/set.js +0 -0
  338. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/env/unset.js +0 -0
  339. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/env/use.js +0 -0
  340. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/framework/add.js +0 -0
  341. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/framework/arguments.json +0 -0
  342. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/framework/build.js +0 -0
  343. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/framework/dot.js +0 -0
  344. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/framework/get.js +0 -0
  345. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/framework/help.js +0 -0
  346. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/framework/help.txt +0 -0
  347. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/framework/init.js +0 -0
  348. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/framework/link-node-modules.js +0 -0
  349. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/framework/link.js +0 -0
  350. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/framework/list.js +0 -0
  351. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/framework/man.js +0 -0
  352. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/framework/msg.json +0 -0
  353. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/framework/open.js +0 -0
  354. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/framework/remove.js +0 -0
  355. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/framework/reset.js +0 -0
  356. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/framework/restart.js +0 -0
  357. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/framework/set.js +0 -0
  358. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/framework/start.js +0 -0
  359. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/framework/status.js +0 -0
  360. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/framework/stop.js +0 -0
  361. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/framework/tail.js +0 -0
  362. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/framework/update.js +0 -0
  363. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/framework/version.js +0 -0
  364. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/gina-dev.1.md +0 -0
  365. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/gina-framework.1.md +0 -0
  366. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/gina.1.md +0 -0
  367. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/helper.js +0 -0
  368. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/i18n/add.js +0 -0
  369. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/i18n/arguments.json +0 -0
  370. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/i18n/export.js +0 -0
  371. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/i18n/help.js +0 -0
  372. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/i18n/help.txt +0 -0
  373. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/i18n/import.js +0 -0
  374. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/i18n/scan.js +0 -0
  375. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/image/_host.js +0 -0
  376. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/image/arguments.json +0 -0
  377. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/image/build.js +0 -0
  378. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/image/help.js +0 -0
  379. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/image/help.txt +0 -0
  380. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/image/list.js +0 -0
  381. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/image/man.js +0 -0
  382. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/image/rm.js +0 -0
  383. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/image/run.js +0 -0
  384. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/index.js +0 -0
  385. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/inspector/help.js +0 -0
  386. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/inspector/help.txt +0 -0
  387. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/inspector/open.js +0 -0
  388. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/man-render.js +0 -0
  389. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/minion/arguments.json +0 -0
  390. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/minion/help.js +0 -0
  391. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/minion/help.txt +0 -0
  392. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/minion/kill.js +0 -0
  393. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/minion/list.js +0 -0
  394. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/msg.json +0 -0
  395. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/port/help.js +0 -0
  396. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/port/help.txt +0 -0
  397. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/port/inc/scan.js +0 -0
  398. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/port/list.js +0 -0
  399. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/port/reset.js +0 -0
  400. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/port/set.js +0 -0
  401. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/project/add.js +0 -0
  402. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/project/arguments.json +0 -0
  403. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/project/backup.js +0 -0
  404. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/project/build.js +0 -0
  405. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/project/help.js +0 -0
  406. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/project/help.txt +0 -0
  407. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/project/import.js +0 -0
  408. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/project/list.js +0 -0
  409. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/project/man.js +0 -0
  410. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/project/move.js +0 -0
  411. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/project/remove.js +0 -0
  412. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/project/rename.js +0 -0
  413. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/project/restart.js +0 -0
  414. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/project/restore.js +0 -0
  415. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/project/rm.js +0 -0
  416. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/project/start.js +0 -0
  417. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/project/status.js +0 -0
  418. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/project/stop.js +0 -0
  419. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/protocol/arguments.json +0 -0
  420. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/protocol/help.js +0 -0
  421. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/protocol/help.txt +0 -0
  422. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/protocol/list.js +0 -0
  423. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/protocol/remove.js +0 -0
  424. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/protocol/set.js +0 -0
  425. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/scope/add.js +0 -0
  426. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/scope/help.js +0 -0
  427. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/scope/help.txt +0 -0
  428. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/scope/link-local.js +0 -0
  429. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/scope/link-production.js +0 -0
  430. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/scope/list.js +0 -0
  431. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/scope/remove.js +0 -0
  432. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/scope/rm.js +0 -0
  433. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/scope/use.js +0 -0
  434. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/secrets/arguments.json +0 -0
  435. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/secrets/check.js +0 -0
  436. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/secrets/help.js +0 -0
  437. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/secrets/help.txt +0 -0
  438. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/secrets/scan.js +0 -0
  439. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/service/help.js +0 -0
  440. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/service/help.txt +0 -0
  441. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/service/list.js +0 -0
  442. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/service/man.js +0 -0
  443. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/service/start.js +0 -0
  444. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd/view/add.js +0 -0
  445. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd-status-format/package.json +0 -0
  446. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cmd-status-format/src/main.js +0 -0
  447. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/collection/README.md +0 -0
  448. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/collection/build.json +0 -0
  449. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/collection/package.json +0 -0
  450. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/collection/src/main.js +0 -0
  451. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/config.js +0 -0
  452. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/connector-config/package.json +0 -0
  453. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/connector-config/src/main.js +0 -0
  454. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/connector-error/package.json +0 -0
  455. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/connector-error/src/main.js +0 -0
  456. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/connector-registry/package.json +0 -0
  457. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/connector-registry/src/main.js +0 -0
  458. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cron/README.md +0 -0
  459. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cron/package.json +0 -0
  460. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/cron/src/main.js +0 -0
  461. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/domain/LICENSE +0 -0
  462. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/domain/README.md +0 -0
  463. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/domain/package.json +0 -0
  464. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/domain/src/main.js +0 -0
  465. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/dto/package.json +0 -0
  466. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/dto/src/main.js +0 -0
  467. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/dto-pipe/package.json +0 -0
  468. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/dto-pipe/src/main.js +0 -0
  469. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/dto-types/package.json +0 -0
  470. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/dto-types/src/main.js +0 -0
  471. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/generator/index.js +0 -0
  472. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/i18n/package.json +0 -0
  473. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/i18n/src/main.js +0 -0
  474. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/image-build/package.json +0 -0
  475. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/image-build/src/main.js +0 -0
  476. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/index.js +0 -0
  477. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/inherits/LICENSE +0 -0
  478. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/inherits/README.md +0 -0
  479. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/inherits/package.json +0 -0
  480. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/inherits/src/main.js +0 -0
  481. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/inspector-events/package.json +0 -0
  482. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/inspector-events/src/main.js +0 -0
  483. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/inspector-redact/package.json +0 -0
  484. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/inspector-redact/src/main.js +0 -0
  485. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/instrument/package.json +0 -0
  486. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/instrument/src/main.js +0 -0
  487. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/job/package.json +0 -0
  488. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/job/src/main.js +0 -0
  489. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/job-store.js +0 -0
  490. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/json-config-header/package.json +0 -0
  491. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/json-config-header/src/main.js +0 -0
  492. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/logger/README.md +0 -0
  493. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/logger/package.json +0 -0
  494. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/logger/src/containers/default/index.js +0 -0
  495. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/logger/src/containers/file/index.js +0 -0
  496. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
  497. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
  498. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/logger/src/containers/mq/index.js +0 -0
  499. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/logger/src/containers/mq/listener.js +0 -0
  500. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/logger/src/containers/mq/speaker.js +0 -0
  501. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/logger/src/helper.js +0 -0
  502. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/logger/src/main.js +0 -0
  503. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/math/index.js +0 -0
  504. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/mcp-dispatch/package.json +0 -0
  505. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/mcp-dispatch/src/main.js +0 -0
  506. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/mcp-http/package.json +0 -0
  507. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/mcp-http/src/main.js +0 -0
  508. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/mcp-server/package.json +0 -0
  509. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/mcp-server/src/main.js +0 -0
  510. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/merge/README.md +0 -0
  511. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/merge/package.json +0 -0
  512. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/merge/src/main.js +0 -0
  513. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/metrics/package.json +0 -0
  514. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/metrics/src/main.js +0 -0
  515. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/model.js +0 -0
  516. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/net-locality/package.json +0 -0
  517. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/net-locality/src/main.js +0 -0
  518. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/nunjucks-filters/README.md +0 -0
  519. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/nunjucks-filters/package.json +0 -0
  520. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/nunjucks-resolver/package.json +0 -0
  521. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/nunjucks-resolver/src/main.js +0 -0
  522. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/release-watch/package.json +0 -0
  523. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/release-watch/src/main.js +0 -0
  524. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/render-cache/package.json +0 -0
  525. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/render-cache/src/main.js +0 -0
  526. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/render-cache-store.js +0 -0
  527. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/routing/README.md +0 -0
  528. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/routing/build.json +0 -0
  529. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/routing/package.json +0 -0
  530. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/routing/src/main.js +0 -0
  531. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/routing/src/radix.js +0 -0
  532. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/routing-introspect/package.json +0 -0
  533. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/routing-introspect/src/main.js +0 -0
  534. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/secrets/package.json +0 -0
  535. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/secrets/src/backends/env.js +0 -0
  536. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/secrets/src/main.js +0 -0
  537. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/session-store.js +0 -0
  538. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/shell.js +0 -0
  539. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/sqlite-driver.js +0 -0
  540. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/state.js +0 -0
  541. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/swig-filters/README.md +0 -0
  542. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/swig-filters/package.json +0 -0
  543. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/swig-resolver/package.json +0 -0
  544. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/swig-resolver/src/main.js +0 -0
  545. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/template-loaders/package.json +0 -0
  546. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/template-loaders/src/loaders/http.js +0 -0
  547. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/template-loaders/src/loaders/memory.js +0 -0
  548. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/template-loaders/src/main.js +0 -0
  549. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/url/README.md +0 -0
  550. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/url/index.js +0 -0
  551. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/url/routing.json +0 -0
  552. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/uuid/package.json +0 -0
  553. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/validator.js +0 -0
  554. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/watcher/package.json +0 -0
  555. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/watcher/src/main.js +0 -0
  556. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/ws-framing/package.json +0 -0
  557. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/ws-framing/src/main.js +0 -0
  558. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/ws-query/package.json +0 -0
  559. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/ws-query/src/main.js +0 -0
  560. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/ws-session/package.json +0 -0
  561. /package/framework/{v0.6.2-alpha.1 → v0.6.2}/lib/ws-session/src/main.js +0 -0
package/CHANGELOG.md CHANGED
@@ -6,6 +6,17 @@ 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.6.2 - 2026-08-01
10
+ ### Added
11
+ * Opt-in 503 + Retry-After rendering for transient datastore failures (connector error classification, slice 2): with `server.transientErrors.enabled: true` in a bundle's settings, a connector error stamped `isTransient` that would render as HTTP 500 through `throwError` renders as 503 with a `Retry-After` header (`server.transientErrors.retryAfter`, integer seconds 1..86400, default 30) and the user-facing `error` field replaced by `server.transientErrors.message` (default: the standard 503 status text) — on both engines, JSON and HTML error surfaces alike. Explicit non-500 statuses and permanent errors are never upgraded, and the default (opt-out) behaviour is byte-identical to before. A malformed `server.transientErrors` block warns at boot and leaves the feature off — it never refuses a boot.
12
+ ### Changed
13
+ * Render and request-path CPU overhead is sharply reduced: the per-render deep copies of the request options (template-filter configuration and render envelope) are replaced by reference passing after their write surfaces were measured empty, the per-request locale lookups are memoized with the request-local copy materialized lazily on first read, and the id generator sizes its entropy batch to the requested length (one webcrypto call per 16-char id instead of three). Measured on the profiling harness: 4.4x render throughput on the baseline workload (10.7 to 2.4 ms per render), deep-clone CPU share 50.31% to 1.81%, GC time down ~18x. No API change; the browser bundle changed, so bundles pick the id-generator half up on rebuild.
14
+ ### Fixed
15
+ * Dead process records are now removed from the `~/.gina/procs.json` registry under the right key. `removeRunningProc()` matched the entry to drop by pid but deleted under the constructing bundle key: self-removal worked by accident, while a non-coinciding dismissal rewrote the dead `gina-*` record back to disk — accumulating stale entries, a documented cause of daemon/boot confusion — and could destroy a live record instead (degrading `gina stop`, whose graceful-kill path locates the daemon through this registry). Pre-existing stale entries are not retroactively cleaned; with the daemon stopped, clearing the file once is safe.
16
+ * A bundle whose project `env.json` carries no configuration block for the environment it starts in now refuses to boot with a message naming the bundle, the environment, the resolved `env.json` path, and whether the file was found at all — instead of dying with an opaque `Cannot read properties of undefined` crash that named none of them. Covers all three shapes that produced the same failure: an `env.json` that is absent entirely, one that is empty, and one that declares only bundles the project manifest does not list. The refusal exits 1 through the same path as the missing `routing.json` refusal, so an external supervisor can retry while a release tree settles. A configuration that boots today is unaffected: the check can only fire where the boot already crashed.
17
+ * A project `env.json` block that did not itself declare `host` left the `${host}` token unsubstituted inside the TLS credentials paths, so an https or HTTP/2 bundle refused to start with an ENOENT naming a literal `${host}` path segment and an error pointing at the server settings rather than at the missing key. `host` was the only value the per-bundle configuration reads that had no framework-side default: it was written solely by the CLI into the project `env.json`, so a hand-written or partial block never received one. The framework env template now carries the same `localhost` default the CLI already writes, so a block that sets only a subset of keys resolves correctly, and a bundle whose project `env.json` omits `host` logs a warning naming the bundle and env instead of defaulting silently. Projects that declare `host` are unaffected.
18
+ * Starting a bundle in an environment its project `env.json` block does not cover now refuses cleanly (exit 1), naming the bundle, the environment and the resolved `env.json` path. It previously died with an opaque `TypeError: Cannot set properties of undefined (setting 'bundlesPath')` at exit 143, which named neither the file nor the bundle. A bundle that is declared for other environments but not the one being started is now also reported as skipped, instead of disappearing from the boot with nothing explaining why.
19
+
9
20
  ## 0.6.1 - 2026-07-31
10
21
  ### Added
11
22
  * SQLite support under the Bun runtime — the sqlite ORM connector, session store, async-job store and the framework state store now resolve the Bun built-in `bun:sqlite` behind a `node:sqlite`-shaped adapter when `node:sqlite` is absent (Bun does not implement it; previously the connector and both stores failed at boot under Bun, and the state store silently fell back to JSON). Node resolution is unchanged (`node:sqlite` is still tried first), and transient/permanent connector-error classification reads both drivers identically.
package/README.md CHANGED
@@ -60,33 +60,23 @@ open https://localhost:3100
60
60
 
61
61
  > **npm 12+** blocks install scripts by default, and gina's post-install bootstraps `~/.gina` and the framework dependencies. Install with `npm install -g gina@latest --allow-scripts=gina`, or allow it once for all global installs with `npm config set allow-scripts=gina --location=user`. (Not needed on npm ≤ 11.)
62
62
 
63
- ## What's in 0.6.1
64
-
65
- > **Three behaviour changes to check before upgrading.** None refuses a boot,
66
- > but each changes how an untouched bundle behaves. A JSON error payload rendered
67
- > on a genuine HTTP/2 stream now carries its real status code instead of always
68
- > being served as HTTP 200 review any client that keyed off the old 200. A form
69
- > declaring `data-gina-form-live-check-enabled="false"` now genuinely loses
70
- > live-check everywhere, where two gates previously kept running. And an app that
71
- > translated only the error keys it can observe will see those messages switch
72
- > from English to its own language. See the
73
- > [migration guide](https://gina.io/docs/migration) for each.
74
-
75
- > **No settings reset.** `0.6.1` is a patch — the `shortVersion` stays `0.6`, so
76
- > your `~/.gina/0.6/settings.json` is untouched. (`0.6.0` was the reset.)
63
+ ## What's in 0.6.2
64
+
65
+ > **Re-bake your bundles, not just restart them.** The browser bundle changed in
66
+ > this release, so a restart alone picks up only the server-side half of the
67
+ > render optimisation. Rebuild each bundle (`gina bundle:build`) to pick up the
68
+ > client-side half as well. Nothing breaks if you only restart you just leave
69
+ > part of the speedup on the table.
77
70
 
78
- - **Security the dev-mode Inspector no longer serves files outside its asset root.** A request to `/_gina/inspector/*` carrying a literal `../` escaped the Inspector's asset directory and read any file the bundle process could reach — application config and credentials included. The path helper the handler used *normalizes* `../` rather than rejecting it, so the traversal resolved rather than failing, and both engines were affected. Only bundles running in **dev mode** were ever exposed: production bundles do not serve this handler, and the URL-encoded `%2e%2e` form was never affected because the handler does not decode. A browser could not trigger it — browsers normalize `../` before the request is sent — but any raw HTTP client could. The resolved path is now confined to the Inspector asset root, and anything resolving outside it falls through to the same 404 as a missing file, matching the existing static-resolver guard. Nothing to do beyond upgrading. Worth reviewing while you are here: this endpoint carries no IP allowlist, unlike `/_gina/info` and `/_gina/cache/*`, and a dev bundle binds all interfaces by default — restricting dev hosts at the network layer is still worthwhile. Server-side — restart your bundles. (#B179)
79
- - **Added — DuckDB connector.** Embedded **analytical** (columnar / OLAP) SQL over the standard entity wiring — the analytics-side sibling of the SQLite connector's embedded OLTP role. A `"connector": "duckdb"` entry opens a file-backed or `":memory:"` database (`file` is optional and defaults to `~/.gina/{version}/{database}.duckdb`), and entity methods load from `models/<database>/sql/` with the same `@param` casting and `@return` shaping as MySQL and PostgreSQL. Row-returning detection covers the analytical dialect — `WITH` CTEs, `FROM`-first, `SUMMARIZE`, `PIVOT`/`UNPIVOT`, `DESCRIBE`, `SHOW` — so CTE-heavy queries return rows instead of being routed to the write path, and Parquet / CSV / JSON files can be queried directly with no ETL hop. Large numeric types (BIGINT / HUGEINT / DECIMAL) and dates arrive as JSON-safe strings; writes report `{ changes }`. `readOnly: true` opens the database read-only so any number of processes can share one file. The `@duckdb/node-api` driver installs in your project, and the `connector:*` CLI group plus the connectors.json schema recognise the new type. Additive — nothing to change. Server-side — restart your bundles. (#CN11)
80
- - **Added — SQLite works under the Bun runtime.** The SQLite ORM connector, the SQLite session store, the async-job store and the framework state store now resolve Bun's built-in `bun:sqlite` behind a `node:sqlite`-shaped adapter whenever `node:sqlite` is absent. Bun does not implement `node:sqlite`, so all four previously failed at boot under Bun — and the state store silently fell back to its JSON path. Nothing to install and no configuration change; transient/permanent connector-error classification reads both drivers identically. On Node.js nothing changes, since `node:sqlite` is still tried first. MongoDB remains unavailable under Bun — its `bson` dependency calls a `node:v8` API Bun does not implement, an upstream limitation with no framework-side fix.
81
- - **Fixed — Bun: a bundle declaring any connector boots again.** Two Bun-only crashes stopped model loading outright. `new require(mod)(args)` parses as `(new require(mod))(args)`, and Bun's `require` has no constructor slot, so loading aborted with `function is not a constructor`; and the entity loader reassigned `arguments`, which Bun's parser rejects with `Invalid assignment target`. Both repairs are no-ops on Node by construction — the plain call is exactly what Node was already doing — so only Bun behaviour changes. The release smoke now boots a SQLite-backed bundle and round-trips a real query on every Node leg and on the Bun CI leg, so connector support is gated rather than assumed.
82
- - **Fixed — reserved-name query files now warn instead of vanishing silently.** A query file whose name collides with an inherited prototype member — most commonly `count.sql`, shadowed by the framework's global `count()` helper — was silently skipped by the MySQL, PostgreSQL, SQLite, DuckDB, ScyllaDB and MongoDB connectors, and calls fell through to the inherited member, returning a plausible but unrelated value. The skip is now reported at startup with the file path and a rename hint (for example `countRows.sql`). Behaviour is unchanged — the file is still skipped — and a file matching a method your entity class itself defines still skips silently, by design: your code wins. A warning appearing on upgrade points at a query file that has never worked. Server-side — restart your bundles. (#B173)
83
- - **Fixed — Couchbase warns when a query file overwrites or shadows an entity member.** The Couchbase connector attaches every N1QL query file unconditionally, so a file named after an existing member — a stamped entity property like `getCluster`, a previously attached query method, or an inherited member such as EventEmitter's `on` — silently overwrote or shadowed it. The clobber is now reported at startup with the file path and a rename hint (for example `onRows.sql`); shadowing the framework's global `count()`/`functionCount()` helpers stays silent, by design, since there the query file winning is the point. Attachment behaviour is unchanged — the warning never skips the file. Server-side — restart your bundles. (#B174)
84
- - **Fixed — `renderJSON()`'s `status` key reaches the wire over HTTP/2.** The body path built its header frame with a hardcoded `:status: 200`, so every JSON error rendered on a genuine HTTP/2 stream was served as HTTP 200 with the error payload in the body; HTTP/1.1 was unaffected, and the HEAD branch and the HTML delegates already honoured the resolved code. The `errno` half of the status branch is also guarded like its swig and v1 siblings: an `errno`-only payload with no usable `status` used to poison the status code — the response was silently never sent on HTTP/1.1 and turned into a 500 on HTTP/2 — and is now served as a normal 200 with the payload in the body. **Review any HTTP/2 client that keyed off the old 200.** Server-side — restart your bundles. (#B172)
85
- - **Fixed — a form submit no longer strands a sibling form's submit button.** FormValidator reused one shared `XMLHttpRequest` for every submit, and re-opening it replayed the previous submit's completion handler — visibly, submitting form B after form A had completed re-disabled A's submit button and re-stamped its `data-gina-form-loading`, with nothing ever releasing them (the lock was armed in four places and released in one). Every send now builds its own XHR, and a `loadend` listener releases the submit trigger and the loading flag on success, error, timeout and abort alike. Along the way `$form.isSending` now genuinely spans the request, where it used to be cleared almost immediately at the first readyState transition, and a timed-out form has its `data-gina-form-loading` removed instead of being left holding the truthy string `"false"`. Browser-bundled — re-bake your bundles. (#B175)
86
- - **Fixed — the live-check opt-out is honored consistently.** A form declaring `data-gina-form-live-check-enabled="false"` with resolvable rules was only partly opted out: two validation gates evaluated the rules-count boolean inside the regex test, so the truthy string `"false"` short-circuited to that boolean and matched — leaving bind-time silent validation and select-change validation running. Text as-you-type was never affected, since the listener-registration gates already tested the attribute alone, so the pre-fix behaviour was an inconsistent middle rather than the attribute being ignored outright. The two gates now test the attribute alone and check the rules count separately, so an explicit `"false"` is honored everywhere — which is what the framework's own warnings have been advising all along. **An opted-out form genuinely loses those two checks now**; drop the attribute if you were relying on them. Browser-bundled — re-bake your bundles. (#B176)
87
- - **Fixed — validator error labels: translating the key an app can observe now works.** Four rule families consult a different label key internally than the one an app sees in a field's `errors` object, so translating the observable key had no effect: the float coercion's NaN branch (`toFloat` fills `toFloatNAN`) and the number, integer and string length families (the generic `is<X>Length` fills the `Min`/`Max` variants). An app-supplied specific key still wins. Numbered `is` aliases (`is1`, `is2`, …) with no rule-supplied text now fall back to the shared `is` label instead of rendering an empty message, and catalog or `setErrorLabels()` translations for user-defined validator keys are no longer clobbered by the English default at setup. **An app that translated only observable keys will see those messages switch from English to its own language at pickup.** Browser-bundled — re-bake your bundles. (#B178)
88
- - **Fixed — duplicate error messages and run-on screen-reader announcements.** Screen-reader announcements now join multiple rule messages with a sentence separator instead of running them together as one string — the visible stacked layout is unchanged — and two rules carrying byte-identical resolved message text render once instead of twice, so a coercion paired with its validator no longer shows the same sentence duplicated. The dev inspector still records every error key. Browser-bundled — re-bake your bundles. (#B178)
71
+ > **No settings reset.** `0.6.2` is a patch the `shortVersion` stays `0.6`, so
72
+ > your `~/.gina/0.6/settings.json` is untouched. (`0.6.0` was the reset.)
89
73
 
74
+ - **Changed — render and request-path CPU overhead is sharply reduced: 4.4× render throughput.** Every render was deep-copying the request options twice — once for the template-filter configuration and once for the render envelope — and re-resolving the request locale from scratch. The copies are now passed by reference, after each one's write surface was measured empty; the locale lookups are memoized per culture with the request-local copy materialized lazily on first read; and the id generator sizes its entropy batch to the length actually requested, so a 16-character id costs one webcrypto call instead of three. Measured on the profiling harness introduced in this release: **10.7 ms → 2.4 ms per render** on the baseline workload, deep-clone CPU share **50.31% → 1.81%**, and GC time down roughly **18×** — the stated ~2× ceiling was beaten because the GC and locality knock-on fell along with the allocations. No API change. Server-side gains land on restart; the id-generator half is browser-bundled, so **re-bake your bundles** for the rest. (#P39)
75
+ - **Added — opt-in 503 + `Retry-After` for transient datastore failures.** Set `server.transientErrors.enabled: true` in a bundle's `settings.json` and a connector error stamped `isTransient` that would have rendered as HTTP 500 through `throwError` renders as **503** with a `Retry-After` header instead — so a caller or proxy can back off and retry rather than treating a momentary datastore blip as a permanent server fault. `retryAfter` sets the header's value (integer seconds, 1–86400, default 30) and `message` replaces the user-facing `error` field (default: the standard 503 status text). Applies on both engines, across JSON and HTML error surfaces, over HTTP/1.1 and HTTP/2 alike. Explicit non-500 statuses and permanent errors are never upgraded. **Nothing to do** — the feature is off by default and the default behaviour is byte-identical to 0.6.1. A malformed `server.transientErrors` block warns at boot and leaves the feature off; it never refuses a boot. Server-side — restart your bundles. (#CE1)
76
+ - **Fixed — an `env.json` block that omits `host` no longer breaks HTTPS and HTTP/2 bundles.** `host` was the only value the per-bundle configuration reads that had no framework-side default — it was written solely by the CLI into the project `env.json`, so a hand-written or partial block never received one. The `${host}` token was then left unsubstituted inside the TLS credentials paths, and the bundle refused to start with an ENOENT naming a literal `${host}` path segment, under an error message pointing at the server settings rather than at the missing key. The framework env template now carries the same `localhost` default the CLI already writes, so a block setting only a subset of keys resolves correctly, and a bundle whose `env.json` omits `host` logs a warning naming the bundle and env instead of defaulting silently. Projects that declare `host` are unaffected. Server-side — restart your bundles. (#B181)
77
+ - **Fixed — a bundle whose `env.json` has no block for the environment it starts in now says so.** It previously died with an opaque `Cannot read properties of undefined` crash that named neither the bundle, the environment, nor the file. The boot now refuses with all of them, plus the resolved `env.json` path and whether the file was found at all. All three shapes that produced the same failure are covered: an `env.json` that is absent entirely, one that is empty, and one that declares only bundles the project manifest does not list. The refusal exits **1** through the same path as the missing `routing.json` refusal, so an external supervisor can retry while a release tree settles. A configuration that boots today is unaffected — the check can only fire where the boot already crashed. Server-side — restart your bundles. (#B181)
78
+ - **Fixed — starting a bundle in an environment its `env.json` block does not cover refuses cleanly.** This previously surfaced as `TypeError: Cannot set properties of undefined (setting 'bundlesPath')` at **exit 143**, naming neither the file nor the bundle; it now exits **1** naming the bundle, the environment and the resolved `env.json` path. Separately, a bundle that *is* declared for other environments but not the one being started is now reported as skipped and the project boots on — where previously it took every sibling bundle down with it. If a supervisor or orchestrator keys off the old 143, note the code change. Server-side — restart your bundles. (#B183)
79
+ - **Fixed — dead process records are removed from the `~/.gina/procs.json` registry under the right key.** `removeRunningProc()` located the entry to drop by pid but deleted under the constructing bundle's key: self-removal worked by accident, while a non-coinciding dismissal rewrote the dead `gina-*` record straight back to disk — accumulating stale entries, a documented cause of daemon and boot confusion — and could destroy a live record instead, degrading `gina stop`, whose graceful-kill path locates the daemon through this registry. Pre-existing stale entries are not cleaned retroactively; with the daemon stopped, clearing the file once is safe. Server-side — restart your bundles. (#B180)
90
80
  See the full [Changelog](./CHANGELOG.md) and [Roadmap](./ROADMAP.md).
91
81
 
92
82
  ## Documentation
package/ROADMAP.md CHANGED
@@ -53,8 +53,9 @@ This roadmap covers planned features, architectural improvements, new connectors
53
53
  | **Q3 2026** | `0.5.26` ✅ | **Security**: a route pairing an authorization key (`param.requireAuth` / `param.roles` / `param.policy`) with `cache` now refuses to boot — both render-cache serve points run BEFORE the authorization gate and the cache key carries no user identity, so the first authenticated response was replayed verbatim to every later anonymous caller; as a second layer the render delegates never store a body for a gated route even if the configuration bypassed the lint (#B158) · a `method: "ws"` route declaring an authorization key now refuses to boot — a WebSocket handshake is answered by the engine's extended-CONNECT handler and never reaches the gate, so those keys could never be enforced while the boot line still counted the route as protected; authenticate inside the `wsHandler`, which receives the full request (#B159) · the framework control-plane listeners now bind an explicit host defaulting to loopback — a new `bind_host` setting (env `GINA_BIND_HOST`, `gina framework:set --bind-host=`), separate from `host_v4`, so exposing the command socket and MQ listener beyond the local host is a deliberate opt-in · a command name arriving over the framework socket is constrained to the shipped `lib/cmd/` namespace before it resolves, and an unresolvable name is answered on the connection instead of ending the daemon for every other client · the MCP Streamable HTTP transport refuses to start without a bearer token once an ambient protection is removed (a non-loopback bind, or `allowedOrigins: ["*"]`), with a new `allowInsecure` waiver for deployments that restrict access upstream · **Added**: deny-by-default authorization — `settings.json > auth.requireAuthByDefault: true` requires an authenticated session on every route unless its `param` block carries `"public": true`; opt-in, strictly boolean, keyed per bundle so one bundle never changes a sibling's posture in merged mode, with the framework-injected routes shipping exempt and boot refusals for the login-route lockout, the `public`-plus-explicit-key contradiction, and a mode-gated route that also declares `cache`; `bundle:openapi` follows the mode (#COMPLY10) · a boot-time production transport posture guard — a cleartext scheme outside the `local` scope warns once at boot, `server.requireHttps` refuses to start instead (pre-listen, so the port is never reachable), and `server.allowInsecure` acknowledges that TLS terminates upstream (#COMPLY9) · **Fixed**: Couchbase client-side query timeouts classify as transient and keep their message — the connector rebuilt the error from the query `cause` envelope the SDK attaches to every query error, so a client-side timeout became an empty-message `Error` that had lost the typed class name the classifier matches on (#B153) · `gina bundle:mcp-start --transport=http` now actually applies `GINA_MCP_AUTH_TOKEN` — the resolver read `process.env` directly while the CLI had already moved every `GINA_*` variable into the framework environment, so a deployment supplying the token only that way ran with no authentication · a `.sql` `@options` annotation that silently did nothing now warns, naming the ignored keys and showing the working form (#B155) · the `settings.json` and `routing.json` schemas now describe the route-authorization vocabulary, so an editor no longer flags a valid deny-by-default configuration as invalid · `lib/merge`'s JSDoc no longer documents an inverted `override` default |
54
54
  | **Q4 2026** | `0.6.0` ✅ | **Security**: `req.logout()` now destroys the persisted session record instead of only clearing `req.session.user` — the store record, the session id and every other session key previously survived to TTL, so a leaked or intercepted session id stayed valid server-side long after the user logged out; it now accepts an optional callback, and Passport bundles are unaffected · **Added**: an opt-in tamper-evidence hash chain for the audit trail — `audit.chain` plus a signing key gives every record an HMAC that chains from its predecessor, and the new offline `gina audit:verify <bundle> @<project>` walks the trail and reports either the intact totals or the first break, so any post-hoc edit, deletion, insertion or reordering by someone who does not hold the key is detectable; the boot refuses the deployment shapes a single linear chain cannot hold rather than starting a chain that cannot be trusted (#COMPLY2) · `lib.authn` — the authentication primitives that are dangerous to hand-roll: scrypt password hashing encoded as self-describing PHC strings so the cost can be raised without a flag day, with argon2 and bcrypt verify-only routing through the project's own package so a store arriving with existing credentials keeps working and migrates itself on the next successful login, a `dummyVerify` that closes the user-enumeration oracle, NIST SP 800-63B password policy, a PCI-DSS v4.0.1 §8.3.4 account-lockout engine, and RFC 6238 TOTP; gina still owns no user record, credential store or login route (#COMPLY3) · `req.login(user, done)` now works for gina-native bundles and rotates the session id before binding the user — the session-fixation defence; it previously threw without Passport, so native bundles bound the user by hand with no rotation at all (#COMPLY4) · an opt-in absolute session timeout — `session({ absoluteTimeout })` or `settings.json > session.absoluteTimeout` — caps an authenticated session's total lifetime measured from login regardless of activity, composing with the idle expiry that already existed (#COMPLY4) · **Fixed**: co-located CLIs reach the control plane again — 0.5.26's loopback bind default left CLI-side clients dialling `host_v4` while the daemon binds `bind_host`, so any deployment whose `host_v4` is a non-loopback address of the same machine could not reach its own daemon and `bundle:start` aborted before the HTTP server ever bound (#B160) · `gina framework:set --bind-host=` now persists across the settings regeneration that runs on every command and across container bootstraps (#B161) · session records in the redis, sqlite, mongodb and scylladb stores now honour the cookie `maxAge` when no `ttl` is configured, instead of an implicit one-day default that made the fallback unreachable — record lifetimes move in both directions relative to the old 24-hour cap (#B163) · the SQLite store no longer expires the very session it was asked to refresh, guarding a non-positive resolved ttl as its siblings already did (#B166) · the Couchbase store's `touch()` re-stamps `lastModified` on every extension — an internal idle check compared milliseconds against seconds — and the SDK 4 store writes it as an ISO 8601 UTC string, matching the other stores (#B165) · the Couchbase session store now requires the already-open bucket as `options.db` and fails fast with an actionable error instead of crashing at bundle init inside a dead SDK v2 self-connect path (#B167) · server-side `getRoute()` no longer crashes when a proxied context is active while no proxy hostname is resolvable — the route degrades to its direct hostname instead of throwing, so a render or readiness probe that resolves a route survives the state (#B168) · the `settings.json` schema now describes the `audit` and `session` blocks, and the `connectors.json` schema no longer labels the session-store `ttl` and `prefix` keys "Redis only" nor advertises a stale 86400 default — editor tooling only, runtime behaviour unchanged |
55
55
  | **Q4 2026** | `0.6.1` ✅ | **Security**: the dev-mode Inspector no longer serves files outside its asset root — a request to `/_gina/inspector/*` carrying a literal `../` escaped the asset directory and read any file the bundle process could reach, application config and credentials included, on both engines; only dev-mode bundles ever served the handler, and the URL-encoded `%2e%2e` form was never affected (#B179) · **Added**: DuckDB connector — embedded analytical (columnar / OLAP) SQL over the standard entity wiring, with analytical-dialect row detection (`WITH` CTEs, `SUMMARIZE`, `PIVOT`), direct Parquet / CSV / JSON querying with no ETL hop, and a `readOnly` mode so any number of processes can share one database file (#CN11) · **Added**: SQLite under the Bun runtime — the ORM connector, session store, async-job store and framework state store resolve Bun's built-in `bun:sqlite` behind a `node:sqlite`-shaped adapter whenever `node:sqlite` is absent; Node resolution is unchanged · **Fixed**: two Bun-only crashes that stopped any connector-declaring bundle from booting, both no-ops on Node by construction, with the release smoke now booting a SQLite-backed bundle on every Node leg and on Bun · **Fixed**: query files whose names collide with an inherited prototype member were silently skipped by six ORM connectors and now warn at startup with a rename hint, while Couchbase — which attaches unconditionally — warns on the overwrite or shadow instead (#B173/#B174) · **Fixed**: `renderJSON()`'s `status` key now reaches the wire over HTTP/2, where the body path hardcoded a 200 status frame and served every JSON error as HTTP 200 with the error payload in the body (#B172) · **Fixed**: FormValidator — each submit builds its own XHR with a fail-safe release, so a completed form no longer re-disables a sibling form's submit button; the live-check opt-out attribute is honored consistently; error labels for the keys an app can observe are translatable; and byte-identical messages render once, with sentence-separated screen-reader announcements (#B175/#B176/#B178) |
56
+ | **Q4 2026** | `0.6.2` ✅ | **Changed**: render and request-path CPU overhead sharply reduced — the per-render deep copies of the request options (template-filter configuration and render envelope) are passed by reference after each one's write surface was measured empty, per-request locale lookups are memoized with the request-local copy materialized lazily on first read, and the id generator right-sizes its entropy batch to the requested length; measured on the profiling harness at **4.4× render throughput** (10.7 → 2.4 ms per render), deep-clone CPU share 50.31% → 1.81%, GC time down ~18× — no API change, but the browser bundle changed so bundles pick the id-generator half up on rebuild (#P39) · **Added**: opt-in 503 + `Retry-After` rendering for transient datastore failures — with `server.transientErrors.enabled`, a connector error stamped `isTransient` that would render as HTTP 500 through `throwError` renders as 503 carrying `Retry-After`, with a configurable retry delay and user-facing message, on both engines across JSON and HTML error surfaces; off by default and byte-identical when off, and a malformed block warns at boot rather than refusing it (#CE1) · **Fixed**: an `env.json` block that omits `host` no longer leaves the `${host}` token unsubstituted inside the TLS credentials paths, which refused https and HTTP/2 boots with an ENOENT naming a literal `${host}` segment under an error pointing at the server settings — `host` was the only per-bundle value with no framework-side default, so a hand-written or partial block never received one (#B181) · **Fixed**: a bundle whose project `env.json` carries no block for the environment it starts in now refuses with the bundle, the environment, the resolved path and whether the file was found all named — covering the absent, empty and unlisted-bundles shapes — instead of an opaque `Cannot read properties of undefined` crash, exiting 1 so an external supervisor can retry (#B181) · **Fixed**: starting a bundle in an environment its `env.json` block does not cover refuses cleanly at exit 1 rather than dying at exit 143 on `Cannot set properties of undefined (setting 'bundlesPath')`, and a bundle declared only for other environments is now reported as skipped instead of taking every sibling bundle down with it (#B183) · **Fixed**: dead process records are removed from the `~/.gina/procs.json` registry under the right key — `removeRunningProc()` matched the entry by pid but deleted under the constructing bundle key, rewriting dead records back to disk and able to destroy a live one, degrading `gina stop`'s graceful-kill path (#B180) |
56
57
  | **Q1 2027** | `0.6.x` | HTTP/2 priorities (blocked on Node scheduler hooks) · Beemaster admin + visual translation editor |
57
- | **2027** | `0.7.0` | Performance — runtime CPU profiling baseline · multipart & WebSocket hot-path acceleration · render/log hot-path cleanups (SIMD scanner deferred, measure-gated) |
58
+ | **2027** | `0.7.0` | Performance — remaining measure-gated candidates: multipart & WebSocket fast paths, render/log cleanups, SIMD scanner (the render-path deep-clone & id-mint reduction shipped early in `0.6.2` with a measured 4.4× render-throughput gain; the profiling baseline itself also shipped in `0.6.2`) |
58
59
  | **2027** | `0.8.0` | Financial-messaging foundations — XML request/response handling · pluggable message-schema validation · IBAN/BIC validation rules · money & ISO 4217 minor-unit utilities · idempotency keys · sequence primitive · OAuth2 client-credentials egress |
59
60
  | **2027** | `0.9.0` | Financial-integration heavyweights — entity-layer datastore transaction seam · message-queue connector family (AMQP / Kafka / IBM MQ) |
60
61
  | **Q3 2027** | `1.0.0` | First stable release — Windows alpha compatibility is a hard gate |
@@ -429,11 +430,12 @@ A cold audit of the Couchbase connector identified two critical security vulnera
429
430
  | ✅ | **Route radix trie — compile `routing.json` at startup** | `0.3.0-alpha.1` | 2026-04-01 | `lib/routing/src/radix.js` builds a segment-level trie once at startup. O(m) candidate lookup per request (m = segment count). `Set.has()` check skips non-candidates in the `for…in` loop. Internal change — no user-facing API change. |
430
431
  | ✅ | **Bun runtime support** | `0.5.5` | 2026-06-21 | Gina runs on the [Bun](https://bun.sh) runtime (Bun `>= 1.2`) as a supported, CI-gated target — `bun add -g gina` installs and boots end-to-end, validated by a blocking CI Bun smoke. Both investigated blockers cleared: dev-mode `require.cache` hot-reload and `node:http2` work under Bun (one upstream gap remains: RFC 8441 extended-CONNECT advertisement, affecting only opt-in WebSocket-over-HTTP/2). Gina self-bootstraps on first run; Node `>= 22 < 27` remains fully supported. |
431
432
  | ✅ | **V8 pointer compression support** | `0.2.0` | Q2 2026 | Node.js built with `--experimental-enable-pointer-compression` (e.g. [node-caged](https://github.com/platformatic/node-caged) or a custom build) delivers ~50% heap memory reduction across all pointer-heavy structures. Gina is pure JS — compatible out of the box. Adds: startup detection + `GINA_V8_POINTER_COMPRESSED` env var, Dockerfile guide with custom build recipe (full-icu + pointer compression), 4 GB ceiling documentation, N-API-only connector policy. |
432
- | 📋 | **Runtime CPU profiling baseline** | `0.7.x` | 2027 | Flame-graph profiles of representative bundles under load render, concurrent-upload, and WebSocket arms so every hot-path candidate below is convicted or acquitted by measurement before it is optimised. "No further acceleration needed" is a valid verdict. |
433
- | 📋 | **Multipart boundary-scan fast path** | `0.7.x` | 2027 | The multipart parser's boundary search is the one unbounded byte-by-byte JS loop on a request path. Delegating the in-chunk needle search to the runtime's native `Buffer.indexOf` (JS keeps only the chunk-boundary carry) relieves the event loop under large concurrent uploads. Wire and event contract unchanged; validated by differential tests against the current matcher. |
434
- | 📋 | **WebSocket unmask fast path** | `0.7.x` | 2027 | Every inbound client frame must be unmasked, and that XOR currently runs byte-by-byte in JS. Word-at-a-time unmasking in the built-in RFC 6455 codec, with the `ws` engine path picking up `bufferutil` acceleration where it is installed — optional only; the pure-JS behaviour remains the permanent fallback. |
435
- | 📋 | **Render & logging hot-path cleanups** | `0.7.x` | 2027 | Repair the per-render asset-scan memoization (the cache guard can never hit as written, so the full document is re-scanned every HTTP/2 render), precompile the logger's per-line token regexes, and consolidate whole-document render passes where the profiling baseline convicts them. |
436
- | ⏸ | **SIMD boundary scanner (Rust → WebAssembly)** | — | on demand | **Deferred — measure-gated.** Built only if the profiling baseline still convicts the multipart scan after the JS fast path lands. WebAssembly first: sandboxed, a single artifact for every platform including Bun, no process crash surface. Native N-API prebuilds — published as separate per-platform packages so the framework tarball never carries a compiled binary — only if WASM leaves measured headroom. No install scripts ever; the JS implementation remains the permanent fallback. *Interim:* the JS fast path above. |
433
+ | | **Runtime CPU profiling baseline** | `0.6.2` | 2026-07-31 | Shipped — a three-arm baseline (HTTP/2 render, concurrent multipart upload, WebSocket echo) profiled a production-built bundle under load. Outcome: the multipart-scan, WebSocket-unmask, and render/log-cleanup candidates below all measured small under their own arms and moved to measure-gated deferral, while the dominant cost found is per-request deep-clone traffic half of render-arm CPU — plus per-item random-id minting (~1 ms per render), now planned as its own row below. "No further acceleration needed" was an accepted verdict shape, and for the byte-loop candidates it is the verdict. |
434
+ | | **Multipart boundary-scan fast path** | — | on demand | **Deferred — acquitted by the profiling baseline (2026-07):** the boundary scan measured 7.2% of upload-arm CPU (0.73 ms per MB, ~47 µs per 64 KB chunk) with the event loop far from saturated — the loop-relief win does not materialize at these magnitudes. Re-armed by a profiled workload where the scan is a leading loop consumer. Original scope, unchanged when re-armed: the multipart parser's boundary search is the one unbounded byte-by-byte JS loop on a request path; delegating the in-chunk needle search to the runtime's native `Buffer.indexOf` (JS keeps only the chunk-boundary carry) relieves the event loop under large concurrent uploads; wire and event contract unchanged; validated by differential tests against the current matcher. |
435
+ | | **WebSocket unmask fast path** | | on demand | **Deferred — acquitted by the profiling baseline (2026-07):** the built-in codec measured 8% of an echo arm deliberately isolated to maximize its visibility (~3.4 µs per 4 KB frame); real in-bundle traffic would only shrink that share. Re-armed by a WebSocket-heavy profile showing the codec as a leading consumer. Original scope, unchanged when re-armed: every inbound client frame must be unmasked, and that XOR currently runs byte-by-byte in JS; word-at-a-time unmasking in the built-in RFC 6455 codec, with the `ws` engine path picking up `bufferutil` acceleration where it is installed — optional only; the pure-JS behaviour remains the permanent fallback. |
436
+ | | **Render & logging hot-path cleanups** | | on demand | **Deferred — acquitted by the profiling baseline (2026-07):** the asset-scan, logger-regex, and render-splice candidates each measured at or under about 1% of render CPU under the arm built for them (the broken asset-scan memo guard remains real, but as a correctness fix that can ride any future work on that surface). Re-armed if any of them turns leading in a future profile. Original scope, unchanged when re-armed: repair the per-render asset-scan memoization (the cache guard can never hit as written, so the full document is re-scanned every HTTP/2 render), precompile the logger's per-line token regexes, and consolidate whole-document render passes where a profile convicts them. |
437
+ | ⏸ | **SIMD boundary scanner (Rust → WebAssembly)** | — | on demand | **Deferred — measure-gated, doubly dormant since the 2026-07 baseline.** Built only if a profile still convicts the multipart scan after the JS fast path lands — and the JS fast path is itself deferred-acquitted, so this trigger cannot fire today. WebAssembly first: sandboxed, a single artifact for every platform including Bun, no process crash surface. Native N-API prebuilds — published as separate per-platform packages so the framework tarball never carries a compiled binary — only if WASM leaves measured headroom. No install scripts ever; the JS implementation remains the permanent fallback. *Interim:* the JS fast path above. |
438
+ | ✅ | **Render-path deep-clone & id-mint reduction** | `0.6.2` | 2026-08-01 | **Convicted by the profiling baseline, shipped ahead of schedule:** half of render-arm CPU was per-request deep-clone traffic, concentrated in three framework call sites (the template-filter configuration was re-cloned on every render; the render delegate cloned its envelope; the options collection deep-cloned its content and minted a random id per collected item — about 1 ms per render of entropy alone), with GC time consistent with the clone garbage. Shipped JS-side only: the filter configuration is now passed and stashed by reference (its write surface was measured empty before the change), the per-request locale lookups are memoized with the per-request copy materialized lazily on first read, and the id generator right-sizes its entropy batch to the requested length. Measured on the profiling harness with fresh runs on both sides: **4.4× render throughput** on the baseline workload (10.7 → 2.4 ms per render), deep-clone share 50.31% → 1.81%, GC down ~18×, and entropy out of the top profile frames on both arms. The remaining clone sites on this surface stay measure-gated for a future profile. Porting the object-graph work to native code remains an anti-candidate. |
437
439
 
438
440
  ---
439
441
 
@@ -0,0 +1 @@
1
+ 0.6.2
@@ -2772,7 +2772,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
2772
2772
 
2773
2773
  var _alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
2774
2774
  var _mask = 63; // smallest (2^n - 1) >= 62 — rejects 62,63 (~3% waste, no bias)
2775
- var _step = 7; // ceil(1.6 * 63 * 4 / 62) — enough random bytes per iteration
2775
+ var _step = 7; // ceil(1.6 * 63 * 4 / 62) — random bytes per iteration for the DEFAULT size 4 (#P39: larger sizes compute their own)
2776
2776
 
2777
2777
  /**
2778
2778
  * Generate a cryptographically secure random ID.
@@ -2782,10 +2782,19 @@ var _step = 7; // ceil(1.6 * 63 * 4 / 62) — enough random bytes per iteratio
2782
2782
  */
2783
2783
  function uuid(size) {
2784
2784
  size = size || 4;
2785
+ // #P39 — size the random-byte batch to the REQUESTED length, the same
2786
+ // formula customAlphabet() below already uses for its default size. The
2787
+ // fixed 7-byte batch was sized for the 4-char default, so uuid(16) — the
2788
+ // form lib/collection mints per item — needed ~3 webcrypto calls per id;
2789
+ // one right-sized call replaces them. Each getRandomValues call pays a
2790
+ // full randomFillSync regardless of byte count, so the cost is the call
2791
+ // count, not the bytes. Output distribution is untouched: the bitmask
2792
+ // rejection below is applied per byte exactly as before.
2793
+ var step = (size <= 4) ? _step : Math.ceil(1.6 * (_mask + 1) * size / _alphabet.length);
2785
2794
  var id = '';
2786
2795
  while (true) {
2787
- var bytes = crypto.getRandomValues(new Uint8Array(_step));
2788
- for (var j = 0; j < _step; j++) {
2796
+ var bytes = crypto.getRandomValues(new Uint8Array(step));
2797
+ for (var j = 0; j < step; j++) {
2789
2798
  var idx = bytes[j] & _mask;
2790
2799
  if (idx < 62) {
2791
2800
  id += _alphabet[idx];