MuMuManager CLI Menu v1.22.45
MuMuManager CLI Menu v1.22.45
Интерактивное PowerShell-меню для управления MuMu Emulator через MuMuManager.exe.
Что нового
v1.22.45 (26.09.2026)
- CI: deployed-layout Pester leg — the suite runs inside a fixture holding only the deployed file set (mumu-menu.ps1, bootstrap-update.ps1, README.md, SKILL.md, .version); repo-only files excluded (relnotes.md, RELEASE-RUNBOOK.md, update-readme.ps1, tests/). Tests tagged RepoFiles are excluded (172 of 173); both engines — PowerShell 5.1 and pwsh 7 — against the SAME copy (tests/test-deployed-layout.ps1). CI job pester-unit (deployed layout / both engines); composite action gets a layout input (repo|deployed); run-matrix.ps1 replays the leg locally.
- CI: release gate audits every Tests leg by exact name — dropping or renaming a leg from the matrix now blocks a release ("missing" instead of silently shrinking coverage). Last-row-wins re-run semantics kept (green→red blocks).
- PSSA: присваивание сплат-переменной
$argsвtests/test-deployed-layout.ps1переименовано в$exeArgs(PSAvoidAssignmentToAutomaticVariable, code-scanning #590/#591) — поведение идентично - SKILL.md: задокументирована deployed-layout нога — дерево
tests/(test-deployed-layout.ps1, тегRepoFilesв сьюте), состав матрицыtests.ymlи локальный прогон черезtests/run-matrix.ps1/tests/test-deployed-layout.ps1
v1.22.44 (25.09.2026)
- «Token rejected — retrying without auth...» на каждый запрос: отклонённый GitHub'ом сохранённый токен оставался активным до конца сессии — каждый запрос заново проходил цикл «с токеном → 401 → повтор без авторизации». Теперь токен отключается один раз на уровне script-scope с подсказкой «re-save via menu [K]», дальше всё анонимно (репозиторий публичный); централизованный guard добавлен и в
Invoke-GitHubApiGet(releases/branches/tags/compare раньше не различали Bad credentials вовсе), и в bootstrap — где прежний сброс был переменной-тенью и не работал
v1.22.43 (25.09.2026)
- Release-гейт стал самодостаточным: перед публикацией релиза workflow сам запускает Tests-матрицу на SHA тега — переиспользует уже идущий run, иначе диспетчеризует
tests.ymlпо--ref <тег>и ждёт до 25 минут; после зелёного рана — аудит ног (bootstrap-detector+ всеpester-unit), fail-closed на red/missing/timeout - Еженедельная ZIP-проверка в release-guard: ZIP последнего релиза скачивается,
.sha256-sidecar проверяется, SHA256 каждого из 5 файлов сверяется сgit show <tag>:<file>— ловит подмену/обрезку/недозагрузку ассета даже после публикации; violations — в тот же marker-scoped issue - Фикс гейта — якорный regex отсекал ноги матрицы (найдено репетицией на живом теге): фильтр
^(bootstrap-detector|pester-unit)$не совпадал с именами видаpester-unit (5.7.1 / powershell)— гейт блокировал бы каждый релиз; заменено на префиксное совпадение - Фикс дедупликации чек-ранов: прежний
sort -uоставлял алфавитно-первую строку (failure) — тег после зелёного re-run блокировался бы ложно; теперь берётся последняя строка на имя
v1.22.42 (25.09.2026)
- CI-матрица Pester:
pester-unitвtests.ymlтеперь гоняет сьют на ОБОИХ движках — Windows PowerShell 5.1 и pwsh 7 — на закреплённом Pester 5.7.1 через композитный экшен.github/actions/pester-unit, плюс «канареечная» нога на предустановленном в раннере Pester (сегодня 6.x), которая ловит дрейф движка/Pester заранее, а не по репорту пользователя - Фикс из матрицы —
Get-ReleaseInfo.PublishedAt: PS 5.1ConvertFrom-Jsonоставляет ISO-даты строками, pwsh 7 конвертирует в[datetime]— свойство было движко-зависимым; явный каст[datetime]закрепил контракт для обоих движков (на 5.1 это был бы сырой string). Матрица поймала это на первом же прогоне: 1 тест из 170 красный на 5.1, зелёный на 7 - Раннер
tests/run-pester.ps1: новые параметры-PesterVersion/-ModuleDir(приватная копия Pester поверх PSModulePath) — CI и локальный прогон используют один и тот же скрипт; установка Pester движко-осведомлённая (PSResourceGet на Core, PowerShellGet + NuGet-провайдер на 5.1)
v1.22.41 (25.09.2026)
Get-ReleaseInfo— мёртвые заголовки:$headers(Accept/User-Agent/Authorization) собирались и игнорировались — транспортInvoke-GitHubGetпринимает только URL и таймаутUpdate-FromGitHub— сбои снова различимы: причина приходит изGet-ReleaseInfoчерез-Failure, и[U]/[UP]рендерят прежние сообщения (подсказки по rate limit, текст ошибки API, «No releases found on remote») вместо одной общей строки- Тесты: контракт
-Failureи запуск рендера по каждому виду сбоя; фикстура диагностики больше не показывает модальный диалог загрузчика Windows
v1.22.40 (24.09.2026)
- Меню [U]/[UP] — функция
Get-ReleaseInfo: структурированные данные последнего GitHub-релиза (тег,$scriptVerблоба, дата, автор, ассеты с URL) в одном переиспользуемом вызове; причина сбоя отдаётся вызывающему через-Failure(no-release/rate-limit/api/transport), поэтому[U]/[UP]рендерят прежние сообщения — подсказки по rate limit, текст ошибки API и сетевой сбой Update-FromGitHub— рефакторинг: инлайн-fetchreleases/latestзаменён наGet-ReleaseInfo, поведение обработки ошибок сохранено 1-в-1- CI/Dependabot: лейбл
dependenciesсоздан и указан корректно;upload-sarif→ v4.38.1 (per-language CodeQL bundles)
v1.22.39 (22.09.2026)
- Меню [G] View logs: свёртка стек-логгера — голые фреймы
Name:Method(Type)и пустые продолжения того же тега скрываются, каждая ошибка печатается одной строкой, итог[stack] collapsed N stack line(s)(проверено на реальном логе: 24 строки → 6 сообщений) - Документация: дата релиза v1.22.37 в README и relnotes приведена к фактическому
published_at(22.09.2026 — релиз пересёк полночь UTC)
v1.22.38 (22.09.2026)
- Меню [5] Create instance: исправлены вызовы
Write-Debug(PSSA: позиционные параметры → одна интерполированная строка)
v1.22.37 (22.09.2026)
- Меню [5] Create instance: панельный редизайн — рамка с версией Android, дифф-детекция нового инстанса (честный итог вместо слепого «Done!»), маркер
<-- newв списке
v1.22.36 (21.09.2026)
- Меню [G] View logs: поиск [6] — подстрока без учёта регистра, подсветка совпадений, несовпадающие строки приглушены, сводка с счётчиком
v1.22.35 (21.09.2026)
- Меню [G] View logs: snapshot-дефолт фильтра — errors-only (E) на пустой Enter; live сохраняет полный поток, дефолт показывается в промпте
v1.22.34 (21.09.2026)
- Меню [G] View logs: фильтр тишины [5] — скрывает известный шум (Play Store, vsync, GC, binder) в snapshot/live с счётчиком скрытых строк
v1.22.33 (21.09.2026)
- Меню [3] Shutdown и [4] Restart: панельный редизайн — guard «ALREADY STOPPED», верифицированный итог выключения, статус-линия по факту состояния, честный итог загрузки
v1.22.32 (21.09.2026)
Сравнение
| Предыдущая версия | v1.22.44 |
| Текущая версия | v1.22.45 |
| Коммитов | 7 |
Коммиты
cfe9678 Merge PR #48: release v1.22.45 - deployed-layout CI leg + exact-name release gate
9a5bb29 chore(release): bump to v1.22.45 - deployed-layout CI leg + exact-name release gate
5695977 Merge PR #47: fix PSSA $args automatic-variable alerts (#590/#591)
08b3475 fix(test): rename $args splat to $exeArgs (PSSA PSAvoidAssignmentToAutomaticVariable)
42c513d Merge PR #46: deployed-layout Tests leg + exact-name release gate
169bea1 ci(release): gate audits Tests legs by exact name - a dropped leg blocks the release
d73ea76 ci(tests): run the Pester suite in a deployed-layout fixture (repo-vs-install drift guard)
Установка
Быстрый запуск (одна команда):
irm https://raw.githubusercontent.com/genrihx2/MuMuManager-CLI-Menu/main/mumu-menu.ps1 -OutFile $env:TEMP\mumu-menu.ps1; & $env:TEMP\mumu-menu.ps1Git clone (с автообновлением через [U]):
git clone https://github.com/genrihx2/MuMuManager-CLI-Menu.git
cd MuMuManager-CLI-Menu
.\mumu-menu.ps1Верификация
curl -sL https://github.com/genrihx2/MuMuManager-CLI-Menu/releases/download/v1.22.45/MuMuManager-CLI-Menu-v1.22.45.zip.sha256 -o MuMuManager-CLI-Menu-v1.22.45.zip.sha256
Get-FileHash MuMuManager-CLI-Menu-v1.22.45.zip -Algorithm SHA256 | Select -Expand Hash
# Сравнить с содержимым MuMuManager-CLI-Menu-v1.22.45.zip.sha256Метрики
| Размер ZIP | 159 KB |
| Файлов | 5 |
| SHA256 | 5e2ccdcc379456f5... |
Требования: Windows 10/11 · PowerShell 5.1+ · MuMu Emulator 6.x
VirusTotal verdicts
| File | SHA-256 | Malicious | Suspicious | Harmless | Report |
|---|---|---|---|---|---|
MuMuManager-CLI-Menu-v1.22.45.zip |
5e2ccdcc379456f570ba99378ee34d5b9193282f11ed3fdb4847827feed1ef7f |
0 | 0 | 0 | report |
mumu-menu.ps1 (from ZIP) |
e05e4f31e69d19cc3123eb110f9307c89ebcf8e96812d8e8b7e3892ced288514 |
0 | 0 | 0 | report |
SKILL.md (from ZIP) |
d317403a8393af7aa170b39d8f6e4a1423c236f3b1dd798cbe87ffa22bb48e5e |
0 | 0 | 0 | report |
Status: CLEAN - 0 malicious / 0 suspicious (CI scan 2026-09-26, scan run)
Verify the download yourself
sha256sum -c MuMuManager-CLI-Menu-v1.22.45.zip.sha256