Переработка UX чата, ранний доступ к v2, обновление бренда и автономный CLI

Переработка UX чата, ранний доступ к v2, обновление бренда и автономный CLI

Большое обновление за последние три недели. Интерфейс чата получил UX-переработку сверху донизу с новым редактором промптов с форматированием, чипами slash-команд и упоминаний файлов и переработанной системой вызовов инструментов. Рабочее пространство v2 теперь в раннем доступе — с панелями, просмотрщиком diff'ов, редактором файлов, вкладкой ревью и панелью браузера. Вышел Rox CLI, а затем обзавёлся самодостаточным tarball, который может запускать host-service где угодно. Десктопное приложение получило полное обновление бренда, а интеграция с GitHub теперь бесплатна на любом плане.

Переработка UX чата #3039

Ввод промптов на Tiptap

Поле промпта теперь редактор с форматированием на базе ProseMirror со встроенными чипами для команд и ссылок на файлы.

  • Чипы slash-команд — набери /, чтобы открыть меню команд; команда становится встроенным чипом в любом месте сообщения, а не отправляется сразу. Чипы с argumentHint показывают встроенное редактируемое поле с авторазмером и навигацией с клавиатуры; /model показывает выпадающий список доступных моделей.
  • Чипы упоминаний файлов — набери @, чтобы открыть всплывающее окно поиска файлов, привязанное к курсору. Выбор файла вставляет чип, который сериализуется в @path при отправке.
  • Предзагрузка скилла — чипы /command извлекаются перед ходом LLM, чтобы харнесс сначала загрузил нужный скилл. Строка SkillToolCall показывается в сообщении, пока скилл загружается.
  • Предпросмотр при наведении — наведение на чип показывает всплывающее окно с его описанием (скрыто, пока поле ввода аргумента в фокусе).
  • Защита от IME-композиции предотвращает отправку, пока ожидается CJK-ввод; Tab больше не выбирает команды автоматически (только Enter или клик).

Переработанные вызовы инструментов

  • Компактная моноширинная раскладка ToolInput / ToolOutput / ToolHeader с брайлевским спиннером и иконками слева
  • Активность субагента отображается встроенно как сворачиваемая обёртка инструмента, с полным markdown для промпта и ответа задачи
  • Кликабельные имена файлов на каждой строке вызова инструмента, связанного с файлами (read, write, LSP inspect) — клик открывает файл в панели редактора
  • Вывод чтения файла с подсветкой синтаксиса, заголовком с именем файла и меткой диапазона строк; разворачивание/сворачивание и копирование на каждом блоке кода

Сценарий ask_user

  • Оверлей в подвале с закреплённым заголовком/подвалом и прокручиваемыми кнопками вариантов — больше никакого встроенного интерфейса вопросов
  • Чипы статуса (ожидает ответа / отвечено / отменено) со сворачиваемым пузырём ответа; отмена показывается сразу при прерывании
  • Оптимистичное закрытие при отправке; поле промпта автоматически фокусируется после ответа
  • ask_user теперь обязателен для всех вопросов Rox — без запасных вариантов в виде простого текста

Статус рабочего пространства и уведомления

  • Ожидающий вопрос ставит оранжевую точку на навигацию рабочего пространства и запускает нативный тост ОС, управляемый на стороне сервера через конвейер событий жизненного цикла, так что он работает, когда вкладка не в фокусе
  • Оранжевая точка сразу пропадает при отправке ответа
  • Авто-прокрутка вниз при отправке сообщения, появлении нового вопроса и отправке ответа

Рабочее пространство v2 в раннем доступе

Ранний доступ к рабочему пространству v2Ранний доступ к рабочему пространству v2

v2 — это перестройка рабочего пространства с нуля, нацеленная на облако. Мы вырвали накопившийся хлам v1, переписали терминал с нуля, чтобы исправить глюки отрисовки, и переархитектурировали приложение как настоящую IDE — Tab → Split → Pane, полноценное дерево файлов с git-декорациями, полный редактор и просмотрщик diff'ов, который справляется с большими наборами изменений. Пока по согласию; вот что в коробке:

Система раскладки панелей #3088

Новая гибкая структура Tab → Split → Pane, построенная на пакете @rox/panes, со взвешенными сплитами, размер которых можно менять.

  • Перетаскивай панели, чтобы переставлять их #3090
  • Перетаскивай, чтобы переупорядочивать вкладки внутри группы вкладок #3094
  • Клик правой кнопкой по заголовкам панелей для split / close / close others #3196
  • Двойной клик по разделителю сплита уравнивает размеры панелей #3101
  • Cmd+Alt+Стрелка перемещает фокус между панелями #3403 #3460
  • Закрытие активной панели фокусирует ближайшего соседа #3198

