rufio 0.30.0 → 0.32.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: 8f639904d46c7c6cff1424a06e22df2ec476aab1e575a442a47a329af208c555
4
- data.tar.gz: 4f682afe7f35715ae18b4fcdc08efef03d00677c621d0422567a23d897b6b30b
3
+ metadata.gz: aff3f0a1c50ec0a854769b6cd89a559872db6edd9618fe000e80a89160018887
4
+ data.tar.gz: 244a77b3555472fccecfe13638ae53f72bc971f6cbc3649ded6bd09a127b4004
5
5
  SHA512:
6
- metadata.gz: 8f6ee453b1868123c11d987244735ce092088f7b720dc6f445e21aed0b191e25b47501ff003720647dc17343accdefd88a72b0dfaf69ca644a160e693ec1a1cf
7
- data.tar.gz: d1ddf57189b941111a314f11c5b6dbcddbda54d96e6fef4eccb8b7a7fec27a9903ca6b29d66e62181a2d98fe5009026ca2609620cef370eba680851cb710ec31
6
+ metadata.gz: 59dbee8f1030310696f3f113c85ebc9f6ed236e7ce24ca0fc834a174f3614b2f609dc7c5471efd905d113b8d61d490779da8222c7984c3827c095d1ff0c14d67
7
+ data.tar.gz: a75e8048e9b6ddaf81d32d7fc772a6231462a9e81e221147329c8726ef59d65e63ecd115397f80dbd8274ced4b3a5b14d3d3d2a5c3cd247b36d8d1275518595c
data/CHANGELOG.md CHANGED
@@ -7,7 +7,86 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
- ## [0.10.0] - 2025-01-XX
10
+ ## [0.32.0] - 2026-01-02
11
+
12
+ ### Added
13
+ - **🎯 Shell Command Execution**: Execute shell commands with `!` prefix (e.g., `:!ls`, `:!git status`)
14
+ - **📜 Command History**: Navigate command history with arrow keys, persistent storage
15
+ - **⌨️ Intelligent Tab Completion**: Smart completion with candidate list display
16
+ - **🔌 Hello Plugin**: Example Ruby plugin demonstrating command implementation
17
+ - **⚙️ Command History Configuration**: Configurable history size (default: 1000)
18
+
19
+ ### Changed
20
+ - Command mode UI improvements: cleaner interface, better visual feedback
21
+ - Tab completion now shows candidate list when multiple matches exist
22
+ - Plugin system now auto-loads from `lib/rufio/plugins/`
23
+
24
+ ### Fixed
25
+ - Tab completion not working for shell commands
26
+ - Command input display showing candidates unnecessarily
27
+
28
+ For detailed information, see [CHANGELOG_v0.32.0.md](./docs/CHANGELOG_v0.32.0.md)
29
+
30
+ ## [0.31.0] - 2026-01-01
31
+
32
+ ### Added
33
+ - **🚀 Experimental Native Scanner**: High-performance directory scanning with Rust/Go implementations
34
+ - **Rust implementation** (`lib_rust/scanner/`): Fastest, memory-safe implementation
35
+ - **Go implementation** (`lib_go/scanner/`): Fast with excellent concurrency
36
+ - **NativeScanner abstraction layer**: Unified interface with automatic fallback to Ruby
37
+ - **Launch options**: `--native`, `--native=rust`, `--native=go` for performance optimization
38
+ - **Environment variable**: `RUFIO_NATIVE` for configuration
39
+
40
+ ### Changed
41
+ - Default scanner remains Ruby implementation for stability
42
+ - Auto-detection priority: Rust > Go > Ruby
43
+
44
+ For detailed information, see [CHANGELOG_v0.31.0.md](./docs/CHANGELOG_v0.31.0.md)
45
+
46
+ ## [0.30.0] - 2025-12-30
47
+
48
+ ### Added
49
+ - **📚 Help System Overhaul**: Full-screen help mode with Markdown documentation
50
+ - **Preview Pane Scrolling**: `Enter` on files focuses preview pane, `j/k` for scrolling
51
+ - **Help documentation**: `info/welcome.md`, `info/help.md`, `info/keybindings.md`
52
+ - **Enhanced file preview**: `.docx`, `.xlsx`, `.pptx` preview support via `pandoc`
53
+
54
+ ### Changed
55
+ - All help documentation converted to English and Markdown format
56
+ - Help mode uses full file manager UI for browsing
57
+ - Preview pane shows `[PREVIEW MODE]` indicator when focused
58
+
59
+ For detailed information, see [CHANGELOG_v0.30.0.md](./docs/CHANGELOG_v0.30.0.md)
60
+
61
+ ## [0.21.0] - 2025-12-29
62
+
63
+ ### Added
64
+ - **📋 Copy Feature**: `c` key to copy selected files with floating dialog UI
65
+ - **Cross-directory selection**: Select files in one directory and copy/move to another
66
+ - **Multiple selection delete**: Enhanced `x` key for deleting multiple files
67
+ - **Code refactoring**: Extracted dialog confirmation logic to shared methods
68
+
69
+ ### Changed
70
+ - Improved SelectionManager with source directory tracking
71
+ - Unified confirmation dialog UI across copy/move/delete operations
72
+
73
+ For detailed information, see [CHANGELOG_v0.21.0.md](./docs/CHANGELOG_v0.21.0.md)
74
+
75
+ ## [0.20.0] - 2025-12-28
76
+
77
+ ### Added
78
+ - **🎯 Project Mode UI Unification**: Consistent UI between normal and project modes
79
+ - **Script directory support**: Execute custom Ruby scripts from `~/.config/rufio/scripts`
80
+ - **Bookmark rename feature**: `r` key in project mode to rename bookmarks
81
+ - **Enhanced command mode**: `:` command with script execution
82
+
83
+ ### Changed
84
+ - Project mode shows bookmark list with consistent UI
85
+ - Improved bookmark management with rename capability
86
+
87
+ For detailed information, see [CHANGELOG_v0.20.0.md](./docs/CHANGELOG_v0.20.0.md)
88
+
89
+ ## [0.10.0] - 2025-12-21
11
90
 
