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

Спільна робота і прогрес

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

Кімнати

Один учасник запускає кімнату у своєму Picoripi, інші приєднуються до неї. Центрального сервера немає і нічого не треба встановлювати: Picoripi хоста і є сервером (core/collab/server.py, лише стандартна бібліотека Python). Відкрийте її через Tools → Work Together... або кнопку Room: у рядку стану.

Що спільне. Кожна правка перекладу (набір, AI-переклад, автовиправлення, Undo) доходить до інших за секунду-дві; у черзі перемагає найновіший текст рядка, тож набір — не запит на кожну клавішу. Правка іншого учасника приходить як незбережена правка: зберігайте як завжди. Її немає у вашому стеку Undo. Дві дії оминають кімнату: Import BMG та Undo Paste (вони пишуть багато рядків разом); повторіть їх на кожному комп'ютері або правте рядки.

Приєднання. Коли ви приєднуєтеся, рядки, які має кімната, замінюють ваші (як незбережені правки; ваші файли тримають старий текст, доки ви не збережете). Рядки, які ви переклали, а кімната не має, діляться з нею. Рядок, який ви змінили й не зберегли, а кімната має в іншій версії, не перезаписується: він стає конфліктом. Рядок стану каже, скільки рядків узято, поширено і в конфлікті.

Конфлікти. Кожен рядок у кімнаті має ревізію. Правку, зроблену на старій ревізії (двоє змінили той самий рядок одночасно), кімната відхиляє, а смужка над редактором показує обидві версії: Take theirs або Keep mine (яка надсилає вашу поверх).

Хто де. Смужка над редактором каже Here now: з іменами інших на тому самому рядку і Last changed by з іменем і часом. Вікно Work Together перелічує всіх у кімнаті й де вони; подвійний клік на імені — перейти туди. Кнопка в рядку стану показує, скільки людей у кімнаті.

Пам'ять кімнати. Кімната хоста пише свої рядки й лічильники команди в collab_room.json у теці проєкту хоста; кімната, запущена знову на тому самому проєкті, їх зберігає. Leave the room від'єднує; коли хост виходить, кімната закривається для всіх. Ім'я, порт і остання адреса (ніколи не пароль) запам'ятовуються в ~/.picoripi/collab.json.

Ролі, закріплення і коментарі

Ролі. Роль належить вашому токену кімнати, а не комп'ютеру.

Дія Господар Модератор Рецензент Перекладач Спостерігач
Змінити текст рядка так так ні так ні
Затвердити рядок так так так ні ні
Закріпити рядок або ділянку так так ні так ні
Передати, відхилити або зняти чуже закріплення так так ні ні ні
Призначити ділянку комусь так так ні ні ні
Коментувати; видалити свій коментар так так так так так
Вирішити коментар так так так так ні
Відкрити знову коментар, який вирішив інший учасник так так ні ні ні
Видалити чужий коментар так так ні ні ні
Перенести коментарі з файла попередньої кімнати так так ні ні ні
Вилучити учасника; дозволити повернення так так (крім господаря і модераторів) ні ні ні
Змінити роль будь-яку лише перекладач ↔ спостерігач або рецензент ні ні ні
Читати журнал модераторів так ні ні ні ні

Закріплення. Виберіть рядок, файл, блок, теку або віртуальну теку («Shared», « only») у дереві блоків, натисніть правою кнопкою і Claim for me. Рядок можна закріпити і зі смужки над редактором (Claim this row).

Присутність. Коли відкриваєте рядок, над яким хтось працює, рядок стану каже «Name is working here». Нічого не блокується.

Позначки в дереві блоків. Після назви блоку показано, що кімната знає про нього:

Смужка над редактором показує те саме для відкритого рядка і кнопки Claim this row, Approve, Comment…. Рядок, закріплений за кимось іншим, у редакторі лише для читання: ви бачите його текст, а смужка каже Claimed by Name. Правою кнопкою на смужці або на блоці в дереві — меню кімнати: Claim for me, Release my claim here, Assign to…, Comment…, Resolve comments here.

