erplibre/script/todo
Mathieu Benoit 034d40d403 [IMP] todo menus: language only in Configuration, Fork moved there
Execute carried a Preferences section whose one entry, the language, is
already Configuration's first item: two places for one setting. It is
removed, with its two unused translations. Fork, which opens a second TODO,
leaves the main menu for Configuration; the main menu now numbers Telemetry
4 and Configuration 5, and Reset all preferences becomes 6.
Checked: Configuration displayed with Fork at 5; 108 tests pass.

--- FR ---

[IMP] menus todo : langue dans Configuration seule, Fork y déménage

Execute portait une section Préférences dont la seule entrée, la langue, est
déjà la première de Configuration : deux endroits pour un réglage. Elle part,
avec ses deux traductions devenues inutiles. Fork, qui ouvre un second TODO,
quitte le menu principal pour Configuration ; le menu principal numérote
désormais Télémétrie 4 et Configuration 5, et la réinitialisation devient 6.
Vérifié : Configuration affichée avec Fork en 5 ; 108 tests passent.

Assisted-by: Claude Opus 5.5
2026-09-25 01:41:48 -04:00
..
assistant [REF] format : passer l'outillage et les tests sous ruff 2026-09-24 14:40:38 -04:00
mail [REF] format : passer l'outillage et les tests sous ruff 2026-09-24 14:40:38 -04:00
assistant_menu.py [FIX] outillage : désimbriquer les f-strings que seul 3.12 sait lire 2026-09-24 13:56:57 -04:00
auto_ask.py [UPD] invites : 15 secondes pour décider, et le fichier nomme la base 2026-08-29 02:11:04 -04:00
database_manager.py [REF] format : passer l'outillage et les tests sous ruff 2026-09-24 14:40:38 -04:00
deploy_form_extras.py [IMP] qemu deploy : pré-configurer la VM, et dire ce qui s'y installe 2026-09-04 02:03:52 -04:00
deploy_form_lib.py [ADD] cache qemu : miroir des téléchargements des VM, hors ligne compris 2026-09-14 16:46:15 -04:00
deploy_form_plan.py [IMP] qemu deploy : pré-configurer la VM, et dire ce qui s'y installe 2026-09-04 02:03:52 -04:00
dev_tools.py [FIX] qemu install : poser mise, pyenv et starship, verdict par outil 2026-09-14 16:46:15 -04:00
kdbx_manager.py [ADD] vpn openconnect : groupe d'URL, SSO délégué, mot de passe borné 2026-09-04 06:26:34 -04:00
logo_ascii.txt [IMP] bot assistant TODO 2025-04-27 02:40:20 -04:00
longtest_menu.py [ADD] long_test : ERPLibre installé sur NixOS, de bout en bout 2026-09-16 21:31:03 -04:00
migration_form.py [REF] format : passer l'outillage et les tests sous ruff 2026-09-24 14:40:38 -04:00
migration_stats.py [REF] format : passer l'outillage et les tests sous ruff 2026-09-24 14:40:38 -04:00
migration_status.py [FIX] verdicts de migration : distinguer trouvaille et échec d'outil 2026-08-29 02:11:04 -04:00
migration_status_tui.py [REF] format : passer l'outillage et les tests sous ruff 2026-09-24 14:40:38 -04:00
proxmox_deploy_form.py [REF] format : passer l'outillage et les tests sous ruff 2026-09-24 14:40:38 -04:00
proxmox_menu.py [REF] format : passer l'outillage et les tests sous ruff 2026-09-24 14:40:38 -04:00
qemu_access.py [ADD] long_test : ERPLibre installé sur NixOS, de bout en bout 2026-09-16 21:31:03 -04:00
qemu_cache_menu.py [FIX] qemu images : vérifier les sommes publiées, partout et par défaut 2026-09-16 21:32:03 -04:00
qemu_deploy.py [REM] qemu : abandonner Debian 11 2026-09-24 13:56:57 -04:00
qemu_deploy_form.py [REF] format : passer l'outillage et les tests sous ruff 2026-09-24 14:40:38 -04:00
qemu_hardware.py [REF] format : passer l'outillage et les tests sous ruff 2026-09-24 14:40:38 -04:00
qemu_install.py [FIX] outillage : désimbriquer les f-strings que seul 3.12 sait lire 2026-09-24 13:56:57 -04:00
qemu_install_monitor.py [REF] format : passer l'outillage et les tests sous ruff 2026-09-24 14:40:38 -04:00
qemu_manage.py [REF] format : passer l'outillage et les tests sous ruff 2026-09-24 14:40:38 -04:00
qemu_menu.py [REM] qemu : abandonner Debian 11 2026-09-24 13:56:57 -04:00
qemu_network.py [ADD] qemu réseau : voir et recréer le sous-réseau des VM 2026-09-04 03:31:22 -04:00
qemu_privilege.py [ADD] qemu diagnostic : un relevé à transmettre, Gérer scindé en trois 2026-09-03 05:00:55 -04:00
qemu_recover.py [ADD] qemu diagnostic : un relevé à transmettre, Gérer scindé en trois 2026-09-03 05:00:55 -04:00
README.base.md [ADD] proxmox : un écran pour déployer sur un hôte distant 2026-08-25 03:17:13 -04:00
README.fr.md [ADD] proxmox : un écran pour déployer sur un hôte distant 2026-08-25 03:17:13 -04:00
README.md [ADD] proxmox : un écran pour déployer sur un hôte distant 2026-08-25 03:17:13 -04:00
source_todo.sh [UPD] install : le venv d'outillage passe en Python 3.14.7 2026-09-24 13:56:57 -04:00
ssh_config.py [REF] format : passer l'outillage et les tests sous ruff 2026-09-24 14:40:38 -04:00
textual_setup.py [REF] format : passer l'outillage et les tests sous ruff 2026-09-24 14:40:38 -04:00
todo.json [ADD] menu vpn : créer un profil, déposer les secrets, monter le tunnel 2026-09-04 03:43:02 +00:00
todo.py [IMP] todo menus: language only in Configuration, Fork moved there 2026-09-25 01:41:48 -04:00
todo_example.json [ADD] menu vpn : créer un profil, déposer les secrets, monter le tunnel 2026-09-04 03:43:02 +00:00
todo_file_browser.py [FIX] todo: test menu, file browser and KeePass refusals 2026-08-16 03:56:34 -04:00
todo_i18n.py [IMP] todo menus: language only in Configuration, Fork moved there 2026-09-25 01:41:48 -04:00
todo_install.py [ADD] long_test : ERPLibre installé sur NixOS, de bout en bout 2026-09-16 21:31:03 -04:00
todo_prefs.py [REF] format : passer l'outillage et les tests sous ruff 2026-09-24 14:40:38 -04:00
todo_telemetry.py [REF] format : passer l'outillage et les tests sous ruff 2026-09-24 14:40:38 -04:00
todo_upgrade.py [REF] format : passer l'outillage et les tests sous ruff 2026-09-24 14:40:38 -04:00
transform_form.py [REF] format : passer l'outillage et les tests sous ruff 2026-09-24 14:40:38 -04:00
transform_menu.py [REF] format : passer l'outillage et les tests sous ruff 2026-09-24 14:40:38 -04:00
transform_setup.py [FIX] requirement erplibre : déclarer openpyxl, sauter sans lui 2026-09-16 05:36:13 -04:00
version_manager.py [IMP] script: update copyright year to 2026 2026-03-11 23:16:05 -04:00
vpn_menu.py [FIX] vpn : ne plus demander la route par défaut à qui ne la pose pas 2026-09-08 09:41:17 -04:00

