• v0.2.0 a701fca772

    Stable

    truetype released this 2026-07-07 15:59:00 +00:00 | 5 commits to main since this release

    What'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 per Char.Vitals con sinonimi (hp/health/life, sp/mana/magic, mv/move/stam), Room.Info con 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 dal current, phase 2 orphan placement iterato (gestisce n→s), phase 3 stack nell'angolo in basso a destra per stanze isolate. Snapshot di coords.items() prima di mutare per evitare collisioni.
    • EventLogger (src/viandante/logger.py): due sink opt‑in paralleli — --log-json JSONL append‑only (un evento per riga) e --log-md Markdown streamed con heading ## HH:MM:SS.mmm — kind. Lock difensivo + idempotenza di close() + 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 PWD logga local_cmd + line_sent + login tutti esplicitamente redatti.
    • Auto‑login regex ancorate a riga (_LOGIN_RE / _PASSWORD_RE) con varianti > / * / : / ? e invio one‑shot del nome; suggerimento /password PWD se la password è assente.
    • Status bar prompt_toolkit con FormattedText rinfrescato 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 che CancelledError.
    • Strip delle credenziali in .git/config dopo ogni push: URL remoto resta pulito, il token viaggia solo inline nella URL del singolo git push.

    Rinominato

    • progetto2 → viandante (Italian for wanderer) ovunque: package Python (src/progetto2/ → src/viandante/), pyproject name + description + keywords, repo Gitea (truetype/progetto2 → truetype/viandante), documentazione. L'entry‑point script resta mudclient (un solo nome da ricordare).

    Tests

    • 66 test (precedenti 46 + 20 nuovi per EventLogger).
    • Nuovo tests/test_logger.py per roundtrip JSONL + rendering MD, redazione password, idempotenza di close(), robustness su byte ESC non validi.

    Full source tarball and zipball are available below.

    Downloads