ratatui_ruby 0.7.0 → 0.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (284) hide show
  1. checksums.yaml +4 -4
  2. data/.builds/ruby-3.2.yml +1 -1
  3. data/.builds/ruby-3.3.yml +1 -1
  4. data/.builds/ruby-3.4.yml +1 -1
  5. data/.builds/ruby-4.0.0.yml +1 -1
  6. data/AGENTS.md +8 -1
  7. data/CHANGELOG.md +34 -0
  8. data/README.md +5 -5
  9. data/Rakefile +1 -1
  10. data/doc/{application_architecture.md → concepts/application_architecture.md} +30 -0
  11. data/doc/concepts/async.md +160 -0
  12. data/doc/{event_handling.md → concepts/event_handling.md} +1 -1
  13. data/doc/contributors/auditing/parity.md +233 -0
  14. data/doc/contributors/developing_examples.md +3 -3
  15. data/doc/contributors/v1.0.0_blockers.md +8 -8
  16. data/doc/{quickstart.md → getting_started/quickstart.md} +26 -26
  17. data/doc/{why.md → getting_started/why.md} +1 -1
  18. data/doc/index.md +23 -9
  19. data/doc/troubleshooting/debugging.md +71 -0
  20. data/doc/{terminal_limitations.md → troubleshooting/terminal_limitations.md} +33 -0
  21. data/examples/app_all_events/README.md +1 -0
  22. data/examples/app_all_events/app.rb +2 -0
  23. data/examples/app_all_events/model/app_model.rb +2 -0
  24. data/examples/app_all_events/model/event_color_cycle.rb +2 -0
  25. data/examples/app_all_events/model/event_entry.rb +2 -0
  26. data/examples/app_all_events/model/msg.rb +2 -0
  27. data/examples/app_all_events/model/timestamp.rb +2 -0
  28. data/examples/app_all_events/update.rb +2 -0
  29. data/examples/app_all_events/view/app_view.rb +2 -0
  30. data/examples/app_all_events/view/controls_view.rb +2 -0
  31. data/examples/app_all_events/view/counts_view.rb +2 -0
  32. data/examples/app_all_events/view/live_view.rb +2 -0
  33. data/examples/app_all_events/view/log_view.rb +2 -0
  34. data/examples/app_all_events/view.rb +2 -0
  35. data/examples/app_color_picker/README.md +2 -0
  36. data/examples/app_color_picker/app.rb +2 -0
  37. data/examples/app_color_picker/clipboard.rb +2 -0
  38. data/examples/app_color_picker/color.rb +2 -0
  39. data/examples/app_color_picker/controls.rb +2 -0
  40. data/examples/app_color_picker/copy_dialog.rb +2 -0
  41. data/examples/app_color_picker/export_pane.rb +2 -0
  42. data/examples/app_color_picker/harmony.rb +2 -0
  43. data/examples/app_color_picker/input.rb +2 -0
  44. data/examples/app_color_picker/main_container.rb +2 -0
  45. data/examples/app_color_picker/palette.rb +2 -0
  46. data/examples/app_login_form/README.md +3 -0
  47. data/examples/app_login_form/app.rb +2 -0
  48. data/examples/app_stateful_interaction/README.md +2 -0
  49. data/examples/app_stateful_interaction/app.rb +2 -0
  50. data/examples/timeout_demo.rb +2 -0
  51. data/examples/verify_quickstart_dsl/README.md +2 -2
  52. data/examples/verify_quickstart_dsl/app.rb +2 -0
  53. data/examples/verify_quickstart_layout/README.md +2 -2
  54. data/examples/verify_quickstart_layout/app.rb +2 -0
  55. data/examples/verify_quickstart_lifecycle/README.md +2 -2
  56. data/examples/verify_quickstart_lifecycle/app.rb +2 -0
  57. data/examples/verify_readme_usage/app.rb +2 -0
  58. data/examples/{widget_barchart_demo → widget_barchart}/README.md +5 -3
  59. data/examples/{widget_barchart_demo → widget_barchart}/app.rb +7 -5
  60. data/examples/{widget_block_demo → widget_block}/README.md +5 -3
  61. data/examples/{widget_block_demo → widget_block}/app.rb +6 -4
  62. data/examples/{widget_box_demo → widget_box}/README.md +7 -4
  63. data/examples/{widget_box_demo → widget_box}/app.rb +7 -5
  64. data/examples/{widget_calendar_demo → widget_calendar}/README.md +6 -3
  65. data/examples/{widget_calendar_demo → widget_calendar}/app.rb +6 -4
  66. data/examples/{widget_canvas_demo → widget_canvas}/README.md +2 -2
  67. data/examples/{widget_canvas_demo → widget_canvas}/app.rb +6 -4
  68. data/examples/{widget_cell_demo → widget_cell}/README.md +6 -3
  69. data/examples/{widget_cell_demo → widget_cell}/app.rb +7 -5
  70. data/examples/{widget_center_demo → widget_center}/README.md +2 -2
  71. data/examples/{widget_center_demo → widget_center}/app.rb +6 -4
  72. data/examples/{widget_chart_demo → widget_chart}/README.md +7 -4
  73. data/examples/{widget_chart_demo → widget_chart}/app.rb +7 -5
  74. data/examples/{widget_gauge_demo → widget_gauge}/README.md +6 -3
  75. data/examples/{widget_gauge_demo → widget_gauge}/app.rb +7 -5
  76. data/examples/widget_layout_split/README.md +5 -2
  77. data/examples/widget_layout_split/app.rb +3 -1
  78. data/examples/{widget_line_gauge_demo → widget_line_gauge}/README.md +6 -3
  79. data/examples/{widget_line_gauge_demo → widget_line_gauge}/app.rb +7 -5
  80. data/examples/{widget_list_demo → widget_list}/README.md +7 -4
  81. data/examples/{widget_list_demo → widget_list}/app.rb +7 -5
  82. data/examples/{widget_map_demo → widget_map}/README.md +7 -4
  83. data/examples/{widget_map_demo → widget_map}/app.rb +4 -2
  84. data/examples/{widget_overlay_demo → widget_overlay}/README.md +6 -3
  85. data/examples/{widget_overlay_demo → widget_overlay}/app.rb +5 -3
  86. data/examples/{widget_popup_demo → widget_popup}/README.md +7 -4
  87. data/examples/{widget_popup_demo → widget_popup}/app.rb +6 -4
  88. data/examples/{widget_ratatui_logo_demo → widget_ratatui_logo}/README.md +6 -3
  89. data/examples/{widget_ratatui_logo_demo → widget_ratatui_logo}/app.rb +8 -6
  90. data/examples/{widget_ratatui_mascot_demo → widget_ratatui_mascot}/README.md +6 -3
  91. data/examples/{widget_ratatui_mascot_demo → widget_ratatui_mascot}/app.rb +6 -4
  92. data/examples/widget_rect/README.md +5 -2
  93. data/examples/widget_rect/app.rb +2 -0
  94. data/examples/widget_render/README.md +4 -1
  95. data/examples/widget_render/app.rb +2 -0
  96. data/examples/widget_rich_text/README.md +4 -1
  97. data/examples/widget_rich_text/app.rb +2 -0
  98. data/examples/widget_scroll_text/README.md +4 -1
  99. data/examples/widget_scroll_text/app.rb +3 -1
  100. data/examples/{widget_scrollbar_demo → widget_scrollbar}/README.md +7 -4
  101. data/examples/{widget_scrollbar_demo → widget_scrollbar}/app.rb +6 -4
  102. data/examples/{widget_sparkline_demo → widget_sparkline}/README.md +6 -3
  103. data/examples/{widget_sparkline_demo → widget_sparkline}/app.rb +7 -5
  104. data/examples/widget_style_colors/README.md +4 -1
  105. data/examples/widget_style_colors/app.rb +2 -0
  106. data/examples/{widget_table_demo → widget_table}/README.md +7 -4
  107. data/examples/{widget_table_demo → widget_table}/app.rb +4 -2
  108. data/examples/{widget_tabs_demo → widget_tabs}/README.md +6 -3
  109. data/examples/{widget_tabs_demo → widget_tabs}/app.rb +7 -5
  110. data/examples/widget_text_width/README.md +5 -2
  111. data/examples/widget_text_width/app.rb +2 -0
  112. data/exe/.gitkeep +0 -0
  113. data/ext/ratatui_ruby/Cargo.lock +1 -1
  114. data/ext/ratatui_ruby/Cargo.toml +1 -1
  115. data/ext/ratatui_ruby/extconf.rb +2 -0
  116. data/ext/ratatui_ruby/src/style.rs +25 -9
  117. data/ext/ratatui_ruby/src/widgets/barchart.rs +8 -6
  118. data/ext/ratatui_ruby/src/widgets/chart.rs +26 -4
  119. data/ext/ratatui_ruby/src/widgets/table.rs +13 -5
  120. data/ext/ratatui_ruby/src/widgets/tabs.rs +49 -9
  121. data/lib/ratatui_ruby/buffer/cell.rb +2 -0
  122. data/lib/ratatui_ruby/buffer.rb +2 -0
  123. data/lib/ratatui_ruby/cell.rb +2 -0
  124. data/lib/ratatui_ruby/event/focus_gained.rb +2 -0
  125. data/lib/ratatui_ruby/event/focus_lost.rb +2 -0
  126. data/lib/ratatui_ruby/event/key/character.rb +2 -0
  127. data/lib/ratatui_ruby/event/key/media.rb +2 -0
  128. data/lib/ratatui_ruby/event/key/modifier.rb +2 -0
  129. data/lib/ratatui_ruby/event/key/navigation.rb +2 -0
  130. data/lib/ratatui_ruby/event/key/system.rb +2 -0
  131. data/lib/ratatui_ruby/event/key.rb +2 -0
  132. data/lib/ratatui_ruby/event/mouse.rb +2 -0
  133. data/lib/ratatui_ruby/event/none.rb +2 -0
  134. data/lib/ratatui_ruby/event/paste.rb +2 -0
  135. data/lib/ratatui_ruby/event/resize.rb +2 -0
  136. data/lib/ratatui_ruby/event.rb +2 -0
  137. data/lib/ratatui_ruby/frame.rb +2 -0
  138. data/lib/ratatui_ruby/layout/constraint.rb +2 -0
  139. data/lib/ratatui_ruby/layout/layout.rb +2 -0
  140. data/lib/ratatui_ruby/layout/rect.rb +2 -0
  141. data/lib/ratatui_ruby/layout.rb +2 -0
  142. data/lib/ratatui_ruby/list_state.rb +2 -0
  143. data/lib/ratatui_ruby/schema/bar_chart/bar.rb +2 -0
  144. data/lib/ratatui_ruby/schema/bar_chart/bar_group.rb +2 -0
  145. data/lib/ratatui_ruby/schema/bar_chart.rb +4 -2
  146. data/lib/ratatui_ruby/schema/block.rb +4 -2
  147. data/lib/ratatui_ruby/schema/calendar.rb +4 -2
  148. data/lib/ratatui_ruby/schema/canvas.rb +2 -0
  149. data/lib/ratatui_ruby/schema/center.rb +2 -0
  150. data/lib/ratatui_ruby/schema/chart.rb +4 -2
  151. data/lib/ratatui_ruby/schema/clear.rb +2 -0
  152. data/lib/ratatui_ruby/schema/constraint.rb +2 -0
  153. data/lib/ratatui_ruby/schema/cursor.rb +2 -0
  154. data/lib/ratatui_ruby/schema/draw.rb +2 -0
  155. data/lib/ratatui_ruby/schema/gauge.rb +4 -2
  156. data/lib/ratatui_ruby/schema/layout.rb +2 -0
  157. data/lib/ratatui_ruby/schema/line_gauge.rb +4 -2
  158. data/lib/ratatui_ruby/schema/list.rb +3 -1
  159. data/lib/ratatui_ruby/schema/list_item.rb +2 -0
  160. data/lib/ratatui_ruby/schema/overlay.rb +2 -0
  161. data/lib/ratatui_ruby/schema/paragraph.rb +2 -0
  162. data/lib/ratatui_ruby/schema/ratatui_logo.rb +4 -2
  163. data/lib/ratatui_ruby/schema/ratatui_mascot.rb +4 -2
  164. data/lib/ratatui_ruby/schema/rect.rb +2 -0
  165. data/lib/ratatui_ruby/schema/row.rb +2 -0
  166. data/lib/ratatui_ruby/schema/scrollbar.rb +4 -2
  167. data/lib/ratatui_ruby/schema/shape/label.rb +2 -0
  168. data/lib/ratatui_ruby/schema/sparkline.rb +4 -2
  169. data/lib/ratatui_ruby/schema/style.rb +2 -0
  170. data/lib/ratatui_ruby/schema/table.rb +2 -0
  171. data/lib/ratatui_ruby/schema/tabs.rb +4 -2
  172. data/lib/ratatui_ruby/schema/text.rb +2 -0
  173. data/lib/ratatui_ruby/scrollbar_state.rb +2 -0
  174. data/lib/ratatui_ruby/style/style.rb +2 -0
  175. data/lib/ratatui_ruby/style.rb +2 -0
  176. data/lib/ratatui_ruby/table_state.rb +2 -0
  177. data/lib/ratatui_ruby/test_helper/event_injection.rb +2 -0
  178. data/lib/ratatui_ruby/test_helper/snapshot.rb +2 -0
  179. data/lib/ratatui_ruby/test_helper/style_assertions.rb +2 -0
  180. data/lib/ratatui_ruby/test_helper/terminal.rb +2 -0
  181. data/lib/ratatui_ruby/test_helper/test_doubles.rb +2 -0
  182. data/lib/ratatui_ruby/test_helper.rb +5 -3
  183. data/lib/ratatui_ruby/tui/buffer_factories.rb +2 -0
  184. data/lib/ratatui_ruby/tui/canvas_factories.rb +2 -0
  185. data/lib/ratatui_ruby/tui/core.rb +2 -0
  186. data/lib/ratatui_ruby/tui/layout_factories.rb +2 -0
  187. data/lib/ratatui_ruby/tui/state_factories.rb +2 -0
  188. data/lib/ratatui_ruby/tui/style_factories.rb +2 -0
  189. data/lib/ratatui_ruby/tui/text_factories.rb +2 -0
  190. data/lib/ratatui_ruby/tui/widget_factories.rb +2 -0
  191. data/lib/ratatui_ruby/tui.rb +2 -0
  192. data/lib/ratatui_ruby/version.rb +3 -1
  193. data/lib/ratatui_ruby/widgets/bar_chart/bar.rb +2 -0
  194. data/lib/ratatui_ruby/widgets/bar_chart/bar_group.rb +2 -0
  195. data/lib/ratatui_ruby/widgets/bar_chart.rb +4 -2
  196. data/lib/ratatui_ruby/widgets/block.rb +4 -2
  197. data/lib/ratatui_ruby/widgets/calendar.rb +4 -2
  198. data/lib/ratatui_ruby/widgets/canvas.rb +2 -0
  199. data/lib/ratatui_ruby/widgets/cell.rb +2 -0
  200. data/lib/ratatui_ruby/widgets/center.rb +2 -0
  201. data/lib/ratatui_ruby/widgets/chart.rb +4 -2
  202. data/lib/ratatui_ruby/widgets/clear.rb +2 -0
  203. data/lib/ratatui_ruby/widgets/cursor.rb +2 -0
  204. data/lib/ratatui_ruby/widgets/gauge.rb +4 -2
  205. data/lib/ratatui_ruby/widgets/line_gauge.rb +4 -2
  206. data/lib/ratatui_ruby/widgets/list.rb +3 -1
  207. data/lib/ratatui_ruby/widgets/list_item.rb +2 -0
  208. data/lib/ratatui_ruby/widgets/overlay.rb +2 -0
  209. data/lib/ratatui_ruby/widgets/paragraph.rb +2 -0
  210. data/lib/ratatui_ruby/widgets/ratatui_logo.rb +4 -2
  211. data/lib/ratatui_ruby/widgets/ratatui_mascot.rb +4 -2
  212. data/lib/ratatui_ruby/widgets/row.rb +2 -0
  213. data/lib/ratatui_ruby/widgets/scrollbar.rb +4 -2
  214. data/lib/ratatui_ruby/widgets/shape/label.rb +2 -0
  215. data/lib/ratatui_ruby/widgets/sparkline.rb +4 -2
  216. data/lib/ratatui_ruby/widgets/table.rb +2 -0
  217. data/lib/ratatui_ruby/widgets/tabs.rb +12 -8
  218. data/lib/ratatui_ruby/widgets.rb +2 -0
  219. data/lib/ratatui_ruby.rb +2 -0
  220. data/tasks/autodoc/examples.rb +2 -0
  221. data/tasks/autodoc/member.rb +2 -0
  222. data/tasks/autodoc/name.rb +2 -0
  223. data/tasks/autodoc.rake +2 -0
  224. data/tasks/bump/cargo_lockfile.rb +2 -0
  225. data/tasks/bump/changelog.rb +10 -0
  226. data/tasks/bump/header.rb +2 -0
  227. data/tasks/bump/history.rb +2 -0
  228. data/tasks/bump/links.rb +2 -0
  229. data/tasks/bump/manifest.rb +2 -0
  230. data/tasks/bump/ruby_gem.rb +14 -0
  231. data/tasks/bump/sem_ver.rb +2 -0
  232. data/tasks/bump/unreleased_section.rb +18 -0
  233. data/tasks/bump.rake +2 -0
  234. data/tasks/doc.rake +268 -0
  235. data/tasks/extension.rake +2 -0
  236. data/tasks/lint.rake +115 -0
  237. data/tasks/rdoc_config.rb +18 -4
  238. data/tasks/sourcehut.rake +2 -0
  239. data/tasks/terminal_preview/app_screenshot.rb +2 -0
  240. data/tasks/terminal_preview/crash_report.rb +2 -0
  241. data/tasks/terminal_preview/example_app.rb +2 -0
  242. data/tasks/terminal_preview/launcher_script.rb +2 -0
  243. data/tasks/terminal_preview/preview_collection.rb +2 -0
  244. data/tasks/terminal_preview/preview_timing.rb +2 -0
  245. data/tasks/terminal_preview/safety_confirmation.rb +2 -0
  246. data/tasks/terminal_preview/saved_screenshot.rb +2 -0
  247. data/tasks/terminal_preview/system_appearance.rb +2 -0
  248. data/tasks/terminal_preview/terminal_window.rb +2 -0
  249. data/tasks/terminal_preview/window_id.rb +2 -0
  250. data/tasks/terminal_preview.rake +2 -0
  251. data/tasks/test.rake +2 -0
  252. data/tasks/website/index_page.rb +2 -0
  253. data/tasks/website/version.rb +12 -2
  254. data/tasks/website/version_menu.rb +2 -0
  255. data/tasks/website/versioned_documentation.rb +2 -0
  256. data/tasks/website/website.rb +2 -0
  257. data/tasks/website.rake +2 -0
  258. metadata +72 -72
  259. data/doc/contributors/architectural_overhaul/chat_conversations.md +0 -4952
  260. data/doc/contributors/architectural_overhaul/implementation_plan.md +0 -60
  261. data/doc/contributors/architectural_overhaul/task.md +0 -37
  262. /data/doc/{application_testing.md → concepts/application_testing.md} +0 -0
  263. /data/doc/{interactive_design.md → concepts/interactive_design.md} +0 -0
  264. /data/doc/images/{widget_barchart_demo.png → widget_barchart.png} +0 -0
  265. /data/doc/images/{widget_block_demo.png → widget_block.png} +0 -0
  266. /data/doc/images/{widget_box_demo.png → widget_box.png} +0 -0
  267. /data/doc/images/{widget_calendar_demo.png → widget_calendar.png} +0 -0
  268. /data/doc/images/{widget_canvas_demo.png → widget_canvas.png} +0 -0
  269. /data/doc/images/{widget_cell_demo.png → widget_cell.png} +0 -0
  270. /data/doc/images/{widget_center_demo.png → widget_center.png} +0 -0
  271. /data/doc/images/{widget_chart_demo.png → widget_chart.png} +0 -0
  272. /data/doc/images/{widget_gauge_demo.png → widget_gauge.png} +0 -0
  273. /data/doc/images/{widget_line_gauge_demo.png → widget_line_gauge.png} +0 -0
  274. /data/doc/images/{widget_list_demo.png → widget_list.png} +0 -0
  275. /data/doc/images/{widget_map_demo.png → widget_map.png} +0 -0
  276. /data/doc/images/{widget_overlay_demo.png → widget_overlay.png} +0 -0
  277. /data/doc/images/{widget_popup_demo.png → widget_popup.png} +0 -0
  278. /data/doc/images/{widget_ratatui_logo_demo.png → widget_ratatui_logo.png} +0 -0
  279. /data/doc/images/{widget_ratatui_mascot_demo.png → widget_ratatui_mascot.png} +0 -0
  280. /data/doc/images/{widget_scrollbar_demo.png → widget_scrollbar.png} +0 -0
  281. /data/doc/images/{widget_sparkline_demo.png → widget_sparkline.png} +0 -0
  282. /data/doc/images/{widget_table_demo.png → widget_table.png} +0 -0
  283. /data/doc/images/{widget_tabs_demo.png → widget_tabs.png} +0 -0
  284. /data/doc/{v0.7.0_migration.md → migration/v0_7_0.md} +0 -0
