
Möten du faktiskt hittar igen: timeline-releasen
GeekBye v1.7.3 ersatte mötes-dropdownen med en riktig tidslinje — mänskliga datum, sökning och en breadcrumb som säger vilket möte du står i. Under ytan: ett auto-select-race, en skärmdump som är äldre än sitt eget möte, och fem Windows-fixar på tjugoåtta minuter.
I januari 2026 hade GeekByes användare ett historikproblem. Appen spelade in och analyserade deras möten alldeles utmärkt — och arkiverade dem sedan i en dropdown. En dropdown funkar för tre poster. Vid möte femton var "den där intervjun i tisdags" en arkeologisk utgrävning genom rader som såg likadana ut. v1.7.3 — 64 commits mellan mitten av december och 16 januari — är releasen där möten blev något du faktiskt hittar igen.
(En bokföringsnot, för git-historiken är ärlig även när versionsnumren inte är det: det finns inget v1.7.2-release-tagg. Versionen bumpades, men nästa tagg som skeppades var v1.7.3, så Windows-fixarna från v1.7.2-eran åkte med i den här releasen.)
Från dropdown till tidslinje
Huvudförändringen är en enda pull request: 12 filer, +640 rader, de flesta av dem en ny MeetingsTimeline-komponent på 381 rader. Dropdownen blev en scrollbar tidslinje av möteskort, grupperade i fyra hinkar — Today, Yesterday, This Week, Older (idag, igår, denna vecka, äldre) — med datum renderade som en människa skulle säga dem: Today, 2:30 PM, Yesterday, 2:30 PM, Mon, 2:30 PM för den här veckan och Jan 5, 2:30 PM längre bak. Cmd/Ctrl+K fokuserar ett sökfält som filtrerar på titel. Mötesdetaljvyn blev en riktig navigationssida, så navbarens bakåt- och framåtknappar betyder äntligen något, och breadcrumben slutade säga "Meetings / Meeting" och började säga "Meetings / Interview with John" (avkortad med ellips, för någon kommer alltid döpa ett möte som en roman).
Två små livskvalitetsbitar följde med: en radera-knapp inne i mötesvyn (som navigerar dig tillbaka till tidslinjen efter radering, i stället för att stranda dig på en död sida) och auto-navigering — när en lyssningssession tar slut med faktiskt transkriptinnehåll öppnas dashboarden direkt på det mötets detaljsida. Avsluta samtalet, se mötet. Sessioner som slutar tomma raderas tyst i stället för att skräpa ner tidslinjen.
Racet du skapar genom att förbättra navigeringen
Här är delen changeloggen inte berättar. Den gamla möteslistan hade en vana: vid varje inläsning auto-valde den den senaste sessionen. Harmlöst när listan var en dropdown du sällan rörde. Fatalt i det ögonblick möten blev en sida du navigerar på: klicka på möte nr 5, en bakgrunds-refetch blir klar, och listan väljer hjälpsamt det senaste mötet — och skriver över valet du gjorde för två sekunder sedan. Fixen var inte en smartare gard; den var att radera auto-selecten helt. Varje lista som väljer saker åt användaren kommer till slut att slåss mot användaren.
Att ta bort den blottade det andra racet. Auto-navigeringen hoppar till ett möte i samma ögonblick dess session tar slut — vilket kan vara innan den sessionen har skrivit klart sig själv till den lokala SQLite-databasen. Navigera för snabbt och du anländer till ett möte som inte finns än. Den skeppade fixen är en fördröjning på 500 millisekunder innan sessionerna läses in vid ankomst i detaljvyn, och navigeringshanteraren bär sina egna garderingar — vänta på fönstrets did-finish-load plus 100ms om dashboarden precis skapades, 50ms om den redan var öppen. Vår läsning: navigering vid sessionsslut korsar tre timingdomäner — databasskrivningen, fönsterinläsningen och React-mounten — och var och en fick sin egen lilla fördröjning. Det fungerar, och vi säger det rakt ut: en hög magiska tal är ärlig skuld, inte en seger.
Skärmdumpen som är äldre än sitt eget möte
Ytterligare ett antagande dog i den här releasen: "skärmdumpar hör till en session om och endast om de togs under den." Fullkomligt logiskt. Fel. Riktiga användare trycker Cmd+H på jobbannonsen, agendan, koden de strax ska diskutera — innan de trycker Start. Report-fliken matchade skärmdumpar mot sessionens tidsintervall strikt, så de där förberedelse-skärmdumparna försvann ur rapporten de togs för. Fixen breddade matchningsfönstret med 60 sekunder före sessionsstart. (Själva tidsintervall-maskineriet är äldre — det skeppades tyst i v1.6.15; v1.7.3:s bidrag är att lära det att möten börjar strax innan de börjar.)
Fem fixar på tjugoåtta minuter
Krigshistorien i den här releasen ligger inte alls i tidslinjen — den ligger i Windows-onboarding-overlayen, och den är ett läroboksexempel på en "fixa fixen"-kedja: fem commits mellan 10:50 och 11:18 samma förmiddag.
GeekByes huvudfönster använder mus-passthrough — en hook som växlar Electrons setIgnoreMouseEvents vid varje musrörelse så att klick faller igenom genomskinliga områden. Under onboarding på Windows slogs den hooken mot tutorial-overlayen, och vid steget där dashboard-fönstret dyker upp frös appen. Fix ett: låt hooken göra ingenting medan onboarding är aktiv. Fred genom avväpning.
Förutom att onboarding-knapparna nu inte svarade, eftersom event-forwarding skickade klicken till dashboard-fönstret under overlayen. Fix två och tre pillade på forward: false per wizard. Sedan kom committen som hittade den verkliga rotorsaken: när dashboard-fönstret öppnas återställer dess drag-hanterare huvudfönstret till klicka-igenom-läge — och den första fixen hade gjort passthrough-hooken passiv, vilket betydde att inget fanns kvar som kunde rätta till inblandningen. Den riktiga fixen vände på strategin: hooken hävdar nu aktivt setIgnoreMouseEvents(false) vid varje musrörelse under onboarding, just för att extern kod kan återställa det när som helst. Den raderade också 75 rader av de tidigare wizard-specifika workarounderna.
Och även då kom en femte commit, för att vinna input-kriget är inte att vinna z-ordningskriget: overlayen och dashboarden satt båda på samma always-on-top-nivå, och Windows höjer det fönster som får fokus. Overlayen flyttade till en högre fönsternivå och höjer sig själv igen med fördröjning efter att dashboarden visas. Bågen är värd att minnas: en passiv fix som avväpnar din enda försvarare är värre än den ursprungliga striden.
Tre saker den här releasen lärde oss
- Navigeringsuppgraderingar ytar tillståndsbuggar. Auto-select-racet fanns före v1.7.3; en dropdown lät dig bara aldrig känna det. I det ögonblick möten blev en sida du medvetet navigerar på blev varje kodbit som valde saker åt dig en bugg.
- Tidsgränser kring användarens avsikt behöver slack. Sessioner, inspelningar, rapporter — användare agerar strax före och strax efter maskinens officiella fönster. 60-sekunders skärmdumpsbufferten är en rad som speglar hur folk faktiskt beter sig.
- Gör aldrig din korrigerande kod passiv. Windows-frysningen krävde fem fixar eftersom fix ett stängde av den enda mekanism som kunde motverka extern inblandning. Om annan kod kan bryta din invariant när som helst är ditt jobb att hävda den kontinuerligt, inte att backa undan.
För det föregående kapitlet i v1-historien — att bygga två varumärkta appar från just den här kodbasen — se en kodbas, två appar: så white-labelar du utan att forka (v1.7.1); och för hela bågen, anatomin i att skeppa mjukvara till perfektion.