rufio 0.64.0 → 0.65.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: a25103ee7f5bae19e38110e69a2eeb2ca66eb0b781dba23d271ceafb22933087
4
- data.tar.gz: ecc2574678d47565dbc8ad0f0797c7b59a13a2e04cf70f5a5ee21013e089ef98
3
+ metadata.gz: c80ee03ac65fdfbf06623c7702795bdbaced929d40e72739f599d43eb8d240ef
4
+ data.tar.gz: 8bc1a41cd84d762923e6f4785542c8ad4de418c804d0b30150d4217dac0168bd
5
5
  SHA512:
6
- metadata.gz: 9e9e60071f2ac2ef3c6ac141a6ae04dd38b0fd9545655f2e24f2a42f14ca8767c905a8cd556898b4c9aee629c0e6153ee8a03f7bae4c3bc5d3a6bbc644a6c3d0
7
- data.tar.gz: 3b0be66f3ecd1d6d65152375e3ae1659ee8f0a4bf90e87475e3fed088a3427d3ab09143b0f2287dd642e8b47737fbc99787e7f26a6b8ff3710da5eeed27d1432
6
+ metadata.gz: c42bffef8f63ed300ef17a960625e0e5b5b20735e1f326fba26691e7731c37a0f24a09194b2c51d10e758e4c44710f0e938781e47e0662ba63a1b7afce760195
7
+ data.tar.gz: 7033a73f5a0c124eb9fa722e614a7a28f17972872a4cbe8d7682558ba7760852c3c10db6226e5771222ddb94e1f9a68dbe686f1b621c0dee6ae45073aae47a2a
data/CHANGELOG.md CHANGED
@@ -7,36 +7,41 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.65.0] - 2026-02-14
11
+
12
+ ### Changed
13
+ - **Display version in title bar**: Changed header format from `💎 rufio - /path` to `💎 rufio v0.65.0 - /path`
14
+
10
15
  ## [0.64.0] - 2026-02-07
11
16
 
12
17
  ### Added
13
- - **Screen Overlay Layer**: ダイアログ描画用のオーバーレイレイヤーをScreenクラスに追加
18
+ - **Screen Overlay Layer**: Added overlay layer to Screen class for dialog rendering
14
19
  - `enable_overlay` / `disable_overlay` / `clear_overlay` / `overlay_enabled?`
15
- - `put_overlay` / `put_overlay_string` でオーバーレイレイヤーに描画
16
- - `row()` メソッドがオーバーレイとベースレイヤーを自動合成
17
- - オーバーレイ無効化時にdirty行を自動マーク(再描画保証)
18
- - **`show_overlay_dialog` ヘルパーメソッド**: TerminalUI, KeybindHandler, BookmarkManager, CommandModeUI, ZoxideIntegration に統一的なオーバーレイダイアログ表示メソッドを追加
19
- - `terminal_ui` が利用可能な場合はオーバーレイを使用、なければ従来の直接描画にフォールバック
20
- - **`draw_floating_window_to_overlay`**: DialogRendererにオーバーレイレイヤーへのフローティングウィンドウ描画メソッドを追加
21
- - **Screen Overlay テスト**: `test/test_screen_overlay.rb` を追加
20
+ - Draw to overlay layer with `put_overlay` / `put_overlay_string`
21
+ - `row()` method automatically composites overlay and base layers
22
+ - Automatically marks dirty rows when overlay is disabled (guarantees redraw)
23
+ - **`show_overlay_dialog` helper method**: Added unified overlay dialog display method to TerminalUI, KeybindHandler, BookmarkManager, CommandModeUI, and ZoxideIntegration
24
+ - Uses overlay when `terminal_ui` is available, falls back to direct drawing otherwise
25
+ - **`draw_floating_window_to_overlay`**: Added floating window drawing method to DialogRenderer for overlay layer
26
+ - **Screen Overlay tests**: Added `test/test_screen_overlay.rb`
22
27
 
23
28
  ### Changed
