Steven
Steven7 phút đọc

Bốn bản phát hành trong 26 tiếng: đi ống cho cài đặt ngôn ngữ và một "bridge release"

GeekBye v1.7.6 đến v1.8.1: một cài đặt ngôn ngữ chưa từng rời khỏi chiếc laptop, một overlay Cmd+/ hiển thị đúng keybinding thật của bạn, một phiên bản không đổi một dòng code nào — và bài toán con gà quả trứng khi di trú feed tự cập nhật.

Kỹ thuật
Phát hành
Desktop
Bản phát hành GeekBye
Bốn bản phát hành trong 26 tiếng: đi ống cho cài đặt ngôn ngữ và một "bridge release"

Giữa một sáng thứ Năm và một chiều thứ Sáu của tháng Hai 2026, GeekBye xuất xưởng bốn bản phát hành: v1.7.6, v1.7.7, v1.8.0 và v1.8.1 — 16 commit, khoảng 26 tiếng giữa tag đầu tiên và tag cuối cùng. Không bản nào trong số đó đáng lên tít. Nhưng gộp lại, chúng là bức chân dung về những gì các tuần phát-hành-nhỏ thực sự chứa đựng: một tính năng cuối cùng cũng đi hết hành trình, một overlay nâng chất lượng sống, một con số phiên bản không có dòng code nào bên trong, và một mảnh kỹ thuật phát hành thực sự đáng học.

Thứ ngôn ngữ chưa từng rời khỏi chiếc laptop

GeekBye có cài đặt ngôn ngữ transcript từ tháng Chín 2025. Nó hoạt động — ở cục bộ. Chọn tiếng Tây Ban Nha và đường ống speech-to-text trên máy sẽ cần mẫn phiên âm tiếng Tây Ban Nha. Nhưng grep codebase v1.7.5 tìm cài đặt đó, bạn thấy nó ở đúng ba nơi: audio handler, Settings UI, và settings hook. Không có trong API client. Không có trong session tracker. Suốt bốn tháng, mọi request rời khỏi chiếc máy đều mù ngôn ngữ: bản ghi phiên ở backend không hề biết mình đại diện cho ngôn ngữ nào, và AI chat nhận các transcript tiếng Tây Ban Nha mà không có lấy một gợi ý rằng chúng là tiếng Tây Ban Nha.

v1.7.6 là bản phát hành nơi cài đặt này đi hết hành trình — hai commit, một ngày. Cú khởi động phiên audio giờ mang theo transcriptLanguage trong payload, và request stream-chat của AI cũng có thêm đúng trường đó, được luồn qua một helper nhỏ: nó đọc cài đặt và cố ý trả về undefined khi giá trị là auto hoặc chưa được đặt, để các backend cũ xuống cấp êm ái thay vì nghẹn một trường chúng không biết. Trong diff còn ẩn một bản sửa thưởng kèm lặng lẽ: để truyền được ngôn ngữ, việc khởi động phiên phải dời ra sau bước phân giải ngôn ngữ — mà theo cách chúng tôi đọc, điều này cũng khép luôn một nhánh lỗi nơi một phiên có thể đã được khởi động (và bị tính vào hạn mức) rồi thành mồ côi khi bước phân giải ngôn ngữ thất bại ngay sau đó.

Bài học khái quát được: một cài đặt không được coi là đã ship khi nó có UI và có tác dụng. Nó được coi là đã ship khi nó chạm tới mọi nơi tiêu thụ đáng lẽ phải biết về nó. Cài đặt của chúng tôi dừng lại ở biên giới mạng suốt bốn tháng, và không ai để ý, vì hành vi cục bộ — hành vi nhìn thấy được — luôn đúng trong suốt thời gian đó. (Nói cho rõ, đây mới là bước đầu thô sơ của việc xử lý ngôn ngữ; dạy AI thực sự trả lời bằng ngôn ngữ của cuộc hội thoại là một chương muộn hơn nhiều của câu chuyện này.)

Cmd+/ — một overlay không nói dối về keybinding của bạn

Tính năng hướng người dùng của v1.8.0 là một overlay phím tắt trên Cmd+/ — 193 dòng component mới, và một quyết định thiết kế đáng học lỏm: nó không render một tấm cheat sheet hardcode. Nó lấy cấu hình phím tắt đang sống và render customKeys || defaultKeys, nên người dùng đã remap phím sẽ thấy phím của họ. Một overlay phím tắt hiển thị giá trị mặc định cho người đã đổi chúng không phải là tài liệu; nó là thông tin sai với typography đẹp đẽ.

Phần còn lại là những nét chỉnh nhỏ cho đúng đắn: overlay tự đặt mình bên trái hoặc phải thẻ ứng dụng tùy phía nào của màn hình còn chỗ, và đóng lại khi bấm Escape, bấm Cmd+/ lần nữa, hoặc click ra ngoài. Bản thân Cmd+/ cũng gia nhập cùng hệ thống preset có thể remap như mọi phím tắt khác — điều này quan trọng, vì Cmd+/ là "toggle comment" trong hầu hết các editor, và một công cụ dành cho developer không nên chiếm chỗ một phím của editor mà bạn không thể dời đi.

Bridge release

Phần kỹ thuật thú vị diễn ra trong những con số phiên bản chẳng ai buồn nhìn lần hai. v1.8.0 còn di trú các release của dự án sang một GitHub organization mới — bề ngoài chỉ là dọn dẹp org, ngoại trừ một đặc tính của auto-update trên desktop: URL của feed được nướng vào binary. Mọi bản cài v1.8.0 poll các release của organization mới. Còn mọi bản cài ngoài kia — toàn bộ là v1.7.7 trở xuống — poll cái cũ, mãi mãi, trừ khi có thứ gì đó xuất hiện ở đấy.

