brut 0.8.0 → 0.9.1

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 (420) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +9 -0
  3. data/CHANGELOG.md +13 -0
  4. data/Dockerfile.dx +8 -1
  5. data/Gemfile.lock +101 -63
  6. data/bin/ci +9 -5
  7. data/bin/docs +1 -1
  8. data/bin/generate-and-run-rubocop +52 -0
  9. data/bin/rubocop +27 -0
  10. data/bin/setup +46 -0
  11. data/bin/test +18 -0
  12. data/brut-css/bin/publish +1 -1
  13. data/brut-css/package-lock.json +2 -2
  14. data/brut-css/package.json +1 -1
  15. data/brut-js/bin/publish +1 -1
  16. data/brut-js/package-lock.json +2 -2
  17. data/brut-js/package.json +1 -1
  18. data/brut-js/specs/ConfirmSubmit.spec.js +32 -1
  19. data/brut-js/src/ConfirmSubmit.js +28 -7
  20. data/brut.gemspec +32 -26
  21. data/brutrb.com/.vitepress/config.mjs +3 -0
  22. data/brutrb.com/database-schema.md +1 -1
  23. data/brutrb.com/images/tutorial/basic-form-with-violations.png +0 -0
  24. data/brutrb.com/images/tutorial/basic-form.png +0 -0
  25. data/brutrb.com/images/tutorial/initial-home-page.png +0 -0
  26. data/brutrb.com/images/tutorial/new-post-editor.png +0 -0
  27. data/brutrb.com/images/tutorial/new-post-home-page.png +0 -0
  28. data/brutrb.com/images/tutorial/styled-form-with-server-side-violations.png +0 -0
  29. data/brutrb.com/images/tutorial/styled-form-with-violations.png +0 -0
  30. data/brutrb.com/images/tutorial/styled-home-page-with-posts.png +0 -0
  31. data/brutrb.com/images/tutorial/styled-home-page.png +0 -0
  32. data/brutrb.com/images/tutorial/welcome-to-brut.png +0 -0
  33. data/brutrb.com/recipes/migrations.md +1 -1
  34. data/brutrb.com/tutorial.md +1728 -3
  35. data/docker-compose.dx.yml +3 -0
  36. data/docs/404.html +2 -2
  37. data/docs/adrs.html +3 -3
  38. data/docs/ai.html +3 -3
  39. data/docs/api/Brut/BackEnd/SeedData.html +2 -2
  40. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server/FlushSpans.html +2 -2
  41. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server.html +2 -2
  42. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares.html +2 -2
  43. data/docs/api/Brut/BackEnd/Sidekiq.html +2 -2
  44. data/docs/api/Brut/BackEnd/Validators/FormValidator.html +2 -2
  45. data/docs/api/Brut/BackEnd/Validators.html +2 -2
  46. data/docs/api/Brut/BackEnd.html +2 -2
  47. data/docs/api/Brut/CLI/App.html +2 -2
  48. data/docs/api/Brut/CLI/AppRunner.html +2 -2
  49. data/docs/api/Brut/CLI/Apps/BuildAssets/All.html +2 -2
  50. data/docs/api/Brut/CLI/Apps/BuildAssets/CSS.html +2 -2
  51. data/docs/api/Brut/CLI/Apps/BuildAssets/Images.html +2 -2
  52. data/docs/api/Brut/CLI/Apps/BuildAssets/JS.html +2 -2
  53. data/docs/api/Brut/CLI/Apps/BuildAssets.html +2 -2
  54. data/docs/api/Brut/CLI/Apps/DB/Create.html +2 -2
  55. data/docs/api/Brut/CLI/Apps/DB/Drop.html +2 -2
  56. data/docs/api/Brut/CLI/Apps/DB/Migrate.html +2 -2
  57. data/docs/api/Brut/CLI/Apps/DB/NewMigration.html +2 -2
  58. data/docs/api/Brut/CLI/Apps/DB/Rebuild.html +2 -2
  59. data/docs/api/Brut/CLI/Apps/DB/Seed.html +2 -2
  60. data/docs/api/Brut/CLI/Apps/DB/Status.html +2 -2
  61. data/docs/api/Brut/CLI/Apps/DB.html +2 -2
  62. data/docs/api/Brut/CLI/Apps/DeployBase/GitChecks.html +2 -2
  63. data/docs/api/Brut/CLI/Apps/DeployBase.html +2 -2
  64. data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy/Deploy.html +3 -3
  65. data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy.html +2 -2
  66. data/docs/api/Brut/CLI/Apps/Scaffold/Action/Route.html +2 -2
  67. data/docs/api/Brut/CLI/Apps/Scaffold/Action.html +2 -2
  68. data/docs/api/Brut/CLI/Apps/Scaffold/Component.html +2 -2
  69. data/docs/api/Brut/CLI/Apps/Scaffold/CustomElementTest.html +2 -2
  70. data/docs/api/Brut/CLI/Apps/Scaffold/DbModel.html +2 -2
  71. data/docs/api/Brut/CLI/Apps/Scaffold/E2ETest.html +2 -2
  72. data/docs/api/Brut/CLI/Apps/Scaffold/Form.html +2 -2
  73. data/docs/api/Brut/CLI/Apps/Scaffold/Page/Route.html +2 -2
  74. data/docs/api/Brut/CLI/Apps/Scaffold/Page.html +2 -2
  75. data/docs/api/Brut/CLI/Apps/Scaffold/RoutesEditor.html +2 -2
  76. data/docs/api/Brut/CLI/Apps/Scaffold/Test.html +3 -3
  77. data/docs/api/Brut/CLI/Apps/Scaffold.html +2 -2
  78. data/docs/api/Brut/CLI/Apps/Test/Audit.html +2 -2
  79. data/docs/api/Brut/CLI/Apps/Test/E2e.html +2 -2
  80. data/docs/api/Brut/CLI/Apps/Test/JS.html +2 -2
  81. data/docs/api/Brut/CLI/Apps/Test/Run.html +2 -2
  82. data/docs/api/Brut/CLI/Apps/Test.html +2 -2
  83. data/docs/api/Brut/CLI/Apps.html +2 -2
  84. data/docs/api/Brut/CLI/Command.html +2 -2
  85. data/docs/api/Brut/CLI/Error.html +2 -2
  86. data/docs/api/Brut/CLI/ExecutionResults/Result.html +2 -2
  87. data/docs/api/Brut/CLI/ExecutionResults.html +2 -2
  88. data/docs/api/Brut/CLI/Executor.html +2 -2
  89. data/docs/api/Brut/CLI/InvalidOption.html +2 -2
  90. data/docs/api/Brut/CLI/Options.html +80 -2
  91. data/docs/api/Brut/CLI/Output.html +2 -2
  92. data/docs/api/Brut/CLI/SystemExecError.html +2 -2
  93. data/docs/api/Brut/CLI.html +2 -2
  94. data/docs/api/Brut/FactoryBot.html +3 -3
  95. data/docs/api/Brut/Framework/App.html +3 -3
  96. data/docs/api/Brut/Framework/Config.html +27 -15
  97. data/docs/api/Brut/Framework/Container.html +2 -2
  98. data/docs/api/Brut/Framework/Error.html +2 -2
  99. data/docs/api/Brut/Framework/Errors/AbstractMethod.html +2 -2
  100. data/docs/api/Brut/Framework/Errors/Bug.html +2 -2
  101. data/docs/api/Brut/Framework/Errors/MissingConfiguration.html +2 -2
  102. data/docs/api/Brut/Framework/Errors/MissingParameter.html +2 -2
  103. data/docs/api/Brut/Framework/Errors/NoClassForPath.html +2 -2
  104. data/docs/api/Brut/Framework/Errors/NotFound.html +2 -2
  105. data/docs/api/Brut/Framework/Errors/NotImplemented.html +2 -2
  106. data/docs/api/Brut/Framework/Errors.html +2 -2
  107. data/docs/api/Brut/Framework/FussyTypeEnforcement.html +2 -2
  108. data/docs/api/Brut/Framework/MCP.html +21 -11
  109. data/docs/api/Brut/Framework/ProjectEnvironment.html +2 -2
  110. data/docs/api/Brut/Framework.html +2 -2
  111. data/docs/api/Brut/FrontEnd/AssetPathResolver.html +2 -2
  112. data/docs/api/Brut/FrontEnd/Component/Helpers.html +2 -2
  113. data/docs/api/Brut/FrontEnd/Component.html +2 -2
  114. data/docs/api/Brut/FrontEnd/Components/ConstraintViolations.html +2 -2
  115. data/docs/api/Brut/FrontEnd/Components/FormTag.html +4 -4
  116. data/docs/api/Brut/FrontEnd/Components/I18nTranslations.html +2 -2
  117. data/docs/api/Brut/FrontEnd/Components/Input.html +2 -2
  118. data/docs/api/Brut/FrontEnd/Components/Inputs/CsrfToken.html +2 -2
  119. data/docs/api/Brut/FrontEnd/Components/Inputs/InputTag.html +2 -2
  120. data/docs/api/Brut/FrontEnd/Components/Inputs/RadioButton.html +2 -2
  121. data/docs/api/Brut/FrontEnd/Components/Inputs/SelectTagWithOptions.html +2 -2
  122. data/docs/api/Brut/FrontEnd/Components/Inputs/TextareaTag.html +2 -2
  123. data/docs/api/Brut/FrontEnd/Components/Inputs.html +2 -2
  124. data/docs/api/Brut/FrontEnd/Components/LocaleDetection.html +2 -2
  125. data/docs/api/Brut/FrontEnd/Components/PageIdentifier.html +2 -2
  126. data/docs/api/Brut/FrontEnd/Components/TimeTag.html +2 -2
  127. data/docs/api/Brut/FrontEnd/Components/Traceparent.html +2 -2
  128. data/docs/api/Brut/FrontEnd/Components.html +2 -2
  129. data/docs/api/Brut/FrontEnd/CsrfProtector.html +250 -0
  130. data/docs/api/Brut/FrontEnd/Download.html +2 -2
  131. data/docs/api/Brut/FrontEnd/Flash.html +2 -2
  132. data/docs/api/Brut/FrontEnd/Form.html +6 -6
  133. data/docs/api/Brut/FrontEnd/Forms/ConstraintViolation.html +2 -2
  134. data/docs/api/Brut/FrontEnd/Forms/Input/Color.html +2 -2
  135. data/docs/api/Brut/FrontEnd/Forms/Input/TimeOfDay.html +2 -2
  136. data/docs/api/Brut/FrontEnd/Forms/Input.html +2 -2
  137. data/docs/api/Brut/FrontEnd/Forms/InputDeclarations.html +2 -2
  138. data/docs/api/Brut/FrontEnd/Forms/InputDefinition.html +2 -2
  139. data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInput.html +2 -2
  140. data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInputDefinition.html +2 -2
  141. data/docs/api/Brut/FrontEnd/Forms/SelectInput.html +2 -2
  142. data/docs/api/Brut/FrontEnd/Forms/SelectInputDefinition.html +2 -2
  143. data/docs/api/Brut/FrontEnd/Forms/ValidityState.html +2 -2
  144. data/docs/api/Brut/FrontEnd/Forms.html +2 -2
  145. data/docs/api/Brut/FrontEnd/GenericResponse.html +2 -2
  146. data/docs/api/Brut/FrontEnd/Handler.html +2 -2
  147. data/docs/api/Brut/FrontEnd/Handlers/CspReportingHandler.html +2 -2
  148. data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler/TraceParent.html +2 -2
  149. data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler.html +2 -2
  150. data/docs/api/Brut/FrontEnd/Handlers/LocaleDetectionHandler.html +2 -2
  151. data/docs/api/Brut/FrontEnd/Handlers/MissingHandler/Form.html +2 -2
  152. data/docs/api/Brut/FrontEnd/Handlers/MissingHandler.html +2 -2
  153. data/docs/api/Brut/FrontEnd/Handlers.html +2 -2
  154. data/docs/api/Brut/FrontEnd/HandlingResults.html +2 -2
  155. data/docs/api/Brut/FrontEnd/HttpMethod.html +2 -2
  156. data/docs/api/Brut/FrontEnd/HttpStatus.html +2 -2
  157. data/docs/api/Brut/FrontEnd/InlineSvgLocator.html +2 -2
  158. data/docs/api/Brut/FrontEnd/Layout.html +2 -2
  159. data/docs/api/Brut/FrontEnd/Middleware.html +2 -2
  160. data/docs/api/Brut/FrontEnd/Middlewares/AnnotateBrutOwnedPaths.html +2 -2
  161. data/docs/api/Brut/FrontEnd/Middlewares/Favicon.html +2 -2
  162. data/docs/api/Brut/FrontEnd/Middlewares/OpenTelemetrySpan.html +2 -2
  163. data/docs/api/Brut/FrontEnd/Middlewares/ReloadApp.html +2 -2
  164. data/docs/api/Brut/FrontEnd/Middlewares.html +2 -2
  165. data/docs/api/Brut/FrontEnd/Page.html +2 -2
  166. data/docs/api/Brut/FrontEnd/Pages/MissingPage.html +2 -2
  167. data/docs/api/Brut/FrontEnd/Pages.html +2 -2
  168. data/docs/api/Brut/FrontEnd/RequestContext.html +2 -2
  169. data/docs/api/Brut/FrontEnd/RouteHook.html +2 -2
  170. data/docs/api/Brut/FrontEnd/RouteHooks/AgeFlash.html +2 -2
  171. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineScripts.html +2 -2
  172. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts/ReportOnly.html +2 -2
  173. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts.html +2 -2
  174. data/docs/api/Brut/FrontEnd/RouteHooks/LocaleDetection.html +2 -2
  175. data/docs/api/Brut/FrontEnd/RouteHooks/SetupRequestContext.html +2 -2
  176. data/docs/api/Brut/FrontEnd/RouteHooks.html +2 -2
  177. data/docs/api/Brut/FrontEnd/Routing/FormHandlerRoute.html +2 -2
  178. data/docs/api/Brut/FrontEnd/Routing/FormRoute.html +2 -2
  179. data/docs/api/Brut/FrontEnd/Routing/MissingForm.html +2 -2
  180. data/docs/api/Brut/FrontEnd/Routing/MissingHandler.html +2 -2
  181. data/docs/api/Brut/FrontEnd/Routing/MissingPage.html +2 -2
  182. data/docs/api/Brut/FrontEnd/Routing/MissingPath.html +2 -2
  183. data/docs/api/Brut/FrontEnd/Routing/PageRoute.html +2 -2
  184. data/docs/api/Brut/FrontEnd/Routing/Route.html +2 -2
  185. data/docs/api/Brut/FrontEnd/Routing.html +2 -2
  186. data/docs/api/Brut/FrontEnd/Session.html +2 -2
  187. data/docs/api/Brut/FrontEnd.html +3 -3
  188. data/docs/api/Brut/I18n/BaseMethods.html +3 -3
  189. data/docs/api/Brut/I18n/ForBackEnd.html +2 -2
  190. data/docs/api/Brut/I18n/ForCLI.html +2 -2
  191. data/docs/api/Brut/I18n/ForHTML.html +2 -2
  192. data/docs/api/Brut/I18n/HTTPAcceptLanguage/AlwaysEnglish.html +2 -2
  193. data/docs/api/Brut/I18n/HTTPAcceptLanguage.html +2 -2
  194. data/docs/api/Brut/I18n.html +2 -2
  195. data/docs/api/Brut/Instrumentation/LoggerSpanExporter.html +2 -2
  196. data/docs/api/Brut/Instrumentation/OpenTelemetry/NormalizedAttributes.html +2 -2
  197. data/docs/api/Brut/Instrumentation/OpenTelemetry/Span.html +2 -2
  198. data/docs/api/Brut/Instrumentation/OpenTelemetry.html +2 -2
  199. data/docs/api/Brut/Instrumentation.html +2 -2
  200. data/docs/api/Brut/RubocopConfig.html +237 -0
  201. data/docs/api/Brut/SinatraHelpers/ClassMethods.html +2 -2
  202. data/docs/api/Brut/SinatraHelpers.html +2 -2
  203. data/docs/api/Brut/SpecSupport/ClockSupport.html +2 -2
  204. data/docs/api/Brut/SpecSupport/ComponentSupport.html +7 -13
  205. data/docs/api/Brut/SpecSupport/E2ETestServer.html +2 -2
  206. data/docs/api/Brut/SpecSupport/E2eSupport.html +2 -2
  207. data/docs/api/Brut/SpecSupport/EnhancedNode.html +2 -2
  208. data/docs/api/Brut/SpecSupport/FlashSupport.html +2 -2
  209. data/docs/api/Brut/SpecSupport/GeneralSupport/ClassMethods.html +2 -2
  210. data/docs/api/Brut/SpecSupport/GeneralSupport.html +2 -2
  211. data/docs/api/Brut/SpecSupport/HandlerSupport.html +2 -2
  212. data/docs/api/Brut/SpecSupport/Matchers/BeABug.html +2 -2
  213. data/docs/api/Brut/SpecSupport/Matchers/BePageFor.html +2 -2
  214. data/docs/api/Brut/SpecSupport/Matchers/BeRoutingFor.html +2 -2
  215. data/docs/api/Brut/SpecSupport/Matchers/HaveConstraintViolation.html +2 -2
  216. data/docs/api/Brut/SpecSupport/Matchers/HaveGenerated.html +2 -2
  217. data/docs/api/Brut/SpecSupport/Matchers/HaveHTMLAttribute.html +2 -2
  218. data/docs/api/Brut/SpecSupport/Matchers/HaveI18nString.html +2 -2
  219. data/docs/api/Brut/SpecSupport/Matchers/HaveLinkTo.html +2 -2
  220. data/docs/api/Brut/SpecSupport/Matchers/HaveRedirectedTo.html +2 -2
  221. data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedHttpStatus.html +2 -2
  222. data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedRackResponse.html +2 -2
  223. data/docs/api/Brut/SpecSupport/Matchers.html +2 -2
  224. data/docs/api/Brut/SpecSupport/RSpecSetup/OptionalSidekiqSupport.html +2 -2
  225. data/docs/api/Brut/SpecSupport/RSpecSetup.html +4 -4
  226. data/docs/api/Brut/SpecSupport/SessionSupport.html +2 -2
  227. data/docs/api/Brut/SpecSupport.html +2 -2
  228. data/docs/api/Brut.html +128 -12
  229. data/docs/api/Clock.html +2 -2
  230. data/docs/api/ModuleName.html +28 -28
  231. data/docs/api/RichString.html +22 -22
  232. data/docs/api/SemanticLogger/Appender/Async.html +2 -2
  233. data/docs/api/Sequel/Extensions/BrutInstrumentation.html +2 -2
  234. data/docs/api/Sequel/Extensions/BrutMigrations.html +2 -2
  235. data/docs/api/Sequel/Extensions.html +2 -2
  236. data/docs/api/Sequel/Plugins/CreatedAt/InstanceMethods.html +2 -2
  237. data/docs/api/Sequel/Plugins/CreatedAt.html +2 -2
  238. data/docs/api/Sequel/Plugins/ExternalId/ClassMethods.html +2 -2
  239. data/docs/api/Sequel/Plugins/ExternalId/InstanceMethods.html +2 -2
  240. data/docs/api/Sequel/Plugins/ExternalId.html +2 -2
  241. data/docs/api/Sequel/Plugins/FindBang/ClassMethods.html +2 -2
  242. data/docs/api/Sequel/Plugins/FindBang.html +2 -2
  243. data/docs/api/Sequel/Plugins.html +2 -2
  244. data/docs/api/Sequel.html +2 -2
  245. data/docs/api/_index.html +16 -2
  246. data/docs/api/class_list.html +1 -1
  247. data/docs/api/file.README.html +28 -2
  248. data/docs/api/index.html +28 -2
  249. data/docs/api/method_list.html +192 -168
  250. data/docs/api/top-level-namespace.html +2 -2
  251. data/docs/assets/{app.DyQLb4Ot.js → app.BuBdZoUg.js} +1 -1
  252. data/docs/assets/basic-form-with-violations.Cv6Y9-Q_.png +0 -0
  253. data/docs/assets/basic-form.DbHnu0oW.png +0 -0
  254. data/docs/assets/chunks/@localSearchIndexroot.BZ_a3X0T.js +1 -0
  255. data/docs/assets/chunks/{VPLocalSearchBox.T1iA-eJx.js → VPLocalSearchBox.UtnyvkX-.js} +1 -1
  256. data/docs/assets/chunks/{theme.ChwsbWjK.js → theme.DqwvuBEK.js} +2 -2
  257. data/docs/assets/{components.md.DHh-NwKs.js → components.md.Bu80E2Nr.js} +3 -3
  258. data/docs/assets/{configuration.md.D8Wz3oJU.js → configuration.md.CuIxVsSf.js} +1 -1
  259. data/docs/assets/{database-schema.md.C5gXexJi.js → database-schema.md.LpmBPVEU.js} +1 -1
  260. data/docs/assets/{forms.md.BRE85eju.js → forms.md.DnLbzVDa.js} +1 -1
  261. data/docs/assets/{getting-started.md.2ioiTe-B.js → getting-started.md.DdQLmU3C.js} +2 -2
  262. data/docs/assets/initial-home-page.DNIaYmgP.png +0 -0
  263. data/docs/assets/new-post-editor.DrHr-5oh.png +0 -0
  264. data/docs/assets/new-post-home-page.Bm34lyMg.png +0 -0
  265. data/docs/assets/{recipes_migrations.md.DPN3gQE3.js → recipes_migrations.md.CTcnWDJF.js} +1 -1
  266. data/docs/assets/styled-form-with-server-side-violations.Bjxd8Dpv.png +0 -0
  267. data/docs/assets/styled-form-with-violations.Bv_sa9tg.png +0 -0
  268. data/docs/assets/styled-home-page-with-posts.Dd4kG89D.png +0 -0
  269. data/docs/assets/styled-home-page.BzdI7dWz.png +0 -0
  270. data/docs/assets/tutorial.md.C4zR5XPG.js +728 -0
  271. data/docs/assets/tutorial.md.C4zR5XPG.lean.js +1 -0
  272. data/docs/assets/welcome-to-brut.VSWzl17-.png +0 -0
  273. data/docs/assets.html +3 -3
  274. data/docs/brut-js/api/AjaxSubmit.html +1 -1
  275. data/docs/brut-js/api/AjaxSubmit.js.html +1 -1
  276. data/docs/brut-js/api/Autosubmit.html +1 -1
  277. data/docs/brut-js/api/Autosubmit.js.html +1 -1
  278. data/docs/brut-js/api/BaseCustomElement.html +1 -1
  279. data/docs/brut-js/api/BaseCustomElement.js.html +1 -1
  280. data/docs/brut-js/api/BrutCustomElements.html +1 -1
  281. data/docs/brut-js/api/BufferedLogger.html +1 -1
  282. data/docs/brut-js/api/ConfirmSubmit.html +18 -10
  283. data/docs/brut-js/api/ConfirmSubmit.js.html +29 -8
  284. data/docs/brut-js/api/ConfirmationDialog.html +1 -1
  285. data/docs/brut-js/api/ConfirmationDialog.js.html +1 -1
  286. data/docs/brut-js/api/ConstraintViolationMessage.html +1 -1
  287. data/docs/brut-js/api/ConstraintViolationMessage.js.html +1 -1
  288. data/docs/brut-js/api/ConstraintViolationMessages.html +1 -1
  289. data/docs/brut-js/api/ConstraintViolationMessages.js.html +1 -1
  290. data/docs/brut-js/api/CopyToClipboard.html +1 -1
  291. data/docs/brut-js/api/CopyToClipboard.js.html +1 -1
  292. data/docs/brut-js/api/Form.html +1 -1
  293. data/docs/brut-js/api/Form.js.html +1 -1
  294. data/docs/brut-js/api/I18nTranslation.html +1 -1
  295. data/docs/brut-js/api/I18nTranslation.js.html +1 -1
  296. data/docs/brut-js/api/LocaleDetection.html +1 -1
  297. data/docs/brut-js/api/LocaleDetection.js.html +1 -1
  298. data/docs/brut-js/api/Logger.html +1 -1
  299. data/docs/brut-js/api/Logger.js.html +1 -1
  300. data/docs/brut-js/api/Message.html +1 -1
  301. data/docs/brut-js/api/Message.js.html +1 -1
  302. data/docs/brut-js/api/PrefixedLogger.html +1 -1
  303. data/docs/brut-js/api/RichString.html +1 -1
  304. data/docs/brut-js/api/RichString.js.html +1 -1
  305. data/docs/brut-js/api/Tabs.html +1 -1
  306. data/docs/brut-js/api/Tabs.js.html +1 -1
  307. data/docs/brut-js/api/Tracing.html +1 -1
  308. data/docs/brut-js/api/Tracing.js.html +1 -1
  309. data/docs/brut-js/api/external-CustomElementRegistry.html +1 -1
  310. data/docs/brut-js/api/external-Performance.html +1 -1
  311. data/docs/brut-js/api/external-Promise.html +1 -1
  312. data/docs/brut-js/api/external-ValidityState.html +1 -1
  313. data/docs/brut-js/api/external-Window.html +1 -1
  314. data/docs/brut-js/api/external-fetch.html +1 -1
  315. data/docs/brut-js/api/global.html +1 -1
  316. data/docs/brut-js/api/index.html +1 -1
  317. data/docs/brut-js/api/index.js.html +1 -1
  318. data/docs/brut-js/api/module-testing.html +1 -1
  319. data/docs/brut-js/api/testing.AssetMetadata.html +1 -1
  320. data/docs/brut-js/api/testing.AssetMetadataLoader.html +1 -1
  321. data/docs/brut-js/api/testing.CustomElementTest.html +1 -1
  322. data/docs/brut-js/api/testing.DOMCreator.html +1 -1
  323. data/docs/brut-js/api/testing_AssetMetadata.js.html +1 -1
  324. data/docs/brut-js/api/testing_AssetMetadataLoader.js.html +1 -1
  325. data/docs/brut-js/api/testing_CustomElementTest.js.html +1 -1
  326. data/docs/brut-js/api/testing_DOMCreator.js.html +1 -1
  327. data/docs/brut-js/api/testing_index.js.html +1 -1
  328. data/docs/brut-js.html +3 -3
  329. data/docs/business-logic.html +3 -3
  330. data/docs/cli.html +3 -3
  331. data/docs/components.html +7 -7
  332. data/docs/configuration.html +5 -5
  333. data/docs/css.html +3 -3
  334. data/docs/custom-element-tests.html +3 -3
  335. data/docs/database-access.html +3 -3
  336. data/docs/database-schema.html +5 -5
  337. data/docs/deployment.html +3 -3
  338. data/docs/dev-environment.html +3 -3
  339. data/docs/dir-structure.html +3 -3
  340. data/docs/doc-conventions.html +3 -3
  341. data/docs/end-to-end-tests.html +3 -3
  342. data/docs/features.html +3 -3
  343. data/docs/flash-and-session.html +3 -3
  344. data/docs/form-constraints.html +3 -3
  345. data/docs/forms.html +5 -5
  346. data/docs/getting-started.html +6 -6
  347. data/docs/handlers.html +3 -3
  348. data/docs/hashmap.json +1 -1
  349. data/docs/hooks.html +3 -3
  350. data/docs/i18n.html +3 -3
  351. data/docs/index.html +3 -3
  352. data/docs/instrumentation.html +3 -3
  353. data/docs/javascript.html +3 -3
  354. data/docs/jobs.html +3 -3
  355. data/docs/keyword-injection.html +3 -3
  356. data/docs/layouts.html +3 -3
  357. data/docs/lsp.html +3 -3
  358. data/docs/markdown-examples.html +3 -3
  359. data/docs/middleware.html +3 -3
  360. data/docs/overview.html +3 -3
  361. data/docs/pages.html +3 -3
  362. data/docs/recipes/alternate-layouts.html +3 -3
  363. data/docs/recipes/authentication.html +3 -3
  364. data/docs/recipes/blank-layouts.html +3 -3
  365. data/docs/recipes/custom-flash.html +3 -3
  366. data/docs/recipes/indexed-forms.html +3 -3
  367. data/docs/recipes/migrations.html +5 -5
  368. data/docs/recipes/text-field-component.html +3 -3
  369. data/docs/roadmap.html +3 -3
  370. data/docs/routes.html +3 -3
  371. data/docs/security.html +3 -3
  372. data/docs/seed-data.html +3 -3
  373. data/docs/space-time-continuum.html +3 -3
  374. data/docs/tutorial.html +732 -5
  375. data/docs/unit-tests.html +3 -3
  376. data/docs/why.html +3 -3
  377. data/dx/build +45 -9
  378. data/lib/brut/cli/app.rb +1 -1
  379. data/lib/brut/cli/apps/heroku_container_based_deploy.rb +1 -1
  380. data/lib/brut/cli/apps/scaffold.rb +1 -1
  381. data/lib/brut/cli/options.rb +4 -0
  382. data/lib/brut/factory_bot.rb +1 -1
  383. data/lib/brut/framework/app.rb +1 -1
  384. data/lib/brut/framework/config.rb +18 -12
  385. data/lib/brut/framework/mcp.rb +12 -7
  386. data/lib/brut/front_end/csrf_protector.rb +30 -0
  387. data/lib/brut/front_end/form.rb +4 -4
  388. data/lib/brut/front_end/page.rb +1 -1
  389. data/lib/brut/front_end/routing.rb +1 -1
  390. data/lib/brut/front_end.rb +1 -0
  391. data/lib/brut/i18n/base_methods.rb +1 -1
  392. data/lib/brut/instrumentation/logger_span_exporter.rb +1 -1
  393. data/lib/brut/junk_drawer.rb +3 -1
  394. data/lib/brut/rubocop_config.rb +123 -0
  395. data/lib/brut/spec_support/component_support.rb +0 -3
  396. data/lib/brut/spec_support/rspec_setup.rb +2 -2
  397. data/lib/brut/version.rb +1 -1
  398. data/mkbrut/Gemfile.lock +1 -1
  399. data/mkbrut/dx +1 -0
  400. data/mkbrut/lib/mkbrut/app.rb +1 -1
  401. data/mkbrut/lib/mkbrut/cli.rb +1 -1
  402. data/mkbrut/lib/mkbrut/segments/heroku.rb +1 -1
  403. data/mkbrut/lib/mkbrut/version.rb +1 -1
  404. data/mkbrut/mkbrut.gemspec +3 -1
  405. data/mkbrut/templates/Base/app/config/i18n/en/1_defaults.rb +2 -2
  406. data/mkbrut/templates/Base/app/config/i18n/en/2_app.rb +1 -1
  407. data/mkbrut/templates/Base/bin/setup +1 -1
  408. data/mkbrut/templates/segments/Demo/app/src/front_end/components/flash_component.rb +1 -1
  409. data/specs/brut/junk_drawer.spec.rb +4 -0
  410. metadata +92 -35
  411. data/.rspec +0 -3
  412. data/docs/assets/chunks/@localSearchIndexroot.CmtZyrFA.js +0 -1
  413. data/docs/assets/tutorial.md.BIb7XT6j.js +0 -1
  414. data/docs/assets/tutorial.md.BIb7XT6j.lean.js +0 -1
  415. /data/docs/assets/{components.md.DHh-NwKs.lean.js → components.md.Bu80E2Nr.lean.js} +0 -0
  416. /data/docs/assets/{configuration.md.D8Wz3oJU.lean.js → configuration.md.CuIxVsSf.lean.js} +0 -0
  417. /data/docs/assets/{database-schema.md.C5gXexJi.lean.js → database-schema.md.LpmBPVEU.lean.js} +0 -0
  418. /data/docs/assets/{forms.md.BRE85eju.lean.js → forms.md.DnLbzVDa.lean.js} +0 -0
  419. /data/docs/assets/{getting-started.md.2ioiTe-B.lean.js → getting-started.md.DdQLmU3C.lean.js} +0 -0
  420. /data/docs/assets/{recipes_migrations.md.DPN3gQE3.lean.js → recipes_migrations.md.CTcnWDJF.lean.js} +0 -0
