rufio 0.31.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 +4 -4
- data/CHANGELOG.md +109 -12
- data/README.md +21 -3
- data/README_EN.md +30 -2
- data/docs/CHANGELOG_v0.32.0.md +288 -0
- data/{CHANGELOG_v0.4.0.md → docs/CHANGELOG_v0.4.0.md} +2 -2
- data/{CHANGELOG_v0.5.0.md → docs/CHANGELOG_v0.5.0.md} +3 -0
- data/{CHANGELOG_v0.7.0.md → docs/CHANGELOG_v0.7.0.md} +1 -1
- data/{CHANGELOG_v0.8.0.md → docs/CHANGELOG_v0.8.0.md} +1 -1
- data/{CHANGELOG_v0.9.0.md → docs/CHANGELOG_v0.9.0.md} +1 -1
- data/lib/rufio/command_completion.rb +101 -0
- data/lib/rufio/command_history.rb +109 -0
- data/lib/rufio/command_mode.rb +35 -0
- data/lib/rufio/command_mode_ui.rb +48 -15
- data/lib/rufio/config_loader.rb +9 -0
- data/lib/rufio/plugins/hello.rb +30 -0
- data/lib/rufio/shell_command_completion.rb +120 -0
- data/lib/rufio/terminal_ui.rb +89 -4
- data/lib/rufio/version.rb +1 -1
- data/lib/rufio.rb +6 -0
- metadata +18 -13
- /data/{CHANGELOG_v0.10.0.md → docs/CHANGELOG_v0.10.0.md} +0 -0
- /data/{CHANGELOG_v0.20.0.md → docs/CHANGELOG_v0.20.0.md} +0 -0
- /data/{CHANGELOG_v0.21.0.md → docs/CHANGELOG_v0.21.0.md} +0 -0
- /data/{CHANGELOG_v0.30.0.md → docs/CHANGELOG_v0.30.0.md} +0 -0
- /data/{CHANGELOG_v0.31.0.md → docs/CHANGELOG_v0.31.0.md} +0 -0
- /data/{CHANGELOG_v0.6.0.md → docs/CHANGELOG_v0.6.0.md} +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: aff3f0a1c50ec0a854769b6cd89a559872db6edd9618fe000e80a89160018887
|
|
4
|
+
data.tar.gz: 244a77b3555472fccecfe13638ae53f72bc971f6cbc3649ded6bd09a127b4004
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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.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-
|
|
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
|
-
|
|
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-
|
|
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
|
-
|
|
193
|
-
|
|
194
|
-
- [v0.
|
|
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
|
-
-
|
|
16
|
+
- **強力なコマンドモード** (v0.32.0):
|
|
17
|
+
- シェルコマンド実行 (`!ls`, `!git status` など)
|
|
18
|
+
- コマンド履歴(上下矢印キーでナビゲーション)
|
|
19
|
+
- インテリジェントなTab補完(候補リスト表示)
|
|
20
|
+
- Rubyプラグインによる拡張可能なコマンド
|
|
17
21
|
- **ファイルプレビュー**: テキストファイルの内容をその場で確認
|
|
18
22
|
- **ファイル選択・操作**: 複数ファイルの選択、移動、コピー、削除が可能
|
|
19
23
|
- **リアルタイムフィルター**: sキーでファイル名の絞り込み表示
|
|
@@ -180,15 +184,29 @@ rufio --help # ヘルプメッセージを表示
|
|
|
180
184
|
| ---- | ---------------------------------- |
|
|
181
185
|
| `z` | zoxide履歴からディレクトリを選択移動 |
|
|
182
186
|
|
|
183
|
-
#### コマンドモード
|
|
187
|
+
#### コマンドモード (v0.32.0 強化版)
|
|
184
188
|
|
|
185
189
|
| キー | 機能 |
|
|
186
190
|
| ------ | ---------------------------------------- |
|
|
187
191
|
| `:` | コマンドモードを起動 |
|
|
188
|
-
| `Tab` |
|
|
192
|
+
| `Tab` | コマンド補完・候補リスト表示(コマンドモード中)|
|
|
193
|
+
| `↑` | 前のコマンドを表示(コマンドモード中) |
|
|
194
|
+
| `↓` | 次のコマンドを表示(コマンドモード中) |
|
|
189
195
|
| `Enter`| コマンドを実行(コマンドモード中) |
|
|
190
196
|
| `ESC` | コマンドモードをキャンセル(コマンドモード中) |
|
|
191
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
|
+
|
|
192
210
|
#### ヘルプ
|
|
193
211
|
|
|
194
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
|
|
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 |
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
# rufio v0.32.0 - Command Mode Enhancements
|
|
2
|
+
|
|
3
|
+
**Release Date**: 2026-01-02
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
Version 0.32.0 introduces comprehensive command mode enhancements, including shell command execution, command history, intelligent Tab completion, and the plugin system foundation with a sample Hello plugin. This release focuses on making command mode a powerful interface for daily operations.
|
|
8
|
+
|
|
9
|
+
## 🎯 Major Features
|
|
10
|
+
|
|
11
|
+
### 1. Shell Command Execution
|
|
12
|
+
|
|
13
|
+
Execute shell commands directly from command mode using the `!` prefix.
|
|
14
|
+
|
|
15
|
+
**Usage:**
|
|
16
|
+
```
|
|
17
|
+
:!ls -la # List files with details
|
|
18
|
+
:!git status # Check git status
|
|
19
|
+
:!grep pattern * # Search for patterns
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
**Features:**
|
|
23
|
+
- ✅ Safe execution with `Open3.capture3`
|
|
24
|
+
- ✅ Separate stdout and stderr display
|
|
25
|
+
- ✅ Exit code tracking and error handling
|
|
26
|
+
- ✅ Result display in floating window
|
|
27
|
+
|
|
28
|
+
**Implementation:**
|
|
29
|
+
- `lib/rufio/command_mode.rb`: Added `execute_shell_command` method
|
|
30
|
+
- `lib/rufio/command_mode_ui.rb`: Hash-based result formatting
|
|
31
|
+
|
|
32
|
+
### 2. Command History
|
|
33
|
+
|
|
34
|
+
Navigate through previously executed commands using arrow keys.
|
|
35
|
+
|
|
36
|
+
**Usage:**
|
|
37
|
+
- `↑` (Up Arrow): Previous command
|
|
38
|
+
- `↓` (Down Arrow): Next command
|
|
39
|
+
|
|
40
|
+
**Features:**
|
|
41
|
+
- ✅ File persistence (`~/.rufio/command_history.txt`)
|
|
42
|
+
- ✅ Duplicate filtering
|
|
43
|
+
- ✅ Configurable history size (default: 1000)
|
|
44
|
+
- ✅ Automatic save on command execution
|
|
45
|
+
|
|
46
|
+
**Configuration:**
|
|
47
|
+
```ruby
|
|
48
|
+
# ~/.config/rufio/config.rb
|
|
49
|
+
COMMAND_HISTORY_SIZE = 500 # Default: 1000
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**Implementation:**
|
|
53
|
+
- `lib/rufio/command_history.rb`: History management class
|
|
54
|
+
- `lib/rufio/config_loader.rb`: Configuration support
|
|
55
|
+
- `lib/rufio/terminal_ui.rb`: Integration with command mode
|
|
56
|
+
|
|
57
|
+
### 3. Intelligent Tab Completion
|
|
58
|
+
|
|
59
|
+
Smart Tab completion with multiple behavior modes.
|
|
60
|
+
|
|
61
|
+
**Behavior:**
|
|
62
|
+
|
|
63
|
+
1. **Single candidate**: Auto-complete
|
|
64
|
+
```
|
|
65
|
+
Input: !lsbo [Tab]
|
|
66
|
+
Result: !lsbom
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
2. **Multiple candidates with common prefix**: Complete to common prefix
|
|
70
|
+
```
|
|
71
|
+
Input: !lsap [Tab]
|
|
72
|
+
Result: !lsappinfo
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
3. **Multiple candidates, no common prefix**: Display candidate list
|
|
76
|
+
```
|
|
77
|
+
Input: !l [Tab]
|
|
78
|
+
Result: Shows list of 115 commands starting with 'l'
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**Features:**
|
|
82
|
+
- ✅ Internal command completion
|
|
83
|
+
- ✅ Shell command completion (PATH-based)
|
|
84
|
+
- ✅ File path completion with tilde expansion
|
|
85
|
+
- ✅ History-based completion
|
|
86
|
+
- ✅ Case-insensitive matching
|
|
87
|
+
- ✅ Candidate list display (max 20 items)
|
|
88
|
+
|
|
89
|
+
**Implementation:**
|
|
90
|
+
- `lib/rufio/command_completion.rb`: Main completion logic
|
|
91
|
+
- `lib/rufio/shell_command_completion.rb`: Shell-specific completion
|
|
92
|
+
- `lib/rufio/terminal_ui.rb`: Tab key handling with candidate display
|
|
93
|
+
|
|
94
|
+
### 4. Hello Plugin (Ruby Command Example)
|
|
95
|
+
|
|
96
|
+
Simple example plugin demonstrating how to create custom Ruby commands.
|
|
97
|
+
|
|
98
|
+
**Usage:**
|
|
99
|
+
```
|
|
100
|
+
:hello # Execute the hello command
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
**Output:**
|
|
104
|
+
```
|
|
105
|
+
Hello, World! 🌍
|
|
106
|
+
|
|
107
|
+
このコマンドはRubyで実装されています。
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
**Features:**
|
|
111
|
+
- ✅ Automatic plugin loading from `lib/rufio/plugins/`
|
|
112
|
+
- ✅ Tab completion support
|
|
113
|
+
- ✅ Command history integration
|
|
114
|
+
- ✅ Comprehensive test coverage
|
|
115
|
+
|
|
116
|
+
**Creating Your Own Plugin:**
|
|
117
|
+
```ruby
|
|
118
|
+
# lib/rufio/plugins/my_plugin.rb
|
|
119
|
+
module Rufio
|
|
120
|
+
module Plugins
|
|
121
|
+
class MyPlugin < Plugin
|
|
122
|
+
def name
|
|
123
|
+
"MyPlugin"
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
def description
|
|
127
|
+
"Description of my plugin"
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
def commands
|
|
131
|
+
{
|
|
132
|
+
mycommand: method(:execute_command)
|
|
133
|
+
}
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
private
|
|
137
|
+
|
|
138
|
+
def execute_command
|
|
139
|
+
"Command result"
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
**Implementation:**
|
|
147
|
+
- `lib/rufio/plugins/hello.rb`: Hello plugin
|
|
148
|
+
- `lib/rufio.rb`: Automatic plugin loading via `PluginManager.load_all`
|
|
149
|
+
- `test/test_plugins_hello.rb`: Plugin tests
|
|
150
|
+
|
|
151
|
+
### 5. Command Mode UI Improvements
|
|
152
|
+
|
|
153
|
+
Cleaner and more intuitive command mode interface.
|
|
154
|
+
|
|
155
|
+
**Changes:**
|
|
156
|
+
- ✅ Removed "補完候補:" label (candidates shown only on Tab)
|
|
157
|
+
- ✅ Floating window for candidate display
|
|
158
|
+
- ✅ Better visual feedback for Tab completion
|
|
159
|
+
- ✅ Color-coded windows (blue for input, yellow for candidates, green/red for results)
|
|
160
|
+
|
|
161
|
+
## 📊 Technical Details
|
|
162
|
+
|
|
163
|
+
### File Changes
|
|
164
|
+
|
|
165
|
+
**New Files:**
|
|
166
|
+
- `lib/rufio/command_history.rb` - Command history management
|
|
167
|
+
- `lib/rufio/command_completion.rb` - Command completion logic
|
|
168
|
+
- `lib/rufio/shell_command_completion.rb` - Shell command completion
|
|
169
|
+
- `lib/rufio/plugins/hello.rb` - Hello plugin example
|
|
170
|
+
- `test/test_command_history.rb` - Command history tests
|
|
171
|
+
- `test/test_command_completion.rb` - Completion tests
|
|
172
|
+
- `test/test_shell_command_completion.rb` - Shell completion tests
|
|
173
|
+
- `test/test_plugins_hello.rb` - Hello plugin tests
|
|
174
|
+
|
|
175
|
+
**Modified Files:**
|
|
176
|
+
- `lib/rufio.rb` - Added plugin loading
|
|
177
|
+
- `lib/rufio/command_mode.rb` - Shell command execution
|
|
178
|
+
- `lib/rufio/command_mode_ui.rb` - UI improvements, Hash result formatting
|
|
179
|
+
- `lib/rufio/terminal_ui.rb` - History and completion integration
|
|
180
|
+
- `lib/rufio/config_loader.rb` - Command history size configuration
|
|
181
|
+
|
|
182
|
+
### Test Coverage
|
|
183
|
+
|
|
184
|
+
```
|
|
185
|
+
390 runs, 1663 assertions, 0 failures, 0 errors, 1 skips
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
All features are fully tested with comprehensive test coverage.
|
|
189
|
+
|
|
190
|
+
### Performance
|
|
191
|
+
|
|
192
|
+
- Command history: O(1) access for previous/next
|
|
193
|
+
- Tab completion: O(n) where n = number of PATH commands
|
|
194
|
+
- File path completion: Uses efficient Dir.glob with patterns
|
|
195
|
+
- Shell execution: Non-blocking with Open3.capture3
|
|
196
|
+
|
|
197
|
+
## 🔧 Configuration
|
|
198
|
+
|
|
199
|
+
### Command History Size
|
|
200
|
+
|
|
201
|
+
```ruby
|
|
202
|
+
# ~/.config/rufio/config.rb
|
|
203
|
+
COMMAND_HISTORY_SIZE = 1000 # Default: 1000
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### History File Location
|
|
207
|
+
|
|
208
|
+
```
|
|
209
|
+
~/.rufio/command_history.txt
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
## 🎓 Usage Examples
|
|
213
|
+
|
|
214
|
+
### Shell Command Execution
|
|
215
|
+
```
|
|
216
|
+
:!ls # List files
|
|
217
|
+
:!pwd # Print working directory
|
|
218
|
+
:!git log --oneline # Git log
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### Tab Completion
|
|
222
|
+
```
|
|
223
|
+
:h[Tab] # Complete to 'hello'
|
|
224
|
+
:!l[Tab] # Show list of commands starting with 'l'
|
|
225
|
+
:!ls /tm[Tab] # Complete to '!ls /tmp'
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### Command History
|
|
229
|
+
```
|
|
230
|
+
:[↑] # Previous command
|
|
231
|
+
:[↓] # Next command
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
### Ruby Commands
|
|
235
|
+
```
|
|
236
|
+
:hello # Execute hello plugin
|
|
237
|
+
:copy # File operations (future)
|
|
238
|
+
:move # File operations (future)
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
## 🐛 Bug Fixes
|
|
242
|
+
|
|
243
|
+
- Fixed Tab completion not working for shell commands
|
|
244
|
+
- Fixed command input display showing candidates unnecessarily
|
|
245
|
+
- Fixed ConfigLoader method access (class method vs instance method)
|
|
246
|
+
|
|
247
|
+
## 🔄 Migration Guide
|
|
248
|
+
|
|
249
|
+
No breaking changes. All existing functionality remains compatible.
|
|
250
|
+
|
|
251
|
+
**New users:**
|
|
252
|
+
- Command history will be automatically created on first command execution
|
|
253
|
+
- No configuration required for basic usage
|
|
254
|
+
|
|
255
|
+
**Existing users:**
|
|
256
|
+
- Command history feature works automatically
|
|
257
|
+
- Previous command mode behavior preserved
|
|
258
|
+
- New Tab completion enhances existing workflow
|
|
259
|
+
|
|
260
|
+
## 📝 Known Limitations
|
|
261
|
+
|
|
262
|
+
- Command arguments not yet supported for internal commands
|
|
263
|
+
- Shell command completion limited to PATH commands
|
|
264
|
+
- History limited to command strings (no metadata)
|
|
265
|
+
|
|
266
|
+
## 🚀 Future Enhancements
|
|
267
|
+
|
|
268
|
+
- Command arguments support
|
|
269
|
+
- Command aliases
|
|
270
|
+
- Custom keybindings for command mode
|
|
271
|
+
- Command history search (Ctrl+R style)
|
|
272
|
+
- More built-in plugins
|
|
273
|
+
- Plugin dependency management
|
|
274
|
+
|
|
275
|
+
## 👏 Credits
|
|
276
|
+
|
|
277
|
+
Implemented following TDD (Test-Driven Development) methodology:
|
|
278
|
+
1. Write tests first
|
|
279
|
+
2. Run tests to confirm failures
|
|
280
|
+
3. Implement features
|
|
281
|
+
4. Verify all tests pass
|
|
282
|
+
5. Commit
|
|
283
|
+
|
|
284
|
+
All features developed with comprehensive test coverage and documentation.
|
|
285
|
+
|
|
286
|
+
---
|
|
287
|
+
|
|
288
|
+
For the main changelog, see [CHANGELOG.md](../CHANGELOG.md)
|
|
@@ -126,7 +126,7 @@ This release establishes rufio as a modern, English-focused file manager with:
|
|
|
126
126
|
|
|
127
127
|
---
|
|
128
128
|
|
|
129
|
-
**Release Date**: 2025-
|
|
129
|
+
**Release Date**: 2025-09-13
|
|
130
130
|
**Version**: 0.4.0
|
|
131
131
|
**Previous Version**: 0.3.0
|
|
132
132
|
**Compatibility**: Ruby 2.7.0+
|
|
@@ -143,4 +143,4 @@ Please report issues at: https://github.com/masisz/rufio/issues
|
|
|
143
143
|
|
|
144
144
|
---
|
|
145
145
|
|
|
146
|
-
*This release represents a significant step forward in rufio's evolution, focusing on modern UI patterns, safety, and maintainability while streamlining the user experience.*
|
|
146
|
+
*This release represents a significant step forward in rufio's evolution, focusing on modern UI patterns, safety, and maintainability while streamlining the user experience.*
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# rufio v0.5.0 - Release Notes
|
|
2
2
|
|
|
3
3
|
## Added
|
|
4
|
+
|
|
4
5
|
- **Bookmark System**: Complete bookmark functionality for quick directory navigation
|
|
5
6
|
- **Interactive Bookmark Menu**: Floating dialog accessed via `b` key with Add/List/Remove operations
|
|
6
7
|
- **Quick Navigation**: Number keys (1-9) for instant bookmark jumping
|
|
@@ -12,6 +13,7 @@
|
|
|
12
13
|
- **Error Handling**: Graceful handling of non-existent paths, permission errors, and invalid inputs
|
|
13
14
|
|
|
14
15
|
## Changed
|
|
16
|
+
|
|
15
17
|
- **Help Messages Updated**: Latest keybinding information including bookmark operations in footer
|
|
16
18
|
- **KeybindHandler Enhanced**: Integrated bookmark menu and direct navigation functionality
|
|
17
19
|
- **DirectoryListing Improved**: Added `navigate_to_path` method for bookmark-based navigation
|
|
@@ -19,6 +21,7 @@
|
|
|
19
21
|
- **Documentation Updated**: Comprehensive README updates with bookmark usage examples and workflows
|
|
20
22
|
|
|
21
23
|
## Technical Implementation
|
|
24
|
+
|
|
22
25
|
- New `Bookmark` class with full CRUD operations and JSON persistence
|
|
23
26
|
- Floating window system for bookmark management dialogs
|
|
24
27
|
- Integration with existing terminal UI components and color system
|