summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristopher Speller <crspeller@gmail.com>2015-12-14 19:01:22 -0500
committerChristopher Speller <crspeller@gmail.com>2015-12-14 19:01:22 -0500
commit74f427fb1a5da8ccd0bbc4e4104830cfa12c70fb (patch)
treeb063683a1ec022c3ccbb2561d30734e0a9156905
parent6c7c04f38d0485dadcd7dd0ea2ba3a95bdfde448 (diff)
parentf51d45f6cba0e5a1249146afe4a1c78cf32b7598 (diff)
downloadchat-74f427fb1a5da8ccd0bbc4e4104830cfa12c70fb.tar.gz
chat-74f427fb1a5da8ccd0bbc4e4104830cfa12c70fb.tar.bz2
chat-74f427fb1a5da8ccd0bbc4e4104830cfa12c70fb.zip
Merge branch 'release-1.3'
-rw-r--r--CHANGELOG.md31
-rw-r--r--api/post.go2
-rw-r--r--docker/1.3/Dockerfile2
-rw-r--r--web/react/components/admin_console/email_settings.jsx2
-rw-r--r--web/react/components/posts_view.jsx3
-rw-r--r--web/react/components/search_results_item.jsx3
-rw-r--r--web/react/dispatcher/event_helpers.jsx13
-rw-r--r--web/sass-files/sass/partials/_base.scss1
-rw-r--r--web/sass-files/sass/partials/_post.scss1
-rw-r--r--web/sass-files/sass/partials/_responsive.scss2
-rw-r--r--web/sass-files/sass/partials/_sidebar--right.scss6
11 files changed, 41 insertions, 25 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9b50b7fc1..0bbb2be93 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,16 +1,31 @@
# Mattermost Changelog
-## UNDER DEVELOPMENT Release v1.3.0
+## Release v1.3.0
-The "UNDER DEVELOPMENT" section of the Mattermost changelog appears in the product's `master` branch to note key changes committed to master and are on their way to the next stable release. When a stable release is pushed the "UNDER DEVELOPMENT" heading is removed from the final changelog of the release.
+Release date: 2015-12-16
-- **Release candidate anticipated:** 2015-12-10
-- **Final release anticipated:** 2015-12-16
+### Release Highlights
+
+#### iOS App
+
+- New [Mattermost iOS App](https://github.com/mattermost/ios) now available for iPhone, iPad, and iPod Touch
+- New [Mattermost Push Notification Service](https://github.com/mattermost/push-proxy) to relay notifications to custom iOS applications
+
+#### Search Upgrades
+
+- Jump to search results in archives using new message permalinks
+- It's easier to find what you're looking for with improved auto-complete in search
+
+#### Advanced Formatting
+
+- Express more in symbols, with new emoji auto-complete
+- Express more in numbers, with rendering of mathematical expressions using Latex (start code blocks with ```latex)
+- Personalize your look with new custom font settings under **Account Settings** > **Display** > **Display Font**
### New Features
Authentication
-- Documented unofficial GitHub SSO support using GitLab UI
+- Added unofficial SSO support for GitHub.com and GitHub Enterprise using GitLab UI
Archives
- Added permalink feature that lets users link to a post in the message archives
@@ -35,13 +50,12 @@ Performance
- Refactored the center channel
Messaging & Comments
-- Added "Help" link for messaging
-- Removed the @all mention
- Added Markdown support for task lists
+- Added "Help" link for messaging
- Added ability to preview a Markdown message before sending (enabled via Account Settings -> Advanced -> Preview pre-release features)
Onboarding
-- Added various small improvements to the tutorial
+- Minor upgrades to tutorial
User Interface
- Visually combined sequential messages from the same user
@@ -52,6 +66,7 @@ User Interface
#### Bug Fixes
+- Removed the @all mention to keep users from accidentally spamming team sites
- Fixed bug where the member list only showed "20" members for channels with more than 20 members
- Fixed bug where the channel sidebar didn't order correctly on Postgres databases
- Fixed bug where search results did not highlight when searching with quotation marks, wildcard, or in: and from: modifiers
diff --git a/api/post.go b/api/post.go
index a102cdf4d..b9bd2c052 100644
--- a/api/post.go
+++ b/api/post.go
@@ -1062,5 +1062,7 @@ func searchPosts(c *Context, w http.ResponseWriter, r *http.Request) {
}
}
+ w.Header().Set("Cache-Control", "no-cache, no-store, must-revalidate")
+ w.Header().Set("Expires", "0")
w.Write([]byte(posts.ToJson()))
}
diff --git a/docker/1.3/Dockerfile b/docker/1.3/Dockerfile
index 55b69673a..4a25198af 100644
--- a/docker/1.3/Dockerfile
+++ b/docker/1.3/Dockerfile
@@ -34,7 +34,7 @@ VOLUME /var/lib/mysql
WORKDIR /mattermost
# Copy over files
-ADD https://github.com/mattermost/platform/releases/download/v1.3.0-rc1/mattermost.tar.gz /
+ADD https://github.com/mattermost/platform/releases/download/v1.3.0/mattermost.tar.gz /
RUN tar -zxvf /mattermost.tar.gz --strip-components=1 && rm /mattermost.tar.gz
ADD config_docker.json /
ADD docker-entry.sh /
diff --git a/web/react/components/admin_console/email_settings.jsx b/web/react/components/admin_console/email_settings.jsx
index 238ace3da..42e3507d6 100644
--- a/web/react/components/admin_console/email_settings.jsx
+++ b/web/react/components/admin_console/email_settings.jsx
@@ -586,7 +586,7 @@ export default class EmailSettings extends React.Component {
onChange={this.handleChange}
disabled={!this.state.sendPushNotifications}
/>
- <p className='help-text'>{'Location of the push notification server.'}</p>
+ <p className='help-text'>{'Location of Mattermost push notification service you can set up behind your firewall using https://github.com/mattermost/push-proxy. For testing you can use https://push.mattermost.com, which connects to the sample Mattermost iOS app in the public Apple AppStore. Please do not use test service for production deployments.'}</p>
</div>
</div>
diff --git a/web/react/components/posts_view.jsx b/web/react/components/posts_view.jsx
index b7ac92672..cc4f5e138 100644
--- a/web/react/components/posts_view.jsx
+++ b/web/react/components/posts_view.jsx
@@ -233,7 +233,8 @@ export default class PostsView extends React.Component {
window.requestAnimationFrame(() => {
// If separator exists scroll to it. Otherwise scroll to bottom.
if (this.refs.newMessageSeparator) {
- this.refs.newMessageSeparator.scrollIntoView();
+ var objDiv = this.refs.postlist;
+ objDiv.scrollTop = this.refs.newMessageSeparator.offsetTop; //scrolls node to top of Div
} else {
this.refs.postlist.scrollTop = this.refs.postlist.scrollHeight;
}
diff --git a/web/react/components/search_results_item.jsx b/web/react/components/search_results_item.jsx
index f71abf971..f235cac0a 100644
--- a/web/react/components/search_results_item.jsx
+++ b/web/react/components/search_results_item.jsx
@@ -31,8 +31,7 @@ export default class SearchResultsItem extends React.Component {
handleFocusRHSClick(e) {
e.preventDefault();
-
- EventHelpers.emitPostFocusRightHandSideEvent(this.props.post);
+ EventHelpers.emitPostFocusRightHandSideFromSearch(this.props.post, this.props.isMentionSearch);
}
render() {
diff --git a/web/react/dispatcher/event_helpers.jsx b/web/react/dispatcher/event_helpers.jsx
index 297367ce9..a03923c1a 100644
--- a/web/react/dispatcher/event_helpers.jsx
+++ b/web/react/dispatcher/event_helpers.jsx
@@ -4,11 +4,11 @@
import AppDispatcher from '../dispatcher/app_dispatcher.jsx';
import ChannelStore from '../stores/channel_store.jsx';
import PostStore from '../stores/post_store.jsx';
+import SearchStore from '../stores/search_store.jsx';
import Constants from '../utils/constants.jsx';
const ActionTypes = Constants.ActionTypes;
import * as AsyncClient from '../utils/async_client.jsx';
import * as Client from '../utils/client.jsx';
-import * as Utils from '../utils/utils.jsx';
export function emitChannelClickEvent(channel) {
AsyncClient.getChannels(true);
@@ -39,28 +39,27 @@ export function emitPostFocusEvent(postId) {
);
}
-export function emitPostFocusRightHandSideEvent(post) {
+export function emitPostFocusRightHandSideFromSearch(post, isMentionSearch) {
Client.getPost(
post.channel_id,
post.id,
(data) => {
AppDispatcher.handleServerAction({
type: ActionTypes.RECIEVED_POST_SELECTED,
- post_list: data
+ post_list: data,
+ from_search: SearchStore.getSearchTerm()
});
AppDispatcher.handleServerAction({
type: ActionTypes.RECIEVED_SEARCH,
- results: null
+ results: null,
+ is_mention_search: isMentionSearch
});
},
(err) => {
AsyncClient.dispatchError(err, 'getPost');
}
);
-
- var postChannel = ChannelStore.get(post.channel_id);
- Utils.switchChannel(postChannel);
}
export function emitLoadMorePostsEvent() {
diff --git a/web/sass-files/sass/partials/_base.scss b/web/sass-files/sass/partials/_base.scss
index 61ad186e0..4f9e1d5c7 100644
--- a/web/sass-files/sass/partials/_base.scss
+++ b/web/sass-files/sass/partials/_base.scss
@@ -9,6 +9,7 @@ body {
-webkit-font-smoothing: antialiased;
background: $body-bg;
position: relative;
+ width: 100%;
height: 100%;
&.white {
background: #fff;
diff --git a/web/sass-files/sass/partials/_post.scss b/web/sass-files/sass/partials/_post.scss
index 3ec1c4434..fbebb4e98 100644
--- a/web/sass-files/sass/partials/_post.scss
+++ b/web/sass-files/sass/partials/_post.scss
@@ -209,6 +209,7 @@ body.ios {
@include flex(1 1 auto);
position: relative;
overflow-y: hidden;
+ height: 100%;
.post-list-holder-by-time {
background: #fff;
diff --git a/web/sass-files/sass/partials/_responsive.scss b/web/sass-files/sass/partials/_responsive.scss
index 66aaede8d..2aa130fa9 100644
--- a/web/sass-files/sass/partials/_responsive.scss
+++ b/web/sass-files/sass/partials/_responsive.scss
@@ -54,9 +54,7 @@
@media screen and (max-width: 960px) {
.sidebar--right {
- width: 400px;
z-index: 5;
- right: 0;
@include translateX(100%);
&.move--left {
diff --git a/web/sass-files/sass/partials/_sidebar--right.scss b/web/sass-files/sass/partials/_sidebar--right.scss
index f6c8d37a9..e39f7730b 100644
--- a/web/sass-files/sass/partials/_sidebar--right.scss
+++ b/web/sass-files/sass/partials/_sidebar--right.scss
@@ -1,17 +1,17 @@
@charset "UTF-8";
.sidebar--right {
- position: absolute;
+ position: fixed;
width: 400px;
height: 100%;
right: 0px;
padding: 0;
background: #fff;
@include single-transition(transform, 0.5s, ease);
- right: -400px;
+ @include translateX(400px);
&.move--left {
- right: 0;
+ @include translateX(0);
}
.post-body {