Changelog
All notable changes to the erp CLI tool will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
[1.4.1] - 2026-08-10
Fixed
erp app uninstallhỏi xong abort ngay lập tức: CLI trước đây không forward stdin xuống tiến trìnhbench, nên promptAre you sure...?của bench đọc EOF rồi abort dù bạn chưa gõ gì. Giờ CLI forward terminal (bạn gõy/nbình thường); khi dùng--force, CLI truyền cờ chuẩn--yescủa bench (kèm auto-confirm) để chạy không tương tác —--forcecủa bench vốn chỉ "Force remove app from site" chứ không bỏ qua prompt. Nếu stdin không phải terminal và không có--force, CLI báo lỗi rõ ràng thay vì để bench abort mơ hồ.erp app install --forcedính lỗi[Errno 39] Directory not empty: khi tên app (erp_admin) khác tên thư mục repo (erp_asian_admin),bench get-app --overwritechỉ archive thư mục theo tên repo, còn thư mục app-named cũ kẹt lại chặn bước rename sau clone. CLI giờ chủ động archive cảapps/<app>lẫnapps/<repo>vàoarchived/apps/trước khi clone lại (bản sao an toàn, không xoá mất mã nguồn).erp app updatecrashgit symbolic-ref ... exit status 128: trên staging, app sau lần cài đầu có thể không có.git(app baked), hoặc đang ở detached HEAD —bench updatesẽ chết ngay ởvalidate_branch. CLI giờ tự khôi phục git trước khi update: thiếu.git→git init+ remoteupstream(URL lấy từerp-config.yaml) + fetch + checkout đúng branch; detached HEAD → re-attach về branch đã cấu hình.- Bảo mật — GitHub token bị lộ ra terminal:
ResolveRepoURLnhúng token vào URL và bench echo lệnhgit clonekèm token ra màn hình. CLI giờ truyền cho bench URL sạch và để git tự rewrite sang token qua biến môi trườngGIT_CONFIG_*— token không còn xuất hiện trên dòng lệnh hay trong log.
Changed
erp app installlưu branch vào config:apps[].branch(từ--branch,#trong URL, hoặc tự dò) được ghi vàoerp-config.yamlđểerp app updatekhôi phục git theo đúng branch đã cài.
Tests
- Bổ sung unit test cho
CleanGitHubURL,gitRewriteEnvForToken,archiveExistingAppDirvà E2E choapp update, cùng assertion về URL sạch (không chứaoauth2:) và branch trong config.
[1.4.0] - 2026-08-08
Added
- Lệnh
erp skills: Cài đặt Agent Skills về Frappe/ERPNext vào project cho AI IDE (hỗ trợopencode,antigravity). Nguồn skills:frappe/skills(chính chủ Frappe) vàlubusIN/frappe-skills(LUBUS). Hỗ trợ chọn tương tác (bộ skills → các skill cụ thể → IDE) hoặc cờ không tương tác (--skill,--skills,--ide), và--listđể xem danh mục. Cài đặt quanpx skills add <repo> -a <agent> --skill ... -yvào thư mục.agents/skills/của project. - Cờ
--branchchoerp app install: chỉ định branch/tag cụ thể khi cài app (ưu tiên:#trong URL >--branch> tự động dò). - SSH key file đơn cho
erp ssh-key import: khi--pathtrỏ đến một file private key (bất kể tên gốc), CLI mount nó thành/home/frappe/.ssh/id_ed25519trong container (kèmknown_hostsnếu có) và tự setGIT_SSH_COMMAND=ssh -i .../id_ed25519 -o IdentitiesOnly=yes— không cần mount toàn bộ thư mục.ssh.
Changed
- Tái cấu trúc lớn (kiến trúc): tách logic nghiệp vụ từ
cmd/sang lớpservice/mới (provision, deploy, app, docker, github, database, patching, upgrade, util...); táchconfig/thành các file chuyên trách (types, serialization, compose, defaults, sshkey); táchtui/thành wizard + dashboard +components/tái sử dụng. - Bảo mật:
erp-config.yamlgiờ được ghi với quyền0600; token GitHub không còn bị lưu plaintext vào config khi cài app (chỉ dùng tạm cho lệnhget-app); xác thực tên app (^[a-z0-9_-]+$) chặn path traversal; xác thực hostname cho Nginx config; prompt không bị treo khi stdin không phải terminal (CI/agent). - Dashboard không còn đóng băng: lệnh docker (start/stop/restart) chạy bất đồng bộ qua
tea.Cmdthay vì chặn event loop. - Xử lý lỗi chặt chẽ hơn: từ chối build image giờ trả exit code khác 0 (trước đây báo thành công);
bench install-appkhông còn nuốt lỗi.
[1.3.5] - 2026-08-07
Fixed
erp app install --forcechạy lại được khi app đã tồn tại: cờ--forcegiờ truyền--overwritechobench get-app(cờ chuẩn của bench), giúp clone lại app một cách không tương tác — không còn dính promptA directory for the application '...' already exists...gây lỗiexit status 1. Khi không dùng--force, CLI tự động bỏ quabench get-appnếu app đã tồn tại (tái sử dụng mã nguồn) và chỉ cài lên site.
Tests
- Bổ sung test (unit + E2E) cho
devmode,reset-password,dashboardvà các helper thuần — đảm bảo mọi lệnh CLI đều được kiểm tra hoạt động chính xác.
[1.3.4] - 2026-08-07
Changed
- Ổn định CI pipeline tài liệu (
docs.yml):- Thêm
concurrencyđể các docs build (main-push,workflow_runsau release, manual dispatch) chạy tuần tự, tránh gọi GitHub REST API song song gây secondary rate limit — lỗi khiến bước push GHCR image trả về HTTP 403. - Thêm
actions/cachechowebsite/static/dist(key theoversions.json) để các build sau lấy binary từ cache thay vì tải lại qua API, giảm tải và loại bỏ nguy cơ rate limit.
- Thêm
[1.3.3] - 2026-08-07
Added
- Cải tiến lệnh
erp upgrade:- Hiển thị thanh tiến trình tải về (
Downloading [■■····] 42%) và thông tin phiên bản mục tiêu (hệ điều hành/nền tảng, tệp tải về, nguồn tải, kích thước). - Khi nâng cấp lên bản mới nhất, CLI ưu tiên dùng đường dẫn ổn định
https://erp-cli.workdone.vn/dist/latest/<file>(không cần chỉ định số phiên bản), tự động fallback về/dist/<version>/<file>nếu endpointlatestchưa được cấu hình trên máy chủ. - Xử lý lỗi Windows: khi
erp.exeđang chạy bị hệ điều hành khóa, CLI ghi tệp mới thànherp.exe.newvà khởi động script cập nhật nền (erp-update.cmd) để tự hoán đổi khi tiến trình thoát, sau đó chỉ cần chạy lạierp versionđể xác nhận. - Cập nhật tài liệu hướng dẫn với đường dẫn tải ổn định
/dist/latest/và tùy chọn "Latest" trên trang download website.
- Hiển thị thanh tiến trình tải về (
- Chống lỗi khi chạy lại
erp runvới app đã tồn tại:erp rungiờ tự động bỏ qua bướcbench get-appcho app đã có thư mụcapps/<app>(do lần chạy trước bị gián đoạn), tránh promptA directory for the application '<app>' already exists...dẫn tới lỗiexit status 1— vẫn chạybench install-appđể cài app lên site.- Thêm cờ
--forcechoerp run: xóa thư mụcapps/<app>cũ rồi tải và cài đặt lại app từ đầu.
Changed
- Tài liệu
ssh-key importkhớp với cách triển khai thực tế: Cơ chế mount SSH key vào container backend là bind mount trực tiếp (<path>:/home/frappe/.ssh:rohoặc<path>:/home/frappe/.ssh/<file>:rotrongcompose.ymlkhi chạyerp run/erp new --run), không còn mô tả sai bướcdocker compose cpvàchown/chmod.
[1.3.2] - 2026-08-07
Changed
- Tự động hóa toàn bộ quy trình phát hành (Release & Docs):
release.ymlgiờ được kích hoạt ngay khi push một Git Tag chuẩn SemVer (không có chữv, ví dụ1.1.0): tự build 4 file CLI binary (Linux amd64, Windows 386, macOS Intel amd64, macOS Apple Silicon arm64), tự tạo GitHub Release có tiêu đềv<VERSION>(nội dung lấy từCHANGELOG.md) và đính kèm các file binary. Không còn cần chạy thủ cônggh release create.docs.ymlđược thêm sự kiệnworkflow_runđể tự động kích hoạt sau khirelease.ymlhoàn tất thành công, giúp mỗi tag mới sẽ có ngay tài liệu website mới (imageghcr.io/workdone-vn/erpmanager:docs-<VERSION>vàdocs-latest) và file tải về mới trên trang download.- Cập nhật hướng dẫn release (
skills/release-manager/SKILL.md,AGENTS.md,README.md) để phản ánh quy trình tự động và bỏ các đường dẫn tuyệt đốifile:///...trong tài liệu.
[1.3.1] - 2026-06-08
Changed
- Tối ưu UX cài đặt:
- Gỡ bỏ hoàn toàn quá trình
bench buildkhông cần thiết khi cài đặt (erp app install) và cập nhật app, giúp quá trình setup diễn ra nhanh chóng hơn. - Sử dụng luồng stream bất đồng bộ (
io.Pipe) thay cho gom bộ đệm (bytes.Buffer) khi cần lấy log, ngăn chặn tình trạng CLI bị treo (freeze) với người dùng.
- Gỡ bỏ hoàn toàn quá trình
- Tính năng khởi tạo project từ Template Github (
erp new <project-name> --github):- Thêm lệnh CLI cho phép download nhanh source code trực tiếp từ GitHub Repository thông qua luồng quản lý phiên đăng nhập/xác thực
erp github login/logout.
- Thêm lệnh CLI cho phép download nhanh source code trực tiếp từ GitHub Repository thông qua luồng quản lý phiên đăng nhập/xác thực
- Cải tiến tính ổn định:
- Bổ sung
sync.WaitGroupvà đồng bộ luồng đọc output để tránh xung đột in ra màn hình console. - Thêm luồng kiểm tra
scanner.Err()theo Go best-practices nhằm bắt các lỗi IO hiếm gặp.
- Bổ sung
[1.3.0] - 2026-06-08
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
Changed
- Nâng cấp phiên bản CLI lên 1.3.0.
[1.2.4] - 2026-06-03
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
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
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
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
Không 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
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
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
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
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
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
Added
- Docker Container Command Execution:
- Added new subcommand
erp exec [command]to run arbitrary commands inside the backend Docker container of the active project. - Implemented automatic validation of the active project configuration (
erp-config.yaml) and checked ifdockeris available inPATH. - Created a robust E2E test suite (
cli/test/e2e/exec_test.go) validating both quoted and unquoted commands, as well as failure scenarios (e.g. missing configurations).
- Added new subcommand
Changed
- TUI Dashboard Layout Refinement:
- Split the dashboard interface into a responsive, horizontal two-column layout.
- Added a dedicated right-side sidebar panel showcasing an ASCII logo for sPhoton, project metadata (slogan, website, maintainer, copyright, and version 1.0.2).
- Added an interactive "Quick Help" rounded box with detailed hotkeys and command navigation guides.
[1.0.1] - 2026-05-27
Added
- SSH Key Integration & Container Mounting:
- Added new subcommand
erp ssh-key import --path <path>to register host SSH Keys (supporting folders or individual files) with a default route resolving to~/.ssh. - Implemented dynamic volume mount in
WriteDockerComposefor the backend container (/home/frappe/.sshmapped to the host's SSH path as read-only) to allow containerized applications to automatically authenticate and clone custom private apps using Git SSH keys without token setups. - Implemented automatic tilde (
~) path expansion to support standard unix-like path shortcuts on the local filesystem.
- Added new subcommand
- GitHub Integration & Dynamic URL Resolution:
- Added new subcommand
erp github login --token <token>to securely register and store GitHub Personal Access Tokens (PAT). - Implemented dynamic symmetric XOR encryption based on local OS hardware keys (
COMPUTERNAME/USERNAMEorHOSTNAME/USER) to secure stored tokens locally at~/.erp_github_tokenadhering to sPhoton's Zero Secret Storage principles. - Implemented a smart validation process during login that automatically checks token permissions against active project repositories or queries the GitHub API (
https://api.github.com/user) directly. - Implemented a robust 2-attempt URL resolution mechanism (
ResolveRepoURL) for botherp runanderp app installcommands:- Attempt 1: Tries accessing/cloning the repository using its original SSH/HTTPS URL. If successful (public repo or host has SSH keys configured), it proceeds directly.
- Attempt 2: If Attempt 1 fails, automatically transforms the repository URL dynamically in-memory to an OAuth2-tokenized format (
https://oauth2:<token>@github.com/...) and retries. - Safely rejects installation and aborts with descriptive error messages if both attempts fail.
- Added new subcommand
- YAML Permanent Format:
- Completely removed
Formatfield from the Config struct and configuration models. - Removed the "Format" selection step from the TUI Setup Wizard, reducing the setup process and shifting subsequent step indexes.
- Force project configurations to always save as
erp-config.yamlwithout querying the user. - Cleaned up JSON and TXT format test cases and restructured E2E tests to adapt to the new shifted wizard step index.
- Completely removed
- Dynamic Translation Commands:
erp export:lang <language_code> --file <path>: Consolidate and export translations of all installed apps to a CSV file.erp import:lang <language_code> --file <path>: Copy translation CSV to the container, parse/update.pofiles, compile them to binary.moformat, and automatically clear site cache.
- Dynamic Container Provisioning:
- Embedded python helper script
manage_lang.pydirectly inside the Go CLI binary. - Automatically copies
manage_lang.pyinto the backend container at runtime and handles silent cleanup to keep the container image clean.
- Embedded python helper script
- Vietnamese Smart Presets:
- Pre-configure default project settings for Vietnamese locales during
erp new:- Default Language:
vi(Vietnamese) - Default Country:
Vietnam - Default Timezone:
Asia/Ho_Chi_Minh - Date format:
dd-mm-yyyy - Time format:
HH:mm - Number format:
#,###.## - First day of week:
Monday
- Default Language:
- Automated setup routine to disable all default languages except English and Vietnamese to maximize load speeds.
- Pre-configure default project settings for Vietnamese locales during
- E2E Testing Suite:
- Added new integration tests (
TestLangExport,TestLangImport) to verify translation pipelines under mocked Docker/Docker Compose environments.
- Added new integration tests (
[1.0.0] - 2026-05-24
Added
- Interactive TUI Setup Wizard (
erp new):- Multi-step interactive setup wizard supporting domain, port, database, and Redis configuration.
- Config file generation supporting JSON and YAML formats.
- Docker Compose Orchestration (
erp run/erp stop):- Automated container stack management and configuration parsing.
- Automated site initialization, app installation, and migrations.
- Development Support Tools (
erp dev):erp dev watch: Watch file changes and hot-reload.erp dev reload: Fast reboot of application servers.erp dev console: Drop directly into Frappe Python shell.erp dev create-app: Scaffold custom apps in container.
- Validation Engine (
erp verify):- Pre-flight checks verifying Docker Compose, active ports, environment variables, config validity, and volume permissions.
- Backup and Restore Management (
erp backup/erp restore):- Create and restore database snapshots dynamically translating host paths to docker mount points.