@@ -308,9 +308,9 @@ configured in <span class='object_link'><a href="../RouteHooks/CSPNoInlineStyles
308
308
  </div>
309
309
 
310
310
  <div id="footer">
311
- Generated on Mon Jul 21 18:28:18 2025 by
311
+ Generated on Tue Aug 12 16:58:18 2025 by
312
312
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
313
- 0.9.37 (ruby-3.4.4).
313
+ 0.9.37 (ruby-3.4.5).
314
314
  </div>
315
315
 
316
316
  </div>
@@ -326,9 +326,9 @@
326
326
  </div>
327
327
 
328
328
  <div id="footer">
329
- Generated on Mon Jul 21 18:28:19 2025 by
329
+ Generated on Tue Aug 12 16:58:18 2025 by
330
330
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
331
- 0.9.37 (ruby-3.4.4).
331
+ 0.9.37 (ruby-3.4.5).
332
332
  </div>
333
333
 
334
334
  </div>
@@ -389,9 +389,9 @@
389
389
  </div>
390
390
 
391
391
  <div id="footer">
392
- Generated on Mon Jul 21 18:28:18 2025 by
392
+ Generated on Tue Aug 12 16:58:18 2025 by
393
393
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
394
- 0.9.37 (ruby-3.4.4).
394
+ 0.9.37 (ruby-3.4.5).
395
395
  </div>
