Releases: aaron-gh/mudpie-mac-releases
Releases · aaron-gh/mudpie-mac-releases
Release list
Mudpie 0.1.2
Mudpie 0.1.2
Two improvements to how sounds are wired up.
Changed
- The PLAY_SOUND and LOOP_SOUND trigger / alias actions now take a
typed sound path instead of opening a sound-picker dialog. The
parameter field's hint and accessibility label both lead with
the available prefixes, so screen-reader users hear the format
guidance as soon as they focus the field. Type one of:- world:foo.wav for a sound in this world's sounds folder
- global:foo.wav for a sound in the shared global sounds folder
- asset:foo.wav for a built-in sound
Subdirectories work as you would expect, e.g.
world:spells/heal.wav.
- MSP-downloaded sound files now land in your regular sounds
folder under the type subfolder the server specified, instead
of a hidden cache directory. Once a file has been downloaded
you can reference it from triggers and scripts as
world:type/filename, copy it to another world's sounds folder,
or browse it in Finder, all without going through any cache
cleanup. Existing files in the old hidden cache are still found
and played, so nothing breaks for users upgrading from earlier
versions.
Mudpie 0.1.1
Mudpie 0.1.1
Bug fix release.
Fixed
- Cmd+W now closes whichever window is in front, instead of always
closing the active session tab. Pressing Cmd+W with the Worlds,
Triggers, Aliases, Key Bindings, Classes, Help, or any edit
dialog window in front used to silently close one of your open
session tabs in the background. It now closes the window you are
actually looking at, the same way every other macOS app behaves.
Cmd+W in the main session window still closes the active tab.
Mudpie 0.1.0
Mudpie 0.1.0
First public release. Accessibility-first MUD client for macOS.
Apple Silicon, macOS 13 (Ventura) and later.
Compatibility
- Apple Silicon only. No Intel build.
- macOS 13 (Ventura) or later.
- The .app is ad-hoc signed, not Apple Developer ID notarised. On
first launch macOS Gatekeeper will block it. Either right-click
the app and choose Open, or run xattr -cr on the .app bundle,
then double-click as usual. Subsequent launches work normally.
Connecting
- Telnet, with optional SSL/TLS.
- ANSI colour rendering.
- Modern MUD side-channels: GMCP, MSSP, MSP, and the Cosmic Rage
$sphook soundpack protocol.
Sessions and worlds
- Multiple worlds open in one window via tabs.
- Per-world settings for host, port, SSL, and on-connect commands
with an optional delay before the first line is sent. - Optional auto-connect on launch. Worlds flagged for it open
automatically every time the app starts. - Optional auto-reconnect on drop. The session retries the
connection whenever a disconnect was server-initiated rather
than something the user did. - Tab order is remembered across launches.
- Cmd+Shift+R reloads the active session's triggers, aliases,
key bindings, classes, and scripts without disconnecting. - Cmd+Option+Shift+R does the same reload then drops and
reconnects, useful when a script change needs to fire from a
fresh on-connect flow. - Sharing a world is just sharing its folder. There is no archive
format; copy ~/.mudpie/worlds/<name>/ and a friend can paste
it into their own ~/.mudpie/worlds/.
Triggers
- Match server lines by substring or regular expression.
- One trigger can carry several actions that fire in order on a
match. - Available actions include gag the line, replace the line,
highlight the line, send a command, play a sound, start or
stop a sound loop, speak text, and push to a buffer. - Group triggers into classes you can enable or disable as a set.
- Variable interpolation in action params using the $var{name}
syntax.
Aliases
- Plain-command aliases match the first word of your input.
Trailing words become positional arguments ($1,$2, and $ * for
the whole tail). - Regular-expression aliases match anywhere in the input line.
- One alias can carry several actions.
- Group aliases into classes for batch enable and disable.
Key bindings
- Per-world and global key bindings.
- One keystroke can run a sequence of actions, for example
speaking the current buffer item and then sending a command. - Action types include sending commands, navigating buffers,
speaking the current buffer item, and toggling classes. - World bindings shadow global bindings on conflict, so a
personal global keymap will not collide with per-world keys.
Classes
- Group triggers, aliases, and scripts so they can be enabled or
disabled together. - Disabling a class also unloads its scripts (cancelling their
timers and any in-flight network requests). - Each class can be set to start enabled or start disabled at
every connect.
Python scripting
Mudpie scripts are real Python and run in-process. The full
standard library is available, plus the third-party packages
the app itself depends on.
- Per-world scripts live at ~/.mudpie/worlds/<name>/scripts/
and global scripts at ~/.mudpie/global/scripts/. - Decorators register handlers for new server lines, prompts,
user input, connect and disconnect, GMCP and MSSP messages,
and key combos. - Scripts can send commands, echo, gag, substitute, and
highlight lines. - Scripts can start one-shot or repeating timers, queue HTTP
requests, play sounds, speak via TTS, post macOS
notifications, read and write the clipboard, and switch tabs. - A "consume" return value lets a script handler intercept the
user's typed input or a key press, for client-side commands
and script-driven keybindings. - Per-world variables are persistent across session restarts.
- Multiple scripts in the same session share a globals dict, so
helpers defined in one script can be called from another. This
matches the soundpack pattern.
Bundled examples:
- On first launch Mudpie seeds an examples folder at
~/.mudpie/examples/ with one annotated Python file per API
surface plus a README index. The folder is not auto-loaded;
copy a file into your scripts folder to activate it.
A note on trust: scripts run with full process privileges. There
is no sandbox. Read scripts you did not write before enabling
them.
Audio
- Plays WAV, MP3, AAC/M4A, AIFF, and CAF files.
- OGG/Vorbis is not natively decodable on macOS, so Mudpie ships
a copy of ffmpeg and transcodes OGG sounds to M4A on download. - Per-world master volume slider. The slider uses a perceptual
taper, so the bottom of the range is genuinely quiet rather
than just slightly less loud. - Sounds and loops can carry a per-call volume, stereo pan, and
pitch override. - Loops survive a tab switch when "pause sounds when inactive"
is set: the player is paused, not destroyed, and resumes when
you come back. - Master volume changes mid-playback fade in place; loops do not
restart.
Text-to-speech
- Speaks via the same engine VoiceOver uses.
- Two TTS modes per world: auto-read with system defaults, or
auto-read with the world's own voice, language, and rate. - Optional speech interrupts: tap Ctrl by itself, send a command
(Enter, key binding, or script), or type any character. Each is
an independent toggle, configurable globally with optional
per-world overrides. - Cmd+. cancels speech regardless of interrupt settings.
- Punctuation handling levels (None, Some, Most, All) with an
option to preserve original punctuation alongside spoken
symbol names. - Per-world TTS volume slider, independent from the sound master
so speech and sound effects can have different levels.
Buffers
- Named string buffers populated by triggers, scripts, or you.
Useful for collecting channel chat, tells, looted items, etc. - Cmd+B opens the Buffers window for browsing.
- Key-binding actions for navigating buffers and speaking the
current item.
Background behaviour
Two layers of "be quiet when I am not looking" toggles, OR'd
together so either alone silences:
- Global toggles (Preferences) fire when the app is not the
frontmost macOS app. - Per-world toggles (Edit World) fire when this world's tab is
not active in addition to when the app is backgrounded. Useful
for letting other tabs read out without a busy combat MUD
shouting alerts in the background.
Three independent toggles in each layer: stop sounds, stop TTS
auto-read, stop SPEAK trigger actions.
Cosmic Rage
- Auto-activates on a world named cosmic rage (whitespace-tolerant,
case-insensitive). - $sphook events are parsed, suppressed from the visible output,
and routed through the sound system. Pan and volume from the
protocol are honoured. - Sound files are downloaded from the Cosmic Rage sound server,
transcoded to M4A, and cached. Subsequent plays of the same
sound are instant.
Session logging
Optional per-world transcript logging configured in Edit World.
- Modes: combined output and input, output only, input only, or
separate files for output and input. - Content choice: raw server output (including lines gagged by
triggers) or processed (the post-trigger view with substitutions
visible). - Optional per-line timestamps.
- Rotation: per session, hourly, daily, weekly, by file size,
or never.
In-app help
- Cmd+? opens the Help window. Sixteen topics covering every
feature. - Topics: Worlds, Triggers, Aliases, Key bindings, Classes,
Scripting, Buffers, Sounds, TTS, Output, Session logging,
Preferences, Cosmic Rage, GMCP / MSSP, Local edit, and
Acknowledgements.
Accessibility
- VoiceOver support throughout. Mudpie uses native macOS controls
rather than reimplementing them, so accessibility behaviour
matches every other Mac app you use. - Dialogs have been laid out so VoiceOver reads section headings
before their controls. - Sliders, text inputs, and buttons are labelled.
- Documentation is written for screen readers: nested lists for
hierarchy rather than ASCII tree art, native markdown tables,
and prose explanations rather than figures.
License
- Proprietary. Mudpie itself is not open source. Copyright Aaron
Hewitt. - The bundled ffmpeg binary is GPL-2.0-or-later. The full GPL v2
text and an acknowledgement of the binary's license live under
the Acknowledgements topic in the Help window.