hyperlist 1.4.4 → 1.5.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3dc0016e32134b62af690e6f612eac1820b601cbf86246fb9969441371600a4e
4
- data.tar.gz: 9be26ded0329bc112f10a79f2fffdb3c28174812665956a79b4ec1b88c854a6f
3
+ metadata.gz: 4e9aaa16290fdb66f194d55acfd1120e20b7b5c4f8b49203c20967580738cc4d
4
+ data.tar.gz: 8155928a2850fff84d471b287f45f38e490d907cb172dba0e18fbd8da06e18ea
5
5
  SHA512:
6
- metadata.gz: dbe6dbcec4e20da66ff2e7cea0a8f57d7f7001790a3d5313498ae5be5e170509ad777155b09e1b969dc47fdb630923ebebbc1cb17016608615cd3378d3158652
7
- data.tar.gz: 57bf4c6764337eba7502ccaceb7a158d8ce8dd09c7840cf9c05047e2787910f0d28e446f913456fd7ee8893ec9be5fadb7b1b8f5766aebfd181a4cd7154fc8a6
6
+ metadata.gz: 1df02a40d21b232190692f1bc7a2e08b516fa66e0a8a35743efd8743bceabe1548ea3b20bc3ab5a8f277558467af98c8bc8c8bece6322154471e40ba0dd2ab18
7
+ data.tar.gz: 8cbfa174bec6a8f3043942bd212f8b3b24548fe1ec1e42b4ef183f9db37bdd6dc0c934945bf99a29c85638b4a5d098c917d0e150c53feda7637e3e18f752075e
data/CHANGELOG.md CHANGED
@@ -2,6 +2,15 @@
2
2
 
3
3
  All notable changes to the HyperList Ruby TUI will be documented in this file.
4
4
 
5
+ ## [1.4.5] - 2025-09-02
6
+
7
+ ### Added
8
+ - **Terminal resize handling**
9
+ - Implemented Signal.trap('WINCH') to catch terminal resize events
10
+ - Application now properly adapts when terminal window is resized
11
+ - UI components (panes) automatically adjust to new dimensions
12
+ - Follows same pattern as RTFM for robust resize handling
13
+
5
14
  ## [1.4.4] - 2025-09-01
6
15
 
7
16
  ### Added
data/README.md CHANGED
@@ -29,7 +29,19 @@ For historical context and the original VIM implementation, see: [hyperlist.vim]
29
29
  ### Help Screen
30
30
  ![HyperList Help](img/screenshot_help.png)
31
31
 
32
- ## What's New in v1.4.0
32
+ ## What's New in v1.4.4
33
+
34
+ ### 🔧 Case Conversion Commands
35
+ - **`gU`**: Convert current line to UPPERCASE
36
+ - **`gu`**: Convert current line to lowercase
37
+ - Works with all HyperList elements (checkboxes, operators, etc.)
38
+
39
+ ### 🐛 Bug Fixes
40
+ - Fixed color code display issues with numbered lists and operators
41
+ - Improved handling of qualifiers like `[? conditional]`
42
+ - Better coloring when combining numbered lists with operators (e.g., `1. NOT: item`)
43
+
44
+ ## Previous Version Features (v1.4.0)
33
45
 
34
46
  ### 🎨 Configuration Lines & Theming
35
47
  - **Configuration Lines**: Add settings at the bottom of HyperList files using `((option=value, option2=value))`
data/hyperlist CHANGED
@@ -72,7 +72,7 @@ class HyperListApp
72
72
  include Rcurses::Input
73
73
  include Rcurses::Cursor
74
74
 
75
- VERSION = "1.4.4"
75
+ VERSION = "1.5.0"
76
76
 
77
77
  def initialize(filename = nil)
78
78
  @filename = filename ? File.expand_path(filename) : nil
@@ -138,6 +138,9 @@ class HyperListApp
138
138
  # Debug: uncomment to see terminal size