396
396
 
397
397
  </div>
@@ -344,9 +344,9 @@ the app.</p>
344
344
  </div>
345
345
 
346
346
  <div id="footer">
347
- Generated on Mon Jul 21 18:28:19 2025 by
347
+ Generated on Tue Aug 12 16:58:18 2025 by
348
348
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
349
- 0.9.37 (ruby-3.4.4).
349
+ 0.9.37 (ruby-3.4.5).
350
350
  </div>
351
351
 
352
352
  </div>
@@ -141,9 +141,9 @@
141
141
  </div>
142
142
 
143
143
  <div id="footer">
144
- Generated on Mon Jul 21 18:28:18 2025 by
144
+ Generated on Tue Aug 12 16:58:17 2025 by
145
145
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
146
- 0.9.37 (ruby-3.4.4).
146
+ 0.9.37 (ruby-3.4.5).
147
147
  </div>
148
148
 
149
149
  </div>
@@ -305,9 +305,9 @@
305
305
  </div>
306
306
 
307
307
  <div id="footer">
308
- Generated on Mon Jul 21 18:28:18 2025 by
308
+ Generated on Tue Aug 12 16:58:17 2025 by
309
309
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
310
- 0.9.37 (ruby-3.4.4).
310
+ 0.9.37 (ruby-3.4.5).
311
311
  </div>
