Steven
Steven5 min čtení

Čtyři vydání za dvacet šest hodin: jazykové potrubí a jeden „bridge release"

GeekBye od v1.7.6 po v1.8.1: jazykové nastavení, které nikdy neopustilo laptop, overlay na Cmd+/, který ukazuje vaše skutečné klávesové zkratky, verze s nulou změn v kódu — a problém slepice a vejce při migraci auto-update feedu.

Inženýrství
Release
Desktop
Vydání GeekBye
Čtyři vydání za dvacet šest hodin: jazykové potrubí a jeden „bridge release"

Mezi čtvrtečním ránem a pátečním odpolednem v únoru 2026 dodal GeekBye čtyři vydání: v1.7.6, v1.7.7, v1.8.0 a v1.8.1 — šestnáct commitů, zhruba dvacet šest hodin mezi prvním tagem a posledním. Žádné z nich samo o sobě není titulek. Dohromady jsou portrétem toho, co týdny malých vydání doopravdy obsahují: funkci, která konečně dokončuje svou cestu, quality-of-life overlay, číslo verze bez jediného řádku kódu a jeden opravdu poučný kus release engineeringu.

Jazyk, který nikdy neopustil laptop

GeekBye má nastavení jazyka přepisu už od září 2025. Fungovalo — lokálně. Vyberete španělštinu a on-device speech-to-text pipeline poslušně přepisovala španělsky. Ale grepněte codebase v1.7.5 po tomto nastavení a najdete ho přesně na třech místech: v audio handleru, v Settings UI a v settings hooku. Ne v API klientovi. Ne v session trackeru. Čtyři měsíce byl každý požadavek, který opustil stroj, slepý k jazyku: záznamy session na backendu neměly tušení, jaký jazyk reprezentují, a AI chat dostával španělské přepisy bez jediné stopy, že jsou španělské.

v1.7.6 je vydání, ve kterém nastavení dokončilo svou cestu — dva commity, jeden den. Start audio session teď nese transcriptLanguage ve svém payloadu a AI stream-chat požadavek dostal stejné pole, provlečené malým helperem, který nastavení přečte a záměrně vrací undefined, když je auto nebo nenastavené, takže starší backendy elegantně degradují, místo aby se zadusily polem, které neznají. V diffu se navíc skrývá tichá bonusová oprava: aby šel jazyk předat, start session se musel přesunout až za vyřešení jazyka — což, jak to čteme, zároveň uzavřelo chybovou cestu, kdy mohla být session spuštěna (a započítána do limitů) a pak osiřet, když vyřešení jazyka o okamžik později selhalo.

Poučení se dá zobecnit: nastavení není dodané, když má UI a účinek. Dodané je, když dorazí ke každému konzumentovi, který by o něm měl vědět. To naše se na čtyři měsíce zastavilo na hranici sítě a nikdo si toho nevšiml, protože lokální chování — to viditelné — bylo celou dobu správné. (Pro pořádek: tohle byl hrubý první průchod zpracováním jazyka; naučit AI skutečně odpovídat v jazyce konverzace je mnohem pozdější kapitola tohoto příběhu.)

Cmd+/ — overlay, který nelže o vašich klávesových zkratkách

Uživatelsky viditelná funkce v1.8.0 je overlay klávesových zkratek na Cmd+/ — 193 řádků nové komponenty a jedno designové rozhodnutí, které stojí za ukradení: nerenderuje natvrdo zadrátovaný tahák. Načte živou konfiguraci zkratek a renderuje customKeys || defaultKeys, takže uživatel, který si klávesy přemapoval, vidí svoje klávesy. Overlay zkratek, který ukazuje výchozí hodnoty někomu, kdo si je změnil, není dokumentace; je to dezinformace s pěknou typografií.