12
91
  ### 🎨 Enhanced - Bookmark UI Overhaul
13
92
  - **Floating input dialogs**: All bookmark operations now use modern floating window interface
@@ -31,9 +110,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
31
110
  - New input dialog system with multi-byte character support
32
111
  - Enhanced BookmarkManager with private helper methods for dialogs
33
112
  - Improved cursor positioning calculations
34
- - **Detailed changelog**: [CHANGELOG_v0.10.0.md](./CHANGELOG_v0.10.0.md)
113
+ - **Detailed changelog**: [CHANGELOG_v0.10.0.md](./docs/CHANGELOG_v0.10.0.md)
35
114
 
36
- ## [0.9.0] - 2025-01-XX
115
+ ## [0.9.0] - 2025-12-13
37
116
 
38
117
  ### Added
39
118
  - **Escape key support for file/directory creation**: Press `Esc` to cancel file (`a`) or directory (`A`) creation prompts and return to the main view
@@ -47,8 +126,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
47
126
  - New `read_line_with_escape` method for cancelable input handling
48
127
  - Comprehensive test suite for escape key functionality
49
128
  - Support for multi-byte characters (Japanese, etc.) in filename/directory input
129
+ - **Detailed changelog**: [CHANGELOG_v0.9.0.md](./docs/CHANGELOG_v0.9.0.md)
130
+
131
+ ## [0.8.0] - 2025-12-06
50
132
 
51
- ## [0.7.0] - 2024-11-29
133
+ For detailed information, see [CHANGELOG_v0.8.0.md](./docs/CHANGELOG_v0.8.0.md)
134
+
135
+ ## [0.7.0] - 2025-11-29
52
136
 
53
137
  ### Added
54
138
  - **🔌 Plugin System**: Complete extensible plugin architecture for rufio
@@ -70,9 +154,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
70
154
  - New `PluginConfig` for configuration file handling
71
155
  - Plugin directory structure: `lib/rufio/plugins/` and `~/.rufio/plugins/`
72
156
  - Case-insensitive plugin name matching in configuration
73
- - **Detailed changelog**: [CHANGELOG_v0.7.0.md](./CHANGELOG_v0.7.0.md)
157
+ - **Detailed changelog**: [CHANGELOG_v0.7.0.md](./docs/CHANGELOG_v0.7.0.md)
74
158
 