312
312
 
313
313
  </div>
@@ -115,9 +115,9 @@
115
115
  </div>
116
116
 
117
117
  <div id="footer">
118
- Generated on Mon Jul 21 18:28:17 2025 by
118
+ Generated on Tue Aug 12 16:58:16 2025 by
119
119
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
120
- 0.9.37 (ruby-3.4.4).
120
+ 0.9.37 (ruby-3.4.5).
121
121
  </div>
122
122
 
123
123
  </div>
@@ -329,9 +329,9 @@ redirect to a non-GET.</p>
329
329
  </div>
330
330
 
331
331
  <div id="footer">
332
- Generated on Mon Jul 21 18:28:17 2025 by
332
+ Generated on Tue Aug 12 16:58:16 2025 by
333
333
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
334
- 0.9.37 (ruby-3.4.4).
334
+ 0.9.37 (ruby-3.4.5).
335
335
  </div>
336
336
 
337
337
  </div>
@@ -651,9 +651,9 @@
651
651
  </div>
652
652
 
653
653
  <div id="footer">
654
- Generated on Mon Jul 21 18:28:18 2025 by
654
+ Generated on Tue Aug 12 16:58:17 2025 by
655
655
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
656
- 0.9.37 (ruby-3.4.4).
656
+ 0.9.37 (ruby-3.4.5).
657
657
  </div>
