Cửa sổ bật lên của tiện ích đã trả lời sai câu hỏi. Ở bản 1.16, nó vẽ chính trang bạn đang mở
Telli.sh: Every Translator 1.16 dựng lại cửa sổ bật lên trên thanh công cụ thành một khung trạng thái: bản thu nhỏ của trang bạn đang mở, năm thẻ có nhãn, và các chấm chỉ chuyển xanh khi tiện ích xác nhận được rằng nó thật sự đang chạy. Toàn bộ phần cấu hình đã dời sang trang cài đặt riêng với bản xem trước dạng khung xương cập nhật theo thời gian thực; dịch tức thì có tab riêng cùng lịch sử tự dọn sau 30 ngày; và chuông thông báo mang blog Telli.sh đến bằng ngôn ngữ trình duyệt của bạn, qua 15 phiên bản ngôn ngữ.
Cho đến tuần này, nhấp vào biểu tượng Telli.sh trên thanh công cụ là mở ra một ngăn kéo cài đặt. Mã của cửa sổ bật lên ở bản 1.15 nặng 16.936 byte và nhét trọn biểu mẫu cấu hình của cả tám nhà cung cấp cần cấu hình — AI tích hợp của Chrome, Google, Apps Script, DeepL, Ollama, tương thích OpenAI, OpenRouter và Claude — cộng thêm năm hàng công tắc. Trang tùy chọn nằm ngay cạnh chỉ nặng 7.621 byte. Chưa tới một nửa, mà chính nó mới là nơi còn thừa chỗ.
Đó là kiến trúc thông tin bị lộn ngược, và không cỡ chữ nào chữa được. Một cửa sổ bật lên trên thanh công cụ tồn tại để trả lời đúng một câu hỏi, thứ mà chúng tôi bắt đầu gọi là câu hỏi một cái liếc : nó có đang bật không, và nó sẽ làm gì trên trang này? Bạn phải có câu trả lời trong chưa đầy một giây, không cần cuộn, rồi đóng lại.
Telli.sh: Every Translator 1.16 đã được gửi lên Chrome Web Store ngày 4 tháng 9 năm 2026 và đang chờ duyệt vào lúc bài này lên. Phiên bản này trả lời câu hỏi một cái liếc bằng một bản vẽ.
TL;DR
- Cửa sổ bật lên giờ là khung trạng thái. Rộng 372 pixel, cao tối đa 560, không cuộn. Trong đó không có lấy một ô nhập thông tin đăng nhập — chúng tôi đã đếm, đúng nghĩa đen là con số không.
- Nó vẽ bản thu nhỏ của trang bạn đang mở, với các đường chỉ dẫn chạy từ từng bộ phận của bản mô phỏng tới một thẻ có nhãn: ngôn ngữ, kiểu hiển thị, xem trước khi gửi, nhà cung cấp, trợ giúp nhập liệu. Bản mô phỏng phản chiếu đúng thứ tiện ích thật sự vẽ ra, tới tận khoảng cách 8 pixel giữa nút nổi và ô soạn thảo.
- Xanh nghĩa là đã xác nhận, không phải "ô đã được tích". Ba trạng thái: xanh cho "đang chạy trên tab này", hổ phách cho "đã bật, chưa xác nhận", xám cho "đang tắt".
- Dịch tức thì và Lịch sử là tab thứ hai và thứ ba. Mục lịch sử không ghim sẽ hết hạn 30 ngày sau khi tạo; mục đã ghim thì không.
- Một chuông thông báo mang blog của chúng tôi đến bằng ngôn ngữ trình duyệt của bạn, đọc từ nguồn RSS riêng cho từng ngôn ngữ, qua 15 phiên bản. Nếu bạn muốn biết có bài mới mà không phải ghé trang web, cái chuông đó giờ là cách rẻ nhất.
- Mọi thứ cần cấu hình đều nằm ở trang cài đặt, và trang đó cho bạn xem một bản thu nhỏ hoạt động thật của từng kiểu hiển thị thay vì mô tả bằng một câu.
Cửa sổ bật lên đã buông phần cài đặt, và thay đổi chỉ có vậy
Đứng sau bản 1.16 là một quyết định duy nhất: cấu hình đi ra, trạng thái đi vào. Biểu tượng bánh răng trên đầu cửa sổ nhảy thẳng tới đúng mục trên trang cài đặt, nên chẳng thứ gì trở nên khó với tới hơn — chúng chỉ thôi đứng chắn đường tới câu trả lời.
Phần còn lại trong cửa sổ được giữ ít một cách có chủ ý. Một thanh đầu với tên trang web và công tắc bật/tắt riêng cho trang đó, bởi "tắt ở đây, trên trang này" là thao tác về trạng thái chứ không phải một cài đặt. Một cái chuông. Một bánh răng. Và phần thân.
Phần thân mới là thứ đáng nói.
Khung trạng thái là bản vẽ giải phẫu của chính trang bạn đang xem
Mở cửa sổ trên một trang trò chuyện, bạn sẽ thấy khung dây của chính trang đó: hai bong bóng tin nhắn, ô soạn thảo ở dưới, nút nổi Telli.sh đậu ngay trên nó, và cao hơn nữa là bảng xem trước. Các thanh xám thay chỗ cho chữ. Từ năm điểm trên bản mô phỏng ấy, những đường chỉ dẫn mảnh chạy sang trái, tới một cột thẻ có nhãn.
Mỗi thẻ gọi tên một thứ và cho biết giá trị hiện tại của nó:
| Thẻ | Trỏ vào đâu | Hiển thị gì |
|---|---|---|
| Ngôn ngữ | bong bóng tin nhắn | ngôn ngữ bạn đọc → ngôn ngữ bạn gửi đi, ví dụ English → Auto-detect |
| Hiển thị | bản dịch dưới bong bóng | Chú thích nội dòng, Song ngữ, Nhấp để mở rộng, Nhấp để chuyển đổi |
| Xem trước khi gửi | các nút trên bảng | Bật hoặc Tắt |
| Nhà cung cấp | nút nổi | nhà cung cấp nào trong chín cái đang được chọn |
| Trợ giúp nhập liệu | ô soạn thảo | ngôn ngữ đích, hoặc Tắt |
Các thẻ xếp từ trên xuống theo đúng thứ tự các bộ phận mà chúng trỏ tới, nhờ vậy đường chỉ dẫn không bao giờ cắt nhau. Vị trí dọc của chúng không viết cứng trong mã mà được đo lúc vẽ: những thẻ có vị trí lý tưởng chồng lên nhau sẽ được gộp thành một cụm, rồi cụm đó được căn giữa, để sai số căn chỉnh chia đều thay vì dồn hết vào thẻ cuối. Rê chuột lên một thẻ sẽ làm nổi bật bộ phận tương ứng trong bản vẽ.
Và đây là điểm mấu chốt. Một danh sách cài đặt nói với bạn displayMode: bilingual . Một bản vẽ nói với bạn bản dịch sẽ hiện ra ở chỗ nào trên trang bạn đang nhìn . Bản mô phỏng cũng không phải hình minh họa cách điệu: nó chép lại đúng hình học mà tập lệnh nội dung dùng. Nút nổi nằm cao hơn mép trên ô soạn thảo 8 pixel, canh phải; bảng xem trước rộng 350 pixel nằm cao hơn nút thêm 8 pixel, cùng cách canh. Cửa sổ dạy bạn giao diện thật, không phải một câu chuyện dễ chịu về nó.
Chấm xanh phải có nghĩa, nên chúng tôi làm cho nó đắt
Các công tắc cũ thể hiện ý định. Bạn thấy công tắc đang bật mà vẫn không biết có gì đang được dịch không, khóa API của bạn đã được chấp nhận chưa, hay trang này có được hỗ trợ hay không.
Vì thế bản 1.16 tiêu màu xanh rất dè sẻn. Có ba trạng thái, và mỗi trạng thái là một khẳng định mà tiện ích sẵn sàng bảo vệ:
- Xanh — "Đang chạy trên tab này". Tiện ích xác nhận được điều đó ngay lúc này.
- Hổ phách — "Đã bật, chưa xác nhận". Cài đặt đang bật và thông tin đăng nhập đã có, nhưng chưa có gì chứng minh vòng gửi–nhận thật sự chạy được.
- Xám — "Đang tắt". Hoặc đã tắt, hoặc một ô bắt buộc còn trống, mà rốt cuộc cũng như nhau: sẽ không có gì được dịch.
Thẻ nhà cung cấp là trường hợp nghiêm ngặt. Chỉ hai nhà cung cấp có thể giành được màu xanh. Chế độ Google Dịch miễn phí không cần thông tin đăng nhập và luôn kết nối được, nên nó xanh. AI tích hợp chạy trên máy của Chrome chỉ chuyển xanh sau khi cửa sổ thật sự hỏi Translator.availability() về cặp ngôn ngữ của bạn và nhận được câu trả lời dùng được. Tất cả những cái còn lại — DeepL, Claude, OpenRouter, Ollama, một điểm cuối tương thích OpenAI, Apps Script, API của Google — đứng ở hổ phách ngay khi đã có URL hoặc khóa, bởi xác minh chúng đồng nghĩa với việc tiêu hạn mức của bạn cho một lệnh gọi thử mỗi lần bạn mở cửa sổ. Nếu ô bắt buộc còn trống thì là xám, không phải hổ phách. Tiện ích sẽ không nói với bạn rằng thứ gì đó đang bật khi nó biết thứ đó không thể chạy.
Đây là một quy tắc cố tình không đẹp mặt. Phần lớn người dùng ở cấu hình mặc định sẽ thấy một chấm xanh ở nhà cung cấp; phần lớn người dùng API trả phí sẽ thấy hổ phách mãi mãi. Hổ phách thì thật thà, và chúng tôi thà phát hành thứ thật thà còn hơn phát hành màu xanh.
Dịch tức thì: một tab cho đoạn chữ không có trang nào
Mọi điều ở trên đều giả định bạn đang ở một trang được hỗ trợ. Thường thì không: ai đó dán một đoạn vào phiếu hỗ trợ, hoặc bạn chép một câu ra từ tệp PDF.
Dịch tức thì là tab thứ hai của cửa sổ, làm ra đúng cho việc đó. Chọn ngôn ngữ nguồn và đích, dán tối đa 2.000 ký tự, nhận bản dịch, sao chép. Giữa hai ô chọn có một nút đảo chiều.
Nó không phải bộ dịch thứ hai ngồi cạnh bộ thứ nhất. Yêu cầu đi qua đúng hàng đợi nền, đúng bộ nhớ đệm và đúng nhà cung cấp mà mọi bản dịch trên trang đều dùng, nên thứ bạn cấu hình một lần cũng áp dụng ở đây. Và nó mặc định tắt — instantTranslateEnabled khởi đầu ở false — bởi việc của cửa sổ là câu hỏi một cái liếc, còn một tờ nháp bạn chưa từng yêu cầu chỉ là thêm một thứ chắn giữa bạn và câu trả lời. Bật nó trong cài đặt thì cửa sổ mọc ra dải tab; để tắt thì cửa sổ vẫn là một khung trạng thái duy nhất.
Lịch sử tự dọn dẹp: 30 ngày, trừ khi bạn ghim lại
Bật dịch tức thì lên thì bên cạnh xuất hiện tab Lịch sử, giữ những gì bạn đã dịch ở đó, mới nhất trước, chỉ trên máy này.
Quy tắc lưu giữ gói gọn một dòng: mục không ghim hết hạn 30 ngày sau khi tạo; mục đã ghim thì không bao giờ hết hạn. Ghim lại câu bạn cứ phải dùng đi dùng lại, nó sẽ ở lại. Phần còn lại tự già đi rồi biến mất.
Có hai chi tiết cài đặt đáng nói ra, vì chúng thay đổi thứ bạn có thể trông cậy. Việc dọn dẹp diễn ra lúc đọc danh sách, không phải theo bộ đếm giờ chạy nền: cửa sổ là thứ duy nhất từng đọc danh sách này, nên một báo thức cũng chẳng xóa được gì sớm hơn so với chính việc bạn mở cửa sổ. Và bỏ ghim một mục đã quá 30 ngày chính là hành động xóa nó: cái ghim là thứ duy nhất chặn hạn, và lần đọc kế tiếp sẽ dọn nó đi.
Làm hàng rào chắn còn có giới hạn cứng 200 mục. Nếu chạm tới, các mục đã ghim được giữ lại, còn mục không ghim cũ nhất ra đi trước. Đầu tab có nút xóa toàn bộ.
Cái chuông chính là blog của chúng tôi, bằng ngôn ngữ của bạn
Đây là phần chúng tôi mong bạn để ý nhất, vì nó là phần duy nhất tiếp tục làm việc sau khi bạn đóng tab.
Thanh đầu của cửa sổ có một chuông thông báo. Nó hiện các bài trên blog Telli.sh: tối đa ba bài xếp chồng thành thẻ trong khung trạng thái, danh sách đầy đủ nằm sau cái chuông, và một dấu chưa đọc trên biểu tượng. Mọi bài đều mở ra trên telli.sh.
Nguồn tin được tách riêng theo từng ngôn ngữ. Tiện ích đọc ngôn ngữ giao diện của trình duyệt, đối chiếu với 15 phiên bản ngôn ngữ mà blog xuất bản — tiếng Anh, Hàn, Nhật, Trung, Đức, Pháp, Tây Ban Nha, Ý, Bồ Đào Nha, Nga, Ba Lan, Việt, Thái, Indonesia và Mã Lai — rồi tải nguồn RSS của ngôn ngữ đó. Nếu trình duyệt của bạn đặt tiếng Thái, thông báo về bằng tiếng Thái. Nếu ngôn ngữ trình duyệt không nằm trong 15 thứ tiếng đó, bạn nhận tiếng Anh. Cả hai biến thể tiếng Trung đều dồn về cùng một nguồn tiếng Trung.
Cơ chế được dựng lên để không làm phiền bạn. Nguồn tin do chính cửa sổ tải về, không bao giờ do báo thức chạy nền, và được phục vụ từ bộ nhớ đệm trước — nên các thẻ đã vẽ xong trước cả khi động tới mạng. Bộ nhớ đệm sống 6 giờ, đủ để một bài mới nổi lên trong vòng một ngày làm việc, đồng thời gộp cả một ngày mở cửa sổ — vốn là hàng chục lần — thành nhiều nhất bốn yêu cầu mạng. Tối đa 12 mục được giữ lại. Một lần làm mới thất bại không bao giờ hất đi bộ nhớ đệm còn tốt; chuỗi dự phòng đi từ nguồn trực tiếp sang bộ nhớ đệm, rồi tới một thẻ Telli.sh thường trực, rồi tới chỗ không hiện gì cả.
Bài đã gạt đi thì ở yên chỗ đã gạt. Danh tính của mỗi mục lấy từ chính URL của bài, bỏ phần chuỗi truy vấn — các tham số theo dõi trên những đường dẫn đó là của chúng tôi, không phải của bài viết — nhờ vậy bài đã gạt không mọc lại khi nguồn tin làm mới và đảo thứ tự.
Nếu bạn vẫn định theo dõi những gì chúng tôi viết về dịch cuộc họp và nhận dạng giọng nói mà mãi chưa làm: cài tiện ích, các bài sẽ tự đến thanh công cụ, bằng ngôn ngữ của bạn, mỗi lần ba bài.
Cài đặt mà bạn nhìn thấy được trước khi chốt
Trang cài đặt đã lớn lên thành đúng bề mặt lẽ ra phải gánh sức nặng này, và ý tưởng chính của nó là bạn không nên phải tưởng tượng một kiểu hiển thị.
Ngay dưới ô chọn kiểu hiển thị là một bản thu nhỏ sống động — cùng thứ ngôn ngữ khung xương xám như bản vẽ trong cửa sổ — cho thấy một bong bóng tin nhắn với bản dịch được vẽ đúng theo cách kiểu đó vẽ. Chuyển từ Chú thích nội dòng sang Song ngữ, sang Nhấp để mở rộng, sang Nhấp để chuyển đổi, bản thu nhỏ đổi theo bạn. Xem trước khi gửi, trợ giúp nhập liệu và dịch tức thì cũng có các bản trình diễn tương tự, mỗi cái kèm một dòng chú thích thay đổi theo cài đặt thay vì mô tả trừu tượng.
Mục nhà cung cấp thôi bắt bạn phải thuộc lòng mã định danh mô hình. Danh sách mô hình của Ollama lấy từ /api/tags trên máy chủ nội bộ của bạn; các điểm cuối tương thích OpenAI đọc từ {URL gốc của bạn}/models ; OpenRouter và Anthropic lấy từ danh mục riêng của họ. Ở đâu API công bố giá theo token, ô chọn hiển thị giá đó, quy đổi ra mức trên một triệu token. OpenRouter ghi giá dưới dạng những con số kiểu 0.0000001 , mà ở thang đó thì không ai đọc nổi. Không có gì về giá được viết cứng, ước lượng hay nhớ lại giữa hai lần làm mới, nên một mức giá cũ rích là điều bất khả về mặt cấu trúc: danh mục không có giá thì ô chọn cũng không hiện giá.
Danh sách trang được hỗ trợ từng là một cột phẳng 30 mục, chẳng cách nào lướt nổi. Giờ nó được gom vào 8 nhóm: Trò chuyện và email (7 trang), Mạng xã hội (3), Cộng đồng và diễn đàn (4), Lập trình (5), Wiki và tra cứu (2), Blog và bản tin (3), Tin tức (4), Bình luận và đánh giá (2), kèm dòng "Thiếu trang nào không? Hãy đề nghị chúng tôi thêm vào" ở cuối. Đây là lần đầu tiên tiện ích mở ra một lối đi cho việc đó.
Và giờ đã có phần hướng dẫn lần chạy đầu. Khi cài đặt — và chỉ khi cài đặt, gắn với lý do install của Chrome nên bản cập nhật không bao giờ kích hoạt — ba bước sẽ nói cho bạn tiện ích làm gì, hai cài đặt nào quyết định mọi thứ còn lại, và nút trên thanh công cụ nằm ở đâu. Hai trong ba bước rọi sáng đúng các điều khiển thật trên trang, thay vì đưa ra ảnh chụp một nút rồi để bạn tự đi tìm.
Chốt lại: cửa sổ bật lên trên thanh công cụ là đèn báo, không phải bảng điều khiển
Sai lầm của cửa sổ cũ không phải là xấu hay là phải cuộn. Sai lầm là đối xử với một bề mặt một giây như một mặt bàn làm việc. Bạn không thể cấu hình tám nhà cung cấp trong một cái hộp rộng 372 pixel, và bạn cũng không nên phải cuộn qua nỗ lực ấy chỉ để biết có thứ gì đang chạy hay không.
Bản 1.16 tách hai công việc đó ra gọn gàng. Trang cài đặt là nơi bạn quyết định, một lần, kèm hình ảnh cho thấy mỗi quyết định trông ra sao. Cửa sổ bật lên là nơi bạn xác nhận quyết định đó đang có hiệu lực, trong chưa đầy một giây, trên trang này, ngay bây giờ. Nếu chúng tôi làm đúng, bạn sẽ mở cửa sổ thường xuyên hơn và ở lại trong đó ngắn hơn.
Phiên bản 1.16 tính đến ngày 4 tháng 9 năm 2026 đang chờ duyệt trên Chrome Web Store. Sau khi được duyệt, nó sẽ đến dưới dạng bản cập nhật tự động.
Telli.sh nằm ở đâu trong bức tranh này: tiện ích lo phần chữ nhanh — trò chuyện, bài đăng, bình luận, email, chủ đề diễn đàn — trên 30 trang, với 52 ngôn ngữ đọc và 9 nhà cung cấp dịch, giao diện phát hành bằng 50 thứ tiếng. Telli.sh lo nửa còn lại: phần được nói ra. Nó ghi âm hoặc nhận vào một cuộc họp, chép lại đúng ngôn ngữ đã thật sự được nói, dịch sang 44 ngôn ngữ đích, và giữ văn bản gốc, bản dịch khớp dòng cùng bản tóm tắt do AI tạo trong cùng một ghi chú có thể chỉnh sửa. Cùng một ý tưởng ở cả hai nơi: đặt bản dịch cạnh bản gốc và giữ lại bản gốc.
Bắt đầu ghi chú cuộc họp có dịch trực tiếp
Nguồn
- Telli.sh: Every Translator trên Chrome Web Store — trang niêm yết mà gói 1.16 được gửi lên ngày 4 tháng 9 năm 2026.
- Trang sản phẩm Telli.sh: Every Translator — các trang web được hỗ trợ, kiểu hiển thị, nhà cung cấp và các cam kết về quyền riêng tư, gom về một chỗ.
- Telli.sh: Every Translator đã có trên Chrome Web Store, ngày 23 tháng 6 năm 2026 — bài ra mắt ban đầu, để đối chiếu tiện ích trước lần thiết kế lại này.
- Mã nguồn tiện ích,
extension/docs/UX_REDESIGN_PLAN_2026-09-04.md, ngày 4 tháng 9 năm 2026 — bản rà soát sinh ra sáu giai đoạn phát hành trong lần này, gồm cả phép đo 16.936 byte cửa sổ so với 7.621 byte trang tùy chọn và quyết định rằng màu xanh nghĩa là đã xác nhận.