EnglishУкраїнськаGitHub

Picoripi Companion (мобільний PWA та синхронізація)

Мова: English · Українська

Picoripi Companion дозволяє перекладачам переглядати, редагувати та затверджувати терміни глосарію безпосередньо зі смартфона (iOS Safari чи Android Chrome) або планшета. Система складається з мобільного прогресивного веб-додатка (PWA), легкого сервера на FastAPI та вбудованого у настільний Picoripi механізму автоматичної фонової синхронізації.

Десктопна реалізація: core/companion_sync.py, ui/settings/companion_mixin.py. Сервер та веб-додаток: companion/server/, companion/web/. Детальний гайд розгортання: companion/README.md.


1. Налаштування на десктопі

Адреса та параметри сервера налаштовуються у вікні Settings → Companion (Ctrl+P):

Налаштування Призначення
Companion Server URL Адреса вашого інстансу Companion, наприклад http://127.0.0.1:8000 або http://<server-ip>:8000. Зберігається у settings.json (companion_server_url).
API Token / PIN Токен безпеки Bearer (типово: picoripi). Зберігається у settings.json (companion_api_token).
Automatically sync on project open and close Чекбокс (companion_auto_sync, увімкнено типово). Автоматично підтримує узгодженість локального та серверного глосаріїв.
Test Connection Перевірка доступності сервера та коректності токена.

Автоматичний фоновий робочий процес (Auto-Sync)

Коли параметр Automatically sync on project open and close увімкнено: - Авто-pull при запуску: через 600 мс після завантаження інтерфейсу або під час відкриття будь-якого проєкту Picoripi асинхронно запускає потік CompanionPullWorker. Якщо на телефоні було підтверджено або відредаговано терміни, локальний glossary.json оновлюється (із попереднім створенням резервної копії glossary.json.bak), структури даних гаряче оновлюються в пам'яті (glossary_mgr.refresh_from_disk()), оновлюється підсвічування синтаксису в редакторах та перезавантажується відкритий діалог глосарію. - Розумне порівняння (Diff): якщо локальні та віддалені терміни вже однакові, changed_count = 0, і зайвий запис на диск повністю опускається зі статусом: Companion: glossary is in sync with server.. - Авто-push для нового проєкту: якщо на сервері ще немає термінів для поточного проєкту, а локальний проєкт уже містить глосарій, Picoripi автоматично відправляє його на сервер для негайної доступності з телефона. - Авто-push при збереженні та виході: збереження змін (Ctrl+S), закриття проєкту, закриття діалогу глосарію або вихід із програми автоматично запускають фоновий CompanionPushWorker, який вивантажує оновлені терміни, контекстні репліки гри та референсні переклади на сервер. - Дебаунс та стабільність: усі запити захищені 3-секундним дебаунсом та перевіркою existing_worker.isRunning(), що запобігає стану гонитви та повторним запитам. Тимчасова відсутність інтернету чи вимкнений сервер не викликають модальних помилок і не блокують роботу в програмі. - Ручні дії теж виконуються у фоні: Push, Pull і Test Server Connection (вікно глосарію та Налаштування) показують невелике вікно перебігу з кнопкою Cancel; скасування спрацьовує одразу, а скасований pull не чіпає локальний глосарій. Після розв'язання конфліктів злиття фіксує той самий фоновий потік. - Вихід не чекає на сервер, що мовчить: вікно синхронізації під час виходу здається після 6 секунд без відповіді й закривається; Skip закриває його негайно.


2. Ручна синхронізація на десктопі

Перекладач може запустити синхронізацію вручну в будь-який момент: 1. Відкрийте вікно глосарію (Glossary… / Ctrl+G). 2. Натисніть кнопку [☁ Companion Sync...] на нижній панелі. 3. Оберіть потрібну дію: - ⬆ Push Glossary & Context to Mobile Companion: вивантажує поточні терміни, згенеровані ШІ варіанти, цитати з гри та референсні переклади на сервер. - ⬇ Pull Reviewed Glossary from Mobile Companion: завантажує узгоджені на телефоні терміни на комп'ютер, створює локальний бекап .bak, оновлює glossary.json та гаряче перезавантажує відкриті вікна.


3. Мобільний PWA-інтерфейс та робота зі смартфона

Відкрийте http://<your-server-ip>:8000 у браузері вашого смартфона.

Встановлення як автономного додатка (PWA)

Додаток запускається у повноекранному автономному режимі без адресного рядка браузера.

Основні можливості мобільного інтерфейсу


4. Розгортання сервера

Бекенд Companion працює на Python 3.10+ (FastAPI + Uvicorn) і зберігає глосарії проєктів у теці projects/, яку створює поруч із кодом сервера (companion/server/), з обов'язковим автоматичним збереженням бекапу .bak перед кожною модифікацією.

Варіант А: Docker Compose (Рекомендовано)

  1. На сервері Ubuntu/Debian: bash git clone https://github.com/rashevskyv/Picoripi.git cd Picoripi/companion/server docker compose up -d --build
  2. Сервер стане доступним на порту 8000.

Варіант Б: Нативний сервіс systemd на Ubuntu

  1. Запустіть готовий скрипт встановлення: bash cd Picoripi sudo ./companion/server/install_ubuntu.sh <SECRET_TOKEN> 8000
  2. Керування сервісом: bash sudo systemctl status picoripi-companion sudo systemctl restart picoripi-companion

5. Чого не робити