
Møter du faktisk finner igjen: timeline-releasen
GeekBye v1.7.3 erstattet møte-dropdownen med en ekte tidslinje — menneskelige datoer, søk og en breadcrumb som sier hvilket møte du står i. Under panseret: et auto-select-race, et skjermbilde som er eldre enn sitt eget møte, og fem Windows-fikser på tjueåtte minutter.
Innen januar 2026 hadde GeekBye-brukerne et historikkproblem. Appen tok opp og analyserte møtene deres helt fint — og arkiverte dem så i en dropdown. En dropdown er grei for tre elementer. Ved møte femten var "det intervjuet fra forrige tirsdag" en arkeologisk utgravning gjennom rader som så helt like ut. v1.7.3 — 64 commits mellom midten av desember og 16. januar — er releasen der møter ble noe du faktisk finner igjen.
(Én bokføringsnotis, for git-historikken er ærlig selv når versjonsnumrene ikke er det: det finnes ingen v1.7.2-release-tag. Versjonen ble bumpet, men neste tag som ble shippet var v1.7.3, så Windows-fiksene fra v1.7.2-æraen ble med i denne releasen.)
Fra dropdown til tidslinje
Hovedendringen er én pull request: 12 filer, +640 linjer, de fleste av dem en ny MeetingsTimeline-komponent på 381 linjer. Dropdownen ble en scrollbar tidslinje av møtekort, gruppert i fire bøtter — Today, Yesterday, This Week, Older (i dag, i går, denne uken, eldre) — med datoer gjengitt slik et menneske ville sagt dem: Today, 2:30 PM, Yesterday, 2:30 PM, Mon, 2:30 PM for denne uken og Jan 5, 2:30 PM lenger bak. Cmd/Ctrl+K fokuserer et søkefelt som filtrerer på tittel. Møtedetaljvisningen ble en ekte navigasjonsside, så navbarens frem- og tilbakeknapper endelig betyr noe, og breadcrumben sluttet å si "Meetings / Meeting" og begynte å si "Meetings / Interview with John" (avkortet med ellipse, for noen kommer alltid til å navngi et møte som en roman).
To små livskvalitetsbiter fulgte med: en slett-knapp inne i møtevisningen (som navigerer deg tilbake til tidslinjen etter sletting, i stedet for å strande deg på en død side) og auto-navigering — når en lytteøkt avsluttes med faktisk transkripsjonsinnhold, åpner dashbordet direkte på det møtets detaljside. Avslutt samtalen, se møtet. Økter som avsluttes tomme, slettes stille i stedet for å rote til tidslinjen.
Racet du skaper ved å forbedre navigeringen
Her er delen changeloggen ikke forteller deg. Den gamle møtelisten hadde en vane: ved hver innlasting auto-valgte den den nyeste økten. Harmløst når listen var en dropdown du sjelden rørte. Fatalt i det øyeblikket møter ble en side du navigerer på: klikk på møte nr. 5, en bakgrunns-refetch blir ferdig, og listen velger hjelpsomt det nyeste møtet — og overskriver valget du gjorde for to sekunder siden. Fiksen var ikke en smartere gard; den var å slette auto-selecten helt. Enhver liste som velger ting på brukerens vegne, vil til slutt slåss mot brukeren.
Å fjerne den avdekket det andre racet. Auto-navigeringen hopper til et møte i samme øyeblikk økten avsluttes — som kan være før den økten er ferdig med å skrive seg selv til den lokale SQLite-databasen. Naviger for raskt, og du ankommer et møte som ikke finnes ennå. Den shippede fiksen er en forsinkelse på 500 millisekunder før øktene lastes inn ved ankomst i detaljvisningen, og navigeringshandleren bærer sine egne garderinger — vent på vinduets did-finish-load pluss 100ms hvis dashbordet nettopp ble opprettet, 50ms hvis det allerede var åpent. Vår lesning: navigering ved øktslutt krysser tre timing-domener — databaseskrivingen, vindusinnlastingen og React-mounten — og hvert av dem fikk sin egen lille forsinkelse. Det fungerer, og vi sier det rett ut: en stabel magiske tall er ærlig gjeld, ikke en seier.
Skjermbildet som er eldre enn sitt eget møte
Enda en antakelse døde i denne releasen: "skjermbilder hører til en økt hvis og bare hvis de ble tatt under den." Helt logisk. Feil. Ekte brukere trykker Cmd+H på stillingsannonsen, agendaen, koden de straks skal diskutere — før de trykker Start. Report-fanen matchet skjermbilder mot øktens tidsintervall strengt, så de forberedelses-skjermbildene forsvant fra rapporten de ble tatt for. Fiksen utvidet matchevinduet med 60 sekunder før øktstart. (Selve tidsintervall-maskineriet er eldre — det ble stille shippet i v1.6.15; v1.7.3s bidrag er å lære det at møter begynner litt før de begynner.)
Fem fikser på tjueåtte minutter
Krigshistorien i denne releasen ligger ikke i tidslinjen i det hele tatt — den ligger i Windows-onboarding-overlayet, og den er et lærebokeksempel på en "fiks fiksen"-kjede: fem commits mellom 10:50 og 11:18 samme formiddag.
GeekByes hovedvindu bruker muse-passthrough — en hook som veksler Electrons setIgnoreMouseEvents ved hver musebevegelse, slik at klikk faller gjennom gjennomsiktige områder. Under onboarding på Windows kjempet den hooken mot tutorial-overlayet, og ved steget der dashbord-vinduet dukker opp, frøs appen. Fiks én: få hooken til å gjøre ingenting mens onboarding er aktiv. Fred gjennom avvæpning.
Bortsett fra at onboarding-knappene nå ikke reagerte, fordi event-forwarding sendte klikkene til dashbord-vinduet under overlayet. Fiks to og tre fiklet med forward: false per wizard. Så kom committen som fant den faktiske rotårsaken: når dashbord-vinduet åpnes, tilbakestiller dens drag-handler hovedvinduet til klikk-gjennom-modus — og den første fiksen hadde gjort passthrough-hooken passiv, som betydde at ingenting var igjen til å rette innblandingen. Den ekte fiksen snudde strategien: hooken hevder nå aktivt setIgnoreMouseEvents(false) ved hver musebevegelse under onboarding, nettopp fordi ekstern kode kan tilbakestille det når som helst. Den slettet også 75 linjer av de tidligere wizard-spesifikke workaroundene.
Og selv da kom en femte commit, for å vinne input-krigen er ikke å vinne z-ordens-krigen: overlayet og dashbordet satt begge på samme always-on-top-nivå, og Windows hever det vinduet som får fokus. Overlayet flyttet til et høyere vindusnivå og hever seg selv på nytt med forsinkelse etter at dashbordet vises. Buen er verdt å huske: en passiv fiks som avvæpner din eneste forsvarer, er verre enn den opprinnelige kampen.
Tre ting denne releasen lærte oss
- Navigeringsoppgraderinger bringer tilstandsbugs til overflaten. Auto-select-racet fantes før v1.7.3; en dropdown lot deg bare aldri kjenne det. I det øyeblikket møter ble en side du bevisst navigerer på, ble hver kodebit som valgte ting for deg en bug.
- Tidsgrenser rundt brukerens intensjon trenger slakk. Økter, opptak, rapporter — brukere handler litt før og litt etter maskinens offisielle vindu. 60-sekunders skjermbildebufferen er én linje som gjenspeiler hvordan folk faktisk oppfører seg.
- Gjør aldri den korrigerende koden din passiv. Windows-frysingen krevde fem fikser fordi fiks én skrudde av den eneste mekanismen som kunne motvirke ekstern innblanding. Hvis annen kode kan bryte invarianten din når som helst, er jobben din å hevde den kontinuerlig, ikke å trekke deg tilbake.
For det forrige kapittelet i v1-historien — å bygge to brandede apper fra akkurat denne kodebasen — se én kodebase, to apper: hvordan white-labele uten å forke (v1.7.1); og for hele buen, anatomien i å shippe programvare til perfeksjon.