brut 0.16.0.pre → 0.16.0

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 (369) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -3
  3. data/Gemfile.lock +41 -34
  4. data/brut-css/package-lock.json +2 -2
  5. data/brut-css/package.json +1 -1
  6. data/brut-js/package-lock.json +311 -2
  7. data/brut-js/package.json +2 -1
  8. data/brutrb.com/jobs.md +1 -1
  9. data/docs/404.html +2 -2
  10. data/docs/adrs.html +4 -4
  11. data/docs/ai.html +4 -4
  12. data/docs/api/Brut/BackEnd/SeedData.html +2 -2
  13. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server/FlushSpans.html +2 -2
  14. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server.html +2 -2
  15. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares.html +2 -2
  16. data/docs/api/Brut/BackEnd/Sidekiq.html +2 -2
  17. data/docs/api/Brut/BackEnd/Validators/FormValidator.html +2 -2
  18. data/docs/api/Brut/BackEnd/Validators.html +2 -2
  19. data/docs/api/Brut/BackEnd.html +2 -2
  20. data/docs/api/Brut/CLI/App.html +2 -2
  21. data/docs/api/Brut/CLI/AppRunner.html +2 -2
  22. data/docs/api/Brut/CLI/Apps/BuildAssets/All.html +2 -2
  23. data/docs/api/Brut/CLI/Apps/BuildAssets/CSS.html +2 -2
  24. data/docs/api/Brut/CLI/Apps/BuildAssets/Images.html +2 -2
  25. data/docs/api/Brut/CLI/Apps/BuildAssets/JS.html +2 -2
  26. data/docs/api/Brut/CLI/Apps/BuildAssets.html +2 -2
  27. data/docs/api/Brut/CLI/Apps/DB/Create.html +2 -2
  28. data/docs/api/Brut/CLI/Apps/DB/Drop.html +2 -2
  29. data/docs/api/Brut/CLI/Apps/DB/Migrate.html +2 -2
  30. data/docs/api/Brut/CLI/Apps/DB/NewMigration.html +2 -2
  31. data/docs/api/Brut/CLI/Apps/DB/Rebuild.html +2 -2
  32. data/docs/api/Brut/CLI/Apps/DB/Seed.html +2 -2
  33. data/docs/api/Brut/CLI/Apps/DB/Status.html +2 -2
  34. data/docs/api/Brut/CLI/Apps/DB.html +2 -2
  35. data/docs/api/Brut/CLI/Apps/DeployBase/GitChecks.html +2 -2
  36. data/docs/api/Brut/CLI/Apps/DeployBase.html +2 -2
  37. data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy/Deploy.html +7 -5
  38. data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy.html +2 -2
  39. data/docs/api/Brut/CLI/Apps/Scaffold/Action/Route.html +2 -2
  40. data/docs/api/Brut/CLI/Apps/Scaffold/Action.html +2 -2
  41. data/docs/api/Brut/CLI/Apps/Scaffold/Component.html +2 -2
  42. data/docs/api/Brut/CLI/Apps/Scaffold/CustomElementTest.html +2 -2
  43. data/docs/api/Brut/CLI/Apps/Scaffold/DbModel.html +2 -2
  44. data/docs/api/Brut/CLI/Apps/Scaffold/E2ETest.html +2 -2
  45. data/docs/api/Brut/CLI/Apps/Scaffold/Form.html +2 -2
  46. data/docs/api/Brut/CLI/Apps/Scaffold/Page/Route.html +2 -2
  47. data/docs/api/Brut/CLI/Apps/Scaffold/Page.html +2 -2
  48. data/docs/api/Brut/CLI/Apps/Scaffold/RoutesEditor.html +2 -2
  49. data/docs/api/Brut/CLI/Apps/Scaffold/Test.html +2 -2
  50. data/docs/api/Brut/CLI/Apps/Scaffold.html +2 -2
  51. data/docs/api/Brut/CLI/Apps/Test/Audit.html +7 -3
  52. data/docs/api/Brut/CLI/Apps/Test/E2e.html +2 -2
  53. data/docs/api/Brut/CLI/Apps/Test/JS.html +2 -2
  54. data/docs/api/Brut/CLI/Apps/Test/Run.html +2 -2
  55. data/docs/api/Brut/CLI/Apps/Test.html +2 -2
  56. data/docs/api/Brut/CLI/Apps.html +2 -2
  57. data/docs/api/Brut/CLI/Command.html +2 -2
  58. data/docs/api/Brut/CLI/Error.html +2 -2
  59. data/docs/api/Brut/CLI/ExecutionResults/Result.html +2 -2
  60. data/docs/api/Brut/CLI/ExecutionResults.html +2 -2
  61. data/docs/api/Brut/CLI/Executor.html +2 -2
  62. data/docs/api/Brut/CLI/InvalidOption.html +2 -2
  63. data/docs/api/Brut/CLI/Options.html +2 -2
  64. data/docs/api/Brut/CLI/Output.html +2 -2
  65. data/docs/api/Brut/CLI/SystemExecError.html +2 -2
  66. data/docs/api/Brut/CLI.html +2 -2
  67. data/docs/api/Brut/FactoryBot.html +2 -2
  68. data/docs/api/Brut/Framework/App.html +2 -2
  69. data/docs/api/Brut/Framework/Config.html +2 -2
  70. data/docs/api/Brut/Framework/Container.html +11 -7
  71. data/docs/api/Brut/Framework/Error.html +2 -2
  72. data/docs/api/Brut/Framework/Errors/AbstractMethod.html +2 -2
  73. data/docs/api/Brut/Framework/Errors/Bug.html +2 -2
  74. data/docs/api/Brut/Framework/Errors/MissingConfiguration.html +2 -2
  75. data/docs/api/Brut/Framework/Errors/MissingParameter.html +2 -2
  76. data/docs/api/Brut/Framework/Errors/NoClassForPath.html +2 -2
  77. data/docs/api/Brut/Framework/Errors/NotFound.html +2 -2
  78. data/docs/api/Brut/Framework/Errors/NotImplemented.html +2 -2
  79. data/docs/api/Brut/Framework/Errors.html +2 -2
  80. data/docs/api/Brut/Framework/FussyTypeEnforcement.html +2 -2
  81. data/docs/api/Brut/Framework/MCP.html +3 -3
  82. data/docs/api/Brut/Framework/ProjectEnvironment.html +2 -2
  83. data/docs/api/Brut/Framework.html +2 -2
  84. data/docs/api/Brut/FrontEnd/AssetPathResolver.html +2 -2
  85. data/docs/api/Brut/FrontEnd/Component/Helpers.html +2 -2
  86. data/docs/api/Brut/FrontEnd/Component.html +2 -2
  87. data/docs/api/Brut/FrontEnd/Components/ConstraintViolations.html +2 -2
  88. data/docs/api/Brut/FrontEnd/Components/FormTag.html +2 -2
  89. data/docs/api/Brut/FrontEnd/Components/I18nTranslations.html +2 -2
  90. data/docs/api/Brut/FrontEnd/Components/Input.html +2 -2
  91. data/docs/api/Brut/FrontEnd/Components/Inputs/ButtonTag.html +2 -2
  92. data/docs/api/Brut/FrontEnd/Components/Inputs/CsrfToken.html +2 -2
  93. data/docs/api/Brut/FrontEnd/Components/Inputs/InputTag.html +2 -2
  94. data/docs/api/Brut/FrontEnd/Components/Inputs/RadioButton.html +2 -2
  95. data/docs/api/Brut/FrontEnd/Components/Inputs/SelectTagWithOptions.html +2 -2
  96. data/docs/api/Brut/FrontEnd/Components/Inputs/TextareaTag.html +2 -2
  97. data/docs/api/Brut/FrontEnd/Components/Inputs.html +2 -2
  98. data/docs/api/Brut/FrontEnd/Components/LocaleDetection.html +2 -2
  99. data/docs/api/Brut/FrontEnd/Components/PageIdentifier.html +2 -2
  100. data/docs/api/Brut/FrontEnd/Components/TimeTag.html +2 -2
  101. data/docs/api/Brut/FrontEnd/Components/Traceparent.html +2 -2
  102. data/docs/api/Brut/FrontEnd/Components.html +2 -2
  103. data/docs/api/Brut/FrontEnd/CsrfProtector.html +2 -2
  104. data/docs/api/Brut/FrontEnd/Download.html +2 -2
  105. data/docs/api/Brut/FrontEnd/Flash.html +2 -2
  106. data/docs/api/Brut/FrontEnd/Form.html +2 -2
  107. data/docs/api/Brut/FrontEnd/Forms/Button.html +2 -2
  108. data/docs/api/Brut/FrontEnd/Forms/ButtonInputDefinition.html +2 -2
  109. data/docs/api/Brut/FrontEnd/Forms/ConstraintViolation.html +2 -2
  110. data/docs/api/Brut/FrontEnd/Forms/Input/Color.html +2 -2
  111. data/docs/api/Brut/FrontEnd/Forms/Input/TimeOfDay.html +2 -2
  112. data/docs/api/Brut/FrontEnd/Forms/Input.html +2 -2
  113. data/docs/api/Brut/FrontEnd/Forms/InputDeclarations.html +2 -2
  114. data/docs/api/Brut/FrontEnd/Forms/InputDefinition.html +2 -2
  115. data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInput.html +2 -2
  116. data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInputDefinition.html +2 -2
  117. data/docs/api/Brut/FrontEnd/Forms/SelectInput.html +2 -2
  118. data/docs/api/Brut/FrontEnd/Forms/SelectInputDefinition.html +2 -2
  119. data/docs/api/Brut/FrontEnd/Forms/ValidityState.html +2 -2
  120. data/docs/api/Brut/FrontEnd/Forms.html +2 -2
  121. data/docs/api/Brut/FrontEnd/GenericResponse.html +2 -2
  122. data/docs/api/Brut/FrontEnd/Handler.html +2 -2
  123. data/docs/api/Brut/FrontEnd/Handlers/CspReportingHandler.html +2 -2
  124. data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler/TraceParent.html +2 -2
  125. data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler.html +2 -2
  126. data/docs/api/Brut/FrontEnd/Handlers/LocaleDetectionHandler.html +2 -2
  127. data/docs/api/Brut/FrontEnd/Handlers/MissingHandler/Form.html +2 -2
  128. data/docs/api/Brut/FrontEnd/Handlers/MissingHandler.html +2 -2
  129. data/docs/api/Brut/FrontEnd/Handlers.html +2 -2
  130. data/docs/api/Brut/FrontEnd/HandlingResults.html +2 -2
  131. data/docs/api/Brut/FrontEnd/HttpMethod.html +2 -2
  132. data/docs/api/Brut/FrontEnd/HttpStatus.html +2 -2
  133. data/docs/api/Brut/FrontEnd/InlineSvgLocator.html +2 -2
  134. data/docs/api/Brut/FrontEnd/Layout.html +2 -2
  135. data/docs/api/Brut/FrontEnd/Middleware.html +2 -2
  136. data/docs/api/Brut/FrontEnd/Middlewares/AnnotateBrutOwnedPaths.html +2 -2
  137. data/docs/api/Brut/FrontEnd/Middlewares/Favicon.html +2 -2
  138. data/docs/api/Brut/FrontEnd/Middlewares/OpenTelemetrySpan.html +2 -2
  139. data/docs/api/Brut/FrontEnd/Middlewares/ReloadApp.html +2 -2
  140. data/docs/api/Brut/FrontEnd/Middlewares.html +2 -2
  141. data/docs/api/Brut/FrontEnd/Page.html +2 -2
  142. data/docs/api/Brut/FrontEnd/Pages/MissingPage.html +2 -2
  143. data/docs/api/Brut/FrontEnd/Pages.html +2 -2
  144. data/docs/api/Brut/FrontEnd/RequestContext.html +2 -2
  145. data/docs/api/Brut/FrontEnd/RouteHook.html +2 -2
  146. data/docs/api/Brut/FrontEnd/RouteHooks/AgeFlash.html +2 -2
  147. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineScripts.html +2 -2
  148. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts/ReportOnly.html +2 -2
  149. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts.html +2 -2
  150. data/docs/api/Brut/FrontEnd/RouteHooks/LocaleDetection.html +2 -2
  151. data/docs/api/Brut/FrontEnd/RouteHooks/SetupRequestContext.html +2 -2
  152. data/docs/api/Brut/FrontEnd/RouteHooks.html +2 -2
  153. data/docs/api/Brut/FrontEnd/Routing/FormHandlerRoute.html +2 -2
  154. data/docs/api/Brut/FrontEnd/Routing/FormRoute.html +2 -2
  155. data/docs/api/Brut/FrontEnd/Routing/MissingForm.html +2 -2
  156. data/docs/api/Brut/FrontEnd/Routing/MissingHandler.html +2 -2
  157. data/docs/api/Brut/FrontEnd/Routing/MissingPage.html +2 -2
  158. data/docs/api/Brut/FrontEnd/Routing/MissingPath.html +2 -2
  159. data/docs/api/Brut/FrontEnd/Routing/PageRoute.html +2 -2
  160. data/docs/api/Brut/FrontEnd/Routing/Route.html +2 -2
  161. data/docs/api/Brut/FrontEnd/Routing.html +2 -2
  162. data/docs/api/Brut/FrontEnd/Session.html +2 -2
  163. data/docs/api/Brut/FrontEnd.html +2 -2
  164. data/docs/api/Brut/I18n/BaseMethods.html +2 -2
  165. data/docs/api/Brut/I18n/ForBackEnd.html +2 -2
  166. data/docs/api/Brut/I18n/ForCLI.html +2 -2
  167. data/docs/api/Brut/I18n/ForHTML.html +2 -2
  168. data/docs/api/Brut/I18n/HTTPAcceptLanguage/AlwaysEnglish.html +2 -2
  169. data/docs/api/Brut/I18n/HTTPAcceptLanguage.html +2 -2
  170. data/docs/api/Brut/I18n.html +2 -2
  171. data/docs/api/Brut/Instrumentation/LoggerSpanExporter.html +2 -2
  172. data/docs/api/Brut/Instrumentation/Methods/ClassMethods.html +2 -2
  173. data/docs/api/Brut/Instrumentation/Methods.html +2 -2
  174. data/docs/api/Brut/Instrumentation/OpenTelemetry/NormalizedAttributes.html +2 -2
  175. data/docs/api/Brut/Instrumentation/OpenTelemetry/Span.html +2 -2
  176. data/docs/api/Brut/Instrumentation/OpenTelemetry.html +2 -2
  177. data/docs/api/Brut/Instrumentation.html +2 -2
  178. data/docs/api/Brut/RubocopConfig.html +2 -2
  179. data/docs/api/Brut/SinatraHelpers/ClassMethods.html +2 -2
  180. data/docs/api/Brut/SinatraHelpers.html +2 -2
  181. data/docs/api/Brut/SpecSupport/ClockSupport.html +2 -2
  182. data/docs/api/Brut/SpecSupport/ComponentSupport.html +2 -2
  183. data/docs/api/Brut/SpecSupport/E2ETestServer.html +2 -2
  184. data/docs/api/Brut/SpecSupport/E2eSupport.html +2 -2
  185. data/docs/api/Brut/SpecSupport/EnhancedNode.html +2 -2
  186. data/docs/api/Brut/SpecSupport/FlashSupport.html +2 -2
  187. data/docs/api/Brut/SpecSupport/GeneralSupport/ClassMethods.html +2 -2
  188. data/docs/api/Brut/SpecSupport/GeneralSupport.html +2 -2
  189. data/docs/api/Brut/SpecSupport/HandlerSupport.html +2 -2
  190. data/docs/api/Brut/SpecSupport/Matchers/BeABug.html +2 -2
  191. data/docs/api/Brut/SpecSupport/Matchers/BePageFor.html +2 -2
  192. data/docs/api/Brut/SpecSupport/Matchers/BeRoutingFor.html +2 -2
  193. data/docs/api/Brut/SpecSupport/Matchers/HaveConstraintViolation.html +2 -2
  194. data/docs/api/Brut/SpecSupport/Matchers/HaveGenerated.html +2 -2
  195. data/docs/api/Brut/SpecSupport/Matchers/HaveHTMLAttribute.html +2 -2
  196. data/docs/api/Brut/SpecSupport/Matchers/HaveI18nString.html +2 -2
  197. data/docs/api/Brut/SpecSupport/Matchers/HaveLinkTo.html +2 -2
  198. data/docs/api/Brut/SpecSupport/Matchers/HaveRedirectedTo.html +2 -2
  199. data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedHttpStatus.html +2 -2
  200. data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedRackResponse.html +2 -2
  201. data/docs/api/Brut/SpecSupport/Matchers.html +2 -2
  202. data/docs/api/Brut/SpecSupport/RSpecSetup/OptionalSidekiqSupport.html +2 -2
  203. data/docs/api/Brut/SpecSupport/RSpecSetup.html +2 -2
  204. data/docs/api/Brut/SpecSupport/SessionSupport.html +2 -2
  205. data/docs/api/Brut/SpecSupport.html +2 -2
  206. data/docs/api/Brut.html +2 -2
  207. data/docs/api/Clock.html +2 -2
  208. data/docs/api/ModuleName.html +2 -2
  209. data/docs/api/RichString.html +2 -2
  210. data/docs/api/SemanticLogger/Appender/Async.html +2 -2
  211. data/docs/api/Sequel/Extensions/BrutInstrumentation.html +2 -2
  212. data/docs/api/Sequel/Extensions/BrutMigrations.html +2 -2
  213. data/docs/api/Sequel/Extensions.html +2 -2
  214. data/docs/api/Sequel/Plugins/CreatedAt/InstanceMethods.html +2 -2
  215. data/docs/api/Sequel/Plugins/CreatedAt.html +2 -2
  216. data/docs/api/Sequel/Plugins/ExternalId/ClassMethods.html +2 -2
  217. data/docs/api/Sequel/Plugins/ExternalId/InstanceMethods.html +2 -2
  218. data/docs/api/Sequel/Plugins/ExternalId.html +2 -2
  219. data/docs/api/Sequel/Plugins/FindBang/ClassMethods.html +2 -2
  220. data/docs/api/Sequel/Plugins/FindBang.html +2 -2
  221. data/docs/api/Sequel/Plugins.html +2 -2
  222. data/docs/api/Sequel.html +2 -2
  223. data/docs/api/_index.html +2 -2
  224. data/docs/api/file.README.html +2 -2
  225. data/docs/api/index.html +2 -2
  226. data/docs/api/top-level-namespace.html +2 -2
  227. data/docs/assets/{app.Dm7v_ouO.js → app.CovevI7X.js} +1 -1
  228. data/docs/assets/chunks/@localSearchIndexroot.BiNc3tFI.js +1 -0
  229. data/docs/assets/chunks/{VPLocalSearchBox.DQK6jQou.js → VPLocalSearchBox.CrvLAvKW.js} +1 -1
  230. data/docs/assets/chunks/{theme.BuExsdM9.js → theme.BAi5_yQI.js} +2 -2
  231. data/docs/assets/{components.md.Dfd3w6UW.js → components.md.9sqJ27Oc.js} +3 -3
  232. data/docs/assets/{configuration.md.DTYoV2Ea.js → configuration.md.Cb_oAR8Z.js} +1 -1
  233. data/docs/assets/{deployment.md.C1u5ep0g.js → deployment.md.CHTx2eTR.js} +10 -3
  234. data/docs/assets/{deployment.md.C1u5ep0g.lean.js → deployment.md.CHTx2eTR.lean.js} +1 -1
  235. data/docs/assets/{forms.md.DEkmJUvb.js → forms.md.BdpYpNIk.js} +1 -1
  236. data/docs/assets/{getting-started.md.DO-4eoGW.js → getting-started.md.CKpNGvno.js} +2 -2
  237. data/docs/assets/jobs.md.Bi3qb3v6.js +25 -0
  238. data/docs/assets/jobs.md.Bi3qb3v6.lean.js +1 -0
  239. data/docs/assets/recipes_dev-env-secrets.md.DC_jVY9U.js +12 -0
  240. data/docs/assets/recipes_dev-env-secrets.md.DC_jVY9U.lean.js +1 -0
  241. data/docs/assets/roadmap.md.DqC1Y7Zt.js +1 -0
  242. data/docs/assets/{roadmap.md.CJsbUmK_.lean.js → roadmap.md.DqC1Y7Zt.lean.js} +1 -1
  243. data/docs/assets/{tutorials_02-dialog.md.D2vSjDVf.js → tutorials_02-dialog.md.Z_DOF2mU.js} +1 -1
  244. data/docs/assets.html +4 -4
  245. data/docs/brut-js/api/AjaxSubmit.html +1 -1
  246. data/docs/brut-js/api/AjaxSubmit.js.html +1 -1
  247. data/docs/brut-js/api/Autosubmit.html +1 -1
  248. data/docs/brut-js/api/Autosubmit.js.html +1 -1
  249. data/docs/brut-js/api/BaseCustomElement.html +1 -1
  250. data/docs/brut-js/api/BaseCustomElement.js.html +1 -1
  251. data/docs/brut-js/api/BrutCustomElements.html +1 -1
  252. data/docs/brut-js/api/BufferedLogger.html +1 -1
  253. data/docs/brut-js/api/ConfirmSubmit.html +1 -1
  254. data/docs/brut-js/api/ConfirmSubmit.js.html +1 -1
  255. data/docs/brut-js/api/ConfirmationDialog.html +1 -1
  256. data/docs/brut-js/api/ConfirmationDialog.js.html +1 -1
  257. data/docs/brut-js/api/ConstraintViolationMessage.html +1 -1
  258. data/docs/brut-js/api/ConstraintViolationMessage.js.html +1 -1
  259. data/docs/brut-js/api/ConstraintViolationMessages.html +1 -1
  260. data/docs/brut-js/api/ConstraintViolationMessages.js.html +1 -1
  261. data/docs/brut-js/api/CopyToClipboard.html +1 -1
  262. data/docs/brut-js/api/CopyToClipboard.js.html +1 -1
  263. data/docs/brut-js/api/Form.html +1 -1
  264. data/docs/brut-js/api/Form.js.html +1 -1
  265. data/docs/brut-js/api/I18nTranslation.html +1 -1
  266. data/docs/brut-js/api/I18nTranslation.js.html +1 -1
  267. data/docs/brut-js/api/LocaleDetection.html +1 -1
  268. data/docs/brut-js/api/LocaleDetection.js.html +1 -1
  269. data/docs/brut-js/api/Logger.html +1 -1
  270. data/docs/brut-js/api/Logger.js.html +1 -1
  271. data/docs/brut-js/api/Message.html +1 -1
  272. data/docs/brut-js/api/Message.js.html +1 -1
  273. data/docs/brut-js/api/PrefixedLogger.html +1 -1
  274. data/docs/brut-js/api/RichString.html +1 -1
  275. data/docs/brut-js/api/RichString.js.html +1 -1
  276. data/docs/brut-js/api/Tabs.html +1 -1
  277. data/docs/brut-js/api/Tabs.js.html +1 -1
  278. data/docs/brut-js/api/Toast.html +1 -1
  279. data/docs/brut-js/api/Toast.js.html +1 -1
  280. data/docs/brut-js/api/Tracing.html +1 -1
  281. data/docs/brut-js/api/Tracing.js.html +1 -1
  282. data/docs/brut-js/api/external-CustomElementRegistry.html +1 -1
  283. data/docs/brut-js/api/external-Performance.html +1 -1
  284. data/docs/brut-js/api/external-Promise.html +1 -1
  285. data/docs/brut-js/api/external-ValidityState.html +1 -1
  286. data/docs/brut-js/api/external-Window.html +1 -1
  287. data/docs/brut-js/api/external-fetch.html +1 -1
  288. data/docs/brut-js/api/global.html +1 -1
  289. data/docs/brut-js/api/index.html +1 -1
  290. data/docs/brut-js/api/index.js.html +1 -1
  291. data/docs/brut-js/api/module-testing.html +1 -1
  292. data/docs/brut-js/api/testing.AssetMetadata.html +1 -1
  293. data/docs/brut-js/api/testing.AssetMetadataLoader.html +1 -1
  294. data/docs/brut-js/api/testing.CustomElementTest.html +1 -1
  295. data/docs/brut-js/api/testing.DOMCreator.html +1 -1
  296. data/docs/brut-js/api/testing_AssetMetadata.js.html +1 -1
  297. data/docs/brut-js/api/testing_AssetMetadataLoader.js.html +1 -1
  298. data/docs/brut-js/api/testing_CustomElementTest.js.html +1 -1
  299. data/docs/brut-js/api/testing_DOMCreator.js.html +1 -1
  300. data/docs/brut-js/api/testing_index.js.html +1 -1
  301. data/docs/brut-js.html +4 -4
  302. data/docs/business-logic.html +4 -4
  303. data/docs/cli.html +4 -4
  304. data/docs/components.html +8 -8
  305. data/docs/configuration.html +5 -5
  306. data/docs/css.html +4 -4
  307. data/docs/custom-element-tests.html +4 -4
  308. data/docs/database-access.html +4 -4
  309. data/docs/database-schema.html +4 -4
  310. data/docs/deployment.html +13 -6
  311. data/docs/dev-environment.html +4 -4
  312. data/docs/dir-structure.html +4 -4
  313. data/docs/doc-conventions.html +4 -4
  314. data/docs/end-to-end-tests.html +4 -4
  315. data/docs/features.html +4 -4
  316. data/docs/flash-and-session.html +4 -4
  317. data/docs/form-constraints.html +4 -4
  318. data/docs/forms.html +6 -6
  319. data/docs/getting-started.html +7 -7
  320. data/docs/handlers.html +4 -4
  321. data/docs/hashmap.json +1 -1
  322. data/docs/hooks.html +4 -4
  323. data/docs/i18n.html +4 -4
  324. data/docs/index.html +3 -3
  325. data/docs/instrumentation.html +4 -4
  326. data/docs/javascript.html +4 -4
  327. data/docs/jobs.html +29 -5
  328. data/docs/keyword-injection.html +4 -4
  329. data/docs/layouts.html +4 -4
  330. data/docs/lsp.html +4 -4
  331. data/docs/markdown-examples.html +4 -4
  332. data/docs/middleware.html +4 -4
  333. data/docs/overview.html +4 -4
  334. data/docs/pages.html +4 -4
  335. data/docs/recipes/alternate-layouts.html +5 -5
  336. data/docs/recipes/authentication.html +5 -5
  337. data/docs/recipes/custom-flash.html +5 -5
  338. data/docs/recipes/dev-env-secrets.html +40 -0
  339. data/docs/recipes/form-errors.html +5 -5
  340. data/docs/recipes/indexed-forms.html +5 -5
  341. data/docs/recipes/migrations.html +5 -5
  342. data/docs/recipes/text-field-component.html +5 -5
  343. data/docs/roadmap.html +5 -5
  344. data/docs/routes.html +4 -4
  345. data/docs/security.html +4 -4
  346. data/docs/seed-data.html +4 -4
  347. data/docs/space-time-continuum.html +4 -4
  348. data/docs/tutorial.html +4 -4
  349. data/docs/tutorials/01-intro.html +4 -4
  350. data/docs/tutorials/02-dialog.html +5 -5
  351. data/docs/unit-tests.html +4 -4
  352. data/docs/why.html +4 -4
  353. data/lib/brut/version.rb +1 -1
  354. data/mkbrut/Gemfile.lock +2 -1
  355. data/mkbrut/lib/mkbrut/version.rb +1 -1
  356. data/mkbrut/templates/segments/Heroku/deploy/Dockerfile +9 -7
  357. data/mkbrut/templates/segments/Heroku/deploy/heroku_config.rb +2 -2
  358. metadata +24 -23
  359. data/docs/api/SpecSupport/Matchers/BeABug.html +0 -143
  360. data/docs/assets/chunks/@localSearchIndexroot.BiNFswvo.js +0 -1
  361. data/docs/assets/jobs.md.Bc7Y1YpK.js +0 -1
  362. data/docs/assets/jobs.md.Bc7Y1YpK.lean.js +0 -1
  363. data/docs/assets/roadmap.md.CJsbUmK_.js +0 -1
  364. data/docs/brut-css/brut.css +0 -1
  365. /data/docs/assets/{components.md.Dfd3w6UW.lean.js → components.md.9sqJ27Oc.lean.js} +0 -0
  366. /data/docs/assets/{configuration.md.DTYoV2Ea.lean.js → configuration.md.Cb_oAR8Z.lean.js} +0 -0
  367. /data/docs/assets/{forms.md.DEkmJUvb.lean.js → forms.md.BdpYpNIk.lean.js} +0 -0
  368. /data/docs/assets/{getting-started.md.DO-4eoGW.lean.js → getting-started.md.CKpNGvno.lean.js} +0 -0
  369. /data/docs/assets/{tutorials_02-dialog.md.D2vSjDVf.lean.js → tutorials_02-dialog.md.Z_DOF2mU.lean.js} +0 -0
