Skip to content

Changelog

All notable changes to this project are documented here.

[0.8.3] - 2026-08-11

Added

  • of env init --init-db now creates the database and installs modules on a fresh environment. It starts the containers if needed, refuses to run when the database already exists, runs odoo -d <db> -i <modules> --load-language <lang> --stop-after-init with the DB_USER/DB_PASSWORD/ADMIN_PASSWORD from the environment .env, verifies the modules reached the installed state, and sets the admin user password (random unless --admin-password is given). It also reconciles the postgres role password with the .env (fixes auth failures when the data volume was initialized with an older .env), writes db_name into etc/odoo.conf and 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 (default base), --language (default en_US), --admin-user (default admin), --admin-password (random if omitted). New ProjectManager-based init_db() helper in odoofly.core.db, plus update_odoo_conf_options() in odoofly.core.odoo_conf.

Fixed

  • ProjectManager.module_states(), pending_modules() and modules() 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-db also verifies the database was actually created after the init and reports a clear error (with a --verbose hint) when it was not.

[0.8.2] - 2026-08-09

Fixed

  • of env update now decides success by verifying the real module state in ir_module_module after the update, same as of env install since 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 --verbose hint. Real failures print each module's final state. With target modules, success means all of them end up installed; for update all, success means no module is left pending (to upgrade, to install, to remove). New ProjectManager.pending_modules() helper
  • of env update -m now accepts a comma-separated module list (e.g. -m a,b,c), like of env install. Installed modules are passed to -u, known-but-uninstalled ones to -i; unknown names still raise "Module not found" listing them
  • of env update --git no longer silently ignores -m and -r: with -g -m the 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. -g alone keeps its behaviour and now prints a clear closing message ("✅ Repositories updated.", plus a warning when the module list refresh failed). The --git JSON output gains module/module_updated/restarted fields 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 install now decides success by verifying the real module state in ir_module_module after 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 --verbose hint; real failures print each module's final state. Supports comma-separated module lists. New ProjectManager.module_states() helper and backward-compatible error_log collector in _run_odoo_command()

[0.8.0] - 2026-08-07

Fixed

  • of env init and of project init no longer overwrite an existing docker-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 init new --recreate flag to force regeneration of docker-compose.yml.
  • of project init --force is now implemented: overwrites existing environments (previously documented but not functional).

[0.7.9] - 2026-08-06