658
658
 
659
659
  </div>
@@ -486,9 +486,9 @@ considered a valid HTTP status code</p>
486
486
  </div>
487
487
 
488
488
  <div id="footer">
489
- Generated on Mon Jul 21 18:28:18 2025 by
489
+ Generated on Tue Aug 12 16:58:17 2025 by
490
490
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
491
- 0.9.37 (ruby-3.4.4).
491
+ 0.9.37 (ruby-3.4.5).
492
492
  </div>
493
493
 
494
494
  </div>
@@ -274,9 +274,9 @@
274
274
  </div>
275
275
 
276
276
  <div id="footer">
277
- Generated on Mon Jul 21 18:28:18 2025 by
277
+ Generated on Tue Aug 12 16:58:17 2025 by
278
278
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
279
- 0.9.37 (ruby-3.4.4).
279
+ 0.9.37 (ruby-3.4.5).
280
280
  </div>
281
281
 
282
282
  </div>
@@ -308,9 +308,9 @@ inserted into the filename.</p>
308
308
  </div>
309
309
 
310
310
  <div id="footer">
311
- Generated on Mon Jul 21 18:28:17 2025 by
311
+ Generated on Tue Aug 12 16:58:17 2025 by
312
312
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
313
- 0.9.37 (ruby-3.4.4).
313
+ 0.9.37 (ruby-3.4.5).
314
314
  </div>
