Biên bản thay đổi

Tất cả các thay đổi đáng chú ý của VelaTerm, xếp theo thứ tự mới nhất.

Phiên bản v0.1.91 là phiên bản công khai đầu tiên; các phiên bản trước đó chỉ là các bản thử nghiệm nội bộ nên không được đề cập.

v0.1.108

Mới nhất
  • Chế độ hội thoại thử nghiệm cho Claude, Codex và OpenCode, với phản hồi truyền trực tiếp, quá trình suy luận, chi tiết công cụ, phê duyệt quyền và biểu mẫu câu hỏi. Cấu hình mới vẫn mặc định dùng chế độ terminal.

  • Các điều khiển hội thoại hỗ trợ thiết lập mô hình, hàng đợi tin nhắn, chen lời, tự động hoàn thành tệp và ảnh đính kèm tùy theo khả năng của từng bộ máy.

  • Tìm kiếm hội thoại, liên kết tệp, thao tác với ảnh và phông chữ riêng giúp đọc phiên dài dễ hơn. Lịch sử từ xa được tải dần; chi tiết công cụ được lấy khi cần.

  • Biên nhận gửi tin giúp đối chiếu kết quả sau khi mất kết nối. Những lần gửi chưa rõ kết quả vẫn chờ xác nhận và không tự động gửi lại.

  • Các lệnh mới vrefervsearch đọc và tìm kiếm các phiên khác; vrefer --ask giao việc đọc cho tác nhân. vorchvstat bổ sung điều phối nhiều tác nhân và tra cứu trạng thái.

  • Mục bộ nhớ hỗ trợ nhãn, chỉnh sửa trực tiếp nội dung, bảo vệ thay đổi chưa lưu và thiết lập sắp xếp. Cải thiện bộ lọc, lựa chọn khi nhập lịch sử và điều hướng đồ thị.

  • Ứng dụng khách chia sẻ công khai hỗ trợ liên kết tài khoản và thiết bị, truy cập phiên AI theo phạm vi và kết nối chuyển tiếp mã hóa. Chưa hỗ trợ khách tải ảnh lên hoặc biểu mẫu MCP phức tạp.

  • ID tiếp tục Codex được đối chiếu với lịch sử đã lưu. Khi xác nhận lịch sử bị thiếu, ứng dụng báo lỗi rõ ràng thay vì âm thầm mở phiên trống; vẫn có thể kết nối lại terminal đang chạy.

  • Phạm vi hoàn tác tuân theo khả năng của bộ máy: Codex chỉ hoàn tác hội thoại, không khôi phục tệp. Xử lý phạm vi hoàn tác và kiểm tra trước thư mục của OpenCode vẫn còn hạn chế đã biết.

  • Việc tăng phiên bản phát hành giữ nguyên các phiên bản phụ thuộc đã khóa. Kiểm thử cài đặt, nâng cấp đa nền tảng và nghiệm thu tích hợp AI thực tế vẫn chưa thực hiện; kiểm tra tự động không thay thế các bước này.

v0.1.107

Mới nhất
  • 🧠 Bộ nhớ toàn cục (thử nghiệm): Claude hoặc Codex biến các cuộc hội thoại thành một wiki dùng chung, sắp xếp theo chủ đề
  • 🕸️ Đồ thị mã nguồn (thử nghiệm): lập chỉ mục một thư mục làm việc, duyệt quan hệ giữa các ký hiệu và liên kết chúng với bộ nhớ
  • 🔎 Tác nhân có thể tra cứu mã nguồn và bộ nhớ ngay trong phiên bằng vknowledge
  • 🖥️ SSH có thể phản chiếu ứng dụng máy tính ở máy từ xa: cùng thẻ, cùng khung chia và cùng phiên đang hoạt động trên cả hai máy
  • 🪟 Máy từ xa của kết nối SSH giờ có thể là Windows
  • 📥 Nhập các phiên Codex, Claude và OpenCode đã có trong thư mục dự án
  • 🤖 Tác nhân mới: OMP
  • 🎚️ vspawn cho phép chọn mô hình và mức độ suy luận cho phiên con
  • 🌿 vspawn-tree dùng được trong collection, và các phiên worktree đang chạy hiển thị biểu tượng nhánh
  • 🔤 Tìm kiếm ưu tiên khớp trọn từ và làm nổi bật đúng phần đã khớp
  • 🖱️ Nhấn chuột giữa vào thẻ để đóng thẻ đó
  • ⌨️ Trình duyệt trên macOS: ⌘D và ⌘⇧D chia khung
  • 💬 Gõ bằng bộ gõ không còn làm màn hình xê dịch, và con trỏ hiện rõ trong chuỗi đang soạn
  • 🪓 Lệnh chia khung từ menu chỉ tác động lên cửa sổ đang được chọn, và mọi lần chia đều được ghi vào logs/split.log
  • 📁 Hộp thoại chọn thư mục từ xa giữ nguyên đường dẫn bạn nhập
  • ℹ️ Bảng thông tin: thời điểm khởi động và thời gian chạy nằm trên cùng một dòng, macOS có thêm tải trung bình
  • 🔑 Ô mật khẩu không còn hiện nút hiển thị của chính trình duyệt

v0.1.106

Mới nhất

Không gian làm việc

  • Thanh bên đã có collections: các vùng chứa cấp cao nhất không gắn liền với thư mục nào trên ổ đĩa. Một số phiên làm việc vốn không thuộc về bất kỳ kho lưu trữ (repository) nào — chẳng hạn như các phiên từ xa, trang trình duyệt, hay một terminal mở ra chỉ để thử nghiệm thứ gì đó. Trước đây, nơi duy nhất để chứa chúng là bên trong một dự án, khiến chúng trở nên lạc lõng. Collection là một hàng độc lập có tên riêng và không liên kết với thư mục nào trên ổ đĩa. Vì không có thư mục gốc của dự án, các tác vụ không liên quan sẽ được ẩn ngay từ đầu thay vì báo lỗi sau khi nhấn vào: "New Worktree Session", "Move to Worktree…" và bộ chọn worktree trong hộp thoại tạo phiên mới đều được ẩn đối với collection thay vì báo lỗi khi nhấp vào. Thay vào đó, hộp thoại tạo phiên mới bổ sung trường Working directory với giá trị mặc định là thư mục chính của bạn (home directory), đi kèm bộ chọn thư mục gốc của hệ thống trên máy tính. Các phiên được khởi động mà không chỉ định thư mục giờ đây sẽ bắt đầu tại thư mục chính thay vì kế thừa đường dẫn khởi chạy của ứng dụng (vốn là / trên macOS).

  • Bảng Resources hiển thị thông số của toàn bộ máy, không chỉ riêng phiên hiện tại. Trước đây, bảng này chỉ báo cáo mức sử dụng CPU và bộ nhớ cho cây tiến trình của chính phiên đó, khiến bạn không thể biết phiên làm việc đang ngốn hết tài nguyên hay do máy vốn đã bị quá tải. Bảng này hiện được chia thành hai phần: THIS SESSION và SYSTEM. Mục SYSTEM hiển thị các thanh tiến trình cho CPU, bộ nhớ và swap (chuyển sang màu vàng hổ phách khi vượt quá 70% và màu đỏ khi trên 90%), cùng với một dòng thông số riêng cho từng nền tảng: áp lực bộ nhớ (memory pressure) trên macOS, mức tải trung bình được chuẩn hóa theo số lõi (load averages) trên Linux, và không hiển thị gì trên Windows (do không có chỉ số tương đương). Nếu chỉ quan tâm đến phiên làm việc của mình, bạn có thể bỏ chọn "system" ở đầu bảng — các hàng hệ thống sẽ biến mất và quá trình thu thập dữ liệu ngầm sẽ dừng hoàn toàn. Tùy chọn này được ghi nhớ và áp dụng cho bảng tài nguyên của mọi phiên làm việc.

  • Windows và Linux đã có thanh menu, truy cập bằng phím Alt. macOS có sẵn hệ thống menu gốc, nhưng trên Windows và Linux, các mục cài đặt, kiểm tra cập nhật và chia khung hình trước đây chỉ có thể truy cập qua biểu tượng trên thanh tiêu đề. Giờ đây, chỉ cần nhấn rồi thả phím Alt là có thể bật/tắt thanh menu. Các tổ hợp phím có Alt vẫn không bị ảnh hưởng — vì Alt đóng vai trò là tiền tố Meta trong terminal, các phím tắt như Alt+B và Alt+F tiếp tục được chuyển trực tiếp đến shell; chỉ khi nhấn phím Alt đơn lẻ (vốn không gửi gì tới terminal) thì menu mới được kích hoạt. Thanh menu bao gồm File (cài đặt, kiểm tra cập nhật), Terminal (terminal mới, chia sang phải, chia xuống dưới) và Help (trang web, phản hồi, chia sẻ), đồng thời hiển thị gợi ý phím tắt dựa trên các tổ hợp phím tùy chỉnh của bạn. Thanh menu hỗ trợ điều hướng bằng cả chuột lẫn bàn phím: nhấn Esc sẽ đóng menu đang mở, sau đó ẩn thanh menu và đưa tiêu điểm trở lại terminal.

  • Mục "Clear notification badges" trong menu xóa huy hiệu thông báo mà trước đây không có cách nào tắt được. Huy hiệu trên thanh dock đếm tổng số phiên chưa đọc cộng với các thẻ xác nhận tạo phiên (spawn) chưa được trả lời. Tuy nhiên, nút xóa trên thanh bên trước đây chỉ xuất hiện khi có phiên chưa đọc và cũng chỉ xóa được những phiên đó. Nếu còn sót lại một thẻ nhắc chưa phản hồi — chẳng hạn như từ một cửa sổ đã đóng hoặc một phiên đã bị xóa khiến thẻ không thể hiển thị được nữa — huy hiệu thanh dock sẽ hiển thị số 1 mà không có cách nào tắt đi. Mục menu mới này sẽ đánh dấu tất cả các phiên là đã đọc, giải quyết mọi yêu cầu tạo phiên đang chờ bằng cách từ chối, và trực tiếp đặt số đếm huy hiệu của hệ điều hành về 0. Điều này đặc biệt quan trọng trên macOS, nơi số lượng huy hiệu trên thanh dock vẫn được giữ nguyên ngay cả khi khởi động lại ứng dụng.

  • Cửa sổ không còn bị đơ khi các lệnh đọc tệp hoặc chờ hệ thống phản hồi. Các lệnh Tauri đồng bộ chạy trên luồng chính (main thread), khiến giao diện người dùng bị treo trong toàn bộ thời gian xử lý. Qua rà soát toàn bộ 43 lệnh, phát hiện có 13 lệnh thực hiện I/O ngay trên luồng chính: yêu cầu cấp quyền thông báo trên macOS có thể chặn giao diện tới một phút để chờ người dùng xác nhận; việc đọc bản ghi của các phiên chạy lâu phải quét hàng chục megabyte theo từng khối 64 KB; dán ảnh chụp màn hình ghi trực tiếp vào ổ đĩa; và lấy thư mục làm việc của một phiên phải gọi lệnh lsof. Toàn bộ 13 lệnh này hiện đã được chuyển ra khỏi luồng chính. Việc xử lý phím bấm vẫn được giữ trên luồng ưu tiên tốc độ cao (fast path), không có gì thay đổi.

Truy cập từ xa

  • Máy chủ (Host) hiện đã hiển thị các máy khách (Client) từ xa đang kết nối. Do tính năng phản chiếu phiên làm việc (session mirroring) là hai chiều, máy khách từ xa có thể sắp xếp lại bố cục của máy chủ — thế nhưng trước đây máy chủ không có cách nào biết được liệu có ai đang kết nối hay không, chứ chưa nói đến việc biết đó là ai. Thanh tiêu đề giờ đây hiển thị huy hiệu "Mirrored by N"; nhấp vào huy hiệu sẽ hiện danh sách các máy khách đang kết nối cùng với tên, địa chỉ IP và dấu thời gian kết nối của họ. Tên máy khách được gửi trong quá trình bắt tay mã hóa (nếu không có tên sẽ mặc định là "Unnamed").

