Steven
Steven6 λεπτά ανάγνωσης

Τέσσερις Εκδόσεις σε Είκοσι Έξι Ώρες: Σωληνώσεις Γλώσσας και ένα «Bridge Release»

GeekBye από το v1.7.6 ως το v1.8.1: μια ρύθμιση γλώσσας που δεν είχε φύγει ποτέ από το laptop, ένα overlay στο Cmd+/ που δείχνει τα πραγματικά σου keybindings, μια έκδοση με μηδέν αλλαγές κώδικα — και το παράδοξο της κότας και του αυγού όταν μεταφέρεις το feed του auto-update.

Μηχανική
Release
Desktop
Εκδόσεις GeekBye
Τέσσερις Εκδόσεις σε Είκοσι Έξι Ώρες: Σωληνώσεις Γλώσσας και ένα «Bridge Release»

Ανάμεσα σε ένα πρωινό Πέμπτης και ένα απόγευμα Παρασκευής τον Φεβρουάριο του 2026, το GeekBye κυκλοφόρησε τέσσερις εκδόσεις: v1.7.6, v1.7.7, v1.8.0 και v1.8.1 — δεκαέξι commits, περίπου είκοσι έξι ώρες ανάμεσα στο πρώτο tag και στο τελευταίο. Καμία τους από μόνη της δεν είναι πρωτοσέλιδο. Μαζί είναι ένα πορτρέτο του τι περιέχουν στην πράξη οι εβδομάδες μικρών εκδόσεων: μια λειτουργία που επιτέλους ολοκληρώνει το ταξίδι της, ένα quality-of-life overlay, ένας αριθμός έκδοσης χωρίς καθόλου κώδικα μέσα του, και ένα γνήσια διδακτικό κομμάτι release engineering.

Η γλώσσα που δεν έφυγε ποτέ από το laptop

Το GeekBye έχει ρύθμιση γλώσσας απομαγνητοφώνησης από τον Σεπτέμβριο του 2025. Δούλευε — τοπικά. Διάλεγες ισπανικά και το on-device speech-to-text pipeline απομαγνητοφωνούσε υπάκουα ισπανικά. Αλλά κάνε grep στο codebase του v1.7.5 για αυτή τη ρύθμιση και τη βρίσκεις σε ακριβώς τρία σημεία: στον audio handler, στο Settings UI και στο settings hook. Όχι στον API client. Όχι στον session tracker. Για τέσσερις μήνες, κάθε αίτημα που έφευγε από το μηχάνημα ήταν τυφλό στη γλώσσα: οι εγγραφές συνεδριών στο backend δεν είχαν ιδέα ποια γλώσσα εκπροσωπούσαν, και το AI chat έπαιρνε ισπανικές απομαγνητοφωνήσεις χωρίς καμία ένδειξη ότι ήταν ισπανικές.

Το v1.7.6 είναι η έκδοση όπου η ρύθμιση ολοκλήρωσε το ταξίδι της — δύο commits, μία μέρα. Η εκκίνηση της audio συνεδρίας πλέον κουβαλά το transcriptLanguage στο payload της, και το αίτημα stream-chat του AI απέκτησε το ίδιο πεδίο, περασμένο μέσα από έναν μικρό helper που διαβάζει τη ρύθμιση και επιστρέφει σκόπιμα undefined όταν είναι auto ή δεν έχει οριστεί, ώστε τα παλαιότερα backends να υποβαθμίζονται ομαλά αντί να πνίγονται με ένα πεδίο που δεν γνωρίζουν. Υπάρχει και μια σιωπηλή bonus διόρθωση κρυμμένη στο diff: για να περάσει τη γλώσσα, η εκκίνηση της συνεδρίας έπρεπε να μετακινηθεί μετά την επίλυση της γλώσσας — κάτι που, όπως το διαβάζουμε, έκλεισε επίσης μια διαδρομή σφάλματος όπου μια συνεδρία μπορούσε να ξεκινήσει (και να μετρηθεί στα όρια) και μετά να μείνει ορφανή όταν η επίλυση της γλώσσας αποτύγχανε μια στιγμή αργότερα.

Το μάθημα γενικεύεται: μια ρύθμιση δεν έχει κυκλοφορήσει όταν έχει UI και αποτέλεσμα. Έχει κυκλοφορήσει όταν φτάνει σε κάθε καταναλωτή που θα έπρεπε να ξέρει γι' αυτήν. Η δική μας σταμάτησε στο όριο του δικτύου για τέσσερις μήνες, και κανείς δεν το πρόσεξε, επειδή η τοπική συμπεριφορά — η ορατή συμπεριφορά — ήταν σωστή όλη την ώρα. (Αυτό ήταν το πρόχειρο πρώτο πέρασμα στη διαχείριση γλώσσας, για την ιστορία· το να μάθεις το AI να απαντά πραγματικά στη γλώσσα της συζήτησης είναι ένα πολύ μεταγενέστερο κεφάλαιο αυτής της ιστορίας.)

