Skip to content

GetBox 1.3.2: надёжное самообновление, журнал и отчёт, Electron 44, CI на Windows - #8

Merged
IncludeSpecial merged 4 commits into
mainfrom
claude/project-review-improvements-jalgyq
Oct 13, 2026
Merged

IncludeSpecial merged 4 commits into
mainfrom
claude/project-review-improvements-jalgyq

Conversation

@IncludeSpecial

Copy link
Copy Markdown
Owner

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

Самообновление

Проверил на живом релизе: «клиент 1.3.0» находит 1.3.1, скачивает его и сверяет SHA256 — и в Node, и внутри Electron 44. По ходу проверки нашлись две проблемы, которые бы ударили по реальным пользователям:

  • Системный прокси Windows не учитывался. fetch из Node идёт мимо прокси. Теперь запросы идут через net.fetch из Electron, то есть через сетевой стек Chromium, как в браузере.
  • Лимит GitHub API: 60 анонимных запросов в час на IP. За общим NAT (офис, мобильный оператор) лимит быстро кончается. Теперь при отказе API стабильный канал находит версию по переадресации releases/latest.
  • net.fetch не сообщает конечный URL после переадресаций, поэтому проверка разрешённых хостов молча выключилась бы. Теперь хост проверяется через net.request с ручной переадресацией до того, как читается файл.
  • Каждый шаг пишется в журнал.

Диагностика

  • electron/log.ts: журнал %LOCALAPPDATA%\GetBox\logs\getbox.log с ротацией по 1 МБ. Туда попадают console.warn/error main-процесса, неперехваченные ошибки и сбои окна и вспомогательных процессов.
  • Настройки → GetBox:
    • «Скопировать отчёт» — версии, система, менеджеры пакетов, ключевые настройки, ошибки очереди и хвост журнала; домашняя папка в отчёте заменяется на ~;
    • «Папка журналов».

Безопасность и стабильность

  • Electron 33 → 44, electron-builder 25 → 26. Ветка 33 давно не получает исправлений безопасности. Типы сходятся, приложение собирается и запускается, сборка Windows-версии проходит.
  • electron/providers/shell-args.ts.
    • Зачем: команды winget, Scoop и Chocolatey идут через cmd.exe (у scoop и choco это обёртки .cmd), а Node в режиме shell просто склеивает аргументы. Поиск «vlc & calc» запустил бы calc.
    • Теперь аргументы с метасимволами cmd отклоняются, а поисковый запрос очищается.
    • Многословные запросы передаются целиком.
    • Попутно ушло предупреждение DEP0190 нового Node.
  • Один экземпляр приложения. Второй запуск разворачивает уже открытое окно.

CI на Windows

  • Флаг --smoke (electron/smoke.ts): открыть окно, дождаться отрисовки, проверить каталог и консоль, выйти с кодом 0 или 1.
  • Новое задание windows в ci.yml:
    • scripts/test-windows.cjs:
      • скрипт замены exe на настоящем cmd.exe (путь с пробелами, ожидание выхода процесса, exe только для чтения);
      • передача аргументов через cmd;
      • разбор реального вывода choco outdated и winget upgrade;
    • сборка portable;
    • запуск собранного GetBox.exe --smoke.
  • Для теста swapScript() вынесен из SelfUpdater.apply().

Релиз

Версия 1.3.2, раздел в CHANGELOG.md, карточки «Что нового», заметки в docs/DEVELOPMENT.md.

Ещё в ветке

Два коммита с промо-роликами (promo/): стили «кинетика», «синтвейв», «лоу-фай» и их вертикальные версии для Shorts. Это только исходники страниц и музыки, приложение они не затрагивают.

Проверка

  • npm run lint, обе tsc --noEmit, npm test: smoke 71, download 9, resilience 2, app-full 10, проверка winget-map.
  • npm run build; electron . --smoke под Xvfb на Electron 44 → {"ok":true,"version":"1.3.2","apps":118,"errors":[]}.
  • electron-builder --win dir: собирается, новые модули в app.asar.
  • Полный цикл самообновления против релиза v1.3.1 внутри Electron 44, плюс запасной путь через releases/latest.
  • Не проверено здесь: настоящая Windows. Это первый прогон задания windows в CI.

🤖 Generated with Claude Code

https://claude.ai/code/session_019LtWxNVyWyutDLyX8cWQFC


Generated by Claude Code

Each page has its own animation and a synthesized soundtrack timed to its
cut list; synth.py holds the shared numpy oscillators, drums and effects.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019LtWxNVyWyutDLyX8cWQFC
Same timelines and soundtracks, re-laid out for 1080x1920 with key content
kept clear of the Shorts title, caption and button overlays.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019LtWxNVyWyutDLyX8cWQFC
…lf-update fallback

- Electron 33 -> 44 and electron-builder 26; Electron 33 no longer gets security fixes.
- Package-manager commands are built by shell-args.ts: arguments with cmd.exe
  metacharacters are refused and typed search queries are cleaned, so a query
  like "vlc & calc" can no longer start a second command.
- Log file in %LOCALAPPDATA%\GetBox\logs with crash hooks; Settings -> GetBox
  can copy a diagnostics report and open the logs folder.
- A second launch focuses the running window instead of starting another app.
- Self-update uses Electron's net.fetch (honours the Windows proxy), falls back
  to the releases/latest redirect when the GitHub API is rate-limited, checks
  the download host via net.request and logs every step.
- --smoke mode for CI: render, check catalog and console, exit with a code.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019LtWxNVyWyutDLyX8cWQFC
- CI job on windows-latest: Windows-only tests, portable build and a --smoke
  start of the packaged app.
- scripts/test-windows.cjs runs the self-update swap script on real cmd.exe
  (paths with spaces, waiting for the process, read-only exe), passes
  arguments through cmd.exe and parses real choco/winget output.
- swapScript() extracted from SelfUpdater.apply so it can be tested.
- Version 1.3.2, changelog, What's new cards, developer notes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019LtWxNVyWyutDLyX8cWQFC
@vercel

vercel Bot commented Oct 13, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
get-box Ready Ready Preview Oct 13, 2026 9:51am UTC

@IncludeSpecial
IncludeSpecial merged commit 7c31110 into main Oct 13, 2026
4 checks passed

This branch was successfully deployed

1 active deployment
Preview — c60e95d6 Deployed Oct 13, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants