Commit graph

993 commits

Author SHA1 Message Date
60fb60e156 [IMP] qemu: a VM one can reach, and a first boot that does not stall
The monitor froze the address given at launch, so it lost the VM as soon as
cloud-init renamed the host and DHCP handed out another lease. It now
re-resolves at each attempt, in the views too, and reads virsh without sudo
— « sudo -n » fails in a detached session with no tty.

First boot also stopped paying for what it does not need: the guest agent
leaves cloud-init, snapd and locale-gen go, apt takes the fastest mirror.
The timezone follows the host. And when KVM is missing, the deployment says
so before the wait instead of being mysteriously fifteen times slower.

--- FR ---

Le suivi figeait l'adresse connue au lancement : il perdait donc la VM dès
que cloud-init posait le vrai nom d'hôte et que DHCP donnait un autre bail.
Il la ré-résout désormais à chaque tentative, dans les vues aussi, et lit
virsh sans sudo — « sudo -n » échoue dans une session détachée, sans tty.

Le premier démarrage cesse aussi de payer l'inutile : l'agent invité sort
de cloud-init, snapd et locale-gen disparaissent, apt prend le miroir le
plus rapide. Le fuseau suit l'hôte. Et faute de KVM, le déploiement le dit
avant l'attente, au lieu d'être quinze fois plus lent sans raison visible.

Assisted-by: Claude Opus 5
2026-08-10 03:10:50 -04:00
c84fbc559d [FIX] manifest: give repo init a branch name, not a bare SHA
repo cannot resolve a commit into a manifest revision on a FRESH workspace:
it gave up on « unparseable HEAD », then repo sync on « manifest not
found ». An already-initialised .repo accepts the SHA, which is why only
new installations were hit — four fresh VMs failed identically.

--- FR ---

repo ne sait pas résoudre un commit en révision de manifeste sur un espace
de travail NEUF : il abandonnait sur « unparseable HEAD », puis repo sync
sur « manifest not found ». Un .repo déjà initialisé accepte le SHA, d'où
un défaut limité aux installations neuves — quatre VM ont échoué ainsi.

Assisted-by: Claude Opus 5
2026-08-10 03:10:50 -04:00
b28b734338 [ADD] migration: see and repair the website COW views
A copy-on-write view freezes the module view it came from; the module moves
on and the upgrade dies hours later on a missing anchor. These tools
predict, snapshot, diff, neutralize and reset them. The migration screen
gains the real state of each step, replay from any of them, and statistics.

--- FR ---

Une vue copy-on-write fige la vue de module dont elle vient ; le module
évolue et la mise à niveau meurt des heures plus tard sur un point
d'ancrage absent. Ces outils les prévoient, photographient, comparent,
neutralisent et réinitialisent. L'écran de migration gagne l'état réel de
chaque étape, la reprise depuis n'importe laquelle, et des statistiques.

Assisted-by: Claude Opus 5
2026-08-10 03:10:50 -04:00
b1c1095977 [ADD] analyse: inspect an Odoo database without restoring it
A read-only toolkit answering « what is in this database, and what will
break on a version bump »: schema size and tables no model claims,
customised views compared with their module source, and the x_ fields
Studio left behind. It reads a backup zip directly, so a 40 GB dump needs
no restore, and it reaches every answer from the TODO menu.

--- FR ---

Une boîte à outils en lecture seule qui répond à « qu'y a-t-il dans cette
base, et qu'est-ce qui cassera à la montée de version » : taille du schéma
et tables qu'aucun modèle ne réclame, vues personnalisées comparées à leur
source, champs x_ laissés par Studio. Elle lit un zip de sauvegarde tel
quel, donc sans restaurer, et tout s'atteint depuis le menu TODO.

Assisted-by: Claude Opus 5
2026-08-10 03:10:50 -04:00
e8ee8cc17f Merge branch 'develop_qemu_os_installation'
- Support qemu for ERPLibre OS installation
- New support Fedora
- Improve support arch linux, debian and ubuntu for all supported
  version
- TUI for VM deployement and TODO telemetry for navigation
- Automatic download cloud images for Qemu
- Refactor TODO prompt more readable
2026-08-07 03:57:30 -04:00
18a6f064f5 [FIX] execute: redact the secrets before printing a command
CodeQL flagged five clear-text logging alerts here, and they are real:
todo.py and kdbx_manager.py build « --default_password_auth '<KeePass
password>' » and db_restore.py « --master_password=… », while this file
printed the command before and after every run and logged it on error. The
« if "password" in command » guard covered one branch out of six.

