ShiftStage

Одиннадцать раз, которые окупают год

Не «можно посмотреть удалённо». Конкретные ситуации, каждая из которых иначе кончается открытым ноутбуком.

AI-сессии

Агент сорок минут ждёт одного слова

Вы отдали ему рефакторинг и ушли. Через десять минут он захотел тронуть файл, в котором не был уверен, и спросил. Никто не ответил — и это не пауза, это отменённый остаток прогона. Здесь вопрос приходит на телефон в ту же секунду, вместе с командой и названным риском, и одно касание возвращает работу в движение.

Правка агента и его просьба прогнать тесты — на телефоне и на часах

Git · diff

Прочитать написанное агентом до того, как это станет вашим коммитом

Тронуто двенадцать файлов. Два — ровно то, что вы просили. Один — переименование, которое он решил сделать заодно. В одном правился тест, пока не прошёл. Вы читаете это так же, как читали бы за столом: настоящий diff, сохранённая подсветка, изменённые куски отмечены внутри строки. Подготовили три верных, отменили правку теста, остальное вернули одной фразой.

Diff на телефоне: удалённые и добавленные строки, нужные для коммита отмечены построчно

Файлы · предпросмотр

Отчёт, который он написал, — прочитать до того, как что-то решать

Вы просили записать разбор в файл. Прочитать его не должно означать «скачать в папку, о которой вы забудете»: он открывается оформленным, исходник — в одно касание, и на телефоне не остаётся ничего, пока вы не скажете. Дальше: сохранить копию, которая откроется потом и при спящем Mac, или отправить прямо из «Поделиться» тому, кто её ждёт.

Файл с Mac, открытый на телефоне с подсветкой синтаксиса

Файлы · передача

Кому-то нужен файл, который есть только на вашем Mac

Пятничная выгрузка, подписанная сборка, документ, который коллеге нужен в ближайшие десять минут. Он лежит в папке, на которую вы могли бы показать с закрытыми глазами, — и до неё два часа.

  • предпросмотрПосмотреть до скачивания: текст, markdown, изображения, PDF — потоком, а не целиком
  • сохранитьКопия на устройстве только по вашей команде, и она говорит, когда сохранена
  • отправитьНаружу через системное «Поделиться»: мессенджер, почта, форма загрузки
  • в обе стороныФото из галереи или снимок, сделанный тут же, попадает в папку проекта

Git · история

«Что сюда приехало на прошлой неделе» — единственный полезный вопрос

Что-то ведёт себя иначе, и никто не помнит, чтобы это трогал. Вам не нужен весь репозиторий на телефоне — нужны последние двадцать коммитов этой ветки, их авторы и diff тех двух, что выглядят виновными. Отбор по автору, по файлу, по сообщению; открыть коммит; прочитать.

История коммитов графом веток — с тегами, авторами, давностью и короткими хешами

CI · уведомления

Сборка упала после того, как вы запушили и закрыли крышку

Через сорок минут телефон говорит, что она упала, — и говорит, на чём, а не просто что упала. Раньше это была задача на завтра или ноутбук, открытый на ресторанном столе.

  • уведомлениеНазывает сборку и шаг, а не «что-то сломалось»
  • журналСложен по шагам с их длительностью; от упавшего шага сразу к его месту в выводе
  • терминалНастоящий PTY на Mac: воспроизвести, пролистать, найти
  • перезапускИсправить опечатку, закоммитить, запустить снова — с того же экрана

Процессы

Что-то держит порт и само не остановится

Dev-сервер, переживший закрытую вкладку. Прогон тестов, который не кончается. Процесс, который с обеда ест ядро и греет машину, за которой никто не сидит.

Процессы Mac по нагрузке: сборка, dev-сервер на порту 3000, база данных

CI/CD

Нужно запустить конвейер, а Mac рядом нет

Это единственная часть ShiftStage, которой Mac не нужен вовсе: телефон говорит с поставщиком напрямую. Релиз, который надо нарезать из поезда, ночная сборка, которую надо перезапустить, этап выкладки, ждущий чьего-то одобрения.

Сборка ждёт одобрения выкладки в production — «Одобрить» и «Отклонить» на телефоне
  • поставщикиGitHub Actions · GitLab CI/CD · Jenkins · TeamCity
  • свои установкиНе только облака; несколько учётных записей сразу, каждая со знаком своей системы
  • параметрыИмена, типы и значения по умолчанию, объявленные конвейером; обязательный не даст запустить пустым
  • одобренияЗапуск, ждущий человека, разблокируется с телефона — там, где поставщик это умеет

