Steven
Steven6 perc olvasás

Négy kiadás huszonhat óra alatt: nyelvi csővezeték és egy „bridge release"

GeekBye v1.7.6-tól v1.8.1-ig: egy nyelvi beállítás, amely sosem hagyta el a laptopot, egy Cmd+/ overlay, amely a valódi billentyűkiosztásodat mutatja, egy verzió nulla kódváltoztatással — és az auto-update feed költöztetésének tyúk-tojás problémája.

Mérnöki munka
Release
Desktop
GeekBye kiadások
Négy kiadás huszonhat óra alatt: nyelvi csővezeték és egy „bridge release"

Egy februári csütörtök reggel és péntek délután között, 2026-ban, a GeekBye négy kiadást szállított: v1.7.6, v1.7.7, v1.8.0 és v1.8.1 — tizenhat commit, nagyjából huszonhat óra az első tag és az utolsó között. Önmagában egyik sem szalagcím. Együtt viszont portréja annak, mit tartalmaznak valójában a kis kiadások hetei: egy funkciót, amely végre befejezi az útját, egy quality-of-life overlayt, egy verziószámot, amelyben nincs kód, és egy valóban tanulságos darab release engineeringet.

A nyelv, amely sosem hagyta el a laptopot

A GeekBye-nak 2025 szeptembere óta van átiratnyelv-beállítása. Működött — helyben. Válaszd a spanyolt, és az eszközön futó speech-to-text pipeline engedelmesen spanyolul írt át. De grepeld végig a v1.7.5 kódbázisát erre a beállításra, és pontosan három helyen találod meg: az audio handlerben, a Settings UI-ban és a settings hookban. Az API kliensben nem. A session trackerben nem. Négy hónapon át minden kérés, amely elhagyta a gépet, vak volt a nyelvre: a backend session-rekordjainak fogalmuk sem volt, milyen nyelvet képviselnek, az AI chat pedig spanyol átiratokat kapott anélkül, hogy bármi utalt volna rá, hogy spanyolok.

A v1.7.6 az a kiadás, amelyben a beállítás befejezte az útját — két commit, egy nap. Az audio session indítása mostantól a payloadjában viszi a transcriptLanguage-et, és az AI stream-chat kérés is megkapta ugyanezt a mezőt, egy kis helperen átfűzve, amely kiolvassa a beállítást, és szándékosan undefined-ot ad vissza, ha az auto vagy nincs beállítva, így a régebbi backendek elegánsan degradálódnak, ahelyett hogy megfulladnának egy számukra ismeretlen mezőtől. Egy csendes bónuszjavítás is bújik a diffben: a nyelv átadásához a session indítását a nyelv feloldása utánra kellett mozgatni — ami, ahogy mi olvassuk, egyben lezárt egy hibaútvonalat is, ahol egy session elindulhatott (és beleszámított a limitekbe), majd elárvult, amikor a nyelvfeloldás egy pillanattal később elbukott.

A tanulság általánosítható: egy beállítás nem akkor van leszállítva, amikor van UI-a és hatása. Akkor van leszállítva, amikor eljut minden fogyasztóhoz, amelynek tudnia kellene róla. A miénk négy hónapra megállt a hálózati határon, és senki sem vette észre, mert a helyi viselkedés — a látható viselkedés — végig helyes volt. (A jegyzőkönyv kedvéért: ez volt a nyelvkezelés nyers első nekifutása; megtanítani az AI-t, hogy ténylegesen a beszélgetés nyelvén válaszoljon, ennek a történetnek egy jóval későbbi fejezete.)

Cmd+/ — egy overlay, amely nem hazudik a billentyűkiosztásodról

A v1.8.0 felhasználó felé látszó funkciója egy billentyűparancs-overlay a Cmd+/ lenyomására — 193 sornyi új komponens, és egy design-döntés, amit érdemes ellopni: nem egy bedrótozott puskát renderel. Lekéri az élő shortcut-konfigurációt, és customKeys || defaultKeys-t renderel, így az a felhasználó, aki átmappelte a billentyűit, a saját billentyűit látja. Az a billentyűparancs-overlay, amely az alapértelmezéseket mutatja annak, aki megváltoztatta őket, nem dokumentáció; dezinformáció szép tipográfiával.

