ATHANOR
EN GitHub ↗

5 / 8

TUI

CLI из прошлой главы хорош для скриптов и для агента. А если вам самим нужно быстро глянуть, что вообще есть в проекте, добавить пару секретов подряд и тут же их проверить — для этого есть athanor tui.

Экран

Athanor  — secrets for this project

> DB_PASSWORD      [hidden]
  STRIPE_TEST_KEY   [exposable]   sk-test-...

↑/↓ move · enter reveal · y copy · a add · d delete · r run · q quit

Каждая строка — имя секрета, тег [hidden]/[exposable] (та же Exposable() из главы 3, просто отрисованная), и — если значение раскрыто — оно само рядом.

Клавиши

  • / (или k/j) — перемещение по списку.
  • enter/space — раскрыть значение выбранного секрета. Раскрыт всегда только один секрет за раз — при переходе на другую строку прежнее значение исчезает из памяти TUI.
  • y — скопировать значение выбранного секрета в буфер обмена, не выводя его на экран вовсе.
  • d — запросить удаление выбранного секрета из зашифрованного файла и манифеста; подтвердить клавишей y, отменить через n или esc.
  • r — переключиться в режим ввода команды: набрать её, enter запускает через тот же Store.Run, что и athanor run, вывод показывается прямо в TUI; esc отменяет и возвращает к списку.
  • q/ctrl+c — выйти.

Почему a временно закрывает TUI

Клавиша a (добавить секрет) устроена иначе, чем остальные. Она завершает текущий bubbletea-цикл, показывает отдельную форму на чистом терминале (имя → значение скрытым вводом → флаг expose → подтверждение) и после сохранения заново открывает список.

Это не побочный эффект, а сознательное решение: библиотека форм (huh), которой Athanor пользуется для ввода, лучше всего работает как самостоятельная программа на "чистом" терминале, а не встроенной в другой активный экран bubbletea. Городить сложную интеграцию двух UI-циклов в одном процессе смысла нет — проще и надёжнее выйти из одного, показать другой и вернуться. Пользователь почти не замечает разницы (короткое мигание экрана), а код остаётся простым.

Контрольный вопрос. Что происходит с раскрытыми через enter значениями, когда вы переключаетесь на другую строку списка?

Ответ: предыдущее раскрытое значение скрывается — TUI держит в памяти не больше одного раскрытого значения за раз, а не накапливает их по мере навигации.