messages.yml
Loading and Reloading
Section titled “Loading and Reloading”The file is plugins/PortBridge/messages.yml. Edit it and use /port reload to publish a validated replacement along with configuration. Invalid text or colors reject the entire reload; the previous catalog remains active.
Missing keys use bundled defaults, and existing files are preserved. The bundled messages.yml is the complete key reference.
Message Format
Section titled “Message Format”prefix: 'Port Bridge >'status-title: 'PORT BRIDGE'status-subtitle: 'Your server, a connection away.'command-reload-failed: 'Reload rejected: {reason}. The previous settings remain active.'Values are literal, non-empty, single-line strings. Port Bridge does not parse MiniMessage tags or legacy formatting codes in chat-panel text. Quote strings containing # or punctuation meaningful to YAML.
Contextual values use {name} placeholders. Substitution runs once and inserts the supplied values literally; it does not recursively interpret another placeholder inside a diagnostic value.
Chat Colors
Section titled “Chat Colors”theme: accent: '#70C8C3' secondary: '#87BDE8' text: '#D9E3ED' label: '#ADB9C8' muted: '#8392A5' separator: '#3C5267' warning: '#D7B779' error: '#E18E95'Every theme value requires a quoted #RRGGBB color. The renderer applies the palette to titles, ordinary text, labels, separators, actions, warnings, and errors.
Changing a color affects presentation; it does not change permissions, command dispatch, or tunnel behavior.
Message Groups
Section titled “Message Groups”| Group | Examples | Used for |
|---|---|---|
| Shared presentation | prefix, separator | Common reply prefix and panel dividers |
| Panel headings | status-title, help-title, address-title, connected-title, relay-title | Status, help, address, and connection panels |
| Panel guidance | status-subtitle, address-hint, unverified-hint, no-address | Instructions and connection context |
| Status labels | label-state, label-local, label-latency, health-enabled | State, targets, timing, health policy, and diagnostics |
| Lifecycle names | state-stopped, state-preparing, state-online, state-failed | Display names for tunnel states |
| Actions and hovers | button-copy, button-start, hover-stop, hover-restart | Clickable controls and their descriptions |
| Command help | help-status, help-address, help-reload, help-hint | Command descriptions and alias guidance |
| Command feedback | command-started, command-already-stopped, command-reload-failed | Accepted actions, unchanged states, and rejected reloads |
| Timing values | latency-value, retry-value, uptime-hours | Ping, retries, and connection duration |
| Tunnel details | detail-preparing, detail-online, detail-reconnecting | Current connection activity |
| Diagnostics | error-local-listener, error-output, error-start | Validation, process, and route failures |
| Console rendering | console-command-suffix, help-command-label | Text representations of commands |
| Framework messages | acf.acf-core.* | Permission denials, syntax errors, and command-framework replies |
Preserve the contextual placeholders already present in each template. Not every value is available to every message.
Contextual Placeholders
Section titled “Contextual Placeholders”| Placeholder | Typical context |
|---|---|
{reason} | Original validation, I/O, or probe diagnostic |
{output}, {code} | Bore output and process exit code |
{address}, {host} | Resolved local listener or relay hostname |
{seconds}, {attempt} | Retry timing and second-based durations |
{hours}, {minutes} | Connection uptime |
{millis} | Measured route latency |
{command} | Help commands and console control suffixes |
For example:
latency-value: '{millis} ms'retry-value: '{seconds}s (attempt {attempt})'uptime-minutes: '{minutes}m {seconds}s'detail-connecting: 'Connecting to {host}.'{reason} and {output} preserve external diagnostics. Changing their surrounding template does not translate operating-system errors or Bore output.
Buttons and Hover Text
Section titled “Buttons and Hover Text”button-copy: '[ COPY ADDRESS ]'button-start: '[ START ]'hover-copy: 'Click to copy the public connection address.'hover-start: 'Start the tunnel to your local server.'Changing a label or hover changes its presentation. The plugin retains the real clipboard or command action and checks the sender’s permissions. See commands for control behavior and permissions for access rules.
Command-Framework Messages
Section titled “Command-Framework Messages”acf: acf-core: permission_denied: 'Error: You do not have permission to perform this command.'Framework entries use ACF’s own contextual placeholders, including {syntax}, {message}, and {search}. Preserve the placeholders in the relevant bundled template when editing syntax and lookup replies.
The same /port reload updates both the framework catalog and the chat renderer after the replacement passes validation.