Skip to content

Spacing & ASCII Map Cutoff #13

Description

@moshehbenavraham

i notice 2 pretty big issues:

  1. this GUI seems to remove all spacing, not sure why ... but it doesn't match the generic telenet output in spacing even with compact mode off,
  2. the map parser is cutting out the map missing a line (doesn't seem to always occur), for example the main display is showing the first line of the map (it shouldn't show any of the ascii map) and then the ASCII mapper window box is missing that line:
  You leave south.
  Just south of the village gates [City] ( None )
      [.]-[|]-[.]

Resolution tracking — 2026-09-07

Status: implemented and verified on the resolution branch; awaiting review/integration. This focused acceptance is not a full release approval.

Confirmed causes

  1. Blank lines were deleted independently of compact mode. The active Gag blank lines trigger matched ^$ and called deleteLine() without consulting the server preference.
  2. Dynamic map capture was version-sensitive. A tempLineTrigger(1, ...) created while handling the opening marker started at the second following line in native Mudlet 4.21/4.22, but at the first following line in the observed 5.0.1 comparison.
  3. Fixed capture lengths truncated valid taller maps. Supported room maps range from 3 to 25 rows, while the old parser assumed a fixed callback count instead of using the server's closing marker.

Room 145201 begins with space-only rows, so losing its first row was visually subtle. Room 145202 begins with the visible [.]-[|]-[.] row, making the same timing bug obvious and explaining the apparent intermittency.

Implemented

  • Removed the unconditional blank-line gag so ordinary output follows the server's compact preference.
  • Replaced both temporary line-count parsers with one permanent logical-line dispatcher and a boundary-driven GUI.AsciiMapCapture parser.
  • Preserved leading/trailing spaces, true blank map rows, and native ANSI formatting; completed maps are fitted using measured width and row count.
  • Added type-specific row validation, a five-second owned inactivity timer, and row/width/byte safety limits. Malformed blocks and destination failures reset before leaving unrelated text readable.
  • Reset capture across parser reload, reconnect, GUI refresh/profile reset, cleanup, and uninstall, including retirement of a retained legacy trigger ID.
  • Added a registered source-linked regression suite and expanded lifecycle cleanup assertions.

Verification

  • Exact room 145202: all 9 rows captured once and in order; no marker or map row leaked into the main console.
  • Room-map heights 3, 9, 11, 13, and 25; true first/interior/final blank rows; and a 21-row wilderness map all passed.
  • Missing/mismatched ends, consecutive starts, timeout, oversized block, missing destination, clear/append failure, and next-map recovery all passed.
  • Production-trigger native replays passed on official Mudlet 4.21.0 and 4.22.0 builds and a version-recorded 5.0.1 comparison.
  • The complete generated package 2.0.4.046 passed through Mudlet 4.22.0's actual Telnet connection to the local MUD. Both compact settings captured every 145202 row; compact-off retained the server's additional blank prompt separation and ordinary indentation/repeated spaces.
  • The staff character was restored to room 1204 with GUI mode off, compact off, automap on, and brief off; character and account logout were independently confirmed.
  • Build validation and generated-output parity passed. All 9 suites supported by the installed tools passed (--skip-optional; luacheck is not installed), including output capture 8/8 and lifecycle 37/37. Standalone package validation passed.
  • Resource audit: 36 owned runtime handlers, 22 owned timer sites, 2 package-XML handlers, and 0 unowned handlers/timers. Secret scan found no leaks.

The latest origin/master was merged cleanly after implementation. The branch is now 5 commits ahead of and 0 commits behind master; no published history was rewritten. All repository gates passed again on the merged tree. Keep this issue open through review and integration; a release still requires the full manual Mudlet smoke checklist.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

bugSomething isn't working

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions