hyperlist 1.9.3 → 1.9.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.
- checksums.yaml +4 -4
- data/.claude/tsc-cache/ae1f6800-54bf-4599-aee8-058bd15a57a3/affected-repos.txt +1 -0
- data/CHANGELOG.md +12 -0
- data/README.md +11 -1
- data/hyperlist +31 -7
- data/hyperlist.gemspec +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 95521b846e9a01532da324a8b30dc47fda580098da9aab02dd611e6c70db018d
|
|
4
|
+
data.tar.gz: 6f6e2a7d77fd3c4e59059537c7ae3c4bcea323d60c8e55e80581ac2bd02f91f7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: abe4b54cf8fb93e73af0e13c3cc3c2810ba770928791db82dac967c5ec76ccf285300c145f87b946a2026880b91faf5800ff86cbbcaa08ac450e4ed241a81a95
|
|
7
|
+
data.tar.gz: 5ecc3c0946cfb672814c6ced81cbd1cbd055127c7e6a2aed89a5885af33fa07d5aab93b4a3689311da061a0cba7d74781263aae5a20db3d76d64565c8b969b22
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
root
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to the HyperList Ruby TUI will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [1.9.4] - 2025-12-02
|
|
6
|
+
|
|
7
|
+
### Enhanced
|
|
8
|
+
- **Property coloring improvements**
|
|
9
|
+
- Added `&` symbol support in properties (e.g., "Day 1 & 2:" now colors correctly)
|
|
10
|
+
- Added chained property support (e.g., "09.03: Silje:" now colors the entire chain red)
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- **Performance optimization**
|
|
14
|
+
- Throttled external file change detection to run every 2 seconds instead of on every keypress
|
|
15
|
+
- Improves responsiveness when holding navigation keys (UP/DOWN)
|
|
16
|
+
|
|
5
17
|
## [1.9.3] - 2025-12-02
|
|
6
18
|
|
|
7
19
|
### Fixed
|
data/README.md
CHANGED
|
@@ -29,7 +29,17 @@ For historical context and the original VIM implementation, see: [hyperlist.vim]
|
|
|
29
29
|
### Help Screen
|
|
30
30
|