315
315
 
316
316
  </div>
@@ -125,9 +125,9 @@
125
125
  </div>
126
126
 
127
127
  <div id="footer">
128
- Generated on Mon Jul 21 18:28:18 2025 by
128
+ Generated on Tue Aug 12 16:58:17 2025 by
129
129
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
130
- 0.9.37 (ruby-3.4.4).
130
+ 0.9.37 (ruby-3.4.5).
131
131
  </div>
132
132
 
133
133
  </div>
@@ -278,9 +278,9 @@ represents one that Brut is managing.</p>
278
278
  </div>
279
279
 
280
280
  <div id="footer">
281
- Generated on Mon Jul 21 18:28:19 2025 by
281
+ Generated on Tue Aug 12 16:58:18 2025 by
282
282
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
283
- 0.9.37 (ruby-3.4.4).
283
+ 0.9.37 (ruby-3.4.5).
284
284
  </div>
285
285
 
286
286
  </div>
@@ -282,9 +282,9 @@
282
282
  </div>
283
283
 
284
284
  <div id="footer">
285
- Generated on Mon Jul 21 18:28:18 2025 by
285
+ Generated on Tue Aug 12 16:58:17 2025 by
286
286
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
287
- 0.9.37 (ruby-3.4.4).
287
+ 0.9.37 (ruby-3.4.5).
288
288
  </div>
289
289
 
290
290
  </div>
@@ -314,9 +314,9 @@
314
314
  </div>
315
315
 
316
316
  <div id="footer">
317
- Generated on Mon Jul 21 18:28:18 2025 by
317
+ Generated on Tue Aug 12 16:58:18 2025 by
318
318
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
319
- 0.9.37 (ruby-3.4.4).
319
+ 0.9.37 (ruby-3.4.5).
320
320
  </div>
321
321
 
322
322
  </div>
@@ -366,9 +366,9 @@
366
366
  </div>
367
367
 
368
368
  <div id="footer">
369
- Generated on Mon Jul 21 18:28:18 2025 by
369
+ Generated on Tue Aug 12 16:58:17 2025 by
370
370
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
371
- 0.9.37 (ruby-3.4.4).
371
+ 0.9.37 (ruby-3.4.5).
372
372
  </div>
373
373
 
374
374
  </div>
@@ -115,9 +115,9 @@
115
115
  </div>
116
116
 
117
117
  <div id="footer">
118
- Generated on Mon Jul 21 18:28:17 2025 by
118
+ Generated on Tue Aug 12 16:58:16 2025 by
119
119
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
120
- 0.9.37 (ruby-3.4.4).
120
+ 0.9.37 (ruby-3.4.5).
121
121
  </div>
122
122
 
123
123
  </div>
@@ -771,9 +771,9 @@ inside.</p>
771
771
  </div>
772
772
 
773
773
  <div id="footer">
774
- Generated on Mon Jul 21 18:28:17 2025 by
774
+ Generated on Tue Aug 12 16:58:17 2025 by
775
775
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
776
- 0.9.37 (ruby-3.4.4).
776
+ 0.9.37 (ruby-3.4.5).
777
777
  </div>
778
778
 
779
779
  </div>
@@ -787,9 +787,9 @@ next steps to take.</p>
787
787
  </div>
788
788
 
789
789
  <div id="footer">
790
- Generated on Mon Jul 21 18:28:18 2025 by
790
+ Generated on Tue Aug 12 16:58:17 2025 by
791
791
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
792
- 0.9.37 (ruby-3.4.4).
792
+ 0.9.37 (ruby-3.4.5).
793
793
  </div>
794
794
 
795
795
  </div>
@@ -115,9 +115,9 @@
115
115
  </div>
116
116
 
117
117
  <div id="footer">
118
- Generated on Mon Jul 21 18:28:17 2025 by
118
+ Generated on Tue Aug 12 16:58:16 2025 by
119
119
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
120
- 0.9.37 (ruby-3.4.4).
120
+ 0.9.37 (ruby-3.4.5).
121
121
  </div>
122
122
 
123
123
  </div>
@@ -1302,9 +1302,9 @@ not present in this <code>RequestContext</code>.</p>
1302
1302
  </div>
1303
1303
 
1304
1304
  <div id="footer">
1305
- Generated on Mon Jul 21 18:28:18 2025 by
1305
+ Generated on Tue Aug 12 16:58:17 2025 by
1306
1306
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1307
- 0.9.37 (ruby-3.4.4).
1307
+ 0.9.37 (ruby-3.4.5).
1308
1308
  </div>
1309
1309
 
1310
1310
  </div>
@@ -414,9 +414,9 @@ determine what information is avaiable.</p>
414
414
  </div>
415
415
 
416
416
  <div id="footer">
417
- Generated on Mon Jul 21 18:28:18 2025 by
417
+ Generated on Tue Aug 12 16:58:17 2025 by
418
418
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
419
- 0.9.37 (ruby-3.4.4).
419
+ 0.9.37 (ruby-3.4.5).
420
420
  </div>
421
421
 
422
422
  </div>
@@ -232,9 +232,9 @@
232
232
  </div>
233
233
 
234
234
  <div id="footer">
235
- Generated on Mon Jul 21 18:28:18 2025 by
235
+ Generated on Tue Aug 12 16:58:17 2025 by
236
236
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
237
- 0.9.37 (ruby-3.4.4).
237
+ 0.9.37 (ruby-3.4.5).
238
238
  </div>
239
239
 
240
240
  </div>
@@ -239,9 +239,9 @@ by the temporary use of inline styles.</p>
239
239
  </div>
240
240
 
241
241
  <div id="footer">
242
- Generated on Mon Jul 21 18:28:19 2025 by
242
+ Generated on Tue Aug 12 16:58:18 2025 by
243
243
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
244
- 0.9.37 (ruby-3.4.4).
244
+ 0.9.37 (ruby-3.4.5).
245
245
  </div>
246
246
 
247
247
  </div>
@@ -254,9 +254,9 @@ This is useful for existing apps where you want to migrate to a more secure poli
254
254
  </div>
255
255
 
256
256
  <div id="footer">
257
- Generated on Mon Jul 21 18:28:19 2025 by
257
+ Generated on Tue Aug 12 16:58:18 2025 by
258
258
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
259
- 0.9.37 (ruby-3.4.4).
259
+ 0.9.37 (ruby-3.4.5).
260
260
  </div>
261
261
 
262
262
  </div>
@@ -251,9 +251,9 @@
251
251
  </div>
252
252
 
253
253
  <div id="footer">
254
- Generated on Mon Jul 21 18:28:19 2025 by
254
+ Generated on Tue Aug 12 16:58:18 2025 by
255
255
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
256
- 0.9.37 (ruby-3.4.4).
256
+ 0.9.37 (ruby-3.4.5).
257
257
  </div>
258
258
 
259
259
  </div>
@@ -274,9 +274,9 @@ Ruby's <code>I18n</code> to use it. This will also store the value in the sessi
274
274
  </div>
275
275
 
276
276
  <div id="footer">
277
- Generated on Mon Jul 21 18:28:18 2025 by
277
+ Generated on Tue Aug 12 16:58:17 2025 by
278
278
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
279
- 0.9.37 (ruby-3.4.4).
279
+ 0.9.37 (ruby-3.4.5).
280
280
  </div>
