sup 1.3 → 1.4

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 (71) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/checks.yml +10 -9
  3. data/.rubocop.yml +1 -1
  4. data/History.txt +17 -0
  5. data/Manifest.txt +9 -1
  6. data/README.md +5 -3
  7. data/Rakefile +1 -1
  8. data/bin/sup +5 -3
  9. data/contrib/nix/Gemfile.lock +39 -32
  10. data/contrib/nix/gemset.nix +80 -58
  11. data/contrib/nix/ruby2.4-Gemfile.lock +1 -1
  12. data/contrib/nix/ruby2.4-gemset.nix +2 -2
  13. data/contrib/nix/ruby2.5-Gemfile.lock +1 -1
  14. data/contrib/nix/ruby2.5-gemset.nix +2 -2
  15. data/contrib/nix/ruby2.6-Gemfile.lock +1 -1
  16. data/contrib/nix/ruby2.6-gemset.nix +2 -2
  17. data/contrib/nix/ruby2.7-Gemfile.lock +1 -1
  18. data/contrib/nix/ruby2.7-gemset.nix +2 -2
  19. data/contrib/nix/ruby3.0-Gemfile.lock +1 -1
  20. data/contrib/nix/ruby3.0-gemset.nix +2 -2
  21. data/contrib/nix/ruby3.1-Gemfile.lock +101 -0
  22. data/contrib/nix/ruby3.1-gemset.nix +391 -0
  23. data/contrib/nix/ruby3.1-shell.nix +2 -13
  24. data/contrib/nix/ruby3.2-Gemfile.lock +101 -0
  25. data/contrib/nix/ruby3.2-gemset.nix +391 -0
  26. data/contrib/nix/ruby3.2-shell.nix +2 -13
  27. data/contrib/nix/ruby3.3-shell.nix +1 -12
  28. data/contrib/nix/ruby3.4-shell.nix +1 -10
  29. data/contrib/nix/ruby4.0-shell.nix +40 -0
  30. data/lib/sup/account.rb +2 -0
  31. data/lib/sup/buffer.rb +1 -0
  32. data/lib/sup/contact.rb +3 -4
  33. data/lib/sup/draft.rb +15 -11
  34. data/lib/sup/index.rb +8 -4
  35. data/lib/sup/message_chunks.rb +0 -24
  36. data/lib/sup/mode.rb +1 -0
  37. data/lib/sup/modes/contact_list_mode.rb +0 -1
  38. data/lib/sup/modes/edit_message_mode.rb +1 -1
  39. data/lib/sup/modes/label_search_results_mode.rb +1 -2
  40. data/lib/sup/modes/line_cursor_mode.rb +22 -20
  41. data/lib/sup/modes/search_results_mode.rb +0 -1
  42. data/lib/sup/modes/thread_view_mode.rb +1 -2
  43. data/lib/sup/rfc2047.rb +5 -2
  44. data/lib/sup/source.rb +2 -0
  45. data/lib/sup/version.rb +1 -1
  46. data/lib/sup.rb +1 -1
  47. data/man/sup-add.1 +6 -6
  48. data/man/sup-config.1 +6 -6
  49. data/man/sup-dump.1 +5 -5
  50. data/man/sup-import-dump.1 +7 -7
  51. data/man/sup-recover-sources.1 +5 -5
  52. data/man/sup-sync-back-maildir.1 +9 -9
  53. data/man/sup-sync.1 +11 -11
  54. data/man/sup-tweak-labels.1 +10 -10
  55. data/man/sup.1 +11 -11
  56. data/sup.gemspec +1 -1
  57. data/test/dummy_buffer.rb +34 -0
  58. data/test/fixtures/contacts.txt +2 -1
  59. data/test/fixtures/rfc2047-header-encoding.eml +1 -1
  60. data/test/integration/test_draft.rb +128 -0
  61. data/test/integration/test_maildir.rb +2 -0
  62. data/test/integration/test_mbox.rb +2 -0
  63. data/test/integration/test_sup-add.rb +4 -0
  64. data/test/test_crypto.rb +7 -2
  65. data/test/test_message.rb +1 -0
  66. data/test/unit/test_contact.rb +15 -3
  67. data/test/unit/test_edit_message_mode.rb +6 -1
  68. data/test/unit/test_index.rb +65 -0
  69. data/test/unit/test_line_cursor_mode.rb +208 -0
  70. metadata +17 -7
  71. data/shell.nix +0 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3a01c7e42026b08f66082ec94ced164f0be41c86e9a5cc01a4894b61f712efb9