data/tasks/rdoc_config.rb CHANGED
@@ -1,15 +1,29 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  module RDocConfig
7
- RDOC_FILES = %w[
8
- **/*.md
9
- **/*.rdoc
9
+ MAX_FILE_SIZE = 100_000 # 100KB - skip large files like chat logs
10
+
11
+ RDOC_FILES = Dir.glob(%w[
12
+ doc/**/*.md
13
+ examples/**/*.md
14
+ *.md
15
+ *.rdoc
10
16
  lib/**/*.rb
11
17
  exe/**/*
12
- ].freeze
18
+ ]).reject { |f|
19
+ # Skip large files
20
+ if File.size(f) > MAX_FILE_SIZE
21
+ warn "RDoc: skipping #{f} (#{File.size(f) / 1024}KB > #{MAX_FILE_SIZE / 1024}KB limit)"
22
+ next true
23
+ end
24
+ # Skip verification examples (internal testing, not user-facing)
25
+ f.start_with?("examples/verify_")
26
+ }.freeze
13
27
 
14
28
  MAIN = "README.md"
15
29
  end
data/tasks/sourcehut.rake CHANGED
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  desc "Generate SourceHut build manifests from template"
7
9
  task sourcehut: "sourcehut:build"
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  require "tmpdir"
7
9
  require_relative "launcher_script"
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  class CrashReport < Data.define(:app, :error, :preamble)
7
9
  def self.new(app, error, preamble = nil)
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  class ExampleApp < Data.define(:directory)
7
9
  def self.all
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  require "fileutils"
7
9
  require "tmpdir"
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  require "fileutils"
7
9
  require_relative "example_app"
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  class PreviewTiming
7
9
  def self.window_startup
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  require_relative "preview_timing"
7
9
  require_relative "system_appearance"
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  require "time"
7
9
 
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  class SystemAppearance
7
9
  def self.dark?
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  require_relative "window_id"
7
9
  require_relative "preview_timing"
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  class WindowID < Data.define(:value)
7
9
  def valid?
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  require "fileutils"
7
9
  require_relative "terminal_preview/preview_collection"