Redaction sits at the display point, not at construction: six outputs here
against commands built all over the repository. Only the value goes, never
the option name, and the RETURNED command stays clear — « [1] redo the
command » needs it. Verified that PreferredAuthentications=password survives.

--- FR ---

CodeQL signalait ici cinq journalisations en clair, et elles sont réelles :
todo.py et kdbx_manager.py construisent « --default_password_auth '<mot de
passe KeePass>' » et db_restore.py « --master_password=… », tandis que ce
fichier affichait la commande avant et après chaque exécution et la
journalisait en erreur. Le garde « if "password" in command » couvrait une
branche sur six.

Le caviardage est au point d'affichage, non à la construction : six sorties
ici, contre des commandes bâties partout dans le dépôt. Seule la valeur
part, jamais le nom de l'option, et la commande RENVOYÉE reste en clair —
« [1] refaire la commande » en dépend. Vérifié que
PreferredAuthentications=password reste intact.

Assisted-by: Claude Opus 5
2026-08-07 03:41:26 -04:00
67e902e416 [IMP] todo: menu sections, icons and prompts
Groups the long menus into sections with icons, accepts o/oui everywhere,
shows the default of each yes/no question, and stops offering a traceback
line as a database name when PostgreSQL is unreachable.

--- FR ---

Regroupe les menus longs en sections avec icônes, accepte o/oui partout,
affiche la valeur par défaut de chaque question oui/non, et cesse de
proposer une ligne de trace d'appel comme nom de base quand PostgreSQL est
injoignable.

Assisted-by: Claude Opus 4.8
Assisted-by: Claude Opus 5
2026-08-07 03:41:26 -04:00
1208c919a1 [ADD] todo: preferences and Configuration menu
Stores the per-user settings in ~/.erplibre/todo_prefs.json: which deploy
interface to use, what to display while deploying, which migration
interface. A missing or corrupt file reads as defaults.

--- FR ---

Range les réglages propres à l'utilisateur dans
~/.erplibre/todo_prefs.json : interface de déploiement, affichage pendant
le déploiement, interface de migration. Un fichier absent ou corrompu se
lit comme les valeurs par défaut.

Assisted-by: Claude Opus 4.8
2026-08-07 03:22:26 -04:00
4dfe058c70 [ADD] todo: navigation telemetry
Records the menus visited and shows them as a tree, a kanban or a list.
The tree is derived from the code, so a command never visited appears too,
and can be run from there.

--- FR ---

Enregistre les menus visités et les présente en arbre, en kanban ou en
liste. L'arbre est dérivé du code, si bien qu'une commande jamais visitée
y figure aussi, et peut être lancée de là.

Assisted-by: Claude Opus 4.8
2026-08-07 03:22:26 -04:00
7d4922bf09 [ADD] todo: QEMU/KVM menu
Deploy, list, test, resize, delete and clean up VMs. Adds the SSH
configuration with recursive ProxyJump, port forwarding, and registration
of the QEMU hosts in virt-manager.

--- FR ---

Déployer, lister, tester, redimensionner, supprimer et nettoyer des VM.
Ajoute la configuration SSH avec ProxyJump récursif, la redirection de port
et l'enregistrement des hôtes QEMU dans virt-manager.

Assisted-by: Claude Opus 4.8
2026-08-07 03:22:26 -04:00
c44ce4b814 [ADD] todo: TUI form to deploy VMs
Shows every deployment setting at once, with a plan that recomputes on each
change and marks the collisions. A collapsible progress view follows.

--- FR ---

Affiche tous les réglages de déploiement d'un coup, avec un plan qui se
recalcule à chaque changement et signale les collisions. Une vue de
progression repliable suit.

Assisted-by: Claude Opus 4.8
2026-08-07 03:22:26 -04:00
ba5aa5c97d [ADD] todo: dashboard to follow the VM installs
One Textual dashboard per install run: live status, logs, host telemetry,
error counts and history. The installs run detached, so closing it does not
stop them.

--- FR ---

