Le rebase apporte trois choses auxquelles ce travail devait s'accorder. Les messages du binaire se traduisent désormais : ceux du refus de place et de l'aide de --oublie passent par T(), avec leur entrée au catalogue — deux garde-fous refusent sinon un message sans traduction ou l'inverse. Soustraire l'hôte au cache est REFUSÉ hors ligne : le magasin est alors la seule source, et l'excepter ne le ferait pas télécharger en direct, cela le priverait de tout, ses propres paquets compris. Et le guide de connexion annonce les outils sur la voie Proxmox aussi ; il n'y était plus écrit du tout, l'argument manquant étant avalé. --- EN --- The rebase brings three things this work had to align with. The binary's messages are now translatable: the out-of-space refusal and the --oublie help go through T(), with their catalogue entry — two guard rails otherwise refuse a message without a translation, or the reverse. Exempting the host from the cache is REFUSED offline: the store is then the only source, and exempting it would not make it download directly, it would leave it with nothing, its own packages included. And the connection guide announces the tools on the Proxmox path too; it was no longer written there at all, the missing argument being swallowed. Assisted-by: Claude Opus 5 |
||
|---|---|---|
| .. | ||
| assistant | ||
| assistant_menu.py | ||
| auto_ask.py | ||
| database_manager.py | ||
| deploy_form_extras.py | ||
| deploy_form_lib.py | ||
| deploy_form_plan.py | ||
| dev_tools.py | ||
| kdbx_manager.py | ||
| logo_ascii.txt | ||
| longtest_menu.py | ||
| migration_form.py | ||
| migration_stats.py | ||
| migration_status.py | ||
| migration_status_tui.py | ||
| proxmox_deploy_form.py | ||
| proxmox_menu.py | ||
| qemu_access.py | ||
| qemu_cache_menu.py | ||
| qemu_deploy.py | ||
| qemu_deploy_form.py | ||
| qemu_hardware.py | ||
| qemu_install.py | ||
| qemu_install_monitor.py | ||
| qemu_manage.py | ||
| qemu_menu.py | ||
| qemu_network.py | ||
| qemu_privilege.py | ||
| qemu_recover.py | ||
| README.base.md | ||
| README.fr.md | ||
| README.md | ||
| source_todo.sh | ||
| ssh_config.py | ||
| textual_setup.py | ||
| todo.json | ||
| todo.py | ||
| todo_example.json | ||
| todo_file_browser.py | ||
| todo_i18n.py | ||
| todo_install.py | ||
| todo_prefs.py | ||
| todo_telemetry.py | ||
| todo_upgrade.py | ||
| transform_form.py | ||
| transform_menu.py | ||
| transform_setup.py | ||
| version_manager.py | ||
| vpn_menu.py | ||
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.