#### Brief overview of PR changes/additions
* **Add MXP EXPIRE tag support**: Implements the EXPIRE attribute for
MXP SEND tags, allowing servers to expire groups of links by name
* **Tooltip fix**: Fixed MXP link tooltips displaying "HREF" instead of
the actual link command when the EXPIRE attribute appears before the
HREF attribute in SEND tags
* **Custom element fix**: Fixed custom MXP elements to properly pass
through ALL attributes (EXPIRE, HREF, HINT, etc.) to their expanded tag
definitions
#### Motivation for adding to Mudlet
**EXPIRE tag support**: The MXP specification defines an EXPIRE
attribute that allows servers to tag groups of links and expire them all
at once (e.g., `<EXPIRE Exits>` expires all links tagged with
`EXPIRE="Exits"`). This is essential for dynamic content like room exits
that change as players move around.
**Tooltip fix**: Addresses reviewer feedback in PR #8383. When games
send MXP links like `<SEND EXPIRE="Exits" HREF="east">East</SEND>`, the
tooltip was incorrectly showing the literal text "HREF" instead of
"east" (the command that would be executed), making links confusing for
users.
**Custom element fix**: When servers define custom elements like
`<!ELEMENT Ex '<SEND>'>` and use them with attributes like `<Ex
EXPIRE="Exits" HREF="north">North</Ex>`, those attributes weren't being
passed through to the expanded SEND tag. This made custom elements less
functional than regular tags. Now all attributes are properly inherited.
#### Other info (issues closed, discussion etc)
- Related to PR #8383 (initial EXPIRE tag implementation discussion)
- Addresses @mfontani's comment about custom elements not passing
through EXPIRE attributes
- Added comprehensive unit tests:
- Tooltip attribute ordering tests in `TMxpSendTagHandlerTest`
- Custom element attribute pass-through test in
`TMxpCustomElementTagHandlerTest`
- All existing MXP tests continue to pass (100% success rate)
- Changes summary: 5 files changed, 101 insertions(+), 2 deletions(-)
#### Brief overview of PR changes/additions
Use a ` +$` search-and-replace to remove trailing spaces in `.cpp` and
`.h` source code files to remove unwanted trailing whitespace that has
crept into a number of files.
#### Motivation for adding to Mudlet
To clean up files as `git` notices such white-space and objects in some
circumstances - and such spaces are redundant in the source code.
#### Other info (issues closed, discussion etc)
Signed-off-by: Stephen Lyons <slysven@virginmedia.com>
<!-- Keep the title short & concise so anyone non-technical can
understand it,
the title appears in PTB changelogs -->
#### Brief overview of PR changes/additions
MXP text effects (incl. all aliases) are now rendered.
Colour and text effects in open mode auto-close at end of line
#### Motivation for adding to Mudlet
Improve MXP compliance
#### Other info (issues closed, discussion etc)
[MXP enhancements, was PR
#4200](https://forums.mudlet.org/viewtopic.php?f=7&t=23206)
<!-- Keep the title short & concise so anyone non-technical can
understand it,
the title appears in PTB changelogs -->
#### Brief overview of PR changes/additions
Custom Element Definition and Handler are changed to handle default
values by ATT="EntityName=DefaultValue" as specified in the MXP protocol
definition.
#### Motivation for adding to Mudlet
Improve MXP compliance.
#### Other info (issues closed, discussion etc)
To see this issue (in addition to reviewing the test code coming with
this PR):
connect to aldebaran-mud.de port 2000
login as guest
y (confirm you want to login as a guest)
Now do:
who
Notice the mouse-over hint on your (or another players) name in the who
output.
Right click and try some commands. Admittedly guest has no finger info,
and the game does not allow you to tell to yourself (and you have to
wait for a few minutes for your mana to build up for tell), so you can't
really do much.
Alternatively, you can just login with another guest character (but
mudlet needs a second game profile for this) and "look". The issue is
the same with the short description of the other guest character. But
here you can also select "whisper" from the menu, which will work
nicely.
BTW, all commands are just copied in the input line, even for "finger
guest" you have to hit enter. This is by design / limitation of the MXP
SEND command (you cannot choose 'PROMPT' per menu entry, only globally).
With the current mudlet version this does not work. This is due to the
definition:
<!EL PL '<SEND "tell &NAME; |finger &NAME; " HINT="tell
&NAME;|finger &NAME;" PROMPT>' ATT='NAME=someone'>
Mudlet misinterpretes 'NAME=someone' as the whole name of the entity,
not just NAME.
The effect of the default value 'someone' is not easy to demonstrate,
except when you can find an invisible wizard and convince him to to
interact with you. However, you can do:
say ^<PL player_id>Test1</PL>
and
say ^<PL>Test2</PL>
and see/use the menus created by/in Mudlet for the echo of Test1 and
Test2. You'll see how it refers to player_id or someone.
Note that Mudlet should actually not evaluate the PL tag in the say
command, as it is a secure MXP tag and the session is in open mode at
this time. However, Mudlet does not honor this security measure as of
now, which is another, unrelated, issue.