Un tableau de bord Textual par exécution : état en direct, logs, télémétrie
de l'hôte, comptes d'erreurs et historique. Les installations tournent
détachées : le fermer ne les arrête pas.

Assisted-by: Claude Opus 4.8
2026-08-07 03:22:26 -04:00
5e7391252b [ADD] todo: install Textual on demand
The TUI screens need Textual. Rather than naming it, the CLI offers to
install it for the running interpreter, bounded to the major the screens
are written for.

--- FR ---

Les écrans TUI ont besoin de Textual. Plutôt que de le nommer, le CLI
propose de l'installer pour l'interpréteur courant, borné à la majeure pour
laquelle les écrans sont écrits.

Assisted-by: Claude Opus 4.8
Assisted-by: Claude Opus 5
2026-08-07 03:22:26 -04:00
dd98955192 [IMP] install: support Fedora, Debian, Ubuntu and Arch
Adds a Fedora dependency installer, rewrites the Arch one on pacman rather
than an AUR helper absent from cloud images, and repairs the Debian path:
apt lock timeout, PostGIS best-effort, Ubuntu 26.04, Node 22.

--- FR ---

Ajoute un installeur de dépendances Fedora, réécrit celui d'Arch sur pacman
plutôt qu'un assistant AUR absent des images cloud, et répare le chemin
Debian : attente du verrou apt, PostGIS best-effort, Ubuntu 26.04, Node 22.

Assisted-by: Claude Opus 4.8
Assisted-by: Claude Opus 5
2026-08-07 03:22:26 -04:00
63534e0473 [ADD] qemu: deploy ERPLibre VMs from cloud images
Deploys Ubuntu, Debian, Fedora and Arch cloud images through libvirt, on
amd64, arm64 and s390x. Handles the image download with mirror fallback,
the cloud-init seed, UEFI without Secure Boot, and the host setup.

--- FR ---

Déploie des images cloud Ubuntu, Debian, Fedora et Arch via libvirt, en
amd64, arm64 et s390x. Gère le téléchargement avec repli sur miroir, le seed
cloud-init, l'UEFI sans Secure Boot et la préparation de l'hôte.

Assisted-by: Claude Opus 4.8
2026-08-07 03:22:26 -04:00
54730243d5 Merge branch 'develop_ntfy_brin_advisor'
- install NTFY for notification for mobile (WIP)
- install script to validate brin psql and do advisor
- can deploy ssh remote with TODO
- TODO with command erase database
2026-08-07 02:53:24 -04:00
4acd397c11 [ADD] brin_advisor brin_cluster 2026-08-07 02:52:33 -04:00
864f07c681 [IMP] todo: add erase-database menu command
Give users a guided, confirmation-gated way to drop one or all
databases from the interactive CLI. Previously this meant running
make db_drop_all or odoo_bin db --drop by hand, which is easy to
mistype and offers no safeguard. The new entry requires an explicit
'oui'/'yes' (default no) before any irreversible deletion.

Generated by Claude Code 2.1.191 claude-sonnet-4-6

Co-Authored-By: Mathieu Benoit <mathben@technolibre.ca>
2026-08-07 02:52:26 -04:00
627056b747 [ADD] install: add NTFY self-hosted push notification server
Add a one-command installer for the ntfy push notification server
(Ubuntu/Debian and Arch Linux), wired into the todo.py Deploy menu.

Users can now deploy a local ntfy server from the CLI and subscribe
to topics from their mobile device (ntfy app) to receive push
notifications from ERPLibre.

Generated by Claude Code 2.1.101 model claude-sonnet-4-6

Co-Authored-By: Mathieu Benoit <mathben@technolibre.ca>
2026-08-07 02:52:17 -04:00
ba0b919f83 [ADD] make: add SSH remote deployment targets and todo.py integration
Enable deploying and managing ERPLibre on remote servers via SSH
directly from make and the interactive todo.py CLI, since only
local deployment was previously supported.

- New conf/make.ssh.Makefile with 11 targets: ssh_check, ssh_push,
  ssh_install, ssh_run, ssh_stop, ssh_restart, ssh_status, ssh_logs,
  ssh_make, ssh_install_systemd, ssh_install_nginx
- Variables: SSH_HOST (required), SSH_USER, SSH_PORT, SSH_KEY,
  SSH_PATH, SSH_TARGET, SSH_DOMAIN, SSH_ADMIN_EMAIL
