Commit graph

474 commits

Author SHA1 Message Date
b9c9ed8241 [FIX] install: propager l'échec au code de sortie (faux ✅ du suivi corrigé)
update_env_version.py (cible « make install_odoo_XX ») calculait un statut
mais ne faisait JAMAIS sys.exit() et IGNORAIT le retour de
update_environment() (l'install réelle : venv/poetry). Résultat : même
quand install_locally.sh échouait (ex. poetry status 127), le script
sortait 0 -> make 0 -> remote « && » continuait (service créé) ->
__ERPLIBRE_EXIT__ 0 -> le suivi d'installation affichait ✅ à tort.

- main() suit un exit_code : install_system() ou update_environment()
  renvoyant une valeur non nulle (os.system : 0 = succès) -> exit_code=1.
- sys.exit(main() or 0) propage réellement l'échec.
- Étapes post-install (pycharm, git_repo_update, generate_config) exécutées
  seulement si l'install a réussi (sinon .venv.erplibre absent -> cascade
  d'erreurs).

Chaîne désormais complète : install_locally.sh exit 1 -> install_locally_
dev.sh exit 1 -> os.system != 0 -> install_erplibre != 0 ->
update_environment != 0 -> main exit_code=1 -> sys.exit(1) -> make échoue
-> remote && stoppe -> __ERPLIBRE_EXIT__ != 0 -> dashboard ❌.

--- EN ---

update_env_version.py, the « make install_odoo_XX » target, computed a status
but NEVER called sys.exit() and IGNORED the return of update_environment(),
the real install with its venv and poetry. As a result, even when
install_locally.sh failed — poetry status 127, say — the script exited 0 ->
make exited 0 -> the remote « && » carried on and created the service ->
__ERPLIBRE_EXIT__ was 0 -> and the install monitor wrongly showed ✅.

- main() tracks an exit_code: install_system() or update_environment()
  returning non-zero — with os.system, 0 means success — sets exit_code=1.
- sys.exit(main() or 0) actually propagates the failure.
- The post-install steps (pycharm, git_repo_update, generate_config) only run
  when the install succeeded; otherwise .venv.erplibre is missing and errors
  cascade.

The chain is now complete: install_locally.sh exit 1 ->
install_locally_dev.sh exit 1 -> os.system != 0 -> install_erplibre != 0 ->
update_environment != 0 -> main exit_code=1 -> sys.exit(1) -> make fails ->
the remote && stops -> __ERPLIBRE_EXIT__ != 0 -> dashboard ❌.

Assisted-by: Claude Opus 4.8
2026-08-07 02:49:49 -04:00
751cdbbd29 [FIX] selenium: importer Optional (NameError sur l'annotation de type)
extraire_svg_graphique_by_3d annote « -> Optional[str] » mais le module
n'importait pas Optional -> « NameError: name 'Optional' is not defined »
au chargement. Ajout de « from typing import Optional ».

--- EN ---

extraire_svg_graphique_by_3d is annotated « -> Optional[str] » but the module
never imported Optional -> « NameError: name 'Optional' is not defined » at
import time. Added « from typing import Optional ».

Assisted-by: Claude Opus 4.8
2026-08-07 02:49:42 -04:00
cd65565943 [FIX] selenium: retirer -remote-allow-system-access (refusé par geckodriver récent)
webdriver.Firefox échouait : « InvalidArgumentException: Argument
--remote-allow-system-access can't be set via capabilities ». Cet argument
(ajouté pour le Firefox snap d'Ubuntu) est désormais REFUSÉ via les
capabilities par les geckodriver récents, qui gèrent seuls l'accès système
du snap. Il cassait donc TOUS les setups sur geckodriver récent (ici Arch
sans snap). On ne le passe plus.

--- EN ---

webdriver.Firefox was failing with « InvalidArgumentException: Argument
--remote-allow-system-access can't be set via capabilities ». That argument,
added for Ubuntu's snap Firefox, is now REFUSED through capabilities by
recent geckodriver versions, which handle the snap's system access on their
own. It therefore broke EVERY setup running a recent geckodriver — here Arch,
with no snap at all. It is no longer passed.

Assisted-by: Claude Opus 4.8
2026-08-07 02:49:25 -04:00
fef9edbfb1 [IMP] script install: quiet poetry/repo by default, EL_VERBOSE to opt in
Installation was very noisy: poetry ran "install -vvv" and repo sync /
git daemon ran with -v/--verbose. They are now quiet by default
(poetry -q, repo sync -q, no git daemon --verbose) and the detailed
logs come back only when EL_VERBOSE=1.

Applied to install_locally.sh (poetry) and every manifest script (repo
sync + git daemon). env_var.sh documents EL_VERBOSE and respects a value
already set in the environment, so "EL_VERBOSE=1 make install_odoo_18"
works.

--- FR ---

L'installation était très bavarde : poetry tournait en « install -vvv », et
repo sync comme git daemon en -v/--verbose. Ils sont désormais silencieux par
défaut — poetry -q, repo sync -q, plus de git daemon --verbose — et les
journaux détaillés ne reviennent qu'avec EL_VERBOSE=1.

Appliqué à install_locally.sh (poetry) et à tous les scripts de manifest
(repo sync et git daemon). env_var.sh documente EL_VERBOSE et respecte une
valeur déjà passée dans l'environnement, si bien que « EL_VERBOSE=1 make
install_odoo_18 » fonctionne.

Assisted-by: Claude Opus 4.8
2026-08-07 02:49:14 -04:00
6e4cae594b [UPD] script selenium lib: improve diagnostic file download 2026-08-07 02:32:19 -04:00
f8dbfb5487 [UPD] script selenium lib: refresh can wait finish loading 2026-08-07 02:32:15 -04:00
6562db7bb8 [FIX] selenium cancel exit when need humain navigation 2026-08-07 02:32:11 -04:00
c2d42fcc06 [UPD] selenium: update path driver 2026-08-07 02:32:07 -04:00
e46b6612c7 [UPD] script selenium update darkreader-firefox.xpi 2026-08-07 02:32:03 -04:00
de954a146b [FIX] selenium lib: can change default_timeout and change multi-click 2026-08-07 02:31:59 -04:00
4c799aebc3 [IMP] script selenium lib get elements and multiple click 2026-08-07 02:31:50 -04:00
ac4925fd26 [FIX] script selenium support new firefox version 2026-08-07 02:31:45 -04:00
d83cbee234 [UPD] selenium support detection error 2026-08-07 02:31:38 -04:00
281ecd322d [UPD] selenium lib support convertir_svg_en_png_via_selenium 2026-08-07 02:31:34 -04:00
d3512caeac [FIX] selenium lib: get_element wait_clickable return 1 element 2026-08-07 02:31:28 -04:00
596315e41a [IMP] script selenium lib: support download file for network hub
- downloading file and share information with =data=
- default directory is /tmp and not home download seluser
2026-08-07 02:31:24 -04:00
133c1ce1f9 [FIX] script todo upgrade: don't create branch if already exist 2026-08-07 02:11:11 -04:00
d8749422cd [FIX] todo upgrade: download_database_backup_cli lives on db_manager
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
2026-08-07 02:10:50 -04:00
c41c771ca1 [FIX] install: bump Node.js to v22 for Capacitor v8 support
@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
2026-08-07 02:09:48 -04:00
9e551c9baf [FIX] script todo database_manager: try click for first installation 2026-08-07 02:09:44 -04:00
3c4841d221 [FIX] generate_config: drop odoo_design-themes from the addons path
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
2026-08-07 02:09:40 -04:00
cf78ed1bdc [IMP] installation: parallelize repo sync and poetry install
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
2026-08-07 02:09:35 -04:00
66b21422c4 [UPD] improve speed install odoo 18 minimal 2026-08-07 02:09:29 -04:00
2922e1f277 [ADD] installation: add optional extra modules (CybroOdoo)
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
2026-08-07 02:09:24 -04:00
bf2976ee54 [IMP] update_env_version: add mobile context detection to make version
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
2026-08-07 02:09:17 -04:00
4e262d63c6 [FIX] installation keep repo when add project 2026-08-07 02:09:07 -04:00
349c881087 [UPD] script manifest update with merge configuration manifest 2026-08-07 02:08:58 -04:00
b4b95042ef [UPD] claude: align the commit command with the AI policy
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
2026-08-07 01:56:11 -04:00
4972add36f [FIX] todo upgrade wrong method get_odoo_version 2026-03-29 14:51:02 -04:00
c8025eb2a0 [IMP] todo: add sshfs configuration command
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
2026-03-23 00:33:26 -04:00
340a55e685 [IMP] todo: git patch 2026-03-22 22:21:16 -04:00
82ad4561cb [FIX] script generate_config force workers = 0 for developer 2026-03-22 01:50:25 -04:00
36ae1d9beb [UPD] script Format 2026-03-14 23:26:31 -04:00
bee6d50018 [ADD] todo: add deploy menu with git clone
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>
2026-03-14 23:26:31 -04:00
4fc15c306b [REF] todo: use English text as i18n keys
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>
2026-03-14 23:26:31 -04:00
6fe2de73b2 [UPD] script execute with more space for command display 2026-03-14 23:26:31 -04:00
91c835d57e [IMP] todo: add Claude configs submenu and command listing
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>
2026-03-14 23:26:31 -04:00
c2e08f1de0 [IMP] todo: add git remote, vim config and automation
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>
2026-03-14 23:15:54 -04:00
230c55c432 [ADD] todo: add RTK management menu
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>
2026-03-14 23:15:54 -04:00
2569b3f0ba [FIX] todo.py remove tk, not used
- this broke server without gui for pyton 3.12.3
2026-03-14 23:15:54 -04:00
1e731114f5 [IMP] script: update copyright year to 2026
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>
2026-03-11 23:16:05 -04:00
438edc3694 [IMP] script: sort execute menu alphabetically
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>
2026-03-11 04:04:17 -04:00
4ea143dd36 [IMP] script: sort clone list alphabetically
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>
2026-03-11 03:56:00 -04:00
d7d72db7bc [FIX] script: show erplibre clone path clearly
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>
2026-03-11 03:55:50 -04:00
84a021258e [IMP] script: shallow push by default in git server
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>
2026-03-11 03:55:44 -04:00
24bcb3a7d3 [IMP] script: async init/remote/push in git server
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>
2026-03-11 03:55:41 -04:00
291c9cf5e0 [IMP] script: add erplibre root repo to git server
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>
2026-03-11 03:55:36 -04:00
43fd5a17ae [REF] script: use Execute helper in git daemon
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>
2026-03-11 03:55:32 -04:00
8083c8010e [REF] script: improve variable naming conventions
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>
2026-03-11 03:25:43 -04:00
d60caa3897 [REF] script: improve variable naming conventions
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>
2026-03-11 03:25:43 -04:00