Steven
Steven6 мин четене

Четири издания за двайсет и шест часа: езиков водопровод и едно „bridge release"

GeekBye от v1.7.6 до v1.8.1: езикова настройка, която никога не беше напускала лаптопа, overlay на Cmd+/, който показва истинските ти клавишни комбинации, версия с нула промени по кода — и парадоксът кокошката или яйцето при миграция на auto-update фийда.

Инженерство
Release
Desktop
Издания на GeekBye
Четири издания за двайсет и шест часа: езиков водопровод и едно „bridge release"

Между четвъртък сутринта и петък следобед през февруари 2026 GeekBye достави четири издания: v1.7.6, v1.7.7, v1.8.0 и v1.8.1 — шестнайсет комита, около двайсет и шест часа между първия таг и последния. Нито едно от тях само по себе си не е заглавна новина. Заедно те са портрет на това, което всъщност съдържат седмиците с малки издания: функционалност, която най-накрая завършва пътуването си, един quality-of-life overlay, номер на версия без никакъв код в него и едно наистина поучително парче release инженерство.

Езикът, който никога не напусна лаптопа

GeekBye има настройка за езика на транскрипта още от септември 2025. Тя работеше — локално. Избираш испански и on-device speech-to-text конвейерът послушно транскрибираше испански. Но направи grep из кодовата база на v1.7.5 за тази настройка и я намираш на точно три места: audio handler-а, Settings UI-а и settings hook-а. Не и в API клиента. Не и в session tracker-а. Четири месеца всяка заявка, която напускаше машината, беше сляпа за езика: сесийните записи на бекенда нямаха представа какъв език представляват, а AI чатът получаваше испански транскрипти без никакъв намек, че са испански.

v1.7.6 е изданието, в което настройката завърши пътуването си — два комита, един ден. Стартът на аудио сесията вече носи transcriptLanguage в payload-а си, а AI stream-chat заявката получи същото поле, прекарано през малък helper, който чете настройката и умишлено връща undefined, когато е auto или не е зададена, така че по-старите бекенди деградират елегантно, вместо да се задавят с поле, което не познават. В diff-а се крие и един тих бонус: за да предаде езика, стартът на сесията трябваше да се премести след разрешаването на езика — което, както го четем, затвори и един път на грешка, при който сесия можеше да бъде стартирана (и преброена към лимитите), а после осиротена, когато разрешаването на езика се провали миг по-късно.

Урокът се обобщава: една настройка не е доставена, когато има UI и ефект. Доставена е, когато достигне всеки консуматор, който трябва да знае за нея. Нашата спря на мрежовата граница за четири месеца и никой не забеляза, защото локалното поведение — видимото поведение — беше вярно през цялото време. (За протокола, това беше грубият първи опит с обработката на езика; да научиш AI-я наистина да отговаря на езика на разговора е много по-късна глава от тази история.)

Cmd+/ — overlay, който не лъже за клавишните ти комбинации

Видимата за потребителя функционалност на v1.8.0 е overlay с клавишни комбинации на Cmd+/ — 193 реда нов компонент и едно дизайнерско решение, което си струва да се открадне: той не рендира твърдо кодиран cheat sheet. Взима живата shortcut конфигурация и рендира customKeys || defaultKeys, така че потребител, който е пренастроил клавишите си, вижда своите клавиши. Overlay с комбинации, който показва стойностите по подразбиране на човек, който ги е сменил, не е документация; той е дезинформация с хубава типография.

Останалото са малки корекции за коректност: overlay-ят се позиционира вляво или вдясно от картата на приложението според това от коя страна на екрана има място и се затваря с Escape, с повторно Cmd+/ или с клик отвън. Самото Cmd+/ влиза в същата система от пренастройваеми пресети като всяка друга комбинация — което е важно, защото Cmd+/ е „toggle comment" в повечето редактори, а инструмент за разработчици не бива да клечи върху редакторски клавиш, който не можеш да преместиш.

Мостовото издание

Интересното инженерство се случи в номерата на версиите, които никой не би погледнал втори път. v1.8.0 мигрира и изданията на проекта към нова GitHub организация — на пръв поглед организационно домакинство, ако не беше едно свойство на desktop auto-update: URL-ът на фийда е вграден в бинара. Всяка инсталация на v1.8.0 проверява изданията на новата организация. А всяка инсталация навън по света — всичките v1.7.7 или по-стари — проверява старата, завинаги, освен ако там не се появи нещо.