281
281
 
282
282
  </div>
@@ -242,9 +242,9 @@ and strings provided by Rack.</p>
242
242
  </div>
243
243
 
244
244
  <div id="footer">
245
- Generated on Mon Jul 21 18:28:19 2025 by
245
+ Generated on Tue Aug 12 16:58:18 2025 by
246
246
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
247
- 0.9.37 (ruby-3.4.4).
247
+ 0.9.37 (ruby-3.4.5).
248
248
  </div>
249
249
 
250
250
  </div>
@@ -105,9 +105,9 @@
105
105
  </div>
106
106
 
107
107
  <div id="footer">
108
- Generated on Mon Jul 21 18:28:17 2025 by
108
+ Generated on Tue Aug 12 16:58:16 2025 by
109
109
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
110
- 0.9.37 (ruby-3.4.4).
110
+ 0.9.37 (ruby-3.4.5).
111
111
  </div>
112
112
 
113
113
  </div>
@@ -217,9 +217,9 @@
217
217
  </div>
218
218
 
219
219
  <div id="footer">
220
- Generated on Mon Jul 21 18:28:18 2025 by
220
+ Generated on Tue Aug 12 16:58:17 2025 by
221
221
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
222
- 0.9.37 (ruby-3.4.4).
222
+ 0.9.37 (ruby-3.4.5).
223
223
  </div>
224
224
 
225
225
  </div>
@@ -295,9 +295,9 @@
295
295
  </div>
296
296
 
297
297
  <div id="footer">
298
- Generated on Mon Jul 21 18:28:18 2025 by
298
+ Generated on Tue Aug 12 16:58:17 2025 by
299
299
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
300
- 0.9.37 (ruby-3.4.4).
300
+ 0.9.37 (ruby-3.4.5).
301
301
  </div>
302
302
 
303
303
  </div>
@@ -314,9 +314,9 @@
314
314
  </div>
315
315
 
316
316
  <div id="footer">
317
- Generated on Mon Jul 21 18:28:18 2025 by
317
+ Generated on Tue Aug 12 16:58:17 2025 by
318
318
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
319
- 0.9.37 (ruby-3.4.4).
319
+ 0.9.37 (ruby-3.4.5).
320
320
  </div>
321
321
 
322
322
  </div>
@@ -309,9 +309,9 @@
309
309
  </div>
310
310
 
311
311
  <div id="footer">
312
- Generated on Mon Jul 21 18:28:18 2025 by
312
+ Generated on Tue Aug 12 16:58:17 2025 by
313
313
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
314
- 0.9.37 (ruby-3.4.4).
314
+ 0.9.37 (ruby-3.4.5).
315
315
  </div>
316
316
 
317
317
  </div>
@@ -305,9 +305,9 @@
305
305
  </div>
306
306
 
307
307
  <div id="footer">
308
- Generated on Mon Jul 21 18:28:18 2025 by
308
+ Generated on Tue Aug 12 16:58:17 2025 by
309
309
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
310
- 0.9.37 (ruby-3.4.4).
310
+ 0.9.37 (ruby-3.4.5).
311
311
  </div>
312
312
 
313
313
  </div>
@@ -305,9 +305,9 @@
305
305
  </div>
306
306
 
307
307
  <div id="footer">
308
- Generated on Mon Jul 21 18:28:18 2025 by
308
+ Generated on Tue Aug 12 16:58:17 2025 by
309
309
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
310
- 0.9.37 (ruby-3.4.4).
310
+ 0.9.37 (ruby-3.4.5).
311
311
  </div>
312
312
 
313
313
  </div>
@@ -317,9 +317,9 @@
317
317
  </div>
318
318
 
319
319
  <div id="footer">
320
- Generated on Mon Jul 21 18:28:18 2025 by
320
+ Generated on Tue Aug 12 16:58:17 2025 by
321
321
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
322
- 0.9.37 (ruby-3.4.4).
322
+ 0.9.37 (ruby-3.4.5).
323
323
  </div>
324
324
 
325
325
  </div>
@@ -751,9 +751,9 @@
751
751
  </div>
752
752
 
753
753
  <div id="footer">
754
- Generated on Mon Jul 21 18:28:18 2025 by
754
+ Generated on Tue Aug 12 16:58:17 2025 by
755
755
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
756
- 0.9.37 (ruby-3.4.4).
756
+ 0.9.37 (ruby-3.4.5).
757
757
  </div>
758
758
 
759
759
  </div>
@@ -917,9 +917,9 @@
917
917
  </div>
918
918
 
919
919
  <div id="footer">
920
- Generated on Mon Jul 21 18:28:18 2025 by
920
+ Generated on Tue Aug 12 16:58:17 2025 by
921
921
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
922
- 0.9.37 (ruby-3.4.4).
922
+ 0.9.37 (ruby-3.4.5).
923
923
  </div>
924
924
 
925
925
  </div>
@@ -1185,9 +1185,9 @@ the following logic:</p>
1185
1185
  </div>
1186
1186
 
1187
1187
  <div id="footer">
1188
- Generated on Mon Jul 21 18:28:18 2025 by
1188
+ Generated on Tue Aug 12 16:58:17 2025 by
1189
1189
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1190
- 0.9.37 (ruby-3.4.4).
1190
+ 0.9.37 (ruby-3.4.5).
1191
1191
  </div>
1192
1192
 
1193
1193
  </div>
@@ -108,7 +108,7 @@ JavaScript and CSS, and processing form submissions. It contrasts to
108
108
 
109
109
 
110
110
 
