diff --git a/.nvmrc b/.nvmrc
index bf77d54968..f77856a6f1 100644
--- a/.nvmrc
+++ b/.nvmrc
@@ -1 +1 @@
-4.2
+4.3.1
diff --git a/.travis.yml b/.travis.yml
index 5d18669e31..dd5a397986 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,6 +1,6 @@
language: node_js
node_js:
- - '4.2'
+ - '4.3.1'
before_install:
- "npm install -g npm@3"
- "npm install -g gulp"
diff --git a/common/locales/en/communityGuidelines.json b/common/locales/en/communityGuidelines.json
index 911f5863d1..feffb3b022 100644
--- a/common/locales/en/communityGuidelines.json
+++ b/common/locales/en/communityGuidelines.json
@@ -31,7 +31,7 @@
"commGuidePara013": "In a community as big as Habitica, users come and go, and sometimes a moderator needs to lay down their noble mantle and relax. The following are Moderators Emeritus. They no longer act with the power of a Moderator, but we would still like to honor their work!",
"commGuidePara014": "Moderators Emeritus:",
"commGuideHeadingPublicSpaces": "Public Spaces In Habitica",
- "commGuidePara015": "Habitica has two kinds of social spaces: public, and private. Public spaces include the Tavern, Public Guilds, GitHub, Trello, and the Wiki. Private spaces are Private Guilds, party chat, and Private Messages.",
+ "commGuidePara015": "Habitica has two kinds of social spaces: public, and private. Public spaces include the Tavern, Public Guilds, GitHub, Trello, and the Wiki. Private spaces are Private Guilds, party chat, and Private Messages. All Display Names must comply with the public space guidelines. To change your Display Name, go on the website to User > Profile and click on the \"Edit\" button.",
"commGuidePara016": "When navigating the public spaces in Habitica, there are some general rules to keep everyone safe and happy. These should be easy for adventurers like you!",
"commGuidePara017": "Respect each other. Be courteous, kind, friendly, and helpful. Remember: Habiticans come from all backgrounds and have had wildly divergent experiences. This is part of what makes Habitica so cool! Building a community means respecting and celebrating our differences as well as our similarities. Here are some easy ways to respect each other:",
@@ -43,9 +43,9 @@
"commGuideList02F": "Comply immediately with any Mod request to cease a discussion or move it to the Back Corner. Last words, parting shots and conclusive zingers should all be delivered (courteously) at your \"table\" in the Back Corner, if allowed.",
"commGuideList02G": "Take time to reflect instead of responding in anger if someone tells you that something you said or did made them uncomfortable. There is great strength in being able to sincerely apologize to someone. If you feel that the way they responded to you was inappropriate, contact a mod rather than calling them out on it publicly.",
"commGuideList02H": "Divisive/contentious conversations should be reported to mods. If you feel that a conversation is getting heated, overly emotional, or hurtful, cease to engage. Instead, email leslie@habitica.com to let us know about it. It's our job to keep you safe.",
- "commGuideList02I": "Do not spam. Spamming may include, but is not limited to: posting the same comment or query in multiple places, posting links without explanation or context, posting nonsensical messages, or posting many messages in a row. Repeatedly begging for gems or a subscription may also be considered spamming.",
+ "commGuideList02I": "Do not spam. Spamming may include, but is not limited to: posting the same comment or query in multiple places, posting links without explanation or context, posting nonsensical messages, or posting many messages in a row. Asking for gems or a subscription in any of the chat spaces or via Private Message is also considered spamming.",
- "commGuidePara019": "In private spaces, users have more freedom to discuss whatever topics they would like, but they still may not violate the Terms and Conditions, including posting any discriminatory, violent, or threatening content.",
+ "commGuidePara019": "In private spaces, users have more freedom to discuss whatever topics they would like, but they still may not violate the Terms and Conditions, including posting any discriminatory, violent, or threatening content. Note that, because Challenge names appear in the winner's public profile, ALL Challenge names must obey the public space guidelines, even if they appear in a private space.",
"commGuidePara020": "Private Messages (PMs) have some additional guidelines. If someone has blocked you, do not contact them elsewhere to ask them to unblock you. Additionally, you should not send PMs to someone asking for support (since public answers to support questions are helpful to the community). Finally, do not send anyone PMs begging for a gift of gems or a subscription, as this can be considered spamming.",
"commGuidePara021": "Furthermore, some public spaces in Habitica have additional guidelines.",
"commGuideHeadingTavern": "The Tavern",
diff --git a/common/script/content/faq.js b/common/script/content/faq.js
index bacad9c119..511e60a434 100644
--- a/common/script/content/faq.js
+++ b/common/script/content/faq.js
@@ -2,7 +2,13 @@ import t from './translation';
const NUMBER_OF_QUESTIONS = 12;
-export const questions = [];
+let faq = {
+ questions: [],
+ stillNeedHelp: {
+ ios: t('iosFaqStillNeedHelp'),
+ web: t('webFaqStillNeedHelp'),
+ },
+};
for (let i = 0; i <= NUMBER_OF_QUESTIONS; i++) {
let question = {
@@ -11,10 +17,7 @@ for (let i = 0; i <= NUMBER_OF_QUESTIONS; i++) {
web: t(`webFaqAnswer${i}`),
};
- questions.push(question);
+ faq.questions.push(question);
}
-export const stillNeedHelp = {
- ios: t('iosFaqStillNeedHelp'),
- web: t('webFaqStillNeedHelp'),
-};
+module.exports = faq;
diff --git a/package.json b/package.json
index 562be914f3..41456b94b3 100644
--- a/package.json
+++ b/package.json
@@ -93,7 +93,7 @@
},
"private": true,
"engines": {
- "node": "^4.2.1",
+ "node": "^4.3.1",
"npm": "^3.3.10"
},
"scripts": {
diff --git a/website/public/css/game-pane.styl b/website/public/css/game-pane.styl
index ea2729910d..300653a383 100644
--- a/website/public/css/game-pane.styl
+++ b/website/public/css/game-pane.styl
@@ -52,7 +52,7 @@
color: #999
.tavern-chat, .party-chat
-
+
li
padding-top:15px
padding-bottom:15px
@@ -112,6 +112,21 @@
padding-top:0px
padding-bottom:0px
+ blockquote
+ padding: 0 15px
+ color: #777
+ border-left: 4px solid #ddd
+ margin: 5px 0px 5px 0px
+ font-size: 14px
+ p
+ &:first-child
+ display: block
+ line-height: 1.3em
+ margin-bottom: 0.7em
+ &>:last-child
+ margin-bottom: 0
+
+
.panel-tiers
div
display: none
diff --git a/website/public/js/controllers/chatCtrl.js b/website/public/js/controllers/chatCtrl.js
index 693775579d..8ba5b2a15c 100644
--- a/website/public/js/controllers/chatCtrl.js
+++ b/website/public/js/controllers/chatCtrl.js
@@ -39,7 +39,7 @@ habitrpg.controller('ChatCtrl', ['$scope', 'Groups', 'Chat', 'User', '$http', 'A
Analytics.updateUser({'partyID':group.id,'partySize':group.memberCount});
}
if (group.privacy == 'public'){
- Analytics.track({'hitType':'event','eventCategory':'behavior','eventAction':'group chat','groupType':group.type,'privacy':group.privacy,'groupName':group.name,'message':message});
+ Analytics.track({'hitType':'event','eventCategory':'behavior','eventAction':'group chat','groupType':group.type,'privacy':group.privacy,'groupName':group.name});
} else {
Analytics.track({'hitType':'event','eventCategory':'behavior','eventAction':'group chat','groupType':group.type,'privacy':group.privacy});
}
diff --git a/website/public/js/controllers/guildsCtrl.js b/website/public/js/controllers/guildsCtrl.js
index 4c9259eaf8..df6b001448 100644
--- a/website/public/js/controllers/guildsCtrl.js
+++ b/website/public/js/controllers/guildsCtrl.js
@@ -54,7 +54,7 @@ habitrpg.controller("GuildsCtrl", ['$scope', 'Groups', 'User', 'Challenges', '$r
$scope.clickLeave = function(group, $event){
$scope.selectedGroup = group;
- $scope.popoverEl = $($event.target);
+ $scope.popoverEl = $($event.target).closest('.btn');
var html, title;
Challenges.Challenge.query(function(challenges) {
challenges = _.pluck(_.filter(challenges, function(c) {
diff --git a/website/public/js/controllers/partyCtrl.js b/website/public/js/controllers/partyCtrl.js
index cb53ac3eb5..ea0f3fa8bd 100644
--- a/website/public/js/controllers/partyCtrl.js
+++ b/website/public/js/controllers/partyCtrl.js
@@ -50,7 +50,7 @@ habitrpg.controller("PartyCtrl", ['$rootScope','$scope','Groups','Chat','User','
$scope.clickLeave = function(group, $event){
Analytics.track({'hitType':'event','eventCategory':'button','eventAction':'click','eventLabel':'Leave Party'});
$scope.selectedGroup = group;
- $scope.popoverEl = $($event.target);
+ $scope.popoverEl = $($event.target).closest('.btn');
var html, title;
Challenges.Challenge.query(function(challenges) {
challenges = _.pluck(_.filter(challenges, function(c) {
diff --git a/website/public/js/controllers/rootCtrl.js b/website/public/js/controllers/rootCtrl.js
index 744583004d..eacc0d2cce 100644
--- a/website/public/js/controllers/rootCtrl.js
+++ b/website/public/js/controllers/rootCtrl.js
@@ -49,7 +49,7 @@ habitrpg.controller("RootCtrl", ['$scope', '$rootScope', '$location', 'User', '$
}
// styling helpers
- $scope.userLevelStyle = function(user,style){
+ $rootScope.userLevelStyle = function(user,style){
style = style || '';
var npc = (user && user.backer && user.backer.npc) ? user.backer.npc : '';
var level = (user && user.contributor && user.contributor.level) ? user.contributor.level : '';
diff --git a/website/src/middlewares/apiThrottle.js b/website/src/middlewares/apiThrottle.js
index 5a863c1fb7..15f3ad5666 100644
--- a/website/src/middlewares/apiThrottle.js
+++ b/website/src/middlewares/apiThrottle.js
@@ -4,7 +4,9 @@ var limiter = require('connect-ratelimit');
var IS_PROD = nconf.get('NODE_ENV') === 'production';
module.exports = function(app) {
- if (!IS_PROD) return;
+ // TODO review later
+ // disable the rate limiter middleware
+ if (/*!IS_PROD || */true) return;
app.use(limiter({
end:false,
categories:{
@@ -19,4 +21,4 @@ module.exports = function(app) {
if (res.ratelimit.exceeded) return res.json(429,{err:'Rate limit exceeded'});
next();
});
-};
\ No newline at end of file
+};
diff --git a/website/views/options/social/chat-box.jade b/website/views/options/social/chat-box.jade
index d8f2cd1141..74fc071dfe 100644
--- a/website/views/options/social/chat-box.jade
+++ b/website/views/options/social/chat-box.jade
@@ -1,6 +1,6 @@
div.chat-form.guidelines-not-accepted(ng-if='!user.flags.communityGuidelinesAccepted')
p!=env.t('requestAcceptGuidelines', {linkStart: '', linkEnd: ''})
- .chat-controls
+ .chat-controls.clearfix
div
button.btn.btn-warning(ng-click='acceptCommunityGuidelines()')=env.t('iAcceptCommunityGuidelines')
.chat-buttons
diff --git a/website/views/options/social/tavern.jade b/website/views/options/social/tavern.jade
index c2d7aef7b9..ed7e4ef6c3 100644
--- a/website/views/options/social/tavern.jade
+++ b/website/views/options/social/tavern.jade
@@ -83,7 +83,7 @@
a.label.label-contributor-1(ng-click='toggleUserTier($event)')=env.t('tier') + ' 1 (' + env.t('friend') + ')'
div
p
- span.achievement.achievement-firefox
+ span.achievement.achievement-boot
!=env.t('friendFirst')
tr
td
diff --git a/website/views/static/community-guidelines.jade b/website/views/static/community-guidelines.jade
index 9ba1854d12..fd87bc7d6d 100644
--- a/website/views/static/community-guidelines.jade
+++ b/website/views/static/community-guidelines.jade
@@ -28,8 +28,8 @@ block content
p.pagemeta
=env.t('lastUpdated')
|
- =env.t('May')
- | 27, 2015
+ =env.t('February')
+ | 28, 2016
h2#welcome=env.t('commGuideHeadingWelcome')
.clearfix
img.pull-left(src='/community-guidelines-images/intro.png', alt='')