data/tasks/test.rake CHANGED
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  require "minitest/test_task"
7
9
 
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  require "erb"
7
9
 
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  require "rubygems"
7
9
  require "fileutils"
@@ -13,7 +15,14 @@ class Version
13
15
  .sort_by(&:semver)
14
16
  .reverse
15
17
 
16
- [Edge.new] + sorted_versions
18
+ # Keep only the latest patch for each minor version
19
+ # e.g., if we have v0.6.0, v0.6.1, v0.6.2, only keep v0.6.2
20
+ latest_per_minor = sorted_versions
21
+ .group_by { |v| v.semver.segments[0..1] } # group by [major, minor]
22
+ .values
23
+ .map(&:first) # take the first (highest patch) from each group
24
+
25
+ [Edge.new] + latest_per_minor
17
26
  end
18
27
 
19
28
  def slug
@@ -85,7 +94,8 @@ class Tagged < Version
85
94
  end
86
95
 
87
96
  def slug
88
- @tag
97
+ segments = semver.segments
98
+ "v#{segments[0]}.#{segments[1]}"
89
99
  end
90
100
 
91
101
  def name
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  class VersionMenu
7
9
  def initialize(root:, versions:)
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  require_relative "../rdoc_config"
7
9
 
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  require_relative "version"
7
9
  require_relative "versioned_documentation"
