# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com). This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] ## [1.8.0] - 2026-09-04 **Migration notes** Recreating the virtual environment, the Python interpreter and the package installer being chosen now. Use the installation guide from tool `make`. Ubuntu 20.04 and 22.04 are no longer supported. ## Added - Deploy ERPLibre VMs with QEMU/KVM from cloud images: Ubuntu, Debian, Fedora, AlmaLinux, Rocky, openSUSE, Arch, Linux Mint, and Debian on s390x. Hardware, branch and Odoo version are set per machine - Proxmox VE as a deployment target, its installation including the reboot it needs - A QEMU menu: network status and repair, 3D acceleration, a diagnostic report, file recovery from a VM that no longer boots, virt-viewer and a remote desktop tunnel - An install dashboard and Textual forms: deploy, follow, update, restart or delete a VM without leaving the screen - A mobile development VM: PyCharm, Android Studio, an Android emulator and an adb tunnel - A VPN tool, five free technologies from the menu, the secrets in a KeePassXC vault and a diagnosis that names the failing stage - Automated Odoo migration: the tool drives the whole run, goes back to a step, and repairs what a version bump leaves behind - Migration review: a verdict per step, smoke tests on every public URL, and a filestore check - A read-only analysis toolkit for an Odoo database, a backup zip included, with PostgreSQL index advice - Anonymising a production copy without AI, and duplicating a database neutralised for good - Development assistants installed inside a VM, and a Git and Shell menu that installs what a checkout needs - A writing convention for what stays in git, held by a `pre-commit` and a `commit-msg` hook - `long_test/` — tests that create real machines, nested QEMU and Proxmox included, kept out of the unit runner - NTFY, Forgejo, a local git server, e-mail from the CLI, and SSH configuration with recursive ProxyJump - The Python interpreter and the package installer are chosen, through EL_PYTHON_PROVIDER and EL_PIP_PROVIDER - The OCA generative AI policy, Claude Code agents and commands, and the context an assistant is given, shown from the menu - Unit tests with a bilingual test plan, navigation telemetry for TODO, and Odoo 18 reading STL files ## Changed - todo.py split into nine files, one per subject, with a shared base per form - Every menu entry carries an icon, the menus are grouped into sections, and a countdown prompt gives 15 seconds to decide - Branch, profile, type and timezone are chosen per VM rather than globally - Installation covers Fedora, Debian, Ubuntu, Arch and openSUSE; repository sync and Poetry run in parallel, quiet unless EL_VERBOSE asks - Node.js 22 for Capacitor 8, flanker for Odoo 18, CybroOdoo extras opt-in, and a Poetry dependency declinable per architecture - A VM boots faster and picks the fastest reachable mirror, Canadian pacman mirrors coming first on Arch - Staging names the files, never `git add -A` - Enter targets the highest supported Odoo version, and a VM name drops the `latest` segment ## Fixed - The libvirt network no longer counts as its own collision, no longer leaves a host without network at the next boot, and its state is read in English whatever the locale - QEMU deployment: sudo says why it needs a password, the `libvirt` group replaces it where it suffices, no host reboots unasked, and an orphan disk no longer blocks a creation - Migration: the database drop, the account.root view Odoo 17 leaves behind, the pricelists a repair invented, and the assumptions the 13-to-18 run rested on - Anonymisation respects what a value means, and no longer breaks past the 131 072-byte limit of a single argument - Installation on Debian 13, Fedora, Ubuntu 26.04 and s390x: apt locks, missing compilers and headers, too little memory, and what a recent SWIG or PROJ needs - Secrets: the KeePassXC vault opens on a server without tkinter, the forgejo installer stops echoing the password it set, and db_restore validates the master one - A question is seen before it is answered, and one faulty repository no longer takes a whole batch down - Three screens that fell over, a shrink that would have filled the disk, and a monitor that binned a VM before being sure - The unit runner globs the whole directory, where it ran 1131 tests of 3703 - Proxmox no longer aims at the host instead of the VM ## Removed - Ubuntu 20.04 and 22.04 support, on every architecture - The residue check that called a language broken when its `active` is NULL ## Security - Passwords and tokens are redacted before a command is displayed, logged or reprinted - The Odoo master password and the KeePass one leave the command line, an environment variable carrying them instead ## [1.7.0] - 2026-03-11 **Migration notes** Recreating the virtual environment, use installation guide from tool `make`. ## Added - Odoo 12.0 to 18.0 in a single workspace, switched without reinstalling: the manifests, the configuration and the addons paths follow the version named in `.odoo-version` - ERPLibre's Python separated from Odoo's — `.venv.erplibre` carries the repository's own tools, `.venv.odoo` the server — so a tool of the repository no longer depends on the interpreter a given Odoo version imposes - Auto-installation driven from TODO: the menu lays down the environment it needs, Poetry, the Google Repo manifests and the addons included, rather than printing a command to retype - Migration of an Odoo database and its modules from TODO, `--neutralize` included, with the repair of the mail module that a move from PostgreSQL 17 to 18 leaves behind - A hardening script for the installation - The ERPLibre Home mobile application: TODO compiles it, deploys it, renames the software and changes its menu image - The RobotLibre code generator, with the queue_job channels its configuration needs - ERPLibre DevOps, and the automation procedure it describes - The Selenium grid from `selenium_lib.py`: a KeePass vault opened for the run, file downloads, dark mode, video recording and a scenario library - A performance script measuring the requests per second a website answers - Deployment: Cloudflare DNS, nginx with a non-interactive certbot, Apache templates matching the nginx ones, and a systemd unit whose working directory is configurable - The s390x mainframe architecture - Addons OnlyOffice, Cetmix, OCA automation, OCA shopfloor, and the design-themes repository - Database backup and erase commands, and a clearer restore naming - A security check of the Python environment, from the menu - TODO shows the documentation, downloads a database and helps with code formatting - Killing an Odoo process by the port it holds, from the menu - CLAUDE.md and the agent information document, so an assistant reads the repository's conventions instead of guessing them - A FAQ entry on wkhtmltopdf for recent distributions ## Changed - Odoo 18.0 becomes the default version of a checkout - Docker moves to PostgreSQL 18, with the matching client - The documentation is bilingual, generated by mmg from the `.base.md` sources: a `.md` or `.fr.md` edited directly is lost at the next generation - The TODO menus are grouped into sections, and the English text serves as the i18n key rather than a code of its own - The formatting script looks for the changed files in every repository, hidden addons included, and skips a repository that is not installed - Odoo runs on a custom database, and the menu configures queue_job as well as the SSH forwarding a remote instance needs - Killing a process by port asks before acting, through an interactive menu - Neutralising a database goes through Odoo's own `--neutralize` - LinuxMint 22.3, Ubuntu 25.10, and macOS without Python 3.7 - Odoo 18 dependencies: tldextract, PyYAML, pdfminer.six, and cryptography at its latest version - A make target runs the unit tests - The Makefile is split: its commands live in `conf/`, and `Common.Makefile` extends it for a project of one's own ## Fixed - The documentation accents, and the markdown generation running in parallel - `git_tool` returns nothing instead of raising where `.git` is absent - `poetry iscompatible` no longer crashes on a version carrying a letter, an alpha or a release candidate - pymssql compiles again, and the Odoo 18 requirements leave pyssql out of a production install - wkhtmltopdf is no longer offered where it does not exist: no package is published for s390x on Ubuntu 25.10 - Selenium: the snap Firefox path, a 60-second timeout when reaching for an element, execution in a private window, and a login that waits for Odoo 18 - The formatting script ignores the files and directories it must not touch - `db_drop_all` runs its shell command, and the backup processing keeps the permissions of what it writes - TODO: the first import, the regeneration of `.repo/local_manifests`, the database open dialog, and a missing Odoo version reported instead of a crash - The code generator: creating a project, extracting a class carrying a selection, and reading a model through the Python 3.11 `ast` module rather than astor - Docker: the duplicated Odoo 18 build target, and the compose file pinned to an image that works ## [1.6.0] - 2025-04-25 ## Added - Support multiple Odoo versions (12.0, 14.0, 16.0) in same workspace - This will help for the migration of modules - Selenium script for increasing open software client interface and automating some actions. - Video recording - Support scrolling and word generating - FAQ about kill git-daemon - Supports Arch Linux, Ubuntu 23.10 to 25.04 - ADD repo JayVora-SerpentCS_SerpentCS_Contributions - ADD repo CybroOdoo_CybroAddons ## Changed - Refactor image_db regeneration, use configuration JSON to build image - Guide for moving dev to prod - Update Docker buster to bullseye - Improve format script to help code-generator - Improve PyCharm script - Support OSX for open-terminal - Remove docker-compose and replace by docker compose - Update Poetry 1.3.1 to 1.5.1 - Test can be launched with a json configuration and support log/result individually - Script to search docker compose into the system - Script search class model can output into json format and support field information - Improve Docker minimal installation docs in README for Ubuntu, test with Debian (https://github.com/ERPLibre/ERPLibre/issues/73) - Statistic script showing evolution module into ERPLibre supporting Odoo 17 and Odoo 18 - Latest version wkhtmltopdf 0.12.6.1-3 ### Fixed - NPM installed locally and not globally - Improve python code writer efficiency - Config generator supporting space into ERPLibre directory - Script to update Poetry to support @ URL - OSX and recent Ubuntu installation - Cloudflare script integration ## [1.5.0] - 2023-07-07 **Migration notes** Recreating the virtual environment ```bash rm -rf ~/.poetry rm -rf ~/.pyenv rm ./get-poetry.py rm -rf ./.venv make install ``` Do a backup of your database and update all modules : ```bash ./run.sh --no-http --stop-after-init -d DATABASE -u all ``` ## Added - Support Ubuntu 22.04 with installation script - Module mail_history and fetchmail_thread_default in base image DB - Makefile can generate image DB in parallel with `image_db_create_all_parallel` - Makefile can run all code_generator with `run_parallel_cg` and `run_parallel_cg_template` - Script to generate Pycharm configuration and exclude directory - Support docker alpha+beta - Limit memory execution when install in develop - Template nginx configuration - Script code count statistic - Script show OCA evolution module statistic - Windows development support, check documentation installation - New project (code generator to create module) support params configuration - Module sync_external_model to synchronise Odoo models with module ## Changed - Odoo 12.0 update from 22-07-2020 to 01-01-2023 - Update pip dependency with security update - Pillow==9.3.0 - psycopg2==2.9.5 - Werkzeug==0.16.1 - check diff of file pyproject.toml for all information - Update to Python==3.7.16 - Update poetry==1.3.1 - Update multilingual-markdown==1.0.3 - Update imagedb with all Odoo update - Repo documentation-user from Odoo change to documentation - Repo odooaktiv/QuotationRevision is deleted - Update all repo (91) to end of 2022 - Rename module project_task_subtask_time_range => project_time_budget - Rename module project_task_time_range => project_time_range - Refactor script emplacement, create directory in ./script/ per subject - Use command parallel in Makefile - Update sphinx version - Improve script location ### Fixed - Debian 11 installation script - Test result - OSX installation (not finish to support) - Poetry update support '~=' ### Removed - Ubuntu 18.04 is broken, need to install manually nodejs and npm - Module contract_portal and remove signature in portal contract, need an update - Downgrade module helpdesk_mgmt to remove email team and tracking field - Module helpdesk_partner - Module helpdesk_service_call - Module helpdesk_supplier - Module helpdesk_mrp - Module helpdesk_mailing_list - Module helpdesk_join_team - Module project_time_management - Support of vatnumber, too old - Deprecated python dependency like pycrypto ## [1.4.0] - 2022-10-05 **Migration note** - Update module `website`,`website_form_builder`. - For dev, run `poetry cache clear --all pypi` ### Added - Script run_parallel_test.sh to execute all tests in parallel for better execution speed - Documentation to use docker in production - Add repo: - Ajepe odoo-addons to support restful - OmniaGIT Odoo PLM - MathBenTech family-management - erplibre-3D-printing-addons - Add module: - iohub_connector to support mqtt - website_snippet_all to install all snippets, extracted from all themes - website_blog_snippet_all to install website_snippet_all with website_blog and associated snippet - sinerkia_jitsi_meet to integrate Jitsi - erplibre_website_snippets_jitsi to integrate Jitsi in snippet, work in progress - Add module by default: - auto_backup - muk_website_branding - website_snippet_anchor - website_anchor_smooth_scroll - crm_team_quebec - partner_no_vat - Documentation Odoo dev - Format command supported addons - Install theme with Odoo command - Script to install theme addons - Image website with default theme - Image erplibre demo - Test with coverage ### Changed - Downgrade sphinx to 1.6.7 to support Odoo dev documentation - Update to poetry==1.1.14 - Update pip dependency with security update - Pillow==9.0.1 - PyPDF2==1.27.8 - lxml==4.9.1 - Code generator export website with attachments and scss design file with documentation - Code generator support multiple snippets - Into repo Numigi_odoo-project-addons rename module project_template to project_template_numigi - Into repo Numigi_odoo-product-addons rename module product_dimension to product_dimension_numigi - Into repo Numigi_odoo-partner-addons, re-enable auto-install module - Into repo muk-it_muk_website, re-enable auto-install module ### Fixed - Poetry supports insensitive python dependency - Code generator new project supports relative path and check duplicated paths - Muk web theme table header background-color and on hover for Many2many - Script docker-compose use lowercase name - website_form_builder HTML support and allow option to align send button - Odoo cherry-pick 2 commits bus fix - Minor fix css color into module hr_theme from repo CybroOdoo_OpenHRMS - Typo in project task when logging time ### Removed - Module package erplibre from ERPLibre_erplibre_addons and use instead image creation, check Makefile ## [1.3.0] - 2022-01-25 **Migration note** With new version of poetry, a bug occurs in the update. The solution is to delete the directory to let it recreate. `rm -rf ~/.poetry` ### Added - Code generator supports view : activity, calendar, diagram, form, graph, kanban, pivot, search, timeline and tree - Code generator supports portal view field and form creation - Code generator generates generic snippets for demo_portal - Code generator generates code_generator with code_generator_code_generator - Code generator tests mariadb migrator - Code generator supports javascript interpretation for snippet - Code generator supports inheritance - Code generator new project to create the suite of generation code - Script to test the generation of module `code_generator` - Make test_full_fast to run all test in parallel - Module `web_timeline` and `web_diagram_position` in base image. - Module `odoo-formio` from novacode-nl - Module `design_themes` from Odoo - Format python header with isort ### Changed - Update to Python==3.7.12 - Update to poetry==1.1.12 - Update pip dependency with security update - Pillow==9.0.0 - lxml==4.7.1 - babel==2.9.1 - pyyaml==6.0 - reportlab==3.6.5 - Web diagram module has all color of the rainbow in option - Refactor and simplify code of code_generator, better support of code reader ### Fixed - Downgrade Werkzeug==0.11.15, only this version is supported by Odoo 12.0. This fixes some http request behind a proxy. ## [1.2.1] - 2021-09-28 ### Added - doc/migration.md ### Changed - Update pip dependency with security update - Jinja2==2.11.3 - lxml==4.6.3 - cryptography==3.4.8 - psutil==5.6.6 - Pillow==8.3.2 - Werkzeug==0.15.3 - Script separate generate_config.sh from install_locally.sh - Improve developer documentation - More Docker script #### Code generator - Improve db_servers generation code - Improve wizard generate UI menu ### Fixed - Mobile view menu item in Web interface from muk_web_theme ## [1.2.0] - 2021-07-21 **Migration note** Because addons repository has change, config file need to be updated. - When upgrading to version 1.2.0: - From docker - Clone project if only download docker-compose - `git init` - `git remote add origin https://github.com/erplibre/erplibre` - `git fetch` - `mv ./docker-compose.yml /tmp/temp_docker-compose.yml` - `git checkout master` - `mv /tmp/temp_docker-compose.yml ./docker-compose.yml` - Update `./docker-compose.yml` depending of difference with git. - Run script `make docker_exec_erplibre_gen_config` - Restart the docker `make docker_restart_daemon` - From vanilla - Run script `make install_dev` - Restart your daemon - Regenerate master password manually ### Added - Adapt script to give an execution status - Multilingual markdown - Guide to use Cloudflare with DDNS - Script to check git diff and ignore date - Repo with ERPLibre image - Improve git repo usage, filter repo by use case - ERPLibre theme website of TechnoLibre - ERPLibre website snippet - Basic HTML snippets - Snippet card - Snippet timelines - Module contract_digitized_signature with contract_portal - Module disable auto_backup - Odoo cli db command to manipulate restoration db - Odoo cli i18n command to generate i18n pot files #### Makefile - Format code - Code generator test - Addons installation - OS installation - Restore database - Docker execution #### Code generator - Code generator for Odoo module, depending of ERPLibre - Support map geospatial - Support i18n - Script to transform Python and XML to Python code writer script to regenerate themselves ### Changed - Update Python dependency with Poetry - Format all Python code with black - Module auto_backup with sftp host key - Module muk_website_branding use ERPLibre branding - Update docs with vscode support, custom document layout, custom email template and trick to use params to share variable #### Docker - Use buster python 3.7.7 image to remove pyenv - Update Postgresql to support Postgis - Support volume addons /ERPLibre/addons/addons ### Fixed - Ubuntu installation - Poetry installation - Geospatial with postgis can be installed ## [1.1.1] - 2020-12-11 ### Added - Developer, test, migration and user documentation - Branding ERPLibre with muk_branding - Uninstall module from parameter Odoo - Makefile to generate ERPLibre documentation WIP - Docker support volume on /etc/odoo - Docker support update database ### Changed - Better documentation on how to use ERPLibre and release - Support wkhtmltox_0.12.6-1 ### Fixed - db_backup to accept public host key on sftp - Docker dependency - Freeze poetry version 1.0.10 ## [1.1.0] - 2020-09-30 ### Added - Docker - Pyenv to manage python version - Poetry to manage python dependencies - Script poetry_update to search all dependencies in addons - Travis CI WIP - TODO.md - Guide to update all repositories with community - Update manifest - Add missing OCA repos - Add medical, property management and more - Add cloud/saas repo ### Changed - Update to Odoo Community 12.0 and all addons - Rename venv to .venv - More documentation on how to use ERPLibre ## [1.0.1] - 2020-07-14 ### Added - Improved documentation with development and production environment - Improved documentation with git repo - Move default.xml manifest to root, the default location - Support default.staged.xml to update prod with dev - Feature to show diff between manifests or between repo of different manifests - Update manifest - Muk theme in erplibre_base - Add draft account invoice approbation in portal - New module sale_fix_update_price_unit_when_update_qty - New module account_invoice_approbation - New module sale_margin_editor ### Fixed - Production installation with git_repo ## [1.0.0] - 2020-07-04 ### Added - Environment of development, discovery and production with documentation and script. - Google git-repo to support addons repository instead of using Git submodule. ### Removed - Git submodule ## [0.1.1] - 2020-04-28 ### Added - Support helpdesk supplier, helper, employee and services - Support [SanteLibre.ca](https://santelibre.ca) with MRP, website, hr, ecommerce - Donation module with thermometer for website - Script to fork project and all repos in submodule to create ERPLibre ## [0.1.0] - 2020-04-20 ### Added - Move project from https://github.com/mathbentech/InstallScript to ERPLibre. - Support of Odoo Community 12.0 2019-11-19 94bcbc92e5e5a6fd3de7267e3c01f8c11fb045f4. ### Changed - Support scrummer, project, sale, website, helpdesk and hr - Support Nginx and improve installation ### Fixed - Support only python3.6 and python3.7, python3.8 causes error in runtime. [Unreleased]: https://github.com/ERPLibre/ERPLibre/compare/v1.8.0...HEAD [1.8.0]: https://github.com/ERPLibre/ERPLibre/compare/v1.7.0...v1.8.0 [1.7.0]: https://github.com/ERPLibre/ERPLibre/compare/v1.6.0...v1.7.0 [1.6.0]: https://github.com/ERPLibre/ERPLibre/compare/v1.5.0...v1.6.0 [1.5.0]: https://github.com/ERPLibre/ERPLibre/compare/v1.4.0...v1.5.0 [1.4.0]: https://github.com/ERPLibre/ERPLibre/compare/v1.3.0...v1.4.0 [1.3.0]: https://github.com/ERPLibre/ERPLibre/compare/v1.2.1...v1.3.0 [1.2.1]: https://github.com/ERPLibre/ERPLibre/compare/v1.2.0...v1.2.1 [1.2.0]: https://github.com/ERPLibre/ERPLibre/compare/v1.1.1...v1.2.0 [1.1.1]: https://github.com/ERPLibre/ERPLibre/compare/v1.0.1...v1.1.1 [1.1.0]: https://github.com/ERPLibre/ERPLibre/compare/v1.0.1...v1.1.0 [1.0.1]: https://github.com/ERPLibre/ERPLibre/compare/v1.0.0...v1.0.1 [1.0.0]: https://github.com/ERPLibre/ERPLibre/compare/v0.1.1...v1.0.0 [0.1.1]: https://github.com/ERPLibre/ERPLibre/compare/v0.1.0...v0.1.1 [0.1.0]: https://github.com/ERPLibre/ERPLibre/releases/tag/v0.1.0