This release supports server version 4.4.
- The active color theme can be customized by creating a theme
customization file and setting the new
option. This setting lets you override any foreground color,
background color, or style of any aspect of the Matterhorn interface.
For details on the format of the customization file, please see the
“Themes” help in Matterhorn with the
/help themes command.
- Edited posts are now displayed with a trailling “edited”
marker. This change includes some new behavior and a new
- When you visit a post that has recent edits, the “edited” marker
will be highlighted. This highlight can be dismissed in the same
way as the “New Messages” cutoff, using the
- This feature can be turned off using by setting the
showOlderEdits configuration option to
- New commands:
/remove-user command removes a user from a channel.
/group-msg command creates a new private group channel
including several users.
/search [term] command searches the chat history for posts
that include the provided text and displays those posts in an
overlay. Thanks to @abhin4v for this change!
- Matterhorn now includes embedded hyperlinks using terminal escape
sequences in terminals that support them. For more information on
terminal support for hyperlink escape sequences, please see this
and its associated discussion.
- The width of the channel list (in columns) is now configurable with
channelListWidth, which defaults to 20.
urlOpenCommand can now be an interactive terminal-based
program (such as a terminal-based web browser) but this requires
the configuration option
urlOpenCommandIsInteractive to be set to
True. This defaults to
False and should not be changed if the
urlOpenCommand is not a terminal-based program.
- The current selection in channel select mode can be moved forward
and backward with
C-p. (fixes #139)
- Quotation blocks now include visible characters in addition to
- We now honor the server’s notification settings for channels.
- New direct-message channels are properly added to running sessions
- No more reporting of “resource vanished” exceptions (fixes #116)
- Missing editing keybindings now included in edit binding list
Websocket message parse failures no longer result in crashes (fixes
The sidebar no longer shows deleted users (fixes #316)
Tab-completion no longer includes deleted users (fixes #320)
User status updates are now rate-limited (fixes #282)
Private channels can be deleted successfully (fixes #304)
External commands now run in the background in their own thread and
do not block the main UI (fixes #270)
Channel renaming is honored at runtime and does not require a
restart (fixes #324)
Group channel show/hide preferences are observed, which in practice
means a user can now ‘leave’ a several-user group channel
New channels will not appear twice in the sidebar (fixes #327)
New messages to previously-hidden group channels will cause the
group channel to be shown again (fixes #326)
- PRACTICES.md is now listed in extra-doc-files.
- Three scripts usable with the
/sh command are now listed in
cowsay runs the message text through the
cowsay shell command
and formats the output as a verbatim block. This command requires
cowsay command-line program to be installed externally.
figlet runs the message text through the
figlet shell command
and formats the output as a verbatim block. This command requires
figlet command-line program to be installed externally.
rot13 runs the trivial ROT13 subsitution cipher over the
message text and otherwise passes it through unchanged.
- Messages that start with a block-level element now get laid out so
that the block level element appears underneath, rather than to the
right of, the user name. This helps with long usernames such as bots.
Thanks to @kellymclaughlin for this change.
- Code blocks with fencing now display the language when syntax
highlighting is active.
- In channel scroll mode, Up/Down arrow keys scroll by just one row
- All channel and user data are now fetched more efficiently on startup
for greatly improved startup time.
- Attachments no longer appear in duplicate for edited messages.
- CHANGELOG.md is now listed in extra-doc-files.
- Upgraded mattermost-api to 40000.0.1.
- Upgraded mattermost-api-qc to 40000.0.1.
emoji_added websocket events rather than crashing due to
JSON decode failures (#296)
channel_viewed websocket events from 4.0 servers
channel_id value no longer cause a client crash
- mkrelease.sh: use correct bindist file extension (#295)
This release supports server version 4.0.
- Upgraded mattermost-api to 40000.0.0.
- Upgraded mattermost-api-qc to 40000.0.0.
- Attempts to
/focus your own DM channel no longer trigger a server
error (fixes #294)
- Message edits now properly restore message reactions and attachments
- DM channels with topics now display those topics in addition to the
DM channel user identification.
- Rendering of attachments regressed in 31000.0.0 and is now fixed
so that attachments are displayed beneath, not to the right of, their
- Markdown image alt text is now rendered when available and Markdown
images are now available in the C-o URL list (fixes #285)
- Added a new configuration setting,
determines whether the status of Matterhorn’s asynchronous work queue
is displayed in the interface. This setting is mostly for developers
but can be a helpful diagnostic tool. When enabled, the setting
causes the async queue length to appear in the lower-right corner of
- Added a new configuration setting,
unsafeUseUnauthenticatedConnection, which causes Matterhorn to use
a non-HTTPS connection when connecting to the configured host and
port. As the sample configuration file says, use this only if you
know what you are doing.
- Added support for 4.0’s
This release supports server version 3.10.0.
- Upgraded mattermost-api to 31000.0.0.
- Upgraded mattermost-api-qc to 31000.0.0.
New features and keybindings:
- Matterhorn now supports Flagged Posts. To use this feature:
- Press M-8 or use the /flags command to show a list of your
flagged posts. Within that view, ‘f’ will unflag a selected
- In message selection mode in channels (C-s), ‘f’ will flag/unflag
the selected message.
- Flagged posts appear with a flag marker “[!]” next to the author’s
- Syntax highlighting of fenced code blocks is now supported in
256-color terminals. Code blocks must provide the langauge hint using
the same syntax as supported by the web client.
- Spell checking of user input is now supported using Aspell. To use
- Install the Aspell binary and dictionaries on your system.
- Set enableAspell = true in your Matterhorn configuration.
- Optionally, set aspellDictionary to the name of the Aspell
dictionary you want to use (this is only necessary if you want to
override your LANG setting, which is typically sufficient)
- Once user input is entered into the input area, a short delay after
typing stops, a spell check will highlight any misspelled words.
- Home and End now move the cursor as usual in editor while in normal
mode, and also navigate the message list while scrolling.
- Matterhorn now displays the mention count in the channel sidebar to
mimic the web client behavior and highlights channels with at least
one mention in magenta in the sidebar.
Bug fixes and improvements:
Configuration file values can now use quoted string syntax (fixes
The channel switch mode prompt now mentions anchors.
The URL opening command is now run asynchronously.
Input history files are now saved with an appropriate file mode (fixes #218)
Fixed a bug that caused users created after a session began not to
appear in the sidebar.
Help topics (valid arguments to /help) are now displayed in the main
help UI (fixes #225)
Message deletion now also deletes replies to the deleted message
On channel deletion, leave before deleting to avoid a server error.
URLs in the URL list are now displayed in the same order in which
they appear in messages (fixes #250)
User identification now appears in DM channel headers.
Numbered lists now render starting at first specified number (fixes
The login screen now displays validation errors for hostname and port
inputs when appropriate (fixes #242)
Channel select inputs that have an exact match no longer require
This release supports server version 3.8.2. This release is our first
official public release.
- Removed stale array and data-default dependencies
- Increased lower bound on base dependency to 4.8 to relect our GHC
- Subprocess error logs are now only created on demand. Previously we
created them on startup before any subprocess errors had occurred.
- We now provide a QuickCheck test for some infrastructure.
- Fixed a bug whereby some resize operations would cause a program
crash by triggering an unsafe mutable vector operation in Vty.
- New user creation is now handled successfully and no longer requires
a client restart to function reliably. Previously bad behavior
included not coloring new users’ names and not showing new users’
names at all on their messages.
- Message selection mode is no longer blocked by errors and other
- Subprocesses that fail to run are now consistently mentioned in the
subprocess error log.
This release supports server version 3.8.2.
- Relax constraint on containers to allow 0.5.7 or greater.
- Upgraded mattermost-api to 30802.0.0.
- C-o now opens the URL list while scrolling through channel messages.
- C-c now cancels channel selection in C-g mode
- Channel scroll mode keybindings were added to the help page.
- We no longer perform string highlighting on the contents of Markdown
code spans in messages.
- On startup, only the scrollback for Town Square is fetched to improve
performance. Scrollback for other channels is fetched on demand.
- We now use the channel sigil “~” rather than “#” to match the web
client behavior, and highlight ~-prefixed channel names (fixes #204).
This release supports server version 3.7.1.
- Matterhorn now has basic support for 3.7’s new “group channel”
feature. If other users add you to a group channel, it will appear in
the sidebar with the member usernames listed (e.g. “#bob, sue, …”).
Creation of group channels will be supported in a future release.
- When the
urlOpenCommand program produces output on standard output
or standard error, this output is now logged and a message is posted
in the current channel with the path to the log file. This feature
prevents the URL open command from poisoning the terminal state with
- Added a
/members command to show current channel membership.
- Channel header changes from other users will now cause the channel
topic string to update.
- Added a
/delete-channel command to delete the current channel.
- Markdown rendering now puts empty lines between adjacent block
elements of the same variety to improve readability.
- Message selection now only supports reply/edit/delete on normal posts
- C-n/p now only change channels when a non-DM channel is selected
- We now handle new user events (fixed #111)
- On channel change we now always reset the channel list to scroll to
the top (fixes #138)
- When a draft message is left in the editor when changing channels, a
new sigil (“»”) appears for the previous channel instead of the usual
“#” to indicate this.
- The help interface now resizes properly all the time.
- On startup, all channel contents are fetched asynchronously. Town
Square fetches are prioritized. These changes drastically improve
startup time, even on fast connections.
- The README now includes a feature list, a brief feature overview for
new users, and a section on how to contribute.
- Upgraded mattermost-api to 30701.0.0.
- Binary releases now include the copyright and licensing information
for all dependencies.
- Added preemption support for asynchronous work queue processing.
doAsync(With) now both take an
New editing keybindings:
- C-w, M-Backspace now delete the word to the left of the cursor.
- M-d deletes the word to the right of the cursor.
- C-k now kills text from the cursor to the end of the line and copies
to an internal buffer; C-y pastes from said buffer.
C-b, C-f move back and forward by one word, respectively.
Many editing keybindings are now present in their own Help page
- Upgraded text-zipper to 0.10.
- Upgraded mattermost-api to 30600.2.2.
- Message-yanking failures due to missing programs (e.g. xclip) no
longer trigger an unhandled exception (fixes #170)
- Users that are not members of the current team are now hidden from
the user list (fixes #161)
- User statuses in the sidebar are now periodically refreshed
- Supported server commands now appear on the help screen (fixes #162)
- Files containing non-UTF-8 content no longer trigger unhandled
exceptions when being read by matterhorn (fixes #168)
- Updated repository URL in error message about reporting problems
- Improved formatting of message attachments so that their filenames
are shown. Previously only their hash identifiers were displayed. This
change also entails asynchronous fetching of attachment metadata.
- Upgraded to mattermost-api 30600.2.1.
- Fixed a bug that caused message selection mode to trigger a Vty crash
when a message being rendered was larger than half of the area
available for the message list.
Added a new message selection mode. This mode provides access to four
new features: replies, edits, deletion, and verbatim text yanking. To
enter this mode, use the default binding of C-s (and cancel with Esc).
The resulting cursor can be used to select messages in the current
channel and perform the following actions on them:
- y: for messages with any verbatim text, yank the verbatim text to
the first verbatim block in the message to the system clipboard
(works on Linux and OSX)
- r: reply to the selected message. To cancel a reply, press C-c or
- e: for messages written by the current user, edit the selected
message. To cancel an edit, press C-c or Esc.
- d: for messages written by the current user, delete the selected
message (with a confirmation).
- o: for messages containing URLs, open all URLs in the selected
- j/k/up/down/pgup/pgdown: change the selected message cursor
Added a C-r binding to begin a reply to the most recently posted
message in the current channel.
M-e now toggles multiline editing mode rather than just enabling it.
Previously, Esc toggled it off.
Upgraded to mattermost-api 30600.2.0.
- Upgraded to mattermost-api 30600.1.0. This fixed /me and /shrug
server-side command execution failures.
Initial versioned release for server version 3.6.0.