Steven
Steven5 min lugemist

Neli väljalaset kahekümne kuue tunniga: keele torustik ja "bridge release"

GeekBye v1.7.6 kuni v1.8.1: keeleseade, mis polnud kunagi sülearvutist lahkunud, Cmd+/ overlay, mis näitab sinu päris klahve, versioon ilma ühegi koodimuudatuseta — ja muna-kana probleem auto-update feed'i migreerimisel.

Arendus
Väljalase
Desktop
GeekBye väljalasked
Neli väljalaset kahekümne kuue tunniga: keele torustik ja "bridge release"

Ühe neljapäeva hommiku ja reede pärastlõuna vahel 2026. aasta veebruaris tarnis GeekBye neli väljalaset: v1.7.6, v1.7.7, v1.8.0 ja v1.8.1 — kuusteist commitit, umbes kakskümmend kuus tundi esimese ja viimase tag'i vahel. Ükski neist eraldi pole pealkiri. Koos on nad portree sellest, mida väikeste väljalasete nädalad tegelikult sisaldavad: funktsioon, mis lõpuks oma teekonna lõpetab, elukvaliteedi-overlay, versiooninumber, milles pole koodi, ja üks tõeliselt õpetlik tükk release engineering'ust.

Keel, mis kunagi sülearvutist ei lahkunud

GeekByel on transkriptikeele seade olnud 2025. aasta septembrist saadik. See töötas — lokaalselt. Vali hispaania keel ja seadmesisene kõnetuvastuse torustik transkribeeris kuulekalt hispaania keelt. Aga grep'i v1.7.5 koodibaasi selle seade järgi ja leiad selle täpselt kolmest kohast: audiokäsitlejast, seadete UI-st ja seadete hoogist. Mitte API-kliendist. Mitte sessioonijälgijast. Neli kuud oli iga masinast lahkuv päring keelepime: backendi sessioonikirjetel polnud aimugi, mis keelt nad esindavad, ja AI-vestlus sai hispaaniakeelseid transkripte ilma vihjeta, et need on hispaania keeles.

v1.7.6 on väljalase, kus seade oma teekonna lõpetas — kaks commitit, üks päev. Audiosessiooni start kannab nüüd oma payload'is transcriptLanguage'it ja AI stream-chat päring sai sama välja, läbi väikese abifunktsiooni, mis loeb seadet ja tagastab teadlikult undefined, kui väärtus on auto või määramata, nii et vanemad backendid degradeeruvad graatsiliselt selle asemel, et tundmatu välja otsas lämbuda. Diffis peitub ka vaikne boonusparandus: keele edastamiseks pidi sessiooni start liikuma pärast keele lahendamist — mis, nagu meie seda loeme, sulges ka veatee, kus sessioon võidi käivitada (ja limiitide vastu arvestada) ning siis orvuks jätta, kui keele lahendamine hetk hiljem ebaõnnestus.

Õppetund üldistub: seade pole tarnitud, kui tal on UI ja mõju. Ta on tarnitud, kui ta jõuab iga tarbijani, kes temast teadma peaks. Meie oma peatus võrgupiiril neljaks kuuks ja keegi ei märganud, sest lokaalne käitumine — nähtav käitumine — oli kogu aeg õige. (See oli, protokolli huvides, keelekäsitluse toores esimene katse; õpetada AI-d päriselt vestluse keeles vastama on selle loo palju hilisem peatükk.)

Cmd+/ — overlay, mis sinu klahvide kohta ei valeta

v1.8.0 kasutajale nähtav funktsioon on klaviatuuri kiirklahvide overlay Cmd+/ peal — 193 rida uut komponenti ja üks disainiotsus, mida tasub varastada: see ei renderda kõvasti kodeeritud spikrit. See laeb elusa kiirklahvikonfiguratsiooni ja renderdab customKeys || defaultKeys, nii et kasutaja, kes oma klahvid ümber mäppis, näeb oma klahve. Kiirklahvide overlay, mis näitab vaikeväärtusi kellelegi, kes need ära muutis, pole dokumentatsioon; see on desinformatsioon kena tüpograafiaga.

