Choosing « remote » as the migration source raised AttributeError: the method
had moved to DatabaseManager, and todo_upgrade still called it on the TODO
object. The remote path was therefore unusable — the only way to start a
migration from a production backup rather than a local zip.
--- FR ---
Choisir « remote » comme source de migration levait une AttributeError : la
méthode avait été déplacée vers DatabaseManager, et todo_upgrade l'appelait
toujours sur l'objet TODO. Le chemin distant était donc inutilisable — le seul
moyen de démarrer une migration depuis une sauvegarde de production plutôt que
depuis un zip local.
Assisted-by: Claude Opus 5
@capacitor/cli v8.x requires Node.js >=22.0.0. The install script
was pinning NODE_MAJOR=20, causing a fatal error when installing
the mobile app via todo.py.
--- FR ---
@capacitor/cli v8.x exige Node.js >= 22.0.0. Le script d'installation
figeait NODE_MAJOR=20, d'où une erreur fatale à l'installation de
l'application mobile depuis todo.py.
Assisted-by: Claude Sonnet 4.6
The path was listed for every version, but git_manifest_odoo18.0.xml does not
declare that repository — only 12.0 to 17.0 and the extra 18.0 manifest do. On
Odoo 18 without the extra modules, repo never syncs the directory, so Odoo was
handed an addons path entry that does not exist.
--- FR ---
Le chemin était listé pour toutes les versions, alors que
git_manifest_odoo18.0.xml ne déclare pas ce dépôt — seuls les manifestes de
12.0 à 17.0 et le manifeste extra de 18.0 le font. Sur Odoo 18 sans les modules
extra, repo ne synchronise jamais ce répertoire : on donnait donc à Odoo une
entrée de chemin d'addons qui n'existe pas.
Assisted-by: Claude Opus 5
Poetry install and git-repo sync are independent (different write
paths). Running them sequentially wastes time. Split install_locally.sh
into EL_PHASE=setup|poetry|all phases so install_locally_dev.sh can
background the repo sync while poetry runs in the foreground, reducing
total install time by up to 50% on slow connections.
Set EL_PARALLEL_INSTALL=0 to restore sequential behavior for debugging.
--- FR ---
L'installation poetry et la synchronisation git-repo sont indépendantes —
elles écrivent à des endroits différents — et les enchaîner fait perdre du
temps. install_locally.sh est découpé en phases EL_PHASE=setup|poetry|all
pour qu'install_locally_dev.sh puisse lancer la synchronisation des dépôts
en arrière-plan pendant que poetry tourne au premier plan, réduisant la
durée totale jusqu'à 50 % sur une connexion lente.
EL_PARALLEL_INSTALL=0 rétablit le comportement séquentiel pour le débogage.
Assisted-by: Claude Sonnet 4.6
CybroOdoo repos are large and slow to clone, making them unsuitable
for default installation. Moves them to opt-in per-version extra
manifests, introduces .erplibre-state.json to track installation
options per Odoo version, and surfaces the choice in the TODO CLI
sub-menu. Switch auto-detects extra from state and warns when no
state is recorded.
--- FR ---
Les dépôts CybroOdoo sont volumineux et lents à cloner, ce qui les rend
inadaptés à une installation par défaut. Ils passent dans des manifestes
extra par version, activés à la demande ; .erplibre-state.json est
introduit pour suivre les options d'installation de chaque version d'Odoo,
et le choix apparaît dans le sous-menu du CLI TODO. Le changement de
version détecte l'option extra depuis cet état et avertit quand aucun état
n'est enregistré.
Assisted-by: Claude Sonnet 4.6
make version had no visibility into whether the mobile project was
active. Add detection via presence of mobile/erplibre_home_mobile
directory (cloned by repo sync --with_mobile) and display its status
alongside the existing Odoo/Python/Poetry version info.
--- FR ---
make version n'avait aucune visibilité sur l'activité du projet mobile.
Ajoute une détection par la présence du répertoire
mobile/erplibre_home_mobile, cloné par repo sync --with_mobile, et affiche
son état à côté des versions Odoo, Python et Poetry déjà présentes.
Assisted-by: Claude Sonnet 4.6
The template wrote « Generated by Claude Code », the form AI_POLICY.md
replaces with the Assisted-by trailer. Three defects rode along: the model
came from ~/.claude/settings.json, which has no model key here, so it
declared the sonnet default rather than the truth; --author alone failed on
the committer, this checkout having no git identity; and [UPD] was missing
from the tag table while being the most used tag, 134 of the last 400.
The model now comes from the session transcript, the only source that
follows a /model switch — checked, it prints Claude Opus 5. The timezone is
left to the system so contributors keep their own, and the menu substitutes
name and email separately, the placeholders no longer being adjacent.
--- FR ---
Le gabarit écrivait « Generated by Claude Code », la forme que AI_POLICY.md
remplace par le trailer Assisted-by. Trois défauts l'accompagnaient : le
modèle venait de ~/.claude/settings.json, sans clé model ici, si bien qu'il
déclarait le défaut sonnet plutôt que la vérité ; --author seul échouait sur
le committer, ce checkout n'ayant aucune identité git ; et [UPD] manquait au
tableau des tags alors qu'il est le plus utilisé, 134 des 400 derniers.
Le modèle vient désormais de la transcription de session, seule source qui
suive un changement par /model — vérifié, elle rend Claude Opus 5. Le fuseau
est laissé au système, pour que chaque contributeur garde le sien, et le
menu substitue nom et courriel séparément, les jetons n'étant plus accolés.
Assisted-by: Claude Opus 5
Add interactive sshfs mount setup to the system configuration
menu. Users can enter SSH host details manually or select from
~/.ssh/config, then configure a persistent mount with fstab.
Includes i18n strings for all new UI text.
Generated by Claude Code 2.1.81 model claude-sonnet-4-6
Allow users to deploy ERPLibre to a local directory
via git clone from the TODO interactive menu, making
onboarding simpler for new developers.
Generated by Claude Code 2.1.74 model claude-opus-4-6
Co-Authored-By: Mathieu Benoit <mathben@technolibre.ca>
Replace snake_case i18n keys with their English
translation so developers can read the code without
cross-referencing the translations dictionary.
Remove 5 obsolete duplicate entries.
Generated by Claude Code 2.1.74 model claude-opus-4-6
Co-Authored-By: Mathieu Benoit <mathben@technolibre.ca>
Refactor single commit setup into a generic deployment
mechanism for Claude commands, allowing easy addition of
new commands. Add todo_add_command template and an option
to list installed custom commands with their dates.
Generated by Claude Code 2.1.74 model claude-opus-4-6
Co-Authored-By: Mathieu Benoit <mathben@technolibre.ca>
Add git remote add command with default name "localhost",
git editor vim configuration via todo.json, and a Claude
automation tool to dynamically add commands to todo.json.
Support new bash_command key in execute_from_configuration.
Generated by Claude Code 2.1.74 model claude-opus-4-6
Co-Authored-By: Mathieu Benoit <mathben@technolibre.ca>
Integrate RTK (Rust Token Killer) into the interactive CLI
to let users install, configure, and monitor token savings
directly from the ERPLibre todo interface.
Generated by Claude Code 2.1.74 model claude-sonnet-4-6
Co-Authored-By: Mathieu Benoit <mathben@technolibre.ca>
Reflect the current year in all TechnoLibre
license headers across script/, test/, and docker/.
Generated by Claude Code 2.1.74 model claude-sonnet-4-6
Co-Authored-By: Mathieu Benoit <mathben@technolibre.ca>
Menu items were in arbitrary order making it hard to
find specific tools as the list grew to 14 entries.
Generated by Claude Code 2.1.72 model claude-sonnet-4-6
Co-Authored-By: Mathieu Benoit <mathben@technolibre.ca>
The erplibre root repo was appended last and hard to
find among 141 entries. Sort the list so repos are
easy to locate by name.
Generated by Claude Code 2.1.72 model claude-sonnet-4-6
Co-Authored-By: Mathieu Benoit <mathben@technolibre.ca>
The root repo clone command showed "." as target path
which was confusing and easy to miss in the list.
Display "erplibre" instead for clarity.
Generated by Claude Code 2.1.72 model claude-sonnet-4-6
Co-Authored-By: Mathieu Benoit <mathben@technolibre.ca>
Repos like odoo and OpenUpgrade blocked for 5+ minutes
trying to unshallow from GitHub (~3GB). Push shallow
by default with receive.shallowUpdate on bare repos.
Add --unshallow flag to opt into full history fetch.
Generated by Claude Code 2.1.72 model claude-sonnet-4-6
Co-Authored-By: Mathieu Benoit <mathben@technolibre.ca>
Sequential processing of 100+ repos was slow. Use
asyncio with semaphore-bounded concurrency to run
init, remote and push actions in parallel. New -j flag
controls max parallel jobs (default: 8).
Generated by Claude Code 2.1.72 model claude-sonnet-4-6
Co-Authored-By: Mathieu Benoit <mathben@technolibre.ca>
The root repo (erplibre/erplibre) was missing from the
local git server because it is not in the Google Repo
manifest. Include it so a full clone of the platform
is possible from the local server across all 4 actions.
Generated by Claude Code 2.1.72 model claude-sonnet-4-6
Co-Authored-By: Mathieu Benoit <mathben@technolibre.ca>
Replace raw subprocess.Popen and manual signal handling
with Execute.exec_command_live for consistency with
other refactored scripts.
Generated by Claude Code 2.1.72 model claude-sonnet-4-6
Co-Authored-By: Mathieu Benoit <mathben@technolibre.ca>
Remove Hungarian notation prefixes (lst_, dct_) from variable
names in git_repo_manifest, git_repo_update_group, and their
tests for better readability and consistency with the codebase
refactoring effort.
Generated by Claude Code 2.1.72 model claude-sonnet-4-6
Co-Authored-By: Mathieu Benoit <mathben@technolibre.ca>
Replace Hungarian notation prefixes (lst_, dct_) with
descriptive English names for better readability across
git and todo modules.
Generated by Claude Code 2.1.72 model claude-sonnet-4-6
Co-Authored-By: Mathieu Benoit <mathben@technolibre.ca>
Reduce GitTool class size by moving URL transformation
and GitHub API logic into dedicated repo_url and
github_api modules for better separation of concerns.
Generated by Claude Code 2.1.72 model claude-sonnet-4-6
Co-Authored-By: Mathieu Benoit <mathben@technolibre.ca>
Improve code maintainability and IDE support by adding
type annotations to function signatures and instance
variables in execute.py and todo_i18n.py. Also let
Black simplify unnecessary parentheses.
Generated by Claude Code 2.1.72 model claude-sonnet-4-6
Co-Authored-By: Mathieu Benoit <mathben@technolibre.ca>
Complete the manager extraction by removing methods from todo.py
that were already moved to database_manager.py (select_database,
restore_from_database, create_backup_from_database, open_file_image_db,
download_database_backup_cli). Add type annotations to manager
classes for better code clarity. Update tests to target the
manager instances directly.
Generated by Claude Code 2.1.72 model claude-sonnet-4-6
Co-Authored-By: Mathieu Benoit <mathben@technolibre.ca>
Reduce complexity of todo.py by extracting database,
kdbx, and version logic into dedicated manager classes.
Update tests to reference new module paths.
Generated by Claude Code 2.1.72 model claude-sonnet-4-6
Co-Authored-By: Mathieu Benoit <mathben@technolibre.ca>
Continue variable renaming to remove Hungarian notation
prefixes (dct_, lst_) and adopt descriptive names. Translate
remaining French comments and user-facing strings to English
for consistency across the codebase.
Generated by Claude Code 2.1.72 model claude-opus-4-6
Co-Authored-By: Mathieu Benoit <mathben@technolibre.ca>
Replace Hungarian notation, French variable names, and
lowercase constants with clear English names across 5
scripts: config_file, execute, kill_process_by_port,
todo, and git_tool. Remove unused find_in_private
variable. All 142 tests pass.
Generated by Claude Code 2.1.72 model claude-sonnet-4-6
Co-Authored-By: Mathieu Benoit <mathben@technolibre.ca>
Provide developers with a streamlined way to configure Claude Code
commit templates directly from the TODO CLI, reducing manual setup
and ensuring consistent commit formatting across the team.
Generated by Claude Code 2.1.72 model claude-opus-4-6
Co-Authored-By: Mathieu Benoit <mathben@technolibre.ca>
Added 30 .base.md files using the mmg (Multilingual Markdown Generator)
format to automatically generate English (.md) and French (.fr.md)
versions of all project documentation.
Updated conf/make.documentation.Makefile to process all .base.md files
via `make doc_markdown`.
- support external selenium service to support selenium from Odoo
instance
- move selenium installation to erplibre virtual environment
- support user test instead of admin
- add example odoo test
- prevent delete production file with validation
- add makefile with selenium
- script prod to dev uninstall module after installation
- adapt todo with private directory
- script to download remote database
- TODO show documentation for migration
- oficially support odoo 18 instead of odoo 16
- support postgis/postgresql 18 into docker
- change version erplibre 1.6.0
- support private environment and support local git repo manifest
- support switch odoo version
- support docker for each version
- update os installation
- upgrade python requirement
- separate virtual environment for erplibre and odoo
- erplibre separate venv erplibre and odoo
- rename python-version to python-odoo-version
- add conf/python-erplibre-version
- rename .venv to .venv.erplibre
- move .venv/repo to .venv.erplibre/bin/repo
- install pyenv into .venv.erplibre
- install poetry into .venv.odooVERSION
- first installation show odoo version to install
- can install erplibre without odoo
- update README.md information about installation with TODO
- change image from github to locally
- remove link creation .venv
- update version: remove code to force create symbolic link .venv
- use dynamic merge manifest, will be able to merge different odoo
version
- can add dev tools
- default manifest is empty to remove conflict
- better script message first execution
- search pycharm-community
- calculate time execution
- integrate crash diagnostic at importation
- show version installed and show installation option into cli
- Makefile show version, switch version and install different version
- erplibre_version with odoo_version, poetry_version and python_version
- support multiple docker version
- support odoo 12, odoo 14, odoo 16
- bullseye, bookworm debian
- update latest version
- script update_env_version to detect actual version and refactor it
- adapt file path to support multiple version
- poetry with verbose by default, ignore python keyring
- python script to generate image db with parallel for all odoo version
- check_addons_exist before generate all image
- support delay to change queue parallel
- fix odoo 12 product configurator
- can show demo website
- swith odoo
- force create addons if missing
- update manifest, because gen config break with wrong manifest
- Remove indent when no need
- Generate the same end of file space
- Support beautiful multiple end line
- Add automatic test
- Support """ into string like this " """ "
- change approch for test, use a dict to launch test instead of asyncio
callback. Like that, can configure automatic test from external.
- output_result_dir permit to extract result and log from each test for
external execution.
- create config_testcase.json with test testcase configuration for all
test
- detect when asyncio got execution error
- script to configure Pycharm configuration
- add exclude directory about ERPLibre
- add configuration in folder, the minimal to use ERPLibre for dev
- list configuration
- remove odoo doc, and update sphinx
- do symlink in doc_user with odoo/odoo for better doc
- Add debian package pysassc for sphinx
Signed-off-by: Mathieu Benoit <mathben@technolibre.ca>
- code_generator_demo_website_multiple_snippet depend on
code_generator_demo_portal and need the template to generate po, so
checkout change.
The other solution is to copy code code_generator_demo_portal
- Cause fail when delete file is not in git
- Support running test in sandbox to fix conflict test
- Support search_class_module for all template
- Add option to run without parallel
- Separate mariadb test to increase speed
- Separate test in multiple test
- Add pool thread, can set max thread
- Keep cache, async copytree, add ignore pattern instead rm
- Support all os command with asyncio
- prevent makefile cache to ignore test
- update image_db_create_erplibre_base
- add mariadb migrator test
- add helloworld test
- fix other test
- add isort format
- add show log of test
- add clean to remove temporary file