Changelog¶
All notable changes to this project are documented here.
[0.8.3] - 2026-08-11¶
Added¶
of env init --init-dbnow creates the database and installs modules on a fresh environment. It starts the containers if needed, refuses to run when the database already exists, runsodoo -d <db> -i <modules> --load-language <lang> --stop-after-initwith theDB_USER/DB_PASSWORD/ADMIN_PASSWORDfrom the environment.env, verifies the modules reached theinstalledstate, and sets the admin user password (random unless--admin-passwordis given). It also reconciles the postgres role password with the.env(fixes auth failures when the data volume was initialized with an older.env), writesdb_nameintoetc/odoo.confand restarts the odoo container so the URL opens the database login page directly instead of the database selector. Prints the access data (URL, admin/DB credentials, master password) or returns it as JSON with--json. New flags:-m/--modules(defaultbase),--language(defaulten_US),--admin-user(defaultadmin),--admin-password(random if omitted). NewProjectManager-basedinit_db()helper inodoofly.core.db, plusupdate_odoo_conf_options()inodoofly.core.odoo_conf.
Fixed¶
ProjectManager.module_states(),pending_modules()andmodules()no longer crash on psql output lines that are not query tuples (e.g. stderr NOTICE/error lines mixed into the exec output). Such lines are now skipped instead of raising "not enough values to unpack".of env init --init-dbalso verifies the database was actually created after the init and reports a clear error (with a--verbosehint) when it was not.
[0.8.2] - 2026-08-09¶
Fixed¶
of env updatenow decides success by verifying the real module state inir_module_moduleafter the update, same asof env installsince 0.8.1, instead of failing on any ERROR/CRITICAL line in the log. Databases carrying pre-existing errors unrelated to the update (broken registry entries of other modules, skipped demo data) no longer produce a false "❌ Error updating" after a successful update; unrelated log errors are surfaced as a warning with a--verbosehint. Real failures print each module's final state. With target modules, success means all of them end upinstalled; for update all, success means no module is left pending (to upgrade,to install,to remove). NewProjectManager.pending_modules()helperof env update -mnow accepts a comma-separated module list (e.g.-m a,b,c), likeof env install. Installed modules are passed to-u, known-but-uninstalled ones to-i; unknown names still raise "Module not found" listing themof env update --gitno longer silently ignores-mand-r: with-g -mthe module update runs after the repositories are refreshed, and with-g -r(without-m) the environment is restarted at the end. Previously the command exited 0 without updating or restarting and without any message.-galone keeps its behaviour and now prints a clear closing message ("✅ Repositories updated.", plus a warning when the module list refresh failed). The--gitJSON output gainsmodule/module_updated/restartedfields when those flags are used, and the command exits non-zero when the composed module update or restart fails
[0.8.1] - 2026-08-08¶
Fixed¶
of env installnow decides success by verifying the real module state inir_module_moduleafter the install, instead of trusting the odoo log. Fixes both failure modes: false success when the log was not checked, and false errors on databases carrying pre-existing ERROR lines unrelated to the installed module (broken registry entries of other modules, demo data skipped with a traceback). Unrelated log errors are surfaced as a warning with a--verbosehint; real failures print each module's final state. Supports comma-separated module lists. NewProjectManager.module_states()helper and backward-compatibleerror_logcollector in_run_odoo_command()
[0.8.0] - 2026-08-07¶
Fixed¶
of env initandof project initno longer overwrite an existingdocker-compose.yml. The compose (and.env) are only regenerated when missing or when explicitly requested (of env init --recreate/of project init --force).
Added¶
of env initnew--recreateflag to force regeneration ofdocker-compose.yml.of project init --forceis now implemented: overwrites existing environments (previously documented but not functional).
[0.7.9] - 2026-08-06¶
Added¶
of repo addnow clones the repository intoaddons/and then refreshes the Odoo app list, reporting the result in both console and JSON output. New--dbflag selects the target database (defaults toDB_NAMEfrom.env).- New
of env update-list [env] [db]command to manually refresh the Odoo module/app list in a database.
[0.7.8] - 2026-08-06¶
Added¶
of project checknow verifies URL accessibility for environments with a domain (server.domain): performs an HTTPS (falling back to HTTP) request and reports the URL plus result in both table and JSON output.
Fixed¶
of env installreportaba "installed successfully" aunque la instalacion fallara con ERROR/CRITICAL (ParseError, modulos no instalados quedaban como exito). Ahorainstall()pasalog_check=Truea_run_odoo_command, igual queupdate(), y devuelve error real.- Commands that internally call other commands (
of env conf --restart,of project init --up,of env new --yes,of env init -u) no longer print JSON output when--jsonwas not passed. The default of typerOptionInfoobjects (truthy) leaked into direct Python calls, makingif json_output:evaluate as True. - Removed the short
-rflag fromof env conf --ram(it was shadowed by--restart -r).
[0.7.7] - 2026-08-03¶
Added¶
- Project-level
CHANGELOG.mdis now auto-updated by every significant operation, with entries grouped by date and action (### Added/### Changed/### Removed):of project init,of env init,of env install,of env uninstall,of env update,of env password,of env staging new,of env staging refresh,of env backup new,of env restore,of env backup rm,of env backup prune,of db create,of db rm,of db cpn of env passwordnow also logs toproject.log(previously onlyCHANGELOG.md)- New
docs/reference/logging.md— complete reference of the project logging system (CHANGELOG.md+project.log): where each file lives, per-operation messages, what is intentionally not logged, security notes and automation snippets. Linked from the docs navigation and both READMEs - Generated project README (
templates/readme/README.md.j2) now listsCHANGELOG.mdandproject.login the project structure table
Security¶
- Passwords are never written to any log —
of env passwordrecords only the user, database and environment, never the password value
[0.7.6] - 2026-07-16¶
Added¶
of repo authnow detects SSH repositories and diagnoses connectivity: ifgit ls-remotefails, it suggests adding your SSH public key as a Deploy Key on GitHub (Settings → Deploy keys → Add deploy key) and offers the alternative of switching to HTTPS with a tokenof project checknow tests connectivity for repos that are "Not cloned": runsgit ls-remoteand shows a hint for SSH key setup or token configuration when the remote is unreachableenv init -v/--verbosemode with step-by-step output (directory creation, repo status, requirements, etc.)project.logentries on environment initialization failure ([FAILED])
Changed¶
create_environment()now returns{"success": False, "error": "..."}instead of the generic{"requirements_created": False}when repo cloning failsenv initchecksresult.successand exits with a clear error message + project.log entry instead of falsely printing "initialized successfully"env initJSON output includes"error"field on failure_init_project()propagatesRuntimeError, properly caught byproject_initandproject_new- Generic clone-failure hint replaced with the actual
_diagnose_clone_error()hint from the exception
Fixed¶
of env initno longer prints "✅ initialized successfully" when repo cloning fails
[0.7.5] - 2026-07-16¶
Added¶
- Smart clone failure diagnostics — when a
git clonefails, the error message now includes an actionable hint: SSH key setup, missing token, wrong credentials, repo not found, or wrong branch name _diagnose_clone_error()utility for classifying git errors and suggesting fixes- 6 new tests for
_diagnose_clone_error()covering all failure scenarios - Environment creation hint after
of project new --yeswhen no environment was created
Changed¶
of project newnow defaults to--no-env(no environment created). In interactive mode, the user is prompted: "Do you want to create an environment now?"- Success message now always shows after
of project newregardless of--yes
Fixed¶
UnboundLocalErroronserver_optswhenof project newruns with--no-envdefaultproject.lognot logging repository clones during environment initialization
[0.7.4] - 2026-07-16¶
Added¶
project.logauto-generated per project — logs routine operations (env up,env down,env restart,env init,env update,env check) with syslog-styleYYYY-MM-DD HH:MM:SS [ACTION] detailformat. Ignored by.gitignore.of repo add --token <value>now auto-converts the token to a${GIT_TOKEN_<REPO>}variable reference, stores the real value in<env>/.env, and prints a confirmation message
Fixed¶
- Warning display in
of project checkandof env check— hardcoded token warnings now show the message text instead of the raw dict
[0.7.3] - 2026-07-16¶
Fixed¶
clone_or_update_repo()ahora maneja correctamente repositorios vacíos: clona sin branch, borra la branch default (main), y crea/checkoutea la branch del proyecto (ej.18.0)parse_repositories()restaurado para default branch = version
Changed¶
ensure_gitignore_entry()extraída como helper público para agregar entradas a.gitignore
[0.7.2] - 2026-07-16¶
Features¶
of project newnow auto-generates aREADME.mdin the project root from a Jinja2 template (templates/readme/README.md.j2) with project name, author, Odoo version, quick-start commands, common operations reference and project structure overview- New
create_project_readme()utility inproject.pyrenders the README template — designed for future custom client README templates
[0.7.1] - 2026-07-14¶
Changed¶
.gitignorenow dynamically adds environment directories (main/,production/,staging_*/) as they are created — onlyproject.yml(and optionally.project.lock) need version controlensure_gitignore_entry()helper keeps.gitignorein sync
[0.7.0] - 2026-07-14¶
Features¶
- New
${VAR}token variable resolution — tokens can reference environment variables (e.g.token: "${GIT_TOKEN}") resolved from the shell environment or the env's.envfile of repo auth— interactive CLI command to fill unresolved${VAR}tokens in your per-environment.envfile without exposing secrets inproject.yml- Hardcoded token warnings —
of project checkandof env checknow warn when a repository token is a plain string instead of a${VAR}reference - Automatic
.gitignorecreated onof project new, pre-configured to ignore.envand the initial environment directory. New environments created viaof env neworof env staging neware automatically appended — onlyproject.yml(and optionally.project.lock) need version control .project.locknow stores per-environment metadata (version,image, per-envupdated_at) for full auditabilityof env rmautomatically removes the environment entry from.project.lock
Changed¶
resolve_env_vars()applied increate_environment()andupdate_environment()so token/url/branch/rev can leverage shell and.envvariablescheck_hardcoded_tokens()utility used in health-check commandssave_project_lock()accepts optionalenv_datadict withversionandimageremove_env_from_lock()helper for cleaning up removed environments
[0.6.2] - 2026-07-14¶
Features¶
- New
revfield for repositories inproject.yml— pin a tag (e.g.rev: "17.0") or commit SHA (e.g.rev: "a1b2c3d") instead of a branch - Automatic
.project.lockfile generated afterof env update --gitandof env init, recording the exact commit SHA of every cloned repository for deterministic production deployments of repo addnow supports--revflagparse_repositories()no longer defaults a branch whenrevis set
[0.6.1] - 2026-07-07¶
Features¶
- Tab autocompletion for database names in
db shell,db rm,db cpn,env backup new,env install,env uninstall,env update - Tab autocompletion for backup filenames in
env backup rm - Tab autocompletion for repository URLs in
repo rm - All new completions gracefully return empty if container is offline
[0.6.0] - 2026-07-07¶
Features¶
- Tab autocompletion for environment names in all
env,db,repo,staging,backupcommands (typeof env up <TAB>inside a project directory) of project lsnow shows URLs for all running environments, not just the first one
Bug Fixes¶
- Dashboard now displays access URLs for all environments of a project
[0.5.8] - 2026-07-03¶
Features¶
of env backupis now a sub-app withnew,ls,rm,prunecommandsof env backup newreplacesof env backup(same syntax, now under sub-app)of env backup lslists backup files (metadata: size, age, db_name)of env backup rm <env> <filename>deletes a specific backup fileof env backup prune <env>with--keep,--days, or--beforeto clean old backups- Cleaner
lsoutput: removed Version and Modules columns
Improvements¶
- Extracted
of env staging newas dedicated command (separated fromenv new --staging) env new --stagingkept as alias for backwards compatibility- Fix filestore sync in
staging refresh: purge before copy to avoid stale data
[0.5.7] - 2026-07-03¶
Features¶
- New
of env staging refresh <env>command: sync DBs from source to staging (pg_dump → psql cross-container, neutralize, filestore copy) - Fix
of db cpn: now resolves env_hash so it actually works
[0.5.6] - 2026-07-03¶
Features¶
- New
of env check <env>command: runtime health check — containers, logs (ERROR/FATAL scan), DB connectivity, port, odoo.conf keys, .env vars, cloned repos of project checkimproved: now validates odoo.conf existence and required keys, container status via docker compose ps, log scanning for ERROR/FATAL, and port binding check per environment
Documentation¶
- Updated README.md and README_ES.md with
of env checkand improvedof project check - Added Git branching + staging workflow guide in both READMEs
[0.5.5] - 2026-07-02¶
Features¶
- New
of env confcommand: centralized odoo.conf management --db-nameand--hide-db-list/--no-hide-db-listflags for project/env creation commands--clear-db-nameflag to remove default DB setting and restore database picker--setand--unsetfor arbitrary odoo.conf keys- Persisted in
.envasDB_NAME/DB_LIST, auto-reapplied onenv update --so - Restart suggestion after server option changes
- New
of project set-master-passwordcommand: changes master password in project.yml, .env, and odoo.conf for all environments
Bug Fixes¶
- Fixed semantic inversion of
--hide-db-list(was writinglist_db = trueinstead offalse)
[0.5.4] - 2026-06-26¶
Bug Fixes¶
- Check exit codes from container exec_run in backup version detection
- Safeguard ast.literal_eval with try/except for invalid version strings
- Run chown as root when fixing filestore permissions after restore
- Change default RAM from 2GB to auto-detection to prevent worker OOM kills
[0.5.0] - 2026-05-28¶
Bug Fixes¶
- test_cli
- make mypy non-blocking in CI, add .coverage to gitignore
Features¶
- clean error messages for missing environments
- v0.5.0 — integrate odoogci/odooconf, repo detail output, version bump
[0.4.4] - 2026-05-27¶
Features¶
- enterprise quality — session auth, structured logging, CI/CD pipeline
Testing¶
- increase coverage from 40 to 120 tests across all core modules
[0.4.3] - 2026-05-27¶
Bug Fixes¶
- use docker compose ps instead of labels for env running checks and status
Refactor¶
- modularize core logic and improve test isolation
[0.4.2] - 2026-05-26¶
Bug Fixes¶
- descriptive JSON output instead of {} for --json, bump v0.4.2
[0.4.1] - 2026-05-25¶
Bug Fixes¶
- fix(compose): set top-level project name in rendered docker-compose.yml
- fix(compose): set top-level project name in rendered docker-compose.yml
- Problem with project name
- fix(env update): mandar -u en vez de -i cuando el modulo ya esta instalado
- fix(env update): mandar -u en vez de -i cuando el modulo ya esta instalado
- check env containers running before operating on db/env commands
Features¶
- addons untracked in project check
- JSON in all commands
- --yes in all commands (if apply)
- Logs save support
Miscellaneous¶
- merge remote-tracking branch 'origin/main' into unstable
Refactor¶
- Black format
[0.4.0] - 2026-05-20¶
Bug Fixes¶
- production template
Features¶
- JSON in all commands
Work in Progress¶
- work in #42
[0.3.9] - 2026-05-15¶
Bug Fixes¶
- close #35
- close #34
- close #34
- close #9
[0.3.8] - 2026-05-14¶
Features¶
- support for plugins
Updates¶
- Version Number
Work in Progress¶
-
16 Close #44 #43¶
[0.3.7] - 2026-05-07¶
Bug Fixes¶
- Repositories clone in Production mode
- Bug with production-traefik.j2 and odoo web #31
- Longpolling in Production #33
Updates¶
- README.md README_ES.md
- README.md README_ES.md
Work in Progress¶
-
16 #43¶
[0.3.6] - 2026-04-22¶
Bug Fixes¶
Features¶
- Repositories manager & add: env pull to update docker images
[0.3.5] - 2026-04-21¶
Bug Fixes¶
- NoneType when execute env ls or env stats in a Folder without project
- Tests
- close #18
Features¶
- Password in Dashboard
- Custom Command #15 & Fix Password Error
Testing¶
- Tests xD
- Tests xD
[0.3.4] - 2026-04-14¶
Documentation¶
- improve Documentation
Features¶
- Project Check with Database container support
- Restart Command
- docker Image generator Works, but not work odoo.conf
- PRE_INSTALL & POST_INSTALL in Environment
- Dashboard
Miscellaneous¶
- change Version
Updates¶
- readme actualizados
[0.3.3] - 2026-04-10¶
Bug Fixes¶
- Major Bugs
- No clone repositories in Production
- No clone repositories in Production
Documentation¶
- improve Readme(s) & fix problem with docker client
Features¶
- Basic Testing
- Proxy Logs
- Check Compatibility
- Check Project
- URL in Env
- Support for python Requirements and Image build #14 :)
Miscellaneous¶
- ignore dist folder
- remove nginx support
Updates¶
- en manejo de Traefik
- Actions
[0.3.2] - 2026-03-31¶
Features¶
- improve security, stability and CLI usability (v0.3.2)
Miscellaneous¶
- vía Gemini
[0.3.1] - 2026-03-30¶
Bug Fixes¶
- close #26
Features¶
- basic Config in config.yaml #17
- Basic User Configuration
- Basic Setup User Configuration
Miscellaneous¶
- merge branch 'unstable' into unstable.user_config
Updates¶
- README.md README_ES.md
- Packages
[0.3.0] - 2026-03-26¶
Miscellaneous¶
- change Logo
- merge pull request #27 from Alitux/main.odoogci-pypi
- delete publicaciones.md
Updates¶
- add publicaciones.md in .gitignore
- README.md & README_ES.md
- README.md README_ES.md
Work in Progress¶
[0.2.9] - 2026-02-24¶
Bug Fixes¶
- Dev in Production Traefik
- close #25 Cambiar contraseña de Usuario
[0.2.8] - 2026-02-17¶
Bug Fixes¶
- Empty repositories
Miscellaneous¶
- merge pull request #22 from Alitux/21-nonetype-cuando-hay-dos-entornos-en-backup
[0.2.7] - 2026-02-17¶
Bug Fixes¶
- Refactor db list functionality
- env_stats
- env_stats containers name
-
21¶
Documentation¶
- Update README with new features and flags
Features¶
- 0.2.6 Release
- 0.2.6 Release with Fix
Updates¶
- README.md & ADD README_ES.md
- ADD README_ES.md
[0.2.6] - 2025-12-19¶
Bug Fixes¶
- Working dir bug
[0.2.5] - 2025-12-18¶
Bug Fixes¶
- Bug in aux.py
- db_list & update method
Features¶
- Long Polling Support in production
- Long Polling Support in production
[0.2.4] - 2025-10-16¶
Bug Fixes¶
- Version in main.py
- self.get_db_envvars with env
Updates¶
- README.md
- mv ls_modules to ProjectManager
- README.md
[0.2.2] - 2025-10-07¶
Updates¶
- Version 0.2.2 Staging in local 🥳
Work in Progress¶
- staging generation
- Generate Staging
- Generate Staging
- Staging
- staging generationwork only in main
- staging generation works :)
[0.2.1] - 2025-09-30¶
Bug Fixes¶
- Close #11
[0.2.0] - 2025-09-10¶
Bug Fixes¶
- Users == 1 bug
- Verbose exit in dc down & dc up
- env down & env up & add: env init
Refactor¶
- New Project upd: README.MD
Updates¶
- README.md & add Logo
- README.md
- README.md & project not_env option and multiples fixes. Version 0.1.2 installable
Work in Progress¶
- env_hash & Version Integration
- Version & production mode
[0.1.9] - 2025-09-09¶
Features¶
- Traefik RPM deploy Function 🔥
[0.1.8] - 2025-09-05¶
Bug Fixes¶
- WIP in rm environment #7
- WIP in rm environment #7
- rm environment Close #7
- rm environment Close #7
Features¶
- Traefik RPM deploy Function 🔥
Work in Progress¶
- Working in #11
[0.1.7] - 2025-08-12¶
Bug Fixes¶
- Bug in env update
- Upgrade in PM
Features¶
- ProjectManager Class & WIP in #6
- WIP Backup Function #6
- Close #6 Odoo Backups 🥳
Refactor¶
- Black Format
Updates¶
- Move psqshell & odooshell to ProjectManager
Work in Progress¶
- Uninstall Function
[0.1.6] - 2025-07-11¶
Bug Fixes¶
- close #4 add: list modules in db
[0.1.5] - 2025-06-10¶
Features¶
- Staging Function WIP #1
[0.1.4] - 2025-06-05¶
Features¶
- Update env & Minor Changes in devel.j2
- db cpn & Fix Volume names
[0.1.3] - 2025-05-31¶
Bug Fixes¶
- Bugs in env new & RAM calculation
Features¶
- Basic Stats command & upd: readme.md
[0.1.0] - 2025-05-05¶
Features¶
- First Commit