Tác nhân AI

  • Mức sử dụng tài khoản được lấy một lần cho mỗi máy thay vì cho từng phiên. Giới hạn sử dụng gắn liền với tài khoản, nhưng trước đây bảng Info của mỗi phiên lại gửi yêu cầu lấy dữ liệu một cách độc lập. Mở mười phiên đồng nghĩa với việc gửi mười yêu cầu trùng lặp cho cùng một con số — thường xuyên kích hoạt giới hạn tần suất nghiêm ngặt (rate limit) của Claude và làm bảng thông tin bị trống. Hiện tại, một trình thăm dò (poller) tập trung ở phía backend sẽ duy trì một bản chụp dữ liệu (snapshot) duy nhất để tất cả các phiên cùng đọc, đồng thời phát thông báo cập nhật bất cứ khi nào dữ liệu thay đổi. Trình này chỉ thăm dò các nhà cung cấp bạn thực sự sử dụng — được nhận diện qua sự tồn tại của ~/.claude, ~/.codex hoặc ~/.grok/auth.json — mà không chạm vào keychain của hệ thống để tránh các hộp thoại xin quyền không cần thiết. Bản chụp được lưu vào ổ đĩa để bảng điều khiển có thể hiển thị số liệu đã lưu trong bộ nhớ đệm ngay khi khởi động lại mà không cần đợi lần thăm dò đầu tiên. Đánh thức máy tính xách tay từ chế độ ngủ cũng sẽ làm mới dữ liệu ngay lập tức thay vì phải chờ đến chu kỳ tiếp theo. Khi gặp lỗi thăm dò liên tiếp, thời gian chờ sẽ tự động giãn cách (back off) lên đến 8 lần. Trong phần Settings, chu kỳ làm mới giờ đây có thêm công tắc bật/tắt rõ ràng bên cạnh ô nhập thời gian, thay thế cho cài đặt 0 giây gây khó hiểu trước đó.

  • Các lần làm mới mức sử dụng bị lỗi được đánh dấu rõ là dữ liệu cũ thay vì hiển thị như bình thường. Trước đây, khi một yêu cầu làm mới thất bại, client vẫn âm thầm trả về bản sao lưu trong bộ đệm nhưng lại ghi nhận là làm mới thành công — tự động tăng mốc thời gian, xóa lỗi và đặt lại bộ đếm thời gian giãn cách. Khi chạm giới hạn tần suất, điều này khiến bảng thông tin trông có vẻ vẫn ổn định dù thực tế vẫn tiếp tục thăm dò mỗi năm phút một lần. Giờ đây, các yêu cầu thất bại vẫn giữ lại giá trị trong bộ nhớ đệm nhưng sẽ hiển thị huy hiệu màu vàng stale bên cạnh nhà cung cấp. Di chuột qua huy hiệu sẽ hiện chú giải công cụ (tooltip) cho biết thời điểm lỗi, lý do lỗi và thời gian đã trôi qua kể từ số liệu hiển thị đó. Dấu thời gian "Updated" phản ánh lần đồng bộ thành công gần nhất, và các yêu cầu retry-after từ máy chủ bị giới hạn tần suất cũng được tuân thủ, mặc dù việc làm mới thủ công vẫn sẽ kích hoạt ngay lập tức.

  • Hạn ngạch hàng tuần cho từng mô hình đã xuất hiện trong bảng mức sử dụng. Bên cạnh các giới hạn 5 giờ và 7 ngày trên toàn tài khoản, endpoint đo lường mức sử dụng còn báo cáo hạn ngạch hàng tuần riêng cho từng mô hình. Trước đây những số liệu này bị bỏ qua, đồng nghĩa với việc người dùng làm việc với các mô hình như Fable chỉ thấy tổng mức sử dụng của tài khoản chứ không xem được hạn mức còn lại cho từng mô hình cụ thể. Các hàng chi tiết này hiện đã được hiển thị bên dưới phần tổng quan, được phân loại theo từng họ mô hình.

  • Mở lại một phiên OpenCode sẽ khôi phục lịch sử trò chuyện của phiên đó. Ứng dụng trước đây kiểm tra xem phiên có còn tồn tại hay không bằng lệnh opencode session list, vốn chỉ truy vấn các phiên trong thư mục làm việc hiện tại. Do ứng dụng máy tính chạy từ thư mục khởi chạy của nó (/ trên macOS), các ID phiên hiện có không bao giờ được tìm thấy, khiến các lần thử khôi phục đều âm thầm mở ra một phiên trắng. Việc kiểm tra phiên giờ đây truy vấn trực tiếp ID của phiên cụ thể đó và chỉ coi là đã bị xóa nếu lệnh xác nhận rõ ràng điều này. Các lỗi khác được xem là chưa xác định và ứng dụng vẫn sẽ tiếp tục khôi phục phiên, tránh việc vô tình làm mất lịch sử phiên làm việc.

Giao diện

  • Nhập liệu bằng bộ gõ (IME) giờ đây đã hiển thị văn bản đang soạn thảo. Văn bản soạn thảo bằng IME (như Pinyin hoặc Kana) trước đây hoàn toàn không nhìn thấy được cho đến khi nhấn Enter trên cả ba nền tảng. Nguyên nhân là do một quy tắc CSS tùy chỉnh: xterm kết xuất văn bản đang soạn thảo bên trong một khung chứa lớp phủ (overlay) không bị giới hạn, tại đó ràng buộc right mà chúng tôi thêm vào (nhằm ngắt dòng terminal dài) đã bị tính toán thành độ rộng bằng 0, trong khi overflow: hidden cắt bỏ hoàn toàn phần văn bản. Quy tắc đó hiện đã được gỡ bỏ, và điều duy nhất còn được ghi đè là bảng màu đen trên nền trắng mặc định của lớp phủ (vốn không khớp với bất kỳ theme nào). Một lỗi liên quan cũng được khắc phục cùng lúc: xterm đã mở rộng thẻ textarea ẩn của nó để khớp với kích thước lớp phủ phục vụ việc định vị danh sách ứng viên IME nhưng không bao giờ thu nhỏ lại, để lại một lớp phủ vô hình chặn các cú nhấp chuột và thao tác chọn văn bản trên dòng đó.

  • Trên macOS, các phím tắt Ctrl không còn kích hoạt phím tắt của Command. Việc kiểm tra phím bổ trợ trước đây coi Cmd và Ctrl có thể hoán đổi cho nhau trên macOS. Hậu quả là các phím tắt terminal tiêu chuẩn bị xung đột với phím tắt của ứng dụng: Ctrl+D (EOF) làm chia khung, Ctrl+W (xóa từ) làm đóng khung, và các phím tắt như Ctrl+F, Ctrl+T, Ctrl+O bị ứng dụng chặn lại. Do các khung mới được tạo trong im lặng, nên thường có cảm giác như các khung chia tự dưng xuất hiện. Ứng dụng máy tính trên macOS giờ đây chỉ sử dụng riêng phím Cmd cho các phím tắt, trong khi các nền tảng khác (cũng như trình duyệt web kết nối tới máy Mac) sử dụng riêng phím Ctrl.

  • Menu thả xuống không còn tự động mở lại ngay sau khi chọn một mục. Một phần tử <label> bao bọc bên ngoài đã truyền sự kiện nhấp chuột trên toàn hàng quay ngược lại nút kích hoạt, khiến menu thả xuống mở lại ngay khi một tùy chọn vừa được chọn.

Sửa lỗi

  • Linux: AppImage đã khởi động được trở lại. Bản AppImage 0.1.105 từng bị crash trên Ubuntu 22.04 trước cả khi cửa sổ xuất hiện do không thể khởi tạo các tiến trình trợ giúp của WebKit. Công cụ đóng gói AppImage ghi đè lại các đường dẫn /usr nguyên văn trong file thực thi thành ././ (để giữ nguyên độ dài chuỗi cho việc vá trực tiếp), đòi hỏi tập lệnh khởi chạy phải chuyển thư mục làm việc vào $APPDIR/usr để phân giải các đường dẫn đó. Trong bản 0.1.105, tập lệnh khởi chạy tùy chỉnh của chúng tôi — được đưa vào để ngăn rò rỉ biến môi trường vào các shell con — đã chuyển tiếp các biến môi trường nhưng lại bỏ sót việc chuyển đổi thư mục này. Trình khởi chạy giờ đây đã chuyển thư mục một cách chính xác, đi kèm với assertion lúc build để ngăn lỗi tái diễn. Phiên bản 0.1.104 trở về trước không bị ảnh hưởng.

  • Windows: thông báo đã phát lại âm thanh và nhấp vào thông báo sẽ chuyển ngay đến phiên tương ứng. Thông báo trên Windows trước đây đã gửi định danh âm thanh của macOS tới plugin thông báo. Vì không thể phân tích được tên này, nó bị chuyển thành chế độ im lặng — đồng nghĩa với việc thông báo trên Windows không bao giờ phát ra âm thanh bất kể cài đặt thế nào. Thông báo Windows đã được chuyển hướng qua plugin từ hai bản phát hành trước như một giải pháp tạm thời cho một vấn đề vốn đã được giải quyết trong chính bản phát hành đó. Đường vòng này hiện đã được gỡ bỏ: thông báo quay trở lại qua kênh gốc của hệ thống, khôi phục cả âm thanh lẫn khả năng nhấp để chuyển trực tiếp đến phiên làm việc.

  • Windows: các ký tự vẽ khung và ký tự khối đã thẳng hàng. Các khung viền trong terminal trước đây được kết xuất bằng phông chữ dự phòng có tỷ lệ thay đổi (proportional font), gây ra hiện tượng méo lệch hiển thị. Ngay cả sau khi đã khắc phục điều đó, các ký tự khối (dùng trong thanh tiến trình và linh vật Claude Code) vẫn để lại một khe hở dọc rất mảnh ở cạnh phải của mỗi ô do phông chữ dự phòng hẹp hơn một chút so với phông chữ terminal chính. Hiện tại, cả hai dải ký tự này đều được cung cấp bởi một tập hợp con đi kèm của phông JetBrains Mono, đảm bảo độ rộng ký tự (glyph) hoàn toàn trùng khớp.

  • Windows: git hoạt động bình thường trong bản Git Bash đầy đủ. Mặc dù việc cài đặt bản Git Bash đầy đủ đã thành công, nhưng khi chạy git trong terminal vẫn bị báo lỗi "command not found", liên tục nhắc người dùng cài đặt bản Git Bash đầy đủ. Git Bash chỉ thêm mingw64/bin vào PATH khi biết nó đang chạy trong cây thư mục nào. Do trình khởi chạy shell của chúng tôi đã bỏ qua tham số này, các file thực thi chỉ nằm trong thư mục đó — chẳng hạn như gitcurl — không thể được tìm thấy. Ngoài ra, hộp thoại nhắc tải xuống giờ đây sẽ tự động chọn trình cài đặt khớp với kiến trúc của máy đang dùng thay vì mặc định là 64-bit.

  • Windows: xóa worktree hoạt động bình thường và việc cài đặt lại hook Kiro không còn bị trùng lặp. Các lệnh xóa worktree trước đây được thực thi từ bên trong chính thư mục worktree đích. Vì Windows ngăn chặn việc xóa thư mục làm việc hiện tại của một tiến trình đang hoạt động, thao tác này liên tục thất bại với lỗi quyền truy cập; các lệnh Git giờ đây được thực thi từ thư mục gốc của kho lưu trữ chính. Ngoài ra, logic phát hiện hook trước đây so sánh đường dẫn dùng dấu gạch chéo xuôi với đường dẫn dấu gạch chéo ngược của Windows, dẫn đến việc kiểm tra thất bại và tự động thêm các mục hook bị trùng lặp mỗi khi cài đặt lại.

v0.1.105

Mới nhất

