plutonium 0.68.0 → 0.70.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 (132) hide show
  1. checksums.yaml +4 -4
  2. data/.claude/skills/plutonium-async-interactions/SKILL.md +41 -2
  3. data/.claude/skills/plutonium-resource/SKILL.md +13 -0
  4. data/.ruby-version +1 -1
  5. data/CHANGELOG.md +37 -0
  6. data/CLAUDE.md +11 -0
  7. data/SECURITY.md +1 -1
  8. data/app/assets/plutonium.css +3 -1
  9. data/app/assets/plutonium.png +0 -0
  10. data/config/locales/en/async.yml +11 -1
  11. data/config/locales/en/ui.yml +3 -0
  12. data/docs/blog/introducing-plutonium-dashboards.md +4 -4
  13. data/docs/blog/the-slowest-query-is-the-count.md +109 -0
  14. data/docs/guides/performance.md +14 -0
  15. data/docs/public/favicon-16x16.png +0 -0
  16. data/docs/public/favicon-32x32.png +0 -0
  17. data/docs/public/images/blog/i18n-es-admin.png +0 -0
  18. data/docs/public/images/blog/pagination-capped.png +0 -0
  19. data/docs/public/images/blog/pagination-countless.png +0 -0
  20. data/docs/public/images/components/avatar.png +0 -0
  21. data/docs/public/images/guides/custom-actions-bulk.png +0 -0
  22. data/docs/public/images/guides/dashboard-card-error.png +0 -0
  23. data/docs/public/images/guides/dashboard-loading.png +0 -0
  24. data/docs/public/images/guides/dashboard-overview.png +0 -0
  25. data/docs/public/images/guides/dashboard-sidebar.png +0 -0
  26. data/docs/public/images/guides/kanban-after-move.png +0 -0
  27. data/docs/public/images/guides/kanban-board-light.png +0 -0
  28. data/docs/public/images/guides/kanban-board.png +0 -0
  29. data/docs/public/images/guides/kanban-show-centered-modal.png +0 -0
  30. data/docs/public/images/guides/kanban-wip-toast.png +0 -0
  31. data/docs/public/images/guides/multi-tenancy-dashboard.png +0 -0
  32. data/docs/public/images/guides/multi-tenancy-welcome.png +0 -0
  33. data/docs/public/images/guides/nested-inputs.png +0 -0
  34. data/docs/public/images/guides/nested-resources-tab.png +0 -0
  35. data/docs/public/images/guides/search-filtering-index.png +0 -0
  36. data/docs/public/images/guides/search-filtering-panel.png +0 -0
  37. data/docs/public/images/guides/theming-after.png +0 -0
  38. data/docs/public/images/guides/theming-before.png +0 -0
  39. data/docs/public/images/guides/user-invites-landing.png +0 -0
  40. data/docs/public/images/guides/user-profile-edit.png +0 -0
  41. data/docs/public/images/guides/user-profile-show.png +0 -0
  42. data/docs/public/images/guides/wizards-chooser.png +0 -0
  43. data/docs/public/images/guides/wizards-completed.png +0 -0
  44. data/docs/public/images/guides/wizards-index-action.png +0 -0
  45. data/docs/public/images/guides/wizards-repeater.png +0 -0
  46. data/docs/public/images/guides/wizards-review.png +0 -0
  47. data/docs/public/images/guides/wizards-step.png +0 -0
  48. data/docs/public/images/home/tour-actions.png +0 -0
  49. data/docs/public/images/home/tour-async.png +0 -0
  50. data/docs/public/images/home/tour-kanban.png +0 -0
  51. data/docs/public/images/home/tour-tenancy.png +0 -0
  52. data/docs/public/images/home/tour-wizard.png +0 -0
  53. data/docs/public/images/home-index.png +0 -0
  54. data/docs/public/images/home-new.png +0 -0
  55. data/docs/public/images/home-show.png +0 -0
  56. data/docs/public/images/reference/async-progress-page.png +0 -0
  57. data/docs/public/images/reference/async-running-banner.png +0 -0
  58. data/docs/public/images/reference/structured-inputs-removed.png +0 -0
  59. data/docs/public/images/reference/structured-inputs.png +0 -0
  60. data/docs/public/images/tutorial/02-empty-index.png +0 -0
  61. data/docs/public/images/tutorial/02-index-with-posts.png +0 -0
  62. data/docs/public/images/tutorial/02-new-form-modal.png +0 -0
  63. data/docs/public/images/tutorial/02-new-form.png +0 -0
  64. data/docs/public/images/tutorial/03-create-account.png +0 -0
  65. data/docs/public/images/tutorial/03-login.png +0 -0
  66. data/docs/public/images/tutorial/04-admin-index.png +0 -0
  67. data/docs/public/images/tutorial/05-actions-menu.png +0 -0
  68. data/docs/public/images/tutorial/05-row-actions.png +0 -0
  69. data/docs/public/images/tutorial/06-comments-tab.png +0 -0
  70. data/docs/public/images/tutorial/06-post-with-comments.png +0 -0
  71. data/docs/public/images/tutorial/07-author-dashboard.png +0 -0
  72. data/docs/public/images/tutorial/07-author-portal.png +0 -0
  73. data/docs/public/images/tutorial/08-customized-index.png +0 -0
  74. data/docs/public/og-image.png +0 -0
  75. data/docs/public/plutonium.png +0 -0
  76. data/docs/public/tutorial/plutonium-association-panel.png +0 -0
  77. data/docs/public/tutorial/plutonium-dashboard.png +0 -0
  78. data/docs/public/tutorial/plutonium-login-page.png +0 -0
  79. data/docs/public/tutorial/plutonium-nested-form.png +0 -0
  80. data/docs/public/tutorial/plutonium-posts-dashboard-customized.png +0 -0
  81. data/docs/public/tutorial/plutonium-posts-dashboard.png +0 -0
  82. data/docs/public/tutorial/plutonium-posts-detail-customized.png +0 -0
  83. data/docs/public/tutorial/plutonium-posts-detail.png +0 -0
  84. data/docs/public/tutorial/plutonium-publish-post.png +0 -0
  85. data/docs/reference/behavior/async-interactions.md +62 -5
  86. data/docs/reference/configuration.md +1 -0
  87. data/docs/reference/generators/lite.md +30 -6
  88. data/docs/reference/i18n.md +2 -2
  89. data/docs/reference/resource/definition.md +35 -0
  90. data/docs/reference/ui/layouts.md +13 -0
  91. data/docs/superpowers/plans/2026-10-15-async-run-pre-check.md +1056 -0
  92. data/docs/superpowers/plans/2026-10-15-async-run-pre-check.md.tasks.json +49 -0
  93. data/docs/superpowers/specs/2026-10-15-async-run-pre-check-design.md +208 -0
  94. data/gemfiles/rails_7.gemfile.lock +5 -5
  95. data/gemfiles/rails_8.0.gemfile.lock +3 -3
  96. data/gemfiles/rails_8.1.gemfile.lock +3 -3
  97. data/lib/generators/pu/lite/maintenance/maintenance_generator.rb +20 -1
  98. data/lib/generators/pu/lite/maintenance/templates/app/jobs/sqlite_maintenance_job.rb.tt +18 -1
  99. data/lib/plutonium/configuration.rb +17 -0
  100. data/lib/plutonium/definition/base.rb +22 -0
  101. data/lib/plutonium/definition/presentable.rb +4 -1
  102. data/lib/plutonium/interaction/async/configuration.rb +15 -0
  103. data/lib/plutonium/interaction/async/context.rb +12 -2
  104. data/lib/plutonium/interaction/async/executor.rb +54 -0
  105. data/lib/plutonium/interaction/async/run.rb +128 -14
  106. data/lib/plutonium/interaction/async/run_definition.rb +5 -4
  107. data/lib/plutonium/interaction/async/run_policy.rb +5 -5
  108. data/lib/plutonium/interaction/response/redirect.rb +19 -7
  109. data/lib/plutonium/pagination.rb +35 -0
  110. data/lib/plutonium/resource/controllers/crud_actions/index_action.rb +27 -1
  111. data/lib/plutonium/ui/breadcrumbs.rb +26 -8
  112. data/lib/plutonium/ui/grid/card.rb +11 -2
  113. data/lib/plutonium/ui/grid/resource.rb +2 -2
  114. data/lib/plutonium/ui/interaction/async/run_progress.rb +25 -11
  115. data/lib/plutonium/ui/interaction/async/running_banner.rb +21 -5
  116. data/lib/plutonium/ui/layout/base.rb +0 -9
  117. data/lib/plutonium/ui/layout/icon_rail.rb +42 -4
  118. data/lib/plutonium/ui/page/index.rb +23 -4
  119. data/lib/plutonium/ui/table/components/filter_pills.rb +8 -2
  120. data/lib/plutonium/ui/table/components/pagy_info.rb +30 -10
  121. data/lib/plutonium/ui/table/resource.rb +2 -2
  122. data/lib/plutonium/version.rb +1 -1
  123. data/package.json +1 -1
  124. data/plutonium.gemspec +3 -1
  125. data/src/css/components.css +12 -1
  126. data/src/css/font_awesome.css +2328 -0
  127. data/src/css/plutonium.css +1 -0
  128. metadata +11 -7
  129. data/docs/public/images/blog/dashboards-card-error.png +0 -0
  130. data/docs/public/images/blog/dashboards-loading.png +0 -0
  131. data/docs/public/images/blog/dashboards-overview.png +0 -0
  132. data/docs/public/images/blog/dashboards-sidebar.png +0 -0
