ratatui_ruby 1.0.0 → 1.1.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.
- checksums.yaml +4 -4
- data/.builds/ruby-3.2.yml +1 -1
- data/.builds/ruby-3.3.yml +1 -1
- data/.builds/ruby-3.4.yml +1 -1
- data/.builds/ruby-4.0.0.yml +1 -1
- data/AGENTS.md +3 -2
- data/CHANGELOG.md +33 -7
- data/Steepfile +1 -0
- data/doc/concepts/application_testing.md +5 -5
- data/doc/concepts/event_handling.md +1 -1
- data/doc/contributors/design/ruby_frontend.md +40 -12
- data/doc/contributors/design/rust_backend.md +13 -1
- data/doc/contributors/releasing.md +215 -0
- data/doc/contributors/todo/align/api_completeness_audit-finished.md +6 -0
- data/doc/contributors/todo/align/api_completeness_audit-unfinished.md +1 -7
- data/doc/contributors/todo/align/term.md +351 -0
- data/doc/contributors/upstream_requests/paragraph_span_rects.md +259 -0
- data/doc/getting_started/quickstart.md +1 -1
- data/doc/getting_started/why.md +3 -3
- data/doc/images/app_external_editor.gif +0 -0
- data/doc/index.md +1 -6
- data/examples/app_external_editor/README.md +62 -0
- data/examples/app_external_editor/app.rb +344 -0
- data/examples/widget_list/app.rb +2 -4
- data/examples/widget_table/app.rb +8 -2
- data/ext/ratatui_ruby/Cargo.lock +1 -1
- data/ext/ratatui_ruby/Cargo.toml +1 -1
- data/ext/ratatui_ruby/src/events.rs +171 -203
- data/ext/ratatui_ruby/src/lib.rs +36 -0
- data/ext/ratatui_ruby/src/lib_header.rs +11 -0
- data/ext/ratatui_ruby/src/terminal/capabilities.rs +46 -0
- data/ext/ratatui_ruby/src/terminal/init.rs +92 -0
- data/ext/ratatui_ruby/src/terminal/mod.rs +12 -3
- data/ext/ratatui_ruby/src/terminal/queries.rs +15 -0
- data/ext/ratatui_ruby/src/terminal/query.rs +64 -2
- data/lib/ratatui_ruby/backend/window_size.rb +50 -0
- data/lib/ratatui_ruby/backend.rb +59 -0
- data/lib/ratatui_ruby/event/key/navigation.rb +10 -1
- data/lib/ratatui_ruby/event/key.rb +84 -0
- data/lib/ratatui_ruby/event/mouse.rb +95 -3
- data/lib/ratatui_ruby/event/resize.rb +45 -3
- data/lib/ratatui_ruby/layout/alignment.rb +91 -0
- data/lib/ratatui_ruby/layout/layout.rb +1 -2
- data/lib/ratatui_ruby/layout/size.rb +10 -3
- data/lib/ratatui_ruby/layout.rb +4 -0
- data/lib/ratatui_ruby/terminal/capabilities.rb +316 -0
- data/lib/ratatui_ruby/terminal/viewport.rb +1 -1
- data/lib/ratatui_ruby/terminal.rb +66 -0
- data/lib/ratatui_ruby/test_helper/global_state.rb +111 -0
- data/lib/ratatui_ruby/test_helper.rb +3 -0
- data/lib/ratatui_ruby/version.rb +1 -1
- data/lib/ratatui_ruby/widgets/table.rb +2 -2
- data/lib/ratatui_ruby.rb +25 -4
- data/sig/examples/app_external_editor/app.rbs +12 -0
- data/sig/generated/event_key_predicates.rbs +1348 -0
- data/sig/ratatui_ruby/backend/window_size.rbs +17 -0
- data/sig/ratatui_ruby/backend.rbs +12 -0
- data/sig/ratatui_ruby/event.rbs +7 -0
- data/sig/ratatui_ruby/layout/alignment.rbs +26 -0
- data/sig/ratatui_ruby/ratatui_ruby.rbs +2 -0
- data/sig/ratatui_ruby/terminal/capabilities.rbs +38 -0
- data/sig/ratatui_ruby/terminal/viewport.rbs +15 -1
- data/tasks/bump/bump_workflow.rb +49 -0
- data/tasks/bump/changelog.rb +57 -0
- data/tasks/bump/patch_release.rb +19 -0
- data/tasks/bump/release_branch.rb +17 -0
- data/tasks/bump/release_from_trunk.rb +49 -0
- data/tasks/bump/repository.rb +54 -0
- data/tasks/bump/ruby_gem.rb +6 -26
- data/tasks/bump/sem_ver.rb +4 -0
- data/tasks/bump/unreleased_section.rb +17 -0
- data/tasks/bump.rake +21 -11
- data/tasks/doc/documentation.rb +59 -0
- data/tasks/doc/link/file_url.rb +30 -0
- data/tasks/doc/link/relative_path.rb +61 -0
- data/tasks/doc/link/web_url.rb +55 -0
- data/tasks/doc/link.rb +52 -0
- data/tasks/doc/link_audit.rb +116 -0
- data/tasks/doc/problem.rb +40 -0
- data/tasks/doc/source_file.rb +93 -0
- data/tasks/doc.rake +18 -0
- data/tasks/rbs_predicates/predicate_catalog.rb +52 -0
- data/tasks/rbs_predicates/predicate_tests.rb +124 -0
- data/tasks/rbs_predicates/rbs_signature.rb +63 -0
- data/tasks/rbs_predicates.rake +31 -0
- data/tasks/test.rake +3 -0
- data/tasks/website/version.rb +23 -28
- metadata +38 -1
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
#--
|
|
4
|
+
# SPDX-FileCopyrightText: 2026 Kerrick Long <me@kerricklong.com>
|
|
5
|
+
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
6
|
+
#++
|
|
7
|
+
|
|
8
|
+
# NOTE: Do NOT require predicate_catalog here - it requires ratatui_ruby,
|
|
9
|
+
# which needs the native extension to be compiled first. Require inside tasks.
|
|
10
|
+
|
|
11
|
+
namespace :rbs do
|
|
12
|
+
desc "Generate RBS declarations for Event::Key predicates"
|
|
13
|
+
task predicates: :compile do
|
|
14
|
+
require_relative "rbs_predicates/predicate_catalog"
|
|
15
|
+
require_relative "rbs_predicates/rbs_signature"
|
|
16
|
+
|
|
17
|
+
catalog = PredicateCatalog.new
|
|
18
|
+
signature = RbsSignature.new(catalog)
|
|
19
|
+
signature.write
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
desc "Generate Minitest assertions for Event::Key predicates"
|
|
23
|
+
task tests: :compile do
|
|
24
|
+
require_relative "rbs_predicates/predicate_catalog"
|
|
25
|
+
require_relative "rbs_predicates/predicate_tests"
|
|
26
|
+
|
|
27
|
+
catalog = PredicateCatalog.new
|
|
28
|
+
tests = PredicateTests.new(catalog)
|
|
29
|
+
tests.persist!
|
|
30
|
+
end
|
|
31
|
+
end
|
data/tasks/test.rake
CHANGED
data/tasks/website/version.rb
CHANGED
|
@@ -37,10 +37,24 @@ class Version
|
|
|
37
37
|
raise NotImplementedError
|
|
38
38
|
end
|
|
39
39
|
|
|
40
|
-
def
|
|
40
|
+
def ref
|
|
41
41
|
raise NotImplementedError
|
|
42
42
|
end
|
|
43
43
|
|
|
44
|
+
def checkout(globs:, &block)
|
|
45
|
+
Dir.mktmpdir do |path|
|
|
46
|
+
# Use git archive to export the version at the specified ref
|
|
47
|
+
# Pipe to tar to extract into the temporary directory
|
|
48
|
+
system("git archive #{ref} | tar -x -C #{path}")
|
|
49
|
+
|
|
50
|
+
# Remove the native extension directory as we don't need it for builds
|
|
51
|
+
# and it can cause issues if not meant to be compiled in this context
|
|
52
|
+
FileUtils.rm_rf("#{path}/ext")
|
|
53
|
+
|
|
54
|
+
yield path
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
44
58
|
def latest?
|
|
45
59
|
false
|
|
46
60
|
end
|
|
@@ -63,26 +77,12 @@ class Edge < Version
|
|
|
63
77
|
:edge
|
|
64
78
|
end
|
|
65
79
|
|
|
66
|
-
def
|
|
67
|
-
|
|
80
|
+
def ref
|
|
81
|
+
"trunk"
|
|
68
82
|
end
|
|
69
83
|
|
|
70
|
-
def
|
|
71
|
-
|
|
72
|
-
# Use git ls-files for accurate source list
|
|
73
|
-
files = `git ls-files`.split("\n").select do |f|
|
|
74
|
-
globs.any? { |glob| File.fnmatch(glob, f, File::FNM_PATHNAME) }
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
files.each do |file|
|
|
78
|
-
dest = File.join(path, file)
|
|
79
|
-
next unless File.exist?(file) # Skip files that are in the index but deleted in the working tree
|
|
80
|
-
FileUtils.mkdir_p(File.dirname(dest))
|
|
81
|
-
FileUtils.cp(file, dest)
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
yield path
|
|
85
|
-
end
|
|
84
|
+
def edge?
|
|
85
|
+
true
|
|
86
86
|
end
|
|
87
87
|
end
|
|
88
88
|
|
|
@@ -106,6 +106,10 @@ class Tagged < Version
|
|
|
106
106
|
:version
|
|
107
107
|
end
|
|
108
108
|
|
|
109
|
+
def ref
|
|
110
|
+
@tag
|
|
111
|
+
end
|
|
112
|
+
|
|
109
113
|
def semver
|
|
110
114
|
Gem::Version.new(@tag.sub(/^v/, ""))
|
|
111
115
|
end
|
|
@@ -115,13 +119,4 @@ class Tagged < Version
|
|
|
115
119
|
def latest?
|
|
116
120
|
@is_latest
|
|
117
121
|
end
|
|
118
|
-
|
|
119
|
-
def checkout(globs:, &block)
|
|
120
|
-
Dir.mktmpdir do |path|
|
|
121
|
-
system("git archive #{@tag} | tar -x -C #{path}")
|
|
122
|
-
# We could enforce globs here too, but git archive is usually sufficient.
|
|
123
|
-
FileUtils.rm_rf("#{path}/ext")
|
|
124
|
-
yield path
|
|
125
|
-
end
|
|
126
|
-
end
|
|
127
122
|
end
|
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: 1.
|
|
4
|
+
version: 1.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Kerrick Long
|
|
@@ -438,10 +438,13 @@ files:
|
|
|
438
438
|
- doc/contributors/developing_examples.md
|
|
439
439
|
- doc/contributors/documentation_style.md
|
|
440
440
|
- doc/contributors/index.md
|
|
441
|
+
- doc/contributors/releasing.md
|
|
441
442
|
- doc/contributors/todo/align/api_completeness_audit-finished.md
|
|
442
443
|
- doc/contributors/todo/align/api_completeness_audit-unfinished.md
|
|
444
|
+
- doc/contributors/todo/align/term.md
|
|
443
445
|
- doc/contributors/todo/align/terminal.md
|
|
444
446
|
- doc/contributors/todo/future_work.md
|
|
447
|
+
- doc/contributors/upstream_requests/paragraph_span_rects.md
|
|
445
448
|
- doc/contributors/upstream_requests/tab_rects.md
|
|
446
449
|
- doc/contributors/upstream_requests/title_rects.md
|
|
447
450
|
- doc/custom.css
|
|
@@ -452,6 +455,7 @@ files:
|
|
|
452
455
|
- doc/images/app_color_picker.png
|
|
453
456
|
- doc/images/app_debugging_showcase.gif
|
|
454
457
|
- doc/images/app_debugging_showcase.png
|
|
458
|
+
- doc/images/app_external_editor.gif
|
|
455
459
|
- doc/images/app_login_form.png
|
|
456
460
|
- doc/images/app_stateful_interaction.png
|
|
457
461
|
- doc/images/verify_quickstart_dsl.png
|
|
@@ -518,6 +522,8 @@ files:
|
|
|
518
522
|
- examples/app_color_picker/palette.rb
|
|
519
523
|
- examples/app_debugging_showcase/README.md
|
|
520
524
|
- examples/app_debugging_showcase/app.rb
|
|
525
|
+
- examples/app_external_editor/README.md
|
|
526
|
+
- examples/app_external_editor/app.rb
|
|
521
527
|
- examples/app_login_form/README.md
|
|
522
528
|
- examples/app_login_form/app.rb
|
|
523
529
|
- examples/app_stateful_interaction/README.md
|
|
@@ -604,9 +610,11 @@ files:
|
|
|
604
610
|
- ext/ratatui_ruby/src/events.rs
|
|
605
611
|
- ext/ratatui_ruby/src/frame.rs
|
|
606
612
|
- ext/ratatui_ruby/src/lib.rs
|
|
613
|
+
- ext/ratatui_ruby/src/lib_header.rs
|
|
607
614
|
- ext/ratatui_ruby/src/rendering.rs
|
|
608
615
|
- ext/ratatui_ruby/src/string_width.rs
|
|
609
616
|
- ext/ratatui_ruby/src/style.rs
|
|
617
|
+
- ext/ratatui_ruby/src/terminal/capabilities.rs
|
|
610
618
|
- ext/ratatui_ruby/src/terminal/init.rs
|
|
611
619
|
- ext/ratatui_ruby/src/terminal/mod.rs
|
|
612
620
|
- ext/ratatui_ruby/src/terminal/mutations.rs
|
|
@@ -640,6 +648,8 @@ files:
|
|
|
640
648
|
- ext/ratatui_ruby/src/widgets/table_state.rs
|
|
641
649
|
- ext/ratatui_ruby/src/widgets/tabs.rs
|
|
642
650
|
- lib/ratatui_ruby.rb
|
|
651
|
+
- lib/ratatui_ruby/backend.rb
|
|
652
|
+
- lib/ratatui_ruby/backend/window_size.rb
|
|
643
653
|
- lib/ratatui_ruby/buffer.rb
|
|
644
654
|
- lib/ratatui_ruby/buffer/cell.rb
|
|
645
655
|
- lib/ratatui_ruby/cell.rb
|
|
@@ -664,6 +674,7 @@ files:
|
|
|
664
674
|
- lib/ratatui_ruby/labs/a11y.rb
|
|
665
675
|
- lib/ratatui_ruby/labs/frame_a11y_capture.rb
|
|
666
676
|
- lib/ratatui_ruby/layout.rb
|
|
677
|
+
- lib/ratatui_ruby/layout/alignment.rb
|
|
667
678
|
- lib/ratatui_ruby/layout/constraint.rb
|
|
668
679
|
- lib/ratatui_ruby/layout/layout.rb
|
|
669
680
|
- lib/ratatui_ruby/layout/position.rb
|
|
@@ -678,11 +689,14 @@ files:
|
|
|
678
689
|
- lib/ratatui_ruby/symbols.rb
|
|
679
690
|
- lib/ratatui_ruby/synthetic_events.rb
|
|
680
691
|
- lib/ratatui_ruby/table_state.rb
|
|
692
|
+
- lib/ratatui_ruby/terminal.rb
|
|
693
|
+
- lib/ratatui_ruby/terminal/capabilities.rb
|
|
681
694
|
- lib/ratatui_ruby/terminal/viewport.rb
|
|
682
695
|
- lib/ratatui_ruby/terminal_lifecycle.rb
|
|
683
696
|
- lib/ratatui_ruby/terminal_lifecycle.rb.bak
|
|
684
697
|
- lib/ratatui_ruby/test_helper.rb
|
|
685
698
|
- lib/ratatui_ruby/test_helper/event_injection.rb
|
|
699
|
+
- lib/ratatui_ruby/test_helper/global_state.rb
|
|
686
700
|
- lib/ratatui_ruby/test_helper/snapshot.rb
|
|
687
701
|
- lib/ratatui_ruby/test_helper/snapshots/axis_labels_alignment.ansi
|
|
688
702
|
- lib/ratatui_ruby/test_helper/snapshots/axis_labels_alignment.txt
|
|
@@ -762,6 +776,7 @@ files:
|
|
|
762
776
|
- sig/examples/app_all_events/view/log_view.rbs
|
|
763
777
|
- sig/examples/app_cli_rich_moments/app.rbs
|
|
764
778
|
- sig/examples/app_color_picker/app.rbs
|
|
779
|
+
- sig/examples/app_external_editor/app.rbs
|
|
765
780
|
- sig/examples/app_login_form/app.rbs
|
|
766
781
|
- sig/examples/app_stateful_interaction/app.rbs
|
|
767
782
|
- sig/examples/verify_quickstart_dsl/app.rbs
|
|
@@ -789,9 +804,12 @@ files:
|
|
|
789
804
|
- sig/examples/widget_style_colors/app.rbs
|
|
790
805
|
- sig/examples/widget_table_demo/app.rbs
|
|
791
806
|
- sig/examples/widget_text_width/app.rbs
|
|
807
|
+
- sig/generated/event_key_predicates.rbs
|
|
792
808
|
- sig/manifest.yaml
|
|
793
809
|
- sig/patches/data.rbs
|
|
794
810
|
- sig/patches/debugger__.rbs
|
|
811
|
+
- sig/ratatui_ruby/backend.rbs
|
|
812
|
+
- sig/ratatui_ruby/backend/window_size.rbs
|
|
795
813
|
- sig/ratatui_ruby/buffer.rbs
|
|
796
814
|
- sig/ratatui_ruby/buffer/cell.rbs
|
|
797
815
|
- sig/ratatui_ruby/cell.rbs
|
|
@@ -803,6 +821,7 @@ files:
|
|
|
803
821
|
- sig/ratatui_ruby/frame.rbs
|
|
804
822
|
- sig/ratatui_ruby/interfaces.rbs
|
|
805
823
|
- sig/ratatui_ruby/labs.rbs
|
|
824
|
+
- sig/ratatui_ruby/layout/alignment.rbs
|
|
806
825
|
- sig/ratatui_ruby/layout/constraint.rbs
|
|
807
826
|
- sig/ratatui_ruby/layout/layout.rbs
|
|
808
827
|
- sig/ratatui_ruby/layout/position.rbs
|
|
@@ -819,6 +838,7 @@ files:
|
|
|
819
838
|
- sig/ratatui_ruby/symbols.rbs
|
|
820
839
|
- sig/ratatui_ruby/synthetic_events.rbs
|
|
821
840
|
- sig/ratatui_ruby/table_state.rbs
|
|
841
|
+
- sig/ratatui_ruby/terminal/capabilities.rbs
|
|
822
842
|
- sig/ratatui_ruby/terminal/viewport.rbs
|
|
823
843
|
- sig/ratatui_ruby/terminal_lifecycle.rbs
|
|
824
844
|
- sig/ratatui_ruby/test_helper.rbs
|
|
@@ -863,16 +883,29 @@ files:
|
|
|
863
883
|
- tasks/autodoc/member.rb
|
|
864
884
|
- tasks/autodoc/name.rb
|
|
865
885
|
- tasks/bump.rake
|
|
886
|
+
- tasks/bump/bump_workflow.rb
|
|
866
887
|
- tasks/bump/cargo_lockfile.rb
|
|
867
888
|
- tasks/bump/changelog.rb
|
|
868
889
|
- tasks/bump/header.rb
|
|
869
890
|
- tasks/bump/history.rb
|
|
870
891
|
- tasks/bump/links.rb
|
|
871
892
|
- tasks/bump/manifest.rb
|
|
893
|
+
- tasks/bump/patch_release.rb
|
|
894
|
+
- tasks/bump/release_branch.rb
|
|
895
|
+
- tasks/bump/release_from_trunk.rb
|
|
896
|
+
- tasks/bump/repository.rb
|
|
872
897
|
- tasks/bump/ruby_gem.rb
|
|
873
898
|
- tasks/bump/sem_ver.rb
|
|
874
899
|
- tasks/bump/unreleased_section.rb
|
|
875
900
|
- tasks/doc.rake
|
|
901
|
+
- tasks/doc/documentation.rb
|
|
902
|
+
- tasks/doc/link.rb
|
|
903
|
+
- tasks/doc/link/file_url.rb
|
|
904
|
+
- tasks/doc/link/relative_path.rb
|
|
905
|
+
- tasks/doc/link/web_url.rb
|
|
906
|
+
- tasks/doc/link_audit.rb
|
|
907
|
+
- tasks/doc/problem.rb
|
|
908
|
+
- tasks/doc/source_file.rb
|
|
876
909
|
- tasks/example_viewer.html.erb
|
|
877
910
|
- tasks/extension.rake
|
|
878
911
|
- tasks/license.rake
|
|
@@ -882,6 +915,10 @@ files:
|
|
|
882
915
|
- tasks/license/snippets_md.rb
|
|
883
916
|
- tasks/license/snippets_rdoc.rb
|
|
884
917
|
- tasks/lint.rake
|
|
918
|
+
- tasks/rbs_predicates.rake
|
|
919
|
+
- tasks/rbs_predicates/predicate_catalog.rb
|
|
920
|
+
- tasks/rbs_predicates/predicate_tests.rb
|
|
921
|
+
- tasks/rbs_predicates/rbs_signature.rb
|
|
885
922
|
- tasks/rdoc_config.rb
|
|
886
923
|
- tasks/resources/build.yml.erb
|
|
887
924
|
- tasks/resources/index.html.erb
|