Không gian làm việc

  • Trạng thái phiên, dấu chưa đọc và việc một phiên còn đang chạy hay không giờ do backend quyết định, và mọi máy khách đều thấy cùng một câu trả lời. Trước đây mỗi máy khách tự suy ra những điều đó từ những gì nó tình cờ quan sát được, nên “chưa đọc” thực chất chỉ có nghĩa là “chưa đọc trong cửa sổ này”: đọc một phiên trên trình duyệt thì bản sao trên máy tính vẫn nằm đó ở trạng thái chưa đọc, và bộ lọc trạng thái tự mở rộng cứ đẩy dòng đó trở lại danh sách dùng chung, nơi ngay cả “Refresh status” cũng không gỡ nó đi được. Các sự kiện trạng thái cũng chỉ được đăng ký sau khi chính máy khách đó tạo ra một phiên, nên một trình duyệt vừa kết nối chỉ hiện chấm trạng thái cho những phiên nó đã mở, còn lại thì trống. Giờ backend giữ một bản ghi chuẩn duy nhất cho mỗi phiên — tác nhân, trạng thái của nó, tiến trình còn sống hay không, và cờ chưa đọc — trả lời một truy vấn hàng loạt khi máy khách kết nối hoặc kết nối lại, rồi phát mọi thay đổi tới tất cả. Máy khách báo cáo những gì chúng quan sát được; backend rút ra kết luận. Đọc một phiên trên điện thoại sẽ xóa dấu chưa đọc trên máy tính, một trình duyệt vừa kết nối hiện đúng chấm trạng thái cho cả những phiên nó chưa từng mở, và các quy tắc phân xử vốn nằm ở phía giao diện đã chuyển sang cùng với lý lẽ và các bài kiểm thử của chúng: một hook đã báo cáo dù chỉ một lần sẽ khóa mọi suy đoán rút ra từ đầu ra thô, đầu ra chảy liên tục chỉ được coi là bận với phiên có tác nhân, không phải Codex và chưa có báo cáo chuẩn nào, còn một khoảng giữ 1200ms giữ cho một tác vụ vừa khởi động không bị hủy bởi một sự kiện kết thúc đến ngay sau đó. Việc đọc màn hình là ngoại lệ, vì nó cần lưới ký tự đã vẽ ra mà thứ đó chỉ tồn tại trong máy khách: máy khách đang nắm kích thước terminal sẽ báo cáo những gì nó đọc được, còn backend quyết định có nhận hay không — báo cáo từ bất kỳ máy khách nào khác đều bị từ chối. Nếu có chỗ nào trục trặc, đặt vlx-arbitration thành frontend trong localStorage sẽ trả việc phân xử về chuỗi xử lý cũ ở phía giao diện.

  • Khởi động lại một phiên không còn đóng tab của nó trên máy khách kia. pty://killed không mang theo dữ liệu nào, nên bên kia không phân biệt được khởi động lại với đóng hẳn: nó coi mọi trường hợp đều là đóng, gỡ khung đó đi, rồi phản chiếu bố cục ấy ngược lại. Sự kiện này giờ cho biết máy khách nào đã kết thúc tiến trình và vì lý do gì, nên một lần khởi động lại sẽ giữ nguyên khung và chờ tiến trình mới đến. Lý do bị thiếu hoặc không nhận ra vẫn được tính là đóng — để hở một khung cho một phiên không bao giờ quay lại thì màn hình có một terminal đã chết, còn tệ hơn là đóng nhầm một khung sắp khởi động lại.

  • Một trình duyệt kết nối tới máy tính vừa khôi phục không gian làm việc không còn khởi động thật mọi phiên. Khôi phục một không gian làm việc chỉ vẽ ra các thẻ giữ chỗ chứ không khởi chạy tiến trình, nhưng quyết định đó chỉ tồn tại ở phía máy tính; trình duyệt đi theo bố cục được phản chiếu, không phân biệt được “không chạy” với “đang chạy, chỉ là chưa từng mở ở đây”, nên nó gắn các terminal vào — mà gắn một terminal vào chính là khởi chạy nó. Giờ một nút lá đến kèm bố cục của người khác sẽ hiện thẻ giữ chỗ khi backend nói rằng đằng sau nó không có tiến trình nào. Tự mình mở một phiên thì vẫn được hiểu là bạn muốn khởi động nó, và một terminal bạn đang nhìn thì không bao giờ bị thay bằng thẻ khi tiến trình của nó kết thúc, vì có thể bạn vẫn muốn đọc những gì nó đã in ra.

  • Một thay đổi cài đặt đến được các máy khách khác ngay lập tức. Backend xưa nay vẫn giữ bản cài đặt chuẩn, nhưng nó đổi cài đặt mà không báo cho ai, nên máy khách kia chỉ biết ở lần khởi chạy sau. Qua một kết nối từ xa thì đây không chỉ là chuyện hiển thị lệch nhau: tắt “tự mở rộng bộ lọc trạng thái” ở máy khách này chẳng có tác dụng gì khi máy khác vẫn tiếp tục thêm dòng vào danh sách dùng chung, còn máy khách có giới hạn tab sống nhỏ hơn thì dọn tab nền ngay dưới chân mọi người khác. Giờ việc ghi một cài đặt sẽ phát đi khóa nào vừa đổi, và mỗi máy khách đọc lại nó qua đúng con đường nó vẫn dùng lúc khởi động, nên các quy tắc che giá trị được bảo vệ khỏi bên gọi từ xa vẫn có hiệu lực — bản tin phát đi chỉ mang tên khóa, không bao giờ mang giá trị. Điện thoại, vốn trước đây không gửi cũng không nhận cài đặt, giờ cũng tham gia.

  • Trình duyệt chờ bố cục được phản chiếu rồi mới khôi phục bố cục của chính nó. Một cửa sổ từ xa có hai nguồn bố cục — một nằm trong localStorage của chính nó, một do máy chủ đẩy xuống khi bật chế độ phản chiếu — và cái nào đến trước thì bị cái kia ghi đè. Dựng cái cục bộ lên trước không chỉ tốn một cái nháy màn hình: gắn một nút lá terminal vào là khởi chạy một tiến trình thật, và với một phiên mà tiến trình đã chấm dứt từ trước thì điều đó nghĩa là mở ra một shell chẳng ai buồn nhìn, rồi nó cứ nằm đó, vì trình duyệt chỉ tách terminal ra chứ không kết thúc chúng. Giờ trình duyệt chờ lần đồng chỉnh đầu tiên xong xuôi mới khôi phục bất cứ thứ gì, tối đa hai giây; nếu backend chậm hoặc không với tới được thì nó quay về bố cục cục bộ chứ không ngồi trơ với một cửa sổ trống. Điện thoại, cùng mọi máy khách đã tắt phản chiếu, được cho đi thẳng.

Truy cập từ xa

  • Một kết nối SSH có thể bật chế độ phản chiếu cho dịch vụ mà nó khởi động. Công tắc này nằm trong bảng truy cập từ xa, nhưng SSH lại khởi động một dịch vụ không giao diện trên máy ở xa, mà ở đó thì chẳng có bảng nào để bấm. Giữ Option rồi nhấp “Connect remote”, biểu mẫu SSH giờ có thêm ô “Mirror UI across clients”, mặc định tắt. Giá trị này đi theo kết nối và chỉ nằm trong bộ nhớ của dịch vụ chứ không ghi vào cơ sở dữ liệu của máy ở xa: khi bạn đồng thời dùng lại chính cơ sở dữ liệu của máy tính ở xa đó, một kết nối SSH không nên âm thầm gạt một công tắc trên bảng của người khác. Lựa chọn được ghi nhớ theo từng máy, nên chọn lại cùng một máy trong lịch sử thì nó quay về. Việc dùng lại một dịch vụ đang chạy giờ đòi hỏi phiên bản, chế độ dữ liệu và chế độ phản chiếu phải khớp cả ba — chỉ cần một trong ba khác đi là dịch vụ cũ bị thay thế, kéo theo các phiên đang chạy trên đó kết thúc, nên tùy chọn này nằm sau phím Option, cùng chỗ với công tắc cơ sở dữ liệu.

  • Máy khách đang bị phản chiếu sẽ nói rõ điều đó. Trước đây tab và khung chia trên một máy khách đang đi theo cứ tự sắp xếp lại mà trên màn hình chẳng có gì giải thích thay đổi ấy từ đâu tới. Thanh tiêu đề giờ mang một huy hiệu Mirrored, di chuột lên sẽ có lời giải thích. Máy chủ thì không hiện huy hiệu — công tắc nằm ngay ở đó rồi.

  • Có thể chuyển tệp giữa máy của bạn và máy đang chạy terminal. Truy cập từ xa vẫn cho xem tệp của máy bên kia nhưng không có cách nào lấy về hay gửi sang, chỉ còn cách gõ lệnh trong terminal. Bảng tệp nay có Tải xuống trong menu ngữ cảnh của tệp và Tải lên ở phần đầu, và kéo tệp từ màn hình nền vào dòng của một thư mục cũng gửi chúng tới đó. Cả hai chiều đều đi qua cùng một kết nối đã xác thực như mọi thứ khác, nên dùng được như nhau từ trình duyệt trong mạng nội bộ, từ điện thoại và từ cửa sổ kết nối từ xa. Việc truyền chia thành từng khối, có hàng đợi tiến độ bên dưới cây thư mục, và vẫn chạy tiếp khi bạn xem bảng khác. Tải xuống là một liên kết tải thông thường, do chính trình quản lý tải của trình duyệt lo: nó ghi thẳng xuống đĩa khi nhận, hiển thị tốc độ và thời gian còn lại, tạm dừng rồi tiếp tục được, với tệp cỡ nào cũng vậy và ở mọi trình duyệt, kể cả trên điện thoại. Liên kết mang một vé cấp riêng cho tệp đó và chỉ có hiệu lực vài phút, vì máy chủ này giữ thông tin xác thực trong tiêu đề, mà trình duyệt khi mở liên kết thì không gửi tiêu đề nào. Tệp tải lên được ghi dưới một tên tạm và chỉ đổi sang tên chính thức khi xong, nên lần truyền bị ngắt giữa chừng không bao giờ để lại tệp ghi dở ở chỗ đáng lẽ phải là tệp nguyên vẹn; tên đã có sẵn thì bị từ chối trước khi truyền bất cứ thứ gì. Tệp tải lên hiển thị tốc độ và thời gian còn lại, và không kết thúc khi mất kết nối: một khối lỗi sẽ chờ rồi thử lại trong khoảng một phút, mỗi lần hỏi máy chủ xem tệp tạm thực sự đã đi tới đâu thay vì gửi lại một khối có thể đã ghi xong. Ngay cả khi bỏ cuộc, số byte đó vẫn được giữ: kéo lại đúng tệp đó vào đúng thư mục là truyền tiếp từ chỗ đã dừng, kể cả sau khi tải lại trang; chỉ khi bấm hủy thì tệp dở dang mới bị bỏ đi.

Tác nhân AI

  • Phiên Antigravity và Copilot được đặt tên theo tin nhắn đầu tiên. Cả hai đều bị thiếu trong cơ chế đổi tên tự động, để lại những dòng “Antigravity 1, 2, 3” trong thanh bên. Sự kiện hook của Antigravity không mang chút văn bản nào của người dùng, chỉ có mã cuộc hội thoại và đường dẫn tới bản ghi hội thoại, nên tin nhắn đầu tiên được đọc ra từ chính bản ghi đó; khối siêu dữ liệu đi ngay sau nó không được đưa vào tiêu đề. Sự kiện của Copilot cũng không mang tên sự kiện, phải phân biệt bằng hình dạng, nên một phần thân có prompt mà không có tên công cụ giờ được hiểu là một lần gửi tin — nhờ vậy prompt dùng để khởi động phiên, cùng các lần gọi công cụ, được để đúng ra ngoài tiêu đề.

  • Phiên Antigravity mở lại kèm theo lịch sử của nó. Việc tiếp tục cần mã cuộc hội thoại, mà bộ phân tích rút mã phiên ra từ tham số khởi chạy lại không nhận ra cách viết của Antigravity, nên --conversation=<id> chẳng bao giờ có mã nào để trỏ tới và mọi phiên mở lại đều trống trơn.

  • vspawn --yes tạo phiên con mà không hiện thẻ xác nhận. Ai bật “xác nhận trước khi tạo tác vụ con” thì phải bấm qua một tấm thẻ cho từng phiên con trong cả một lượt chạy. Cờ này — còn viết được là -y hoặc --no-confirm — bỏ qua thẻ cho riêng lần gọi đó và khởi động phiên với cài đặt mặc định. Nó không đổi bản thân cài đặt, nên lần tạo phiên con tiếp theo không kèm cờ vẫn hỏi lại.

  • Ô mô hình trên thẻ tác vụ con nhận mọi thứ bạn gõ vào. Trước đây nó là một danh sách thả xuống thuần túy, nên chỉ chọn được những mô hình có sẵn trong danh sách — mà một tác nhân thì hiểu nhiều định danh hơn thế rất nhiều: những tên có ngày tháng như claude-opus-4-6, những tên có tiền tố nhà cung cấp, những bí danh cấu hình ở máy. Giờ nó là một ô nhập văn bản, các mô hình đã biết treo ở danh sách thả xuống ngay bên cạnh làm lối tắt. Danh sách là gợi ý chứ không phải danh sách trắng: bạn gõ gì thì truyền đi đúng cái đó, ô để trống nghĩa là không có --model nào cả, còn danh sách lọc dần theo từng ký tự bạn gõ và tự gấp lại khi một định danh tự nhập không khớp với gì hết.

Giao diện

  • Một danh sách thả xuống duy nhất, dùng ở khắp nơi. Các danh sách thả xuống rải rác trong ứng dụng đã được chép ra từ cùng một đoạn mã hơn chục lần rồi mỗi cái trôi đi một hướng: ba màu nền bảng, bốn kiểu đổ bóng, ba màu di chuột, nút mở cao 26, 28 và 32 pixel, và dấu tick trên dòng đã chọn — thứ chỉ danh sách chọn nhiều mới cần. Giờ một thành phần duy nhất đứng sau ô chọn nhánh khi hợp nhất, ô chọn ngôn ngữ, shell mặc định và phông chữ trong cài đặt, ô chọn tác nhân, các hộp thoại worktree, ô chọn loại tác nhân khi tạo phiên mới và khi khôi phục phiên, cùng ô select gốc cuối cùng còn sót trong hộp thoại biểu mẫu. Nó cũng mang theo khả năng điều khiển bằng bàn phím mà trước đây chẳng cái nào có: phím mũi tên để di chuyển, Enter để chọn, Escape để đóng mà không đóng luôn hộp thoại phía sau, Home và End để nhảy về đầu và cuối. Hai menu ở thanh trạng thái vẫn hoạt động như cũ, còn bộ lọc trạng thái ở thanh bên thì giữ nguyên các dấu tick, vì nó đúng là loại chọn nhiều.

  • Ô mật khẩu trong bảng truy cập từ xa có thể hiện ra để xem. Trước đây nó là một ô mật khẩu trần, gõ vào rồi thì không xem lại được; nút hình con mắt thì có sẵn, nhưng chỉ nằm trong tệp của riêng bảng kết nối. Giờ cả hai dùng chung một thành phần, và trạng thái đang hiện được đặt lại khi đóng bảng.

  • Bộ chọn IP không còn trông như một điều khiển của hệ thống. Nó vốn là một ô select gốc, mà WKWebView khoác cho loại này bộ trang trí của hệ thống, đặt lên một bảng nền tối thì rất chỏi — đúng vấn đề của những danh sách thả xuống vừa được thay ở trên. Giờ nó dùng thành phần dùng chung, và nhãn của nó rút gọn còn “IP”, vì phần chữ ngay bên cạnh đã nói rõ nó dùng để làm gì.

