Tài liệu tổng hợp quá trình migration Riot Account Manager. Tài liệu phân tích/kế hoạch chi
tiết nằm trong docs/ (Phase 1–4). Ưu tiên #1 xuyên suốt: không mất dữ liệu người dùng.
- Java 11 + Swing (GUI),
org.json,javax.crypto(AES-256/ECB),java.awt.Robot, PowerShell + Win32 cho điều khiển cửa sổ. - Đóng gói: JAR → Launch4j/jpackage (kèm JRE). Người dùng không cần cài Java (runtime bundled).
- Dữ liệu:
%LOCALAPPDATA%\RiotAccountManager\{accounts.dat, config.json}.accounts.dat=Base64(AES-256/ECB(JSON array)), key =SHA-256(MachineGuid).
app-tauri/
├── src/ # Frontend: React 18 + TypeScript + Vite
│ ├── App.tsx, main.tsx, styles.css, types.ts
│ ├── components/ (AccountTable, ConfigPanel, Toast)
│ ├── dialogs/ (Account, Settings, About, Welcome)
│ ├── i18n/ (strings vi/en + context)
│ └── lib/api.ts (typed IPC bindings)
├── crates/core/ # Rust core (KHÔNG phụ thuộc GUI/WebKit → unit-test mọi nền)
│ └── src/ model, paths, crypto, config, store, settings, startup, riot
└── src-tauri/ # Vỏ Tauri: commands.rs, lib.rs, main.rs, tauri.conf.json
- Backend Rust giữ toàn bộ business logic + truy cập OS; React chỉ là view +
invoke. - Tách
ram-core(không webkit) để test logic dữ liệu/mã hóa trên Linux/CI. - Native, nhẹ, không cần Java runtime; dùng WebView2 sẵn có trên Windows 10/11.
| Nhóm | Tính năng | Trạng thái |
|---|---|---|
| A | Add/Edit/Delete/List/Select account, Region combo, Note, hover | ✅ |
| B | Quick Login (nút + double-click), auto-fill, clear field, auto-submit, special chars | ✅ (xem ghi chú DPI ở KNOWN_ISSUES) |
| C | Detect running/visible/tray, focus/restore, measure window, launch, status 3s, Open/Focus | ✅ |
| D | Auto-detect path, browse (dialog plugin), validate, persist, hiển thị path | ✅ |
| E | Run at Windows Startup, sync on launch, Auto-click Login, persist settings | ✅ |
| F | Encryption, machine-bound, atomic write, backup, rollback, migration, load, error-tolerant | ✅ (nâng cấp sang DPAPI) |
| G | Main window 3 vùng, gradient header, buttons, Toast non-blocking, icon, top-right, resizable, About, Welcome, re-show welcome | ✅ |
| H | VI/EN switch, persist language, full localization, default = VI | ✅ (xem ghi chú prefs) |
| I | Portable, EXE installer (NSIS), MSI (WiX), no-Java, CI, Win10/11 | ✅ (build qua CI) |
62/62 điểm tính năng được migrate. Các mục có thay đổi/cần lưu ý liệt kê bên dưới và trong
KNOWN_ISSUES.md.
- Mã hóa: ECB (Java) → DPAPI (Windows) cho dữ liệu mới (Phase 7). Vẫn đọc được
dữ liệu ECB cũ để migrate. Định dạng mới có prefix
RAM2:. - Thông báo: Swing
Toast(JWindow) → React Toast non-blocking (giữ nguyên trải nghiệm). - Window state: Tauri lưu vị trí mặc định góc trên-phải qua config window; (xem KNOWN_ISSUES về "remember window state" nếu cần nâng cao).
- Language/Welcome prefs: trước ở Java
Preferences(registry JavaSoft) → nay ởlocalStorage+config.json. Có thể reset 1 lần khi nâng cấp (không ảnh hưởng account).
- Không có tính năng nào bị bỏ. Các điểm phụ thuộc OS sâu (auto-login bằng
enigo, focus cửa sổ, DPAPI, startup registry) chỉ chạy trên Windows và chưa thể chạy GUI test tự động trong môi trường CI Linux — cần kiểm thử thủ công trên Windows (xemKNOWN_ISSUES.md, mục test matrix).
- Loại bỏ phụ thuộc JRE: app native, nhẹ hơn nhiều.
- Mã hóa mạnh hơn: thay ECB (lộ pattern) bằng DPAPI (không hard-code key, không plaintext).
enigo.text()gõ Unicode trực tiếp → chính xác hơnRobottypeChar thủ công (nhiều ký tự hơn).- Tách core khỏi GUI → testable, dễ bảo trì.
- Toàn bộ command trả
Result<_, String>→ error handling nhất quán; logging qualogcrate. - Migration có backup + rollback + atomic write (giữ an toàn dữ liệu).
Xem KNOWN_ISSUES.md (đầy đủ). Tóm tắt:
- Hành vi auto-login/DPI của
enigocần xác minh trên Windows thật. - Downgrade về bản Java sau khi đã migrate sang DPAPI cần dùng
accounts.dat.bak. - Fallback machine-id (khi không đọc được MachineGuid) có thể lệch giữa Java và Rust.
- Node 18+ và Rust stable (>= 1.85 do dependency
edition2024). - Windows: WebView2 (mặc định có trên Win10/11). Linux dev:
libwebkit2gtk-4.1-dev,libgtk-3-dev,libxdo-dev,libayatana-appindicator3-dev,librsvg2-dev.
cd app-tauri
npm install
npm run tauri dev # mở app dev (hot reload)cd app-tauri
cargo test -p ram-core # gồm test tương thích dữ liệu Java
npm run build # type-check + build frontendcd app-tauri
npm install
npm run tauri build- Tạo tag
vX.Y.Zvà push → workflow.github/workflows/tauri-release.yml(windows-latest) build NSIS.exe, WiX.msi, và zip portable, rồi đính kèm vào GitHub Release. - Hoặc chạy thủ công
workflow_dispatchvới input version.
npm run tauri build (trên Windows) tạo trong app-tauri/target/release/:
bundle/nsis/*.exe— EXE Installer (NSIS, per-user, có shortcut).bundle/msi/*.msi— MSI Installer (WiX).RiotAccountManager.exe(release) — Portable (self-contained, chỉ cần WebView2 hệ thống).- Không yêu cầu cài Java / runtime thủ công.
- ✅ Không mất dữ liệu (test chứng minh đọc/migrate dữ liệu Java).
- ✅ Không mất chức năng (đối chiếu 62/62 trong feature-inventory).
- ✅ Tương thích dữ liệu cũ (đọc accounts.dat/config.json của Java).
- ✅ Ổn định (atomic IO, backup, rollback, error handling).
- ✅ Bảo mật (DPAPI, không plaintext, không hard-code key).
- ✅ Hiệu năng (native, nhẹ).
- ✅ Giao diện (giữ layout/workflow, theme tương đương).
- ✅ Mở rộng (core tách module, IPC rõ ràng).