24
- - **ダイアログ描画のバッファベース化**: 全ダイアログ表示をScreenオーバーレイ経由に変更
25
- - BookmarkManager: ブックマークメニュー、一覧、リネーム、削除、確認ダイアログ
26
- - KeybindHandler: 削除確認、コピー/移動確認、終了確認、スクリプトパス管理、ブックマーク操作結果
27
- - CommandModeUI: コマンド実行結果表示
28
- - ZoxideIntegration: 履歴なしメッセージ、履歴選択ダイアログ
29
- - TerminalUI: ヘルプダイアログ、お知らせ表示、プラグイン読み込みエラー
30
- - **コマンドモードのオーバーレイ化**: 直接描画(Screenバッファ外)からオーバーレイベースのバッファ描画に変更
31
- - `draw_command_mode_to_overlay` メソッドでメインループ内のバッファ描画に統合
32
- - **Box Drawing文字の幅修正**: `TextUtils.char_width` で罫線文字(U+2500-U+257F)を幅1として扱うように修正(ターミナルでの実際の表示幅に合わせた)
33
- - **コードスタイル統一**: `lib/rufio.rb` `require_relative` をダブルクォートからシングルクォートに統一
34
- - **`set_terminal_ui` の伝播**: KeybindHandler経由でBookmarkManager, ZoxideIntegrationにも `terminal_ui` を設定
35
- - **TerminalUI**: `screen` `renderer` `attr_reader` を公開
29
+ - **Buffer-based dialog rendering**: Changed all dialog rendering to go through Screen overlay
30
+ - BookmarkManager: bookmark menu, list, rename, delete, and confirmation dialogs
31
+ - KeybindHandler: delete confirmation, copy/move confirmation, exit confirmation, script path management, bookmark operation results
32
+ - CommandModeUI: command execution result display
33
+ - ZoxideIntegration: no history message, history selection dialog
34
+ - TerminalUI: help dialog, announcements, plugin loading errors
35
+ - **Overlay-based command mode**: Changed from direct drawing (outside Screen buffer) to overlay-based buffer drawing
36
+ - Integrated into main loop buffer drawing via `draw_command_mode_to_overlay` method
37
+ - **Box drawing character width fix**: Fixed `TextUtils.char_width` to treat box drawing characters (U+2500-U+257F) as width 1 (matching actual terminal display width)
38
+ - **Code style unification**: Unified `require_relative` in `lib/rufio.rb` from double quotes to single quotes
39
+ - **`set_terminal_ui` propagation**: Set `terminal_ui` on BookmarkManager and ZoxideIntegration via KeybindHandler
40
+ - **TerminalUI**: Exposed `screen` and `renderer` `attr_reader`
36
41
 
37
42
  ### Technical Details
38
- - **新規ファイル**: `test/test_screen_overlay.rb`
39
- - **変更ファイル**: `lib/rufio.rb`, `lib/rufio/screen.rb`, `lib/rufio/dialog_renderer.rb`, `lib/rufio/terminal_ui.rb`, `lib/rufio/keybind_handler.rb`, `lib/rufio/bookmark_manager.rb`, `lib/rufio/command_mode_ui.rb`, `lib/rufio/text_utils.rb`, `lib/rufio/zoxide_integration.rb`
43
+ - **New files**: `test/test_screen_overlay.rb`
44
+ - **Modified files**: `lib/rufio.rb`, `lib/rufio/screen.rb`, `lib/rufio/dialog_renderer.rb`, `lib/rufio/terminal_ui.rb`, `lib/rufio/keybind_handler.rb`, `lib/rufio/bookmark_manager.rb`, `lib/rufio/command_mode_ui.rb`, `lib/rufio/text_utils.rb`, `lib/rufio/zoxide_integration.rb`
40
45
 
41
46
  ## [0.63.0] - 2026-02-01
42
47
 
@@ -123,28 +128,28 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
123
128
  ## [0.60.0] - 2026-01-24
124
129
 
125
130
  ### Added