Sửa lỗi

  • Việc kiểm tra cập nhật lần nào cũng thật sự hỏi máy chủ. Một máy khách để chạy liên tục bị ghim vào phiên bản đầu tiên nó từng thấy: đã tìm ra 0.1.101 thì nó cứ tiếp tục mời cài 0.1.101 ngay cả sau khi 0.1.104 phát hành, và “Check for updates” chỉ mở lại đúng hộp thoại cũ, vì mã cũ thoát ra sớm mỗi khi đã có một thông báo đang chờ. Giờ mỗi lần kiểm tra là một yêu cầu thật. Phiên bản mới hơn sẽ thay thông báo đang hiện trên màn hình, phiên bản y hệt hoặc một lượt tải đang chạy thì để nguyên, còn máy chủ báo không có bản cập nhật nào sẽ gỡ đi một thông báo đã cũ — có thể phiên bản đó bị rút về, hoặc bạn đã tự cài trong lúc đó. Nút “Download manually” giờ mở trang tải về trên website; trước đây nó đưa cho bạn chính gói của bộ cập nhật, thứ vốn để giải nén tại chỗ và không thể cài bằng tay.

  • Lớp phủ báo lỗi toàn màn hình không còn hiện ra khi các terminal bị hủy nhanh. Vùng hiển thị của xterm hẹn một lần đồng bộ vùng cuộn lúc nó được tạo ra và một lần nữa lúc nó được đặt lại, mà lúc hủy thì không hủy lần nào — nên một terminal được mở rồi đóng ngay trong cùng một tác vụ, đúng thứ xảy ra khi cây phiên được dựng lại trong lúc kết nối từ xa, vẫn chạy những callback đó, gặp một bộ dựng hình đã bị xóa sạch, rồi ném lỗi. Lỗi này ném ra từ một bộ hẹn giờ, nơi cả try/catch lẫn error boundary đều với không tới, nên nó được bắt ở phạm vi toàn cục và đối chiếu thật hẹp: chỉ khi ngăn xếp hoặc thông điệp nêu đúng lần đồng bộ ấy, kèm theo nhắc tới bộ dựng hình hoặc kích thước của nó, thì lỗi mới được nuốt đi như vô hại và ghi vào nhật ký yêu cầu. Sự cố thật vẫn làm lớp phủ hiện lên.

v0.1.104

Mới nhất

Tác nhân AI

  • Thẻ tác vụ con giờ đưa ra đúng những mô hình mà mỗi tác nhân thực sự có, và đúng cờ mức độ suy luận mà tác nhân đó hiểu được. Thẻ này dựng tham số khởi chạy bằng --model--effort cho tất cả, nhưng chỉ Claude, Kiro và Antigravity viết mức độ suy luận theo cách đó — Grok và Zoo gọi nó là --reasoning-effort, còn Cline gọi là --thinking. Chọn một mức độ suy luận cho bất kỳ tác nhân nào còn lại là đưa cho CLI một cờ mà nó chưa từng nghe tới, và phiên không khởi động được. Giờ mỗi tác nhân tự khai báo tên cờ và tập giá trị của riêng mình. Ô chọn mô hình đi theo những gì từng CLI có thể cho biết: những CLI liệt kê được danh mục của mình (OpenCode, Grok, Crush, Antigravity, Cursor, pi, Kiro) sẽ được hỏi và đưa ra danh sách thật, những CLI có tập cố định (Claude, Codex, Kimi Code) đưa ra đúng tập đó, số còn lại cho bạn một ô nhập văn bản kèm ví dụ về dạng thức chúng mong đợi. Tác nhân chưa cài hoặc chưa đăng nhập sẽ nói thẳng như vậy, thay vì quay vòng mãi không dứt. Chọn “Mặc định” giờ xóa hẳn giá trị ghi đè được thừa hưởng chứ không để nguyên giá trị cũ, và chọn một mức độ suy luận không còn làm mất mô hình thừa hưởng từ phiên cha.

  • Tác vụ con sinh ra từ một phiên Kimi Code vẫn là Kimi Code. Kimi Code bị thiếu trong danh sách mà luồng tạo tác vụ con dùng để thừa hưởng tác nhân của phiên cha, nên các phiên con của nó âm thầm quay về tác nhân mặc định.

Không gian làm việc

  • Một nhóm có thể chuyển sang worktree sau khi đã tạo xong. Worktree được chọn ngay lúc tạo nhóm và cố định từ đó về sau; đổi ý nghĩa là phải xóa nhóm rồi dựng lại. Nhấp chuột phải vào một nhóm rồi chọn “Move to Worktree…” để tạo worktree mới, gắn vào một worktree sẵn có, hoặc trỏ lại một nhóm vốn đã gắn. Chỉ bản thân nhóm thay đổi: các phiên đang ở bên trong vẫn giữ đúng thư mục lúc chúng được tạo — một phiên đang chạy không thể bị chuyển sang thư mục khác ngay dưới chân nó — còn các phiên tạo sau đó sẽ khởi động trong worktree.

  • Chế độ phản chiếu giờ bao trùm toàn bộ cây thanh bên. Trước đây nó chỉ chia sẻ lựa chọn và các bảng đã thu gọn; ô tìm kiếm cùng các bộ lọc trạng thái và dấu đánh dấu vẫn nằm cục bộ, với lập luận rằng đồng bộ chúng sẽ làm phiền người đang tra cứu. Lập luận đó ngược: phản chiếu nghĩa là hai cửa sổ giữ cùng một trạng thái, chứ không phải cửa sổ này diễn lại từng phím gõ của cửa sổ kia — bộ lọc bật ở đây thì cũng bật ở kia. Thứ thực sự làm phiền người dùng là hai bên hiển thị hai cây khác nhau. Giờ mọi phép chiếu của thanh bên đều được truyền đi: bố cục chia khung, tên của từng phép chiếu, nội dung ô tìm kiếm, các bộ lọc trạng thái và dấu đánh dấu, cùng trạng thái thu gọn của riêng nó. Định dạng ảnh chụp trạng thái đã chuyển sang phiên bản 2, và máy khách chạy phiên bản cũ sẽ dừng phản chiếu thay vì áp dụng nửa khung hình, nên hãy tải lại những cửa sổ bạn để mở suốt quá trình nâng cấp.

Giao diện

  • Đóng cửa sổ trên macOS giờ hỏi đúng câu hỏi mà việc thoát ứng dụng vẫn hỏi. ⌘Q và mục menu đều đi qua hộp xác nhận của chính ứng dụng, nhưng nút đóng màu đỏ thì hủy cửa sổ ngay lập tức — mà chính cửa sổ đó lại chứa webview nơi hộp thoại xác nhận sống. Kết quả là bạn hoặc không thấy xác nhận nào, hoặc chỉ thấy bản dự phòng gốc rút gọn của hệ điều hành, không có ô “lưu không gian làm việc” và văn bản thì chưa dịch. Cả ba nền tảng giờ đều giữ cửa sổ mở cho tới khi bạn trả lời.

  • Ô “lưu không gian làm việc” được bật sẵn, và nó nằm yên ở nơi bạn đặt. Mất một bố cục thì thiệt hơn là có thừa một ảnh chụp, nên ô này mặc định đã tick. Trước đây nó còn hay quên: cài đặt được ghi xuống cơ sở dữ liệu qua một khoảng chờ gộp 400ms, mà việc thoát lại giết tiến trình ngay trong khoảng đó, nên lần khởi chạy sau đối chiếu với giá trị cũ và trả thay đổi của bạn về như trước. Giờ phần ghi được đẩy xuống đĩa trước khi thoát, kèm trần 600ms để một backend treo không làm nút xác nhận quay mãi. (Do FarhadGSRX đóng góp.)

  • Mật khẩu trong bảng kết nối từ xa có thể hiện ra để xem. Cả mật khẩu URL lẫn mật khẩu SSH đều có nút hình con mắt để chuyển qua lại giữa che dấu và văn bản thường. Trạng thái đang hiện chỉ áp cho riêng ô đó và được đặt lại khi đóng bảng, nên không bao giờ có mật khẩu nào bị bỏ quên trên màn hình.

  • Huy hiệu bộ lọc ở thanh bên đếm mọi bộ lọc đang bật. Bộ lọc theo dấu đánh dấu chỉ làm sáng nút lên mà không nói gì thêm, nên huy hiệu có thể hiện số 1 trong khi hai bộ lọc đang hoạt động. Giờ nó đếm cả trạng thái lẫn dấu đánh dấu và khớp với các dấu tick trong danh sách thả xuống; một bộ lọc trạng thái đơn lẻ vẫn giữ chấm màu của nó.

Sửa lỗi

  • Cập nhật tự động trên macOS đã hoạt động trở lại. Các gói v0.1.103 mang theo những mục đồng hành kiểu AppleDouble (._VelaTerm.app); bộ cập nhật cắt bỏ thành phần đầu tiên của đường dẫn — để lại một đường dẫn rỗng — rồi từ chối giải nén cả kho lưu trữ. Cả hai kiến trúc đều dính, nên mọi người dùng macOS đang ở v0.1.103 đều mắc kẹt tại đó. Khâu đóng gói giờ không còn ghi ra những mục đó nữa.

  • Các điều khiển gốc của hệ thống đi theo giao diện của ứng dụng khi nó khác với hệ thống. Việc áp dụng một giao diện chỉ đặt màu của riêng ứng dụng mà không bao giờ cập nhật color-scheme — giá trị này chỉ được lấy một lần lúc khởi động theo tùy chọn của hệ thống rồi không đổi nữa — nên hộp kiểm, danh sách thả xuống và thanh cuộn vẫn tối trong khi ứng dụng đang sáng trên một hệ thống tối. (Do FarhadGSRX đóng góp.)

  • Bản vừa nhân bản về đã dựng được trở lại. Crate Rust nhúng ../dist vào lúc biên dịch, mà lệnh dev thì không tạo ra thư mục đó, nên một kho vừa nhân bản về đã hỏng ngay khi biên dịch, trước cả lúc kịp chạy. Script dựng giờ tự tạo thư mục khi nó chưa có. (Do FarhadGSRX đóng góp.)

v0.1.103

Mới nhất

Sửa lỗi

  • Phiên Codex trên Windows không còn từ chối khởi động. Mỗi phiên Codex đều thất bại ngay lập tức với unexpected argument '--codex-hook' vì bảng TOML của lifecycle hook được truyền qua dòng lệnh chứa dấu cách và dấu ngoặc kép, và codex.cmd cài qua npm xử lý lại qua cmd.exe — cmd.exe loại bỏ dấu ngoặc kép và tách giá trị thành nhiều đối số theo dấu cách. Giờ đây Windows bỏ qua việc tiêm hook; phát hiện trạng thái quay về cơ chế heuristic notify / screen / busy hiện có, vẫn báo cáo trạng thái rảnh và bận nhưng kém chính xác hơn hook. macOS và Linux không bị ảnh hưởng, tiếp tục sử dụng hook.

  • Đã hoàn tác bản sửa lỗi IME tiền soạn thảo trên Windows từ v0.1.102. Bản sửa lỗi khôi phục lớp phủ soạn thảo cho đầu vào tiếng Trung, Nhật, Hàn đồng thời thêm màu nền, viền 1px và bo tròn góc, khiến khi gõ phím trong terminal xuất hiện một ô nhỏ bao quanh văn bản tiền soạn thảo — điều không nên xảy ra trong terminal. Vì kích thước lớp phủ, hình học của container phụ trợ và việc dọn dẹp textarea phụ thuộc lẫn nhau, toàn bộ thay đổi phải được hoàn tác cùng lúc. Vấn đề gốc — gõ CJK mù trên Windows — vẫn chưa được giải quyết và được theo dõi tại issue #6.

v0.1.102

Mới nhất