data/tasks/website.rake CHANGED
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ #--
3
4
  # SPDX-FileCopyrightText: 2025 Kerrick Long <me@kerricklong.com>
4
5
  # SPDX-License-Identifier: AGPL-3.0-or-later
6
+ #++
5
7
 
6
8
  require "erb"
7
9
  require "fileutils"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ratatui_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kerrick Long
@@ -105,11 +105,12 @@ files:
105
105
  - README.md
106
106
  - REUSE.toml
107
107
  - Rakefile
108
- - doc/application_architecture.md
109
- - doc/application_testing.md
110
- - doc/contributors/architectural_overhaul/chat_conversations.md
111
- - doc/contributors/architectural_overhaul/implementation_plan.md
112
- - doc/contributors/architectural_overhaul/task.md
108
+ - doc/concepts/application_architecture.md
109
+ - doc/concepts/application_testing.md
110
+ - doc/concepts/async.md
111
+ - doc/concepts/event_handling.md
112
+ - doc/concepts/interactive_design.md
113
+ - doc/contributors/auditing/parity.md
113
114
  - doc/contributors/design.md
114
115
  - doc/contributors/design/ruby_frontend.md
115
116
  - doc/contributors/design/rust_backend.md
@@ -118,7 +119,8 @@ files:
118
119
  - doc/contributors/index.md