4
- data.tar.gz: dfd7da5b3742dac1e07d2c55530cb539f543a26a48f716e1ee878474d43a1671
3
+ metadata.gz: '09751b9afafb4e88646de270d85e983cd91cd9ffb7259afce7ae4bca8c94cc5b'
4
+ data.tar.gz: 3aaf78540a2d33f168f13eba8b4d7afb9787efa5e2d27911c851ead6a178ad43
5
5
  SHA512:
6
- metadata.gz: e4b15c43896ff49fe700c1aa4c63f85cf7dc3241f1bdc258e34e8053dddcaff733b951b5f2883cfde05b73c001f94c1bb8102b4e0413eab1a3de99a4aad8a263
7
- data.tar.gz: 4c3834600e0eb738500029b797076c6f0a7d52d29609b4ef7168d0ff56a9b34b902ee7c647afccc7c9fa0cd6962116df3fe6e3c5a943f257a8bd46b7b96e2a28
6
+ metadata.gz: a4f829939a5a06de18c48bd2ba0d860b918fd1bbf7069876518c415093a2bb22047dd06f6177d1a67ceed66ea5a280e52bd9a43a7a54cac65793cd9069569919
7
+ data.tar.gz: 78bf43e7e413314a7e6d89a4b71a15c6940687f4fbee003d5ef82a8b2dd35ae314fe534f7ea589deb24323928b330e8b5eabac7b61e863f16de15d8cd1b36258
@@ -15,7 +15,7 @@ jobs:
15
15
  matrix:
16
16
  os:
17
17
  - ubuntu-latest
18
- - macos-14
18
+ - macos-15
19
19
  ruby-version:
20
20
  - '2.4'
21
21
  - '2.5'
@@ -26,29 +26,30 @@ jobs:
26
26
  - '3.2'
27
27
  - '3.3'
28
28
  - '3.4'
29
+ - '4.0'
29
30
  exclude:
30
31
  # We use xapian-bindings 1.4.22 for Ruby < 3.1, but it does not link on MacOS 14:
31
32
  # https://github.com/Garaio-REM/xapian-ruby/issues/10
32
- - os: macos-14
33
+ - os: macos-15
33
34
  ruby-version: '2.4'
34
- - os: macos-14
35
+ - os: macos-15
35
36
  ruby-version: '2.5'
36
- - os: macos-14
37
+ - os: macos-15
37
38
  ruby-version: '2.6'
38
- - os: macos-14
39
+ - os: macos-15
39
40
  ruby-version: '2.7'
40
- - os: macos-14
41
+ - os: macos-15
41
42
  ruby-version: '3.0'
42
43
  runs-on: ${{ matrix.os }}
43
44
  env:
44
45
  nixfile: "contrib/nix/ruby${{ matrix.ruby-version }}-shell.nix"
45
46
  steps:
46
47
  - name: Check out source
47
- uses: actions/checkout@v3
48
+ uses: actions/checkout@v5
48
49
  with:
49
50
  submodules: recursive
50
51
  - name: Cache nix store
51
- uses: actions/cache@v3
52
+ uses: actions/cache@v5
52
53
  id: nix-cache
53
54
  with:
54
55
  path: /tmp/nixcache
@@ -60,7 +61,7 @@ jobs:
60
61
  run: brew install bash
61
62
  if: runner.os == 'macOS'
62
63
  - name: Install nix
63
- uses: nixbuild/nix-quick-install-action@v30
64
+ uses: nixbuild/nix-quick-install-action@v34
64
65
  - name: Import nix cache
65
66
  run: |
66
67
  if [ -f /tmp/nixcache ] ; then
data/.rubocop.yml CHANGED
@@ -1,4 +1,4 @@
1
- require:
1
+ plugins:
2
2
  - rubocop-packaging
3
3
 
4
4
  AllCops:
data/History.txt CHANGED
@@ -1,3 +1,20 @@
1
+ == 1.4 / 2026-04-21
2
+
3
+ * #343: Draft messages containing non-ASCII characters are now displayed
4
+ correctly in thread view.
5
+ * #533, #524: Sup now refuses to start if config.yaml is missing a default
6
+ account, or no sendmail command is configured.
7
+ * Improved the lazy-loading behaviour when scrolling down in thread list views.
8
+ * Sup now gracefully handles RFC2047-encoded words which contain incomplete
9
+ UTF-8 sequences after decoding, instead of crashing with ArgumentError.
10
+ * #516: Sup can now load sources.yaml produced by very old versions of Sup,
11
+ which left a syntactically invalid YAML tag for the SentLoader class.
12
+ * Fixed error handling behaviour for various scenarios where a draft message is
13
+ modified outside Sup.
14
+ * Sup no longer uses deprecated Xapian APIs, for compatibility with Xapian 2.0.
15
+ * Sup is now tested on Ruby 4.0.
16
+ * Sup's web site and git repos have moved to: https://supmua.dev/
17
+
1
18
  == 1.3 / 2025-04-21
