Skip to main content
Version: 1.3.1

Nhật ký thay đổi (Changelog)

Toàn bộ các thay đổi nổi bật của công cụ dòng lệnh erp sẽ được ghi nhận chi tiết tại đây. Dự án tuân thủ chặt chẽ nguyên tắc định danh phiên bản Semantic Versioning.


[1.3.0] - 2026-06-08

Thêm mới (Added)

  • Lệnh bật/tắt Developer Mode (erp devmode):
    • Thêm lệnh erp devmode [on|off] cho phép bật hoặc tắt chế độ nhà phát triển (developer_mode) trong cấu hình Frappe bench.
    • Mặc định là on: chạy erp devmode không có tham số sẽ bật developer mode.
    • Lệnh tự động thực thi bench set-config -gp developer_mode 1 hoặc bench set-config -gp developer_mode 0 trong container backend.

Thay đổi (Changed)

  • Nâng cấp phiên bản CLI lên 1.3.0.

[1.2.4] - 2026-06-03

Sửa lỗi (Fixed)

  • Thiết lập mặc định tiếng Việt ở Setup Wizard:
    • Viết lại toàn diện hàm vá lỗi patchSetupWizardJS trong run.go để hỗ trợ nhiều mẫu cấu trúc code setup_wizard.js của Frappe Core (bao gồm các dạng một dòng, nhiều dòng, dùng tab hoặc space thụt lề).
    • Ưu tiên chọn ngôn ngữ đã lưu trong wizard (frappe.wizard.values.language), fallback về ngôn ngữ mặc định của site (frappe.boot.lang) và cuối cùng mặc định về "Vietnamese" (thay vì "English").
  • Kích hoạt đồng thời tiếng Anh và tiếng Việt:
    • Sửa lỗi chỉ kích hoạt duy nhất tiếng Việt bằng cách cập nhật lệnh SQL để bật cả hai ngôn ngữ envi trong cơ sở dữ liệu (UPDATE tabLanguage SET enabled = 1 WHERE name in ('en', 'vi')).
  • Tránh timeout khi cài đặt các app official:
    • Tăng thời gian chờ mặc định cho cả Gunicorn (GUNICORN_TIMEOUT) và proxy Nginx (PROXY_READ_TIMEOUT) từ 120 giây lên 600 giây (10 phút) để đảm bảo bước cuối Setup Wizard (Submit Chart of Account) hoàn thành an toàn trên các ổ đĩa mount chậm của Windows/Docker.

[1.2.3] - 2026-06-02

Thay đổi (Changed)

  • Gắn kết template cấu hình Nginx trong môi trường Production:
    • Cập nhật cấu hình Docker Compose của dịch vụ frontend (Nginx) để luôn mount tệp tin template ./resources/core/nginx/nginx-template.conf vào container ở cả môi trường development và production.
    • Sửa lỗi không tìm thấy site (erp.sphoton.com does not exist) sau khi chạy lệnh migrate-from 1.1 ở lần đầu tiên do Nginx chạy bằng template cũ từ Docker image và không chuyển tiếp đúng tiêu đề X-Frappe-Site-Name: frontend cho container backend.

[1.2.2] - 2026-06-02

Thay đổi (Changed)

  • Phân biệt OS cho tên file tải về từ server phân phối:
    • Cập nhật lệnh upgrade để khi tải về (download) từ server phân phối vẫn dùng các tên file phân biệt rõ hệ điều hành và kiến trúc máy (erp-windows-386.exe, erp-darwin-amd64, erp-darwin-arm64, erp-linux-amd64).
    • Đảm bảo khi lưu trữ và chạy cục bộ (local execution), file thực thi luôn được tự động thay thế trực tiếp vào đường dẫn chạy hiện tại và giữ nguyên tên gọi chuẩn ngắn gọn là erp (Unix/Linux/macOS) hoặc erp.exe (Windows).

[1.2.1] - 2026-06-02

Thêm mới (Added)

  • Lệnh nâng cấp tự động CLI (erp upgrade):
    • Thêm lệnh erp upgrade [version] để cập nhật chính công cụ CLI erp từ máy chủ phân phối https://erp-cli.workdone.vn/.
    • Tham số phiên bản [version] là tùy chọn. Nếu không truyền, mặc định tải phiên bản mới nhất.
    • Tự động kiểm tra tính hợp lệ của phiên bản trên máy chủ, in ra k tìm thấy phiên bản nếu phiên bản chỉ định không tồn tại.
    • Tự động so sánh phiên bản hiện tại, in ra đã là bản mới nhất nếu phiên bản đang sử dụng đã là mới nhất hoặc mới hơn.
    • Tải file binary tương ứng với nền tảng hệ điều hành (được chuẩn hóa thành erp.exe trên Windows và erp trên macOS/Linux).
    • Tự động ghi đè và thay thế file thực thi hiện tại (hỗ trợ giải phóng file lock trên Windows bằng cơ chế đổi tên tạm thời và khôi phục rollback khi ghi thất bại).