119
120
  - doc/contributors/v1.0.0_blockers.md
120
121
  - doc/custom.css
121
- - doc/event_handling.md
122
+ - doc/getting_started/quickstart.md
123
+ - doc/getting_started/why.md
122
124
  - doc/images/app_all_events.png
123
125
  - doc/images/app_color_picker.png
124
126
  - doc/images/app_login_form.png
@@ -127,39 +129,37 @@ files:
127
129
  - doc/images/verify_quickstart_layout.png
128
130
  - doc/images/verify_quickstart_lifecycle.png
129
131
  - doc/images/verify_readme_usage.png
130
- - doc/images/widget_barchart_demo.png
131
- - doc/images/widget_block_demo.png
132
- - doc/images/widget_box_demo.png
133
- - doc/images/widget_calendar_demo.png
134
- - doc/images/widget_canvas_demo.png
135
- - doc/images/widget_cell_demo.png
136
- - doc/images/widget_center_demo.png
137
- - doc/images/widget_chart_demo.png
138
- - doc/images/widget_gauge_demo.png
132
+ - doc/images/widget_barchart.png
133
+ - doc/images/widget_block.png
134
+ - doc/images/widget_box.png
135
+ - doc/images/widget_calendar.png
136
+ - doc/images/widget_canvas.png
137
+ - doc/images/widget_cell.png
138
+ - doc/images/widget_center.png
139
+ - doc/images/widget_chart.png
140
+ - doc/images/widget_gauge.png
139
141
  - doc/images/widget_layout_split.png
