Files
community-plugins/opencode-companion/translations/vi.json
T
weinguyenandGitHub e77d7ef7fb Add OpenCode Companion plugin (#286)
* Add OpenCode Panel plugin
Introduce initial implementation of the OpenCode Panel plugin.
This commit includes:
- Bar widget for status and quick actions.
- Chat panel with session selection, message history, and input.
- Background service for OpenCode server management, SSE event
  handling, and state persistence.
- Plugin configuration, documentation, and internationalization.

* Refine session chooser UI layout

Remove an unnecessary spacer and apply top-justification to improve
vertical alignment. Add a subtle background fill to the session list.

* Introduce session search in chooser

Enable live filtering of sessions in the chooser. Matches against
title, slug, ID, and directory. Search is case-insensitive.

* Support multi-question agent requests and clear composer

Implement multi-question agent replies by accumulating choices locally.
A "Submit" button becomes enabled only after all questions are answered.
The chat composer clears its text after sending by updating its key,
forcing the UI to re-render an empty input field.
Updated translations for send hints and question submit button.

* Add UI mode setting for compact layout

Introduce a `ui_mode` setting (Full/Compact) that dynamically adjusts
panel
layout. Compact mode reduces padding, font sizes, and gaps, hiding some
secondary details to minimize the panel footprint. Layout metrics
recompute on every render based on this setting.

* Delete opencode-panel

* Update thumbnail.webp

* Render chat messages newest-first

Newest message shows at top. Scrolling down reveals older messages.
This avoids scroll offset resets on re-mount in older shell APIs.
Thinking bubble now appears above the newest message.

* FEAT: Add panel layout setting

Provide option for panel to fill right side or appear compact near
click.
Introduces a new panel entry for the "fill right" mode.

* Rename plugin to OpenCode Companion

Update plugin ID, panel entries, IPC commands, and state paths.

* Only send model override when known

Stale default_model now falls back to no override instead of failing
every turn. Warn when configured default unavailable.

* Update service.luau

* fix(opencode-companion): secure terminal open, publish MCP status,
respect auto_start

- Shell-quote host and session id in the "open in terminal" command so a
  crafted server_host cannot inject extra shell commands
- Publish opencode.mcp_status and render it as a collapsible footer
  (previously declared but never observable)
- Honor auto_start: skip managed-server start on load when set to false
- Fix broken thumbnail link in README (assets/thumbnail.webp ->
  thumbnail.webp)

* fix Terminal command injection,MCP status publication and UI
2026-08-09 13:43:51 -04:00

171 lines
6.7 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"state": {
"tip": {
"online": "OpenCode: đã kết nối",
"offline": "OpenCode: ngắt kết nối",
"starting": "OpenCode: đang khởi động…",
"busy": "OpenCode: đang xử lý…",
"waiting_permission": "OpenCode: chờ cấp quyền"
},
"unread": "{count} phản hồi chưa đọc"
},
"chooser": {
"title": "OpenCode — Phiên",
"refresh": "Làm mới",
"new_session": "Tạo phiên mới",
"empty": "Chưa có phiên nào. Tạo một phiên để bắt đầu.",
"open": "Mở phiên",
"delete": "Xóa phiên",
"delete_confirm": "Xác nhận xóa",
"delete_cancel": "Hủy",
"search": "Tìm phiên…",
"no_match": "Không có phiên nào khớp."
},
"chat": {
"title": "OpenCode Chat",
"you": "Bạn",
"assistant": "Trợ lý",
"empty": "Chưa có tin nhắn. Gửi prompt để bắt đầu.",
"thinking": "Đang suy nghĩ…",
"stop": "Dừng",
"send": "Gửi (Ctrl+Enter)",
"refresh": "Làm mới",
"open_terminal": "Mở trong terminal",
"back": "Quay lại danh sách phiên",
"placeholder": "Hỏi OpenCode bất cứ điều gì… (Enter = xuống dòng, Ctrl+Enter = gửi)",
"select_model": "Mô hình",
"select_agent": "Agent",
"dismiss_error": "Bỏ qua"
},
"permission": {
"title": "Cần cấp quyền",
"default_message": "OpenCode muốn thực hiện một hành động cần sự chấp thuận của bạn.",
"allow": "Cho phép",
"allow_remember": "Luôn cho phép",
"deny": "Từ chối"
},
"mcp": {
"title": "Máy chủ MCP",
"connected": "Đã kết nối",
"failed": "Lỗi",
"disabled": "Đã tắt"
},
"error": {
"exe_not_found": "Không tìm thấy opencode trên PATH",
"exe_not_found_detail": "Cài đặt opencode và đảm bảo nó có trên PATH.",
"server_failed": "Không thể khởi động máy chủ OpenCode",
"server_timeout": "Máy chủ không khởi động kịp thời gian",
"server_timeout_detail": "Máy chủ không trở nên sỏng trong khoảng thời gian chờ.",
"external_not_configured": "URL máy chủ bên ngoài chưa được cấu hình",
"connection_failed": "Không thể kết nối đến máy chụ",
"connection_failed_detail": "Máy chủ không phản hồi health check.",
"session_not_found": "Không tìm thấy phiên",
"create_session_failed": "Không thể tạo phiên",
"delete_session_failed": "Không thể xóa phiên",
"abort_failed": "Không thể hủy phiên",
"prompt_failed": "Không thể gửi prompt",
"permission_failed": "Không thể phản hồi yêu cầu quyền",
"question_failed": "Không thể trả lời câu hỏi",
"session_error": "Phiên gặp lỗi",
"session_error_detail": "Agent đã dừng do gặp lỗi.",
"sse_disconnected": "Luồng sự kiện đã ngắt kết nối"
},
"notify": {
"title": "OpenCode",
"new_session": "Đang tạo phiên mới…",
"permission_title": "Yêu cầu quyền",
"permission_body": "OpenCode đang chờ bạn phê duyệt."
},
"time": {
"just_now": "vừa xong",
"minutes_ago": "{n} phút trước",
"hours_ago": "{n} giờ trước",
"days_ago": "{n} ngày trước"
},
"settings": {
"server_mode": {
"label": "Chế độ máy chủ",
"description": "Cách plugin kết nối đến OpenCode. 'auto' quản lý máy chụ cục bộ; 'external' kết nối đến URL do người dùng chỉ định."
},
"server_host": {
"label": "Máy chủ host",
"description": "Hostname máy chủ cục bộ bind vào. Mặc định: 127.0.0.1 (chỉ loopback)."
},
"server_port": {
"label": "Cổng máy chủ",
"description": "Cổng máy chủ cục bộ lắng nghe. Mặc định: 4096."
},
"server_url": {
"label": "URL máy chủ bên ngoài",
"description": "URL cơ sở của máy chủ OpenCode bên ngoài (ví dụ: http://127.0.0.1:4096). Dùng khi chế độ máy chủ là 'external'."
},
"default_workspace": {
"label": "Thư mục làm việc mặc định",
"description": "Thư mục làm việc mặc định cho phiên mới. Để trống để dùng thư mục hiện tại."
},
"default_model": {
"label": "Model mặc định",
"description": "Model mặc định theo định dạng 'provider/model' (ví dụ: 'anthropic/claude-3-5-sonnet-20241022'). Để trống để dùng mặc định của máy chủ."
},
"default_agent": {
"label": "Agent mặc định",
"description": "Agent mặc định cho phiên mới. Mặc định: 'build'."
},
"auto_start": {
"label": "Tự động khởi động",
"description": "Tự động khởi động máy chủ cục bộ khi plugin tải."
},
"show_tool_calls": {
"label": "Hiện tool calls",
"description": "Hiển thị trạng thái tool call trong khung chat."
},
"show_reasoning": {
"label": "Hiện reasoning",
"description": "Hiển thị nội dung reasoning/thinking trong khung chat."
},
"notify_on_complete": {
"label": "Thông báo khi hoàn tất",
"description": "Hiển thị thông báo trên desktop khi phản hồi hoàn tất."
},
"max_messages_load": {
"label": "Số tin nhắn tải tối đa",
"description": "Số tin nhắn tải mỗi phiên (1–100). Kéo thanh trượt lên mức cao nhất để không giới hạn. Mặc định: 50."
},
"debug_logging": {
"label": "Gỡ lỗi",
"description": "In thông tin gỡ lỗi vào nhật ký Noctalia."
},
"language": {
"label": "Ngôn ngữ",
"description": "Ngôn ngữ giao diện của plugin này. 'Tự động' theo ngôn ngữ của Noctalia.",
"options": {
"auto": "Tự động (theo shell)",
"en": "English",
"vi": "Tiếng Việt"
}
},
"ui_mode": {
"label": "Chế độ giao diện",
"description": "Full hiển thị bố cục rộng rãi; Compact thu nhỏ padding, chữ và ẩn chi tiết phụ để panel gọn gàng tối giản.",
"options": {
"full": "Full",
"compact": "Compact"
}
},
"panel_mode": {
"label": "Kiểu panel",
"description": "Full-height sát phải mở panel cao trọn màn hình ghim vào mép phải; Compact hiển thị panel nổi gần chỗ bấm trên thanh bar.",
"options": {
"fill_right": "Thanh cao full màn bên phải",
"compact": "Gọn (gần điểm bấm)"
}
}
},
"question": {
"title": "Câu hỏi",
"custom": "Trả lời tùy chỉnh",
"cancel": "Hủy",
"submit": "Gửi"
}
}