rtfm-filemanager 8.1.0 → 8.1.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 (4) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +10 -0
  3. data/bin/rtfm +26 -21
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f1ec26a45d5adbaeb2aeb253b7078c255ae40bdc6aebb45f26234f0ba28c89de
4
- data.tar.gz: 4aeaf423db737eb9956e22f53eea0f6e8b02cbff48c62b92b13834932074bc54
3
+ metadata.gz: 0c52d52559571abc679a266f0f34fec4e5f12179002c7d97ff569861cbb80f23
4
+ data.tar.gz: bb419ae2f42c6cd73846b6f784a7de12c438c2377330a02fbbdd9822c10511bc
5
5
  SHA512:
6
- metadata.gz: 7df8b94d058bd3c169cf08d59b81a1cb1ceb0c26f21617d57e04c89083317200f88f6aae9164fc7a1dc1d546a08a07c49861dc2fcdf7bf54ca30aaa868d42602
7
- data.tar.gz: 4cbd8be47ef2ee06285e1fcf89a03d01a44524070c5019c6c6491a50416677a053d42476769919702462b0c4780245a4d579fc72003b61bebeca15fa3f144328
6
+ metadata.gz: 6d50be2e6952379ead07a060b6ff12aeb692ec6b508301e70556dd2a91059f38bc32516c719f8d51a9e0b59dfc91b2fbb6f75692ba274d383b3fe655a0969102
7
+ data.tar.gz: e3e1d9b78370e37b541038f142269e1df6a957babd60d8c3ef1c9da0985c9537845f0b0f713870e66aead24b6942f64b7ce7e9aa1f9d11c295023a57642ed2e6
data/CHANGELOG.md CHANGED
@@ -5,6 +5,16 @@ All notable changes to RTFM will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [8.1.2] - 2026-03-13
9
+
10
+ ### Fixed
11
+ - **Redraw loop on terminal resize** - SIGWINCH handler now only sets a flag; the actual resize and redraw is handled once per main loop iteration. Fixes infinite redraw cascade on macOS/mlterm when dragging to resize the terminal window (#11)
12
+
13
+ ## [8.1.1] - 2026-03-12
14
+
15
+ ### Fixed
16
+ - **Right pane text not showing over images or file previews** - Fixed monkey-patched `say` method so pane refresh always draws, regardless of prior update state. Also added `clear_image` calls to marks, recent files, file properties, AI description, chat mode, command history, and SSH history
17
+
8
18
  ## [8.1.0] - 2026-03-12
9
19
 
10
20
  ### Added
data/bin/rtfm CHANGED
@@ -134,6 +134,7 @@ module Rcurses
134
134
  # Restore original say method override for compatibility
135
135
  alias original_say say
136
136
  def say(text)
137
+ self.update = true
137
138
  original_say(text)
138
139
  self.update = false
139
140
  end
@@ -1902,6 +1903,7 @@ def track_directory_access(dir_path) # {{{3
1902
1903
  end
1903
1904
 
1904
1905
  def show_recent_files # {{{3
1906
+ clear_image
1905
1907
  text = "Recently Accessed Files and Directories\n".b.fg(156)
1906
1908
  text << "=" * 40 + "\n\n"
1907
1909
 
@@ -1975,8 +1977,9 @@ end
1975
1977
 
1976
1978
  # FILE PROPERTIES {{{2
1977
1979
  def show_file_properties # {{{3
1980
+ clear_image
1978
1981
  return unless @selected && File.exist?(@selected)
1979
-
1982
+
1980
1983
  begin
1981
1984
  stat = File.stat(@selected)
1982
1985
  text = "File Properties: #{File.basename(@selected)}\n".b.fg(156)
@@ -4518,6 +4521,7 @@ def hash_directory # {{{3
4518
4521
  end
4519
4522
 
4520
4523
  def openai_description # {{{3
4524
+ clear_image
4521
4525
  begin
4522
4526
  require 'ruby/openai'
4523
4527
  rescue LoadError
@@ -4557,6 +4561,7 @@ def openai_description # {{{3
4557
4561
  end
4558
4562
 
4559
4563
  def chat_mode # {{{3
4564
+ clear_image
4560
4565
  unless defined?(OpenAI) && @ai && !@ai.empty?
4561
4566
  @pB.say("To make OpenAI work in RTFM, run `gem install ruby-openai` and add to ~/.rtfm/conf:\n @ai = 'your-secret-openai-key'")
4562
4567
  return
@@ -5108,11 +5113,13 @@ def command_mode # {{{3
5108
5113
  end
5109
5114
 
5110
5115
  def show_history # {{{3
5116
+ clear_image
5111
5117
  @pR.say("Command history:\n\n" + @pCmd.history.reverse.join("\n"))
5112
5118
  @pB.update = true
5113
5119
  end
5114
5120
 
5115
5121
  def show_ssh_history # {{{3
5122
+ clear_image
5116
5123
  history_text = "SSH Connection History\n".b.fg(156)
5117
5124
  history_text << "=" * 50 + "\n\n"
5118
5125
 
@@ -6629,6 +6636,7 @@ def showimage(image) # SHOW THE SELECTED IMAGE IN THE RIGHT WINDOW {{{2
6629
6636
  end
6630
6637
 
6631
6638
  def marks_info # SHOW MARKS IN RIGHT WINDOW {{{2
6639
+ clear_image
6632
6640
  @marks = @marks.sort.to_h
6633
6641
  info = "Directory Marks".b.fg(156) + "\n"
6634
6642
  info << "=" * 50 + "\n\n"
@@ -6766,26 +6774,10 @@ end
6766
6774
  setborder
6767
6775
 
6768
6776
  ## Catch change in terminal resize, redraw {{{2
6769
- Signal.trap('WINCH') do
6770
- # Don't refresh/render if an external interactive program is running
6771
- # This prevents RTFM from painting over programs like HyperList when
6772
- # switching terminals in window managers like i3-wm
6773
- unless @external_program_running
6774
- begin
6775
- new_h, new_w = IO.console.winsize
6776
- # Validate terminal size (minimum 10x20 to be usable)
6777
- if new_h && new_w && new_h >= 10 && new_w >= 20
6778
- @h, @w = new_h, new_w
6779
- @pT.update = @pL.update = @pR.update = @pB.update = true
6780
- refresh
6781
- render
6782
- end
6783
- rescue => e
6784
- # Silently ignore resize errors to prevent crashes
6785
- # User can manually refresh with 'r' key if needed
6786
- end
6787
- end
6788
- end
6777
+ # Signal handler only sets a flag (no I/O, signal-safe).
6778
+ # Rapid-fire SIGWINCH from live-resizing collapses into one redraw per loop.
6779
+ @winch_pending = false
6780
+ Signal.trap('WINCH') { @winch_pending = true }
6789
6781
 
6790
6782
 
6791
6783
  ## One-time flush {{{2
@@ -6808,6 +6800,19 @@ loop do
6808
6800
  @pB.update = false
6809
6801
  end
6810
6802
 
6803
+ # Handle pending terminal resize (debounced from SIGWINCH)
6804
+ if @winch_pending && !@external_program_running
6805
+ @winch_pending = false
6806
+ begin
6807
+ new_h, new_w = IO.console.winsize
6808
+ if new_h && new_w && new_h >= 10 && new_w >= 20
6809
+ @h, @w = new_h, new_w
6810
+ @pT.update = @pL.update = @pR.update = @pB.update = true
6811
+ refresh
6812
+ end
6813
+ rescue; end
6814
+ end
6815
+
6811
6816
  # redraw, but ignore TTY‐focus errors
6812
6817
  begin
6813
6818
  render
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rtfm-filemanager
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.1.0
4
+ version: 8.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Geir Isene
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-03-12 00:00:00.000000000 Z
11
+ date: 2026-03-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rcurses