diff options
-rw-r--r-- | CHANGELOG.md | 28 | ||||
-rw-r--r-- | doc/README.md | 29 | ||||
-rw-r--r-- | web/react/components/posts_view_container.jsx | 5 | ||||
-rw-r--r-- | web/react/components/rhs_root_post.jsx | 4 | ||||
-rw-r--r-- | web/react/components/search_autocomplete.jsx | 15 | ||||
-rw-r--r-- | web/react/utils/markdown.jsx | 2 | ||||
-rw-r--r-- | web/react/utils/utils.jsx | 5 | ||||
-rw-r--r-- | web/sass-files/sass/partials/_markdown.scss | 11 | ||||
-rw-r--r-- | web/sass-files/sass/partials/_popover.scss | 28 | ||||
-rw-r--r-- | web/sass-files/sass/partials/_post.scss | 2 |
10 files changed, 103 insertions, 26 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 3ac8a3261..142e15d91 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,7 +17,8 @@ Messaging and Notifications - Users can now search for teammates to add to **Direct Message** list via **More** menu - Users can now personalize Direct Messages list by removing users listed -- Link previews - Adding URL with .gif file adds image below message +- Link previews - Adding URL with .gif file adds image below message +- Added new browser tab alerts to indicate unread messages and mentions Search @@ -38,6 +39,8 @@ User Interface - Languages include `Diff, Apache, Makefile, HTTP, JSON, Markdown, Java, CSS, nginx, ObjectiveC, Python, XML, Perl, Bash, PHP, Coffee, C, SQL, Go, Ruby, Java, and ini`. - Use by adding the name of the language on the first link of the code block, for example: ```python - Syntax color theme can be defined under **Account Settings** > **Appearance Settings** > **Custom Theme** +- Updated Drag & Drop UI +- Added 24 hour time display option Team Settings @@ -49,6 +52,7 @@ Extras - Added `/shrug KEYWORD` command to output: `¯\_(ツ)_/¯ KEYWORD` - Added `/me KEYWORD` command to output: _`KEYWORD`_ +- Added setting option to send a message on control-enter instead of enter System Console @@ -57,7 +61,10 @@ System Console #### Bug Fixes -- Various fixes to theme colors +- Various fixes to theme colors +- Fixed issue with the centre channel scroll position jumping when right hand side was opened and closed +- Added support for simultaneous login to different teams in different browser tabs +- Incoming webhooks no longer disrupted when channel is deleted ### Compatibility @@ -93,7 +100,17 @@ The following is for informational purposes only, no action needed. Mattermost a #### Known Issues - Microsoft Edge does not yet support drag and drop -- Incoming webhooks no longer disrupted when channel is deleted +- After upgrading to v1.2 existing users will see the newly added tutorial tips upon login (this is a special case for v1.2 and will not happen in future upgrades) +- Channel list becomes reordered when there are lowercase channel names in a Postgres database +- Member list only shows "20" members for channels with more than 20 members +- Searches containing punctuation are not highlighted in the results (including in: or from: search modifiers and searches with quotations) +- Media files of type .avi .mkv .wmv .mov .flv .mp4a do not play properly +- Editing a post so that it's text is blank (which should delete it) throws a 404 +- No scroll bar in centre channel +- Theme color import from Slack fails to import the “Active Channel” selection color +- Pasting images into text box fails to upload on [BROWSERS] +- Users cannot claim accounts imported from Slack via password reset +- Slack import @mentions break #### Contributors @@ -110,7 +127,10 @@ Many thanks to our external contributors. In no particular order: - [jvasallo](https://github.com/jvasallo) - [layzerar](https://github.com/layzerar) - [optimistiks](https://github.com/optimistiks) -- [layzerar](https://github.com/layzerar) +- [Tsynapse](https://github.com/Tsynapse) +- [vinnymac](https://github.com/vinnymac) +- [yuvipanda](https://github.com/yuvipanda) +- [toyorg](https://github.com/toyorg) ## Release v1.1.1 (Bug Fix Release) diff --git a/doc/README.md b/doc/README.md index 1b9cc759d..7ed20fba6 100644 --- a/doc/README.md +++ b/doc/README.md @@ -3,32 +3,51 @@ ## Installation #### Preview Installation -Get up and running quickly with Docker-based install +See what Mattermost has to offer in a Docker-based preview install +Local Machine: +- [One-line Docker Install](install/Docker-Single-Container.md#one-line-docker-install) +- [Mac OS X install](install/Docker-Single-Container.md#mac-osx) +- [Ubuntu Install](install/Docker-Single-Container.md#ubuntu) +- [Arch Install](install/Docker-Single-Container.md#arch) + +Service Based: - [AWS Elastic Beanstalk Setup](install/Amazon-Elastic-Beanstalk.md) -- [Docker Single Container Preview Setup](install/Docker-Single-Container.md) + +Optional: - [SMTP Email Setup](install/SMTP-Email-Setup.md) - [System Console Settings](install/Configuration-Settings.md) #### Production Installation -Set up Mattermost in your data center +Set up Mattermost in your data center using compiled binaries - [Software and Hardware Requirements](install/Requirements.md) - [Production Ubuntu Setup](install/Production-Ubuntu.md) - [SMTP Email Setup](install/SMTP-Email-Setup.md) - [System Console Settings](install/Configuration-Settings.md) +- [Trouble Shooting Guide](install/Troubleshooting.md) + +Optional +- [Community Guide for Production Debian Setup](install/Production-Debian.md) #### Configuration and Management - [System Console Settings](install/Configuration-Settings.md) - [GitLab SSO Configuration](integrations/Single-Sign-On/Gitlab.md) -- [Mattermost Release Numbering Scheme](install/Release-Numbering.md) +- [Mattermost Release Numbering and Schedule](install/Release-Numbering.md) + +#### System Upgrades +Procedures for upgrading the Mattermost server +- [Mattermost Release Numbering and Schedule](install/Release-Numbering.md) +- [Upgrade Guide](install/Upgrade-Guide.md) ## Developer Documentation -- [Code Contribution Guidelines](developer/Code-Contribution-Guidelines.md) +- [Code Contribution Guidelines](https://github.com/mattermost/platform/blob/master/CONTRIBUTING.md) - [Developer Machine Setup](developer/Setup.md) - [Mattermost Style Guide](developer/Style-Guide.md) - [API Overview](developer/API.md) - [Incoming Webhooks](integrations/webhooks/Incoming-Webhooks.md) + - [Outgoing Webhooks](integrations/webhooks/Outgoing-Webhooks.md) + - [Web Service API](developer/API-Web-Service.md) ## Help diff --git a/web/react/components/posts_view_container.jsx b/web/react/components/posts_view_container.jsx index 761664602..6cdf69402 100644 --- a/web/react/components/posts_view_container.jsx +++ b/web/react/components/posts_view_container.jsx @@ -85,11 +85,6 @@ export default class PostsViewContainer extends React.Component { const channels = this.state.channels.slice(); const channelId = ChannelStore.getCurrentId(); - // Has the channel really changed? - if (channelId === channels[this.state.currentChannelIndex]) { - return; - } - PostStore.clearUnseenDeletedPosts(channelId); let lastViewed = Number.MAX_VALUE; diff --git a/web/react/components/rhs_root_post.jsx b/web/react/components/rhs_root_post.jsx index 21e52b438..e3b023841 100644 --- a/web/react/components/rhs_root_post.jsx +++ b/web/react/components/rhs_root_post.jsx @@ -9,6 +9,7 @@ var utils = require('../utils/utils.jsx'); var FileAttachmentList = require('./file_attachment_list.jsx'); var twemoji = require('twemoji'); var Constants = require('../utils/constants.jsx'); +const PostBodyAdditionalContent = require('./post_body_additional_content.jsx'); export default class RhsRootPost extends React.Component { constructor(props) { @@ -180,6 +181,9 @@ export default class RhsRootPost extends React.Component { onClick={TextFormatting.handleClick} dangerouslySetInnerHTML={{__html: TextFormatting.formatText(post.message)}} /> + <PostBodyAdditionalContent + post={post} + /> {fileAttachment} </div> </div> diff --git a/web/react/components/search_autocomplete.jsx b/web/react/components/search_autocomplete.jsx index 736919697..d245c6bac 100644 --- a/web/react/components/search_autocomplete.jsx +++ b/web/react/components/search_autocomplete.jsx @@ -189,7 +189,16 @@ export default class SearchAutocomplete extends React.Component { channels = channels.filter((channel) => channel.type !== 'D'); } - channels.sort((a, b) => a.name.localeCompare(b.name)); + channels.sort((a, b) => { + // put public channels first and then sort alphabebetically + if (a.type === b.type) { + return a.name.localeCompare(b.name); + } else if (a.type === Constants.OPEN_CHANNEL) { + return -1; + } + + return 1; + }); suggestions = channels; } else if (mode === 'users') { @@ -289,7 +298,7 @@ export default class SearchAutocomplete extends React.Component { key='public-channel-divider' className='search-autocomplete__divider' > - {'Public ' + Utils.getChannelTerm(Constants.OPEN_CHANNEL) + 's'} + <span>{'Public ' + Utils.getChannelTerm(Constants.OPEN_CHANNEL) + 's'}</span> </div> ); suggestions = suggestions.concat(publicChannels.map(this.renderChannelSuggestion)); @@ -302,7 +311,7 @@ export default class SearchAutocomplete extends React.Component { key='private-channel-divider' className='search-autocomplete__divider' > - {'Private ' + Utils.getChannelTerm(Constants.PRIVATE_CHANNEL) + 's'} + <span>{'Private ' + Utils.getChannelTerm(Constants.PRIVATE_CHANNEL) + 's'}</span> </div> ); suggestions = suggestions.concat(privateChannels.map(this.renderChannelSuggestion)); diff --git a/web/react/utils/markdown.jsx b/web/react/utils/markdown.jsx index 374caf6dc..ee63b8689 100644 --- a/web/react/utils/markdown.jsx +++ b/web/react/utils/markdown.jsx @@ -94,7 +94,7 @@ class MattermostMarkdownRenderer extends marked.Renderer { if (title) { out += ' title="' + title + '"'; } - out += ' onload="window.markdownImageLoaded(this)" class="markdown-inline-img"'; + out += ' onload="window.markdownImageLoaded(this)" onerror="window.markdownImageLoaded(this)" class="markdown-inline-img"'; out += this.options.xhtml ? '/>' : '>'; return out; } diff --git a/web/react/utils/utils.jsx b/web/react/utils/utils.jsx index 8052c000c..38f91b35f 100644 --- a/web/react/utils/utils.jsx +++ b/web/react/utils/utils.jsx @@ -513,7 +513,7 @@ export function applyTheme(theme) { changeCss('#post-list .post-list-holder-by-time', 'background:' + theme.centerChannelBg, 1); changeCss('#post-create', 'background:' + theme.centerChannelBg, 1); changeCss('.date-separator .separator__text, .new-separator .separator__text', 'background:' + theme.centerChannelBg, 1); - changeCss('.post-image__column .post-image__details', 'background:' + theme.centerChannelBg, 1); + changeCss('.post-image__column .post-image__details, .search-help-popover .search-autocomplete__divider span', 'background:' + theme.centerChannelBg, 1); changeCss('.sidebar--right, .dropdown-menu, .popover, .tip-overlay', 'background:' + theme.centerChannelBg, 1); changeCss('.popover.bottom>.arrow:after', 'border-bottom-color:' + theme.centerChannelBg, 1); changeCss('.popover.right>.arrow:after, .tip-overlay.tip-overlay--sidebar .arrow, .tip-overlay.tip-overlay--header .arrow', 'border-right-color:' + theme.centerChannelBg, 1); @@ -541,11 +541,12 @@ export function applyTheme(theme) { changeCss('.channel-header #member_popover', 'color:' + changeOpacity(theme.centerChannelColor, 0.8), 1); changeCss('.custom-textarea, .custom-textarea:focus, .preview-container .preview-div, .post-image__column .post-image__details, .sidebar--right .sidebar-right__body, .markdown__table th, .markdown__table td, .command-box, .modal .modal-content, .settings-modal .settings-table .settings-content .divider-light, .webhooks__container, .dropdown-menu, .modal .modal-header, .popover, .mentions--top .mentions-box', 'border-color:' + changeOpacity(theme.centerChannelColor, 0.2), 1); changeCss('.popover.bottom>.arrow', 'border-bottom-color:' + changeOpacity(theme.centerChannelColor, 0.25), 1); + changeCss('.search-help-popover .search-autocomplete__divider span', 'color:' + changeOpacity(theme.centerChannelColor, 0.7), 1); changeCss('.popover.right>.arrow', 'border-right-color:' + changeOpacity(theme.centerChannelColor, 0.25), 1); changeCss('.popover.left>.arrow', 'border-left-color:' + changeOpacity(theme.centerChannelColor, 0.25), 1); changeCss('.popover.top>.arrow', 'border-top-color:' + changeOpacity(theme.centerChannelColor, 0.25), 1); changeCss('.command-name, .popover .popover-title', 'border-color:' + changeOpacity(theme.centerChannelColor, 0.2), 1); - changeCss('.dropdown-menu .divider', 'background:' + theme.centerChannelColor, 1); + changeCss('.dropdown-menu .divider, .search-help-popover .search-autocomplete__divider:before', 'background:' + theme.centerChannelColor, 1); changeCss('.custom-textarea', 'color:' + theme.centerChannelColor, 1); changeCss('.post-image__column', 'border-color:' + changeOpacity(theme.centerChannelColor, 0.2), 2); changeCss('.post-image__column .post-image__details', 'color:' + theme.centerChannelColor, 2); diff --git a/web/sass-files/sass/partials/_markdown.scss b/web/sass-files/sass/partials/_markdown.scss index 241377252..8b0a32704 100644 --- a/web/sass-files/sass/partials/_markdown.scss +++ b/web/sass-files/sass/partials/_markdown.scss @@ -8,11 +8,14 @@ margin-left: 4px; } } -.markdown-inline-img { - -moz-force-broken-image-icon: 1; - max-height: 500px; - height: 500px; +#post-list { + .markdown-inline-img { + -moz-force-broken-image-icon: 1; + max-height: 500px; + height: 500px; + } } + .post-body { hr { height: 4px; diff --git a/web/sass-files/sass/partials/_popover.scss b/web/sass-files/sass/partials/_popover.scss index 430813e63..7d98935d5 100644 --- a/web/sass-files/sass/partials/_popover.scss +++ b/web/sass-files/sass/partials/_popover.scss @@ -36,10 +36,36 @@ } } + .search-autocomplete__divider { + margin: 10px 0 5px; + line-height: 21px; + position: relative; + &:first-child { + margin-top: 5px; + } + span { + display: inline-block; + padding-right: 10px; + background: #fff; + z-index: 5; + position: relative; + } + &:before { + content: ""; + position: absolute; + width: 100%; + height: 1px; + background: #ddd; + top: 10px; + left: 0; + @include opacity(0.2); + } + } + .search-autocomplete__item { cursor: pointer; padding: 6px 8px; - margin: 3px 0; + margin: 3px 0 0 5px; @include border-radius(2px); white-space: nowrap; overflow: hidden; diff --git a/web/sass-files/sass/partials/_post.scss b/web/sass-files/sass/partials/_post.scss index b57c51242..36f6f445e 100644 --- a/web/sass-files/sass/partials/_post.scss +++ b/web/sass-files/sass/partials/_post.scss @@ -674,7 +674,7 @@ body.ios { width: 20%; float: right; img { - height: 75px; + max-height: 75px; max-width: 100%; } } |