A többi apró korrektségi simítás: az overlay az app-kártya bal vagy jobb oldalára pozicionálja magát, attól függően, a képernyő melyik oldalán van hely, és bezáródik Escape-re, újabb Cmd+/-ra, vagy egy kívülre kattintásra. Maga a Cmd+/ ugyanabba az átmappelhető preset-rendszerbe kerül, mint minden más parancs — ami számít, mert a Cmd+/ a legtöbb szerkesztőben a „toggle comment", és egy fejlesztőknek szánt eszköz ne üljön rá egy mozdíthatatlan szerkesztő-billentyűre.

A „bridge release"

Az érdekes mérnöki munka azokban a verziószámokban történt, amelyekre senki sem nézne rá kétszer. A v1.8.0 emellett új GitHub organizationbe költöztette a projekt release-eit — a felszínen szervezeti rendrakás, leszámítva a desktop auto-update egyetlen tulajdonságát: a feed URL-je bele van égetve a binárisba. Minden v1.8.0-telepítés az új organization release-eit kérdezi. És minden kint lévő telepítés a világban — mind v1.7.7 vagy régebbi — a régit kérdezi, örökké, hacsak meg nem jelenik ott valami.

Ez a tyúk-tojás helyzet: publikáld a következő kiadásodat csak az új repóba, és a teljes meglévő flotta sosem látja meg. Tizenhat perccel a v1.8.0 tag után új flag landolt a release scriptben: a --publish-owner, amely átírja, hova tölti fel az electron-builder az artifactokat a build után — kifejezetten „a lefordított app-kód érintése nélkül", ahogy a kódkomment fogalmaz. Ennyi az egész trükk, és pontosan ez a megfelelő varrat: a binárisba égetett feed és az artifactok feltöltési célja két különböző döntés, és egy migrációnak arra van szüksége, hogy egy kiadás erejéig szét legyenek választva. Buildeld a v1.8.1-et az új feedre mutatva, töltsd fel a régi repóba; a régi kliensek ott látják meg a frissítést, telepítik, és már az új organizationt kérdezgetve ébrednek. A commit-üzenet ezt „bridge release"-nek — hídkiadásnak — nevezi, ami a helyes név. A v1.8.1 két óra húsz perccel a v1.8.0 után lett taggelve. (Az eredettörténetért — hogy miért kezeli ez a projekt az auto-update-et a félelemmel határos tisztelettel — lásd az auto-update, amelytől az appunk kinyírhatatlan lett.)

És a v1.7.7? Egy commit. Maga a verzióemelés. Se javítás, se revert, se magyarázat a historyban — a legjobb olvasatunk egy publish, amit újra kellett futtatni, és ezt inkább bevalljuk, mint hogy történetet találjunk ki. Néha egy verziószám azért létezik, mert a szoftverkiadás valós világbeli folyamat valós világbeli döccenőkkel, nem a forrásfa tiszta függvénye. Ami pedig azt illeti, miért lett egyáltalán az 1.7-ből 1.8: egyik commit sem mondja ki, de a feed-költöztetés az érdemi kompatibilitási határ — minden 1.8.x bináris más organizationt néz, mint minden 1.7.x bináris —, és ez jobban megérdemel egy minor emelést, mint bármelyik funkció.

Három dolog, amit ez a hét tanított nekünk

  1. Kövess végig egy beállítást minden fogyasztóig. A nyelvi preferencia négy hónapon át „kész" volt, miközben a backend vak maradt. Pontosan az engedte túlélni a rést, hogy a látható, helyi viselkedés helyes volt — az audit-kérdés az, hogy „kinek kellene még tudnia erről az értékről?", minden határon feltéve.
  2. Élő konfigurációt renderelj, ne dokumentációt. A billentyűparancs-overlay ugyanazt az igazságforrást olvassa, amit a shortcut-rendszer használ. Minden más elcsúszik, amint egy felhasználó először testreszab valamit.
  3. Egy feed-költöztetéshez kell egy kiadás, amely mindkét világban él. Új feed a binárisban, régi repó a feltöltéshez. Ha a release-toolingod nem tudja szétválasztani ezt a két célt, add hozzá a flaget, mielőtt szükséged lenne rá — a miénk tizenhat perccel azután érkezett, hogy szükség lett rá, ami elég közeli ahhoz, hogy számítson.

A v1-történet előző fejezetéért lásd a login oldal MAGA a demó (v1.7.5); a teljes ívért pedig a szoftver tökéletesre szállításának anatómiája.