Steven
Steven5 min lukuaika

Neljä julkaisua kahdessakymmenessäkuudessa tunnissa: kieliputkitusta ja "bridge release"

GeekBye v1.7.6:sta v1.8.1:een: kieliasetus, joka ei ollut koskaan poistunut läppäriltä, Cmd+/-overlay joka näyttää oikeat näppäinsidontasi, versio ilman yhtäkään koodimuutosta — ja auto-update-feedin migraation muna-kana-ongelma.

Ohjelmistokehitys
Julkaisu
Desktop
GeekBye-julkaisut
Neljä julkaisua kahdessakymmenessäkuudessa tunnissa: kieliputkitusta ja "bridge release"

Torstaiaamun ja perjantai-iltapäivän välissä helmikuussa 2026 GeekBye toimitti neljä julkaisua: v1.7.6, v1.7.7, v1.8.0 ja v1.8.1 — kuusitoista commitia, noin kaksikymmentäkuusi tuntia ensimmäisen ja viimeisen tagin välillä. Yksikään niistä ei yksinään ole otsikko. Yhdessä ne ovat muotokuva siitä, mitä pienten julkaisujen viikot oikeasti sisältävät: ominaisuus joka vihdoin päättää matkansa, elämänlaatua parantava overlay, versionumero jossa ei ole koodia, ja yksi aidosti opettavainen pala release engineeringiä.

Kieli, joka ei koskaan poistunut läppäriltä

GeekByellä on ollut transkriptikieliasetus syyskuusta 2025 lähtien. Se toimi — paikallisesti. Valitse espanja, ja laitteella pyörivä puheentunnistusputki transkriboi kuuliaisesti espanjaa. Mutta greppaa v1.7.5-koodipohja tuolla asetuksella ja löydät sen tasan kolmesta paikasta: audiokäsittelijästä, Settings-UI:sta ja settings-hookista. Ei API-clientista. Ei sessioseurannasta. Neljän kuukauden ajan jokainen koneelta lähtevä pyyntö oli kielisokea: backendin sessiotietueilla ei ollut aavistustakaan mitä kieltä ne edustivat, ja AI-chat sai espanjankielisiä transkripteja ilman vihjettä siitä, että ne olivat espanjaa.

v1.7.6 on julkaisu, jossa asetus päätti matkansa — kaksi commitia, yksi päivä. Audiosession käynnistys kantaa nyt payloadissaan transcriptLanguage-kenttää, ja AI:n stream-chat-pyyntö sai saman kentän, pujotettuna pienen apufunktion läpi, joka lukee asetuksen ja palauttaa tarkoituksella undefined, kun arvo on auto tai asettamatta, jotta vanhemmat backendit degradoituvat siististi sen sijaan että tukehtuisivat kenttään jota eivät tunne. Diffissä piilee myös hiljainen bonuskorjaus: kielen välittämiseksi session käynnistyksen piti siirtyä kielenratkaisun jälkeen — mikä, näin me sen luemme, sulki myös virhepolun, jossa sessio saatettiin käynnistää (ja laskea limiittejä vasten) ja sitten hylätä orvoksi, kun kielenratkaisu epäonnistui hetkeä myöhemmin.

Opetus yleistyy: asetus ei ole toimitettu, kun sillä on UI ja vaikutus. Se on toimitettu, kun se tavoittaa jokaisen kuluttajan, jonka siitä pitäisi tietää. Meidän asetuksemme pysähtyi verkkorajalle neljäksi kuukaudeksi, eikä kukaan huomannut, koska paikallinen käyttäytyminen — se näkyvä käyttäytyminen — oli koko ajan oikein. (Tämä oli, pöytäkirjaan merkittäköön, kielenkäsittelyn karkea ensimmäinen versio; AI:n opettaminen oikeasti vastaamaan keskustelun kielellä on tämän tarinan paljon myöhempi luku.)

Cmd+/ — overlay, joka ei valehtele näppäinsidonnoistasi

v1.8.0:n käyttäjälle näkyvä ominaisuus on pikanäppäinoverlay Cmd+/:n takana — 193 riviä uutta komponenttia ja yksi varastamisen arvoinen design-päätös: se ei renderöi kovakoodattua lunttilappua. Se hakee elävän pikanäppäinkonfiguraation ja renderöi customKeys || defaultKeys, joten käyttäjä joka on uudelleenmapannut näppäimensä näkee omat näppäimensä. Pikanäppäinoverlay, joka näyttää oletukset jollekulle joka on ne vaihtanut, ei ole dokumentaatiota; se on disinformaatiota kauniilla typografialla.