Tác nhân AI

  • Cấu hình sẵn cho tác nhân: chạy song song nhiều CLI tương thích. Mỗi loại tác nhân trước đây bị gắn cứng vào một tệp thực thi duy nhất, nên một bản fork, một bản dựng nightly hay một CLI khác nói cùng giao thức đều không có đường vào — bạn phải sửa tham số khởi chạy của một loại sẵn có và mất đi bản gốc. Giờ đây mỗi cấu hình sẵn tự khai báo tệp thực thi, biểu tượng và tham số khởi chạy của riêng nó, đồng thời xuất hiện trong menu tạo phiên mới bên cạnh các loại tích hợp. Phiên ghi lại cấu hình sẵn đã tạo ra nó, nên fork một phiên vẫn dùng đúng tệp thực thi đó; và cấu hình sẵn tạo trên máy tính cũng hiện ra ở các trình duyệt đã ghép nối lẫn máy khách từ xa, kèm cả biểu tượng, vì biểu tượng được truyền dưới dạng dữ liệu chứ không phải một đường dẫn trên một máy cụ thể. Các phiên hiện có không bị đụng tới: cơ sở dữ liệu từ phiên bản cũ vẫn khởi động y như trước.

  • Thẻ tác vụ con chọn được mô hình và mức độ suy luận, và một lần trả lời là xong ở mọi nơi. Khi tác nhân xin tạo một tác vụ con, thẻ xác nhận giờ cho chọn mô hình và — nếu tác nhân hỗ trợ — mức độ suy luận, điền sẵn theo chính tham số khởi chạy của phiên cha, nên trường hợp thường gặp chỉ cần một cú nhấp. Chuyển thẻ sang một tác nhân khác sẽ tính lại cả hai giá trị, nhờ vậy tên mô hình của CLI này không còn lọt vào dòng lệnh của CLI khác. Thẻ hiện ra trên mọi máy khách đang kết nối, và trả lời ở một nơi giờ sẽ đóng nó ở những nơi còn lại; lần trả lời đầu tiên cũng giành lấy tác vụ trên máy chủ, nên xác nhận trên điện thoại và trên máy tính trong cùng một giây chỉ tạo ra một worktree và một phiên con, thay vì hai.

Không gian làm việc

  • Chế độ phản chiếu: một bố cục dùng chung cho mọi máy khách. Luồng terminal xưa nay vẫn dùng chung — một PTY, một luồng byte — nhưng cách sắp xếp xung quanh nó chỉ nằm trong bộ nhớ trình duyệt của từng máy khách, nên một trình duyệt mở qua mạng LAN hiển thị tab và khung chia của riêng nó, còn sắp xếp lại ở màn hình này thì màn hình kia không hay biết. Khi bật chế độ phản chiếu, các tab, các khung chia, phiên đang hoạt động, lựa chọn ở thanh bên và các bảng đã thu gọn đều được phát tới mọi máy khách và mọi máy khách đều đi theo. Công tắc nằm ở phía máy chủ, trong bảng truy cập từ xa. Sắp xếp lại ở bên nào cũng có hiệu lực ở bên kia; một phiên rời khỏi bố cục của cửa sổ này thì được tách ra chứ không bị kết thúc, nên việc đi theo máy khác không bao giờ giết tiến trình của ai; và việc áp dụng bố cục của máy khác không cướp bàn phím khỏi người đang gõ tại chỗ. Điện thoại đứng ngoài chuyện này — điều hướng hai cấp trên điện thoại là một kiểu giao diện khác, chép cây khung chia của máy tính sang đó chẳng giúp được gì.

  • Tab Git ở thanh bên phải đã thành một trình khách Git dùng được. Trước đây nó chỉ liệt kê các tệp đã thay đổi. Giờ nó đưa vào và gỡ khỏi vùng chờ commit từng tệp hoặc cả nhóm, hủy bỏ thay đổi, viết commit (kể cả amend), và hiển thị lịch sử commit kèm danh sách tệp và diff của từng commit — tất cả chia thành các mục có thể gấp lại: đã vào vùng chờ, đã thay đổi, chưa theo dõi và đã commit. Đường dẫn được tính từ gốc kho lưu trữ, nên một phiên mở trong thư mục con sẽ thao tác đúng những tệp mà nó hiển thị, còn HEAD tách rời thì được ghi rõ như vậy thay vì hiện ra một nhánh tên là HEAD.

Giao diện

  • ⌘Q giờ hỏi đúng câu hỏi mà việc đóng cửa sổ vẫn hỏi. Mục Quit trong menu ứng dụng vốn là mục của hệ thống, nó kết thúc tiến trình ngay lập tức: nhấn ⌘Q sẽ bỏ qua hộp xác nhận “lưu không gian làm việc” mà nút đóng vẫn hiển thị, nên cùng một ý định lại cho ra hai hành vi khác nhau tùy cách bạn diễn đạt. Cả hai lối giờ đều đi qua một hộp xác nhận duy nhất. Nếu cửa sổ hiển thị hộp xác nhận đó đã tải lại hoặc đã sập trong lúc chờ, nhấn ⌘Q lần nữa sẽ hỏi lại và chuyển sang hộp thoại gốc của hệ điều hành, thay vì để ứng dụng rơi vào tình trạng không thoát được.

  • Gợi ý phím tắt hiển thị đúng những phím thực sự hoạt động. Mặc định khác nhau theo từng nền tảng, còn trình duyệt thì giữ các tổ hợp ⌘/Ctrl kèm chữ cái cho riêng nó — ⌘D lưu dấu trang, ⌘T mở tab mới — nên trên macOS, các phím tắt ⌘ của ứng dụng chẳng bao giờ tới được trang khi mở VelaTerm bằng URL. Tab trình duyệt thông thường giờ dùng tổ hợp Ctrl+Alt trên mọi hệ điều hành, còn ứng dụng máy tính và cửa sổ kết nối từ xa vẫn giữ ⌘. Chú giải và gợi ý trên tab trống hiển thị đúng tổ hợp đang có hiệu lực, kể cả tổ hợp do bạn tự gán lại, thay vì một tổ hợp ⌘ gắn cứng; và terminal chặn đúng những tổ hợp mà ứng dụng đã nhận, nên gán lại một thao tác thì phím cũng đi theo thao tác đó.

  • Danh sách phông chữ có sẵn thêm Nerd Fonts và CJK, còn phông tự nhập mà máy chưa cài thì được báo rõ. Danh sách có sẵn được bổ sung các họ Nerd Font và CJK thông dụng, còn phông gõ tay giờ được hiển thị lại và kiểm tra: nếu hệ thống không có phông đó, trang cài đặt sẽ nói thẳng, thay vì âm thầm quay về một phông mặc định chẳng giống chút nào với thứ bạn yêu cầu.

  • Các ô nhập trên macOS không còn tự viết hoa hay tự sửa nội dung bạn gõ. Tính năng tự viết hoa, tự sửa và kiểm tra chính tả của hệ thống áp lên mọi ô nhập trong ứng dụng, kể cả tên phiên và ô nhập lệnh, khiến “npm” biến thành “Npm”. Giờ tất cả đều đã tắt ở mọi nơi.

Windows

  • Gõ tiếng Trung, tiếng Nhật hay tiếng Hàn lại thấy được chữ đang soạn và cửa sổ gợi ý. Trước đây cả hai đều vô hình — bạn gõ mù và chỉ thấy kết quả sau khi nhấn Enter. Thủ phạm là hai quy tắc CSS của chính chúng tôi: khung chứa lớp phủ chữ đang soạn co lại còn không có chiều rộng, và độ lệch right của lớp phủ nằm trong khung đó cũng tính ra thành không có gì. Cửa sổ gợi ý biến mất theo, vì hệ điều hành định vị nó dựa trên hình chữ nhật của lớp phủ. Lớp phủ giờ được vẽ trở lại và khoác màu của ứng dụng, còn phần tử nhập vô hình đỡ bên dưới nó thì nhả kích thước ngay khi soạn xong, nhờ vậy nhấp và kéo trên vùng đó sẽ tới được terminal chứ không rơi vào một phần tử rỗng vẫn cứ che mất nó như trước.

  • Thanh tiêu đề gốc đi theo cài đặt sáng/tối. Ứng dụng vẫn dùng thanh tiêu đề của hệ thống, mà Windows thì vẽ nó màu sáng cho tới khi được bảo khác đi, nên phía trên giao diện tối luôn có một dải trắng. Giờ thanh tiêu đề khớp với ứng dụng, kể cả những cửa sổ mở sau như cửa sổ SSH và cửa sổ kết nối từ xa. Chọn “theo hệ thống” sẽ trả quyền quyết định lại cho hệ điều hành thay vì ghim cứng một giá trị.

  • Ô vuông lạ khi khởi động nguội đã hết. Plugin chống chạy nhiều phiên bản tạo một cửa sổ thông điệp ẩn nhưng chưa bao giờ cho nó độ trong suốt mà chính kiểu dáng của nó hứa hẹn, nên đôi khi Windows kéo cửa sổ kích thước bằng không lên mức tối thiểu và vẽ ra một ô vuông nhỏ trong lúc khởi động. Giờ cửa sổ đó đã thực sự trong suốt; hành vi chống chạy nhiều phiên bản không đổi.

Hiệu năng

  • Truy cập từ xa tải ít hơn hẳn ở lần vẽ đầu tiên. Các tài nguyên tĩnh giờ được nén theo yêu cầu và gửi kèm thông tin kiểm chứng bộ nhớ đệm, nên lần truy cập thứ hai chỉ kiểm chứng lại chứ không tải lại từ đầu; còn các gói ngôn ngữ và những bộ dựng hình tùy chọn của terminal chỉ được tải khi có thứ gì đó cần đến, thay vì nằm sẵn trong lần tải đầu. Cộng lại, lượng dữ liệu truyền lần đầu giảm còn khoảng một phần năm so với trước.

Sửa lỗi

  • Phiên con giờ khởi động giống hệt phiên đã yêu cầu tạo ra nó. Phiên con không thừa hưởng chế độ quyền lẫn tham số khởi chạy của phiên cha, nên con của một phiên đang chạy ở chế độ bỏ qua xác nhận lại hiện lên và hỏi xác nhận, còn mô hình đã ghim ở phiên cha thì bị bỏ mất. Giờ cả hai đều được thừa hưởng, và khi không có thì lấy mặc định toàn cục của loại tác nhân — đúng những mặc định mà menu “phiên tác nhân mới” vẫn áp dụng.

  • Kết nối lại cửa sổ từ xa không còn báo nhầm “xác thực thất bại”. Khi cửa sổ kết nối lại, WebSocket mới và WebSocket bị nó thay thế chạy đua với nhau; việc dọn dẹp bên thua lại bị báo thành lỗi xác thực, và biểu ngữ đổ oan cho một cặp ghép nối hoàn toàn hợp lệ là đã bị từ chối.

  • Không còn kéo được một nhóm vào chính cây con của nó. Thả một nhóm lên một trong các hậu duệ của chính nó sẽ làm cả nhánh đó rời khỏi cây, và các phiên bên trong biến mất khỏi thanh bên cho đến khi cơ sở dữ liệu được sửa bằng tay. Giờ thao tác di chuyển này bị từ chối.

  • Đầu ra của tác nhân giữ nguyên màu khi VelaTerm được khởi chạy từ một công cụ khác. Terminal thừa hưởng môi trường của thứ đã khởi chạy nó, nên khi mở từ một IDE hay một bộ khung tác nhân có export NO_COLOR, CI hoặc FORCE_COLOR=0, mọi giao diện TUI của tác nhân bên trong VelaTerm đều hiện ra đơn sắc, dù terminal vẫn công bố hỗ trợ màu đầy đủ. Các giá trị thừa hưởng đó giờ bị loại bỏ khi phiên khởi động; còn chính các biến đó nếu bạn export trong hồ sơ shell của mình thì vẫn có hiệu lực, vì hồ sơ ấy chạy bên trong phiên.

v0.1.101

Mới nhất