140
- - doc/images/widget_line_gauge_demo.png
141
- - doc/images/widget_list_demo.png
142
- - doc/images/widget_map_demo.png
143
- - doc/images/widget_overlay_demo.png
144
- - doc/images/widget_popup_demo.png
145
- - doc/images/widget_ratatui_logo_demo.png
146
- - doc/images/widget_ratatui_mascot_demo.png
142
+ - doc/images/widget_line_gauge.png
143
+ - doc/images/widget_list.png
144
+ - doc/images/widget_map.png
145
+ - doc/images/widget_overlay.png
146
+ - doc/images/widget_popup.png
147
+ - doc/images/widget_ratatui_logo.png
148
+ - doc/images/widget_ratatui_mascot.png
147
149
  - doc/images/widget_rect.png
148
150
  - doc/images/widget_render.png
149
151
  - doc/images/widget_rich_text.png
150
152
  - doc/images/widget_scroll_text.png
151
- - doc/images/widget_scrollbar_demo.png
152
- - doc/images/widget_sparkline_demo.png
153
+ - doc/images/widget_scrollbar.png
154
+ - doc/images/widget_sparkline.png
153
155
  - doc/images/widget_style_colors.png
154
- - doc/images/widget_table_demo.png
155
- - doc/images/widget_tabs_demo.png
156
+ - doc/images/widget_table.png
157
+ - doc/images/widget_tabs.png
156
158
  - doc/images/widget_text_width.png
