All Versions
Latest Version
Avg Release Cycle
48 days
Latest Release

Changelog History
Page 1

  • v50200.17.0 Changes

    ๐Ÿš€ This release is mostly focused on adding support for a "thread window" that allows you to carry on a conversation in a thread of your ๐Ÿ‘€ choosing while also seeing, visiting, and switching between channels simultaneously.

    To use the thread window, select a message with C-s and then press t. This binding can be customized by overriding the key binding for the open-thread key event.

    Once the thread window is open:

    • It can be closed with Esc.
    • The editor focus can be swapped between the thread window and the currently selected channel with M-o (the default binding for the key event change-message-editor-focus). The currently focused editor's prompt is highlighted when a thread window is open to help you spot the focused editor. The theme attribute focusedEditorPrompt can be customized to change the focused editor prompt style.
    • All of key bindings that work in a channel (such as C-s) work in a thread window, too.
    • As one would expect, in a thread window, all messages are implicitly part of the thread; no explicit C-r or C-s/r steps are needed to reply.
    • The thread window is per-team; you can have a thread window open even while you switch between channels to view other channels in the same team while still participating in a thread. Each team can have an open thread window for some thread in that team's channels.
    • The thread window's base attribute can be customized in your theme configuration file by setting the value of thread.
    • The thread window's orientation relative to the currently selected channel can be customized with either the /thread-orientation command or the threadOrientation configuration file setting. Both the command and config file setting can take one of the values above, below, left, or right.
    • By default, the thread window will not be re-opened next time Matterhorn is started. If you would like to make Matterhorn always re-open the last thread you had open on a per-team basis, you can set the new showLastOpenThread config file setting to True.

    Other enhancements:

    • There is a new /toggle-mouse-input command to toggle whether mouse input is enabled at runtime.
    • Matterhorn now starts and uses only one instance of aspell. Prior to this release, Matterhorn started one instance of aspell per team.
    • The message text parser now properly recognizes usernames that are followed immediately by periods. Previously, something like "@user." at the end of a sentence would not cause "@user" to be highlighted as a user reference. With this fix, "@user" will be highlighted as long as it is not followed by more valid username text; if the period is followed by non-whitespace characters that are valid in usernames, the entire token will be treated as a username as expected, since usernames like "@user.blah" are valid Mattermost usernames.
    • Added additional default key bindings for the following key events:
      • scroll-top: Meta-<
      • scroll-bottom: Meta->
      • filebrowser-list-top: Meta-<
      • filebrowser-list-bottom: Meta->
    • The help screen's section on keybindings now displays the key event names for all rebindable keys. The theme attribute used to render the key event names is helpKeyEvent.

    ๐Ÿ› Bug fixes:

    • Fixed a bug where clickable links were not clickable outside of messages in some cases. This affected clickable links in channel topics.
  • v50200.16.0 Changes

    ๐Ÿ†• New features:

    • Matterhorn now provides two configuration file settings to control how typing notifications are used:
      • showTypingIndicator, which now controls only whether an indicator is shown when other users are typing, and
      • sendTypingNotifications (default: False), which controls whether Matterhorn sends typing notifications to the server.
    • The channel list sorting mode can now be configured and changed at runtime. The behavior can be configured by setting channelListSorting in the configuration file to one of the values below. In addition, a new key event and key binding can cycle through the available sorting modes: cycle-channel-list-sorting (default: F4). The sorting modes are:
      • default - sort alphabetically with muted channels at the bottom of each group, and
      • unread-first - same as default except that unread channels are displayed at the top of each group.
    • The channel list now displays a scroll bar and can be scrolled independently of the selected channel with these key events and bindings:
      • C-Up / channel-list-scroll-up - Scroll up in the channel list
      • C-Down / channel-list-scroll-down - Scroll down in the channel list

    In addition, the appearance of the scroll bar itself can be customized in the them using the following attributes:

    • scrollbar - the base scroll bar attribute
    • scrollbar.handle - the attribute for the ends (handles) of the scroll bar
    • scrollbar.trough - the attribute for the trough (unfilled portion) of the scroll bar
      • Channel list categories can now be collapsed to hide their entries from view. Matterhorn offers two options for doing this:
    • Mouse mode, if enabled, makes the channel list group headings clickable to toggle their visibility.
    • The new /toggle-sidebar-group command toggles the visibility of a specified channel list group.
      • The login interface got support for 2FA (second factor authentication). The UI automatically asks for a second factor if the server requires it. (Thanks [email protected]!)

    Other enhancements:

    • Post links in channel headers can now be clicked if mouse support is enabled.
    • Matterhorn can now be built with GHC up to 9.2.
    • The header at the top of the channel list now remains in place while the channel list is scrolled.
  • v50200.15.0 Changes

    ๐Ÿ†• New features:

    • Matterhorn now supports getting post permalinks (#677). A new l binding in message selection mode was added to copy a post's link to the clipboard.

    ๐Ÿ› Bug fixes and improvements:

    • Matterhorn now properly displays the active configured keybinding, rather than the default, in more places where keybinding hints are shown in the UI.
    • The URL list (C-o) now only shows URLs mentioned in messages that have not been deleted (#749).
    • Matterhorn no longer reports HTTP 503 and 504 errors as unhandled exceptions.
    • The login UI now displays Mattermost server errors more cleanly (#741).
  • v50200.14.1 Changes

    ๐Ÿ› Bug fixes:

    • Fixed an issue where some builds would crash right after startup with a missing "mappend" exception.
  • v50200.14.0 Changes

    ๐Ÿ†• New features and improvements:

    • The UI elements of the /notify-prefs window now support mouse interaction.
    • Message attachments can now be clicked with the mouse to open them with the configured URL/file opener command.
    • Long verbatim and code blocks can now be truncated when they're too large. By default, they are not truncated. (#725) This change adds:
      • A new theme attribute, verbatimTruncateMessage, that affects the truncation message
      • A new configuration setting, truncateVerbatimBlockHeight (default 0) that governs how long code and verbatim blocks are truncated. A value of zero disables truncation, while values greater than zero cause truncation at the specified line limit.
      • A new command, /toggle-truncate-verbatim-blocks, that toggles the configuration setting at runtime
    • The channel list now floats muted channels to the end of their respective channel groups to mirror the UI behavior of the official web client.
    • Reactions posted to messages now visually indicate which reactions are posted by the current user (#729). This change adds two new theme attributes:
      • "reaction" - used for emoji reactions posted by other users, and
      • "reaction.mine" - used for emoji reactions posted by the current user

    This change uses the new attributes for emoji reations rather than emojiAttr ("emoji"). We do this to visually indicate which reactions the current user has contributed to, so that they do not accidentally remove their own reactions due to trying to increment them and removing them by accident.

    • The /join window lists channels with the display name of each channel before that entry's URL name and sorts the entries by display name.
    • Matterhorn now searches for XML syntax specifications and emoji.json using the Cabal package data-files path. This makes Matterhorn behave better when installed with cabal, but Matterhorn's search behavior is otherwise unchanged for users who are not running cabal-installed builds of Matterhorn. Thanks to @sternenseemann for this work!

    ๐Ÿ› Bug fixes:

    • Hyperlinks and username references inside of Markdown tables are now supported (#739).
    • Post listing windows now display messages chronologically (#731).
    • Post listing windows now show the number of messages, not list entries, in the window title bar (#730).
    • The /join window now uses the correct server API endpoint to fetch the initial dataset, causing more channels to be displayed (#727).
  • v50200.13.0 Changes

    ๐Ÿ†• New features:

    • Matterhorn now has optional mouse support! Thanks to Hari Menon (@phsmenon) for this work. From the User Guide: Matterhorn supports mouse interaction with some UI elements. To enable mouse support, set enableMouseMode to True in your Matterhorn configuration. Mouse interaction is supported on the following user interface elements:
      • Channel list entries can be clicked to switch channels.
      • Channel list entries in channel selection mode (C-g) can be clicked to switch to the selected channel match.
      • Team names in the team list can be clicked to switch teams.
      • URLs and post links in the URL list (C-o) can be clicked to open them.
      • URLs in messages can be clicked to open them using the configured URL opener.
      • Post links in messages can be clicked to switch to the channel containing the post.
      • Usernames in messages can be clicked to switch to the direct message channel for the clicked user.
      • Usernames in the "Reactions" tab of the message view window can be clicked to switch to the direct message channel for the clicked user.
      • Reactions to messages can be toggled by clicking on them. Click-toggling also works in the "Search Emoji" window as well as the "Reactions" tab of the message view window.
    • Notification scripts now have a richer versioned interface. Thanks to Dave Lamkins (@TieDyedDevil) for this work. Details can be found in docs/
    • Favorite channel support was added. Thanks to Ajay Eeralla (@ajayeeralla) for this work.
      • Matterhorn now honors the "favorite" status of channels, displaying favorite channels together in a new channel list category.
      • Matterhorn got a new command, /toggle-favorite, to toggle the favorite status of the current channel.
    • A new /attach command can be used to attach a file to the message being composed.
    • The URL list got a new keybinding to prompt for attachment save path for the selected entry. This added a new key event, save-attachment (default binding: s), for the URL list. When triggered, if the selected URL entry is for an attachment, a dialog box is shown prompting the user for a path to which to save the attachment. (If the entry is not an attachment, the event is ignored.)
    • The attachment file browser's key bindings can now be customized as Matterhorn key events. Thanks to Dave Lamkins (@TieDyedDevil) for this work. (#628)
    • Matterhorn now supports pipe table syntax in Mattermost messages.
    • The URL selection mode now displays available actions in its UI. The URL list's bottom bar now indicates any actions that are available for the selected link, similarly to how Matterhorn displays such actions for messages in message selection mode. This change also adds a new theme attribute, urlSelectStatus, that is used to render the keybindings shown in the options list.

    ๐Ÿ› Bug fixes:

    • Message reactions are now wrapped rather than being truncated by the window width (#715)
    • When switching away from one team to another, the previous team now has its current channel marked as viewed to fix a bug where unread messages in that channel were still seen as unread.

    Other improvements:

    • Channel autocompletion alternatives are now trimmed to one row in height (thanks Karl Smeltzer (@karljs)).
    • User metadata is now updated correctly in reponse to websocket events (#697; thanks Karl Smeltzer (@karljs)).
    • "No route to host" exceptions no longer trigger "unexpected error" messages (#714)
    • Matterhorn no longer exposes the server's /msg command (#657)
    • Matterhorn no longer exposes the server's /search command since Matterhorn provides its own UI for that command.
    • The /group-msg command was renamed to /group-create to make it more distinct from the server command which has a different behavior (#657).
    • The /remove-user command was renamed to /remove and the server's /remove command is no longer exposed (#657).
    • Matterhorn now shows the team position and count in team list (#692).
    • Matterhorn now falls back to UTC when it is unable to load local time zone data (#695).
  • v50200.12.0 Changes

    ๐Ÿ†• New features:

    • Matterhorn now supports multiple teams! This includes a number of UI changes:
      • Matterhorn no longer prompts for a team on startup.
      • If the configuration file sets team, Matterhorn will attempt to honor that by selecting that as the active team on startup. If the configuration does not specify the team setting, the initially-selected team is chosen as the first team after sorting the team list alphabetically.
      • The window title now reflects the sum of all unread channels in all teams, rather than the number of unread channels in the current team.
      • If the user is a member of more than one team, the list of teams will be displayed at the top of the window with the active team highlighted. Each team with unread channels will display the count of unread channels next to the team name and teams with unread channels will be highlighted. This change comes with a new theme attribute, currentTeam, to style the selected team in the list.
      • The current team selection can be changed with new keybindings:
        • next-team (default binding: C-Right)
        • prev-team (default binding: C-Left)
      • The team list can be reordered manually. In the official web client, the team list can be reordered by dragging and dropping the team icons; in Matterhorn, this can be done by using two new commands, /move-team-left and /move-team-right, respectively. New keybindings to do the same thing were also added:
        • move-current-team-left (unbound by default)
        • move-current-team-right (unbound by default)
    • The new /rename-channel-url command renames the current channel's URL name. This differs from the server command /rename, which renames the current channel's display name. Renaming the URL name with this command is equivalent to changing the value of the "URL" field in the "Rename Channel" dialog box in the official web client. (thanks to Ajay Eeralla for this work)

    Other improvements:

    • The channel list now takes up the full window height. Previously the message editor and input preview were displayed across the entire screen; now those areas stop at the channel list, so the channel list gets a few more rows of space to display channels.
    • Matterhorn now parses all incoming Markdown text with the Haskell commonmark library. Migrating to commonmark improved our support for many Markdown extensions and improved how Matterhorn handles some Markdown syntax.
    • The syntax highlighting XML files in syntax/ were updated from version of the skylighting package.
  • v50200.11.0 Changes

    October 15, 2020

    ๐Ÿ†• New features:

    • Matterhorn now opens post links itself rather than invoking the configured URL open command. This means that if a user obtains a link to a post in the web client and pastes it into a message, Matterhorn will detect it, and if the user chooses to open that link, Matterhorn will switch to the post's channel and show the post. This change comes a new theme attribute, permalink, that is used to style post permalinks. Post links with no labels appear as <post link>; post links with labels are rendered with their labels. Post links also appear in the URL list accessed with C-o, and they are opened by the message selection mode o binding.
    • Message timestamp visibility can now be controlled with the configuration setting showMessageTimestamps (default: True) and can be toggled at runtime with the new /toggle-message-timestamps command.
    • The channel list can now be displayed on either the left side of the screen or the right. This is controlled with a new configuration setting, channelListOrientation, set to either left (the default and previous behavior) or right.
    • Matterhorn now supports strikethrough syntax in messages. This change adds a new theme attribute, markdownStrikethrough, that is used to style strikethrough text. This change also adds support for strikethrough as a valid style specifier in theme customization files. Bear in mind that your terminal might not support strikethrough; for details, see the FAQ entry on strikethrough support.
    • Matterhorn now has improved handling for channel topics (headers) with multiple lines of text. Previously Matterhorn displayed all lines in a multi-line channel topic but replaced newlines with spaces. That resulted in broken layouts for multi-line topics where layout was important. Now it renders the topics as originally intended with user control over how multi-line topics are displayed in order to let the user control how the topic affects screen real estate use.
      • Added a new key event, toggle-expanded-channel-topics, to toggle whether channel topics show only their first line or all lines.
      • Added a new configuration setting, showExpandedChannelTopics, to set this behavior on startup (default: True).
      • Added a new command, /toggle-expanded-topics, and a new default keybinding, F3, to control this behavior at runtime.
    • Added a /topic command that opens an interactive topic editor when run with no arguments. The editor provides a live Markdown preview of the channel topic. As part of the UI for this feature, new theme attributes were added: button and button.focused for rendering unfocused and focused buttons, respectively.
    • Command autocompletion now queries the server for available commands and includes those in the command list. Server commands are also indicated as being provided by the server to help distinguish them from Matterhorn-specific commands.

    Other changes:

    • Channel selection mode (C-g) now displays entries more consistently with the normal channel sidebar, including:
      • Channel mention counts and visual styles
      • The previous channel sigil (<) and first-unread channel sigil (~)
      • Channel mute status ((m))
      • Unread status and visual style
    • When composing replies, Mattehorn now displays the threat root message of the thread being replied to, rather than the message the user selected for reply (#670). This is intended to be less surprising than the old behavior since showing the root post in the preview is consistent with the display of the post in the message list once it is posted, where the root post is shown above the reply.
    • Matterhorn no longer considers external program output to constitute an error, instead only reporting external program errors on non-zero exit status (#665).
    • Matterhorn now decorates all hyperlinks with angle brackets. This change is intended to get around issues caused when a hyperlink label has a style or color that prevents the normal hyperlink color from being used, thus concealing the fact that it is a link. This makes all links visible regardless of link label content. In particular, links labeled foo now get rendered as <foo>. Links with no labels also get decorated this way.
    • The total unread channel count is now included in the window title bar updates.
    • The total unread channel count is now included in the channel list header.
    • Long lines in code blocks with no syntax highlighting are now wrapped to improve readability.
    • Command autocompletion now sorts command completions to prefer prefix matches first.
    • Command autocomplete now makes only one request for the server command list per completion attempt.
    • There is now a new /shortcuts command to stand in for server-provided version which did nothing in Matterhorn.
    • Message selection mode now remains active when:
      • Opening message URLs (C-s/o),
      • Exiting the message view window (C-s/v), and
      • Exiting the emoji reaction list window (C-s/a).
    • The channel list now includes an unread indicator in the DM channel section header when any DM channels are unread.
    • The visual style for channel selection match text now includes the underline style.
    • All unknown websocket events are now logged rather than triggering messages to ask the user to report issues.

    ๐Ÿ› Bug fixes:

    • The URL list (C-o) now has a fixed header when the channel in question is a DM channel.
    • The URL list no longer treats URLs with the same target but different labels as duplicates.
    • The message editor's multi-line toggle UI hint now looks up the active keybinding rather than hard-coding it.
    • The channel sidebar's unread logic was improved (#655).
  • v50200.10.3 Changes

    October 13, 2020
    SHA-256 checksums for Matterhorn 50200.10.3
  • v50200.10.2 Changes

    October 01, 2020
    SHA-256 checksums for Matterhorn 50200.10.2