Files
Bonchellon 6c16d4a4f4 Hardening + collaboration features from full app review
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>
2026-07-07 21:26:57 +03:00

66 lines
3.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Выпуск обновления (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».