Thay đổi (Changed)

  • Chuẩn hóa tên file phân phối:
    • Thay thế các tên file phân phối theo kiến trúc máy thành tên rút gọn cố định: erp.exe cho Windows và erp cho macOS/Linux.
  • Cô lập môi trường kiểm thử E2E:
    • Cập nhật test harness của CLI để tự động sao chép file thực thi ra thư mục sandbox riêng cho mỗi bài test E2E, ngăn chặn việc lệnh upgrade trong một bài test ghi đè làm hỏng file binary dùng chung của toàn bộ test suite.

[1.2.0] - 2026-06-02

Thêm mới (Added)

  • Lệnh cập nhật hostname (erp set:hostname):
    • Thêm lệnh erp set:hostname <hostname> cho phép người dùng thay đổi trực tiếp URL/hostname của dự án hiện tại (ví dụ: http://localhost:8123 hoặc https://erp.sphoton.com).
    • Lệnh tự động cập nhật tệp erp-config.yaml và xuất lại compose.yml.
    • Tự động đồng bộ hóa giá trị này vào registry (projects.json) của CLI và cập nhật cấu hình host_name trong site Docker container, sau đó khởi động lại container frontend để áp dụng ngay.
    • Tích hợp kiểm tra tính hợp lệ của định dạng URL đầu vào (phải bắt đầu bằng http:// hoặc https://).
  • Lệnh di chuyển phiên bản cũ (erp migrate-from):
    • Thêm lệnh erp migrate-from <version> để hỗ trợ nâng cấp môi trường dự án từ các phiên bản cũ (hiện tại hỗ trợ nâng cấp từ bản 1.1).
    • Lệnh tự động kiểm tra sự tồn tại của thư mục site frontend, nếu chưa có sẽ tự động sao lưu cơ sở dữ liệu của site cũ sang tệp tin backup an toàn.
    • Tự động đổi tên (rename) thư mục site cũ sang "frontend" và thiết lập cấu hình định tuyến site mặc định (default_site).
    • Hỗ trợ cơ chế phục hồi (roll-back) an toàn: Nếu tiến trình chạy database migrations (bench migrate) trên site mới gặp lỗi, CLI sẽ tự động khôi phục (restore) cơ sở dữ liệu từ file backup và trả lại cấu hình/tên thư mục site gốc để bảo toàn dữ liệu.
    • Kiểm tra thiết lập Host Name trong cấu hình dự án, hỗ trợ giao diện tương tác hỏi đáp để người dùng bổ sung Host Name chuẩn (bắt đầu bằng http:// hoặc https://) nếu cấu hình cũ chưa thiết lập.

Thay đổi (Changed)

  • Chuẩn hóa tên thư mục Site thành "frontend":
    • Cập nhật CLI để site folder trong cụm container luôn cố định tên thư mục là "frontend" thay vì đặt tên động theo tên miền của người dùng.
    • Nginx Template được thiết lập tối ưu để chuyển tiếp chính xác các yêu cầu tới backend qua tiêu đề X-Frappe-Site-Name: frontend.
  • Chuyển đổi cấu hình từ domain sang host_name:
    • Đổi tên trường cấu hình từ domain thành host_name trong toàn bộ hệ thống file cấu hình (erp-config.yaml / .json / .txt).
    • Hỗ trợ người dùng khai báo trực tiếp URL đầy đủ (gồm giao thức và cổng) làm host_name của site (ví dụ: http://localhost:2345 hoặc https://erp.workdone.vn).
    • Cập nhật CLI lệnh erp new: đổi cờ --domain thành --host-name và cập nhật các bảng giao diện TUI Wizard hiển thị nhãn Host Name.
    • Thiết lập cơ chế tương thích ngược hoàn chỉnh: tự động chuyển đổi các tệp cấu hình cũ sử dụng trường domain sang trường host_name mới mà không làm gián đoạn hệ thống.
    • Loại bỏ lệnh cấu hình domain động qua bench add-domain, thay vào đó ghi nhận cấu hình trực tiếp vào giá trị host_name của site thông qua lệnh bench set-config host_name.

[1.1.0] - 2026-06-01

Thêm mới (Added)

  • Cấu hình tự động kiểm tra phiên bản (Auto-check Update):
    • Thêm thuộc tính AutoCheckVersion vào cấu hình dự án erp-config.yaml (mặc định tắt).
    • Tích hợp Step 11 vào TUI Wizard erp new hỗ trợ người dùng bật/tắt trực tiếp thông qua giao diện terminal.
    • Bổ sung cờ --auto-check-version vào CLI erp new cho phép thiết lập tự động (non-interactive).
    • Hỗ trợ cờ môi trường ERP_SKIP_AUTO_CHECK_STEP: "1" để bỏ qua bước 11 của Wizard, đảm bảo tương thích ngược cho bộ tests cũ.

Thay đổi (Changed)

  • Quản lý bật/tắt (khôi phục/patch) tính năng check update mặc định của Frappe:
    • Khi tắt tự động check phiên bản (mặc định): CLI tự động patch file hooks.pydesk.js của Frappe Core để comment out sự kiện background checking frappe.utils.change_log.check_for_update và tắt hiển thị popup update trong Web UI Desk, sau đó tự động biên dịch lại Desk assets (bench build).
    • Khi bật tự động check phiên bản: CLI sẽ khôi phục lại nguyên bản (uncomment) các đoạn code gốc của Frappe để trả lại cơ chế mặc định ban đầu, hoàn toàn không tự viết thêm logic CLI để check GitHub remote tags.
    • Tối ưu hóa việc gọi build frontend asset (bench build) chỉ khi có sự thay đổi thực sự ở file desk.js.
    • Toàn bộ quá trình patch mã nguồn đều chạy độc lập trên host/container, không can thiệp hay sửa đổi gì đến custom app theme_base.

[1.0.2] - 2026-05-29

Thêm mới (Added)

  • Thực thi lệnh trực tiếp trong Container:
    • Thêm lệnh con erp exec [command] chạy bất kỳ lệnh tùy ý nào trong container backend Docker.
    • Tự động kiểm tra tính hợp lệ của tệp cấu hình erp-config.yaml và kiểm tra lệnh docker trong đường dẫn hệ thống (PATH).
    • Xây dựng bộ test E2E đầy đủ (cli/test/e2e/exec_test.go) để xác thực các trường hợp lệnh dạng chuỗi có/không có dấu nháy và các tình huống lỗi.

Thay đổi (Changed)

  • Cải tiến Giao diện Dashboard HUD (TUI):
    • Tách giao diện dashboard làm việc thành bố cục 2 cột nằm ngang trực quan.
    • Cột phải hiển thị Logo nghệ thuật ASCII sPhoton, kèm theo siêu dữ liệu của dự án được chọn (slogan, website, maintainer, bản quyền, phiên bản 1.0.2).
    • Bổ sung khung hướng dẫn nhanh "Quick Help" hiển thị các phím tắt điều hướng nhanh gọn.

[1.0.1] - 2026-05-27

Thêm mới (Added)

  • Tích hợp SSH Key & Mount Container:
    • Thêm lệnh erp ssh-key import --path <path> để liên kết khóa SSH private của máy host (mặc định tìm tại ~/.ssh).
    • Ánh xạ tự động thư mục .ssh của máy host vào container backend ở chế độ Read-Only (/home/frappe/.ssh) giúp việc clone/pull code các repository custom private diễn ra tự động mà không cần token.
  • Tích hợp GitHub & Tự động đổi URL thông minh:
    • Thêm lệnh erp github login --token <token> lưu mã Personal Access Token (PAT).
    • Áp dụng cơ chế mã hóa đối xứng XOR khóa dựa trên phần cứng hệ điều hành (COMPUTERNAME/USERNAME) để lưu trữ token an toàn tại ~/.erp_github_token (Không lưu clear-text).
    • Tự động phân tích quyền của token đối với repository private và triển khai cơ chế kiểm tra 2 lần khi cài đặt app:
      • Lần 1: Thử clone qua Git SSH / HTTPS thông thường.
      • Lần 2 (dự phòng): Nếu thất bại, tự động chuyển đổi URL Git thành dạng tokenized OAuth2 (https://oauth2:<token>@github.com/...) để vượt qua xác thực.
  • Đóng băng định dạng cấu hình YAML:
    • Lược bỏ cấu hình lựa chọn định dạng JSON/TXT và gộp các bước cài đặt Setup Wizard để mặc định sử dụng duy nhất tệp cấu hình erp-config.yaml.
  • Lệnh dịch thuật nâng cao (export:lang & import:lang):
    • Hỗ trợ xuất/nhập tệp dịch thuật của tất cả các app ra định dạng CSV để dễ biên tập, tự động biên dịch sang .mo và làm sạch cache Desk của site.
  • Mặc định cấu hình thông minh cho Việt Nam (Vietnamese Presets):
    • Tự động cấu hình múi giờ Asia/Ho_Chi_Minh, ngôn ngữ vi, quốc gia Vietnam, tiền tệ VND và định dạng ngày/giờ chuẩn Việt Nam.
    • Tự động vô hiệu hóa các ngôn ngữ khác để tối ưu hóa tốc độ tải trang ban đầu của Desk.

[1.0.0] - 2026-05-24

Thêm mới (Added)

  • Interactive TUI Setup Wizard (erp new):
    • Trình cấu hình wizard từng bước trên Terminal.
  • Docker Compose Orchestration (erp run / erp stop):
    • Quản lý vòng đời cụm container, cài đặt bench và thiết lập site tự động.
  • Development Support Tools (erp dev):
    • Hỗ trợ lệnh xem thay đổi watch, khởi động lại máy chủ reload, tương tác nhanh console và tạo app mới create-app.
  • Validation Engine (erp verify):
    • Kiểm tra điều kiện cổng kết nối, quyền thư mục và biến môi trường.
  • Backup & Restore (erp backup / erp restore):
    • Sao lưu và phục hồi cơ sở dữ liệu Frappe.