157
159
  - doc/index.md
158
- - doc/interactive_design.md
159
- - doc/quickstart.md
160
- - doc/terminal_limitations.md
161
- - doc/v0.7.0_migration.md
162
- - doc/why.md
160
+ - doc/migration/v0_7_0.md
161
+ - doc/troubleshooting/debugging.md
162
+ - doc/troubleshooting/terminal_limitations.md
163
163
  - examples/app_all_events/README.md
164
164
  - examples/app_all_events/app.rb
165
165
  - examples/app_all_events/model/app_model.rb
@@ -198,40 +198,40 @@ files:
198
198
  - examples/verify_quickstart_lifecycle/app.rb
199
199
  - examples/verify_readme_usage/README.md
200
200
  - examples/verify_readme_usage/app.rb
201
- - examples/widget_barchart_demo/README.md
202
- - examples/widget_barchart_demo/app.rb
203
- - examples/widget_block_demo/README.md
204
- - examples/widget_block_demo/app.rb
205
- - examples/widget_box_demo/README.md
206
- - examples/widget_box_demo/app.rb
207
- - examples/widget_calendar_demo/README.md
208
- - examples/widget_calendar_demo/app.rb
209
- - examples/widget_canvas_demo/README.md
210
- - examples/widget_canvas_demo/app.rb
211
- - examples/widget_cell_demo/README.md
212
- - examples/widget_cell_demo/app.rb
213
- - examples/widget_center_demo/README.md
214
- - examples/widget_center_demo/app.rb
215
- - examples/widget_chart_demo/README.md
216
- - examples/widget_chart_demo/app.rb
217
- - examples/widget_gauge_demo/README.md
218
- - examples/widget_gauge_demo/app.rb
201
+ - examples/widget_barchart/README.md
202
+ - examples/widget_barchart/app.rb
203
+ - examples/widget_block/README.md
204
+ - examples/widget_block/app.rb
205
+ - examples/widget_box/README.md
206
+ - examples/widget_box/app.rb
207
+ - examples/widget_calendar/README.md
208
+ - examples/widget_calendar/app.rb
209
+ - examples/widget_canvas/README.md
210
+ - examples/widget_canvas/app.rb
211
+ - examples/widget_cell/README.md
212
+ - examples/widget_cell/app.rb
213
+ - examples/widget_center/README.md
214
+ - examples/widget_center/app.rb
215
+ - examples/widget_chart/README.md
216
+ - examples/widget_chart/app.rb
217
+ - examples/widget_gauge/README.md
218
+ - examples/widget_gauge/app.rb
219
219
  - examples/widget_layout_split/README.md