Просмотрщик diff'ов #3384

Просмотрщик diff'ов v2Просмотрщик diff'ов v2

Многофайловая панель diff в стиле GitHub с ленивой загрузкой, постоянным состоянием «Просмотрено», синхронизированным со списком изменений в сайдбаре, переключателями унифицированного/раздельного вида и действиями в заголовке для сворачивания, разворачивания неизменённого, копирования и отката. Открой её в отдельной вкладке через ⌘⇧L #3420 #3556.

Редактор файлов #3526

Дерево файлов и редактор v2Дерево файлов и редактор v2

Полноценная панель редактора — фундамент, представления и большой проход по стабильности. Дерево файлов показывает git-декорации встроенно #3320.

Вкладка ревью #3463

Информация о PR, проверки и комментарии отображаются встроенно в рабочем пространстве v2, как в опыте ревью v1.

Чекаут PR и контекст запуска #3525 #3467

Делай чекаут PR прямо из v2 через расширенную процедуру чекаута и составляй полный контекст запуска (выбранные файлы, инструкции, состояние ветки) перед началом работы.

Панель браузера #3346

Страницы остаются загруженными при переключении вкладок и навигации по рабочим пространствам — никаких перезагрузок, потери прокрутки или состояния формы. Строка URL, назад/вперёд/перезагрузка, автодополнение истории, DevTools, скриншоты и жёсткая перезагрузка из меню переполнения.

Сайдбар изменений Git #3177

Вкладка «Изменения» в правом сайдбаре показывает статус ahead/behind, число коммитов и фильтруемый список файлов. Фильтруй по всем изменениям, только незакоммиченным, отдельному коммиту или диапазону коммитов. Селектор базовой ветки с поиском и встроенное переименование для непушенных веток.

Rox CLI #3194

CLI rox позволяет управлять Rox из терминала и поставляется как самодостаточный tarball #3298, так что ты можешь запускать host-service на удалённом сервере, CI-машине или облачной VM без десктопного приложения.

Бинарники для macOS (arm64, x64) и Linux x64. Режим вывода --json для скриптов и использования агентами.

Обновление бренда #3367

Обновление бренда — новый логотип и оформление иконкиОбновление бренда — новый логотип и оформление иконки

Новый логотип и оформление иконки по всему десктопному приложению, фону установщика DMG, иконке в трее и текстовому логотипу. В dev-сборках каждое рабочее пространство получает цветовой загиб угла на иконке в доке, так что открытые рабочие пространства различимы с первого взгляда.

Интеграция с GitHub бесплатна #3152

Ревью PR, связывание issue и push с десктопа доступны на любом плане — Pro-подписка не требуется.

Улучшения

  • Фундамент редактора файлов V2 — представления редактора плюс большой проход по стабильности #3526
  • Вкладка ревью V2 — информация о PR, проверки и комментарии встроенно #3463
  • Чекаут PR в V2 — чекаут PR прямо в рабочем пространстве v2 #3525
  • Составление контекста запуска V2 — подготовь файлы, инструкции и состояние ветки перед запуском #3467
  • Недавно просмотренное в быстром открытии — показывает файлы, которые ты только что смотрел #3488
  • Селектор веток с пагинацией — масштабируется до тысяч веток со встроенными действиями чекаута + открытия #3397
  • Ссылки на файлы в терминале с модификаторами — ⌘/Ctrl+клик открывает во внешнем редакторе или новой вкладке #3512 #3398
  • Перетаскивание в панели терминала V2 — брось файлы, чтобы вставить их пути #3542
  • Ссылка на задачи восстановлена в сайдбаре дашборда V2 #3553
  • Escape закрывает настройки #3466
  • Значения горячих клавиш по умолчанию — несвязанные значения по умолчанию плюс восстановленные горячие клавиши пред/след вкладки и рабочего пространства #3422 #3472
  • Разрешить горячие клавиши в редактируемом контенте #3418
  • Поиск в терминале — ⌘F / Ctrl+Shift+F в терминале v2 #3289
  • Протокол клавиатуры Kitty — лучшая поддержка модификаторов в neovim, fish 4+ и других #3289
  • Настройки темы и шрифта терминала в v2 (паритет с v1) #3155
  • Быстрый поиск файлов — нечёткий скорер VS Code с учётом путей и предварительно прогретым индексом #3136
  • Верхняя панель V2 — переключатель правого сайдбара, выпадающий список организаций, единая кнопка «Открыть в» #3197
  • Git-декорации в дереве файлов V2 #3320
  • Паритет пресетов V2 + скрипты настройки #3354 #3359
  • Переключатель V1/v2 с верхней панели, предпочтение сохраняется #3347
  • Долговечность host service — переживает выходы из приложения, переусыновляется при следующем запуске #3157
  • Настройка безопасности relay — «Настройки → Безопасность» управляет тем, открыта ли эта машина; по умолчанию выключено #3304
  • Единое удаление рабочего пространства — удаление в v2 идёт через host-service #3443
  • Фокус на соседа при удалении рабочего пространства — переносит тебя на соседнее рабочее пространство, а не на / #3401
  • «Создать раздел ниже» выведено на верхний уровень в меню рабочего пространства #3537
  • Меню трея на событиях, показывающее реальное имя организации #3458
  • Громкость звука уведомлений — выпадающий список в настройках #3073
  • Решение комментариев ревью прямо во вкладке ревью #3078
  • Публичный роадмап на rox.one/roadmap #3074

