SyncTrans 1.0.0 вийшов у середині серпня. Фінальний тег (збірка 13, 19 серпня) містить одну останню зміну порівняно зі збіркою, яку видає кнопка завантаження, і це скоріше технічне коригування, ніж функція: на вимогу перевірки збірка для Mac App Store більше не пропонує оновлень усередині застосунку, оскільки їх уже доставляє сам магазин. Відтоді нічого новішого не виходило. Якщо ви хочете дізнатися, що робить конкретна збірка, нотатки випуску залишаються єдиною точною сторінкою.
Утім, репозиторій не стояв без діла. Протягом тижня після створення тегу до гілок розробки потрапили два напрямки роботи. У цій статті ми чесно описуємо їх, що означає почати із застереження: усе зазначене нижче перебуває в розробці, не випущено та не гарантується до жодної конкретної дати. Ми пишемо про це, тому що альтернативою є мовчання у списку змін, яке сприймається як бездіяльність.
Гібридний рушій: три слоти замість одного плану
У версії 1.0.0 режим рушія є єдиним вибором: на пристрої, керована хмара або власний сервіс, і цей вибір застосовується одночасно до розпізнавання, перекладу та мовлення. Це правильний формат для першого випуску, але водночас занадто грубий для запитів, які ми отримуємо на практиці — наприклад, коли потрібна якість хмарного перекладу, але розпізнавання на пристрої, або локальний переклад із кращим хмарним голосом.
Робота в розробці замінює єдиний план трьома незалежними слотами — розпізнавання, переклад, мовлення — кожен із яких заповнюється з власних дозволених джерел. Архітектура спочатку пройшла перевірку на папері, перш ніж з'явився код: перший проєкт було переглянуто, відхилено зі списком блокерів та доопрацьовано, поки рецензенти не дійшли згоди. Правила, що витримали цей процес, багато говорять про те, де були гострі кути у версії 1.0.0:
- Жодних прихованих переходів. Якщо слот дає збій посеред сеансу, репліка явно позначається як невдала на часовій шкалі із зазначенням проблемного слота. Сеанс очікує наступного речення замість непомітного перемикання на інше джерело — після повторних збоїв банер пропонує змінити цей слот, і перемикання завжди залишається явним вибором користувача.
- План фіксується під час запуску сеансу. Зміна налаштувань під час розмови не може змінити поточний сеанс; наступний запуск підхопить нові параметри. Це усуває цілий клас проблем із напівзастосованими станами.
- Неможливість подвійного списання коштів за один виклик. Коли задіяно хмарний слот, кожна логічна операція містить стабільний ключ ідемпотентності, за яким сервер усуває дублікати, тому повторний запит отримує відповідь із запису першої спроби замість повторної тарифікації.
- Мови перевіряються для комбінації, а не для плану. Доступні для сеансу мовні пари обчислюються як перетин можливостей трьох обраних джерел та перевіряються перед початком сеансу — отже, змішана конфігурація не зможе запропонувати мову, яку підтримують лише два з трьох етапів.
Ніщо з цього не змінює те, що вже випущено: три режими рушія версії 1.0.0 залишаються незмінними, а змішана конфігурація є доповненням, а не заміною.
Зміцнення локального режиму
Другий напрямок роботи менший і більш тактичний: три виправлення для покращення роботи на пристрої, розроблені разом у гілці зміцнення.
Завантаження моделей тепер відновлюється з місця зупинки замість перезапуску спочатку, а невдале завантаження відображає помилку на картці моделі замість того, щоб просто зникати. Скасування отримало аналогічну логіку — зупинка завантаження охоплює кожну частину, що передається в цей момент, і скасоване завантаження прямо повідомляє про скасування, а не виглядає як збій. Третє виправлення стосується прозорості інтерфейсу: застосунок тепер заздалегідь попереджає, у яких випадках ви насправді отримаєте системний голос macOS (набори моделей GGUF не містять мовного пакета, тому вони використовують системний голос), а мови, які системний голос озвучити не може (індонезійська є конкретним прикладом), позначаються відповідним чином ще до того, як ви побудуєте навколо них конфігурацію.
Кожне з цих покращень належить до речей, які турбують вас лише раз, а потім відчуваються щоразу. Вони вже об'єднані між собою, але ще не ввійшли до жодного випуску.
Про що ми свідомо не говоримо
До всього цього не прив'язано жодного номера версії чи дати, оскільки їх ще не існує. Гібридний рушій, зокрема, є суттєвою зміною тієї частини застосунку, яка одночасно відповідає за фінанси та конфіденційність, і він вийде лише тоді, коли досягне власної планки якості, а не за розкладом. Коли будь-що з цього вийде, воно з'явиться в розділі Що нового з номером версії — саме та сторінка, а не цей блог, є першоджерелом інформації про вміст кожної збірки.
Якщо один із цих напрямків важливий для вас — або у вас є інша пропозиція — дошка відгуків безпосередньо впливає на те, що буде завершено в першу чергу.