Коментарі. Коментуйте рядок, файл, блок, теку, віртуальну теку або весь проєкт: правою кнопкою на елементі дерева натисніть Comment… або натисніть Comment… у смужці над редактором. Коментар має автора, час і текст. Resolve позначає коментар вирішеним із вказанням, хто і коли; натисніть знову, щоб відкрити його. Коментарі видно всім у кімнаті. Кожна Picoripi учасника зберігає копію в comments.json у теці свого проєкту, а кімната — у collab_room.json, тож коментарі лишаються після закриття кімнати. comments.json від попередньої кімнати господар або модератор переносить до кімнати під час входу; інші учасники бачать ці коментарі, щойно кімната їх має.

Затвердження. Рецензент, модератор або господар натискає Approve у смужці над редактором. Пізніша зміна тексту рядка знімає затвердження.

Ідентичність. Ваш токен зберігається на цьому комп'ютері для кожної адреси кімнати і імені в ~/.picoripi/collab.json (ніколи не пароль). Приєднайтеся до тієї самої адреси з тим самим іменем, і ви отримаєте свою роль назад. Токен ніколи не надсилається на іншу адресу. Поки ви онлайн, інший комп'ютер не може приєднатися з вашим іменем.

Вилучення учасника. Remove from room блокує токен учасника і його ім'я, доки господар або модератор не натисне Allow back. Пароль кімнати все одно пускає під новим іменем, тому змініть пароль, щоб не пускати когось. Господаря не можна вилучити. Модератора не можна вилучити, спочатку змініть його роль. Господаря й модераторів не можна вилучити.

Вікно. У вікні Work Together під списком людей є чотири вкладки: Roles, Claims (разом із запитами), Comments і Moderator log (лише для господаря).

Кімната без вікна. Кімната може працювати без вікна Picoripi на комп'ютері, який лишається ввімкненим:

python -m core.collab.server --headless --port 8765 --password-file room-password.txt --project-dir "D:\Projects\MyGame" --owner-token-file owner-token.txt

Першим господарем стає учасник, який приєднується з токеном із owner-token.txt. Процес друкує один рядок з портом і ідентифікатором кімнати та працює, доки ви його не зупините. Без --owner-token-file новий токен господаря друкується лише з --print-token; рядок на виводі тоді містить токен, тож тримайте цей вивід приватним. Кімната відповідає на пароль кімнати (для приєднання) і на токени кімнати (для всього іншого).

Віддалені кімнати вимкнені за замовчуванням. Picoripi підключається до кімнати лише тоді, коли ви натискаєте Start the room, Join або Connect. Нічого не підключається саме. Адреса й ім'я кімнати запам'ятовуються для наступного запуску; пароль — лише якщо ви позначили Remember this room. Пароль зберігається в налаштуваннях цього комп'ютера (collab.json, як ключі ШІ), ніколи в теці проєкту чи експорті. Забути збережену кімнату можна кнопкою Forget. Трафік іде звичайним HTTP: використовуйте VPN або мережу, якій довіряєте.

Сторінка прогресу

Tools → Progress... рахує відкритий проєкт у фоні й відкриває сторінку в браузері (progress.html у теці проєкту; core/progress_stats.py):

Рядок вважається перекладеним, коли його оригінал має текст окрім тегів, а поточний текст не порожній і відрізняється від оригіналу (те саме правило, що в редакторі).

У кімнаті сторінку віддає хост за адресою http://<адреса хоста>:<порт>/stats?token=<токен кімнати> (кнопка Progress page додає токен; Tools → Progress); вона оновлюється сама кожні 30 секунд і додає таблицю Team: для кожного учасника — слова оригіналу й рядки, які він переклав першим, його правки і слова за сьогодні, з медалями для перших трьох, Leader of the day і тим, на скільки другий відстає від першого. Рядки, поширені при приєднанні, не зараховуються нікому; шліфування вже перекладеного рядка — це правка, а не нові слова. Сторінка показує лише числа й імена, ніколи не текст; її може відкрити кожен, хто досягає адреси кімнати. Picoripi кожного учасника надсилає кімнаті свіже зведення проєкту при приєднанні, а далі раз на хвилину, поки йдуть правки.