@@ -2,6 +2,7 @@
2
2
  @import "components.css";
3
3
  @import "core.css";
4
4
  @import "easymde.css";
5
+ @import "font_awesome.css";
5
6
  @import "slim_select.css";
6
7
  @import "intl_tel_input.css";
7
8
  @import "flatpickr.css";
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: plutonium
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.68.0
4
+ version: 0.70.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefan Froelich
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2026-10-14 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: zeitwerk
@@ -619,6 +619,7 @@ files:
619
619
  - docs/blog/jobs-are-not-permission-snapshots.md
620
620
  - docs/blog/plutonium-and-ai-agents.md
621
621
  - docs/blog/realtime-is-one-line-and-four-dependencies.md
622
+ - docs/blog/the-slowest-query-is-the-count.md
622
623
  - docs/blog/two-forms-one-dom-id.md
623
624
  - docs/blog/whats-new-async-kanban-wizards.md
624
625
  - docs/getting-started/index.md
@@ -660,11 +661,9 @@ files:
660
661
  - docs/public/favicon-16x16.png
661
662
  - docs/public/favicon-32x32.png
662
663
  - docs/public/favicon.ico
663
- - docs/public/images/blog/dashboards-card-error.png
664
- - docs/public/images/blog/dashboards-loading.png
665
- - docs/public/images/blog/dashboards-overview.png
666
- - docs/public/images/blog/dashboards-sidebar.png
667
664
  - docs/public/images/blog/i18n-es-admin.png
