{"id":46649692,"url":"https://github.com/meesudzu/jx2-devstudio","last_synced_at":"2026-03-13T17:01:15.608Z","repository":{"id":341379014,"uuid":"1169905381","full_name":"meesudzu/jx2-devstudio","owner":"meesudzu","description":"JX2 DevStudio – IDE chuyên dụng cho phát triển server game JX2 (Kingsoft Jianxia 2) Hỗ trợ đa mã hóa cho file Trung Quốc (GB18030) \u0026 Việt Nam (Windows-1252).","archived":false,"fork":false,"pushed_at":"2026-03-08T05:09:04.000Z","size":33076,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-08T09:13:17.677Z","etag":null,"topics":["electron","game-dev-tools","gb18030","jx2-development","kingsoft-engine","lua-editor","windows-1252"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/meesudzu.png","metadata":{"files":{"readme":"readme.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-01T12:07:19.000Z","updated_at":"2026-03-08T04:55:56.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/meesudzu/jx2-devstudio","commit_stats":null,"previous_names":["meesudzu/jx2-ide"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/meesudzu/jx2-devstudio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meesudzu%2Fjx2-devstudio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meesudzu%2Fjx2-devstudio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meesudzu%2Fjx2-devstudio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meesudzu%2Fjx2-devstudio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/meesudzu","download_url":"https://codeload.github.com/meesudzu/jx2-devstudio/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meesudzu%2Fjx2-devstudio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30471114,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-13T11:00:43.441Z","status":"ssl_error","status_checked_at":"2026-03-13T11:00:23.173Z","response_time":60,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["electron","game-dev-tools","gb18030","jx2-development","kingsoft-engine","lua-editor","windows-1252"],"created_at":"2026-03-08T06:02:24.532Z","updated_at":"2026-03-13T17:01:15.598Z","avatar_url":"https://github.com/meesudzu.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ch1 align=\"center\"\u003e⚔️ JX2 DevStudio\u003c/h1\u003e\n  \u003cp align=\"center\"\u003e\n    IDE chuyên dụng cho phát triển server game \u003cstrong\u003eJX2 (Kingsoft Jianxia 2)\u003c/strong\u003e\u003cbr/\u003e\n    Hỗ trợ đa mã hóa cho file Trung Quốc (GB18030) \u0026amp; Việt Nam (Windows-1252).\n  \u003c/p\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Electron-33-47848F?logo=electron\u0026logoColor=white\" alt=\"Electron\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/React-18-61DAFB?logo=react\u0026logoColor=black\" alt=\"React\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Monaco_Editor-VS_Code_Engine-007ACC?logo=visualstudiocode\" alt=\"Monaco\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/TypeScript-5.4-3178C6?logo=typescript\u0026logoColor=white\" alt=\"TypeScript\" /\u003e\n  \u003cimg src=\"https://img.shields.io/github/license/meesudzu/jx2-ide\" alt=\"License\" /\u003e\n\u003c/p\u003e\n\n---\n\n## 📸 Ảnh chụp màn hình\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"screenshots/welcome-screen.png\" alt=\"Màn hình chào mừng\" width=\"800\" /\u003e\u003cbr/\u003e\n  \u003cem\u003eMàn hình chào mừng — Trang khởi động với các phím tắt nhanh\u003c/em\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"screenshots/lua-editor.png\" alt=\"Trình soạn thảo Lua\" width=\"800\" /\u003e\u003cbr/\u003e\n  \u003cem\u003eTrình soạn thảo Lua — Tô sáng cú pháp với hỗ trợ mã hóa GB18030 \u0026 Windows-1252\u003c/em\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"screenshots/grid-view.png\" alt=\"Chế độ bảng\" width=\"800\" /\u003e\u003cbr/\u003e\n  \u003cem\u003eChế độ bảng — Xem file TSV dạng bảng tính với text tiếng Việt (Windows-1252)\u003c/em\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"screenshots/text-view.png\" alt=\"Chế độ văn bản\" width=\"800\" /\u003e\u003cbr/\u003e\n  \u003cem\u003eChế độ văn bản — Dữ liệu phân cách bằng tab với hiển thị đúng mã hóa\u003c/em\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"screenshots/file-explorer.png\" alt=\"Trình duyệt file\" width=\"800\" /\u003e\u003cbr/\u003e\n  \u003cem\u003eTrình duyệt file — Duyệt dự án với tên thư mục \u0026 file tiếng Trung (GB18030)\u003c/em\u003e\n\u003c/p\u003e\n\n---\n\n## 🎯 Tại sao cần JX2 DevStudio?\n\nServer game JX2 sử dụng **mã hóa cũ** mà các trình soạn thảo thông thường xử lý sai:\n\n| Loại file | Mã hóa | Nội dung |\n|-----------|--------|----------|\n| Script `.lua` | **GB18030** và **Windows-1252** | Comment tiếng Trung, tên biến, hội thoại NPC |\n| Config `.txt` | **GB18030** và **Windows-1252** | Tên vật phẩm tiếng Việt, mô tả kỹ năng |\n| Tên file | **GB18030** | Ký tự tiếng Trung trong tên thư mục/file |\n\nCác IDE thông dụng (VS Code, Sublime) sẽ làm hỏng các file này hoặc không thể tìm kiếm xuyên mã hóa. **JX2 DevStudio giải quyết vấn đề này.**\n\n## ✨ Tính năng\n\n### 🔤 Engine Đa Mã Hóa (Lõi)\n- **Nút chuyển đổi** — Nhấn thanh trạng thái để chuyển giữa GB18030 / Windows-1252 / UTF-8\n- **Tái hiểu byte không mất dữ liệu** — Giải mã lại byte gốc mà không làm hỏng (không bao giờ tự chuyển sang UTF-8)\n- **Nhận diện thông minh** — Tự phát hiện mã hóa bằng phương pháp phân tích byte + gợi ý phần mở rộng file\n- **Tên file GB18030** — Trình duyệt file hiển thị đúng tên file mã hóa tiếng Trung\n\n### 🔍 Tìm kiếm xuyên mã hóa\n- Tìm kiếm chuỗi đồng thời trên **cả ba mã hóa**\n- So khớp ở mức byte — tìm \"Trang Bị\" và tìm thấy trong file Windows-1252\n- **Regex search** — Hỗ trợ biểu thức chính quy chuẩn xác\n- **Tìm \u0026 thay thế toàn dự án** — Replace All trên phạm vi toàn bộ project\n- **Bộ lọc** — Lọc theo file extension, thư mục include/exclude\n- **Nhóm theo file** — Kết quả nhóm theo file với collapsible sections\n- Kết quả hiển thị mã hóa nào khớp, kèm file/dòng/ngữ cảnh\n\n### 📝 Trình soạn thảo\n- **Monaco Editor** (engine của VS Code) với giao diện tối tùy chỉnh\n- **Tô sáng cú pháp Lua** — Tokenizer Monarch đầy đủ cho từ khóa, chuỗi, comment Lua\n- **Xem config dạng bảng** — Bảng tính AG Grid cho file TSV .txt với thêm/xóa hàng, kéo thả sắp xếp thứ tự\n- Chuyển đổi giữa chế độ văn bản và chế độ bảng\n- **Xem thay đổi (Diff View)** — So sánh nội dung gốc vs hiện tại bằng Monaco DiffEditor\n- **Split-Screen Editor** — Chia editor thành 2 panel cạnh nhau để làm việc đồng thời\n\n### 📂 Tích hợp Git\n- **Git Panel** (Ctrl+Shift+G) — Xem trạng thái, stage/unstage file, commit (Ctrl+Enter), push, pull\n- **Quản lý nhánh** — Chuyển nhánh, xem lịch sử commit\n- **Hỗ trợ GB18030** — Decode path tiếng Trung bằng iconv-lite, stage/unstage từng file qua `--pathspec-from-file`\n\n### 📋 Theo dõi Log\n- Console theo dõi thời gian thực cho log server JX2\n- Tab cho **Game Server**, **S3 Relay**, **Gateway**\n- Mức log có màu sắc (error/warn/info)\n- Lọc text và tự cuộn\n\n## 🚀 Bắt đầu\n\n### Yêu cầu trước\n- **Node.js 20+** (cài qua [nvm](https://github.com/nvm-sh/nvm))\n- **Git**\n\n#### Gói cần thiết cho Linux / WSL\n\nElectron cần các thư viện hệ thống sau. Cài đặt trước:\n\n```bash\nsudo apt-get update \u0026\u0026 sudo apt-get install -y \\\n  libnss3 libnspr4 libatk1.0-0 libatk-bridge2.0-0 \\\n  libcups2 libdrm2 libgtk-3-0 libgbm1 libasound2 \\\n  libxshmfence1 libx11-xcb1 libxcomposite1 libxdamage1 \\\n  libxrandr2 libpango-1.0-0 libcairo2\n```\n\n\u003e **Lưu ý WSL:** Bạn cũng cần một display server cho GUI. **Windows 11** có WSLg tích hợp sẵn (hoạt động tự động). Trên **Windows 10**, cài [VcXsrv](https://sourceforge.net/projects/vcxsrv/) và chạy `export DISPLAY=:0` trước khi khởi động ứng dụng.\n\n### Cài đặt \u0026 Chạy\n\n```bash\n# Clone\ngit clone git@github.com:meesudzu/jx2-ide.git\ncd jx2-ide\n\n# Cài dependencies\nnpm install\n\n# Khởi chạy chế độ phát triển\nnpm run dev\n```\n\nLệnh này mở IDE Electron. Nhấn **Mở Thư Mục** → chọn thư mục server JX2 của bạn.\n\n### Build bản Production\n\n```bash\n# Build cho nền tảng hiện tại\nnpm run build:current\n\n# Build cho nền tảng cụ thể\nnpm run build:win     # Windows (.exe)\nnpm run build:mac     # macOS (.dmg)\nnpm run build:linux   # Linux (.AppImage)\n```\n\nFile binary xuất ra thư mục `release/`.\n\n## 🏗️ Cấu trúc dự án\n\n```\njx2-ide/\n├── electron/                     # Tiến trình chính (Node.js)\n│   ├── main.ts                   # Entry point, quản lý cửa sổ\n│   ├── preload.ts                # Cầu nối IPC (context isolation)\n│   ├── core/\n│   │   ├── EncodingManager.ts    # ★ Engine mã hóa mức byte\n│   │   └── SearchEngine.ts       # ★ Tìm kiếm xuyên mã hóa\n│   └── ipc/\n│       ├── fileHandlers.ts       # Đọc/ghi/liệt kê file\n│       ├── searchHandlers.ts     # IPC tìm kiếm\n│   │   └── logHandlers.ts        # Theo dõi log\n│   │   └── gitHandlers.ts        # Git operations\n├── src/                          # Tiến trình renderer (React)\n│   ├── App.tsx                   # Layout gốc\n│   ├── stores/editorStore.ts     # Trạng thái Zustand\n│   ├── components/\n│   │   ├── FileExplorer/         # Cây file + giải mã GB18030\n│   │   ├── Editor/               # Monaco + tô sáng Lua\n│   │   ├── TabBar/               # Tab file đang mở\n│   │   ├── StatusBar/            # Chuyển đổi mã hóa\n│   │   ├── SearchPanel/          # Giao diện tìm kiếm\n│   │   ├── TabularView/          # Trình soạn file TSV (AG Grid)\n│   │   ├── GitPanel/             # Panel Git (stage/commit/push)\n│   │   └── LogWatcher/           # Console log server\n│   └── styles/index.css          # Giao diện tối\n├── .github/workflows/\n│   └── release.yml               # CI/CD tự build khi push tag\n├── electron-builder.yml          # Cấu hình build\n├── plan.md                       # Lộ trình\n└── CHANGELOG.md                  # Nhật ký thay đổi\n```\n\n## ⌨️ Phím tắt\n\n### Chung\n\n| Phím tắt | Hành động |\n|----------|-----------|\n| `Ctrl+O` | Mở thư mục dự án |\n| `Ctrl+S` | Lưu file hiện tại |\n| `Ctrl+Shift+F` | Tìm kiếm xuyên mã hóa toàn dự án |\n| `Shift+Shift` | Tìm kiếm theo tên file |\n| `` Ctrl+` `` | Bật/tắt theo dõi log |\n| `Ctrl+Shift+O` | Bật/tắt panel Outline |\n| `Ctrl+Shift+J` | Mở/đóng bảng tra cứu JX2 Function Reference |\n| `Ctrl+Shift+E` | Mở/đóng Batch Encoding Converter |\n| `Ctrl+\\` | Chia đôi editor (Split-Screen) |\n| `Ctrl+Shift+G` | Mở/đóng Git Panel |\n\n### Trình soạn thảo (Monaco)\n\n| Phím tắt | Hành động |\n|----------|-----------|\n| `Ctrl+F` | Tìm kiếm trong file |\n| `Ctrl+H` | Tìm \u0026 thay thế trong file |\n| `Ctrl+D` | Chọn từ tiếp theo giống selection |\n| `Ctrl+Shift+L` | Chọn tất cả từ giống selection |\n| `Alt+Click` | Thêm con trỏ (multi-cursor) |\n| `Ctrl+Click` / `F12` | Go-to-definition (Include paths) |\n| `Ctrl+F2` | Bật/tắt bookmark tại dòng hiện tại |\n| `F2` | Nhảy đến bookmark tiếp theo |\n| `Shift+F2` | Nhảy đến bookmark trước đó |\n\n## 🇻🇳 Gõ tiếng Việt (IME)\n\nJX2 DevStudio sử dụng Electron (Chromium), **yêu cầu bộ gõ tiếng Việt ở chế độ \"Preedit\"** để hoạt động đúng. Nếu gõ tiếng Việt bị mất chữ hoặc hiển thị sai, hãy kiểm tra cấu hình bộ gõ:\n\n### ibus-bamboo (khuyến nghị)\n1. Chuột phải vào icon bộ gõ trên thanh hệ thống → **Preferences**\n2. Tại mục **\"Kiểu gõ\"**, chọn **\"Dùng editor giả\"** (Preedit)\n3. **Không** dùng chế độ \"Surrounding text\" hoặc \"Backspace\"\n\n### fcitx-unikey\n1. Mở **Fcitx Configuration** → chọn **Unikey**\n2. Bật **\"Preedit\"** trong phần cài đặt\n\n### Tại sao cần Preedit?\n\nChế độ \"Surrounding text/Backspace\" gửi ký tự thô (ví dụ: `a`) rồi xóa và thay bằng ký tự đã tổ hợp (ví dụ: `â`). Tuy nhiên, ký tự tổ hợp bị mất ở tầng Chromium trước khi đến trình soạn mã. Chế độ **Preedit** sử dụng W3C Composition API (chuẩn web), tương thích hoàn toàn với Electron/Chromium.\n\n\u003e **Lưu ý:** VS Code cũng sử dụng Electron nhưng có xử lý đặc biệt cho IME ở mức thấp. JX2 DevStudio hoạt động tốt nhất với chế độ Preedit.\n\n## 📦 Công nghệ sử dụng\n\n| Thành phần | Công nghệ |\n|------------|-----------|\n| Shell Desktop | Electron 33 |\n| UI Framework | React 18 + TypeScript |\n| Bundler | Vite 5 |\n| Trình soạn thảo | Monaco Editor (engine VS Code) |\n| Mã hóa | iconv-lite |\n| Bảng dữ liệu | AG Grid |\n| Theo dõi file | chokidar |\n| Quản lý trạng thái | Zustand |\n| Git | simple-git |\n| CI/CD | GitHub Actions |\n| Đóng gói | electron-builder |\n\n## 🗺️ Lộ trình\n\nXem [plan.md](plan.md) để biết lộ trình đầy đủ. Các mốc sắp tới:\n\n- **v1.1** ✅ — Lua autocomplete, go-to-definition, document outline\n- **v1.2** ✅ — Tìm kiếm regex, tìm \u0026 thay thế toàn dự án, bộ lọc tìm kiếm, nhóm kết quả, batch encoding converter, symbol masks\n- **v1.3** ✅ — Grid view thêm/xóa hàng cột, Config diff view, Batch converter target folders\n- **v1.4** ✅ — Tích hợp Git cơ bản, Split-screen editor, JX2 Menu, Cải thiện Grid View\n- **v1.5** — Tích hợp server JX2 (start/stop, theo dõi sức khỏe)\n- **v1.6** — Kết nối từ xa WSL / SSH\n- **v2.0** — Hệ thống plugin, đa ngôn ngữ\n\n## 🤝 Đóng góp\n\n1. Fork repository\n2. Tạo nhánh tính năng: `git checkout -b feature/tinh-nang-cua-toi`\n3. Thực hiện thay đổi và cập nhật `plan.md` + `CHANGELOG.md`\n4. Push và tạo Pull Request\n\n## 📄 Giấy phép\n\nMIT © [meesudzu](https://github.com/meesudzu)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeesudzu%2Fjx2-devstudio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmeesudzu%2Fjx2-devstudio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeesudzu%2Fjx2-devstudio/lists"}