Cmd+/ — ένα overlay που δεν λέει ψέματα για τα keybindings σου

Η ορατή στον χρήστη λειτουργία του v1.8.0 είναι ένα overlay συντομεύσεων πληκτρολογίου στο Cmd+/ — 193 γραμμές νέου component, και μια σχεδιαστική απόφαση που αξίζει να κλέψεις: δεν αποδίδει ένα hardcoded cheat sheet. Φέρνει τη ζωντανή διαμόρφωση συντομεύσεων και αποδίδει customKeys || defaultKeys, ώστε ένας χρήστης που άλλαξε τα πλήκτρά του να βλέπει τα δικά του πλήκτρα. Ένα overlay συντομεύσεων που δείχνει τα defaults σε κάποιον που τα άλλαξε δεν είναι τεκμηρίωση· είναι παραπληροφόρηση με ωραία τυπογραφία.

Τα υπόλοιπα είναι μικρές πινελιές ορθότητας: το overlay τοποθετείται αριστερά ή δεξιά από την κάρτα της εφαρμογής ανάλογα με το ποια πλευρά της οθόνης έχει χώρο, και κλείνει με Escape, με ξανά Cmd+/, ή με κλικ έξω από αυτό. Το ίδιο το Cmd+/ μπαίνει στο ίδιο σύστημα επαναρυθμιζόμενων presets με κάθε άλλη συντόμευση — κάτι που μετράει, επειδή το Cmd+/ είναι το «toggle comment» στους περισσότερους editors, και ένα εργαλείο για developers δεν πρέπει να καταλαμβάνει ένα πλήκτρο editor που δεν μπορείς να μετακινήσεις.

Το bridge release

Η ενδιαφέρουσα μηχανική συνέβη στους αριθμούς έκδοσης που κανείς δεν θα κοίταζε δεύτερη φορά. Το v1.8.0 μετέφερε επίσης τα releases του project σε νέο GitHub organization — οργανωτικό νοικοκύρεμα στην επιφάνεια, αν εξαιρέσεις μία ιδιότητα του desktop auto-update: το URL του feed είναι ψημένο μέσα στο binary. Κάθε εγκατάσταση v1.8.0 ρωτά τα releases του νέου organization. Και κάθε εγκατάσταση εκεί έξω στον κόσμο — όλες τους v1.7.7 ή παλαιότερες — ρωτά το παλιό, για πάντα, εκτός αν εμφανιστεί κάτι εκεί.

Αυτό είναι το παράδοξο της κότας και του αυγού: δημοσίευσε την επόμενη έκδοσή σου μόνο στο νέο repo και ολόκληρος ο υπάρχων στόλος δεν θα τη δει ποτέ. Δεκαέξι λεπτά μετά το tag του v1.8.0, ένα νέο flag προσγειώθηκε στο release script: το --publish-owner, που ξαναγράφει το πού ανεβάζει το electron-builder τα artifacts μετά το build — ρητά «χωρίς να επηρεάζεται ο μεταγλωττισμένος κώδικας της εφαρμογής», όπως το θέτει το σχόλιο στον κώδικα. Αυτό είναι όλο κι όλο το κόλπο, και είναι ακριβώς η σωστή ραφή: το ψημένο στο binary feed και ο προορισμός upload των artifacts είναι δύο διαφορετικές αποφάσεις, και μια μετάβαση χρειάζεται να αποσυνδεθούν για μία έκδοση. Χτίζεις το v1.8.1 να δείχνει στο νέο feed, το ανεβάζεις στο παλιό repo· οι παλιοί clients βλέπουν την ενημέρωση εκεί, την εγκαθιστούν, και ξυπνούν ρωτώντας το νέο organization. Το μήνυμα του commit το ονομάζει «bridge release» — έκδοση-γέφυρα — που είναι το σωστό όνομα. Το v1.8.1 πήρε tag δύο ώρες και είκοσι λεπτά μετά το v1.8.0. (Για την ιστορία προέλευσης του γιατί αυτό το project αντιμετωπίζει το auto-update με σεβασμό που αγγίζει τον φόβο, δες το auto-update που έκανε την εφαρμογή μας άτρωτη.)

Και το v1.7.7; Ένα commit. Το ίδιο το version bump. Καμία διόρθωση, κανένα revert, καμία εξήγηση στο ιστορικό — η καλύτερη ανάγνωσή μας είναι ένα publish που χρειάστηκε να ξανατρέξει, και προτιμάμε να το παραδεχτούμε παρά να επινοήσουμε μια ιστορία. Μερικές φορές ένας αριθμός έκδοσης υπάρχει επειδή η κυκλοφορία λογισμικού είναι μια διαδικασία του πραγματικού κόσμου με σκαμπανεβάσματα του πραγματικού κόσμου, όχι μια καθαρή συνάρτηση του source tree. Όσο για το γιατί το 1.7 έγινε τελικά 1.8: κανένα commit δεν το λέει, αλλά η μετάβαση του feed είναι το ουσιαστικό όριο συμβατότητας — κάθε binary 1.8.x κοιτάζει διαφορετικό organization από κάθε binary 1.7.x — και αυτό αξίζει ένα minor bump περισσότερο από οποιαδήποτε λειτουργία.