126
- - **⌨️ スクリプト補完機能**: コマンドモードでスクリプトのTab補完が可能に
127
- - `@`プレフィックスでスクリプト専用補完(例: `@bu` + Tab → `@build.sh`)
128
- - 通常補完時も登録済みスクリプトが候補に表示
129
- - `CommandCompletion`が`CommandMode`と連携してスクリプト候補を取得
131
+ - **⌨️ Script Tab Completion**: Tab completion for scripts in command mode
132
+ - `@` prefix for script-specific completion (e.g., `@bu` + Tab → `@build.sh`)
133
+ - Registered scripts also appear in regular completion candidates
134
+ - `CommandCompletion` works with `CommandMode` to retrieve script candidates
130
135
 
131
136
  ### Removed
132
- - **🗑️ プロジェクトモード廃止**: `P`キーで起動するプロジェクトモードを削除
133
- - `lib/rufio/project_mode.rb` - ProjectModeクラス
134
- - `lib/rufio/project_command.rb` - ProjectCommandクラス
135
- - `lib/rufio/project_log.rb` - ProjectLogクラス
136
- - 関連するUI描画メソッド(`draw_project_mode_screen`等)
137
- - 関連するキーハンドリング(`handle_project_mode_key`等)
138
- - 関連するテストファイル
137
+ - **🗑️ Project Mode Removal**: Removed project mode launched by `P` key
138
+ - `lib/rufio/project_mode.rb` - ProjectMode class
139
+ - `lib/rufio/project_command.rb` - ProjectCommand class
140
+ - `lib/rufio/project_log.rb` - ProjectLog class
141
+ - Related UI drawing methods (`draw_project_mode_screen`, etc.)
142
+ - Related key handling (`handle_project_mode_key`, etc.)
143
+ - Related test files
139
144
 
140
145
  ### Changed
141
- - **📋 ヘルプ表示更新**: ヘルプダイアログに`J`キー(Job mode)を追加
142
- - **🧹 コードクリーンアップ**: プロジェクトモード関連の未使用コードを削除
146
+ - **📋 Help Display Update**: Added `J` key (Job mode) to help dialog
147
+ - **🧹 Code Cleanup**: Removed unused code related to project mode
143
148
 
144
149
  ### Technical Details
