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

3.4 KiB
Raw Permalink Blame History

Выпуск обновления (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.tomlversion
  2. Собери подписанный инсталлятор:

    $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:

    {
      "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».