Pressing / opens a filter bar at the bottom of the screen. As the user
types, the active pane's entries are filtered in real-time using
case-insensitive substring matching. The .. entry is always preserved.
Key bindings:
/ - open filter input (re-opens with previous query if active)
Esc - clear filter and restore full list
Enter - commit filter (keeps filtering active, closes input bar)
Up/Down - navigate the filtered list while typing
PgUp/Dn - scroll the filtered list
Filter is automatically cleared when navigating to a different directory
(Enter on a folder, Backspace to parent, opening an archive).
Modified files:
- internal/ui/keymap.go: added Filter key binding (/)
- internal/ui/model.go: filterMode, filterQuery, filterInput fields;
filteredPane() helper for View rendering; filter handling in Update();
renderFilterBar() for the bottom bar UI; clearFilter() helper;
adjustCursorForFilter() to keep cursor in bounds
Created files:
- plans/feature-roadmap.md
2.9 KiB
2.9 KiB
Feature Roadmap — vcom
Выбранные фичи (по приоритету)
1. Поиск/фильтрация файлов (/)
- Filter mode: при нажатии
/открывается текстовый инпут внизу экрана (поверх footer, как модальное окно) - Фильтрация
[]Entryв активной панели на лету поstrings.Contains/fuzzy-match - Подсветка совпадений в строках (изменить
renderEntryRow— передать query, подсветить matched part) Esc— выход из filter mode, восстановление полного спискаEnter— зафиксировать фильтр (оставить отфильтрованный список), выход из filter mode- При смене директории фильтр сбрасывается
2. Bulk rename (массовое переименование)
- Выделить файлы (
Shift+↑/↓), нажатьCtrl+R(новая клавиша) - Модальное окно с текстовым полем для паттерна:
prefix_%N.ext - Превью результата (старое имя → новое имя)
- Выполнить rename для всех выделенных
3. Корзина (trash support)
Delete/F8— перемещать в~/.local/share/Trash/по freedesktop specShift+Delete—永久ное удаление (как сейчас)browser.confirm_deleteприменяется к永久ному удалению- Новая опция конфига:
behavior.use_trash = true(default: true)
4. Directory history (назад/вперед)
[]stringстек истории на каждую панельAlt+←/Alt+→— навигация назад/вперед- При переходе в новую директорию (Enter, Backspace, клик) — push в history
- При навигации по истории — не создавать новые записи
5. Расширенный превью форматов
- PDF — извлечение текста через
pdftotext(если доступен) - Аудио — метаданные через
ffprobe(битрейт, длительность, кодек) - Видео — метаданные + превью через
ffmpegthumbnailer/ffprobe - Fallback если утилита не установлена
Процесс
- Каждая фича реализуется в отдельной ветке
feature/N-имя - После реализации — commit + push
- После апрува — merge в main
- Порядок: 1 → 4 → 3 → 2 → 5 (от простого к сложному)