З чого складається програма
Все тримається на одному правилі: стан вікна живе в пам'яті, а конфігурація в файлах. Все нижче випливає з цього.
Правило, на якому все тримається
Вікно містить вкладки. Вкладка містить блоки. Блок - це термінал, редагований файл, панель файлів, вебсторінка, картинка, PDF, сторінка Markdown, diff, системний монітор, екран налаштувань або панель доповнення. Вони діляться в будь-якому напрямку з вкладеністю, перетягуються, змінюють розмір і закриваються за одним набором правил, а не за новим набором для кожної нової функції. Усе, що надто велике, щоб належати кожному, - це доповнення з власного каталогу vobuda, поки що Design і Director, яке ставиться й видаляється цілком одним натисканням.
Ніщо в цьому розташуванні не зберігається в базі даних, бо бази даних немає. Те, що робить вікно зараз, живе в пам'яті; те, що ви вирішили, живе у файлах. Тому кнопка, клавіша, рядок меню, Cmd+K і командний рядок викликають одну й ту саму дію за назвою, і тому змінити поведінку майже завжди означає відредагувати JSON.
Саме тому кращий термінал для Mac, якщо йдеться про таку роботу, це той, який можна перевірити. Якщо налаштування існує, для нього є рядок у файлі. Якщо дія існує, у неї є назва, за якою її можна викликати.
П'ять шляхів до дії, і це одна й та сама дія
За такої кількості дій більша частина програми на практиці прихована. Cmd+K відповідає на запитання «що вона вміє», а не «зроби це».
-
Це вчить клавішам, а не замінює їх
Кожен рядок показує свою комбінацію клавіш. Людина, яка звертається до списку двічі за однією дією, запам'ятає клавішу вже на третій раз.
-
Це не п'ятий словник
Кожен рядок запускає дію за назвою, точно так само, як і інші чотири способи. Перевірка звіряє таблицю, яку він малює, зі списком ядра щодо того, яку клавішу можна прив'язати, в обидва боки: дія, що існує, але не запропонована там, провалює збірку.
-
Командний рядок - той самий набір
vobuda do block.split-down, vobuda button files, vobuda theme catppuccin-mocha, vobuda send, vobuda signal, vobuda state, vobuda log, набрані в будь-якому блоці vobuda, а
vobuda mcpпропонує ті самі команди агентові як інструменти MCP. Це не чорний хід для скриптів: через нього вся програма керується в інтерфейсних тестах, тому їй можна довіряти, і тому агент може перебудувати ваше вікно, а ви можете прочитати, що саме він зробив.
Блоки і що вони гарантують
Блок переходить між вкладками разом зі своєю оболонкою
Перетягніть блок за заголовок на вкладку в смузі, і він приземлиться там: той самий id, та сама оболонка, та сама тека, все ще виконує те, що виконувало. Вкладка підсвічується акцентним кольором, поки блок над нею. Для цього теж є дія, block.to-tab:2, тому її можна повісити на клавішу, і перевірка без миші зможе її натиснути.
Розміри запам'ятовуються, і є мінімум
Для кожного блока окремо, і жоден блок не може стати настільки вузьким, щоб перестати бути придатним для використання. Панель на 200 точок - це панель, якою ніхто не скористається.
Нічого вашого не йде тихо
Закриття того, що працює, спершу питає підтвердження, за назвою, бо втрата чиєїсь роботи хоч раз коштує більше довіри, ніж приносить ціла функція. З тієї самої причини папка проєкту зберігається в знімок перед кожним ходом агента, і одним натисканням її можна повернути; ключ, вставлений агентові, зупиняється раніше, ніж агент його побачить; а огорожа, яку можна ввімкнути, не дає агентові записувати й видаляти будь-що поза проєктом.
Сесії відновлюються за замовчуванням
Вкладки, блоки й робоча папка кожного блока повертаються після перезапуску, і за замовчуванням це ввімкнено; один перемикач у розділі «Загальні» це вимикає. Сесія, що прийшла з іншого комп'ютера, відкриває те, що може, і повідомляє, що не змогла відкрити, а не відкидає блоки мовчки.
Тека налаштувань, файл за файлом
Все в ~/.config/vobuda це читабельний JSON, за яким стежить програма під час роботи. Збережіть файл, і вікно перемалюється.
| Файл | Що в ньому |
|---|---|
| settings.json | Тема, вигляд, термінал, оболонка, вікно, сигнали: усі налаштування десяти розділів |
| themes/*.json | Кольори термінала і вікна. 25 палітр у комплекті, дві з них зроблені для порушень кольоросприйняття |
| looks/*.json | Форма вікна: кути, тіні, кольори панелей, прозорість. У комплекті 29 виглядів |
| skins/*.json | Які панелі монітора малюються і як |
| buttons.json | Док: кнопки, порядок, сторона, форма і колір для тих небагатьох, що варто виділити |
| agents.json | Як розпізнається агент і що йому пропонується |
| keys.json | Кожна комбінація клавіш. Системне (нативне) меню macOS будується з того самого файлу |
| workspaces/*.json | Проєкти: кожен - вікно зі своїми вкладками, папкою, темою та доком |
Вбудовані теми лежать усередині бінарника, а папка їх перевизначає, тож оновлення приносить нові кольори, не перезаписуючи те, що ви відредагували. Уся папка зберігається в один архів і відновлюється на іншому Mac, а на Mac копія зберігається в iCloud Drive, за замовчуванням увімкнена, з одним перемикачем, щоб її вимкнути.
Монітор системи, розкладений одним файлом
Дванадцять видів панелей, і те, які з них ви бачите, - це скін, а не екран, який хтось намалював один раз.
-
Цифри чесні щодо самих себе
Значення, яке система оцінює, а не вимірює, малюється з тильдою, а відсутнє обладнання дає відсутнє значення, а не нуль. Машина без дискретної відеокарти не отримує панель GPU з нульовим відсотком.
-
Обидві адреси, з кнопкою копіювання на кожній
Панель адрес показує спершу адресу, яку бачить інтернет, а під нею - адресу цієї машини у власній мережі. Вона питає лише поки панель на екрані, приблизно раз на десять хвилин, або раз на тридцять секунд, поки адреса ще невідома, і запит не несе жодної інформації про машину.
-
Порядок змінюється перетягуванням, як і все інше
Панелі монітора, кнопки панелі кнопок і елементи смуги агента підбираються і ставляться на місце одним і тим самим жестом. Рядок налаштувань підхоплюється за ручку зліва від нього, а не будь-де в рядку, тому перетягування, розпочате в текстовому полі, не заважає вам виділити слово, яке ви хотіли змінити.
Файл відкривається поруч з оболонкою
Те, заради чого термінал зазвичай відправляє вас кудись іще: шлях з'являється у виводі, треба змінити два рядки, і досі це означало йти в редактор і повертатися, втративши контекст оболонки.
-
Збереження свідоме
Нічого не записується, поки не натиснуто Cmd+S. Редактор, що пише в міру набору тексту, це добре для нотаток, але погано поруч з оболонкою, що виконується. Це дія, а не натискання клавіші, тому в неї є і пункт меню, і комбінація клавіш, і рядок у командному рядку, як і в усього тут.
-
Відмови важливі не менше за запис
Файл, змінений на диску з моменту відкриття, не перезаписується. Бінарний файл не показується як зіпсований текст. Тека взагалі не відкривається. Незбережені зміни мають видиму позначку, а закриття відредагованого файлу питає підтвердження.
-
Пошук файлу
Панель файлів шукає за назвою нижче теки, на якій ви стоїте, і кожен результат вказує, у яких двох теках він лежить, бо сама назва не розрізнить два index.ts. Пошук пропускає node_modules, .git, target і подібні, зупиняється на восьми рівнях або двохстах результатах і нічого не робить, якщо введено менше двох літер.
Налаштування як екран і як файли
Десять розділів, від «Загальних» до «Даних і конфіденційності», пошук за кожним налаштуванням, і кожне з них - це рядок у файлі, який можна відредагувати вручну.
-
Налаштування приходять до блока
Клік правою кнопкою по панелі означає «оцю штуку тут, зміни її». Тому вибір рядка налаштувань у власному меню блока відкриває потрібний розділ поверх вікна, у кутку меню, а не веде вас на екран налаштувань. Це дія, як і все інше: settings.here:themes, settings.here:monitor.
-
Звук, який чути одразу при виборі
Вибір звуку сигналу або дзвінка термінала одразу його програє. Вибирати звук зі списку назв, яких не чути, це вибирати назву.
-
Нічого не вимагає перезапуску
За текою налаштувань стежать, включно з двома речами, якими володіє ядро: рядком меню macOS, побудованим з вашого файлу комбінацій клавіш, і глобальною клавішею вікна, що випадає, де стара клавіша звільняється до реєстрації нової, щоб дві не відповідали одночасно. Перевірка читає кожну підказку на екрані налаштувань і провалюється на слові перезапуск.
Говорити і слухати відповідь
Обидва використовують власне мовлення системи, на вашій машині. Аудіо ніколи не залишає комп'ютер.
Диктування
Cmd+Shift+V друкує сказане вами в блок, у якому ви працюєте, а смуга показує двома літерами, якою мовою вона слухає. Продиктована фраза друкується, але ніколи не виконується: розпізнавання іноді помиляється, а неправильно почута команда, яка виконується сама, це програма, що видаляє щось, бо працювало радіо. Поруч з агентом, де фраза - це повідомлення, а не команда, вона може відправлятися сама, і це налаштування, яке зчитується в момент, коли фраза закінчується.
Читання відповіді вголос
Cmd+Shift+R зачитує останню відповідь агента вголос; повторне натискання зупиняє. Зачитується відповідь, а не екран. Позначка списку на початку, зірочки навколо виділеного слова, зворотні лапки навколо назви, лінія рамки, повний шлях там, де досить назви файлу, все це прибирається, а слова всередині залишаються. Читання обмежене формами, а не словами: знизу полем вводу агента, зверху його логотипом, бо оздоблення агента змінюється з кожним новим релізом.
Дрібниці, від яких залежить, чи залишитесь ви з програмою
Права кнопка миші наша
Всюди у вікні: власне меню блока всередині блока, зовнішнє меню вікна, смуга вкладок, док, простір між плитками. Кожен рядок - це дія, і саме меню має власну дію, block.menu, тому жест, доступний лише руці, не залишається жестом, який ніщо не може перевірити. Єдине місце, де залишається системне меню, це текстове поле, де воно пропонує вирізати, копіювати, вставити і словник.
Відкрити теку звідки завгодно
vobuda://open?path=/some/path відкриває вкладку в цій теці, з дії Finder, скрипта або іншої програми. У macOS немає системного налаштування термінала за замовчуванням, тому це чесна версія такої функції, а не обіцянка, яку неможливо виконати.
Пошук усередині блока
Cmd+F. Поле пошуку належить блоку, в якому шукає, а закриття залишає вигляд там, де був знайдений збіг.
Забрати блок із собою
Cmd+Shift+X копіює текст блока, запитуючи його в самого терміналу, через що це працює й за ввімкненого відображення на GPU, коли на сторінці немає тексту, який можна виділити. Картинка блока - це дві дії в Cmd+K: «Block snapshot to clipboard» і «Block snapshot to a file».
Перевірка оновлень, яка не набридає
Ядро перевіряє раз на добу, в окремому потоці, і те, що ви бачите, - це смуга над макетом, а не поверх нього, бо сповіщення, що закриває термінал, люди звикають закривати не читаючи. Нічого не встановлюється, доки ви не натиснете: для агента оновлення - це команда, введена в активний блок, де видно її вивід, а для Vobuda на Mac кнопка встановлює нову версію у фоні, потім пропонує перезапуск, який відбувається сам через десять секунд, якщо нічого не запущено.
Сорок мов, і посібник кожною з них
Включно з рядком меню macOS, який система будує в ядрі. Арабська і іврит віддзеркалюють все вікно, крім самого термінала, де віддзеркалення зробило б вивід і шляхи нечитабельними. Ключ перекладу - це англійський рядок, тому неперекладений рядок повертається до читабельної англійської, а не до порожнечі чи ідентифікатора.
Спробуйте те, про що щойно прочитали
Після двох коротких запитань під час першого запуску вона відкривається з одним терміналовим блоком і більше нічим. Усе, про що розказано вище, вмикається тоді, коли вам це потрібно.
curl -fsSL https://vobuda.com/install.sh | sh