plutonium 0.50.0 → 0.52.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 (201) hide show
  1. checksums.yaml +4 -4
  2. data/.claude/skills/plutonium/SKILL.md +85 -102
  3. data/.claude/skills/plutonium-app/SKILL.md +574 -0
  4. data/.claude/skills/plutonium-auth/SKILL.md +167 -302
  5. data/.claude/skills/plutonium-behavior/SKILL.md +838 -0
  6. data/.claude/skills/plutonium-resource/SKILL.md +1176 -0
  7. data/.claude/skills/plutonium-tenancy/SKILL.md +674 -0
  8. data/.claude/skills/plutonium-testing/SKILL.md +9 -6
  9. data/.claude/skills/plutonium-ui/SKILL.md +900 -0
  10. data/CHANGELOG.md +44 -2
  11. data/Rakefile +2 -1
  12. data/app/assets/plutonium.css +1 -11
  13. data/app/assets/plutonium.js +1010 -1214
  14. data/app/assets/plutonium.js.map +3 -3
  15. data/app/assets/plutonium.min.js +52 -51
  16. data/app/assets/plutonium.min.js.map +3 -3
  17. data/docs/.vitepress/config.ts +38 -29
  18. data/docs/.vitepress/theme/components/HomeAudienceSplit.vue +53 -0
  19. data/docs/.vitepress/theme/components/HomeCta.vue +108 -0
  20. data/docs/.vitepress/theme/components/HomeHero.vue +70 -0
  21. data/docs/.vitepress/theme/components/HomeInTheBox.vue +74 -0
  22. data/docs/.vitepress/theme/components/HomePillars.vue +42 -0
  23. data/docs/.vitepress/theme/components/HomeStopWriting.vue +49 -0
  24. data/docs/.vitepress/theme/components/HomeWalkthrough.vue +111 -0
  25. data/docs/.vitepress/theme/components/SectionLanding.vue +115 -0
  26. data/docs/.vitepress/theme/custom.css +144 -0
  27. data/docs/.vitepress/theme/index.ts +58 -1
  28. data/docs/getting-started/index.md +33 -57
  29. data/docs/getting-started/installation.md +37 -80
  30. data/docs/getting-started/tutorial/02-first-resource.md +17 -8
  31. data/docs/getting-started/tutorial/03-authentication.md +31 -23
  32. data/docs/getting-started/tutorial/05-custom-actions.md +9 -4
  33. data/docs/getting-started/tutorial/06-nested-resources.md +7 -1
  34. data/docs/getting-started/tutorial/07-author-portal.md +8 -0
  35. data/docs/getting-started/tutorial/08-customizing-ui.md +4 -0
  36. data/docs/getting-started/tutorial/index.md +4 -5
  37. data/docs/guides/adding-resources.md +66 -377
  38. data/docs/guides/authentication.md +98 -462
  39. data/docs/guides/authorization.md +124 -370
  40. data/docs/guides/creating-packages.md +93 -298
  41. data/docs/guides/custom-actions.md +126 -441
  42. data/docs/guides/customizing-ui.md +258 -0
  43. data/docs/guides/index.md +49 -52
  44. data/docs/guides/multi-tenancy.md +123 -186
  45. data/docs/guides/nested-resources.md +137 -396
  46. data/docs/guides/search-filtering.md +127 -238
  47. data/docs/guides/testing.md +10 -5
  48. data/docs/guides/theming.md +168 -405
  49. data/docs/guides/troubleshooting.md +5 -3
  50. data/docs/guides/user-invites.md +112 -425
  51. data/docs/guides/user-profile.md +82 -241
  52. data/docs/index.md +10 -219
  53. data/docs/public/asciinema/home-scaffold.cast +305 -0
  54. data/docs/public/images/guides/custom-actions-bulk.png +0 -0
  55. data/docs/public/images/guides/multi-tenancy-dashboard.png +0 -0
  56. data/docs/public/images/guides/multi-tenancy-welcome.png +0 -0
  57. data/docs/public/images/guides/nested-inputs.png +0 -0
  58. data/docs/public/images/guides/nested-resources-tab.png +0 -0
  59. data/docs/public/images/guides/search-filtering-index.png +0 -0
  60. data/docs/public/images/guides/search-filtering-panel.png +0 -0
  61. data/docs/public/images/guides/theming-after.png +0 -0
  62. data/docs/public/images/guides/theming-before.png +0 -0
  63. data/docs/public/images/guides/user-invites-landing.png +0 -0
  64. data/docs/public/images/guides/user-profile-edit.png +0 -0
  65. data/docs/public/images/guides/user-profile-show.png +0 -0
  66. data/docs/public/images/home-index.png +0 -0
  67. data/docs/public/images/home-new.png +0 -0
  68. data/docs/public/images/home-show.png +0 -0
  69. data/docs/public/images/tutorial/02-empty-index.png +0 -0
  70. data/docs/public/images/tutorial/02-index-with-posts.png +0 -0
  71. data/docs/public/images/tutorial/02-new-form-modal.png +0 -0
  72. data/docs/public/images/tutorial/02-new-form.png +0 -0
  73. data/docs/public/images/tutorial/03-create-account.png +0 -0
  74. data/docs/public/images/tutorial/03-login.png +0 -0
  75. data/docs/public/images/tutorial/04-admin-index.png +0 -0
  76. data/docs/public/images/tutorial/05-actions-menu.png +0 -0
  77. data/docs/public/images/tutorial/05-row-actions.png +0 -0
  78. data/docs/public/images/tutorial/06-comments-tab.png +0 -0
  79. data/docs/public/images/tutorial/06-post-with-comments.png +0 -0
  80. data/docs/public/images/tutorial/07-author-dashboard.png +0 -0
  81. data/docs/public/images/tutorial/07-author-portal.png +0 -0
  82. data/docs/public/images/tutorial/08-customized-index.png +0 -0
  83. data/docs/reference/app/generators.md +517 -0
  84. data/docs/reference/app/index.md +158 -0
  85. data/docs/reference/app/packages.md +146 -0
  86. data/docs/reference/app/portals.md +377 -0
  87. data/docs/reference/auth/accounts.md +229 -0
  88. data/docs/reference/auth/index.md +88 -0
  89. data/docs/reference/auth/profile.md +185 -0
  90. data/docs/reference/behavior/controllers.md +395 -0
  91. data/docs/reference/behavior/index.md +22 -0
  92. data/docs/reference/behavior/interactions.md +341 -0
  93. data/docs/reference/behavior/policies.md +417 -0
  94. data/docs/reference/index.md +67 -48
  95. data/docs/reference/resource/actions.md +423 -0
  96. data/docs/reference/resource/definition.md +508 -0
  97. data/docs/reference/resource/index.md +50 -0
  98. data/docs/reference/resource/model.md +348 -0
  99. data/docs/reference/resource/query.md +305 -0
  100. data/docs/reference/tenancy/entity-scoping.md +368 -0
  101. data/docs/reference/tenancy/index.md +36 -0
  102. data/docs/reference/tenancy/invites.md +400 -0
  103. data/docs/reference/tenancy/nested-resources.md +267 -0
  104. data/docs/reference/testing/index.md +287 -0
  105. data/docs/reference/ui/assets.md +400 -0
  106. data/docs/reference/ui/components.md +165 -0
  107. data/docs/reference/ui/displays.md +104 -0
  108. data/docs/reference/ui/forms.md +284 -0
  109. data/docs/reference/ui/index.md +30 -0
  110. data/docs/reference/ui/layouts.md +106 -0
  111. data/docs/reference/ui/pages.md +189 -0
  112. data/docs/reference/ui/tables.md +121 -0
  113. data/docs/superpowers/plans/2026-05-15-public-pages-overhaul.md +1648 -0
  114. data/docs/superpowers/plans/2026-05-15-public-pages-overhaul.md.tasks.json +109 -0
  115. data/docs/superpowers/specs/2026-05-09-typeahead-endpoint-design.md +203 -0
  116. data/docs/superpowers/specs/2026-05-12-skill-compaction-design.md +99 -0
  117. data/docs/superpowers/specs/2026-05-13-docs-restructure-design.md +186 -0
  118. data/docs/superpowers/specs/2026-05-15-public-pages-overhaul-design.md +263 -0
  119. data/gemfiles/rails_7.gemfile.lock +1 -1
  120. data/gemfiles/rails_8.0.gemfile.lock +1 -1
  121. data/gemfiles/rails_8.1.gemfile.lock +1 -1
  122. data/lib/generators/pu/core/assets/assets_generator.rb +10 -0
  123. data/lib/generators/pu/core/update/update_generator.rb +0 -20
  124. data/lib/generators/pu/invites/install_generator.rb +45 -0
  125. data/lib/generators/pu/invites/templates/packages/invites/app/controllers/invites/user_invitations_controller.rb.tt +1 -0
  126. data/lib/generators/pu/profile/conn_generator.rb +2 -2
  127. data/lib/generators/pu/res/conn/conn_generator.rb +33 -6
  128. data/lib/generators/pu/res/model/templates/model.rb.tt +4 -0
  129. data/lib/generators/pu/rodauth/account_generator.rb +2 -1
  130. data/lib/generators/pu/rodauth/admin_generator.rb +0 -2
  131. data/lib/generators/pu/rodauth/migration_generator.rb +0 -2
  132. data/lib/generators/pu/rodauth/views_generator.rb +0 -2
  133. data/lib/generators/pu/saas/membership/USAGE +4 -1
  134. data/lib/generators/pu/saas/setup_generator.rb +16 -4
  135. data/lib/generators/pu/saas/welcome/templates/app/controllers/welcome_controller.rb.tt +1 -1
  136. data/lib/plutonium/definition/base.rb +1 -1
  137. data/lib/plutonium/definition/{views.rb → index_views.rb} +21 -20
  138. data/lib/plutonium/helpers/turbo_helper.rb +30 -0
  139. data/lib/plutonium/helpers/turbo_stream_actions_helper.rb +14 -0
  140. data/lib/plutonium/resource/controller.rb +1 -0
  141. data/lib/plutonium/resource/controllers/crud_actions.rb +23 -5
  142. data/lib/plutonium/resource/controllers/interactive_actions.rb +3 -3
  143. data/lib/plutonium/resource/controllers/typeahead.rb +180 -0
  144. data/lib/plutonium/resource/policy.rb +7 -0
  145. data/lib/plutonium/routing/mapper_extensions.rb +15 -0
  146. data/lib/plutonium/ui/component/methods.rb +5 -0
  147. data/lib/plutonium/ui/form/base.rb +23 -3
  148. data/lib/plutonium/ui/form/components/json.rb +58 -0
  149. data/lib/plutonium/ui/form/components/resource_select.rb +62 -8
  150. data/lib/plutonium/ui/form/components/secure_association.rb +103 -22
  151. data/lib/plutonium/ui/form/concerns/typeahead_attributes.rb +83 -0
  152. data/lib/plutonium/ui/form/interaction.rb +1 -1
  153. data/lib/plutonium/ui/form/resource.rb +0 -4
  154. data/lib/plutonium/ui/form/theme.rb +1 -1
  155. data/lib/plutonium/ui/grid/resource.rb +1 -1
  156. data/lib/plutonium/ui/layout/base.rb +1 -0
  157. data/lib/plutonium/ui/page/base.rb +0 -7
  158. data/lib/plutonium/ui/page/edit.rb +1 -1
  159. data/lib/plutonium/ui/page/index.rb +4 -4
  160. data/lib/plutonium/ui/page/new.rb +1 -1
  161. data/lib/plutonium/ui/table/components/filter_form.rb +12 -4
  162. data/lib/plutonium/ui/table/resource.rb +1 -1
  163. data/lib/plutonium/version.rb +1 -1
  164. data/lib/plutonium.rb +8 -0
  165. data/lib/tasks/release.rake +15 -1
  166. data/package.json +13 -10
  167. data/src/css/slim_select.css +4 -0
  168. data/src/js/controllers/form_controller.js +5 -4
  169. data/src/js/controllers/slim_select_controller.js +61 -0
  170. data/src/js/turbo/turbo_actions.js +33 -0
  171. data/yarn.lock +661 -544
  172. metadata +86 -33
  173. data/.claude/skills/plutonium-assets/SKILL.md +0 -512
  174. data/.claude/skills/plutonium-controller/SKILL.md +0 -396
  175. data/.claude/skills/plutonium-create-resource/SKILL.md +0 -303
  176. data/.claude/skills/plutonium-definition/SKILL.md +0 -1223
  177. data/.claude/skills/plutonium-entity-scoping/SKILL.md +0 -317
  178. data/.claude/skills/plutonium-forms/SKILL.md +0 -465
  179. data/.claude/skills/plutonium-installation/SKILL.md +0 -331
  180. data/.claude/skills/plutonium-interaction/SKILL.md +0 -413
  181. data/.claude/skills/plutonium-invites/SKILL.md +0 -408
  182. data/.claude/skills/plutonium-model/SKILL.md +0 -440
  183. data/.claude/skills/plutonium-nested-resources/SKILL.md +0 -360
  184. data/.claude/skills/plutonium-package/SKILL.md +0 -198
  185. data/.claude/skills/plutonium-policy/SKILL.md +0 -456
  186. data/.claude/skills/plutonium-portal/SKILL.md +0 -410
  187. data/.claude/skills/plutonium-views/SKILL.md +0 -651
  188. data/docs/reference/assets/index.md +0 -496
  189. data/docs/reference/controller/index.md +0 -412
  190. data/docs/reference/definition/actions.md +0 -462
  191. data/docs/reference/definition/fields.md +0 -383
  192. data/docs/reference/definition/index.md +0 -326
  193. data/docs/reference/definition/query.md +0 -351
  194. data/docs/reference/generators/index.md +0 -648
  195. data/docs/reference/interaction/index.md +0 -449
  196. data/docs/reference/model/features.md +0 -248
  197. data/docs/reference/model/index.md +0 -218
  198. data/docs/reference/policy/index.md +0 -456
  199. data/docs/reference/portal/index.md +0 -379
  200. data/docs/reference/views/forms.md +0 -411
  201. data/docs/reference/views/index.md +0 -544
