Unlaw 3.15.0: Reminders и Canvas в ul desk, Ping Pong и новый ul git
Что нового в Unlaw 3.15.0. Apple Reminders и холст в стиле Excalidraw в ul desk, Ping Pong против бота или вдвоём и ul git, который сам создаёт репозиторий и пушит.
Written in Russian
Вышел Unlaw 3.15.0. Обновиться можно командой ul update. В релиз вошло и то, что готовилось как 3.14.0: отдельно эта версия не выходила.
ul git: от пустой папки до репозитория на GitHub одной командой
Раньше ul git умел только add, commit и push. Теперь это полноценный помощник для работы с хранилищами кода.
ul git push "сообщение": add, commit и push сразу. Если сообщение не написать, команда спросит его. Новая ветка публикуется сама.ul git init: создаёт репозиторий на ветке main, по файлам проекта понимает язык (Python, Rust, C++, Node) и дописывает.gitignore. Мои строки в.gitignoreне трогает, а.env, ключи и.DS_Storeигнорирует всегда.ul git init --connect github: сразу создаёт приватный репозиторий на GitHub и пушит первый коммит. Так же работаютgitlab,codebergи свой сервер Gitea.ul git connectпринимает любой адрес: URL, короткую записьgh:я/проектили просто папку на диске. Перед пушем проверяет SSH-ключ и, если его нет, предлагает создать и открывает страницу, куда его вставить.ul git mirror add: запасное хранилище. После этого каждый push уходит и туда.ul git undoотменяет последний коммит и оставляет изменения на месте.ul git undo --listпоказывает коммиты ветки и отмечает незапушенные, аul git undo "часть сообщения"возвращает к нужному коммиту. Запушенные коммиты команда не трогает и подсказываетgit revert.ul git prпушит ветку и открывает pull request,ul git openоткрывает страницу репозитория.
Ещё есть защита от секретов. Если в коммит попадает .env, приватный ключ, сертификат или файл больше 50 МБ, команда убирает его из коммита, объясняет почему и останавливается.
Перед релизом я отдал этот код на отдельную проверку безопасности и закрыл всё, что она нашла. Главное: токен GitLab или Codeberg теперь хранится в Keychain отдельно для каждого сервера и уходит только туда, для которого его сохранили. При сохранении токен вводится в окно самого Keychain и не появляется в списке процессов.
ul git status и ul git pull я убрал: для этого есть обычный git.
ul desk: Apple Reminders
В ul desk появился отдельный слой с Apple Reminders. Каждый список становится колонкой, каждое напоминание карточкой, и правки идут в обе стороны: добавил, изменил, перетащил в другой список, отметил выполненным, и это сразу видно в Reminders и на других устройствах через iCloud. Мои доски в Markdown этот слой не трогает.
Работает через EventKit, поэтому даже большие списки открываются быстро. При первом запуске macOS спросит разрешение для терминала.
Новые доски теперь по умолчанию лежат в одной папке: ul desk new работа создаёт работа.md там, а не в текущей директории.
ul desk: Canvas
Новая вкладка Canvas: холст, похожий на Excalidraw. Можно рисовать от руки, ставить прямоугольники, эллипсы, ромбы, стрелки, текст, карточки и группы, соединять карточки линиями и экспортировать картинку в PNG.
Файлы сохраняются в открытом формате JSON Canvas, поэтому тот же холст открывается в Obsidian Canvas. Рисунки хранятся в том же файле так, что Obsidian их просто пропускает и ничего не ломает.
Ping Pong
В аркаде ul game седьмая игра: настольный теннис в духе старых автоматов, до 11 очков.
- Играть можно против бота или вдвоём на одной клавиатуре: левый игрок на W/S, правый на стрелках.
- Угол отскока зависит от того, куда мяч попал в ракетку, а каждый удар ускоряет его.
- Бот реагирует с задержкой и иногда промахивается, но двигается не быстрее человека. Сложность проверяет тест: против одного и того же игрока бот на easy берёт меньше четверти очков, а на hard больше половины.
- Чтобы двое могли держать клавиши одновременно, нужен терминал с протоколом клавиатуры kitty: Ghostty, kitty, WezTerm. В
ul deskэто работает в любом браузере.
Запустить: ul game pingpong.
Исправления
ul zip -pс 7-Zip из Homebrew больше не спрашивает пароль второй раз прямо в терминале.