|
|
31
31
|
|
|
32
|
-
## What's New in v1.9.
|
|
32
|
+
## What's New in v1.9.4
|
|
33
|
+
|
|
34
|
+
### Property Coloring Improvements
|
|
35
|
+
- **Ampersand support**: Properties like "Day 1 & 2:" now color correctly
|
|
36
|
+
- **Chained properties**: Lines like "09.03: Silje: Opening" now color the entire "09.03: Silje:" chain red
|
|
37
|
+
|
|
38
|
+
### Performance Optimization
|
|
39
|
+
- **Faster navigation**: File change detection now runs every 2 seconds instead of on every keypress
|
|
40
|
+
- Improved responsiveness when holding DOWN/UP keys
|
|
41
|
+
|
|
42
|
+
## Previous Release: v1.9.3
|
|
33
43
|
|
|
34
44
|
### Help Viewer Navigation Fixed
|
|
35
45
|
- Fixed invisible cursor on blank separator lines in help (?) and documentation (??) viewers
|
data/hyperlist
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
# Check for help/version BEFORE loading any libraries
|
|
8
8
|
if ARGV[0] == '-h' || ARGV[0] == '--help'
|
|
9
9
|
puts <<~HELP
|
|
10
|
-
HyperList v1.9.
|
|
10
|
+
HyperList v1.9.4 - Terminal User Interface for HyperList files
|
|
11
11
|
|
|
12
12
|
USAGE
|
|
13
13
|
hyperlist [OPTIONS] [FILE]
|
|
@@ -52,7 +52,7 @@ if ARGV[0] == '-h' || ARGV[0] == '--help'
|
|
|
52
52
|
HELP
|
|
53
53
|
exit 0
|
|
54
54
|
elsif ARGV[0] == '-v' || ARGV[0] == '--version'
|
|
55
|
-
puts "HyperList v1.9.
|
|
55
|
+
puts "HyperList v1.9.4"
|
|
56
56
|
exit 0
|
|
57
57
|
end
|
|
58
58
|
|
|
@@ -73,7 +73,7 @@ class HyperListApp
|
|
|
73
73
|
include Rcurses::Input
|
|
74
74
|
include Rcurses::Cursor
|
|
75
75
|
|
|
76
|
-
VERSION = "1.9.
|
|
76
|
+
VERSION = "1.9.4"
|
|
77
77
|
|
|
78
78
|
def initialize(filename = nil)
|
|
79
79
|
@filename = filename ? File.expand_path(filename) : nil
|
|
@@ -538,9 +538,16 @@ class HyperListApp
|
|
|
538
538
|
end
|
|
539
539
|
|
|
540
540
|
# Check if file was modified externally and prompt for reload
|
|
541
|
+
# Throttled to only check every 2 seconds to avoid filesystem I/O on every keypress
|
|
541
542
|
def check_file_changed
|
|
542
543
|
return unless @filename && File.exist?(@filename) && @file_mtime
|
|
543
544
|
|
|
545
|
+
# Throttle: only check every 2 seconds
|
|
546
|
+
now = Time.now
|
|
547
|
+
@last_file_check ||= Time.at(0)
|
|
548
|
+
return if (now - @last_file_check) < 2
|
|
549
|
+
@last_file_check = now
|
|
550
|
+
|
|
544
551
|
current_mtime = File.mtime(@filename) rescue nil
|
|
545
552
|
return unless current_mtime && current_mtime > @file_mtime
|
|
546
553
|
|
|
@@ -1619,18 +1626,35 @@ class HyperListApp
|
|
|
1619
1626
|
"#{$1}:".fg(colors["red"]) # Red for timestamp properties
|
|
1620
1627
|
end
|
|
1621
1628
|
|
|
1622
|
-
# Handle
|
|
1629
|
+
# Handle chained properties first (e.g., "09.03: Silje: Opening")
|
|
1630
|
+
# Match sequences of "word: word: word:" at the start of a line, color all red
|
|
1631
|
+
result = safe_regex_replace(result, /^(\s*)((?:[a-zA-Z0-9][a-zA-Z0-9_\-()& .\/=]*:\s*)+)/) do |match|
|
|
1632
|
+
if match =~ /^(\s*)((?:[a-zA-Z0-9][a-zA-Z0-9_\-()& .\/=]*:\s*)+)/
|
|
1633
|
+
prefix = $1 || ""
|
|
1634
|
+
chain = $2
|
|
1635
|
+
# Check if this is an operator (ALL-CAPS only)
|
|
1636
|
+
if chain =~ /^[A-Z][A-Z_\-() \/=]*:\s*$/
|
|
1637
|
+
prefix + chain.fg(colors["blue"]) # Blue for operators
|
|
1638
|
+
else
|
|
1639
|
+
prefix + chain.fg(colors["red"]) # Red for property chains
|
|
1640
|
+
end
|
|
1641
|
+
else
|
|
1642
|
+
match
|
|
1643
|
+
end
|
|
1644
|
+
end
|
|
1645
|
+
|
|
1646
|
+
# Handle operators and properties with colon pattern (for inline occurrences)
|
|
1623
1647
|
# Operators: ALL-CAPS followed by colon (with or without space)
|
|
1624
1648
|
# Properties: Mixed case followed by colon and space
|
|
1625
1649
|
# Modified pattern to also match after ANSI placeholders (⟨ANSI\d+⟩)
|
|
1626
|
-
result = safe_regex_replace(result, /(\
|
|
1650
|
+
result = safe_regex_replace(result, /(\s+|⟨ANSI\d+⟩)([a-zA-Z][a-zA-Z0-9_\-()& .\/=]*):(\s*)/) do |match|
|
|
1627
1651
|
# Extract parts from the match
|
|
1628
|
-
if match =~ /(\
|
|
1652
|
+
if match =~ /(\s+|⟨ANSI\d+⟩)([a-zA-Z][a-zA-Z0-9_\-()& .\/=]*):(\s*)/
|
|
1629
1653
|
prefix_space = $1
|
|
1630
1654
|
text_part = $2
|
|
1631
1655
|
space_after = $3 || ""
|
|
1632
1656
|
colon_space = ":#{space_after}"
|
|
1633
|
-
|
|
1657
|
+
|
|
1634
1658
|
# Check if it's an operator (ALL-CAPS with optional _, -, (), /, =, spaces)
|
|
1635
1659
|
if text_part =~ /^[A-Z][A-Z_\-() \/=]*$/
|
|
1636
1660
|
prefix_space + text_part.fg(colors["blue"]) + colon_space.fg(colors["blue"]) # Blue for operators (including S: and T:)
|
data/hyperlist.gemspec
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: hyperlist
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.9.
|
|
4
|
+
version: 1.9.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Geir Isene
|
|
@@ -70,6 +70,7 @@ extensions: []
|
|
|
70
70
|
extra_rdoc_files: []
|
|
71
71
|
files:
|
|
72
72
|
- "./hyperlist"
|
|
73
|
+
- ".claude/tsc-cache/ae1f6800-54bf-4599-aee8-058bd15a57a3/affected-repos.txt"
|
|
73
74
|
- CHANGELOG.md
|
|
74
75
|
- LICENSE
|
|
75
76
|
- README.md
|