Ця сторінка ще не перекладена українською. Показано англійську версію. Переглянути англійською
🎬

yr

Термінальні записи, що просто працюють на Windows

Інструмент для запису термінальних сесій та створення GIF і WebP демонстрацій зі скриптованих сценаріїв. Орієнтований на Windows, на основі PTY, з маскуванням секретів та синхронізацією виводу.

Що таке yr?

yr (Yemelianov Recorder) — це CLI-інструмент для створення термінальних записів зі скриптованих сценаріїв. Напишіть .yr скрипт з описом того, що потрібно набрати, і yr перетворить його на GIF або WebP — без програм для запису екрана.

yr showcase

Побудований на Rust з ConPTY на Windows (та portable-pty на інших платформах), yr забезпечує піксельно точний термінальний вивід з повною підтримкою ANSI-кольорів.

Навіщо yr?

Проблема: Існуючі інструменти, такі як VHS та asciinema, орієнтовані на Linux. ConPTY на Windows має особливості, що призводять до спотвореного виводу, пропущених кадрів та зламаних записів. Створення термінальних демонстрацій для документації не повинно вимагати Linux VM.

Рішення: yr побудований з пріоритетом на Windows, з обробкою ConPTY закладеною в архітектуру. Він також вводить директиви, яких немає в існуючих інструментах: миттєва вставка, маскування секретів, синхронізація на основі виводу та маркери розділів.

Порівняння

МожливістьyrVHSasciinema
Windows ConPTYНативнийЧастковийНі
Маскування секретівВбудованеНіНі
Синхронізація виводу (WaitFor)ВбудованаНіНі
Миттєва вставкаВбудованаНіНі
Маркери розділівВбудованіНіНі
GIF вивідТакТакЧерез agg
WebP вивідТакНіНі

Ключові можливості

  • Рядковий DSL — Прості .yr скрипти: Type, Enter, Sleep, Exec
  • Paste — Миттєве введення тексту для довгих команд
  • Mask / Unmask — Приховування секретів у всіх захоплених кадрах
  • WaitFor — Синхронізація за виводом терміналу замість ненадійних пауз
  • Marker — Анотування розділів для навігації та розбиття
  • Теми — Dracula, Nord, Monokai, GitHub Dark та інші
  • Вбудований шрифт — JetBrains Mono включений, без залежностей від системних шрифтів

Швидкий старт

# Record and render a scenario
yr render demo.yr --output demo.gif

# Preview in terminal (no rendering)
yr preview demo.yr

# Validate script syntax
yr validate demo.yr

Приклад скрипта

Set Shell "powershell -NoProfile"
Set Width 80
Set Height 24
Set Theme "dracula"
Set FontSize 14

Type "echo 'Hello from yr!'"
Enter
Sleep 2s

Type "Get-Process | Select-Object -First 5 Name,CPU"
Enter
Sleep 3s

Директиви

Paste — миттєве введення тексту

На відміну від Type (один символ за раз), Paste записує все одразу — ідеально для довгих команд, що не є фокусом вашої демонстрації.

# Slow, deliberate typing
Type "echo hello"
Enter

# Instant paste for boilerplate
Paste "Get-Process | Sort-Object CPU -Descending | Select-Object -First 5"
Enter

Paste demo

Mask / Unmask — приховування секретів

Маски замінюють секретні значення зірочками у всіх захоплених кадрах. Секрет ніколи не з’являється у жодному вихідному файлі.

Env API_KEY "sk-proj-abc123def456"
Mask "sk-proj-abc123def456"

Type "echo $env:API_KEY"
Enter
# Output shows: **********************

Mask demo

WaitFor — синхронізація виводу

Замініть ненадійні паузи Sleep на очікування, засноване на виводі. Опитує термінал кожні 50 мс, доки не з’явиться шаблон.

Exec "cargo build"
WaitFor "Finished" 60s

Type "cargo test"
Enter
WaitFor "test result: ok"

WaitFor demo

Marker — анотації розділів

Примусово захоплює кадр із назвою. Дозволяє навігацію по розділах, індикатори прогресу та розбиття запису.

Marker "Setup"
Type "git clone https://github.com/org/repo.git"
Enter
WaitFor "done."

Marker "Build"
Type "cargo build --release"
Enter
WaitFor "Finished"

Marker demo

Формати виводу

ФорматРозширенняВикористання
GIF.gifДокументація, GitHub README, універсальна підтримка
WebP.webpМенший розмір файлів, краща якість, сучасні браузери
yrdata.yrdataБінарний архів з LZ4 стисненням для повторного рендерингу

Інтеграція з RAPS

yr використовується для створення всіх термінальних записів на цьому вебсайті. Демонстраційна вітрина та GIF-файли документації рендеряться з .yr скриптів, що зберігаються у репозиторії raps-demo.

# Record a RAPS demo
yr render raps-auth.yr --output auth-demo.gif

# Re-render with different theme
yr render raps-auth.yr --output auth-demo.gif --theme nord

Довідка по директивах

ДирективаСинтаксисОпис
SetSet Key "value"Налаштування оболонки, розмірів, теми, шрифту
TypeType "text"Набір символ за символом
PastePaste "text"Миттєве введення тексту
EnterEnterНатиснути Enter
SleepSleep 2sПауза на вказану тривалість
ExecExec "command"Виконати без анімації набору
MaskMask "secret"Приховати значення у всіх кадрах
UnmaskUnmaskЗняти маски
WaitForWaitFor "pattern" 30sОчікувати вивід терміналу
MarkerMarker "name"Анотувати розділ
EnvEnv KEY "value"Встановити змінну середовища

Пов'язані продукти