75
- ## [0.6.0] - 2025-01-XX
159
+ ## [0.6.0] - 2025-09-28
76
160
 
77
161
  ### Added
78
162
  - **🚀 zoxide Integration**: Complete zoxide directory history navigation functionality
@@ -95,7 +179,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
95
179
  - Extended `HealthChecker` with zoxide version checking
96
180
  - Comprehensive test suite for zoxide functionality
97
181
  - Safe path escaping using Ruby's Shellwords module
98
- - **Detailed changelog**: [CHANGELOG_v0.6.0.md](./CHANGELOG_v0.6.0.md)
182
+ - **Detailed changelog**: [CHANGELOG_v0.6.0.md](./docs/CHANGELOG_v0.6.0.md)
99
183
 
100
184
  ## [0.5.0] - 2025-09-20
101
185
 
@@ -120,7 +204,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
120
204
  - Maximum 9 bookmarks with automatic sorting
121
205
  - Floating window system for bookmark management
122
206
  - Integration with existing terminal UI components
123
- - **Detailed changelog**: [CHANGELOG_v0.5.0.md](./CHANGELOG_v0.5.0.md)
207
+ - **Detailed changelog**: [CHANGELOG_v0.5.0.md](./docs/CHANGELOG_v0.5.0.md)
124
208
 
125
209
  ## [0.4.0] - 2025-09-13
126
210
 
@@ -153,7 +237,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
153
237
  - **Enhanced error handling** patterns throughout codebase
154
238
  - **Improved file system safety** checks and validation
155
239
 
156
- For detailed information, see [CHANGELOG_v0.4.0.md](./CHANGELOG_v0.4.0.md)
240
+ For detailed information, see [CHANGELOG_v0.4.0.md](./docs/CHANGELOG_v0.4.0.md)
157
241
 
158
242
  ## [0.3.0] - 2025-09-06
159
243
 
@@ -189,9 +273,22 @@ For detailed information, see [CHANGELOG_v0.4.0.md](./CHANGELOG_v0.4.0.md)
189
273
 
190
274
  ## Release Links
191
275
 
