docs: add Changelog section listing v0.2.0 changes
The Changelog lives between the project title and the Requisiti section. Records GMCP decoder, mapper BFS, EventLogger JSONL+MD, slash commands, asyncio hardening, the progetto2 -> viandante rename and the docs/ folder.
This commit is contained in:
1 parent
0c6ee0d314
commit
a701fca772
1 file changed
+35
@@ -7,6 +7,41 @@ LP‑MUD basato sul driver **FluffOS** (per esempio **Dead Souls**, libreria
|
||||
per ora). Tiene traccia delle stanze visitate e le renderizza come **mappa
|
||||
ASCII** on-demand.
|
||||
|
||||
|
||||
## Changelog
|
||||
|
||||
Le novità di `viandante` rispetto alla release 0.1 (bootstrap del client, prima del rename a `viandante`).
|
||||
|
||||
### 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.
|
||||
|
||||
### v0.1.0
|
||||
|
||||
- Bootstrap iniziale: client telnet minimale (IAC state machine + GMCP marker), mapper ASCII naive, supporto Dead Souls via `localhost:6666`. Package e repo chiamati `progetto2`.
|
||||
|
||||
## Requisiti
|
||||
|
||||
- Python ≥ 3.10
|
||||
|
||||
Reference in new issue
Block a user