Added

  • of repo add now clones the repository into addons/ and then refreshes the Odoo app list, reporting the result in both console and JSON output. New --db flag selects the target database (defaults to DB_NAME from .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 check now 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 install reportaba "installed successfully" aunque la instalacion fallara con ERROR/CRITICAL (ParseError, modulos no instalados quedaban como exito). Ahora install() pasa log_check=True a _run_odoo_command, igual que update(), 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 --json was not passed. The default of typer OptionInfo objects (truthy) leaked into direct Python calls, making if json_output: evaluate as True.
  • Removed the short -r flag from of env conf --ram (it was shadowed by --restart -r).

[0.7.7] - 2026-08-03

Added

  • Project-level CHANGELOG.md is 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 password now also logs to project.log (previously only CHANGELOG.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 lists CHANGELOG.md and project.log in the project structure table

Security

  • Passwords are never written to any log — of env password records only the user, database and environment, never the password value

[0.7.6] - 2026-07-16

Added

  • of repo auth now detects SSH repositories and diagnoses connectivity: if git ls-remote fails, 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 token
  • of project check now tests connectivity for repos that are "Not cloned": runs git ls-remote and shows a hint for SSH key setup or token configuration when the remote is unreachable
  • env init -v / --verbose mode with step-by-step output (directory creation, repo status, requirements, etc.)
  • project.log entries on environment initialization failure ([FAILED])

Changed

  • create_environment() now returns {"success": False, "error": "..."} instead of the generic {"requirements_created": False} when repo cloning fails
  • env init checks result.success and exits with a clear error message + project.log entry instead of falsely printing "initialized successfully"
  • env init JSON output includes "error" field on failure
  • _init_project() propagates RuntimeError, properly caught by project_init and project_new
  • Generic clone-failure hint replaced with the actual _diagnose_clone_error() hint from the exception

Fixed

  • of env init no longer prints "✅ initialized successfully" when repo cloning fails

[0.7.5] - 2026-07-16

Added

  • Smart clone failure diagnostics — when a git clone fails, 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 --yes when no environment was created

Changed

  • of project new now 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 new regardless of --yes

Fixed

  • UnboundLocalError on server_opts when of project new runs with --no-env default
  • project.log not logging repository clones during environment initialization

[0.7.4] - 2026-07-16

Added

  • project.log auto-generated per project — logs routine operations (env up, env down, env restart, env init, env update, env check) with syslog-style YYYY-MM-DD HH:MM:SS [ACTION] detail format. 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 check and of 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 new now auto-generates a README.md in 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 in project.py renders the README template — designed for future custom client README templates

[0.7.1] - 2026-07-14

Changed

  • .gitignore now dynamically adds environment directories (main/, production/, staging_*/) as they are created — only project.yml (and optionally .project.lock) need version control
  • ensure_gitignore_entry() helper keeps .gitignore in 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 .env file
  • of repo auth — interactive CLI command to fill unresolved ${VAR} tokens in your per-environment .env file without exposing secrets in project.yml
  • Hardcoded token warnings — of project check and of env check now warn when a repository token is a plain string instead of a ${VAR} reference
  • Automatic .gitignore created on of project new, pre-configured to ignore .env and the initial environment directory. New environments created via of env new or of env staging new are automatically appended — only project.yml (and optionally .project.lock) need version control
  • .project.lock now stores per-environment metadata (version, image, per-env updated_at) for full auditability
  • of env rm automatically removes the environment entry from .project.lock

Changed

  • resolve_env_vars() applied in create_environment() and update_environment() so token/url/branch/rev can leverage shell and .env variables
  • check_hardcoded_tokens() utility used in health-check commands
  • save_project_lock() accepts optional env_data dict with version and image
  • remove_env_from_lock() helper for cleaning up removed environments

[0.6.2] - 2026-07-14

Features

  • New rev field for repositories in project.yml — pin a tag (e.g. rev: "17.0") or commit SHA (e.g. rev: "a1b2c3d") instead of a branch
  • Automatic .project.lock file generated after of env update --git and of env init, recording the exact commit SHA of every cloned repository for deterministic production deployments
  • of repo add now supports --rev flag
  • parse_repositories() no longer defaults a branch when rev is 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, backup commands (type of env up <TAB> inside a project directory)
  • of project ls now 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 backup is now a sub-app with new, ls, rm, prune commands
  • of env backup new replaces of env backup (same syntax, now under sub-app)
  • of env backup ls lists backup files (metadata: size, age, db_name)
  • of env backup rm <env> <filename> deletes a specific backup file
  • of env backup prune <env> with --keep, --days, or --before to clean old backups
  • Cleaner ls output: removed Version and Modules columns

Improvements

  • Extracted of env staging new as dedicated command (separated from env new --staging)
  • env new --staging kept 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 check improved: 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 check and improved of project check
  • Added Git branching + staging workflow guide in both READMEs

[0.5.5] - 2026-07-02

Features

  • New of env conf command: centralized odoo.conf management
  • --db-name and --hide-db-list/--no-hide-db-list flags for project/env creation commands
  • --clear-db-name flag to remove default DB setting and restore database picker
  • --set and --unset for arbitrary odoo.conf keys
  • Persisted in .env as DB_NAME / DB_LIST, auto-reapplied on env update --so
  • Restart suggestion after server option changes
  • New of project set-master-password command: changes master password in project.yml, .env, and odoo.conf for all environments

Bug Fixes

  • Fixed semantic inversion of --hide-db-list (was writing list_db = true instead of false)

[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

  • 17

  • 19

  • 19 & Install Modules

  • 19 & Uninstall Modules

[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