Đó chính là con gà quả trứng: publish bản phát hành tiếp theo chỉ lên repo mới, thì toàn bộ đội quân client hiện có sẽ không bao giờ thấy nó. Mười sáu phút sau tag v1.8.0, một cờ mới đáp xuống script phát hành: --publish-owner, thứ viết lại nơi electron-builder upload các artifact sau khi build — như dòng comment trong code viết rõ, "không ảnh hưởng đến code ứng dụng đã biên dịch". Toàn bộ mánh chỉ có vậy, và đó chính xác là đường nối đúng: feed nướng trong binary và đích upload của artifact là hai quyết định khác nhau, và một cuộc di trú cần chúng được tách rời trong đúng một bản phát hành. Build v1.8.1 trỏ vào feed mới, upload nó lên repo cũ; các client cũ thấy bản cập nhật ở đó, cài nó, và tỉnh dậy poll organization mới. Commit message gọi đây là một "bridge release" (bản phát hành bắc cầu), và đó là cái tên đúng. v1.8.1 được tag 2 tiếng 20 phút sau v1.8.0. (Về câu chuyện khởi nguồn vì sao dự án này đối xử với auto-update bằng sự kính trọng sát ranh giới nỗi sợ, xem bản tự cập nhật đã khiến ứng dụng của chúng tôi không thể bị giết.)

Còn v1.7.7? Một commit. Chính cú nâng phiên bản. Không bản sửa, không revert, không lời giải thích nào trong lịch sử — cách đọc hợp lý nhất của chúng tôi là một lần publish cần chạy lại, và chúng tôi thà thừa nhận điều đó còn hơn bịa ra một câu chuyện. Đôi khi một con số phiên bản tồn tại vì phát hành phần mềm là một quy trình đời thực với những cú vấp đời thực, chứ không phải một hàm thuần của cây mã nguồn. Còn vì sao 1.7 lại thành 1.8: không commit nào nói, nhưng cuộc di trú feed chính là ranh giới tương thích có ý nghĩa — mọi binary 1.8.x nhìn vào một organization khác với mọi binary 1.7.x — và điều đó xứng đáng một cú nâng minor hơn bất kỳ tính năng nào.

Ba điều tuần này dạy chúng tôi

  1. Truy vết một cài đặt tới mọi nơi tiêu thụ. Tùy chọn ngôn ngữ đã "xong" suốt bốn tháng trong khi backend vẫn mù. Chính việc hành vi cục bộ nhìn thấy được luôn đúng là thứ cho phép khoảng trống này sống sót — câu hỏi audit là "còn ai nữa nên biết giá trị này?", đặt ra ở mọi ranh giới.
  2. Render config đang sống, đừng render tài liệu. Overlay phím tắt đọc cùng một nguồn sự thật mà hệ thống phím tắt sử dụng. Bất cứ cách nào khác cũng bắt đầu lệch từ lần đầu tiên người dùng tùy chỉnh.
  3. Một cuộc di trú feed cần một bản phát hành sống trong cả hai thế giới. Feed mới trong binary, repo cũ cho upload. Nếu công cụ phát hành của bạn không tách được hai đích đó, hãy thêm cái cờ trước khi bạn cần nó — cờ của chúng tôi đến 16 phút sau khi được cần, cũng đủ sát để tính là kịp.

Về chương trước trong câu chuyện v1, xem trang login CHÍNH LÀ bản demo (v1.7.5); và cho toàn bộ vòng cung, xem giải phẫu việc xuất xưởng phần mềm đến độ hoàn hảo.

Bài Viết Liên Quan

Ship Ba Mươi Ngôn Ngữ Mà Không Có Lưới An Toàn
Steven
Steven10 phút đọc

Ship Ba Mươi Ngôn Ngữ Mà Không Có Lưới An Toàn

GeekBye v1.8.3 đấu nối react-i18next và dịch toàn bộ ứng dụng sang 30 ngôn ngữ. Phần thư viện chỉ là việc thường ngày. Phần thú vị nằm ở những gì còn thiếu: không có kiểm tra tính đồng nhất của key và không có công cụ trích xuất chuỗi — nên tiếng Anh hardcode lọt lưới, một lỗi chính tả tiếng Đan Mạch bị ship, và cái changelog thì không thống nhất nổi rằng ứng dụng nói 28, 29, hay 30 ngôn ngữ.

Kỹ thuật
i18n
Desktop
Những cuộc họp bạn thực sự tìm lại được: Bản phát hành Timeline
Steven
Steven8 phút đọc

Những cuộc họp bạn thực sự tìm lại được: Bản phát hành Timeline

GeekBye v1.7.3 thay dropdown cuộc họp bằng một timeline thực thụ — ngày giờ kiểu con người, tìm kiếm, một breadcrumb cho biết bạn đang ở cuộc họp nào. Bên dưới: một race condition do auto-select, một screenshot ra đời trước cả cuộc họp của chính nó, và năm bản sửa cho Windows trong vỏn vẹn 28 phút.

Kỹ thuật
UX
Desktop
Thiết kế lại Dashboard xoay quanh một biểu đồ sóng duy nhất
Steven
Steven10 phút đọc

Thiết kế lại Dashboard xoay quanh một biểu đồ sóng duy nhất

GeekBye v1.8.2 biến dashboard từ một chiếc điều khiển từ xa cho việc ghi âm thành một khung phân tích chỉ-đọc — một dải thống kê và một biểu đồ sóng 7 ngày. Cả hai thành phần đặc trưng đều là bản nháp thứ hai, được ship trong vòng 20 phút sau bản nháp đầu, trong cùng một buổi chiều.

Kỹ thuật
Thiết kế
Dashboard