
Четири издания за двайсет и шест часа: езиков водопровод и едно „bridge release"
GeekBye от v1.7.6 до v1.8.1: езикова настройка, която никога не беше напускала лаптопа, overlay на Cmd+/, който показва истинските ти клавишни комбинации, версия с нула промени по кода — и парадоксът кокошката или яйцето при миграция на auto-update фийда.
Между четвъртък сутринта и петък следобед през февруари 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 повече от която и да е функционалност.
Три неща, на които ни научи тази седмица
- Проследи една настройка до всеки консуматор. Езиковата настройка беше „готова" четири месеца, докато бекендът оставаше сляп. Точно това, че видимото локално поведение беше вярно, позволи на пролуката да оцелее — одитният въпрос е „кой друг трябва да знае за тази стойност?", зададен на всяка граница.
- Рендирай живата конфигурация, а не документация. Overlay-ят с комбинации чете същия източник на истина, който използва shortcut системата. Всичко друго се разминава още първия път, когато потребител персонализира нещо.
- Миграцията на фийд се нуждае от едно издание, което живее и в двата свята. Новият фийд в бинара, старото репо за качването. Ако release инструментите ти не могат да разделят тези две цели, добави флага, преди да ти потрябва — нашият пристигна шестнайсет минути след като потрябва, което е достатъчно близо, за да се брои.
За предишната глава от историята на v1 — login страницата Е демото (v1.7.5); а за цялата дъга — анатомията на доставянето на софтуер до съвършенство.