2
19
 
3
20
  * #596: If a message lacks a Date header, or the Date header is not in valid
data/Manifest.txt CHANGED
@@ -43,10 +43,15 @@ contrib/nix/ruby2.7-shell.nix
43
43
  contrib/nix/ruby3.0-Gemfile.lock
44
44
  contrib/nix/ruby3.0-gemset.nix
45
45
  contrib/nix/ruby3.0-shell.nix
46
+ contrib/nix/ruby3.1-Gemfile.lock
47
+ contrib/nix/ruby3.1-gemset.nix
46
48
  contrib/nix/ruby3.1-shell.nix
49
+ contrib/nix/ruby3.2-Gemfile.lock
50
+ contrib/nix/ruby3.2-gemset.nix
47
51
  contrib/nix/ruby3.2-shell.nix
48
52
  contrib/nix/ruby3.3-shell.nix
49
53
  contrib/nix/ruby3.4-shell.nix
54
+ contrib/nix/ruby4.0-shell.nix
50
55
  contrib/nix/test-all-rubies.sh
51
56
  devel/console.sh
52
57
  devel/count-loc.sh
@@ -125,8 +130,8 @@ lib/sup/util/path.rb
125
130
  lib/sup/util/query.rb
126
131
  lib/sup/util/uri.rb
127
132
  lib/sup/version.rb
128
- shell.nix
129
133
  sup.gemspec
134
+ test/dummy_buffer.rb
130
135
  test/dummy_source.rb
131
136
  test/fixtures/bad-content-transfer-encoding-1.eml
132
137
  test/fixtures/binary-content-transfer-encoding-2.eml
@@ -160,6 +165,7 @@ test/gnupg_test_home/receiver_secring.gpg
160
165
  test/gnupg_test_home/regen_keys.sh
161
166
  test/gnupg_test_home/secring.gpg
162
167
  test/gnupg_test_home/sup-test-2@foo.bar.asc
168
+ test/integration/test_draft.rb
163
169
  test/integration/test_maildir.rb
164
170
  test/integration/test_mbox.rb
165
171
  test/integration/test_sup-add.rb
@@ -174,6 +180,8 @@ test/unit/service/test_label_service.rb
174
180
  test/unit/test_contact.rb
175
181
  test/unit/test_edit_message_mode.rb
176
182
  test/unit/test_horizontal_selector.rb
183
+ test/unit/test_index.rb
184
+ test/unit/test_line_cursor_mode.rb
177
185
  test/unit/test_locale_fiddler.rb
178
186
  test/unit/test_person.rb
179
187
  test/unit/test_rmail_message.rb
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Sup is a console-based email client for people with a lot of email.
4
4
 
5
- <img src="https://sup-heliotrope.github.io/images/old_screenshot_1.png" />
5
+ <img src="https://supmua.dev/images/old_screenshot_1.png" />
6
6
 
7
7
  ## Installation
8
8
 
