Security and robustness (backend): - Strict CSP (was null); confine read_file/launch_file/ue_log to the client root - p4 trust without -f: surface fingerprint CHANGES instead of auto-accepting (MITM) - stdin=null by default + non-interactive P4EDITOR so terminal commands never hang - 64 MB read caps on read_depot/read_file/print_depot (no OOM on huge .uasset/.pak) - Recover from mutex poisoning instead of crashing every later p4 call - Decode p4 output as UTF-8 then cp1251 (Cyrillic paths no longer corrupt) - p4_changes never deletes changelists that hold shelved files - Validate changelist number in p4_undo_change Bug fixes (frontend): - Focus-refresh preserves the checkbox selection (never re-checks deselected files) - Staleness guards on refresh/describe/AI-summary/user-groups (no cross-selection races) - Real F5/Ctrl+R/G/S/B handlers; match e.code so Ctrl+backquote works on RU layout - Confirm dialog no longer fires on a stray global Enter - Panel/dock/history drags end on window blur (no stuck resize) - Commit draft clears on Submit only if unchanged since committing - Summary/IDE buttons gated to real source files (not .pak/.dll/binaries) New features: - Exclusive lock/unlock plus held-by/locked-by indicators (p4 opened -a) - Shelve/unshelve/delete-shelf on pending changelists - Resolve UI (auto-merge / accept yours / accept theirs, per file or all) + banner - Diff a history revision against the previous one; blame/annotate view - Depot file search (Tools -> Search depot) - Move opened files between pending changelists - New-submit toasts from teammates + offline banner with auto-reconnect Also: bake OpenRouter key at build time (git-ignored), drop AI settings UI, IDE picker (detect installed editors), AI replies in the UI language, persistent code summaries, metadata/CSP polish. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3.4 KiB
Выпуск обновления (auto-updater)
Приложение при запуске тихо проверяет endpoint на Gitea Releases и, если есть новая подписанная версия, показывает ненавязчивый баннер в правом нижнем углу.
Endpoint (задан в src-tauri/tauri.conf.json):
https://gitea.exbytestudios.com/ExbytePublicServices/exbyte-depot-viewer-perforce/releases/download/updater/latest.json
Ключи подписи
- Приватный ключ:
C:\Users\Bonchellon\.tauri\exbyte-depot-updater.key— СЕКРЕТ, не коммитить, не терять! - Публичный ключ уже вшит в
tauri.conf.json(plugins.updater.pubkey).
Без приватного ключа собрать валидное обновление невозможно — сделай бэкап ключа в надёжном месте (менеджер паролей / приватный репозиторий секретов).
Ключ OpenRouter (AI-функции)
AI-ключ вшивается в бинарник при компиляции из файла src-tauri/openrouter.key
(git-ignored, *.key в .gitignore). Без этого файла сборка упадёт с ошибкой
include_str! — перед сборкой убедись, что файл на месте. Чтобы сменить ключ,
замени содержимое файла и пересобери.
Как выпустить новую версию
-
Подними версию в трёх местах (должны совпадать):
package.json→"version"src-tauri/tauri.conf.json→"version"src-tauri/Cargo.toml→version
-
Собери подписанный инсталлятор:
$env:TAURI_SIGNING_PRIVATE_KEY = Get-Content "$HOME\.tauri\exbyte-depot-updater.key" -Raw $env:TAURI_SIGNING_PRIVATE_KEY_PASSWORD = "" npm run tauri buildАртефакты появятся в
src-tauri/target/release/bundle/nsis/:exbyte-depot_<version>_x64-setup.exe— инсталляторexbyte-depot_<version>_x64-setup.exe.sig— подпись (нужна для latest.json)
-
Создай/обнови на Gitea релиз с тегом
updaterи приложи к нему:exbyte-depot_<version>_x64-setup.exelatest.json(см. ниже)
-
latest.json— вставь версию, дату, содержимое.sigв полеsignature, и прямую ссылку на.exeвurl:{ "version": "0.2.0", "notes": "Что нового в этой версии", "pub_date": "2026-07-07T12:00:00Z", "platforms": { "windows-x86_64": { "signature": "<содержимое файла .exe.sig>", "url": "https://gitea.exbytestudios.com/ExbytePublicServices/exbyte-depot-viewer-perforce/releases/download/v0.2.0/exbyte-depot_0.2.0_x64-setup.exe" } } }(сам
.exeможно положить в релиз с тегом версииv0.2.0, аlatest.json— в релизupdater.)
Готово: у всех, кто открыл приложение, через несколько секунд появится баннер «Доступно обновление v0.2.0».