-
released this
2026-07-07 15:59:00 +00:00 | 5 commits to main since this releaseWhat's new in viandante 0.2.0
v0.2.0 — GMCP, mapper BFS, EventLogger, rename
Aggiunto
- GMCP decoder (
src/viandante/gmcp.py): validazione del module name via regex^[A-Za-z][A-Za-z0-9_.]*$, decoder perChar.Vitalscon sinonimi (hp/health/life,sp/mana/magic,mv/move/stam),Room.Infocon vnum del server come id stabile (vnum{int(num)}). - Mapper multi-source BFS (
src/viandante/mapper.py): coordinate calcolate solo al render (lazy layout), phase 1 BFS dalcurrent, phase 2 orphan placement iterato (gestiscen→s), phase 3 stack nell'angolo in basso a destra per stanze isolate. Snapshot dicoords.items()prima di mutare per evitare collisioni. - EventLogger (
src/viandante/logger.py): due sink opt‑in paralleli —--log-jsonJSONL append‑only (un evento per riga) e--log-mdMarkdown streamed con heading## HH:MM:SS.mmm — kind. Lock difensivo + idempotenza diclose()+ redazione password in tre punti (line_sent/local_cmd/login). - Comandi slash locali in
cli._handle_local_command:/map/where/look/vitals/stats/password PWD/clear/help/quit. Le/...non riconosciute vengono inoltrate al MUD;/password PWDloggalocal_cmd+line_sent+logintutti esplicitamente redatti. - Auto‑login regex ancorate a riga (
_LOGIN_RE/_PASSWORD_RE) con varianti>/*/:/?e invio one‑shot del nome; suggerimento/password PWDse la password è assente. - Status bar
prompt_toolkitconFormattedTextrinfrescato 2×/s (refresh_interval=0.5) che mostra stanza corrente, GMCP on/off, hp/sp/mv. - Documentazione completa in
docs/(8 file: architecture, modules, protocol, usage, events, development, gitea + README index) con analisi architetturale, data flow, schema eventi del logger, flag CLI, workflow dev e flusso Gitea con warning sicurezza token.
Modificato
- Hardening asyncio in
cli._run:asyncio.wait(FIRST_COMPLETED)+conn.close()prima del drain delle pending task. Sblocco via EOF invece cheCancelledError. - Strip delle credenziali in
.git/configdopo ogni push: URL remoto resta pulito, il token viaggia solo inline nella URL del singologit push.
Rinominato
progetto2→viandante(Italian for wanderer) ovunque: package Python (src/progetto2/→src/viandante/), pyprojectname+description+keywords, repo Gitea (truetype/progetto2→truetype/viandante), documentazione. L'entry‑point script restamudclient(un solo nome da ricordare).
Tests
- 66 test (precedenti 46 + 20 nuovi per
EventLogger). - Nuovo
tests/test_logger.pyper roundtrip JSONL + rendering MD, redazione password, idempotenza diclose(), robustness su byte ESC non validi.
Full source tarball and zipball are available below.
Downloads
- GMCP decoder (