TODO is an assistant robot to use ERPLibre Execute it with ./script/todo/todo.py or make todo.

For a new project, copy todo_example.json to private/todo/todo_override.json | private/todo/todo_override_private.json and edit it.

The mail/ package is the mail client reachable from Assistant > Mail: several IMAP/SMTP accounts, a local cache, and a Textual TUI. See ../../doc/EMAIL.md.

Where the code lives

todo.py carries the menus and the general helpers. Everything around a single subject sits in its own file, and the whole thing is assembled by mixins on the TODO class — one file, one subject, its header states its boundary.

File What it owns
todo.py the menus, the configuration, the general helpers
qemu_menu.py the QEMU/KVM menu, the image catalogue, the statistics
qemu_deploy.py deciding then running a deployment
qemu_install.py the recipes run inside a VM
qemu_manage.py lifecycle, disks, hardware, cleanup, addresses
qemu_access.py SSH, tunnels, consoles, Android emulator
proxmox_menu.py the same, on a REMOTE Proxmox VE host

The two deployment forms — libvirt here, Proxmox over there — ask the same questions, so they share a foundation rather than each holding a copy:

File What it owns
deploy_form_lib.py pure logic (sizes, plan, totals, spec), the shared CSS, the resource-row factory, the progress view
deploy_form_plan.py the plan's gestures: overrides, locks, copies, renaming, free values
qemu_deploy_form.py what QEMU/KVM adds: desktops, tools, branches, install profiles
proxmox_deploy_form.py what Proxmox adds: host, storage, bridge, VMID, address

A form inherits PlanMixin and provides three hooks: which presets each resource offers, the name a VM would fall back to, and what a lock freezes. test_todo_deploy_form_lib.py fails if a form redefines a gesture the foundation already carries — that is what keeps the architecture from drifting back into two copies.