220
220
  - examples/widget_layout_split/app.rb
221
- - examples/widget_line_gauge_demo/README.md
222
- - examples/widget_line_gauge_demo/app.rb
223
- - examples/widget_list_demo/README.md
224
- - examples/widget_list_demo/app.rb
225
- - examples/widget_map_demo/README.md
226
- - examples/widget_map_demo/app.rb
227
- - examples/widget_overlay_demo/README.md
228
- - examples/widget_overlay_demo/app.rb
229
- - examples/widget_popup_demo/README.md
230
- - examples/widget_popup_demo/app.rb
231
- - examples/widget_ratatui_logo_demo/README.md
232
- - examples/widget_ratatui_logo_demo/app.rb
233
- - examples/widget_ratatui_mascot_demo/README.md
234
- - examples/widget_ratatui_mascot_demo/app.rb
221
+ - examples/widget_line_gauge/README.md
222
+ - examples/widget_line_gauge/app.rb
223
+ - examples/widget_list/README.md
224
+ - examples/widget_list/app.rb
225
+ - examples/widget_map/README.md
226
+ - examples/widget_map/app.rb
227
+ - examples/widget_overlay/README.md
228
+ - examples/widget_overlay/app.rb
229
+ - examples/widget_popup/README.md
230
+ - examples/widget_popup/app.rb
231
+ - examples/widget_ratatui_logo/README.md
232
+ - examples/widget_ratatui_logo/app.rb
233
+ - examples/widget_ratatui_mascot/README.md
234
+ - examples/widget_ratatui_mascot/app.rb
235
235
  - examples/widget_rect/README.md
236
236
  - examples/widget_rect/app.rb
237
237
  - examples/widget_render/README.md
@@ -240,16 +240,16 @@ files:
240
240
  - examples/widget_rich_text/app.rb
241
241
  - examples/widget_scroll_text/README.md
242
242
  - examples/widget_scroll_text/app.rb
243
- - examples/widget_scrollbar_demo/README.md
244
- - examples/widget_scrollbar_demo/app.rb
245
- - examples/widget_sparkline_demo/README.md
246
- - examples/widget_sparkline_demo/app.rb
243
+ - examples/widget_scrollbar/README.md
244
+ - examples/widget_scrollbar/app.rb
245
+ - examples/widget_sparkline/README.md
246
+ - examples/widget_sparkline/app.rb
247
247
  - examples/widget_style_colors/README.md
248
248
  - examples/widget_style_colors/app.rb
249
- - examples/widget_table_demo/README.md
250
- - examples/widget_table_demo/app.rb
251
- - examples/widget_tabs_demo/README.md
252
- - examples/widget_tabs_demo/app.rb
249
+ - examples/widget_table/README.md
250
+ - examples/widget_table/app.rb
251
+ - examples/widget_tabs/README.md
252
+ - examples/widget_tabs/app.rb
253
253
  - examples/widget_text_width/README.md
254
254
  - examples/widget_text_width/app.rb
255
255
  - exe/.gitkeep