
Keturi leidimai per dvidešimt šešias valandas: kalbos vamzdynas ir „bridge release"
GeekBye nuo v1.7.6 iki v1.8.1: kalbos nustatymas, kuris niekada nebuvo palikęs nešiojamojo, Cmd+/ perdanga, rodanti tavo tikrus sparčiuosius klavišus, versija be jokių kodo pakeitimų — ir vištos bei kiaušinio problema migruojant automatinių atnaujinimų srautą.
Tarp ketvirtadienio ryto ir penktadienio popietės 2026 vasarį GeekBye išleido keturis leidimus: v1.7.6, v1.7.7, v1.8.0 ir v1.8.1 — šešiolika commitų, maždaug dvidešimt šešios valandos tarp pirmos žymos ir paskutinės. Nė vienas iš jų atskirai nėra antraštė. Kartu jie — portretas to, ką iš tikrųjų talpina mažų leidimų savaitės: funkcija, pagaliau užbaigianti savo kelionę, patogumo perdanga, versijos numeris be jokio kodo viduje ir vienas tikrai pamokantis release engineering gabalas.
Kalba, kuri niekada nebuvo palikusi nešiojamojo
GeekBye transkripto kalbos nustatymą turi nuo 2025 rugsėjo. Jis veikė — lokaliai. Pasirink ispanų, ir vietinis speech-to-text konvejeris paklusniai transkribuodavo ispaniškai. Bet pergrepuok v1.7.5 kodo bazę dėl to nustatymo — rasi jį lygiai trijose vietose: audio tvarkyklėje, nustatymų UI ir nustatymų hook. Ne API kliente. Ne sesijų sekiklyje. Keturis mėnesius kiekviena užklausa, paliekanti mašiną, buvo akla kalbai: backend sesijų įrašai neturėjo supratimo, kokią kalbą jie reprezentuoja, o AI pokalbis gaudavo ispaniškus transkriptus be jokios užuominos, kad jie ispaniški.
v1.7.6 — leidimas, kuriame nustatymas užbaigė savo kelionę: du commitai, viena diena. Audio sesijos startas dabar neša transcriptLanguage savo payload, o AI stream-chat užklausa gavo tą patį lauką, pratemptą per mažą pagalbininką, kuris skaito nustatymą ir sąmoningai grąžina undefined, kai jis yra auto arba nenustatytas, — kad senesni backend degradutų grakščiai, o ne springtų nuo lauko, kurio nepažįsta. Diff slepiasi ir tylus premijinis pataisymas: kad kalbą būtų galima perduoti, sesijos startas turėjo persikelti po kalbos išsprendimo — o tai, kaip mes skaitome, kartu uždarė klaidos kelią, kuriame sesija galėjo būti paleista (ir įskaičiuota į limitus), o po akimirkos likti našlaite, kai kalbos sprendimas nepavykdavo.
Pamoka apibendrinama: nustatymas nėra pristatytas, kai turi UI ir efektą. Jis pristatytas, kai pasiekia kiekvieną vartotoją, kuris apie jį turėtų žinoti. Mūsiškis keturis mėnesius sustodavo ties tinklo riba, ir niekas nepastebėjo, nes vietinis elgesys — tas matomas — visą laiką buvo teisingas. (Dėl protokolo: tai buvo grubus pirmas bandymas tvarkytis su kalba; išmokyti AI iš tikrųjų atsakyti pokalbio kalba — gerokai vėlesnis šios istorijos skyrius.)
Cmd+/ — perdanga, kuri nemeluoja apie tavo klavišus
Naudotojui matoma v1.8.0 funkcija — sparčiųjų klavišų perdanga per Cmd+/ — 193 eilutės naujo komponento ir vienas dizaino sprendimas, vertas pasivogti: ji neatvaizduoja užkoduotos atmintinės. Ji pasiima gyvą klavišų konfigūraciją ir atvaizduoja customKeys || defaultKeys, todėl naudotojas, persimapinęs savo klavišus, mato savo klavišus. Klavišų perdanga, rodanti numatytuosius tam, kas juos pasikeitė, — ne dokumentacija; tai dezinformacija su gražia tipografika.
Likusi dalis — smulkūs korektiškumo prisilietimai: perdanga pasistatoma kairėje arba dešinėje nuo programos kortelės priklausomai nuo to, kurioje ekrano pusėje yra vietos, ir užsidaro paspaudus Escape, dar kartą Cmd+/ arba spustelėjus šalia. Pats Cmd+/ prisijungia prie tos pačios permapinamų presetų sistemos kaip ir kiekvienas kitas spartusis klavišas — o tai svarbu, nes Cmd+/ daugumoje redaktorių yra „toggle comment" (perjungti komentarą), ir įrankis programuotojams neturėtų okupuoti redaktoriaus klavišo, kurio negali perkelti.
„Bridge release" — tiltinis leidimas
Įdomioji inžinerija įvyko versijų numeriuose, į kuriuos niekas nepažiūrėtų du kartus. v1.8.0 kartu migravo projekto leidimus į naują GitHub organizaciją — paviršiuje organizacinis tvarkymasis, jei ne viena desktop automatinių atnaujinimų savybė: srauto URL įkeptas į binarinę. Kiekviena v1.8.0 instaliacija apklausinėja naujos organizacijos leidimus. O kiekviena instaliacija pasaulyje — visos jos v1.7.7 ar senesnės — apklausinėja senąją, amžinai, nebent ten kas nors pasirodys.
Štai ta višta ir kiaušinis: publikuok kitą leidimą tik naujame repo — ir visa esama flotilė jo niekada nepamatys. Šešiolika minučių po v1.8.0 žymos leidimo skripte nusileido nauja vėliavėlė: --publish-owner, kuri perrašo, kur electron-builder įkelia artefaktus po buildo — aiškiai „nepaveikiant sukompiliuoto programos kodo", kaip formuluoja komentaras kode. Tai visas triukas, ir tai lygiai ta teisinga siūlė: į binarinę įkeptas srautas ir artefaktų įkėlimo tikslas — du skirtingi sprendimai, ir migracijai reikia juos vienam leidimui atskirti. Subuildink v1.8.1, nukreiptą į naują srautą, įkelk jį į seną repo; seni klientai ten pamato atnaujinimą, jį įsidiegia ir pabunda apklausinėdami naują organizaciją. Commit žinutė tai vadina „bridge release" — tiltiniu leidimu, — ir tai teisingas vardas. v1.8.1 buvo pažymėtas po dviejų valandų ir dvidešimties minučių po v1.8.0. (Kilmės istoriją, kodėl šis projektas su automatiniais atnaujinimais elgiasi su pagarba, besiribojančia su baime, rasi automatiniame atnaujinime, kuris padarė mūsų programą nenužudomą.)
O v1.7.7? Vienas commit. Pats versijos pakėlimas. Jokios pataisos, jokio revert, jokio paaiškinimo istorijoje — mūsų geriausias perskaitymas: publikavimas, kurį reikėjo paleisti iš naujo, ir mes verčiau tai pripažinsime, nei išsigalvosime istoriją. Kartais versijos numeris egzistuoja, nes programinės įrangos leidyba — realaus pasaulio procesas su realaus pasaulio žagsėjimais, o ne gryna šaltinių medžio funkcija. O kodėl 1.7 apskritai tapo 1.8: nė vienas commit nesako, bet srauto migracija — ta prasminė suderinamumo riba: kiekviena 1.8.x binarinė žiūri į kitą organizaciją nei kiekviena 1.7.x binarinė — ir tai nusipelno minor pakėlimo labiau nei bet kokia funkcija.
Trys dalykai, kurių mus išmokė ši savaitė
- Atsek nustatymą iki kiekvieno vartotojo. Kalbos preferencija buvo „baigta" keturis mėnesius, kol backend liko aklas. Būtent tai, kad matomas, vietinis elgesys buvo teisingas, ir leido spragai išgyventi — audito klausimas skamba „kas dar turėtų žinoti šią reikšmę?", užduodamas ties kiekviena riba.
- Atvaizduok gyvą konfigūraciją, o ne dokumentaciją. Klavišų perdanga skaito tą patį tiesos šaltinį, kurį naudoja sparčiųjų klavišų sistema. Bet kas kita nuslysta pirmą kartą naudotojui ką nors prisitaikius.
- Srauto migracijai reikia vieno leidimo, gyvenančio abiejuose pasauliuose. Naujas srautas binarinėje, senas repo įkėlimui. Jei tavo leidimo įrankiai nemoka atskirti šių dviejų tikslų — pridėk vėliavėlę anksčiau, nei jos prireiks; mūsiškė atvyko šešiolika minučių po to, kai jos prireikė, o tai pakankamai arti, kad užsiskaitytų.
Ankstesniam v1 istorijos skyriui — prisijungimo puslapis IR YRA demo (v1.7.5); o visai istorijos linijai — programinės įrangos tobulybės pristatymo anatomija.