CI · журналы

Журнал сборки, который правда читается с телефона

Журналы сборки — худшее, что можно читать на маленьком экране, и любой другой инструмент выдаёт для этого веб-страницу, которую надо растягивать пальцами.

▾ Сборка и тесты                    2 м 14 с
    ✓ Собрано 128 целей
    ✓ Пройдено 1 412 тестов
▾ Упаковка                          41 с
    ✗ notarytool: неверные учётные данные
      → перейти к этой строке журнала
▸ Выгрузка артефактов               пропущено
  • цветЧто сборка напечатала цветом, цветом и остаётся
  • прогрессПерерисовывающиеся полоски показывают последнее состояние, а не тысячу устаревших строк
  • разделыГруппы сворачиваются, у каждой своё время
  • артефактыЧто произвёл запуск, с размерами, сохраняется на устройство

Соединение

Вы вышли из дома, и связь пошла с вами

Дома телефон и Mac говорят напрямую по локальной сети, и нашего сервера в этом пути нет вовсе. Вышли — они по-прежнему соединяются напрямую всякий раз, когда сети позволяют; когда не позволяют, ретранслятор передаёт поток, которого не может прочесть. Видно, каким путём вы идёте, и третий можно запретить.

Журнал доступа

Что делали с вашим Mac и каким устройством

Удалённый доступ без записи — доверие на слово. Агент ведёт журнал на самом Mac: каждая операция, которую запросило подключённое устройство, когда, какое устройство и чем кончилась — с предметом, названным самим запросом.

  • записаноКаждая операция: когда, каким устройством, чем кончилась
  • предметПуть, ветка, процесс, строка поиска, объём переданного
  • никогдаНи содержимого файлов, ни вывода, ни ввода, ни разговора с AI
  • вашЖурнал не покидает Mac, и его можно выключить

Дальше это ваш Mac

Всё перечисленное — то, что придумали мы. Список на этом не кончается, потому что терминал настоящий: PTY на вашей машине, а не наша песочница.

Ваши скрипты, ваши алиасы, ваши сборочные инструменты, ваши автоматизации, dotfiles, которые вы возите между машинами десять лет. Если это работает на вашем Mac — это работает с вашего телефона, и по дороге ничего из этого не проходит через нас.

Всё это одним списком

Терминал
Настоящий PTY, несколько сессий, прокрутка назад с поиском, выделение и вставка, цвет и оформление целы. Набранное появляется, не дожидаясь эха. Скрытый ввод для sudo, отпираемый Face ID.
Файлы
Обзор, предпросмотр, чтение, правка, передача в обе стороны, работа с системным Files. Фото и видео с телефона в папку проекта; сохранённые копии открываются при спящем Mac.
Поиск
По именам и по содержимому, по всем пространствам сразу, потоком по мере нахождения — с путём, строкой и контекстом. Регулярные выражения, регистр, фильтр по расширениям. Новый запрос отменяет прежний на Mac.
Git
Состояние, diff, подготовка, коммит, push, ветки, история и её граф, stash, rebase, перенос коммита, разрешение конфликта тремя сторонами, подмодули, LFS — структурой, а не выскобленным текстом.
Процессы
Что работает, во что обходится, какие порты держит, что печатает и как это остановить.
AI-сессии
Одиннадцать агентных CLI находятся сами, и любая другая, которая у вас есть: запустить, следить, ответить, подтвердить, убрать в архив, продолжить. Ваши ключи, ваш конфиг, никакой модели на нашей стороне.
CI/CD
GitHub Actions, GitLab CI/CD, Jenkins, TeamCity, включая собственные установки. Несколько учётных записей сразу, объявленные параметры, отмена, повтор, повтор только упавших, одобрения, артефакты, шаги, читаемые журналы. Mac не нужен.
Уведомления
Сборки, сессии с вопросом, умершие управляемые процессы — названные по предмету и присланные, только когда вы туда не смотрите.
Apple Watch
Ответить на вопрос инструмента, увидеть, что работает, отпустить Mac. Свой ключ, прямое соединение, открытое на действие и закрытое после.
Журнал доступа
На Mac и принадлежит Mac: каждая операция со своим предметом и никогда — содержимое. С отбором, выгрузкой и выключателем.

Он не зеркалит ваш рабочий стол, не переносит вашу работу на сервер и не ставит модель между вами и вашим кодом. Mac остаётся машиной, которая работает.

Вопросы, которые задают следом · Как это получить

Одиннадцать ситуаций.
Семь долларов в месяц.

Бесплатно для одного Mac в своей сети.