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ạyerp devmodekhông có tham số sẽ bật developer mode. - Lệnh tự động thực thi
bench set-config -gp developer_mode 1hoặcbench set-config -gp developer_mode 0trong container backend.
- Thêm lệnh
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
patchSetupWizardJStrongrun.gođể hỗ trợ nhiều mẫu cấu trúc codesetup_wizard.jscủ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").
- Viết lại toàn diện hàm vá lỗi
- 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ữ
envàvitrong cơ sở dữ liệu (UPDATE tabLanguage SET enabled = 1 WHERE name in ('en', 'vi')).
- 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ữ
- 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ừ120giây lên600giâ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.
- Tăng thời gian chờ mặc định cho cả Gunicorn (
[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.confvà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ệnhmigrate-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: frontendcho container backend.
- Cập nhật cấu hình Docker Compose của dịch vụ
[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ặcerp.exe(Windows).
- Cập nhật lệnh
[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ụ CLIerptừ máy chủ phân phốihttps://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ảnnế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ấtnế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.exetrên Windows vàerptrê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).
- Thêm lệnh
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.execho Windows vàerpcho macOS/Linux.
- 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:
- 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
upgradetrong một bài test ghi đè làm hỏng file binary dùng chung của toàn bộ test suite.
- 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
[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:8123hoặchttps://erp.sphoton.com). - Lệnh tự động cập nhật tệp
erp-config.yamlvà xuất lạicompose.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ìnhhost_nametrong site Docker container, sau đó khởi động lại containerfrontendđể á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ặchttps://).
- Thêm lệnh
- 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ản1.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ặchttps://) nếu cấu hình cũ chưa thiết lập.
- Thêm lệnh
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.
- Cập nhật CLI để site folder trong cụm container luôn cố định tên thư mục là
- Chuyển đổi cấu hình từ
domainsanghost_name:- Đổi tên trường cấu hình từ
domainthànhhost_nametrong 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_namecủa site (ví dụ:http://localhost:2345hoặchttps://erp.workdone.vn). - Cập nhật CLI lệnh
erp new: đổi cờ--domainthành--host-namevà cập nhật các bảng giao diện TUI Wizard hiển thị nhãnHost 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
domainsang trườnghost_namemớ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_namecủa site thông qua lệnhbench set-config host_name.
- Đổi tên trường cấu hình từ
[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
AutoCheckVersionvào cấu hình dự ánerp-config.yaml(mặc định tắt). - Tích hợp Step 11 vào TUI Wizard
erp newhỗ 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-versionvào CLIerp newcho 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ũ.
- Thêm thuộc tính
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.pyvàdesk.jscủa Frappe Core để comment out sự kiện background checkingfrappe.utils.change_log.check_for_updatevà 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ự ở filedesk.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.
- Khi tắt tự động check phiên bản (mặc định): CLI tự động patch file
[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.yamlvà kiểm tra lệnhdockertrong đườ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.
- Thêm lệnh con
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
.sshcủ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.
- Thêm lệnh
- 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.
- Thêm lệnh
- Đó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ượ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
- 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
.movà làm sạch cache Desk của site.
- 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
- 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 giaVietnam, tiền tệVNDvà đị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.
- Tự động cấu hình múi giờ
[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 nhanhconsolevà tạo app mớicreate-app.
- Hỗ trợ lệnh xem thay đổi
- 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.