192
- - [v0.6.0 Detailed Release Notes](./CHANGELOG_v0.6.0.md) - zoxide Integration and Enhanced Health Checking
193
- - [v0.5.0 Detailed Release Notes](./CHANGELOG_v0.5.0.md) - Bookmark System Implementation
194
- - [v0.4.0 Detailed Release Notes](./CHANGELOG_v0.4.0.md) - Comprehensive changelog with technical details
276
+ ### Detailed Release Notes
277
+
278
+ - [v0.31.0](./docs/CHANGELOG_v0.31.0.md) - Experimental Native Scanner Implementation
279
+ - [v0.30.0](./docs/CHANGELOG_v0.30.0.md) - Help System Overhaul
280
+ - [v0.21.0](./docs/CHANGELOG_v0.21.0.md) - Copy Feature & Code Refactoring
281
+ - [v0.20.0](./docs/CHANGELOG_v0.20.0.md) - Project Mode Enhancement & UI Unification
282
+ - [v0.10.0](./docs/CHANGELOG_v0.10.0.md) - Bookmark UI Overhaul
283
+ - [v0.9.0](./docs/CHANGELOG_v0.9.0.md) - Escape Key Support & Input Improvements
284
+ - [v0.8.0](./docs/CHANGELOG_v0.8.0.md) - Additional Features
285
+ - [v0.7.0](./docs/CHANGELOG_v0.7.0.md) - Plugin System
286
+ - [v0.6.0](./docs/CHANGELOG_v0.6.0.md) - zoxide Integration
287
+ - [v0.5.0](./docs/CHANGELOG_v0.5.0.md) - Bookmark System Implementation
288
+ - [v0.4.0](./docs/CHANGELOG_v0.4.0.md) - Floating Dialog System & English Interface
289
+
290
+ ### External Links
291
+
195
292
  - [GitHub Releases](https://github.com/masisz/rufio/releases) - Download releases and view release history
196
293
  - [Installation Guide](./README.md#installation) - How to install rufio
197
294
  - [Usage Documentation](./README.md#usage) - Complete usage guide
data/README.md CHANGED
@@ -13,7 +13,11 @@ rufioは、Yaziにインスパイアされたターミナル上で動作する
13
13
  - **軽量でシンプル**: Rubyで書かれた軽量なファイルマネージャー
14
14
  - **直感的な操作**: Vimライクなキーバインド
15
15
  - **プラグインシステム**: 拡張可能なプラグインアーキテクチャ
16
- - **コマンドモード**: Tab補完とフローティングウィンドウを備えた強力なコマンドシステム
16
+ - **強力なコマンドモード** (v0.32.0):
17
+ - シェルコマンド実行 (`!ls`, `!git status` など)
18
+ - コマンド履歴(上下矢印キーでナビゲーション)
19
+ - インテリジェントなTab補完(候補リスト表示)
20
+ - Rubyプラグインによる拡張可能なコマンド
17
21
  - **ファイルプレビュー**: テキストファイルの内容をその場で確認
18
22
  - **ファイル選択・操作**: 複数ファイルの選択、移動、コピー、削除が可能
19
23
  - **リアルタイムフィルター**: sキーでファイル名の絞り込み表示
@@ -46,6 +50,61 @@ rufio # カレントディレクトリで起動
46
50
  rufio /path/to # 指定したディレクトリで起動
47
51
  ```
48
52
 
53
+ ### ネイティブスキャナー(実験的機能)
54
+
55
+ rufio v0.31.0以降では、高速なディレクトリスキャンのためのネイティブ実装(Rust/Go)をサポートしています。デフォルトは安定したRuby実装を使用し、オプションでネイティブ実装に切り替え可能です。
56
+
57
+ #### 起動オプション
58
+
59
+ ```bash
60
+ # デフォルト(Ruby実装 - 安定)
61
+ rufio
62
+
63
+ # ネイティブ実装を有効化(自動検出: Rust > Go > Ruby)
64
+ rufio --native
65
+ rufio --native=auto
66
+
67
+ # Rust実装を強制使用
68
+ rufio --native=rust
69
+ rufio --native rust /path/to/dir
70
+
71
+ # Go実装を強制使用
72
+ rufio --native=go
73
+ rufio --native go /path/to/dir
74
+
75
+ # 環境変数でも制御可能
76
+ RUFIO_NATIVE=rust rufio
77
+ RUFIO_NATIVE=go rufio /path/to/dir
78
+ ```
79
+
80
+ #### ネイティブ実装について
81
+
82
+ - **Rust実装**: 最も高速でメモリ安全。推奨。
83
+ - **Go実装**: 高速で並行処理に優れる。
84
+ - **Ruby実装** (デフォルト): 依存なし、安定動作保証。
85
+
86
+ #### ビルド方法
87
+
88
+ ネイティブ実装を使用するには、事前にビルドが必要です:
89
+
90
+ ```bash
91
+ # Rust実装のビルド
92
+ cd lib_rust/scanner
93
+ cargo build --release
94
+ make install
95
+
96
+ # Go実装のビルド
97
+ cd lib_go/scanner
98
+ make install
99
+ ```
100
+
101
+ #### 注意事項
102
+
103
+ - ネイティブ実装は実験的機能です
104
+ - デフォルトではRuby実装を使用(`--native`オプションなし)
105
+ - ネイティブライブラリがない場合、自動的にRuby実装にフォールバック
106
+ - gemインストール時はネイティブライブラリが含まれます(ビルド不要)
107
+
49
108
  ### ヘルスチェック
50
109
 
51
110
  ```bash
@@ -125,15 +184,29 @@ rufio --help # ヘルプメッセージを表示
125
184
  | ---- | ---------------------------------- |
126
185
  | `z` | zoxide履歴からディレクトリを選択移動 |
127
186
 
128
- #### コマンドモード
187
+ #### コマンドモード (v0.32.0 強化版)
129
188
 
130
189
  | キー | 機能 |
131
190
  | ------ | ---------------------------------------- |
132
191
  | `:` | コマンドモードを起動 |
133
- | `Tab` | コマンド補完(コマンドモード中) |
192
+ | `Tab` | コマンド補完・候補リスト表示(コマンドモード中)|
193
+ | `↑` | 前のコマンドを表示(コマンドモード中) |
194
+ | `↓` | 次のコマンドを表示(コマンドモード中) |
134
195
  | `Enter`| コマンドを実行(コマンドモード中) |
135
196
  | `ESC` | コマンドモードをキャンセル(コマンドモード中) |
136
197
 
198
+ **シェルコマンド実行** (v0.32.0):
199
+ ```
200
+ :!ls -la # ファイル一覧を表示
201
+ :!git status # Gitステータスを確認
202
+ :!pwd # 現在のディレクトリを表示
203
+ ```
204
+
205
+ **Rubyコマンド** (v0.32.0):
206
+ ```
207
+ :hello # Hello プラグインを実行
208
+ ```
209
+
137
210
  #### ヘルプ
138
211
 
139
212
  | キー | 機能 |
data/README_EN.md CHANGED
@@ -13,9 +13,14 @@ rufio is a terminal-based file manager inspired by Yazi. It's implemented in Rub
13
13
  - **Lightweight & Simple**: A lightweight file manager written in Ruby
14
14
  - **Intuitive Operation**: Vim-like key bindings
15
15
  - **Plugin System**: Extensible plugin architecture
16
+ - **Powerful Command Mode** (v0.32.0):
17
+ - Shell command execution (`!ls`, `!git status`, etc.)
18
+ - Command history (navigate with arrow keys)
19
+ - Intelligent Tab completion (with candidate list display)
20
+ - Extensible commands via Ruby plugins
16
21
  - **File Preview**: View text file contents on the fly
17
- - **File Selection & Operations**: Select multiple files, move, and delete
18
- - **Real-time Filter**: Filter files by name using s key
22
+ - **File Selection & Operations**: Select multiple files, move, copy, and delete
23
+ - **Real-time Filter**: Filter files by name using f key
19
24
  - **Advanced Search**: Powerful search using fzf and rga
20
25
  - **Multi-platform**: Runs on macOS, Linux, and Windows
21
26
  - **External Editor Integration**: Open files with your favorite editor
@@ -118,6 +123,29 @@ rufio --help # Show help message
118
123
  | --- | ---------------------------------- |
119
124
  | `z` | Select directory from zoxide history |
120
125
 
126
+ #### Command Mode (v0.32.0 Enhanced)
127
+
128
+ | Key | Function |
129
+ | ------- | ----------------------------------------- |
130
+ | `:` | Activate command mode |
131
+ | `Tab` | Command completion / Show candidate list |
132
+ | `↑` | Previous command (in command mode) |
133
+ | `↓` | Next command (in command mode) |
134
+ | `Enter` | Execute command (in command mode) |
135
+ | `ESC` | Cancel command mode (in command mode) |
136
+
137
+ **Shell Command Execution** (v0.32.0):
138
+ ```
139
+ :!ls -la # List files with details
140
+ :!git status # Check git status
141
+ :!pwd # Print working directory
142
+ ```
143
+
144
+ **Ruby Commands** (v0.32.0):
145
+ ```
146
+ :hello # Execute Hello plugin
147
+ ```
148
+
121
149
  #### System Operations
122
150
 
123
151
  | Key | Function |
data/bin/rufio CHANGED
@@ -6,27 +6,98 @@ require_relative '../lib/rufio'
6
6
  # プラグインを読み込む
7
7
  Rufio::PluginManager.load_all
8
8
 
9
- # コマンドライン引数の処理
9
+ # コマンドライン引数のパース
10
+ native_mode = nil
11
+ start_directory = nil
12
+ skip_next = false
13
+
14
+ ARGV.each_with_index do |arg, idx|
15
+ if skip_next
16
+ skip_next = false
17
+ next
18
+ end
19
+
20
+ case arg
21
+ when '--native'
22
+ # 次の引数がモード指定かチェック
23
+ if idx + 1 < ARGV.length && !ARGV[idx + 1].start_with?('--') && !ARGV[idx + 1].start_with?('/')
24
+ next_arg = ARGV[idx + 1]
25
+ if %w[rust go auto ruby].include?(next_arg)
26
+ native_mode = next_arg
27
+ skip_next = true
28
+ else
29
+ native_mode = 'auto'
30
+ end
31
+ else
32
+ native_mode = 'auto'
33
+ end
34
+ when /^--native=(rust|go|auto|ruby)$/
35
+ native_mode = $1
36
+ when '-c', '--check-health', '--help', '-h'
37
+ # これらは後で処理
38
+ when /^--/
39
+ # 未知のオプションは無視
40
+ else
41
+ # 最初の非オプション引数をディレクトリとして扱う
42
+ start_directory ||= arg
43
+ end
44
+ end
45
+
46
+ # ネイティブスキャナーモードを設定(native_scannerが存在する場合のみ)
47
+ if native_mode && defined?(Rufio::NativeScanner)
48
+ Rufio::NativeScanner.mode = native_mode
49
+ end
50
+
51
+ # 環境変数でも制御可能
52
+ if ENV['RUFIO_NATIVE'] && defined?(Rufio::NativeScanner)
53
+ Rufio::NativeScanner.mode = ENV['RUFIO_NATIVE']
54
+ end
55
+
56
+ # コマンド処理
10
57
  if ARGV.include?('--check-health') || ARGV.include?('-c')
11
58
  # ヘルスチェック実行
12
59
  health_checker = Rufio::HealthChecker.new
13
60
  success = health_checker.run_check
14
61
  exit(success ? 0 : 1)
15
- elsif ARGV.include?('--help')
62
+ elsif ARGV.include?('--help') || ARGV.include?('-h')
16
63
  puts "rufio - Terminal-based file manager"
17
64
  puts ""
18
65
  puts "Usage:"
19
- puts " rufio [DIRECTORY] Start rufio in specified directory"
20
- puts " rufio -c, --check-health Check system dependencies"
21
- puts " rufio --help Show this help message"
66
+ puts " rufio [OPTIONS] [DIRECTORY]"
67
+ puts ""
68
+ puts "Options:"
69
+ puts " -c, --check-health Check system dependencies"
70
+ puts " -h, --help Show this help message"
71
+ if defined?(Rufio::NativeScanner)
72
+ puts " --native[=MODE] Enable native scanner (experimental)"
73
+ puts " MODE: auto|rust|go (default: auto)"
74
+ puts ""
75
+ puts "Native Scanner:"
76
+ puts " By default, rufio uses Ruby implementation for stability."
77
+ puts " Native scanners (Rust/Go) are experimental and can be enabled with --native."
78
+ puts ""
79
+ puts " --native Auto-detect (Rust > Go > Ruby)"
80
+ puts " --native=rust Use Rust implementation"
81
+ puts " --native=go Use Go implementation"
82
+ puts " --native=auto Same as --native"
83
+ puts " --native=ruby Use Ruby implementation (default)"
84
+ puts ""
85
+ puts " Environment variable: RUFIO_NATIVE=rust|go|auto"
86
+ end
22
87
  puts ""
23
88
  puts "Examples:"
24
- puts " rufio # Start in current directory"
25
- puts " rufio /path/to/dir # Start in specific directory"
26
- puts " rufio -c # Check if all dependencies are available"
89
+ puts " rufio # Start in current directory"
90
+ puts " rufio /path/to/dir # Start in specific directory"
91
+ if defined?(Rufio::NativeScanner)
92
+ puts " rufio --native # Use native scanner (auto-detect)"
93
+ puts " rufio --native=rust # Use Rust scanner"
94
+ puts " rufio --native rust /tmp # Use Rust scanner in /tmp"
95
+ puts " RUFIO_NATIVE=rust rufio # Use Rust via environment variable"
96
+ end
97
+ puts " rufio -c # Check dependencies"
27
98
  exit(0)
28
99
  else
29
- start_directory = ARGV[0] || Dir.pwd
100
+ start_directory ||= Dir.pwd
30
101
 
31
102
  # アプリケーション開始
32
103
  app = Rufio::Application.new(start_directory)
@@ -0,0 +1,125 @@
1
+ # Changelog - v0.31.0
2
+
3
+ ## 🚀 New Features
4
+
5
+ ### Experimental Native Scanner Implementation
6
+
7
+ Added high-performance directory scanning with Rust/Go implementations. By default, uses stable Ruby implementation with optional native implementations available via command-line options.
8
+
9
+ #### Implementation Languages
10
+ - **Rust implementation** (`lib_rust/scanner/`): Fastest, memory-safe
11
+ - **Go implementation** (`lib_go/scanner/`): Fast, excellent concurrency
12
+ - **Ruby implementation** (default): Stable, no dependencies
13
+
14
+ #### NativeScanner Abstraction Layer
15
+ - `lib/rufio/native_scanner.rb`: Unified interface independent of implementation
16
+ - Automatic fallback (falls back to Ruby if native implementation unavailable)
17
+
18
+ #### Launch Options
19
+ ```bash
20
+ # Default (Ruby implementation)
21
+ rufio
22
+
23
+ # Enable native implementation (auto-detect: Rust > Go > Ruby)
24
+ rufio --native
25
+ rufio --native=auto
26
+
27
+ # Force Rust implementation
28
+ rufio --native=rust
29
+
30
+ # Force Go implementation
31
+ rufio --native=go
32
+
33
+ # Environment variable control
34
+ RUFIO_NATIVE=rust rufio
35
+ ```
36
+
37
+ #### Priority
38
+ - **Default**: Ruby (stability focused)
39
+ - **`--native=auto`**: Rust > Go > Ruby
40
+ - **`--native=rust`**: Rust (fallback to Ruby if unavailable)
41
+ - **`--native=go`**: Go (fallback to Ruby if unavailable)
42
+
43
+ ## 🔧 Improvements
44
+
45
+ ### GitHub Actions CI/CD
46
+ - **Build**: Automatically build native libraries on 3 OSes (Linux, macOS, Windows)
47
+ - **Test**: Run tests on all platforms (both Ruby fallback and native implementations)
48
+ - **Release**: Auto-build and publish gem on tag push, attach binaries
49
+
50
+ ### Development Environment
51
+ - `.gitignore`: Ignore build artifacts (`target/`, `*.dylib`, `*.so`, `*.dll`, etc.)
52
+ - gemspec: Configure to include native libraries in gem (optional)
53
+
54
+ ### Command-Line Argument Processing
55
+ - Added `--native` option
56
+ - Improved argument parser (accurate path and option discrimination)
57
+ - Added native scanner description to `--help`
58
+
59
+ ## 📦 Dependencies
60
+
61
+ ### Ruby Dependencies (unchanged)
62
+ - io-console ~> 0.6
63
+ - pastel ~> 0.8
64
+ - tty-cursor ~> 0.7
65
+ - tty-screen ~> 0.8
66
+ - ffi (only when using native scanner)
67
+
68
+ ### Build-time Dependencies (optional)
69
+ - **Rust**: cargo, rustc (to build Rust implementation)
70
+ - **Go**: go 1.21+ (to build Go implementation)
71
+
72
+ ## 🧪 Tests
73
+
74
+ Added new tests:
75
+ - `test/test_rust_scanner.rb`: Rust scanner tests
76
+ - `test/test_go_scanner.rb`: Go scanner tests
77
+ - `test/test_native_scanner.rb`: NativeScanner abstraction layer tests
78
+ - Verify default mode is Ruby
79
+ - Mode switching tests
80
+ - Auto-detection tests
81
+ - Fallback behavior tests
82
+
83
+ All tests passing: 279+ runs, 1299+ assertions, 0 failures, 0 errors
84
+
85
+ ## 📝 Documentation
86
+
87
+ - README.md: Added launch options documentation
88
+ - Help message: Detailed `--native` option description
89
+
90
+ ## 🔒 Compatibility
91
+
92
+ - **Backward compatibility**: Fully maintained (default is Ruby implementation)
93
+ - **Native libraries**: Optional (works without them)
94
+ - **Platforms**: Linux, macOS, Windows supported
95
+
96
+ ## 📌 Notes
97
+
98
+ ### Experimental Feature
99
+ Rust/Go implementations are experimental:
100
+ - Not used by default (requires `--native` option)
101
+ - Thorough testing recommended for production use
102
+ - Use default Ruby implementation if issues occur
103
+
104
+ ### Build Instructions
105
+
106
+ #### Rust Implementation
107
+ ```bash
108
+ cd lib_rust/scanner
109
+ cargo build --release
110
+ make install
111
+ ```
112
+
113
+ #### Go Implementation
114
+ ```bash
115
+ cd lib_go/scanner
116
+ make install
117
+ ```
118
+
119
+ ## 🙏 Acknowledgments
120
+
121
+ Native Rust/Go implementations enable faster scanning of large directories. We welcome your feedback.
122
+
123
+ ---
124
+
125
+ Release Date: 2026-01-01