Truy cập từ xa

  • Chọn địa chỉ mà liên kết chia sẻ sử dụng — địa chỉ Tailscale giờ đã hiển thị. Danh sách địa chỉ trước đây chỉ chấp nhận các dải IPv4 riêng tư truyền thống, nên các mạng lưới VPN như Tailscale — vốn cấp địa chỉ từ dải NAT cấp nhà mạng (100.64.0.0/10) — bị âm thầm loại khỏi bảng truy cập từ xa và liên kết ghép nối, dù máy chủ vốn đã truy cập được qua các địa chỉ đó. Các địa chỉ này giờ được liệt kê; đường hầm VPN xếp cuối để không bao giờ trở thành mặc định. Bộ chọn IP mới trong bảng — hiển thị trước khi khởi động lẫn khi đang chạy — liệt kê từng ứng viên kèm tên giao diện mạng và đánh dấu đường hầm VPN; chọn một địa chỉ sẽ đưa URL của nó lên đầu và tạo lại liên kết ghép nối với đúng máy chủ đó, nhờ vậy liên kết sao chép được hoạt động trên thiết bị chỉ tới được máy này qua VPN mà không phải sửa URL thủ công. Mã QR bên dưới liên kết ghép nối có thể quét trực tiếp bằng điện thoại. Lựa chọn được ghi nhớ; nếu giao diện mạng đã chọn biến mất, bảng sẽ quay về “Tự động” mà không quên lựa chọn. Bản thân máy chủ không thay đổi và vẫn lắng nghe trên mọi giao diện mạng. Chọn một địa chỉ chỉ xuất hiện sau khi máy chủ khởi động — chẳng hạn một VPN kết nối muộn — giờ cũng cập nhật ngay URL được sao chép và mã QR, thay vì chỉ liên kết ghép nối cho đến lần khởi động lại tiếp theo; các đường hầm VPN luôn xếp sau địa chỉ LAN trên mọi nền tảng, địa chỉ chọn khi máy chủ đang dừng sẽ quyết định liên kết ghép nối đầu tiên sau khi khởi động, và các lần tạo lại liên kết chồng chéo không còn ghi đè liên kết mới hơn bằng liên kết cũ hơn.

  • Chia sẻ giờ đây tồn tại qua lần khởi động lại. Trước đây token ghép nối được tạo lại mỗi khi máy chủ khởi động: chỉ cần đóng rồi mở lại VelaTerm là mọi liên kết đã chia sẻ âm thầm mất hiệu lực, và mọi điện thoại đều phải ghép nối lại. Giờ đây token, các thiết bị đã ghép nối và danh sách thiết bị bị chặn được lưu vào một tệp trong thư mục dữ liệu mà chỉ chủ sở hữu đọc được: thiết bị đã ghép nối sẽ kết nối lại bằng URL đã lưu sau khi khởi động lại — mật khẩu truy cập vẫn là yếu tố thứ hai bắt buộc — và thiết bị đã bị thu hồi vẫn bị thu hồi. VelaTerm cũng ghi nhớ rằng chia sẻ đang bật: thoát ứng dụng khi máy chủ đang chạy thì lần khởi chạy tiếp theo sẽ tự động bật lại trên cùng cổng, cả trong ứng dụng máy tính lẫn trên máy chủ không giao diện chạy --serve; nếu bạn tự dừng máy chủ thì sẽ không có gì tự khởi động. Nếu khởi động tự động thất bại, chẳng hạn vì cổng đang bị chiếm, ứng dụng vẫn khởi động bình thường và bảng truy cập từ xa hiển thị lý do. Ô nhập cổng giờ ghi nhớ cổng bạn đã thực sự dùng thay vì quay về giá trị mặc định, và "Tạo lại liên kết" vẫn là công tắc vô hiệu hóa tường minh: nó lập tức phát hành token mới, làm mất hiệu lực mọi liên kết cũ và ghi đè trạng thái đã lưu. Bản thân mật khẩu truy cập không bao giờ được ghi ra đĩa — chỉ lưu một hàm băm tiêu tốn bộ nhớ (Argon2id).

Bảo mật

  • Thiết bị đã ghép nối không còn tự quản lý được việc chia sẻ. Trước đây, bất kỳ trình duyệt đã ghép nối nào cũng có thể gọi những lệnh quản trị giống hệt ứng dụng máy tính — tạo liên kết ghép nối mới (việc này cũng xóa danh sách chặn thiết bị), liệt kê và thu hồi các thiết bị khác, hay dừng và cấu hình lại máy chủ — và kho cài đặt trao cho mọi máy khách toàn bộ bảng cài đặt, gồm cả mã băm tốn bộ nhớ của mật khẩu truy cập và các cài đặt tự khởi động mà lần chạy sau sẽ đọc. Các lệnh quản trị giờ chỉ dành cho ứng dụng máy tính và vỏ Electron; API cài đặt lọc các khóa truy cập từ xa và token Gitea khỏi mọi lần đọc từ thiết bị đã ghép nối và từ chối việc ghi vào chúng. Thiết bị đã ghép nối vẫn giữ đúng vai trò của việc ghép nối — các phiên terminal với quyền truy cập shell đầy đủ — nhưng không còn đọc được giá trị kiểm chứng mật khẩu, mời hay trục xuất thiết bị khác, hoặc đổi cổng mà lần khởi động sau sẽ dùng. Các lệnh đọc, ghi hoặc xóa bí mật đã lưu — token Gitea và mật khẩu máy chủ được ghi nhớ — giờ cũng bị từ chối với thiết bị đã ghép nối, và các lệnh nhận đường dẫn — đọc, xem trước, ghi, tạo, đổi tên và xóa, cũng như hiển thị git diff của một tệp hay chọn thư mục để nhân bản kho lưu trữ — phân giải liên kết tượng trưng trước rồi từ chối các đường dẫn nằm trong thư mục dữ liệu của chính VelaTerm, nơi lưu trạng thái ghép nối và các khóa; mọi đường dẫn khác vẫn hoạt động, nên việc duyệt và chỉnh sửa tệp từ xa vẫn nguyên vẹn. Một bài kiểm thử liệt kê mọi lệnh từ xa nhận đường dẫn, nên lệnh mới không thể lặng lẽ vượt qua bước kiểm tra này. Khi một trong các lớp bảo vệ này từ chối yêu cầu, trình duyệt giờ hiển thị thông báo đã được dịch hẳn hoi thay vì lỗi tiếng Anh thô.

  • Việc thu hồi hoặc tạo lại liên kết giờ cũng bền vững trong cấu hình hai phiên bản. Trên máy chủ không giao diện (--serve) có bật tự khởi động, hai phiên bản máy chủ mỗi bên giữ một bản sao riêng của trạng thái ghép nối đã lưu và ghi lại toàn bộ: một lần thu hồi hay một liên kết mới thực hiện qua bên này có thể bị bên kia âm thầm hoàn tác. Mọi phiên bản trong cùng một tiến trình giờ dùng chung một trạng thái ghép nối cho mỗi thư mục dữ liệu: thu hồi và xoay vòng có hiệu lực ở khắp nơi ngay lập tức, và đúng một nơi ghi tệp; tệp vẫn là nguồn dữ liệu gốc qua những lần khởi động lại thực sự.

  • Đăng nhập sai lặp lại bị hãm lại. Việc kiểm tra mật khẩu truy cập dùng Argon2id, cố ý tốn kém — và bất kỳ ai với tới cổng đều có thể thử. Sau năm lần sai từ một địa chỉ, các lần thử tiếp theo bị từ chối trong một phút trước khi bất kỳ phép băm nào diễn ra, và bản thân phép băm giờ chạy ngoài vòng lặp sự kiện của máy chủ với mức trần cứng cho số lần kiểm tra đồng thời: một trận lụt mật khẩu sai không còn làm máy chủ bão hòa vì băm tốn bộ nhớ hay chậm đi với các thiết bị đã kết nối. Bộ hãm nằm trong bộ nhớ và được đặt lại cùng máy chủ; rào chắn thật sự vẫn là token ghép nối và mật khẩu. Giới hạn giờ được chia sẻ giữa mọi phiên bản máy chủ dùng chung một thư mục dữ liệu — cấu hình hai phiên bản với --serve không còn nhân đôi số lần thử — và mỗi lần thử được giữ chỗ trước khi bắt đầu kiểm tra mật khẩu, nên các yêu cầu song song từ cùng một địa chỉ không thể lách dưới giới hạn. Trình duyệt bị giới hạn giờ thấy một thông báo giới hạn tần suất riêng trên màn hình đăng nhập thay vì bị báo sai mật khẩu; ngoài ra, việc bị giới hạn không còn bị ghi nhớ như mật khẩu sai: hết thời gian chờ, lần thử tiếp theo lại được xử lý mà không cần tải lại trang. Một lần thử bị bỏ dở giữa chừng — tab bị đóng khi mật khẩu còn đang được kiểm tra — giờ giải phóng chỗ đã giữ ngay lập tức thay vì bị tính cho địa chỉ đó suốt phần còn lại của phút, và một lần đăng nhập thành công chỉ giải phóng phần giữ chỗ của chính nó thay vì xóa toàn bộ bản ghi của địa chỉ: sau một địa chỉ mạng dùng chung, việc ai đó đăng nhập đúng không còn đặt lại ngân sách thử của kẻ tấn công, và các lần sai đã ghi nhận chỉ hết hạn cùng với phút của chúng.

  • Bí mật trên đĩa và trong nhật ký được xử lý cẩn thận hơn. Tệp trạng thái ghép nối và khóa mã hóa đầu cuối giờ được tạo chỉ chủ sở hữu đọc được ngay từ đầu, thay vì bị giới hạn sau lần ghi đầu tiên, và cơ sở dữ liệu phiên — nơi chứa mã băm mật khẩu — cũng bị giới hạn cho chủ sở hữu. Máy chủ không giao diện (--serve) không còn in bí mật sống lâu của liên kết ghép nối vào nhật ký: nếu đầu ra không phải terminal, liên kết bị giữ lại và một chỉ dẫn hiện thay thế; --print-pairing bật lại điều đó một cách tường minh. Sổ đăng ký thiết bị bị giới hạn ở 32 mục với tên bị giới hạn độ dài, để máy khách đã ghép nối không thể làm tệp lưu phình to vô hạn, và nếu việc lưu một lần thu hồi hay liên kết mới thất bại, lỗi giờ đến tay nơi gọi thay vì chỉ nằm trong một dòng nhật ký. Tự khởi động không còn thay thế máy chủ đã được khởi động thủ công, và lỗi tự khởi động cũ biến mất ngay khi bạn tự dừng máy chủ.

Sửa lỗi

  • Giờ đây có thể quản lý ghép đôi từ shell Electron. Việc tạo liên kết ghép đôi, liệt kê các thiết bị đã ghép đôi và thu hồi một thiết bị trước đây chỉ tồn tại dưới dạng lệnh trên máy tính (Tauri); bộ điều phối WebSocket mà shell Electron và các trình khách trình duyệt sử dụng trả về "Unknown command", khiến bảng truy cập từ xa không hoạt động ở đó. Cả ba lệnh nay đều đi qua cùng các hàm lõi trên cả hai kênh truyền, nên chúng không thể lệch nhau, và các bài kiểm tra hồi quy bao phủ các tuyến điều phối mới — bao gồm việc tạo một liên kết ghép đôi thật với một máy chủ cục bộ đang chạy.

v0.1.100

Mới nhất

Tác nhân AI

  • Kiro CLI trở thành một loại phiên hạng nhất. Phiên Kiro có nút riêng trong cây, có chấm trạng thái Đang làm việc / Đang chờ chuẩn xác do chính lifecycle hooks của Kiro điều khiển, có thông báo khi một lượt kết thúc, tự động tiếp tục đúng cuộc hội thoại cũ khi bạn mở lại nút, có tham số khởi chạy cùng công tắc bỏ qua xác nhận, và khởi chạy qua vspawn — mọi thứ mà các tác nhân khác đã có. VelaTerm sao chép tác nhân Kiro mặc định của bạn thành một tác nhân vlx-term riêng, thêm lifecycle hooks chỉ quan sát vào bản sao rồi khởi chạy bản sao đó — tệp tác nhân của bạn không bao giờ bị sửa, còn prompt, công cụ và máy chủ MCP thì đi theo nguyên vẹn. Kiro không có hook yêu cầu quyền, nên chấm trạng thái vẫn là Đang làm việc trong lúc chờ bạn phê duyệt.

Sửa lỗi

  • Chương trình khởi chạy từ terminal không còn thừa hưởng môi trường của chính AppImage (Linux). Trình khởi chạy AppImage trỏ PYTHONHOME, PYTHONPATH, PERLLIB, QT_PLUGIN_PATH và các đường dẫn plugin GStreamer vào thư mục mount tạm thời của gói, đồng thời đặt các thư mục trong gói lên trước mọi thứ khác trong PATHLD_LIBRARY_PATH. Terminal giao toàn bộ môi trường của nó cho shell mà nó khởi chạy, nên python3 của hệ thống đi tìm thư viện chuẩn bên trong gói rồi từ chối chạy, còn những chương trình liên kết động khác thì nạp bản sao thư viện trong gói thay vì bản của hệ thống. VelaTerm nay loại bỏ các đường dẫn của gói trước khi khởi chạy shell hoặc công cụ bên ngoài, và giữ nguyên những giá trị do chính bạn đặt. APPDIRAPPIMAGE vẫn hiển thị, nên các chương trình cần kiểm tra xem mình có đang chạy từ AppImage hay không vẫn có câu trả lời. Chỉ các bản dựng AppImage bị ảnh hưởng; gói deb, macOS và Windows vẫn như trước.

v0.1.99

Mới nhất

Terminal

  • Shift+Enter xuống dòng thay vì gửi đi. Terminal không có mã hóa cho Enter kèm phím bổ trợ, nên các CLI tác nhân như Claude Code và Codex chỉ nhận được một ký tự xuống dòng thông thường và gửi nội dung đi khi bạn còn đang viết. VelaTerm nay phát ESC+CR, đúng chuỗi mà những công cụ đó mong đợi từ ánh xạ phím của iTerm2, nhờ vậy nhập nhiều dòng đã dùng được — kể cả trên macOS, nơi trước đây bộ xử lý phím tùy chỉnh hoàn toàn không được cài. Trong lúc gõ bằng bộ gõ, mọi thứ giữ nguyên: Enter vẫn dùng để chọn từ gợi ý.