Loput on pieniä oikeellisuussilauksia: overlay asemoi itsensä sovelluskortin vasemmalle tai oikealle puolelle sen mukaan, kummalla puolella ruutua on tilaa, ja sulkeutuu Escapella, uudella Cmd+/-painalluksella tai klikkauksella ulkopuolelle. Cmd+/ itse liittyy samaan uudelleenmapattavien presetien järjestelmään kuin jokainen muukin pikanäppäin — millä on väliä, koska Cmd+/ on useimmissa editoreissa "toggle comment", eikä kehittäjille tarkoitetun työkalun pitäisi vallata editorinäppäintä, jota ei voi siirtää.

Siltajulkaisu

Kiinnostava insinöörityö tapahtui versionumeroissa, joita kukaan ei vilkaisisi kahdesti. v1.8.0 siirsi samalla projektin julkaisut uuteen GitHub-organisaatioon — pinnalta katsoen organisaation siivousta, ellei olisi yhtä desktop-auto-updaten ominaisuutta: feedin URL on leivottu binääriin. Jokainen v1.8.0-asennus pollaa uuden organisaation julkaisuja. Ja jokainen asennus maailmalla — kaikki v1.7.7 tai vanhempia — pollaa vanhaa, ikuisesti, ellei sinne ilmesty jotain.

Se on muna-kana-ongelma: julkaise seuraava julkaisusi vain uuteen repoon, eikä koko olemassa oleva laivasto näe sitä koskaan. Kuusitoista minuuttia v1.8.0-tagin jälkeen julkaisuskriptiin laskeutui uusi lippu: --publish-owner, joka uudelleenkirjoittaa minne electron-builder lataa artefaktit buildin jälkeen — kuten koodikommentti asian ilmaisee, eksplisiittisesti "vaikuttamatta käännettyyn sovelluskoodiin". Siinä on koko temppu, ja se on juuri oikea sauma: binääriin leivottu feedi ja artefaktien latauskohde ovat kaksi eri päätöstä, ja migraatio tarvitsee ne erotettuina yhden julkaisun ajaksi. Buildaa v1.8.1 osoittamaan uuteen feediin, lataa se vanhaan repoon; vanhat clientit näkevät päivityksen siellä, asentavat sen ja heräävät pollaamaan uutta organisaatiota. Commit-viesti kutsuu tätä nimellä "bridge release", ja se on oikea nimi. v1.8.1 tagattiin kaksi tuntia ja kaksikymmentä minuuttia v1.8.0:n jälkeen. (Syntytarina siitä, miksi tämä projekti kohtelee auto-updatea kunnioituksella joka hipoo pelkoa, löytyy postauksesta auto-update joka teki sovelluksestamme tappamattoman.)

Entä v1.7.7? Yksi commit. Itse versiokorotus. Ei korjausta, ei revertiä, ei selitystä historiassa — paras lukutapamme on julkaisuajo, joka piti ajaa uudelleen, ja myönnämme sen mieluummin kuin keksimme tarinan. Joskus versionumero on olemassa siksi, että ohjelmiston julkaiseminen on reaalimaailman prosessi reaalimaailman nikotteluineen, ei lähdepuun puhdas funktio. Ja miksi 1.7:stä ylipäätään tuli 1.8: mikään commit ei sitä sano, mutta feedin migraatio on se merkityksellinen yhteensopivuusraja — jokainen 1.8.x-binääri katsoo eri organisaatioon kuin jokainen 1.7.x-binääri — ja se ansaitsee minor-korotuksen enemmän kuin yksikään ominaisuus.

Kolme asiaa, jotka tämä viikko opetti meille

  1. Jäljitä asetus jokaiseen kuluttajaan. Kieliasetus oli "valmis" neljä kuukautta samalla kun backend pysyi sokeana. Juuri se, että näkyvä, paikallinen käyttäytyminen oli oikein, antoi aukon selviytyä — auditointikysymys on "kenen muun pitäisi tietää tästä arvosta?", kysyttynä jokaisella rajalla.
  2. Renderöi elävä konfiguraatio, älä dokumentaatiota. Pikanäppäinoverlay lukee samaa totuuden lähdettä, jota pikanäppäinjärjestelmä käyttää. Kaikki muu ajautuu harhaan heti kun käyttäjä mukauttaa jotain.
  3. Feedin migraatio tarvitsee yhden julkaisun, joka elää molemmissa maailmoissa. Uusi feedi binäärissä, vanha repo latausta varten. Jos julkaisutyökalusi eivät osaa erottaa näitä kahta kohdetta, lisää lippu ennen kuin tarvitset sitä — meidän lippumme saapui kuusitoista minuuttia tarpeen jälkeen, mikä on tarpeeksi lähellä laskettavaksi.

Edellinen luku v1-tarinassa: kirjautumissivu ON se demo (v1.7.5); ja koko kaarelle, ohjelmiston toimittamisen anatomia täydellisyyteen asti.