- Execute > Deploy menu extended with 11 SSH options in todo.py
- All strings translated fr/en in todo_i18n.py

Generated by Claude Code 2.1.101 model claude-sonnet-4-6

Co-Authored-By: Mathieu Benoit <mathben@technolibre.ca>
2026-08-07 02:52:12 -04:00
8561c6be06 Merge branch 'develop_fix_optimisation_installation'
- Fix selenium and installation odoo 18 with extra module
2026-08-07 02:50:36 -04:00
6443855a92 [FIX] install: --with_extra sans effet sur un env déjà installé (CybroOdoo)
« Installation avec modules extra » (--with_extra) ne clonait pas CybroOdoo
sur un env déjà installé : validate_environment renvoyait « valide » ->
update_environment (où l'état extra est posé via set_version_installed) était
sauté -> get_version_extra restait False -> git_merge_repo_manifest n'ajoutait
pas manifest/git_manifest_extra_odooXX.xml -> CybroOdoo jamais synchronisé ni
ajouté à config.conf (« Nothing to do »).

Nouvelle étape apply_extra_modules(), appelée dans main() quand --with_extra
est demandé (même si l'env de base est déjà installé) : pose l'état extra,
régénère le manifest local + repo sync (clone CybroOdoo). La post-étape qui
suit régénère config.conf, qui prend alors le nouveau chemin d'addons.

--- EN ---

« Install with extra modules » (--with_extra) did not clone CybroOdoo on an
already-installed environment: validate_environment answered « valid » ->
update_environment, where the extra state is set through
set_version_installed, was skipped -> get_version_extra stayed False ->
git_merge_repo_manifest did not add
manifest/git_manifest_extra_odooXX.xml -> CybroOdoo was never synced nor
added to config.conf (« Nothing to do »).

A new step, apply_extra_modules(), is called from main() whenever
--with_extra is requested, even on an already-installed base environment: it
sets the extra state and regenerates the local manifest plus a repo sync,
which clones CybroOdoo. The post-step that follows regenerates config.conf,
which then picks up the new addons path.

Assisted-by: Claude Opus 4.8
2026-08-07 02:49:59 -04:00
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
70e807cea9 [UPD] manifest odoo 12: update repo OCA_queue 2026-08-07 02:49:20 -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
9096a2ed70 Merge branch 'develop_selenium_lib_multi_click'
- improve selenium click, conversion svg to png, detection error,
  firefox installation
2026-08-07 02:34:19 -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
e355f577d2 Merge branch 'develop_improve_installation'
- Speeds up odoo 18 installation
- repo sync and poetry update parallel
- brings the mobile toolchain update
2026-08-07 02:23:02 -04:00
eaa9e7ffa8 [IMP] make docker: docker_show_absolute_path
- will show all absolute path for workspace docker container
2026-08-07 02:11:33 -04:00
133c1ce1f9 [FIX] script todo upgrade: don't create branch if already exist 2026-08-07 02:11:11 -04:00
203678b9e2 [ADD] requirement erplibre python-magic to support detect extension 2026-08-07 02:10:56 -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
fa5039c204 [ADD] git_manifest_mobile_home: add sentencepiece for MarianMT NDK build
sentencepiece provides the SentencePiece tokenizer (C++) needed by the
MarianMT Android plugin. Cloned shallow (depth=1) alongside whisper.cpp.

--- FR ---

sentencepiece fournit le tokeniseur SentencePiece, en C++, dont le greffon
Android MarianMT a besoin. Cloné en profondeur 1, à côté de whisper.cpp.

Assisted-by: Claude Sonnet 4.6
2026-08-07 02:10:43 -04:00
e8f34a9aca [UPD] manifest mobile : ajout whisper.cpp (transcription audio locale)
Ajout remote ggerganov et projet whisper.cpp (clone shallow, revision
master) dans le manifest Google Repo mobile. Chemin cible :
mobile/erplibre_home_mobile/android/app/src/main/cpp/whisper

--- EN ---

Adds the ggerganov remote and the whisper.cpp project (shallow clone,
revision master) to the mobile Google Repo manifest. Target path:
mobile/erplibre_home_mobile/android/app/src/main/cpp/whisper

Assisted-by: Claude Sonnet 4.6
2026-08-07 02:10:05 -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