Releases: koldoon/flex_commander
Release list
v0.0.119
28 сентября 2026 года
Иконка приложения на macOS 27 выглядела перегруженной: тонкие полоски-строки
внутри панелей ловили преломление и блик по всему периметру, и на мелких
размерах иконка читалась как рябь. Liquid Glass со строк снят — стекло осталось
там, где оно и задумано, у двух панелей.
Full Changelog: v0.0.118...v0.0.119
v0.0.118
27 сентября 2026 года
Окно Alt-↓ называется теперь «Panel history», и так же называется строка
в палитре. Историй в приложении стало две — пройденные панелью каталоги и
файловые работы за сеанс, — и два одинаковых «History» по соседству в палитре
означали выбор наугад.
Full Changelog: v0.0.117...v0.0.118
v0.0.117
25 сентября 2026 года
Cmd-Z отменяет последнюю файловую работу. Скопировали не туда — копия
удаляется; перенесли не то — объекты возвращаются на свои места; удалили в
корзину — достаются обратно под тем именем, под которым туда легли; создали
каталог или переименовали — как не бывало. Перед откатом окно говорит не
«уверены?», а что именно произойдёт: «удалить 12 объектов в /dest», «вернуть
3 из корзины».
Отменяется сделанное, а не задуманное. Работа по ходу дела записывает, что
у неё и правда вышло: копирование прерывают, часть файлов пропускают по отказу,
часть перезаписывают — и «отменить копирование» по списку источников удалило бы
чужое. По журналу удаляется ровно то, что эта работа создала.
Необратимое так и говорит. Удаление мимо корзины, перезаписанное
содержимое, перенос слиянием — Cmd-Z объясняет, почему не станет ничего
делать, и не перескакивает через такую запись: за ней мир, которого уже нет.
Изменившийся после работы файл молча не трогают — спрашивают.
Что приложение сделало за сеанс — списком: «Operation history» из палитры.
Что за работа, когда, сколько объектов, чем кончилась; у неотменимой — причина
словами, у отменённой — пометка. Между запусками история не хранится: диск
успевает измениться кем угодно, и обещание «отменю вчерашнее» было бы враньём.
Окраска строк по правилам. Битая ссылка видна красным сразу, а не по факту
отказа посреди копирования. Правила настраиваются — условие (маска, скрытое,
исполняемое, тип по содержимому) и цвет, первое совпавшее выигрывает; пишутся
они в settings.json, раздел fc.panels, ключ fileColors. Цвет действует во
всех пяти видах панели и сильнее курсора: под курсором признак недоступного
файла не должен пропадать ровно тогда, когда на него смотрят.
Починено попутно: окно хода работы уходит вместе с работой — прежде окно
Alt-F9 (распаковать по месту) висело до Esc.
Full Changelog: v0.0.116...v0.0.117
v0.0.116
24 сентября 2026 года
F1 перестала быть свитком. Слева — оглавление разделов, сверху — поиск,
справа — сам текст: ровно так же, как в окне настроек. Подсвечен тот раздел,
до которого долистали; щелчок по названию уводит к нему.
Ищется по названию раздела, по имени команды, по клавишам («а что такое
Alt-F9») и по описанию. Совпало название раздела — раздел показан целиком:
спросили «terminal», значит спросили про все его команды. Раздел, в котором
ничего не совпало, пропадает и из списка, и из оглавления.
Клавиши окна те же, что в настройках: фокус при открытии в поиске, стрелки
оттуда ходят по разделам, PgUp и PgDn листают, Esc и Enter закрывают.
Сайдбар при этом не написан заново — он общий: окна настроек, клавиш,
редактор тем и справка строятся одним виджетом. Ширину справка теперь назначает
себе долей экрана, как настройки: с оглавлением слева содержимое её больше не
назначает.
Починено: растянутое окно файла отдаёт прибавку дереву. Окно загрузки
набора и темы росло, а дерево каталогов оставалось в свои девять строк —
прибавка уходила в пустоту под полем имени, при том что тянут это окно ровно
ради дерева.
Full Changelog: v0.0.115...v0.0.116
v0.0.115
24 сентября 2026 года
Сколько строчек у полосы под списком — теперь настройка («File panels»,
Status line grows up to), и умолчанием стоит одна. Полоса росла до трёх
сама, и цена этому — мерцание: встал курсор на длинное имя, полоса выросла,
список ужался; ушёл — всё вернулось. На каталоге с длинными именами список
дёргался под каждой стрелкой.
Дёрганье человек видит каждый раз, а недоговорённое имя — лишь когда оно
длинное. Кому дороже прежнее обещание «длинное имя договаривает полоса», тот
ставит три строчки и получает ровно то, что было.
Не поместилось — полоса режет тем же правилом, что и колонки: хвостом или
серединой, как выбрано настройкой имён. Имя, срезанное в списке серединой, а в
полосе хвостом, читалось бы как два разных имени.
У ссылки стрелка переживает обрезку. Середина строки приходится ровно на
неё, и без особого правила получалось бы очень длинн…цель.txt — строка,
которую не отличить от одного длинного имени. Теперь разрез обходит стрелку с
обеих сторон:
ссылка на что-то оче… → …каталог/цель ссылки.txt
Недоговорённое по-прежнему договаривает подсказка.
Full Changelog: v0.0.114...v0.0.115
v0.0.114
24 сентября 2026 года
Новая настройка в разделе «File panels»: чем жертвовать в имени, которому не
хватило ширины. Было одно — отрезанный хвост; теперь можно выбрать середину,
как в Finder:
было: Отчёт за третий квартал 20…
стало: Отчёт за тре…ный.xlsx
Видны оба конца, и расширение в том числе. Десять файлов с общим началом
перестают быть десятью одинаковыми строками.
Правило одно на все виды панели — таблицу, краткий, дерево, столбцы и значки:
одно и то же имя, выглядящее в дереве и в таблице по-разному, было бы не
настройкой, а поломкой. Правка видна сразу, без перезапуска и без нажатий в
панели.
Путей это не касается: они по-прежнему сокращаются слева и по целым
звеньям — в конце текущий каталог, по началу видно, о каком корне речь. Не
касается и колонок размера и даты: середина у числа не значит ничего.
Умолчание прежнее — хвост: у того, кто настройку не трогал, не меняется ничего.
Full Changelog: v0.0.113...v0.0.114
v0.0.113
24 сентября 2026 года
Ctrl-M переименовывает помеченное пачкой. Окно показывает две колонки —
было и станет, строка в строку, — и до нажатия «Rename» на диске не меняется
ничего. Сорок снимков с телефона в нумерованный ряд, *.txt в *.bak, .JPG
в .jpg — одним движением вместо сорока.
Имя собирается маской, как в Multi-Rename Tool: [N] — основа, [E] —
расширение, [N2-5] — кусок имени, [C] — счётчик, [Y][M][D] — дата
объекта, [P] — имя каталога, в котором он лежит. Недописанная маска
объясняется прямо по ходу набора, а срез за краем короткого имени — обычное
дело, а не ошибка. Рядом — «найти → заменить» (буквально или выражением) и
регистр, отдельно для имени и расширения: самое частое желание — .JPG →
.jpg, не трогая имени.
Столкновения видны заранее. Два имени, ставших одним, и имя, занятое
чужаком, — красные строки предпросмотра, и пока они есть, применить нельзя:
человек видел список целиком, и вопрос «перезаписать?» на седьмом файле
означал бы, что предпросмотр соврал. А вот обмен именами (a → b, b →
a) и сдвиг ряда 001 → 002 → 003 делаются сами: порядок находится по
ходу, круг разрывается видимым временным именем.
Составные расширения понимаются теми же правилами, что и в панели:
архив.tar.gz — это основа архив и расширение tar.gz. Счётчик нумерует в
порядке списка, а не в порядке файловой системы.
Окно открывается там, где его закрыли, а часто нужные правила сохраняются
набором под своим именем — списком в первой же строке окна.
Чего пока нет: отката (он придёт общим для всех операций), правки имени руками
прямо в строке таблицы и переименования внутри архивов.
Full Changelog: v0.0.112...v0.0.113
v0.0.112
24 сентября 2026 года
Новый флажок «Look in archives» в окне поиска. С ним обход, встретив по
дороге .zip, .tar.gz или .7z, заходит внутрь и ищет там теми же
правилами — по имени, по содержимому и с теми же условиями отбора. Раньше
«где-то у меня был этот файл» кончалось на первом же архиве, а архивами забиты
ровно те каталоги, где руками смотреть дольше всего: выгрузки, бэкапы, старые
сборки.
Находка внутри архива встаёт в общий список и открывается по F3 прямо оттуда,
а путь показывает архив звеном: …/backup.zip/logs/today.txt.
Выключен по умолчанию и стоит рядом с «во вложенных» и «по ссылкам» — там
же, где человек решает, насколько широко копать. Поиск по имени внутри архива
дёшев (это чтение оглавления), а по содержимому — распаковка каждого
подходящего файла, и tar.gz при этом читается насквозь.
Архив в архиве разворачивается на один уровень: иначе один криво собранный
.tar уводил бы поиск в часы работы. Битый архив поиск переживает и идёт
дальше, а открытым архив остаётся ровно пока его обходят — каталог с сотней
архивов не оборачивается сотней открытых файлов.
Full Changelog: v0.0.111...v0.0.112
v0.0.111
24 сентября 2026 года
Снаружи не изменилось ничего — это сборка ради имён внутри. Слово «choice»
ушло из контрактов: настройка-перечень зовётся SettingsOption со списком
allowed, довод упаковщика — PackerOption { name, label, allowed, defaultsTo }
(как ArgParser.addOption в самом Dart), неоднозначное дополнение в командной
строке — isAmbiguous, ответ окна «только для чтения» — _ReadOnlyAnswer.
Окно выбора набора стало SelectSessionCommand, а набор по номеру —
SessionByNumberCommand, как он и подписан.
Клавиши, идентификаторы команд и настройки не тронуты: сохранённые привязки
работают как работали.
Full Changelog: v0.0.110...v0.0.111
v0.0.110
24 сентября 2026 года
tar без сжатия больше не называется .tar.gz. В окне «Pack here» выбор
контейнера (.tar, .tar.gz, .tgz) теперь виден и в имени файла — раньше имя
считалось по формату целиком и с выбранным расходилось.
Заодно у команды появился параметр option: тем, кто зовёт её сценарием, стал
доступен и свой довод формата — сжатие у zip, контейнер у tar.
Full Changelog: v0.0.109...v0.0.110