Това е парадоксът кокошката или яйцето: публикуваш следващото си издание само в новото репо и цялата съществуваща флотилия никога не го вижда. Шестнайсет минути след тага на v1.8.0 в release скрипта кацна нов флаг: --publish-owner, който пренаписва къде electron-builder качва артефактите след билда — изрично „без да засяга компилирания код на приложението", както го казва коментарът в кода. Това е целият трик, и е точно правилният шев: вграденият в бинара фийд и целта на качване на артефактите са две различни решения, а една миграция има нужда те да бъдат разкачени за едно издание. Билдваш v1.8.1, сочещо към новия фийд, качваш го в старото репо; старите клиенти виждат ъпдейта там, инсталират го и се събуждат, проверявайки новата организация. Комит съобщението нарича това „bridge release" — мостово издание — и това е правилното име. v1.8.1 беше тагнато два часа и двайсет минути след v1.8.0. (За историята на произхода — защо този проект третира auto-update с уважение, граничещо със страх — вижте auto-update-ът, който направи приложението ни неубиваемо.)

А v1.7.7? Един комит. Самият version bump. Без поправка, без revert, без обяснение в историята — най-добрият ни прочит е publish, който е трябвало да се пусне наново, и предпочитаме да си го признаем, отколкото да измисляме история. Понякога един номер на версия съществува, защото издаването на софтуер е процес от реалния свят с реални засечки, а не чиста функция на дървото с изходния код. А защо изобщо 1.7 стана 1.8: никой комит не казва, но миграцията на фийда е смислената граница на съвместимост — всеки 1.8.x бинар гледа към различна организация от всеки 1.7.x бинар — и това заслужава minor bump повече от която и да е функционалност.

Три неща, на които ни научи тази седмица

  1. Проследи една настройка до всеки консуматор. Езиковата настройка беше „готова" четири месеца, докато бекендът оставаше сляп. Точно това, че видимото локално поведение беше вярно, позволи на пролуката да оцелее — одитният въпрос е „кой друг трябва да знае за тази стойност?", зададен на всяка граница.
  2. Рендирай живата конфигурация, а не документация. Overlay-ят с комбинации чете същия източник на истина, който използва shortcut системата. Всичко друго се разминава още първия път, когато потребител персонализира нещо.
  3. Миграцията на фийд се нуждае от едно издание, което живее и в двата свята. Новият фийд в бинара, старото репо за качването. Ако release инструментите ти не могат да разделят тези две цели, добави флага, преди да ти потрябва — нашият пристигна шестнайсет минути след като потрябва, което е достатъчно близо, за да се брои.

За предишната глава от историята на v1 — login страницата Е демото (v1.7.5); а за цялата дъга — анатомията на доставянето на софтуер до съвършенство.

Свързани статии

Доставяне на трийсет езика без предпазна мрежа
Steven
Steven8 мин четене

Доставяне на трийсет езика без предпазна мрежа

GeekBye v1.8.3 закачи react-i18next и преведе цялото приложение на 30 езика. Частта с библиотеката беше рутинна. Интересната част е това, което липсваше: никаква проверка за паритет на ключовете и никакъв екстрактор на стрингове — така hardcoded английски се промъкна, датска печатна грешка стигна до производство, а changelog-ът не можеше да реши дали приложението говори 28, 29 или 30 езика.

Инженерство
i18n
Desktop
Предизайн на dashboard-а около една-единствена вълнова диаграма
Steven
Steven8 мин четене

Предизайн на dashboard-а около една-единствена вълнова диаграма

GeekBye v1.8.2 превърна dashboard-а от дистанционно за запис в аналитичен изглед само за четене — лента със статистики и вълнова диаграма за 7 дни. И двата характерни елемента бяха втора чернова, доставена до двайсет минути след първите чернови, в същия следобед.

Инженерство
Дизайн
Dashboard
Login страницата Е демото
Steven
Steven6 мин четене

Login страницата Е демото

GeekBye v1.7.5 добави продуктов скрийншот на login страницата и го изтри същия ден — изграждайки го наново като истински компоненти. Плюс: потребителят, който беше по-бърз от OCR-а, и как всъщност изглеждат 25 стилови комита за един ден.

Инженерство
Дизайн
UX