665
+ - docs/public/images/blog/pagination-capped.png
666
+ - docs/public/images/blog/pagination-countless.png
668
667
  - docs/public/images/components/avatar.png
669
668
  - docs/public/images/guides/custom-actions-bulk.png
670
669
  - docs/public/images/guides/dashboard-card-error.png
@@ -814,6 +813,8 @@ files:
814
813
  - docs/superpowers/plans/2026-07-31-positioned-drag-and-drop.md.tasks.json
815
814
  - docs/superpowers/plans/2026-08-17-async-interactions.md
816
815
  - docs/superpowers/plans/2026-08-17-async-interactions.md.tasks.json
816
+ - docs/superpowers/plans/2026-10-15-async-run-pre-check.md
817
+ - docs/superpowers/plans/2026-10-15-async-run-pre-check.md.tasks.json
817
818
  - docs/superpowers/specs/2026-04-08-plutonium-skills-overhaul-design.md
818
819
  - docs/superpowers/specs/2026-04-14-plutonium-testing-design.md
819
820
  - docs/superpowers/specs/2026-05-07-ui-layout-overhaul-design.md
@@ -838,6 +839,7 @@ files:
838
839
  - docs/superpowers/specs/2026-07-17-action-html-attributes-design.md
839
840
  - docs/superpowers/specs/2026-07-31-positioned-drag-and-drop-design.md
840
841
  - docs/superpowers/specs/2026-08-17-async-interactions-design.md
842
+ - docs/superpowers/specs/2026-10-15-async-run-pre-check-design.md
841
843
  - esbuild.config.js
842
844
  - exe/pug
843
845
  - gemfiles/postgres.gemfile
@@ -1222,6 +1224,7 @@ files:
1222
1224
  - lib/plutonium/migrations.rb
1223
1225
  - lib/plutonium/models/has_cents.rb
1224
1226
  - lib/plutonium/package/engine.rb
1227
+ - lib/plutonium/pagination.rb
1225
1228
  - lib/plutonium/portal/controller.rb
1226
1229
  - lib/plutonium/portal/dynamic_controllers.rb
1227
1230
  - lib/plutonium/portal/engine.rb
@@ -1493,6 +1496,7 @@ files:
1493
1496
  - src/css/core.css
1494
1497
  - src/css/easymde.css
1495
1498
  - src/css/flatpickr.css
1499
+ - src/css/font_awesome.css
1496
1500
  - src/css/intl_tel_input.css
1497
1501
  - src/css/plutonium.css
1498
1502
  - src/css/plutonium.entry.css
@@ -1580,7 +1584,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1580
1584
  - !ruby/object:Gem::Version
1581
1585
  version: '0'
1582
1586
  requirements: []
1583
- rubygems_version: 3.6.2
1587
+ rubygems_version: 4.0.20
1584
1588
  specification_version: 4
1585
1589
  summary: Build production-ready Rails apps in minutes, not days
1586
1590
  test_files: []