Τρία πράγματα που μας δίδαξε αυτή η εβδομάδα

  1. Ακολούθησε μια ρύθμιση ως κάθε καταναλωτή της. Η προτίμηση γλώσσας ήταν «έτοιμη» για τέσσερις μήνες ενώ το backend έμενε τυφλό. Το ότι η ορατή, τοπική συμπεριφορά ήταν σωστή είναι ακριβώς αυτό που άφησε το κενό να επιβιώσει — η ερώτηση ελέγχου είναι «ποιος άλλος θα έπρεπε να ξέρει γι' αυτή την τιμή;», σε κάθε όριο.
  2. Απόδωσε τη ζωντανή διαμόρφωση, όχι τεκμηρίωση. Το overlay συντομεύσεων διαβάζει την ίδια πηγή αλήθειας που χρησιμοποιεί το σύστημα συντομεύσεων. Οτιδήποτε άλλο ξεφεύγει την πρώτη φορά που ένας χρήστης θα κάνει προσαρμογή.
  3. Μια μετάβαση feed χρειάζεται μία έκδοση που ζει και στους δύο κόσμους. Νέο feed στο binary, παλιό repo για το upload. Αν τα release εργαλεία σου δεν μπορούν να διαχωρίσουν αυτούς τους δύο στόχους, πρόσθεσε το flag πριν το χρειαστείς — το δικό μας έφτασε δεκαέξι λεπτά αφότου χρειάστηκε, που είναι αρκετά κοντά για να μετρήσει.

Για το προηγούμενο κεφάλαιο της ιστορίας του v1, η σελίδα login ΕΙΝΑΙ το demo (v1.7.5)· και για ολόκληρη την πορεία, η ανατομία της παράδοσης λογισμικού στην τελειότητα.

Σχετικά Άρθρα

Κυκλοφορώντας τριάντα γλώσσες χωρίς δίχτυ ασφαλείας
Steven
Steven8 λεπτά ανάγνωσης

Κυκλοφορώντας τριάντα γλώσσες χωρίς δίχτυ ασφαλείας

Το GeekBye v1.8.3 συνέδεσε το react-i18next και μετέφρασε ολόκληρη την εφαρμογή σε 30 γλώσσες. Το κομμάτι της library ήταν ρουτίνα. Το ενδιαφέρον κομμάτι είναι αυτό που έλειπε: κανένας έλεγχος parity κλειδιών και κανένας extractor strings — έτσι hardcoded αγγλικά ξέφυγαν, ένα δανέζικο τυπογραφικό λάθος κυκλοφόρησε, και το changelog δεν μπορούσε να συμφωνήσει αν η εφαρμογή μιλούσε 28, 29 ή 30 γλώσσες.

Μηχανική
i18n
Desktop
Συναντήσεις που Μπορείς Πραγματικά να Ξαναβρείς: Η Έκδοση με το Timeline
Steven
Steven7 λεπτά ανάγνωσης

Συναντήσεις που Μπορείς Πραγματικά να Ξαναβρείς: Η Έκδοση με το Timeline

Το GeekBye v1.7.3 αντικατέστησε το dropdown των συναντήσεων με ένα πραγματικό timeline — ανθρώπινες ημερομηνίες, αναζήτηση, ένα breadcrumb που λέει σε ποια συνάντηση βρίσκεσαι. Από κάτω: μια κούρσα αυτόματης επιλογής, ένα screenshot που προηγείται της ίδιας του της συνάντησης, και πέντε διορθώσεις για Windows σε είκοσι οκτώ λεπτά.

Μηχανική
UX
Desktop
Επανασχεδιάζοντας το Dashboard γύρω από ένα Wave Chart
Steven
Steven8 λεπτά ανάγνωσης

Επανασχεδιάζοντας το Dashboard γύρω από ένα Wave Chart

Το GeekBye v1.8.2 μετέτρεψε το dashboard από τηλεχειριστήριο εγγραφής σε έναν αναλυτικό μόνο-για-ανάγνωση χώρο — μια λωρίδα στατιστικών και ένα wave chart 7 ημερών. Και τα δύο χαρακτηριστικά στοιχεία ήταν δεύτερα προσχέδια, που κυκλοφόρησαν μέσα σε είκοσι λεπτά από τα πρώτα προσχέδιά τους, το ίδιο απόγευμα.

Μηχανική
Design
Dashboard