Исправления багов

  • Безопасность — обновили drizzle-orm и better-auth, чтобы закрыть CVE #3560; запинили axios против известного supply-chain вектора #3043
  • Чат — снизили поллинг отображения до 4fps и восстановили значения кэша запросов по умолчанию #3562
  • Чат — предотвратили утечку символов от горячих клавиш в поле ввода чата #3520
  • Терминал — восстановление после падения из-за немоноширинного шрифта #3554
  • Терминал — разблокировали ввод v1 во время инициализации шелла #3550
  • Терминал — синхронизировали размеры v1 с бэкендом при подключении #3545
  • Терминал — соответствие обработке буфера обмена VS Code #3415
  • Терминал — восстановили ⌘+клик для ссылок на файлы v1; обновили редактор тултипа ссылок v2 #3457 #3552
  • Терминал — корректные размеры, отправляемые после attach (исправляет TUI-приложения) #3154
  • Терминал — фикс искажений через сессии с приоритетом tRPC #3252
  • Авто-обновлятор — восстановлен на macOS; восстановление после повреждённого кэша обновлений; спиннер во время ожидания; защита от повторных кликов #3291 #3278 #3495 #3561 #3549
  • Выход на macOS — ⌘Q и «Выйти» из дока теперь полностью завершают приложение вместо сворачивания в трей #3205
  • macOS — запуск запроса разрешения локальной сети при старте #3551
  • Сканер портов — прекратили избыточный запуск lsof #3547
  • Рабочее пространство V2 — предотвратили мелькание «workspace not found» после создания; завязали дочерние элементы на готовность коллекции; выводим базовую ветку из конфига git #3494 #3464 #3492
  • Дерево файлов V2 — больше не блокируется на git.getStatus в общем пакете tRPC; иконки файлов разрешаются на вложенных маршрутах #3400 #3199
  • Сайдбар V2 — бейдж LOC скрыт при отсутствии изменений; число в разделе соответствует визуальной группировке; нативный буфер обмена для копирования пути #3399 #3544 #3462
  • Сайдбар diff V2 — убрали чекбоксы «просмотрено»; переключатель правого сайдбара реактивен #3480 #3421
  • V2 — «Открыть в» редакторе теперь в пределах проекта, а не рабочего пространства; дублирование панелей при открытии файлов в новой вкладке; ловушка фокуса в модальных диалогах рабочего пространства #3393 #3093 #3392
  • V1 — исправили двойной запуск Cmd+O для открытия; исправили начальные размеры разделённой панели; --no-track в createWorktree #3511 #3416 #3548
  • Клавиатура — Ctrl-привязки, унификация event.code, учёт переопределений терминала #3391
  • IME-композиция в обработчиках Enter нового рабочего пространства #3486
  • Прикреплённые файлы проходят через поле ввода промпта #3334
  • Горячая клавиша закрытия рабочего пространства больше не конфликтует с закрытием вкладки — теперь ⌘⇧⌫ #3037
  • Сообщения об ошибках отложенных сбоев выделяемы #3432
  • Запрос настроек шрифта больше не направляется молча через host-service #3394
  • MCP — принимаем URL ресурса как валидную OAuth-аудиторию; исправили, что устройства некорректно классифицировались как офлайн #3459 #3299
  • Аутентификация CLI переведена на OAuth PKCE + loopback #3318