Введение
Как бы ни казалась привлекательной идея любого проекта, очень важно прежде чем бросаться его воплощать во всех деталях, побыстрому как-либо проверить основные идеи. Это здорово помогает экономить время, отбросив явно невалидные предположения.
Вот ИИ, может очень быстро набросать скрипт строчек на 300 по абзацу описания и это очень на самом деле помогает.
Здесь я хотел показать результаты некоторых моих сессий вайб-кодинга в виде скриншотов и поделиться парочкой своих интерфейсных идей, которые возможно кто-то захочет использовать в своих приложениях.
Проигрыватель
Никогда не понимал, почему все проигрыватели создают какие-то непонятные базы данных из музыки, зачем все эти обложки и прочее непотребство. Всё чего мне не хватало в проигрывателе - это кнопки «удалить текущую композицию с файловой системы». И вот на первом скриншоте, результат того какой проигрыватель мне сварганил DeepSeek (исходник)
Питон скрипт использует curses для вывода. Ищет рекурсивно mp3/ogg, играет их в случайном порядке, умеет добавлять/удалять в список любимых (который - простой список файлов с названием «best.m3u8»).
Скрипт выбора файла
Ещё с момента обсуждения скриншота с neparsy я подметил в том своём экспериментальном интерфейсе редактирования программы одну по-настоящему ценную идею.
В том интерфейсе присутствовало то, что я назвал «мультикурсорностью». Смысл в том что при открытии узла дерева, по умолчанию там выделен всегда тот же элемент, что был открыт в последний раз. При спуске вниз по дереву без перемещений даже с самого верха, ты всегда оказываешься на элементе, который последний раз редактировал. А если выбрать другую ветку, то также окажешься на чём-то, что редактировал уже в этой ветке.
На втором скриншоте виден скрипт, на котором я попробовал воплотить эту идею на выборе файлов. (исходник)
Скрипт разделения кода
Потом я попробовал ещё раз применить ту же идею именно на коде, но в более привычном текстовом виде. Навайбкодил 2 скрипта для разделения и соединения дерева кода на блоки, а потом vim-скрипт, чтобы по этому было удобно как-то бродить. (исходники)
В результате получаем свою историю отмен в каждом блоке. Но вот поиск такими средствами сделать удобным мне пока не удалось.
Выбор из списка и центрированный курсор
К сожалению выбор из списка мышью не очень позвлоляет сделать какой-то элемент «по умолчанию».
Однако, недавно мне пришла в голову вот какая мысль - если курсор зафиксировать в центре экрана, чтобы двигался не курсор, а объекты под ним, то это сильно меняет дело.
Однако само расположение элементов в подобных интерфейсах всё ещё представляло для меня проблему ещё со времён проекта unDE. И вот опять же только недавно я придумал такое решение: при движении вверх-вниз, перемещаются все колонки, но элементы уходящие вверх появляются внизу левого столбца, а элементы уходящие вниз - вверху правого.
Движение влево-вправо становится своего рода постраничным перемещением, просто страницы видны сразу в соседних столбцах.
Что ещё более интересное, что эта идея позволяет реализовывать управление на смартфоне более близкое к десктопному. Если например рисование пальцем на смартфоне обычно не удобно из-за того что палец загораживает то что ты рисуешь, то центрирование курсора позволяет рисовать его не загораживая.
Кроме того можно имитировать поведение клика левой кнопкой мыши при тапе левее курсора, и правой кнопкой мыши - правее.
Можно сделать перемещение пальца слева - как перемещение мышью с нажатой левой кнопкой, а справа - с не нажатой.
Всё это я попытался снова воплотить на имитации на 4-м скриншоте. Это html/javascript и вы можете попробовать это.
Там 200 элементов, первые 50 - типа директории. Левой кнопкой мыши можно зайти в директорию, правой - выйти из неё. И по умолчанию выбран последний выбранный ранее элемент (cookies скрипт не хранит и все выборы сбрасываются при перезагрузке страницы).
Репозиторий со всеми исходниками.
В качестве бонуса, о состоянии проекта neparsy
Вообще в 2022-м году моё первое описание проекта neparsy было воспринято с интересом. Однако после начала бума нейросетей вскоре, я долгое время думал, что если уж они могут писать код с нуля, то и с переписыванием кода с языка на язык у них проблем быть не должно.
Только недавно я осознал, что проблем может быть и не будет для пары популярных языков, но если хотя бы один язык не столь популярен, то жди путаницы. Поэтому сейчас разработка продолжена в новой ветке.
И кстати я нашёл-таки способ вмещать информацию о расположении лексем (строка, столбец), не портя наглядности. Теперь я просто пишу второй файл с расширением .inp, которая представляет собой такое же дерево с теми же самыми скобками, но вместо лексем там только координаты вроде (:10:5-:10:8).
Перемещено dataman из screenshots