@@ -0,0 +1,305 @@
1
+ {"version": 2, "width": 113, "height": 39, "timestamp": 1779212205, "idle_time_limit": 2.0, "env": {"SHELL": "/bin/zsh", "TERM": "xterm-256color"}, "title": "Plutonium scaffold"}
2
+ [1.192754, "o", "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m \r \r"]
3
+ [1.193966, "o", "\u001b]2;stefan@Stefans-MacBook-Pro:/private/tmp/plutonium-demo\u0007\u001b]1;..lutonium-demo\u0007"]
4
+ [1.197488, "o", "\u001b]7;file://Stefans-MacBook-Pro.local/private/tmp/plutonium-demo\u001b\\"]
5
+ [1.214029, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\u001b[01;32m➜ \u001b[36mplutonium-demo\u001b[00m \u001b[K"]
6
+ [1.214221, "o", "\u001b[?1h\u001b=\u001b[?2004h"]
7
+ [2.128758, "o", "c"]
8
+ [2.129442, "o", "\bcd"]
9
+ [2.130133, "o", " b"]
10
+ [2.130577, "o", "l"]
11
+ [2.130969, "o", "o"]
12
+ [2.132341, "o", "g"]
13
+ [2.132549, "o", "\b\b\b\b\b\b\b\u001b[7mc\u001b[7md\u001b[7m \u001b[7mb\u001b[7ml\u001b[7mo\u001b[7mg\u001b[27m"]
14
+ [2.711151, "o", "\b\b\b\b\b\b\b\u001b[27mc\u001b[27md\u001b[27m \u001b[27mb\u001b[27ml\u001b[27mo\u001b[27mg"]
15
+ [2.717305, "o", "\b\b\b\b\b\b\b\u001b[32mc\u001b[32md\u001b[39m \u001b[4mb\u001b[4ml\u001b[4mo\u001b[4mg\u001b[24m"]
16
+ [2.717832, "o", "\u001b[?1l\u001b>"]
17
+ [2.718157, "o", "\u001b[?2004l"]
18
+ [2.720955, "o", "\r\r\n"]
19
+ [2.722326, "o", "\u001b]2;cd blog\u0007\u001b]1;cd\u0007"]
20
+ [2.733953, "o", "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m \r \r"]
21
+ [2.734571, "o", "\u001b]2;stefan@Stefans-MacBook-Pro:/private/tmp/plutonium-demo/blog\u0007\u001b]1;..ium-demo/blog\u0007"]
22
+ [2.736038, "o", "\u001b]7;file://Stefans-MacBook-Pro.local/private/tmp/plutonium-demo/blog\u001b\\"]
23
+ [2.745393, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\u001b[01;32m➜ \u001b[36mblog\u001b[00m \u001b[K"]
24
+ [2.745447, "o", "\u001b[?1h\u001b=\u001b[?2004h"]
25
+ [2.773472, "o", "\r\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\u001b[01;32m➜ \u001b[36mblog\u001b[00m \u001b[01;34mgit:(\u001b[31mmain\u001b[34m) \u001b[33m✗\u001b[00m \u001b[K"]
26
+ [6.557113, "o", "r"]
27
+ [6.558746, "o", "\bra"]
28
+ [6.559807, "o", "i"]
29
+ [6.56066, "o", "l"]
30
+ [6.561405, "o", "s"]
31
+ [6.562203, "o", " g"]
32
+ [6.563913, "o", " p"]
33
+ [6.564629, "o", "u"]
34
+ [6.565341, "o", ":"]
35
+ [6.565944, "o", "r"]
36
+ [6.566497, "o", "e"]
37
+ [6.567019, "o", "s"]
38
+ [6.567528, "o", ":"]
39
+ [6.568072, "o", "s"]
40
+ [6.568483, "o", "c"]
41
+ [6.568943, "o", "a"]
42
+ [6.569368, "o", "f"]
43
+ [6.569746, "o", "f"]
44
+ [6.570129, "o", "o"]
45
+ [6.570499, "o", "l"]
46
+ [6.570902, "o", "d"]
47
+ [6.571371, "o", " P"]
48
+ [6.571812, "o", "o"]
49
+ [6.572283, "o", "s"]
50
+ [6.572896, "o", "t"]
51
+ [6.573436, "o", " t"]
52
+ [6.574039, "o", "i"]
53
+ [6.574515, "o", "t"]
54
+ [6.57494, "o", "l"]
55
+ [6.575315, "o", "e"]
56
+ [6.575691, "o", ":"]
57
+ [6.576056, "o", "s"]
58
+ [6.576381, "o", "t"]
59
+ [6.576725, "o", "r"]
60
+ [6.577219, "o", "i"]
61
+ [6.577676, "o", "n"]
62
+ [6.57809, "o", "g"]
63
+ [6.57861, "o", " b"]
64
+ [6.579192, "o", "o"]
65
+ [6.579631, "o", "d"]
66
+ [6.580083, "o", "y"]
67
+ [6.580262, "o", ":"]
68
+ [6.580404, "o", "t"]
69
+ [6.580555, "o", "e"]
70
+ [6.580685, "o", "x"]
71
+ [6.580812, "o", "t"]
72
+ [6.580948, "o", " p"]
73
+ [6.581074, "o", "u"]
74
+ [6.581207, "o", "b"]
75
+ [6.581339, "o", "l"]
76
+ [6.581469, "o", "i"]
77
+ [6.581601, "o", "s"]
78
+ [6.581923, "o", "h"]
79
+ [6.582151, "o", "e"]
80
+ [6.582359, "o", "d"]
81
+ [6.582637, "o", "_"]
82
+ [6.583036, "o", "a"]
83
+ [6.583209, "o", "t"]
84
+ [6.583697, "o", ":"]
85
+ [6.583846, "o", "d"]
86
+ [6.584007, "o", "a"]
87
+ [6.584291, "o", "t"]
88
+ [6.584446, "o", "e"]
89
+ [6.584578, "o", "t"]
90
+ [6.584715, "o", "i"]
91
+ [6.584847, "o", "m"]
92
+ [6.584981, "o", "e"]
93
+ [6.585117, "o", " -"]
94
+ [6.585246, "o", "-"]
95
+ [6.585388, "o", "d"]
96
+ [6.585507, "o", "e"]
97
+ [6.585633, "o", "s"]
98
+ [6.58576, "o", "t"]
99
+ [6.58612, "o", "="]
100
+ [6.586251, "o", "m"]
101
+ [6.586382, "o", "a"]
102
+ [6.586509, "o", "i"]
103
+ [6.586676, "o", "n"]
104
+ [6.586782, "o", "_"]
105
+ [6.586903, "o", "a"]
106
+ [6.587061, "o", "p"]
107
+ [6.587208, "o", "p"]
108
+ [6.587382, "o", "\u001b[89D\u001b[7mr\u001b[7ma\u001b[7mi\u001b[7ml\u001b[7ms\u001b[7m \u001b[7mg\u001b[7m \u001b[7mp\u001b[7mu\u001b[7m:\u001b[7mr\u001b[7me\u001b[7ms\u001b[7m:\u001b[7ms\u001b[7mc\u001b[7ma\u001b[7mf\u001b[7mf\u001b[7mo\u001b[7ml\u001b[7md\u001b[7m \u001b[7mP\u001b[7mo\u001b[7ms\u001b[7mt\u001b[7m \u001b[7mt\u001b[7mi\u001b[7mt\u001b[7ml\u001b[7me\u001b[7m:\u001b[7ms\u001b[7mt\u001b[7mr\u001b[7mi\u001b[7mn\u001b[7mg\u001b[7m \u001b[7mb\u001b[7mo\u001b[7md\u001b[7my\u001b[7m:\u001b[7mt\u001b[7me\u001b[7mx\u001b[7mt\u001b[7m \u001b[7mp\u001b[7mu\u001b[7mb\u001b[7ml\u001b[7mi\u001b[7ms\u001b[7mh\u001b[7me\u001b[7md\u001b[7m_\u001b[7ma\u001b[7mt\u001b[7m:\u001b[7md\u001b[7ma\u001b[7mt\u001b[7me\u001b[7mt\u001b[7mi\u001b[7mm\u001b[7me\u001b[7m \u001b[7m-\u001b[7m-\u001b[7md\u001b[7me\u001b[7ms\u001b[7mt\u001b[7m=\u001b[7mm\u001b[7ma\u001b[7mi\u001b[7mn\u001b[7m_\u001b[7ma\u001b[7mp\u001b[7mp\u001b[27m\r\r\n\u001b[K"]
109
+ [6.943584, "o", "\u001b[A\u001b[21C\u001b[27mr\u001b[27ma\u001b[27mi\u001b[27ml\u001b[27ms\u001b[27m \u001b[27mg\u001b[27m \u001b[27mp\u001b[27mu\u001b[27m:\u001b[27mr\u001b[27me\u001b[27ms\u001b[27m:\u001b[27ms\u001b[27mc\u001b[27ma\u001b[27mf\u001b[27mf\u001b[27mo\u001b[27ml\u001b[27md\u001b[27m \u001b[27mP\u001b[27mo\u001b[27ms\u001b[27mt\u001b[27m \u001b[27mt\u001b[27mi\u001b[27mt\u001b[27ml\u001b[27me\u001b[27m:\u001b[27ms\u001b[27mt\u001b[27mr\u001b[27mi\u001b[27mn\u001b[27mg\u001b[27m \u001b[27mb\u001b[27mo\u001b[27md\u001b[27my\u001b[27m:\u001b[27mt\u001b[27me\u001b[27mx\u001b[27mt\u001b[27m \u001b[27mp\u001b[27mu\u001b[27mb\u001b[27ml\u001b[27mi\u001b[27ms\u001b[27mh\u001b[27me\u001b[27md\u001b[27m_\u001b[27ma\u001b[27mt\u001b[27m:\u001b[27md\u001b[27ma\u001b[27mt\u001b[27me\u001b[27mt\u001b[27mi\u001b[27mm\u001b[27me\u001b[27m \u001b[27m-\u001b[27m-\u001b[27md\u001b[27me\u001b[27ms\u001b[27mt\u001b[27m=\u001b[27mm\u001b[27ma\u001b[27mi\u001b[27mn\u001b[27m_\u001b[27ma\u001b[27mp\u001b[27mp\u001b[1B\r\u001b[K"]
110
+ [6.95506, "o", "\u001b[A\u001b[21C\u001b[32mr\u001b[32ma\u001b[32mi\u001b[32ml\u001b[32ms\u001b[39m\u001b[1B\r"]
111
+ [6.955463, "o", "\u001b[?1l\u001b>"]
112
+ [6.955611, "o", "\u001b[?2004l"]
113
+ [6.962369, "o", "\r\r\n"]
114
+ [6.963372, "o", "\u001b]2;_rails_command g pu:res:scaffold Post title:string body:text --dest=main_app\u0007\u001b]1;rails\u0007"]
115
+ [9.302854, "o", "=> [plutonium] starting reloader\r\n"]
116
+ [9.428731, "o", "\u001b[1m\u001b[32m create\u001b[0m /private/tmp/plutonium-demo/blog/app/models/post.rb\r\n"]
117
+ [9.429701, "o", "\u001b[1m\u001b[32m create\u001b[0m /private/tmp/plutonium-demo/blog/db/migrate/20260519173655_create_posts.rb\r\n"]
118
+ [9.430216, "o", "\u001b[1m\u001b[32m create\u001b[0m /private/tmp/plutonium-demo/blog/app/controllers/posts_controller.rb\r\n"]
119
+ [9.430594, "o", "\u001b[1m\u001b[32m create\u001b[0m /private/tmp/plutonium-demo/blog/app/policies/post_policy.rb\r\n"]
120
+ [9.431291, "o", "\u001b[1m\u001b[32m create\u001b[0m /private/tmp/plutonium-demo/blog/app/definitions/post_definition.rb\r\n"]
121
+ [9.447257, "o", "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m \r \r"]
122
+ [9.448522, "o", "\u001b]2;stefan@Stefans-MacBook-Pro:/private/tmp/plutonium-demo/blog\u0007\u001b]1;..ium-demo/blog\u0007"]
123
+ [9.450447, "o", "\u001b]7;file://Stefans-MacBook-Pro.local/private/tmp/plutonium-demo/blog\u001b\\"]
124
+ [9.466732, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\u001b[01;32m➜ \u001b[36mblog\u001b[00m \u001b[01;34mgit:(\u001b[31mmain\u001b[34m) \u001b[33m✗\u001b[00m \u001b[K"]
125
+ [9.466793, "o", "\u001b[?1h\u001b="]
126
+ [9.467347, "o", "\u001b[?2004h"]
127
+ [10.938701, "o", "r"]
128
+ [10.939356, "o", "\bra"]
129
+ [10.940116, "o", "i"]
130
+ [10.940876, "o", "l"]
131
+ [10.941536, "o", "s"]
132
+ [10.942374, "o", " g"]
133
+ [10.943062, "o", " p"]
134
+ [10.943572, "o", "u"]
135
+ [10.944362, "o", ":"]
136
+ [10.944963, "o", "p"]
137
+ [10.945345, "o", "k"]
138
+ [10.945733, "o", "g"]
139
+ [10.946229, "o", ":"]
140
+ [10.946614, "o", "p"]
141
+ [10.946963, "o", "o"]
142
+ [10.947314, "o", "r"]
143
+ [10.947651, "o", "t"]
144
+ [10.947982, "o", "a"]
145
+ [10.948315, "o", "l"]
146
+ [10.948661, "o", " a"]
147
+ [10.94897, "o", "d"]
148
+ [10.949263, "o", "m"]
149
+ [10.949569, "o", "i"]
150
+ [10.949901, "o", "n"]
151
+ [10.950347, "o", " -"]
152
+ [10.950666, "o", "-"]
153
+ [10.950997, "o", "p"]
154
+ [10.951316, "o", "u"]
155
+ [10.951625, "o", "b"]
156
+ [10.951933, "o", "l"]
157
+ [10.952349, "o", "i"]
158
+ [10.952709, "o", "c"]
159
+ [10.952943, "o", "\u001b[36D\u001b[7mr\u001b[7ma\u001b[7mi\u001b[7ml\u001b[7ms\u001b[7m \u001b[7mg\u001b[7m \u001b[7mp\u001b[7mu\u001b[7m:\u001b[7mp\u001b[7mk\u001b[7mg\u001b[7m:\u001b[7mp\u001b[7mo\u001b[7mr\u001b[7mt\u001b[7ma\u001b[7ml\u001b[7m \u001b[7ma\u001b[7md\u001b[7mm\u001b[7mi\u001b[7mn\u001b[7m \u001b[7m-\u001b[7m-\u001b[7mp\u001b[7mu\u001b[7mb\u001b[7ml\u001b[7mi\u001b[7mc\u001b[27m\r\r\n\u001b[K"]
160
+ [12.323583, "o", "\u001b[A\u001b[21C\u001b[27mr\u001b[27ma\u001b[27mi\u001b[27ml\u001b[27ms\u001b[27m \u001b[27mg\u001b[27m \u001b[27mp\u001b[27mu\u001b[27m:\u001b[27mp\u001b[27mk\u001b[27mg\u001b[27m:\u001b[27mp\u001b[27mo\u001b[27mr\u001b[27mt\u001b[27ma\u001b[27ml\u001b[27m \u001b[27ma\u001b[27md\u001b[27mm\u001b[27mi\u001b[27mn\u001b[27m \u001b[27m-\u001b[27m-\u001b[27mp\u001b[27mu\u001b[27mb\u001b[27ml\u001b[27mi\u001b[27mc\u001b[1B\r\u001b[K"]
161
+ [12.334612, "o", "\u001b[A\u001b[21C\u001b[32mr\u001b[32ma\u001b[32mi\u001b[32ml\u001b[32ms\u001b[39m\u001b[1B\r"]
162
+ [12.335045, "o", "\u001b[?1l\u001b>"]
163
+ [12.335203, "o", "\u001b[?2004l"]
164
+ [12.33974, "o", "\r\r\n"]
165
+ [12.341257, "o", "\u001b]2;_rails_command g pu:pkg:portal admin --public\u0007\u001b]1;rails\u0007"]
166
+ [13.82518, "o", "=> [plutonium] starting reloader\r\n"]
167
+ [13.88003, "o", "\u001b[1m\u001b[32m create\u001b[0m packages/admin_portal/lib/engine.rb\r\n"]
168
+ [13.880611, "o", "\u001b[1m\u001b[32m create\u001b[0m packages/admin_portal/config/routes.rb\r\n"]
169
+ [13.881152, "o", "\u001b[1m\u001b[32m create\u001b[0m packages/admin_portal/app/controllers/admin_portal/concerns/controller.rb\r\n"]
170
+ [13.881455, "o", "\u001b[1m\u001b[32m create\u001b[0m packages/admin_portal/app/controllers/admin_portal/plutonium_controller.rb\r\n"]
171
+ [13.882003, "o", "\u001b[1m\u001b[32m create\u001b[0m packages/admin_portal/app/controllers/admin_portal/resource_controller.rb\r\n"]
172
+ [13.882323, "o", "\u001b[1m\u001b[32m create\u001b[0m packages/admin_portal/app/controllers/admin_portal/dashboard_controller.rb\r\n"]
173
+ [13.882548, "o", "\u001b[1m\u001b[32m create\u001b[0m packages/admin_portal/app/views/admin_portal/dashboard/index.html.erb\r\n"]
174
+ [13.88269, "o", "\u001b[1m\u001b[34m exist\u001b[0m packages/admin_portal/app/policies/admin_portal\r\n"]
175
+ [13.88318, "o", "\u001b[1m\u001b[32m create\u001b[0m packages/admin_portal/app/policies/admin_portal/resource_policy.rb\r\n"]
176
+ [13.88325, "o", "\u001b[1m\u001b[34m exist\u001b[0m packages/admin_portal/app/definitions/admin_portal\r\n"]
177
+ [13.883652, "o", "\u001b[1m\u001b[32m create\u001b[0m packages/admin_portal/app/definitions/admin_portal/resource_definition.rb\r\n"]
178
+ [13.883758, "o", "\u001b[1m\u001b[32m create\u001b[0m packages/admin_portal/app/views/admin_portal/.keep\r\n"]
179
+ [13.886381, "o", "\u001b[1m\u001b[32m info\u001b[0m Copied /Users/stefan/.frum/versions/3.3.5/lib/ruby/gems/3.3.0/gems/plutonium-0.51.0/app/views/plutonium/_resource_header.html.erb to /private/tmp/plutonium-demo/blog/packages/admin_portal/app/views/plutonium/_resource_header.html.erb\r\n"]
180
+ [13.886674, "o", "\u001b[1m\u001b[32m info\u001b[0m Copied /Users/stefan/.frum/versions/3.3.5/lib/ruby/gems/3.3.0/gems/plutonium-0.51.0/app/views/plutonium/_resource_sidebar.html.erb to /private/tmp/plutonium-demo/blog/packages/admin_portal/app/views/plutonium/_resource_sidebar.html.erb\r\n"]
181
+ [13.896157, "o", "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m \r \r"]
182
+ [13.896875, "o", "\u001b]2;stefan@Stefans-MacBook-Pro:/private/tmp/plutonium-demo/blog\u0007"]
183
+ [13.897007, "o", "\u001b]1;..ium-demo/blog\u0007"]
184
+ [13.898716, "o", "\u001b]7;file://Stefans-MacBook-Pro.local/private/tmp/plutonium-demo/blog\u001b\\"]
185
+ [13.908071, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\u001b[01;32m➜ \u001b[36mblog\u001b[00m \u001b[01;34mgit:(\u001b[31mmain\u001b[34m) \u001b[33m✗\u001b[00m \u001b[K"]
186
+ [13.908186, "o", "\u001b[?1h\u001b=\u001b[?2004h"]
187
+ [16.092247, "o", "r"]
188
+ [16.093041, "o", "\bra"]
189
+ [16.093792, "o", "i"]
190
+ [16.094515, "o", "l"]
191
+ [16.095231, "o", "s"]
192
+ [16.095874, "o", " g"]
193
+ [16.096407, "o", " p"]
194
+ [16.096921, "o", "u"]
195
+ [16.097439, "o", ":"]
196
+ [16.098005, "o", "r"]
197
+ [16.098559, "o", "e"]
198
+ [16.099085, "o", "s"]
199
+ [16.099609, "o", ":"]
200
+ [16.100345, "o", "c"]
201
+ [16.101148, "o", "o"]
202
+ [16.101732, "o", "n"]
203
+ [16.102273, "o", "n"]
204
+ [16.103048, "o", " P"]
205
+ [16.103684, "o", "o"]
206
+ [16.104134, "o", "s"]
207
+ [16.104558, "o", "t"]
208
+ [16.104985, "o", " -"]
209
+ [16.105611, "o", "-"]
210
+ [16.10628, "o", "d"]
211
+ [16.106912, "o", "e"]
212
+ [16.107363, "o", "s"]
213
+ [16.10786, "o", "t"]
214
+ [16.109261, "o", "="]
215
+ [16.109801, "o", "a"]
216
+ [16.110191, "o", "d"]
217
+ [16.110569, "o", "m"]
218
+ [16.11094, "o", "i"]
219
+ [16.111296, "o", "n"]
220
+ [16.111612, "o", "_"]
221
+ [16.111904, "o", "p"]
222
+ [16.112191, "o", "o"]
223
+ [16.112543, "o", "r"]
224
+ [16.112992, "o", "t"]
225
+ [16.11339, "o", "a"]
226
+ [16.113805, "o", "l"]
227
+ [16.113952, "o", "\u001b[44D\u001b[7mr\u001b[7ma\u001b[7mi\u001b[7ml\u001b[7ms\u001b[7m \u001b[7mg\u001b[7m \u001b[7mp\u001b[7mu\u001b[7m:\u001b[7mr\u001b[7me\u001b[7ms\u001b[7m:\u001b[7mc\u001b[7mo\u001b[7mn\u001b[7mn\u001b[7m \u001b[7mP\u001b[7mo\u001b[7ms\u001b[7mt\u001b[7m \u001b[7m-\u001b[7m-\u001b[7md\u001b[7me\u001b[7ms\u001b[7mt\u001b[7m=\u001b[7ma\u001b[7md\u001b[7mm\u001b[7mi\u001b[7mn\u001b[7m_\u001b[7mp\u001b[7mo\u001b[7mr\u001b[7mt\u001b[7ma\u001b[7ml\u001b[27m\r\r\n\u001b[K"]
228
+ [16.481211, "o", "\u001b[A\u001b[21C\u001b[27mr\u001b[27ma\u001b[27mi\u001b[27ml\u001b[27ms\u001b[27m \u001b[27mg\u001b[27m \u001b[27mp\u001b[27mu\u001b[27m:\u001b[27mr\u001b[27me\u001b[27ms\u001b[27m:\u001b[27mc\u001b[27mo\u001b[27mn\u001b[27mn\u001b[27m \u001b[27mP\u001b[27mo\u001b[27ms\u001b[27mt\u001b[27m \u001b[27m-\u001b[27m-\u001b[27md\u001b[27me\u001b[27ms\u001b[27mt\u001b[27m=\u001b[27ma\u001b[27md\u001b[27mm\u001b[27mi\u001b[27mn\u001b[27m_\u001b[27mp\u001b[27mo\u001b[27mr\u001b[27mt\u001b[27ma\u001b[27ml\u001b[1B\r\u001b[K"]
229
+ [16.494512, "o", "\u001b[A\u001b[21C\u001b[32mr\u001b[32ma\u001b[32mi\u001b[32ml\u001b[32ms\u001b[39m\u001b[1B\r"]
230
+ [16.49605, "o", "\u001b[?1l\u001b>"]
231
+ [16.496559, "o", "\u001b[?2004l"]
232
+ [16.503962, "o", "\r\r\n"]
233
+ [16.504822, "o", "\u001b]2;_rails_command g pu:res:conn Post --dest=admin_portal\u0007\u001b]1;rails\u0007"]
234
+ [17.855805, "o", "=> [plutonium] starting reloader\r\n"]
235
+ [18.010122, "o", "\u001b[1m\u001b[32m create\u001b[0m packages/admin_portal/app/controllers/admin_portal/posts_controller.rb\r\n"]
236
+ [18.010572, "o", "\u001b[1m\u001b[32m insert\u001b[0m packages/admin_portal/config/routes.rb\r\n"]
237
+ [18.020656, "o", "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m \r \r"]
238
+ [18.0214, "o", "\u001b]2;stefan@Stefans-MacBook-Pro:/private/tmp/plutonium-demo/blog\u0007\u001b]1;..ium-demo/blog\u0007"]
239
+ [18.023658, "o", "\u001b]7;file://Stefans-MacBook-Pro.local/private/tmp/plutonium-demo/blog\u001b\\"]
240
+ [18.033749, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\u001b[01;32m➜ \u001b[36mblog\u001b[00m \u001b[01;34mgit:(\u001b[31mmain\u001b[34m) \u001b[33m✗\u001b[00m \u001b[K"]
241
+ [18.033874, "o", "\u001b[?1h\u001b=\u001b[?2004h"]
242
+ [20.278418, "o", "r"]
243
+ [20.279383, "o", "\bra"]
244
+ [20.280139, "o", "i"]
245
+ [20.280903, "o", "l"]
246
+ [20.281627, "o", "s"]
247
+ [20.282376, "o", " d"]
248
+ [20.283073, "o", "b"]
249
+ [20.283578, "o", ":"]
250
+ [20.284151, "o", "m"]
251
+ [20.284715, "o", "i"]
252
+ [20.28522, "o", "g"]
253
+ [20.285865, "o", "r"]
254
+ [20.286457, "o", "a"]
255
+ [20.28705, "o", "t"]
256
+ [20.287601, "o", "e"]
257
+ [20.287872, "o", "\u001b[16D\u001b[7mr\u001b[7ma\u001b[7mi\u001b[7ml\u001b[7ms\u001b[7m \u001b[7md\u001b[7mb\u001b[7m:\u001b[7mm\u001b[7mi\u001b[7mg\u001b[7mr\u001b[7ma\u001b[7mt\u001b[7me\u001b[27m\r\r\n\u001b[K"]
258
+ [21.067587, "o", "\u001b[A\u001b[21C\u001b[27mr\u001b[27ma\u001b[27mi\u001b[27ml\u001b[27ms\u001b[27m \u001b[27md\u001b[27mb\u001b[27m:\u001b[27mm\u001b[27mi\u001b[27mg\u001b[27mr\u001b[27ma\u001b[27mt\u001b[27me\u001b[1B\r\u001b[K"]
259
+ [21.075315, "o", "\u001b[A\u001b[21C\u001b[32mr\u001b[32ma\u001b[32mi\u001b[32ml\u001b[32ms\u001b[39m\u001b[1B\r"]
260
+ [21.075817, "o", "\u001b[?1l\u001b>"]
261
+ [21.076011, "o", "\u001b[?2004l"]
262
+ [21.080055, "o", "\r\r\n"]
263
+ [21.081791, "o", "\u001b]2;_rails_command db:migrate\u0007\u001b]1;rails\u0007"]
264
+ [22.470555, "o", "=> [plutonium] starting reloader\r\n"]
265
+ [22.553108, "o", "== 20260519173655 CreatePosts: migrating ======================================\r\n"]
266
+ [22.553344, "o", "-- create_table(:posts)\r\n"]
267
+ [22.559557, "o", " -> 0.0062s\r\n== 20260519173655 CreatePosts: migrated (0.0063s) =============================\r\n\r\n"]
268
+ [22.610661, "o", "Annotated (1): /private/tmp/plutonium-demo/blog/app/models/post.rb\r\n"]
269
+ [22.619863, "o", "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m \r \r"]
270
+ [22.620483, "o", "\u001b]2;stefan@Stefans-MacBook-Pro:/private/tmp/plutonium-demo/blog\u0007\u001b]1;..ium-demo/blog\u0007"]
271
+ [22.621869, "o", "\u001b]7;file://Stefans-MacBook-Pro.local/private/tmp/plutonium-demo/blog\u001b\\"]
272
+ [22.630603, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\u001b[01;32m➜ \u001b[36mblog\u001b[00m \u001b[01;34mgit:(\u001b[31mmain\u001b[34m) \u001b[33m✗\u001b[00m \u001b[K"]
273
+ [22.630714, "o", "\u001b[?1h\u001b="]
274
+ [22.63083, "o", "\u001b[?2004h"]
275
+ [25.140997, "o", "b"]
276
+ [25.141014, "o", "\bbi"]
277
+ [25.141311, "o", "n"]
278
+ [25.141435, "o", "/"]
279
+ [25.141553, "o", "d"]
280
+ [25.141681, "o", "e"]
281
+ [25.14241, "o", "v"]
282
+ [25.142532, "o", "\b\b\b\b\b\b\b\u001b[7mb\u001b[7mi\u001b[7mn\u001b[7m/\u001b[7md\u001b[7me\u001b[7mv\u001b[27m"]
283
+ [25.526045, "o", "\b\b\b\b\b\b\b\u001b[27mb\u001b[27mi\u001b[27mn\u001b[27m/\u001b[27md\u001b[27me\u001b[27mv"]
284
+ [25.538832, "o", "\b\b\b\b\b\b\b\u001b[32mb\u001b[32mi\u001b[32mn\u001b[32m/\u001b[32md\u001b[32me\u001b[32mv\u001b[39m"]
285
+ [25.539151, "o", "\u001b[?1l\u001b>"]
286
+ [25.539273, "o", "\u001b[?2004l"]
287
+ [25.540667, "o", "\r\r\n"]
288
+ [25.541578, "o", "\u001b]2;bin/dev\u0007\u001b]1;bin/dev\u0007"]
289
+ [26.457207, "o", "\u001b[36m17:37:12 web.1 | \u001b[0mstarted with pid 33115\r\n\u001b[33m17:37:12 js.1 | \u001b[0mstarted with pid 33116\r\n\u001b[32m17:37:12 css.1 | \u001b[0mstarted with pid 33117\r\n"]
290
+ [26.476138, "o", "\u001b[32m17:37:12 css.1 | \u001b[0m$ postcss ./app/assets/stylesheets/application.tailwind.css -o ./app/assets/builds/application.css --watch\r\n"]
291
+ [26.746197, "o", "\u001b[33m17:37:12 js.1 | \u001b[0myarn run v1.22.22\r\n"]
292
+ [26.777767, "o", "\u001b[33m17:37:12 js.1 | \u001b[0m$ esbuild app/javascript/*.* --bundle --sourcemap --format=esm --outdir=app/assets/builds --public-path=/assets --watch\r\n"]
293
+ [27.618967, "o", "\u001b[33m17:37:13 js.1 | \u001b[0m[watch] build finished, watching for changes...\r\n"]
294
+ [27.886248, "o", "\u001b[36m17:37:13 web.1 | \u001b[0m=> Booting Puma\r\n\u001b[36m17:37:13 web.1 | \u001b[0m=> Rails 8.1.3 application starting in development \r\n"]
295
+ [27.886358, "o", "\u001b[36m17:37:13 web.1 | \u001b[0m=> Run `bin/rails server --help` for more startup options\r\n"]
296
+ [28.00111, "o", "\u001b[36m17:37:13 web.1 | \u001b[0m=> [plutonium] starting reloader\r\n"]
297
+ [28.019815, "o", "\u001b[36m17:37:13 web.1 | \u001b[0mPuma starting in single mode...\r\n"]
298
+ [28.020275, "o", "\u001b[36m17:37:13 web.1 | \u001b[0m* Puma version: 8.0.1 (\"Into the Arena\")\r\n"]
299
+ [28.020359, "o", "\u001b[36m17:37:13 web.1 | \u001b[0m* Ruby version: ruby 3.3.5 (2024-09-03 revision ef084cc8f4) [arm64-darwin23]\r\n"]
300
+ [28.020441, "o", "\u001b[36m17:37:13 web.1 | \u001b[0m* Min threads: 3\r\n"]
301
+ [28.021415, "o", "\u001b[36m17:37:13 web.1 | \u001b[0m* Max threads: 3\r\n"]
302
+ [28.021777, "o", "\u001b[36m17:37:13 web.1 | \u001b[0m* Environment: development\r\n"]
303
+ [28.021871, "o", "\u001b[36m17:37:13 web.1 | \u001b[0m* PID: 33115\r\n\u001b[36m17:37:13 web.1 | \u001b[0m* Listening on http://127.0.0.1:3000\r\n\u001b[36m17:37:13 web.1 | \u001b[0m* Listening on http://[::1]:3000\r\n"]
304
+ [28.038583, "o", "\u001b[36m17:37:13 web.1 | \u001b[0mUse Ctrl-C to stop\r\n"]
305
+ [29.555747, "o", "^D\b\b"]
Binary file
Binary file
Binary file