mudlet/docs/package-capture-audits
Vadim Peretokin 69cd06b1c2
add: starter interface with health bars, map and chat for new players (#9454)
#### Brief overview of PR changes/additions
- New "Mudlet base UI" package auto-installed for new players on every
game: adjustable right-side dock with map (placeholder until the game is
mapped), tabbed chat (All/Tells/Channels with unread badges) and themed
HP/MP/MV/XP gauges - only ever built from data the game actually
provides
- Chat capture: GMCP Comm.Channel.Text when available, otherwise a
generic additive trigger layer (line shapes distilled from an audit of
all 216 packages in the Mudlet package repository); nothing is ever
gagged, and the trigger layer retires itself the moment GMCP chat
appears
- Vitals ladder for the gauges: GMCP (several dialect spellings) > MSDP
(negotiated automatically) > self-sufficient prompts (labeled cur/max or
percents) > score-screen harvesting; when a prompt only shows bare
currents, Mudlet sends `score` once - visibly, with an announcement - to
learn the maxima. Maxima are never guessed. An enemy-health bar appears
during fights on games that report it
- `baseui hide` / `baseui show` opt-out persists across restarts;
first-run announcement defers to the UI tour; experienced players never
get the package
- Plays nice with games that provide their own interface: profiles for
games whose bundled loader installs the game's official UI (flagged in
TGameDetails: Carrion Fields, Icesus, MorgenGrauen, Medievia) skip the
starter UI entirely, and when a game pushes a `Client.GUI` package the
starter UI quietly stands aside (via the new `sysServerGuiInstalled`
event) - `baseui show` brings it back for players who prefer it
- `docs/package-capture-audits/` records the chat + vitals capture
audits (with provenance) behind the design

#### Motivation for adding to Mudlet
New players currently get a bare text screen; this gives every game -
GMCP-rich, MSDP-only or plain telnet - an immediate, honest starter UI
out of the box.

#### Other info (issues closed, discussion etc)
Progresses #3071 and #3070 (phase 1 - not closing them).

**Test case:** Fresh install → create a profile for any game → connect.
On GMCP/MSDP games the dock builds with ticking gauges and tabbed chat;
on a game whose prompt carries cur/max values, gauges appear once the
prompt repeats; on a bare-number prompt, `score` is sent once
(announced) to size the gauges; on pure chat games, tells/says/channels
are captured with no gauges invented. `baseui hide` removes it and
survives restart.



https://github.com/user-attachments/assets/56d207cc-5bad-4464-867c-1a810d41cf2f

---------

Signed-off-by: Vadim Peretokin <vadim.peretokin@mudlet.org>
2026-07-26 08:43:21 +02:00
..
chat-capture-catalog.md add: starter interface with health bars, map and chat for new players (#9454) 2026-07-26 08:43:21 +02:00
chat-capture-findings.json add: starter interface with health bars, map and chat for new players (#9454) 2026-07-26 08:43:21 +02:00
README.md add: starter interface with health bars, map and chat for new players (#9454) 2026-07-26 08:43:21 +02:00
vitals-capture-catalog.md add: starter interface with health bars, map and chat for new players (#9454) 2026-07-26 08:43:21 +02:00
vitals-capture-findings.json add: starter interface with health bars, map and chat for new players (#9454) 2026-07-26 08:43:21 +02:00

Package-repository capture audits

Empirical basis for the starter UI ("Mudlet base UI") capture design: every package in mudlet-package-repository (216 packages at commit d2dead2, audited 2026-07-16) was analyzed for how it captures game text and character data, with file-level provenance for every mechanism.

  • chat-capture-catalog.md - chat/text capture: mechanism taxonomy, routing patterns, per-channel regex library, GMCP dialects, and the layered capture design the starter UI implements (79 packages, 281 mechanisms).
  • chat-capture-findings.json - the raw chat corpus behind the catalog.
  • vitals-capture-catalog.md - character data (hp/mana/xp/affects/enemy-hp): GMCP dialect map, MSDP variables, prompt-shape families, and the maxima problem (63 packages, 451 mechanisms).
  • vitals-capture-findings.json - the raw vitals corpus behind the catalog.

Method: per-package analysis with cross-checking against keyword-based recall lists, then a second pass over any package flagged as capture-likely but reported empty. Counts of cross-game convergence are by independent game, not package, to compensate for the corpus's IRE/Achaea skew.