data/mkbrut/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- mkbrut (0.16.0.pre)
4
+ mkbrut (0.16.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -10,6 +10,7 @@ GEM
10
10
 
11
11
  PLATFORMS
12
12
  aarch64-linux
13
+ ruby
13
14
 
14
15
  DEPENDENCIES
15
16
  mkbrut!
@@ -1,3 +1,3 @@
1
1
  module MKBrut
2
- VERSION = "0.16.0.pre"
2
+ VERSION = "0.16.0"
3
3
  end
@@ -55,8 +55,8 @@ RUN --mount=type=cache,target=/var/cache/apt \
55
55
  #
56
56
  # Incancation is based on: https://www.postgresql.org/download/linux/debian/
57
57
  RUN /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh -y && \
58
- apt-get update && \
59
- apt-get --yes --quiet install postgresql-client-16 && \
58
+ apt-get update --quiet --yes && \
59
+ apt-get --yes --quiet --no-install-recommends install postgresql-client-16 && \
60
60
  rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/*
61
61
 
62
62
  # Set basic env vars for production
@@ -65,6 +65,8 @@ ENV RACK_ENV="production" \
65
65
  BUNDLE_PATH="/usr/local/bundle" \
66
66
  BUNDLE_WITHOUT="development"
67
67
 
68
+ RUN rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/*
69
+
68
70
  # This makes a new image that we'll throw away after building
69
71
  # needed artifacts.
70
72
  FROM base AS build
@@ -82,9 +84,11 @@ RUN --mount=type=cache,target=/var/cache/apt \
82
84
  libpq-dev \
83
85
  pkg-config
84
86
 
85
- # Install NodeJS from their Docker image
87
+ # Copy NodeJS from the official image. This should be faster than
88
+ # installing it via e.g. nvm
86
89
  COPY --from=node:22-slim /usr/local /usr/local
87
90
 
91
+ # Copy Gemfile only as it may not change between deploys
88
92
  COPY Gemfile Gemfile.lock .
89
93
 
90
94
  # Install RubyGems from app's Gemfile
@@ -99,9 +103,7 @@ RUN npm clean-install --no-audit --no-fund --verbose
99
103
  COPY . .
100
104
 
101
105
  # Build all assets
102
- RUN \. "$HOME/.nvm/nvm.sh" && \
103
- nvm use default && \
104
- bin/build-assets && \
106
+ RUN bin/build-assets && \
105
107
  rm -rf node_modules
106
108
 
107
109
  # We are now switching back to building the image that will be deployed.
@@ -118,7 +120,7 @@ RUN groupadd --system --gid 1000 brut && \
118
120
  USER 1000:1000
119
121
 
120
122
  ENV APP_GIT_SHA1="${app_git_sha1}"
123
+
121
124
  # This is used to execute other commands. When the app is run in production,
122
125
  # this script is used to run it.
123
126
  ENTRYPOINT ["/brut-app/deploy/docker-entrypoint"]
124
-
@@ -13,12 +13,12 @@ class HerokuConfig
13
13
  # }
14
14
  # }
15
15
  #
16
- # For example, if you have the Sidekiq segment installed, `bin/run-sidekiq`
16
+ # For example, if you have the Sidekiq segment installed, `bin/run sidekiq`
17
17
  # runs Sidekiq, so you would return this hash:
18
18
  #
19
19
  # {
20
20
  # "sidekiq" => {
21
- # cmd: "bin/run-sidekiq",
21
+ # cmd: "bin/run sidekiq",
22
22
  # }
23
23
  # }
24
24
  #
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brut
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.16.0.pre
4
+ version: 0.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Bryant Copeland
@@ -939,7 +939,6 @@ files:
939
939
  - docs/api/Sequel/Plugins/ExternalId/InstanceMethods.html
940
940
  - docs/api/Sequel/Plugins/FindBang.html
941
941
  - docs/api/Sequel/Plugins/FindBang/ClassMethods.html
942
- - docs/api/SpecSupport/Matchers/BeABug.html
943
942
  - docs/api/_index.html
944
943
  - docs/api/class_list.html
945
944
  - docs/api/css/common.css
@@ -966,7 +965,7 @@ files:
966
965
  - docs/assets/adrs.md.YglbWtQe.lean.js
967
966
  - docs/assets/ai.md.ChLnvDAX.js
968
967
  - docs/assets/ai.md.ChLnvDAX.lean.js
969
- - docs/assets/app.Dm7v_ouO.js
968
+ - docs/assets/app.CovevI7X.js
970
969
  - docs/assets/assets.md.BEF6Oz6K.js
971
970
  - docs/assets/assets.md.BEF6Oz6K.lean.js
972
971
  - docs/assets/basic-form-with-violations.Cv6Y9-Q_.png
@@ -975,16 +974,16 @@ files:
975
974
  - docs/assets/brut-js.md.BMz0X1Rz.lean.js
976
975
  - docs/assets/business-logic.md.DbuaOYGU.js
977
976
  - docs/assets/business-logic.md.DbuaOYGU.lean.js
978
- - docs/assets/chunks/@localSearchIndexroot.BiNFswvo.js
979
- - docs/assets/chunks/VPLocalSearchBox.DQK6jQou.js
977
+ - docs/assets/chunks/@localSearchIndexroot.BiNc3tFI.js
978
+ - docs/assets/chunks/VPLocalSearchBox.CrvLAvKW.js
980
979
  - docs/assets/chunks/framework.C4nOkCZI.js
981
- - docs/assets/chunks/theme.BuExsdM9.js
980
+ - docs/assets/chunks/theme.BAi5_yQI.js
982
981
  - docs/assets/cli.md.DDMar_51.js
983
982
  - docs/assets/cli.md.DDMar_51.lean.js
984
- - docs/assets/components.md.Dfd3w6UW.js
985
- - docs/assets/components.md.Dfd3w6UW.lean.js
986
- - docs/assets/configuration.md.DTYoV2Ea.js
987
- - docs/assets/configuration.md.DTYoV2Ea.lean.js
983
+ - docs/assets/components.md.9sqJ27Oc.js
984
+ - docs/assets/components.md.9sqJ27Oc.lean.js
985
+ - docs/assets/configuration.md.Cb_oAR8Z.js
986
+ - docs/assets/configuration.md.Cb_oAR8Z.lean.js
988
987
  - docs/assets/css.md.K5rOCOQY.js
989
988
  - docs/assets/css.md.K5rOCOQY.lean.js
990
989
  - docs/assets/custom-element-tests.md.DiLe-eFw.js
@@ -993,8 +992,8 @@ files:
993
992
  - docs/assets/database-access.md.Dc8l2Plf.lean.js
994
993
  - docs/assets/database-schema.md.BJ_JhXmO.js
995
994
  - docs/assets/database-schema.md.BJ_JhXmO.lean.js
996
- - docs/assets/deployment.md.C1u5ep0g.js
997
- - docs/assets/deployment.md.C1u5ep0g.lean.js
995
+ - docs/assets/deployment.md.CHTx2eTR.js
996
+ - docs/assets/deployment.md.CHTx2eTR.lean.js
998
997
  - docs/assets/dev-env-protocol.DysDAtnz.png
999
998
  - docs/assets/dev-environment.md.B1S9p5ZK.js
1000
999
  - docs/assets/dev-environment.md.B1S9p5ZK.lean.js
@@ -1010,10 +1009,10 @@ files:
1010
1009
  - docs/assets/flash-and-session.md.CUsMxoNl.lean.js
1011
1010
  - docs/assets/form-constraints.md.KlfXSKm2.js
1012
1011
  - docs/assets/form-constraints.md.KlfXSKm2.lean.js
1013
- - docs/assets/forms.md.DEkmJUvb.js
1014
- - docs/assets/forms.md.DEkmJUvb.lean.js
1015
- - docs/assets/getting-started.md.DO-4eoGW.js
1016
- - docs/assets/getting-started.md.DO-4eoGW.lean.js
1012
+ - docs/assets/forms.md.BdpYpNIk.js
1013
+ - docs/assets/forms.md.BdpYpNIk.lean.js
1014
+ - docs/assets/getting-started.md.CKpNGvno.js
1015
+ - docs/assets/getting-started.md.CKpNGvno.lean.js
1017
1016
  - docs/assets/handlers.md.C5tUwmmo.js
1018
1017
  - docs/assets/handlers.md.C5tUwmmo.lean.js
1019
1018
  - docs/assets/hooks.md.CoiYCKRc.js
@@ -1027,8 +1026,8 @@ files:
1027
1026
  - docs/assets/instrumentation.md.BcxjC4jd.lean.js
1028
1027
  - docs/assets/javascript.md.D6fxhaQb.js
1029
1028
  - docs/assets/javascript.md.D6fxhaQb.lean.js
1030
- - docs/assets/jobs.md.Bc7Y1YpK.js
1031
- - docs/assets/jobs.md.Bc7Y1YpK.lean.js
1029
+ - docs/assets/jobs.md.Bi3qb3v6.js
1030
+ - docs/assets/jobs.md.Bi3qb3v6.lean.js
1032
1031
  - docs/assets/keyword-injection.md.CqLnnzIz.js
1033
1032
  - docs/assets/keyword-injection.md.CqLnnzIz.lean.js
1034
1033
  - docs/assets/layouts.md.HEbeK7Jr.js
@@ -1051,6 +1050,8 @@ files:
1051
1050
  - docs/assets/recipes_authentication.md.CyvoIW82.lean.js
1052
1051
  - docs/assets/recipes_custom-flash.md.6gFqf2uL.js
1053
1052
  - docs/assets/recipes_custom-flash.md.6gFqf2uL.lean.js
1053
+ - docs/assets/recipes_dev-env-secrets.md.DC_jVY9U.js
1054
+ - docs/assets/recipes_dev-env-secrets.md.DC_jVY9U.lean.js
1054
1055
  - docs/assets/recipes_form-errors.md.B5ptSzMO.js
1055
1056
  - docs/assets/recipes_form-errors.md.B5ptSzMO.lean.js
1056
1057
  - docs/assets/recipes_indexed-forms.md.BYYQGW2C.js
@@ -1059,8 +1060,8 @@ files:
1059
1060
  - docs/assets/recipes_migrations.md.Cid7-3cu.lean.js
1060
1061
  - docs/assets/recipes_text-field-component.md.VhOsCtKI.js
1061
1062
  - docs/assets/recipes_text-field-component.md.VhOsCtKI.lean.js
1062
- - docs/assets/roadmap.md.CJsbUmK_.js
1063
- - docs/assets/roadmap.md.CJsbUmK_.lean.js
1063
+ - docs/assets/roadmap.md.DqC1Y7Zt.js
1064
+ - docs/assets/roadmap.md.DqC1Y7Zt.lean.js
1064
1065
  - docs/assets/routes.md.C1dgIBtD.js
1065
1066
  - docs/assets/routes.md.C1dgIBtD.lean.js
1066
1067
  - docs/assets/security.md.Jn4SY1uK.js
@@ -1079,15 +1080,14 @@ files:
1079
1080
  - docs/assets/tutorial.md.BX6f6l00.lean.js
1080
1081
  - docs/assets/tutorials_01-intro.md.CzZ3kpF_.js
1081
1082
  - docs/assets/tutorials_01-intro.md.CzZ3kpF_.lean.js
1082
- - docs/assets/tutorials_02-dialog.md.D2vSjDVf.js
1083
- - docs/assets/tutorials_02-dialog.md.D2vSjDVf.lean.js
1083
+ - docs/assets/tutorials_02-dialog.md.Z_DOF2mU.js
1084
+ - docs/assets/tutorials_02-dialog.md.Z_DOF2mU.lean.js
1084
1085
  - docs/assets/unit-tests.md.vDsdBbO_.js
1085
1086
  - docs/assets/unit-tests.md.vDsdBbO_.lean.js
1086
1087
  - docs/assets/welcome-to-brut.VSWzl17-.png
1087
1088
  - docs/assets/why.md.4WpxdrQ2.js
1088
1089
  - docs/assets/why.md.4WpxdrQ2.lean.js
1089
1090
  - docs/assets/workspace-protocol.C0gXsoDb.png
1090
- - docs/brut-css/brut.css
1091
1091
  - docs/brut-css/brut.max.css
1092
1092
  - docs/brut-css/classes/appearances.html
1093
1093
  - docs/brut-css/classes/background-colors.html
@@ -1217,6 +1217,7 @@ files:
1217
1217
  - docs/recipes/alternate-layouts.html
1218
1218
  - docs/recipes/authentication.html
1219
1219
  - docs/recipes/custom-flash.html
1220
+ - docs/recipes/dev-env-secrets.html
1220
1221
  - docs/recipes/form-errors.html
1221
1222
  - docs/recipes/indexed-forms.html
1222
1223
  - docs/recipes/migrations.html
@@ -1,143 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>
7
- Class: SpecSupport::Matchers::BeABug
8
-
9
- &mdash; Documentation by YARD 0.9.37
10
-
11
- </title>
12
-
13
- <link rel="stylesheet" href="../../css/style.css" type="text/css" />
14
-
15
- <link rel="stylesheet" href="../../css/common.css" type="text/css" />
16
-
17
- <script type="text/javascript">
18
- pathId = "SpecSupport::Matchers::BeABug";
19
- relpath = '../../';
20
- </script>
21
-
22
-
23
- <script type="text/javascript" charset="utf-8" src="../../js/jquery.js"></script>
24
-
25
- <script type="text/javascript" charset="utf-8" src="../../js/app.js"></script>
26
-
27
-
28
- </head>
29
- <body>
30
- <div class="nav_wrap">
31
- <iframe id="nav" src="../../class_list.html?1"></iframe>
32
- <div id="resizer"></div>
33
- </div>
34
-
35
- <div id="main" tabindex="-1">
36
- <div id="header">
37
- <div id="menu">
38
-
39
- <a href="../../_index.html">Index (B)</a> &raquo;
40
- <span class='title'>SpecSupport</span> &raquo; <span class='title'>Matchers</span>
41
- &raquo;
42
- <span class="title">BeABug</span>
43
-
44
- </div>
45
-
46
- <div id="search">
47
-
48
- <a class="full_list_link" id="class_list_link"
49
- href="../../class_list.html">
50
-
51
- <svg width="24" height="24">
52
- <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
53
- <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
54
- <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
55
- </svg>
56
- </a>
57
-
58
- </div>
59
- <div class="clear"></div>
60
- </div>
61
-
62
- <div id="content"><h1>Class: SpecSupport::Matchers::BeABug
63
-
64
-
65
-
66
- </h1>
67
- <div class="box_info">
68
-
69
- <dl>
70
- <dt>Inherits:</dt>
71
- <dd>
72
- <span class="inheritName">Object</span>
73
-
74
- <ul class="fullTree">
75
- <li>Object</li>
76
-
77
- <li class="next">SpecSupport::Matchers::BeABug</li>
78
-
79
- </ul>
80
- <a href="#" class="inheritanceTree">show all</a>
81
-
82
- </dd>
83
- </dl>
84
-
85
-
86
-
87
-
88
-
89
-
90
-
91
-
92
-
93
-
94
-
95
- <dl>
96
- <dt>Defined in:</dt>
97
- <dd>lib/brut/spec_support/matchers/be_a_bug.rb</dd>
98
- </dl>
99
-
100
- </div>
101
-
102
- <h2>Overview</h2><div class="docstring">
103
- <div class="discussion">
104
- <p>Block-based matcher that expects the blog to
105
- raise a <span class='object_link'><a href="../../Brut/Framework/Errors/Bug.html" title="Brut::Framework::Errors::Bug (class)">Brut::Framework::Errors::Bug</a></span>.</p>
106
-
107
-
108
- </div>
109
- </div>
110
- <div class="tags">
111
-
112
- <div class="examples">
113
- <h4 class="tag_title">Examples:</h4>
114
-
115
-
116
- <pre class="example code"><code>
117
- <span class='id identifier rubyid_expect'>expect</span> <span class='lbrace'>{</span>
118
- <span class='const'>SomeClass</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='label'>value:</span> <span class='symbol'>:invalid</span><span class='rparen'>)</span>
119
- <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_to'>to</span> <span class='id identifier rubyid_be_a_bug'>be_a_bug</span></code></pre>
120
-
121
- </div>
122
-
123
-
124
- </div>
125
-
126
-
127
-
128
-
129
-
130
-
131
-
132
-
133
- </div>
134
-
135
- <div id="footer">
136
- Generated on Mon Jun 30 23:01:10 2025 by
137
- <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
138
- 0.9.37 (ruby-3.4.4).
139
- </div>
140
-
141
- </div>
142
- </body>
143
- </html>