Skip to content

Releases: aaron-gh/mudpie-mac-releases

Mudpie 0.1.2

Choose a tag to compare

@aaron-gh aaron-gh released this 10 May 17:14

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

Choose a tag to compare

@aaron-gh aaron-gh released this 10 May 16:01

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

Choose a tag to compare

@aaron-gh aaron-gh released this 10 May 11:09

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.