139
139
  # puts "Terminal size: #{@rows}x#{@cols}"
140
140
 
141
+ # Setup terminal resize handler
142
+ setup_resize_handler
143
+
141
144
  # Setup UI first (to initialize @footer) before loading file
142
145
  setup_ui
143
146
 
@@ -194,6 +197,33 @@ class HyperListApp
194
197
  end
195
198
  end
196
199
 
200
+ def setup_resize_handler
201
+ # Catch terminal resize signal
202
+ Signal.trap('WINCH') do
203
+ refresh_on_resize
204
+ end
205
+ rescue
206
+ # Ignore if signal handling not available on this platform
207
+ end
208
+
209
+ def refresh_on_resize
210
+ # Get new terminal dimensions
211
+ if IO.console
212
+ @rows, @cols = IO.console.winsize
213
+ else
214
+ @rows = ENV['LINES']&.to_i || 24
215
+ @cols = ENV['COLUMNS']&.to_i || 80
216
+ end
217
+
218
+ # Reinitialize UI with new dimensions
219
+ setup_ui
220
+
221
+ # Force full redraw
222
+ render
223
+ rescue
224
+ # Ignore errors during resize to prevent crashes
225
+ end
226
+
197
227
  def load_file(file)
198
228
  @items = []
199
229
  @encrypted_lines = {}
@@ -1447,6 +1477,11 @@ class HyperListApp
1447
1477
  end
1448
1478
 
1449
1479
  def render_footer
1480
+ # Don't overwrite footer if showing password prompt
1481
+ if @footer && @footer.text && @footer.text.include?("password")
1482
+ return
1483
+ end
1484
+
1450
1485
  version_text = "v#{VERSION}"
1451
1486
 
1452
1487
  if @mode == :command
@@ -3949,6 +3984,20 @@ class HyperListApp
3949
3984
  @footer.text = prompt
3950
3985
  @footer.refresh
3951
3986
 
3987
+ # Force terminal to flush output - needed when launched from urxvt
3988
+ STDOUT.flush
3989
+
3990
+ # When launched through urxvt, force a complete redraw
3991
+ if ENV['TERM'] =~ /rxvt/
3992
+ sleep 0.1
3993
+ # Force complete screen refresh
3994
+ Rcurses.clear_screen
3995
+ setup_ui
3996
+ @footer.text = prompt
3997
+ @footer.refresh
3998
+ STDOUT.flush
3999
+ end
4000
+
3952
4001
  password = ""
3953
4002
  loop do
3954
4003
  begin
data/hyperlist.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = "hyperlist"
3
- spec.version = "1.4.4"
3
+ spec.version = "1.5.0"
4
4
  spec.authors = ["Geir Isene"]
5
5
  spec.email = ["g@isene.com"]
6
6
 
data/test_resize.hl ADDED
@@ -0,0 +1,16 @@
1
+ Test HyperList for Terminal Resize
2
+ This is a test file
3
+ To verify terminal resize works
4
+ When you resize the terminal
5
+ The display should update correctly
6
+ Items to check:
7
+ Main content area adjusts
8
+ Footer stays at bottom
9
+ Split view (if active) rebalances
10
+ No visual corruption
11
+ Test scenarios:
12
+ Make terminal wider
13
+ Make terminal narrower
14
+ Make terminal taller
15
+ Make terminal shorter
16
+ Quick multiple resizes
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hyperlist
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.4
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Geir Isene
8
8
  autorequire:
9
9
  bindir: "."
10
10
  cert_chain: []
11
- date: 2025-09-01 00:00:00.000000000 Z
11
+ date: 2025-09-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rcurses
@@ -79,6 +79,7 @@ files:
79
79
  - img/screenshot_help.png
80
80
  - img/screenshot_sample.png
81
81
  - sample.hl
82
+ - test_resize.hl
82
83
  homepage: https://github.com/isene/HyperList
83
84
  licenses:
84
85
  - Unlicense