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>
66 lines
3.4 KiB
Markdown
66 lines
3.4 KiB
Markdown
# Выпуск обновления (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!` — перед сборкой убедись, что файл на месте. Чтобы сменить ключ,
|
||
замени содержимое файла и пересобери.
|
||
|
||
## Как выпустить новую версию
|
||
|
||
1. Подними версию в **трёх** местах (должны совпадать):
|
||
- `package.json` → `"version"`
|
||
- `src-tauri/tauri.conf.json` → `"version"`
|
||
- `src-tauri/Cargo.toml` → `version`
|
||
|
||
2. Собери подписанный инсталлятор:
|
||
```powershell
|
||
$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)
|
||
|
||
3. Создай/обнови на Gitea релиз с тегом **`updater`** и приложи к нему:
|
||
- `exbyte-depot_<version>_x64-setup.exe`
|
||
- `latest.json` (см. ниже)
|
||
|
||
4. `latest.json` — вставь версию, дату, содержимое `.sig` в поле `signature`,
|
||
и прямую ссылку на `.exe` в `url`:
|
||
```json
|
||
{
|
||
"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».
|