Zbytek jsou drobné korektnostní doteky: overlay se umístí vlevo nebo vpravo od karty aplikace podle toho, na které straně obrazovky je místo, a zavírá se na Escape, na další Cmd+/ nebo kliknutím mimo. Samotné Cmd+/ vstupuje do stejného systému přemapovatelných presetů jako každá jiná zkratka — což je důležité, protože Cmd+/ je ve většině editorů „toggle comment" a nástroj pro vývojáře by neměl okupovat editorovou klávesu, kterou nejde přesunout.

Bridge release

Zajímavé inženýrství se odehrálo v číslech verzí, na která by se nikdo dvakrát nepodíval. v1.8.0 zároveň zmigroval vydání projektu do nové GitHub organizace — na povrchu organizační úklid, nebýt jedné vlastnosti desktopového auto-update: URL feedu je zapečená v binárce. Každá instalace v1.8.0 se ptá na vydání nové organizace. A každá instalace venku ve světě — všechny v1.7.7 nebo starší — se ptá té staré, navždy, pokud se tam něco neobjeví.

To je ten problém slepice a vejce: publikujte své další vydání jen do nového repa a celá existující flotila ho nikdy neuvidí. Šestnáct minut po tagu v1.8.0 přistál v release skriptu nový flag: --publish-owner, který přepisuje, kam electron-builder nahrává artefakty po buildu — výslovně „bez ovlivnění zkompilovaného kódu aplikace", jak to říká komentář v kódu. To je celý trik a je to přesně ten správný šev: feed zapečený v binárce a cílové místo uploadu artefaktů jsou dvě různá rozhodnutí a migrace potřebuje, aby byla na jedno vydání oddělená. Sestavíte v1.8.1 mířící na nový feed, nahrajete ho do starého repa; staří klienti tam uvidí aktualizaci, nainstalují si ji a probudí se s dotazy na novou organizaci. Commit message tomu říká „bridge release" — přemosťovací vydání — a je to správné jméno. v1.8.1 byl otagován dvě hodiny a dvacet minut po v1.8.0. (Příběh o původu toho, proč tento projekt zachází s auto-update s respektem hraničícím se strachem, najdete v auto-update, který udělal naši aplikaci nezabitelnou.)

A v1.7.7? Jeden commit. Samotný version bump. Žádná oprava, žádný revert, žádné vysvětlení v historii — naše nejlepší čtení je publish, který bylo potřeba spustit znovu, a radši to přiznáme, než abychom si vymýšleli příběh. Někdy číslo verze existuje proto, že vydávání softwaru je proces z reálného světa s reálnými zádrhely, ne čistá funkce zdrojového stromu. A proč se z 1.7 vůbec stalo 1.8: žádný commit to neříká, ale migrace feedu je ta smysluplná hranice kompatibility — každá binárka 1.8.x se dívá na jinou organizaci než každá binárka 1.7.x — a to si minor bump zaslouží víc než jakákoli funkce.

Tři věci, které nás tento týden naučil

  1. Sledujte nastavení až ke každému konzumentovi. Jazyková preference byla čtyři měsíce „hotová", zatímco backend zůstával slepý. Právě to, že viditelné lokální chování bylo správné, nechalo mezeru přežít — auditní otázka zní „kdo další by měl o této hodnotě vědět?", položená na každé hranici.
  2. Renderujte živou konfiguraci, ne dokumentaci. Overlay zkratek čte stejný zdroj pravdy, jaký používá systém zkratek. Cokoli jiného se rozjede při prvním přizpůsobení uživatelem.
  3. Migrace feedu potřebuje jedno vydání, které žije v obou světech. Nový feed v binárce, staré repo pro upload. Pokud váš release tooling neumí tyto dva cíle oddělit, přidejte flag dřív, než ho budete potřebovat — ten náš dorazil šestnáct minut poté, co byl potřeba, což je dost blízko na to, aby se to počítalo.

Předchozí kapitolu příběhu v1 najdete v login stránka JE to demo (v1.7.5); a celý oblouk v anatomii dodávání softwaru k dokonalosti.