145
- - **テストカバレッジ**: 684 tests, 2474 assertions (all passing)
146
- - **削除ファイル**: 7ファイル(ライブラリ3、テスト4
147
- - **影響範囲**: `keybind_handler.rb`, `terminal_ui.rb`, `rufio.rb`
150
+ - **Test coverage**: 684 tests, 2474 assertions (all passing)
151
+ - **Deleted files**: 7 files (3 library, 4 test)
152
+ - **Affected files**: `keybind_handler.rb`, `terminal_ui.rb`, `rufio.rb`
148
153
 
149
154
  ## [0.41.0] - 2026-01-13
150
155
 
@@ -75,7 +75,7 @@ module Rufio
75
75
  @paths.each do |path|
76
76
  next unless Dir.exist?(path)
77
77
 
78
- Dir.glob(File.join(path, '*')).each do |file|
78
+ Dir.glob(File.join(path, '**', '*')).each do |file|
79
79
  next unless File.file?(file)
80
80
 
81
81
  basename = File.basename(file)
@@ -240,7 +240,7 @@ module Rufio
240
240
  @paths.each do |path|
241
241
  next unless Dir.exist?(path)
242
242
 
243
- Dir.glob(File.join(path, '*')).each do |file|
243
+ Dir.glob(File.join(path, '**', '*')).each do |file|
244
244
  next unless File.file?(file)
245
245
 
246
246
  file_basename = File.basename(file)
@@ -276,7 +276,7 @@ module Rufio
276
276
  @paths.each do |path|
277
277
  next unless Dir.exist?(path)
278
278
 
279
- Dir.glob(File.join(path, '*')).each do |file|
279
+ Dir.glob(File.join(path, '**', '*')).each do |file|
280
280
  next unless File.file?(file)
281
281
 
282
282
  file_basename = File.basename(file)
@@ -81,7 +81,7 @@ module Rufio
81
81
  @script_paths.each do |dir|
82
82
  next unless Dir.exist?(dir)
83
83
 
84
- Dir.glob(File.join(dir, '*')).each do |path|
84
+ Dir.glob(File.join(dir, '**', '*')).each do |path|
85
85
  next unless File.file?(path)
86
86
  next unless executable_script?(path)
87
87
 
@@ -513,7 +513,7 @@ module Rufio
513
513
  # Phase 3: Screenバッファにヘッダーを描画
514
514
  def draw_header_to_buffer(screen, y)
515
515
  current_path = @directory_listing.current_path
516
- header = "💎 rufio - #{current_path}"
516
+ header = "💎 rufio v#{VERSION} - #{current_path}"
517
517
 
518
518
  # Add help mode indicator if in help mode
519
519
  if @keybind_handler.help_mode?
@@ -532,14 +532,14 @@ module Rufio
532
532
  # prioritize showing help mode indicator
533
533
  help_text = " [Help Mode - Press ESC to exit]"
534
534
  base_length = @screen_width - help_text.length - FILTER_TEXT_RESERVED
535
- header = "💎 rufio - ...#{current_path[-base_length..-1]}#{help_text}"
535
+ header = "💎 rufio v#{VERSION} - ...#{current_path[-base_length..-1]}#{help_text}"
536
536
  elsif @keybind_handler.filter_active?
537
537
  # prioritize showing filter when active
538
538
  filter_text = " [Filter: #{@keybind_handler.filter_query}]"
539
539
  base_length = @screen_width - filter_text.length - FILTER_TEXT_RESERVED
540
- header = "💎 rufio - ...#{current_path[-base_length..-1]}#{filter_text}"
540
+ header = "💎 rufio v#{VERSION} - ...#{current_path[-base_length..-1]}#{filter_text}"
541
541
  else
542
- header = "💎 rufio - ...#{current_path[-(@screen_width - FILTER_TEXT_RESERVED)..-1]}"
542
+ header = "💎 rufio v#{VERSION} - ...#{current_path[-(@screen_width - FILTER_TEXT_RESERVED)..-1]}"
543
543
  end
544
544
  end
545
545
 
@@ -606,7 +606,7 @@ module Rufio
606
606
 
607
607
  def draw_header
608
608
  current_path = @directory_listing.current_path
609
- header = "💎 rufio - #{current_path}"
609
+ header = "💎 rufio v#{VERSION} - #{current_path}"
610
610
 
611
611
  # Add help mode indicator if in help mode
612
612
  if @keybind_handler.help_mode?
@@ -625,14 +625,14 @@ module Rufio
625
625
  # prioritize showing help mode indicator
626
626
  help_text = " [Help Mode - Press ESC to exit]"
627
627
  base_length = @screen_width - help_text.length - FILTER_TEXT_RESERVED
628
- header = "💎 rufio - ...#{current_path[-base_length..-1]}#{help_text}"
628
+ header = "💎 rufio v#{VERSION} - ...#{current_path[-base_length..-1]}#{help_text}"
629
629
  elsif @keybind_handler.filter_active?
630
630
  # prioritize showing filter when active
631
631
  filter_text = " [Filter: #{@keybind_handler.filter_query}]"
632
632
  base_length = @screen_width - filter_text.length - FILTER_TEXT_RESERVED
633
- header = "💎 rufio - ...#{current_path[-base_length..-1]}#{filter_text}"
633
+ header = "💎 rufio v#{VERSION} - ...#{current_path[-base_length..-1]}#{filter_text}"
634
634
  else
635
- header = "💎 rufio - ...#{current_path[-(@screen_width - FILTER_TEXT_RESERVED)..-1]}"
635
+ header = "💎 rufio v#{VERSION} - ...#{current_path[-(@screen_width - FILTER_TEXT_RESERVED)..-1]}"
636
636
  end
637
637
  end
638
638
 
data/lib/rufio/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Rufio
4
- VERSION = '0.64.0'
4
+ VERSION = '0.65.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rufio
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.64.0
4
+ version: 0.65.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - masisz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-02-07 00:00:00.000000000 Z
11
+ date: 2026-02-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: io-console