@@ -35,10 +35,12 @@ Please report bugs to the [GitHub issue tracker](https://github.com/sup-heliotro
35
35
 
36
36
  ## Links
37
37
 
38
- * [Homepage](https://sup-heliotrope.github.io/)
38
+ * [Homepage](https://supmua.dev/)
39
39
  * [Code repository](https://github.com/sup-heliotrope/sup)
40
40
  * [Wiki](https://github.com/sup-heliotrope/sup/wiki)
41
- * Mailing list: supmua@googlegroups.com (subscribe: supmua+subscribe@googlegroups.com, archive: https://groups.google.com/d/forum/supmua )
41
+ * Mailing list: supmua@googlegroups.com
42
+ (subscribe: supmua+subscribe@googlegroups.com,
43
+ [archives](https://supmua.dev/lists/supmua/))
42
44
 
43
45
  ## Maintenance status
44
46
 
data/Rakefile CHANGED
@@ -79,7 +79,7 @@ task :check_manifest do
79
79
  end
80
80
 
81
81
  task :rubocop_packaging do
82
- if /^2\.[012]\./ =~ RUBY_VERSION
82
+ if /^(2\.|3\.[012]\.)/ =~ RUBY_VERSION
83
83
  puts "skipping rubocop-packaging checks on unsupported Ruby #{RUBY_VERSION}"
84
84
  next
85
85
  end
data/bin/sup CHANGED
@@ -206,7 +206,10 @@ begin
206
206
  end
207
207
  end unless $opts[:no_initial_poll]
208
208
 
209
- imode.load_threads :num => ibuf.content_height, :when_done => lambda { |num| reporting_thread("poll after loading inbox") { sleep 1; PollManager.poll } unless $opts[:no_threads] || $opts[:no_initial_poll] }
209
+ reporting_thread("poll after loading inbox") do
210
+ sleep 1
211
+ PollManager.poll
212
+ end unless $opts[:no_threads] || $opts[:no_initial_poll]
210
213
 
211
214
  if $opts[:compose]
212
215
  to = Person.from_address_list $opts[:compose]
@@ -328,8 +331,7 @@ begin
328
331
  BufferManager.spawn "Edit message", r
329
332
  r.default_edit_message
330
333
  else
331
- b, new = BufferManager.spawn_unless_exists("All drafts") { LabelSearchResultsMode.new [:draft] }
332
- b.mode.load_threads :num => b.content_height if new
334
+ BufferManager.spawn_unless_exists("All drafts") { LabelSearchResultsMode.new [:draft] }
333
335
  end
334
336
  when :show_inbox
335
337
  BufferManager.raise_to_front ibuf
@@ -2,63 +2,70 @@ GEM
2
2
  remote: https://rubygems.org/
3
3
  specs:
4
4
  ast (2.4.3)
5
- benchmark (0.4.0)
5
+ benchmark (0.5.0)
6
6
  chronic (0.10.2)
7
7
  coderay (1.1.3)
8
- fiddle (1.1.6)
9
- gpgme (2.0.24)
8
+ fiddle (1.1.8)
9
+ gpgme (2.0.26)
10
10
  mini_portile2 (~> 2.7)
11
11
  highline (3.1.2)
12
12
  reline
13
- io-console (0.8.0)
14
- json (2.10.2)
15
- language_server-protocol (3.17.0.4)
16
- locale (2.1.4)
13
+ io-console (0.8.2)
14
+ json (2.19.3)
15
+ language_server-protocol (3.17.0.5)
16
+ lint_roller (1.1.0)
17
+ locale (2.1.5)
18
+ fiddle
17
19
  lockfile (2.1.3)
18
20
  logger (1.7.0)
19
21
  method_source (1.1.0)
20
- mime-types (3.6.2)
22
+ mime-types (3.7.0)
21
23
  logger
22
- mime-types-data (~> 3.2015)
23
- mime-types-data (3.2025.0402)
24
- mini_portile2 (2.8.8)
25
- minitest (5.25.5)
26
- ncursesw (1.4.11)
24
+ mime-types-data (~> 3.2025, >= 3.2025.0507)
25
+ mime-types-data (3.2026.0331)
26
+ mini_portile2 (2.8.9)
27
+ minitest (5.27.0)
28
+ ncursesw (1.4.13)
27
29
  optimist (3.2.1)
28
- parallel (1.26.3)
29
- parser (3.3.7.4)
30
+ parallel (1.28.0)
31
+ parser (3.3.11.1)
30
32
  ast (~> 2.4.1)
31
33
  racc
32
- pry (0.15.2)
34
+ prism (1.9.0)
35
+ pry (0.16.0)
33
36
  coderay (~> 1.1)
34
37
  method_source (~> 1.0)
38
+ reline (>= 0.6.0)
35
39
  racc (1.8.1)
36
40
  rainbow (3.1.1)
37
- rake (13.2.1)
38
- regexp_parser (2.9.0)
39
- reline (0.6.1)
41
+ rake (13.3.1)
42
+ regexp_parser (2.12.0)
43
+ reline (0.6.3)
40
44
  io-console (~> 0.5)
41
- rexml (3.2.6)
42
45
  rmail (1.1.4)
43
46
  rr (1.2.1)
44
- rubocop (1.63.2)
47
+ rubocop (1.86.0)
45
48
  json (~> 2.3)
46
- language_server-protocol (>= 3.17.0)
49
+ language_server-protocol (~> 3.17.0.2)
50
+ lint_roller (~> 1.1.0)
47
51
  parallel (~> 1.10)
48
52
  parser (>= 3.3.0.2)
49
53
  rainbow (>= 2.2.2, < 4.0)
50
- regexp_parser (>= 1.8, < 3.0)
51
- rexml (>= 3.2.5, < 4.0)
52
- rubocop-ast (>= 1.31.1, < 2.0)
54
+ regexp_parser (>= 2.9.3, < 3.0)
55
+ rubocop-ast (>= 1.49.0, < 2.0)
53
56
  ruby-progressbar (~> 1.7)
54
- unicode-display_width (>= 2.4.0, < 3.0)
55
- rubocop-ast (1.31.2)
56
- parser (>= 3.3.0.4)
57
- rubocop-packaging (0.5.2)
58
- rubocop (>= 1.33, < 2.0)
57
+ unicode-display_width (>= 2.4.0, < 4.0)
58
+ rubocop-ast (1.49.1)
59
+ parser (>= 3.3.7.2)
60
+ prism (~> 1.7)
61
+ rubocop-packaging (0.6.0)
62
+ lint_roller (~> 1.1.0)
63
+ rubocop (>= 1.72.1, < 2.0)
59
64
  ruby-progressbar (1.13.0)
60
65
  unicode (0.4.4.5)
61
- unicode-display_width (2.5.0)
66
+ unicode-display_width (3.2.0)
67
+ unicode-emoji (~> 4.1)
68
+ unicode-emoji (4.2.0)
62
69
  xapian-ruby (1.4.27)
63
70
 
64
71
  PLATFORMS
@@ -98,4 +105,4 @@ DEPENDENCIES
98
105
  xapian-ruby (~> 1.2)
99
106
 
100
107
  BUNDLED WITH
101
- 2.5.22
108
+ 2.7.2
@@ -14,10 +14,10 @@
14
14
  platforms = [];
15
15
  source = {
16
16
  remotes = ["https://rubygems.org"];
17
- sha256 = "0jl71qcgamm96dzyqk695j24qszhcc7liw74qc83fpjljp2gh4hg";
17
+ sha256 = "0v1337j39w1z7x9zs4q7ag0nfv4vs4xlsjx2la0wpv8s6hig2pa6";
18
18
  type = "gem";
19
19
  };
20
- version = "0.4.0";
20
+ version = "0.5.0";
21
21
  };
22
22
  chronic = {
23
23
  groups = ["default"];
@@ -44,10 +44,10 @@
44
44
  platforms = [];
45
45
  source = {
46
46
  remotes = ["https://rubygems.org"];
47
- sha256 = "1as92bp6pgkab73kj3mh5d1idjr9wykczz7r9i1pkn82wq4xks3r";
47
+ sha256 = "1vifygrkw22gcd4wzh8gc4pv6h1zpk6kll6mmprrf5174wvfxa3z";
48
48
  type = "gem";
49
49
  };
50
- version = "1.1.6";
50
+ version = "1.1.8";
51
51
  };
52
52
  gpgme = {
53
53
  dependencies = ["mini_portile2"];
@@ -55,10 +55,10 @@
55
55
  platforms = [];
56
56
  source = {
57
57
  remotes = ["https://rubygems.org"];
58
- sha256 = "0r1vmql7w7ka5xzj1aqf8pk2a4sv0znwj2zkg1fgvd5b89qcvv2k";
58
+ sha256 = "1amb4f0hgwdlz9dzblfpsidays3mb4cg65plwr0m6x1vp0pgvsqs";
59
59
  type = "gem";
60
60
  };
61
- version = "2.0.24";
61
+ version = "2.0.26";
62
62
  };
63
63
  highline = {
64
64
  dependencies = ["reline"];
@@ -76,40 +76,51 @@
76
76
  platforms = [];
77
77
  source = {
78
78
  remotes = ["https://rubygems.org"];
79
- sha256 = "18pgvl7lfjpichdfh1g50rpz0zpaqrpr52ybn9liv1v9pjn9ysnd";
79
+ sha256 = "1k0lk3pwadm2myvpg893n8jshmrf2sigrd4ki15lymy7gixaxqyn";
80
80
  type = "gem";
81
81
  };
82
- version = "0.8.0";
82
+ version = "0.8.2";
83
83
  };
84
84
  json = {
85
85
  groups = ["default"];
86
86
  platforms = [];
87
87
  source = {
88
88
  remotes = ["https://rubygems.org"];
89
- sha256 = "01lbdaizhkxmrw4y8j3wpvsryvnvzmg0pfs56c52laq2jgdfmq1l";
89
+ sha256 = "0il6qxkxqql7n7sgrws5bi5a36v51dswqcxb6j6gm8aj62shp6r8";
90
90
  type = "gem";
91
91
  };
92
- version = "2.10.2";
92
+ version = "2.19.3";
93
93
  };
94
94
  language_server-protocol = {
95
95
  groups = ["default"];
96
96
  platforms = [];
97
97
  source = {
98
98
  remotes = ["https://rubygems.org"];
99
- sha256 = "0scnz2fvdczdgadvjn0j9d49118aqm3hj66qh8sd2kv6g1j65164";
99
+ sha256 = "1k0311vah76kg5m6zr7wmkwyk5p2f9d9hyckjpn3xgr83ajkj7px";
100
100
  type = "gem";
101
101
  };
102
- version = "3.17.0.4";
102
+ version = "3.17.0.5";
103
+ };
104
+ lint_roller = {
105
+ groups = ["default"];
106
+ platforms = [];
107
+ source = {
108
+ remotes = ["https://rubygems.org"];
109
+ sha256 = "11yc0d84hsnlvx8cpk4cbj6a4dz9pk0r1k29p0n1fz9acddq831c";
110
+ type = "gem";
111
+ };
112
+ version = "1.1.0";
103
113
  };
104
114
  locale = {
115
+ dependencies = ["fiddle"];
105
116
  groups = ["default"];
106
117
  platforms = [];
107
118
  source = {
108
119
  remotes = ["https://rubygems.org"];
109
- sha256 = "107pm4ccmla23z963kyjldgngfigvchnv85wr6m69viyxxrrjbsj";
120
+ sha256 = "1x1fnf4knvyzb9br6ja7b1nvy0860nax0i8rx4ljrnvbmbl06s0w";
110
121
  type = "gem";
111
122
  };
112
- version = "2.1.4";
123
+ version = "2.1.5";
113
124
  };
114
125
  lockfile = {
115
126
  groups = ["default"];
@@ -147,50 +158,50 @@
147
158
  platforms = [];
148
159
  source = {
149
160
  remotes = ["https://rubygems.org"];
150
- sha256 = "1bv08jvx1g9ifjdyrp5hgalxkv7qxwfmfx0ba43ncrbfda7182b1";
161
+ sha256 = "0mjyxl7c0xzyqdqa8r45hqg7jcw2prp3hkp39mdf223g4hfgdsyw";
151
162
  type = "gem";
152
163
  };
153
- version = "3.6.2";
164
+ version = "3.7.0";
154
165
  };
155
166
  mime-types-data = {
156
167
  groups = ["default"];
157
168
  platforms = [];
158
169
  source = {
159
170
  remotes = ["https://rubygems.org"];
160
- sha256 = "1h0rhy0zf4ssrdr6cyliqijxga94cd64ij2gkw6jdx3bww1cap25";
171
+ sha256 = "19cpbiwrfib7ai83l16az1gfyl3n5v2k430v40mjwlvjmhgjp579";
161
172
  type = "gem";
162
173
  };
163
- version = "3.2025.0402";
174
+ version = "3.2026.0331";
164
175
  };
165
176
  mini_portile2 = {
166
177
  groups = ["default"];
167
178
  platforms = [];
168
179
  source = {
169
180
  remotes = ["https://rubygems.org"];
170
- sha256 = "0x8asxl83msn815lwmb2d7q5p29p7drhjv5va0byhk60v9n16iwf";
181
+ sha256 = "12f2830x7pq3kj0v8nz0zjvaw02sv01bqs1zwdrc04704kwcgmqc";
171
182
  type = "gem";
172
183
  };
173
- version = "2.8.8";
184
+ version = "2.8.9";
174
185
  };
175
186
  minitest = {
176
187
  groups = ["default"];
177
188
  platforms = [];
178
189
  source = {
179
190
  remotes = ["https://rubygems.org"];
180
- sha256 = "0mn7q9yzrwinvfvkyjiz548a4rmcwbmz2fn9nyzh4j1snin6q6rr";
191
+ sha256 = "1mbpz92ml19rcxxfjrj91gmkif9khb1xpzyw38f81rvglgw1ffrd";
181
192
  type = "gem";
182
193
  };
183
- version = "5.25.5";
194
+ version = "5.27.0";
184
195
  };
185
196
  ncursesw = {
186
197
  groups = ["default"];
187
198
  platforms = [];
188
199
  source = {
189
200
  remotes = ["https://rubygems.org"];
190
- sha256 = "0qlfhp9b445g0qp9kkdiylfjlpfzrv6nqvry4ar6y0yacn0zr5y8";
201
+ sha256 = "1x06374njjl4xfxwkp6nq71akhazmqp9fyhkgxf6gac81p5wwdk6";
191
202
  type = "gem";
192
203
  };
193
- version = "1.4.11";
204
+ version = "1.4.13";
194
205
  };
195
206
  optimist = {
196
207
  groups = ["default"];
@@ -207,10 +218,10 @@
207
218
  platforms = [];
208
219
  source = {
209
220
  remotes = ["https://rubygems.org"];
210
- sha256 = "1vy7sjs2pgz4i96v5yk9b7aafbffnvq7nn419fgvw55qlavsnsyq";
221
+ sha256 = "0w697335hi5dk5ay9kyn53399sy87y8v0y6ij93m5wmshhadxrik";
211
222
  type = "gem";
212
223
  };
213
- version = "1.26.3";
224
+ version = "1.28.0";
214
225
  };
215
226
  parser = {
216
227
  dependencies = ["ast" "racc"];
@@ -218,21 +229,31 @@
218
229
  platforms = [];
219
230
  source = {
220
231
  remotes = ["https://rubygems.org"];
221
- sha256 = "1awq9rswd3mj8sr5acp1ca6nbkk57zpw8388j7w163i8fhi2h9ib";
232
+ sha256 = "0m2xqvn1la62hji1mn04y59giikww95p2hs0r4y2rrz3mdxcwyni";
233
+ type = "gem";
234
+ };
235
+ version = "3.3.11.1";
236
+ };
237
+ prism = {
238
+ groups = ["default"];
239
+ platforms = [];
240
+ source = {
241
+ remotes = ["https://rubygems.org"];
242
+ sha256 = "11ggfikcs1lv17nhmhqyyp6z8nq5pkfcj6a904047hljkxm0qlvv";
222
243
  type = "gem";
223
244
  };
224
- version = "3.3.7.4";
245
+ version = "1.9.0";
225
246
  };
226
247
  pry = {
227
- dependencies = ["coderay" "method_source"];
248
+ dependencies = ["coderay" "method_source" "reline"];
228
249
  groups = ["default"];
229
250
  platforms = [];
230
251
  source = {
231
252
  remotes = ["https://rubygems.org"];
232
- sha256 = "0ssv704qg75mwlyagdfr9xxbzn1ziyqgzm0x474jkynk8234pm8j";
253
+ sha256 = "0kh5nv8v74k1ccy6gc7nd04aaf1cjkbk7g8pwy2izvcqaq36jv6p";
233
254
  type = "gem";
234
255
  };
235
- version = "0.15.2";
256
+ version = "0.16.0";
236
257
  };
237
258
  racc = {
238
259
  groups = ["default"];
@@ -259,20 +280,20 @@
259
280
  platforms = [];
260
281
  source = {
261
282
  remotes = ["https://rubygems.org"];
262
- sha256 = "17850wcwkgi30p7yqh60960ypn7yibacjjha0av78zaxwvd3ijs6";
283
+ sha256 = "175iisqb211n0qbfyqd8jz2g01q6xj038zjf4q0nm8k6kz88k7lc";
263
284
  type = "gem";
264
285
  };
265
- version = "13.2.1";
286
+ version = "13.3.1";
266
287
  };
267
288
  regexp_parser = {
268
289
  groups = ["default"];
269
290
  platforms = [];
270
291
  source = {
271
292
  remotes = ["https://rubygems.org"];
272
- sha256 = "1ndxm0xnv27p4gv6xynk6q41irckj76q1jsqpysd9h6f86hhp841";
293
+ sha256 = "1fwfw26a32rps78920nn29shqg2zmqv72i89j1fap41isshida9m";
273
294
  type = "gem";
274
295
  };
275
- version = "2.9.0";
296
+ version = "2.12.0";
276
297
  };
277
298
  reline = {
278
299
  dependencies = ["io-console"];
@@ -280,20 +301,10 @@
280
301
  platforms = [];
281
302
  source = {
282
303
  remotes = ["https://rubygems.org"];
283
- sha256 = "1yvm0svcdk6377ng6l00g39ldkjijbqg4whdg2zcsa8hrgbwkz0s";
304
+ sha256 = "0d8q5c4nh2g9pp758kizh8sfrvngynrjlm0i1zn3cnsnfd4v160i";
284
305
  type = "gem";
285
306
  };
286
- version = "0.6.1";
287
- };
288
- rexml = {
289
- groups = ["default"];
290
- platforms = [];
291
- source = {
292
- remotes = ["https://rubygems.org"];
293
- sha256 = "05i8518ay14kjbma550mv0jm8a6di8yp5phzrd8rj44z9qnrlrp0";
294
- type = "gem";
295
- };
296
- version = "3.2.6";
307
+ version = "0.6.3";
297
308
  };
298
309
  rmail = {
299
310
  groups = ["default"];
@@ -316,37 +327,37 @@
316
327
  version = "1.2.1";
317
328
  };
318
329
  rubocop = {
319
- dependencies = ["json" "language_server-protocol" "parallel" "parser" "rainbow" "regexp_parser" "rexml" "rubocop-ast" "ruby-progressbar" "unicode-display_width"];
330
+ dependencies = ["json" "language_server-protocol" "lint_roller" "parallel" "parser" "rainbow" "regexp_parser" "rubocop-ast" "ruby-progressbar" "unicode-display_width"];
320
331
  groups = ["default"];
321
332
  platforms = [];
322
333
  source = {
323
334
  remotes = ["https://rubygems.org"];
324
- sha256 = "1dmj955zbvhlrzzag6hc77xdyyzn8ihvffpjalnzn5asxhz7jcdl";
335
+ sha256 = "11nicljvmns665vryhfdrpssnk5dn1mxdap7ynprpgkfw5piiwag";
325
336
  type = "gem";
326
337
  };
327
- version = "1.63.2";
338
+ version = "1.86.0";
328
339
  };
329
340
  rubocop-ast = {
330
- dependencies = ["parser"];
341
+ dependencies = ["parser" "prism"];
331
342
  groups = ["default"];
332
343
  platforms = [];
333
344
  source = {
334
345
  remotes = ["https://rubygems.org"];
335
- sha256 = "1v3q8n48w8h809rqbgzihkikr4g3xk72m1na7s97jdsmjjq6y83w";
346
+ sha256 = "0dahfpnzz63hyqxa03x8rypnrxzwyvh4i5a8ri34bzpnf3pg64j4";
336
347
  type = "gem";
337
348
  };
338
- version = "1.31.2";
349
+ version = "1.49.1";
339
350
  };
340
351
  rubocop-packaging = {
341
- dependencies = ["rubocop"];
352
+ dependencies = ["lint_roller" "rubocop"];
342
353
  groups = ["default"];
343
354
  platforms = [];
344
355
  source = {
345
356
  remotes = ["https://rubygems.org"];
346
- sha256 = "1iqgsbpj7y8ksddbb9gj5vpzs2y8202khyk2mcc165kkfmvm6rx3";
357
+ sha256 = "19sqypdixw125l9l0wy8vjbj876m1jdj9lj82vdqqvwfnh7vv4pv";
347
358
  type = "gem";
348
359
  };
349
- version = "0.5.2";
360
+ version = "0.6.0";
350
361
  };
351
362
  ruby-progressbar = {
352
363
  groups = ["default"];
@@ -369,14 +380,25 @@
369
380
  version = "0.4.4.5";
370
381
  };
371
382
  unicode-display_width = {
383
+ dependencies = ["unicode-emoji"];
384
+ groups = ["default"];
385
+ platforms = [];
386
+ source = {
387
+ remotes = ["https://rubygems.org"];
388
+ sha256 = "0hiwhnqpq271xqari6mg996fgjps42sffm9cpk6ljn8sd2srdp8c";
389
+ type = "gem";
390
+ };
391
+ version = "3.2.0";
392
+ };
393
+ unicode-emoji = {
372
394
  groups = ["default"];
373
395
  platforms = [];
374
396
  source = {
375
397
  remotes = ["https://rubygems.org"];
376
- sha256 = "1d0azx233nags5jx3fqyr23qa2rhgzbhv8pxp46dgbg1mpf82xky";
398
+ sha256 = "03zqn207zypycbz5m9mn7ym763wgpk7hcqbkpx02wrbm1wank7ji";
377
399
  type = "gem";
378
400
  };
379
- version = "2.5.0";
401
+ version = "4.2.0";
380
402
  };
381
403
  xapian-ruby = {
382
404
  groups = ["default"];
@@ -17,7 +17,7 @@ GEM
17
17
  mime-types-data (3.2022.0105)
18
18
  mini_portile2 (2.8.0)
19
19
  minitest (5.15.0)
20
- ncursesw (1.4.11)
20
+ ncursesw (1.4.13)
21
21
  optimist (3.0.1)
22
22
  parallel (1.20.1)
23
23
  parser (3.1.2.0)
@@ -146,10 +146,10 @@
146
146
  platforms = [];
147
147
  source = {
148
148
  remotes = ["https://rubygems.org"];
149
- sha256 = "0qlfhp9b445g0qp9kkdiylfjlpfzrv6nqvry4ar6y0yacn0zr5y8";
149
+ sha256 = "1x06374njjl4xfxwkp6nq71akhazmqp9fyhkgxf6gac81p5wwdk6";
150
150
  type = "gem";
151
151
  };
152
- version = "1.4.11";
152
+ version = "1.4.13";
153
153
  };
154
154
  optimist = {
155
155
  groups = ["default"];
@@ -17,7 +17,7 @@ GEM
17
17
  mime-types-data (3.2022.0105)
18
18
  mini_portile2 (2.8.0)
19
19
  minitest (5.16.2)
20
- ncursesw (1.4.11)
20
+ ncursesw (1.4.13)
21
21
  optimist (3.0.1)
22
22
  parallel (1.22.1)
23
23
  parser (3.1.2.0)