Ülejäänu on väikesed korrektsuspuudutused: overlay paigutab end rakendusekaardist vasakule või paremale, olenevalt sellest, kummal ekraanipoolel ruumi on, ja sulgub Escape'iga, uuesti Cmd+/-ga või välisklõpsuga. Cmd+/ ise liitub sama ümbermäpitavate preset'ide süsteemiga nagu iga teine kiirklahv — mis on oluline, sest Cmd+/ on enamikus redaktorites "toggle comment" ja arendajatele mõeldud tööriist ei tohiks hõivata redaktoriklahvi, mida ei saa liigutada.

Sildväljalase

Huvitav insenertöö toimus versiooninumbrites, millele keegi kaks korda ei vaataks. v1.8.0 migreeris ühtlasi projekti väljalasked uude GitHubi organisatsiooni — pealtnäha organisatsiooni majapidamistöö, kui poleks üht desktop auto-update'i omadust: feedi URL on binaari sisse küpsetatud. Iga v1.8.0 paigaldus pollib uue organisatsiooni väljalaskeid. Ja iga paigaldus laias maailmas — kõik v1.7.7 või vanemad — pollib vana, igavesti, kui sinna midagi ei ilmu.

See ongi muna-kana probleem: avalda oma järgmine väljalase ainult uude reposse ja kogu olemasolev laevastik ei näe seda kunagi. Kuusteist minutit pärast v1.8.0 tag'i maandus väljalaskeskriptis uus lipp: --publish-owner, mis kirjutab ümber, kuhu electron-builder artefaktid üles laadib, pärast buildi — nagu koodikommentaar ütleb, sõnaselgelt "kompileeritud rakenduse koodi mõjutamata". See ongi kogu trikk ja see on täpselt õige õmblus: binaari sisse küpsetatud feed ja artefaktide üleslaadimise sihtkoht on kaks eri otsust ning migratsioon vajab nende lahtisidumist üheks väljalaskeks. Ehita v1.8.1 nii, et see osutab uuele feedile, laadi see üles vanasse reposse; vanad kliendid näevad uuendust seal, paigaldavad selle ja ärkavad uut organisatsiooni pollides. Commitisõnum nimetab seda "bridge release'iks", mis on õige nimi. v1.8.1 tag'iti kaks tundi ja kakskümmend minutit pärast v1.8.0-i. (Päritolulugu selle kohta, miks see projekt suhtub auto-update'i austusega, mis piirneb hirmuga, leiad postitusest auto-update, mis tegi meie rakenduse tapmatuks.)

Ja v1.7.7? Üks commit. Versioonitõste ise. Ei parandust, ei revert'i, ei selgitust ajaloos — meie parim lugemine on avaldamine, mis vajas uuesti käivitamist, ja me pigem tunnistame seda, kui mõtleme loo välja. Mõnikord eksisteerib versiooninumber sellepärast, et tarkvara väljalaskmine on päriselu protsess päriselu tõrgetega, mitte lähtepuu puhas funktsioon. Mis puutub sellesse, miks 1.7-st üldse sai 1.8: ükski commit seda ei ütle, aga feedi migratsioon on sisuline ühilduvuspiir — iga 1.8.x binaar vaatab teise organisatsiooni poole kui iga 1.7.x binaar — ja see väärib minor-tõstet rohkem kui ükski funktsioon.

Kolm asja, mida see nädal meile õpetas

  1. Jälita seade iga tarbijani. Keele-eelistus oli neli kuud "valmis", samal ajal kui backend jäi pimedaks. Just see, et nähtav, lokaalne käitumine oli õige, laskis lüngal ellu jääda — auditiküsimus on "kes veel peaks sellest väärtusest teadma?", küsituna igal piiril.
  2. Renderda elus konfiguratsioon, mitte dokumentatsioon. Kiirklahvide overlay loeb sedasama tõeallikat, mida kiirklahvisüsteem kasutab. Kõik muu triivib esimesel korral, kui kasutaja midagi kohandab.
  3. Feedi migratsioon vajab ühte väljalaset, mis elab mõlemas maailmas. Uus feed binaaris, vana repo üleslaadimiseks. Kui su väljalasketööriistad ei suuda neid kahte sihtmärki lahutada, lisa lipp enne, kui seda vajad — meie oma saabus kuusteist minutit pärast vajaduse teket, mis on piisavalt lähedal, et arvesse minna.

Eelmise peatüki jaoks v1 loos — sisselogimisleht ONGI demo (v1.7.5); ja kogu kaare jaoks tarkvara täiuslikkuseni tarnimise anatoomia.