Dự án và tổ chức

  • Làm mới trạng thái của một phiên duy nhất. Trong khung đang bật bộ lọc trạng thái, mỗi phiên có thêm thao tác «Làm mới trạng thái», đánh giá lại đúng phiên đó theo điều kiện của chính khung ấy rồi thêm vào hoặc loại bỏ, trong khi mọi phiên khác giữ nguyên vị trí. Thao tác thuộc về khung đã mở menu, nên các lần chia lồng nhau không bao giờ mượn bộ lọc của khung khác. Kết quả được lưu riêng theo từng khung và khôi phục sau khi khởi động lại.
  • Bỏ đánh dấu chỉ cần một cú nhấp. Chọn lại biểu tượng cảm xúc đang áp dụng sẽ gỡ bỏ nó, nên mục riêng để bỏ đánh dấu cùng đường phân cách đã được loại đi. Huy hiệu biểu tượng cảm xúc trên nút lọc cũng bị bỏ: phần làm nổi bật đã cho biết bộ lọc đánh dấu đang bật, còn cụ thể là biểu tượng nào thì menu có ghi.

Sửa lỗi

  • Tích hợp desktop của AppImage trên Linux cài được trên mọi máy. Biểu tượng đi kèm là một liên kết tượng trưng trỏ tới đường dẫn tuyệt đối trên máy build, nên những công cụ như Gear Lever và AppImageLauncher không trích xuất được, dù bản thân ứng dụng vẫn chạy bình thường. Nay liên kết đã là tương đối. Yêu cầu glibc công bố cũng được đính chính thành 2.35 sau khi đo cả các thư viện đi kèm chứ không riêng tệp thực thi, nghĩa là Ubuntu 22.04 là bản phân phối cũ nhất mà ứng dụng desktop hỗ trợ.

v0.1.98

Mới nhất

Tác nhân AI

  • Grok Build trở thành tác nhân hạng nhất trong VelaTerm. Cài đặt, khởi chạy và tiếp tục Grok 4.5 với ID phiên ổn định, lifecycle hooks chính thức, trạng thái làm việc và quyền chính xác, bản ghi hội thoại đã hợp nhất, chi tiết sử dụng cùng biểu tượng chính thức thích ứng theo giao diện trên máy tính, trình duyệt và thiết bị di động.

Dự án và tổ chức

  • Chia thanh bên dự án thành các chế độ làm việc độc lập. Mọi khung cây đều có thể tiếp tục chia xuống dưới và khôi phục sau khi khởi động lại phần tìm kiếm, bộ lọc trạng thái và biểu tượng cảm xúc, trạng thái thu gọn cùng tỷ lệ kích thước riêng. Tất cả các khung vẫn là hình chiếu của cùng một cây dự án do backend quản lý, vì vậy thay đổi luôn đồng bộ mà không nhân đôi dữ liệu nghiệp vụ.
  • Đánh dấu và lọc nút mà không mất ngữ cảnh. Dự án, nhóm và phiên đều có thể mang dấu biểu tượng cảm xúc. Một vùng chứa được đánh dấu sẽ giữ nguyên toàn bộ cây con; thành viên theo trạng thái vẫn ổn định trong lúc làm việc; cả bổ sung động và làm mới thủ công đều được hỗ trợ; điều kiện trạng thái và biểu tượng cảm xúc được kết hợp theo phép hợp.
  • Tạo dự án trống ngay tại chỗ. Chọn thư mục cha, xác thực tên rồi tạo và nhập thư mục trong cùng một quy trình. Nếu chỉ bước nhập gặp lỗi, hệ thống sẽ thử lại bước đó mà không tạo thư mục trùng lặp.

Giao diện

  • Chia sẻ VelaTerm ở nơi cộng đồng của bạn hiện diện. Hộp thoại chia sẻ nay hỗ trợ WeChat Moments, Weibo, Xiaohongshu, X, Reddit, Hacker News, LinkedIn, Facebook, Telegram và WhatsApp, kèm quy trình mã QR cho WeChat và lời mời chia sẻ trong hộp thoại cập nhật.
  • Những tương tác nhỏ trở nên chỉn chu hơn. Có thể đổi tên tab terminal tạm thời trước khi chuyển thành phiên đã lưu. Các ô nhập thông thường tắt tự động viết hoa trên bàn phím di động mà không làm thay đổi thao tác nhập trong terminal.

v0.1.97

Mới nhất

Tác nhân AI

  • Phiên không còn kẹt ở trạng thái “đang làm việc”. Codex báo hoạt động công cụ và kết thúc lượt qua các tiến trình ngắn hạn riêng biệt, nên callback có thể đến sai thứ tự và khiến một lượt đã kết thúc vẫn hiển thị là đang chạy. Giờ đây các báo cáo giữa lượt đến sau khi chính lượt đó kết thúc sẽ bị loại bỏ, và một hook kết thúc phiên mới bao quát những phiên thoát mà không phát sự kiện hoàn tất.
  • Lượt bị ngắt trở lại bình thường trong vài giây. Khi nhấn Esc hoặc gặp lỗi luồng, lượt của Claude và Codex kết thúc mà không gửi bất kỳ callback hoàn tất nào. Sau sáu giây terminal hoàn toàn im lặng, phiên đó được lặng lẽ chỉnh về trạng thái chờ và không hiện thông báo “đã trả lời”.

Giao diện

  • Phím tắt chia khung đáng tin cậy trên macOS. Chia sang phải (Cmd+D) và chia xuống dưới (Cmd+Shift+D) nay được đăng ký thành lệnh menu Terminal gốc, nên macOS không còn chặn tổ hợp phím trước khi VelaTerm nhận được.
  • Mỗi lần nhấn phím chỉ lưu một lần. Cmd+S trước đây được xử lý bởi cả phím tắt toàn cục lẫn trình soạn thảo đang có tiêu điểm, nên có thể ghi cùng một tệp hai lần chỉ trong một lần nhấn.

v0.1.96

Mới nhất

Tác nhân AI

  • Trạng thái Codex tin cậy lifecycle hooks thay vì phỏng đoán từ terminal. Phiên Codex mới chỉ dùng lifecycle hooks chính thức làm nguồn trạng thái hoạt động. Bắt tay SessionStart xác minh đường kết nối, callback bị thiếu được hiển thị là “Không có trạng thái”, còn văn bản hoặc hoạt động đầu ra của terminal không thể ghi đè trạng thái đang làm việc, cần xác nhận hay đã hoàn tất.
  • Mức sử dụng Codex được cập nhật kịp thời hơn sau mỗi lượt. Bảng Info hiển thị ngay snapshot rollout cục bộ, đối chiếu với giới hạn trực tiếp, làm mới thêm một lần sau khi Codex ghi snapshot token cuối cùng và bỏ qua phản hồi đến muộn từ phiên trước.

Giao diện

  • Chọn chính xác trong cây dự án trên macOS. Các hàng ảo không còn phụ thuộc vào transform của compositor, nhờ đó tọa độ hit-test cũ của WKWebView không gửi thao tác di chuột, nhấp hoặc kéo tới một hàng khác sau khi cuộn hay cập nhật cây.

v0.1.95

Mới nhất

Tác nhân AI

  • Kimi Code và Zoo Code đã có trong cây phiên. VelaTerm giờ có thể khởi chạy, tiếp tục, cài đặt và cấu hình cả hai tác nhân. Kimi dùng lifecycle hooks chính thức để báo cáo chính xác trạng thái làm việc, quyền và chờ; Zoo Code giữ định danh tác vụ ổn định và dùng nhận diện terminal khi không có hooks bên ngoài.
  • Làm mới trực tiếp mức sử dụng Codex. Bảng Info truy vấn Codex app server để lấy giới hạn hiện tại và vẫn dùng ảnh chụp rollout cục bộ làm phương án tương thích dự phòng.

Dự án và terminal

  • Mở dự án bằng vela <path>. Bản đóng gói có thể cài lệnh shell kiểu VS Code. Lần gọi thứ hai chuyển dự án tới cửa sổ VelaTerm hiện có thay vì mở một phiên bản trùng lặp.
  • Git clone có tiến độ và có thể hủy. Clone Project hiển thị giai đoạn, phần trăm và thời gian, cảnh báo khi bị đình trệ, đồng thời có thể hủy toàn bộ cây tiến trình Git mà không để lại thư mục dở dang. Thông tin xác thực và query tokens được che trong lỗi và nhật ký kiểm toán.
  • Terminal WSL trên Windows. Mọi bản phân phối WSL đã cài được phát hiện và hiển thị cùng PowerShell, cmd và Git Bash cho terminal thông thường. Phiên tác nhân vẫn dùng Windows host shell để hooks và đường dẫn thực thi hoạt động tin cậy.

Giao diện và độ tin cậy

  • Kiểm soát phiên nền rõ ràng hơn. Trình đơn hiển thị trạng thái trực tiếp của từng phiên và hộp thoại vượt giới hạn có thể kết thúc nhiều tab đã chọn cùng lúc.
  • Vòng đời an toàn hơn và ghi chú đa ngôn ngữ. Ứng dụng hỏi xác nhận trước khi dừng phiên đang chạy; định danh lifecycle chính xác của Codex được ưu tiên hơn quét rollout mơ hồ; ghi chú cập nhật hỗ trợ mọi ngôn ngữ tích hợp.

v0.1.94

Mới nhất

Localization

  • Giao diện tiếng Việt. Tiếng Việt giờ đã có sẵn trong bộ chọn ngôn ngữ và sẽ được chọn tự động cho các cài đặt hệ thống bằng tiếng Việt.

Browser

  • Khởi động nhanh hơn trong trình duyệt tích hợp. Mỗi tab trình duyệt giờ đều có các phím tắt một cú nhấp cho ChatGPT, Claude, Gemini và Google. Các menu ngữ cảnh của dự án và nhóm cũng có thể tạo trang trình duyệt vĩnh viễn ngay trong phần cây phiên đó.

Hình ảnh và tài liệu

  • Chèn đường dẫn hình ảnh đáng tin cậy trên macOS. Khi WebKit không hiển thị hình ảnh đã sao chép dưới dạng tệp, VelaTerm giờ sẽ đọc nó từ bảng sao chép bản địa và vẫn tải lên dưới dạng đường dẫn tệp thay vì lặng lẽ chuyển sang ký tự thay thế hình ảnh bản địa của tác nhân. Các cửa sổ từ xa luôn hiển thị tùy chọn chèn hình ảnh, giải thích lý do tại sao cần chế độ đường dẫn tệp, và vô hiệu hóa tùy chọn bản địa không khả dụng.

  • Chèn hình ảnh vào tài liệu nguồn. Trình soạn thảo nguồn giờ đây chấp nhận hình ảnh từ bảng sao chép. Các tài liệu Markdown đã lưu sẽ lưu chúng bên cạnh tài liệu dưới assets/ và chèn cú pháp hình ảnh di động Markdown; các bản thảo chưa lưu sẽ nhúng dữ liệu hình ảnh để không bị mất khi các tệp tạm thời bị xóa.

Giao diện

  • Các menu ngữ cảnh vẫn hiển thị và nhắm đúng mục tiêu. Các menu mở gần mép phải sẽ được đo lường và dịch chuyển chính xác. Khi nhấp chuột phải vào một nút cây, giờ chỉ làm nổi bật mục tiêu menu mà không thay đổi lựa chọn hiện tại, và các menu nhóm sẽ bao gồm một terminal được giới hạn trong nhóm đó.

  • Chỉnh sửa sạch sẽ hơn và nhãn trạng thái rõ ràng hơn. Văn bản nguồn không còn hiển thị các ký tự liên kết dạng mũi tên cho các chuỗi như bình luận HTML nữa, tỷ lệ sử dụng sẽ được ghi rõ là “đã sử dụng”, và menu ngữ cảnh bản địa không liên quan của WebView chủ không còn xuất hiện phía sau các menu của VelaTerm nữa.

Sửa lỗi

  • Codex vẫn nằm trong lịch sử terminal bình thường. Các phiên Codex được khởi động bởi VelaTerm giờ sử dụng chế độ terminal tích hợp, vì vậy việc nhấn Esc để ngắt hoặc quay lại không còn làm thay đổi bộ nhớ màn hình terminal và đưa khung xem lùi về đầu nữa. Cài đặt Codex của bạn vẫn không bị ảnh hưởng.

v0.1.93

Mới nhất

Cập nhật

  • Xem những thay đổi trước khi cài đặt. Khi có phiên bản mới, thanh trạng thái và hộp thoại chuyên dụng giờ sẽ hiển thị ghi chú phát hành của phiên bản này. Bạn có thể cập nhật ngay, bỏ qua phiên bản này, tiếp tục tải nền, hoặc mở tệp cài đặt để tải xuống thủ công; tiến trình sẽ được hiển thị theo thời gian thực và ứng dụng sẽ khởi động lại để hoàn tất. Nếu bạn bỏ qua nhiều phiên bản, ghi chú của tất cả các phiên bản trung gian sẽ được hiển thị cùng nhau, chứ không chỉ phiên bản mới nhất.