111
- <strong class="classes">Classes:</strong> <span class='object_link'><a href="FrontEnd/AssetPathResolver.html" title="Brut::FrontEnd::AssetPathResolver (class)">AssetPathResolver</a></span>, <span class='object_link'><a href="FrontEnd/Component.html" title="Brut::FrontEnd::Component (class)">Component</a></span>, <span class='object_link'><a href="FrontEnd/Download.html" title="Brut::FrontEnd::Download (class)">Download</a></span>, <span class='object_link'><a href="FrontEnd/Flash.html" title="Brut::FrontEnd::Flash (class)">Flash</a></span>, <span class='object_link'><a href="FrontEnd/Form.html" title="Brut::FrontEnd::Form (class)">Form</a></span>, <span class='object_link'><a href="FrontEnd/GenericResponse.html" title="Brut::FrontEnd::GenericResponse (class)">GenericResponse</a></span>, <span class='object_link'><a href="FrontEnd/Handler.html" title="Brut::FrontEnd::Handler (class)">Handler</a></span>, <span class='object_link'><a href="FrontEnd/HttpMethod.html" title="Brut::FrontEnd::HttpMethod (class)">HttpMethod</a></span>, <span class='object_link'><a href="FrontEnd/HttpStatus.html" title="Brut::FrontEnd::HttpStatus (class)">HttpStatus</a></span>, <span class='object_link'><a href="FrontEnd/InlineSvgLocator.html" title="Brut::FrontEnd::InlineSvgLocator (class)">InlineSvgLocator</a></span>, <span class='object_link'><a href="FrontEnd/Layout.html" title="Brut::FrontEnd::Layout (class)">Layout</a></span>, <span class='object_link'><a href="FrontEnd/Middleware.html" title="Brut::FrontEnd::Middleware (class)">Middleware</a></span>, <span class='object_link'><a href="FrontEnd/Page.html" title="Brut::FrontEnd::Page (class)">Page</a></span>, <span class='object_link'><a href="FrontEnd/RequestContext.html" title="Brut::FrontEnd::RequestContext (class)">RequestContext</a></span>, <span class='object_link'><a href="FrontEnd/RouteHook.html" title="Brut::FrontEnd::RouteHook (class)">RouteHook</a></span>, <span class='object_link'><a href="FrontEnd/Routing.html" title="Brut::FrontEnd::Routing (class)">Routing</a></span>, <span class='object_link'><a href="FrontEnd/Session.html" title="Brut::FrontEnd::Session (class)">Session</a></span>
111
+ <strong class="classes">Classes:</strong> <span class='object_link'><a href="FrontEnd/AssetPathResolver.html" title="Brut::FrontEnd::AssetPathResolver (class)">AssetPathResolver</a></span>, <span class='object_link'><a href="FrontEnd/Component.html" title="Brut::FrontEnd::Component (class)">Component</a></span>, <span class='object_link'><a href="FrontEnd/CsrfProtector.html" title="Brut::FrontEnd::CsrfProtector (class)">CsrfProtector</a></span>, <span class='object_link'><a href="FrontEnd/Download.html" title="Brut::FrontEnd::Download (class)">Download</a></span>, <span class='object_link'><a href="FrontEnd/Flash.html" title="Brut::FrontEnd::Flash (class)">Flash</a></span>, <span class='object_link'><a href="FrontEnd/Form.html" title="Brut::FrontEnd::Form (class)">Form</a></span>, <span class='object_link'><a href="FrontEnd/GenericResponse.html" title="Brut::FrontEnd::GenericResponse (class)">GenericResponse</a></span>, <span class='object_link'><a href="FrontEnd/Handler.html" title="Brut::FrontEnd::Handler (class)">Handler</a></span>, <span class='object_link'><a href="FrontEnd/HttpMethod.html" title="Brut::FrontEnd::HttpMethod (class)">HttpMethod</a></span>, <span class='object_link'><a href="FrontEnd/HttpStatus.html" title="Brut::FrontEnd::HttpStatus (class)">HttpStatus</a></span>, <span class='object_link'><a href="FrontEnd/InlineSvgLocator.html" title="Brut::FrontEnd::InlineSvgLocator (class)">InlineSvgLocator</a></span>, <span class='object_link'><a href="FrontEnd/Layout.html" title="Brut::FrontEnd::Layout (class)">Layout</a></span>, <span class='object_link'><a href="FrontEnd/Middleware.html" title="Brut::FrontEnd::Middleware (class)">Middleware</a></span>, <span class='object_link'><a href="FrontEnd/Page.html" title="Brut::FrontEnd::Page (class)">Page</a></span>, <span class='object_link'><a href="FrontEnd/RequestContext.html" title="Brut::FrontEnd::RequestContext (class)">RequestContext</a></span>, <span class='object_link'><a href="FrontEnd/RouteHook.html" title="Brut::FrontEnd::RouteHook (class)">RouteHook</a></span>, <span class='object_link'><a href="FrontEnd/Routing.html" title="Brut::FrontEnd::Routing (class)">Routing</a></span>, <span class='object_link'><a href="FrontEnd/Session.html" title="Brut::FrontEnd::Session (class)">Session</a></span>
112
112
 
113
113
 
114
114
  </p>
@@ -124,9 +124,9 @@ JavaScript and CSS, and processing form submissions. It contrasts to
124
124
  </div>
125
125
 
126
126
  <div id="footer">
127
- Generated on Mon Jul 21 18:28:17 2025 by
127
+ Generated on Tue Aug 12 16:58:16 2025 by
128
128
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
129
- 0.9.37 (ruby-3.4.4).
129
+ 0.9.37 (ruby-3.4.5).
130
130
  </div>
131
131
 
132
132
  </div>
@@ -672,7 +672,7 @@ has pluralizations and no count: was given</p>
672
672
  <span class='id identifier rubyid_block_contents'>block_contents</span> <span class='op'>=</span> <span class='id identifier rubyid_safe'>safe</span><span class='lparen'>(</span><span class='id identifier rubyid_capture'>capture</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span><span class='rparen'>)</span>
673
673
  <span class='id identifier rubyid_interpolated_values'>interpolated_values</span><span class='lbracket'>[</span><span class='symbol'>:block</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_block_contents'>block_contents</span>
674
674
  <span class='kw'>end</span>
675
- <span class='id identifier rubyid_t_direct'>t_direct</span><span class='lparen'>(</span><span class='id identifier rubyid_keys_to_check'>keys_to_check</span><span class='comma'>,</span><span class='op'>**</span><span class='id identifier rubyid_interpolated_values'>interpolated_values</span><span class='period'>.</span><span class='id identifier rubyid_merge'>merge</span><span class='lparen'>(</span><span class='label'>key_given:</span> <span class='id identifier rubyid_key'>key</span><span class='rparen'>)</span><span class='rparen'>)</span>
675
+ <span class='id identifier rubyid_t_direct'>t_direct</span><span class='lparen'>(</span><span class='id identifier rubyid_keys_to_check'>keys_to_check</span><span class='comma'>,</span><span class='op'>**</span><span class='id identifier rubyid_interpolated_values'>interpolated_values</span><span class='comma'>,</span> <span class='label'>key_given:</span> <span class='id identifier rubyid_key'>key</span><span class='rparen'>)</span>
676
676
  <span class='kw'>rescue</span> <span class='const'><span class='object_link'><a href="../I18n.html" title="Brut::I18n (module)">I18n</a></span></span><span class='op'>::</span><span class='const'>MissingInterpolationArgument</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_ex'>ex</span>
677
677
  <span class='kw'>if</span> <span class='id identifier rubyid_ex'>ex</span><span class='period'>.</span><span class='id identifier rubyid_key'>key</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>block</span><span class='tstring_end'>&quot;</span></span>
678
678
  <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>One of the keys </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_key'>key</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>, </span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_content'> contained a %{block} interpolation value: &#39;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_ex'>ex</span><span class='period'>.</span><span class='id identifier rubyid_string'>string</span><span class='embexpr_end'>}</span><span class='tstring_content'>&#39;. This means you must yield a block to `t`</span><span class='tstring_end'>&quot;</span></span>
@@ -921,9 +921,9 @@ has pluralizations and no count: was given</p>
921
921
  </div>
922
922
 
923
923
  <div id="footer">
924
- Generated on Mon Jul 21 18:28:17 2025 by
924
+ Generated on Tue Aug 12 16:58:16 2025 by
925
925
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
926
- 0.9.37 (ruby-3.4.4).
926
+ 0.9.37 (ruby-3.4.5).
927
927
  </div>
928
928
 
929
929
  </div>
@@ -292,9 +292,9 @@ their values are not necessarily HTML-escaped.</p>
292
292
  </div>
293
293
 
294
294
  <div id="footer">
295
- Generated on Mon Jul 21 18:28:17 2025 by
295
+ Generated on Tue Aug 12 16:58:16 2025 by
296
296
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
297
- 0.9.37 (ruby-3.4.4).
297
+ 0.9.37 (ruby-3.4.5).
298
298
  </div>
299
299
 
300
300
  </div>
@@ -292,9 +292,9 @@ their values are not necessarily HTML-escaped.</p>
292
292
  </div>
293
293
 
294
294
  <div id="footer">
295
- Generated on Mon Jul 21 18:28:17 2025 by
295
+ Generated on Tue Aug 12 16:58:16 2025 by
296
296
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
297
- 0.9.37 (ruby-3.4.4).
297
+ 0.9.37 (ruby-3.4.5).
298
298
  </div>
299
299
 
300
300
  </div>