Skip to content

v1.18.0 — Guide-read lock, mode_conseille, nested iframes, structural monitoring

Choose a tag to compare

@RonanDavalan RonanDavalan released this 03 Jul 14:38

Mandatory guide-read lock (--guide-version) + --version

shot.py, rpa.py, and watch.py now refuse to run without proof of reading docs/GUIDE_LLM.md — the one deliberate exception to the project's additive-only design. A model that never read the guide gets a hard failure instead of improvising silently.

  • --version — prints the installed version and exits immediately, no Playwright launch.
  • --guide-version X.Y — token read from the top of docs/GUIDE_LLM.md (<!-- notice-version -->). Once accepted, a local marker (~/.config/diwall/guide_state.json) avoids re-asking — until the guide's next substantial update.

Triggered by a recurring field friction, surfaced directly by a Claude instance on a partner project: documentation alone kept failing to get read before first use.

mode_conseille — deterministic pre-flight advice

New etat.mode_conseille object, never an order, always grounded in a real measurement. Diwall checks the operations journal's history for the current host: if a prior DOM diagnostic (diagnostic_dom.json) detected a JS framework or Shadow Roots, a configuration recommendation (--mode full, --shadow-dom, --som-rafraichir) appears in the output. Absent when no real data exists — never a guess.

Nested iframes (iframe_chemin)

cliquer_iframe and remplir_iframe accept a new iframe_chemin key: an ordered array of CSS selectors to descend through multiple levels of nested iframes. iframe_selecteur (single frame) stays strictly unchanged — the two keys are mutually exclusive, deliberately not a pluralised name, to avoid confusion on a generated action.

Continuous structural monitoring (scripts/monitor-verifier.sh)

New orchestration script: one pass, zero image, zero LLM call, built on the existing --no-capture + --replay-verifier composition. Silent when stable, an ntfy push on regression. Repetition over time is left to cron/systemd-timer — no internal daemon, no long-running memory-leak risk.

Interoperability fixtures

New structural non-regression corpus under scenarios/interoperabilite/: a neutral witness (example.com) and a fully Diwall-controlled local HTML fixture (nested iframe, open Shadow DOM component, form). Reuses the existing --replay-verifier — no new comparison capability.


How to test

/opt/diwall/venv/bin/python3 /opt/diwall/shot.py --version
/opt/diwall/venv/bin/python3 /opt/diwall/shot.py --url https://example.com --mode fast --guide-version 3.6

Validation: scenarios/v1.18.0_validation/verifier.py, 5/5. Regression on v1.15.2/v1.16.0/v1.17.0/v1.17.2: 0.