AI tác nhân

  • Các phiên Codex tự đặt tên cho mình. Một phiên Codex sẽ được đổi tên ngay từ tin nhắn đầu tiên của bạn — giống như cách các phiên Claude đã làm — vì vậy cây danh sách sẽ không còn chứa các tên như “Codex 1”, “Codex 2” nữa. Tên mà bạn tự đặt sẽ không bao giờ bị ghi đè.

  • vspawn và vopen giờ cũng hoạt động trong Codex. Các kỹ năng tích hợp vspawn, vspawn-treevopen cũng được cài đặt vào thư mục kỹ năng của Codex cũng như của Claude, vì vậy $vspawn <task>$vopen <file> có thể hoạt động từ một phiên Codex.

  • Khôi phục Codex đáng tin cậy hơn. Việc ghi lại cuộc trò chuyện Codex để khôi phục sau này không còn phụ thuộc vào bộ đếm thời gian cố định nữa, vì vậy nó vẫn hoạt động ngay cả khi bạn tạm dừng trước khi gõ tin nhắn đầu tiên; và hai phiên Codex được khởi động trong cùng một thư mục sẽ không còn bị liên kết với cuộc trò chuyện của nhau nữa.

  • Việc sử dụng mô hình và ngữ cảnh cho Codex. Bảng thông tin giờ đây hiển thị mô hình hiện tại, mức độ sử dụng cửa sổ ngữ cảnh và công cụ đang được sử dụng trong các phiên Codex, tương tự như cách nó đã làm với Claude, được đọc trực tiếp từ quá trình triển khai của phiên đó.

Từ xa và terminal

  • Trình duyệt tệp từ xa được xây dựng lại. Bộ chọn thư mục cho các phiên từ xa giờ có chức năng tìm kiếm khi gõ, chuyển đến đường dẫn (với ~), di chuyển lên / về đầu / các mục gần đây, và tạo thư mục mới ngay trong terminal.

  • Các liên kết mở trên máy của bạn. Việc nhấp vào một liên kết trong terminal — bao gồm cả liên kết đăng nhập của tác nhân — giờ sẽ mở trong trình duyệt địa phương của bạn, ngay cả từ các cửa sổ từ xa.

  • Tùy chọn “sử dụng lại cơ sở dữ liệu từ xa” được ẩn đi. Nó chỉ xuất hiện khi bạn nhấp chuột phải/Option vào “Connect to Remote”; việc nhấp chuột bình thường luôn kết nối với cơ sở dữ liệu độc lập.

Sửa lỗi

  • Các công cụ vẫn có thể được tìm thấy khi khởi động từ Dock. Việc khởi động VelaTerm từ Dock hoặc Finder giờ không còn khiến nó chỉ còn lại phiên bản PATH đơn giản nữa, vì vậy git và các công cụ khác được cài đặt bằng Homebrew mà tác nhân sử dụng sẽ được tìm thấy đúng chỗ.

  • Các terminal mới mở trong thư mục phù hợp. Việc tạo terminal từ một dự án hoặc nhóm trong thanh bên giờ sẽ mở nó trong thư mục của nút đó, thay vì sử dụng lại thư mục của phiên đang hoạt động cuối cùng.

v0.1.92

Mới nhất

Sửa lỗi

  • Không còn cảnh báo giả về “liên kết SSH bị mất” nữa. Bộ giám sát đường hầm trước đây coi việc tiến trình con chuyển tiếp cổng kết thúc là dấu hiệu liên kết bị mất, dẫn đến việc hiển thị biểu tượng đỏ và xây dựng lại đường hầm. Trên thực tế, bộ nghe chuyển tiếp nằm trong tiến trình ControlMaster, vì vậy việc chuyển tiếp vẫn hoạt động sau khi tiến trình con kết thúc — terminal vẫn hoạt động bình thường trong khi giao diện lại báo rằng liên kết bị hỏng, và việc xây dựng lại sẽ vô ích khiến kết nối tốt bị phá hủy.

Giờ đây liên kết được kiểm tra qua hai giai đoạn: khi tiến trình con kết thúc, VelaTerm sẽ kiểm tra xem cổng chuyển tiếp địa phương còn bộ nghe chưa. Nếu vẫn còn, sẽ không xảy ra gì. Chỉ khi cổng cũng biến mất thì liên kết mới được coi là bị mất và được xây dựng lại. Biểu tượng đỏ cũng được điều chỉnh — nó chỉ xuất hiện sau khi lần thử xây dựng lại đầu tiên thất bại, vì vậy những sự cố tự khắc phục trong vài giây sẽ không còn hiển thị cảnh báo nữa.

Các kết nối bị ngắt thực sự vẫn có thể khôi phục tự động. Nếu tiến trình ControlMaster bị chấm dứt hoặc mạng bị ngắt trong thời gian dài, đường hầm sẽ tự động được xây dựng lại; khi hết số lần thử lại, thông báo sẽ chuyển thành “SSH link is down”, và tính năng Reconnect now sẽ khôi phục phiên làm việc — các tiến trình từ xa vẫn đang chạy và tiếp tục từ điểm dừng trước đó.

v0.1.91

Mới nhất

Phiên bản công khai đầu tiên. Mọi thứ dưới đây đều được tích hợp trong phiên bản này.

AI tác nhân được đối xử như những thành phần quan trọng nhất

  • Hỗ trợ tích hợp sẵn cho chín loại tác nhân — Claude Code, Codex, OpenCode, Copilot CLI, Cursor CLI, Cline, Pi, Antigravity (Gemini CLI) và crush. Bạn chỉ cần chọn loại khi tạo phiên làm việc và nó sẽ được khởi động sẵn sàng sử dụng.

  • Trạng thái của Agent được báo cáo chính xác, chứ không phải đoán mò. VelaTerm sẽ tích hợp cơ chế gọi lại chính thức của từng nhà cung cấp ngay khi khởi động (hooks cho Claude, notify cho Codex, plugin cho OpenCode, v.v.), vì vậy mọi thay đổi trạng thái đều được gửi ngay lập tức về. cây phiên sẽ hiển thị dấu chấm cho biết đang hoạt động, đang chờ bạn, hoặc đã hoàn thành nhưng chưa được xem; bảng bên cạnh cho phép lọc theo trạng thái và thanh trạng thái sẽ hiển thị số lượng theo thời gian thực.

  • Các thông báo hệ thống sẽ được kích hoạt khi một tác nhân cần quyết định quyền truy cập hoặc hoàn thành nhiệm vụ, và việc nhấp vào thông báo đó sẽ đưa bạn ngay đến phiên làm việc tương ứng. Chức năng nhận diện màn hình đóng vai trò dự phòng cho những trường hợp không có cơ chế gọi lại.

  • Các cuộc trò chuyện sẽ được lưu giữ nguyên vẹn. Mã ID phiên riêng của mỗi tác nhân sẽ được ghi lại và lưu trữ, vì vậy việc đóng phiên, khởi động lại ứng dụng, hoặc khôi phục phiên đã lưu đều có thể tiếp tục cuộc trò chuyện ban đầu — sau khi kiểm tra xem nó vẫn còn tồn tại. Claude Code, Codex và Pi cũng có thể tạo phiên song song từ cuộc trò chuyện hiện tại.

  • Các phiên làm việc có thể tạo ra thêm phiên con. Các nhiệm vụ phụ sẽ trở thành phiên con, được tạo ra bởi chính tác nhân hoặc bởi bạn, có thể trong một thư mục git riêng biệt để nhiều tác nhân có thể làm việc trên cùng một kho mã cùng lúc. Một hộp thoại hợp nhất đồ họa sẽ kết hợp các nhánh lại với nhau khi công việc hoàn tất.

  • Những tác nhân chưa cài đặt sẽ nhận được thẻ cài đặt với lệnh khuyến nghị và chức năng cài đặt một cú nhấp, kèm theo việc tự động tìm đường dẫn sau đó. Bảng bên cạnh hiển thị giới hạn sử dụng của Claude và Codex, và bất kỳ cuộc trò chuyện nào cũng có thể được xem ngay tại chỗ hoặc xuất ra dưới dạng bản ghi đầy đủ của Markdown.

Tổ chức các phiên làm việc

  • Cấu trúc dạng cây ba cấp độ — dự án, nhóm, phiên — với khả năng lồng nhóm không giới hạn và các phiên con dưới mỗi phiên. Các nút có thể được di chuyển tự do và trạng thái được giữ nguyên ngay cả sau khi khởi động lại.

  • Bất kỳ nhánh con nào cũng có thể được lưu vào kho lưu trữ: được ẩn trong bảng kho lưu trữ mà không xóa dữ liệu, có thể khôi phục bất cứ lúc nào, và vẫn có thể tiếp tục cuộc trò chuyện.

  • Chức năng tìm kiếm nội dung toàn cục (⌘⇧F) được hỗ trợ bởi chỉ mục SQLite FTS5, bao gồm cả bản ghi của tác nhân và kết quả từ terminal, với cây kết quả ở bên trái, bản xem trước có liên kết ở bên phải, và chức năng điều hướng qua các phiên.

Một terminal chuyên nghiệp, trước tiên

  • Phiên bản PTYs thực sự (portable-pty, từ wezterm), vì vậy vim, htop và các giao diện TUI của tác nhân đều hoạt động chính xác như mong đợi.

  • Nhiều tab với khả năng chia màn hình tùy ý — mỗi tab có cấu trúc chia màn hình riêng, có thể chia theo chiều ngang hoặc chiều dọc tùy ý.

  • Vòng đời tab theo kiểu trình duyệt: các tab ở nền vẫn hoạt động và các tiến trình của chúng vẫn chạy, ngân sách tab đang hoạt động có thể được cấu hình, và nếu vượt quá ngân sách thì phiên làm việc không hoạt động lâu nhất sẽ bị đóng. Việc đóng tab mới chính là cách kết thúc một tiến trình.

  • Khả năng gõ vẫn mượt mà ngay cả khi có tải cao, nhờ vào cơ chế lập lịch ưu tiên đầu vào và việc kết hợp các khung đầu ra — việc một tác nhân chiếm hết màn hình sẽ không làm giảm tốc độ gõ của bạn nữa.

  • Chức năng tìm kiếm ngay trong terminal (⌘F), ghi lại và phát lại phiên làm việc, dán hoặc kéo hình ảnh trực tiếp vào tác nhân, và khả năng chuyển đổi tự do giữa cmd, PowerShell và Git Bash trên Windows.

Vượt ra ngoài terminal

  • Chạy vopen <file> trong bất kỳ phiên nào để mở tab tài liệu ngay tại chỗ, cùng với các terminal của bạn: Markdown sẽ mở dưới dạng trình soạn thảo WYSIWYG và xuất ra định dạng vector PDF, hình ảnh sẽ mở trong trình xem ảnh tích hợp, và các tệp nguồn sẽ được tô sáng theo cú pháp.

  • Tab trình duyệt tích hợp có thể được dùng làm tab tạm thời hoặc được gắn cố định vào cây dự án như một nút vĩnh viễn.

Sử dụng từ xa và trên nhiều thiết bị

  • Ứng dụng máy tính để bàn cung cấp giao diện tương tự qua web, chia sẻ chung một tập hợp phiên làm việc đang hoạt động. Dữ liệu đầu ra được gửi đến mọi thiết bị khách hàng theo thời gian thực và bất kỳ thiết bị nào cũng có thể gõ — cả máy tính để bàn và trình duyệt đều xem và điều khiển cùng một terminal.

  • Mã hóa đầu cuối với khóa NaCl cho mỗi khung hình, kết nối thông qua mã QR hoặc liên kết, cùng với quản lý theo từng thiết bị bao gồm cả việc hủy bỏ cá nhân.

  • Chế độ không giao diện: --serve vẫn chạy dịch vụ tương tự trên máy chủ không có giao diện người dùng, sẵn sàng để trình duyệt kết nối.

  • Kết nối từ xa qua SSH sẽ đưa các máy tính từ xa vào cây dữ liệu của bạn. VelaTerm kết nối trực tiếp từ máy tính để bàn, triển khai một vela-server nhẹ ở phía bên kia, và các phiên làm việc từ xa sẽ hoạt động giống như phiên trên máy cục bộ. Đường hầm kết nối sẽ tự động khôi phục và kết nối lại.

  • Điện thoại di động: ứng dụng cung cấp giao diện web dành cho di động, cùng với vỏ ứng dụng gốc (xterm được hiển thị với đầu vào gốc và thanh phím phụ trợ).

Nền tảng và tính thẩm mỹ

  • macOS, Linux và Windows.

  • Cập nhật tự động, kèm theo các phiên bản macOS đã được xác thực bởi chuyên gia.

  • Các chủ đề sáng và tối sẽ tự động đi theo thiết lập hệ thống, và các phiên tác nhân đang chạy sẽ nhận được thông báo về sự thay đổi thông qua thông báo terminal tiêu chuẩn (DEC 2031) — màu sắc của giao diện TUI sẽ thay đổi ngay lập tức, không cần khởi động lại.

  • Ngôn ngữ mặc định là tiếng Anh, kèm theo 10 ngôn ngữ khác được tích hợp theo thiết lập vùng của hệ thống.

Mỗi phiên bản đều đi kèm với cập nhật tự động — VelaTerm sẽ tự động cung cấp phiên bản mới nhất. Bạn có thể tự tải về từ trang tải về.