forked from treehouse/mastodon
Merge branch 'master' into glitch-soc/merge-upstream
commit
5717f75340
|
@ -177,8 +177,7 @@ jobs:
|
||||||
steps:
|
steps:
|
||||||
- *attach_workspace
|
- *attach_workspace
|
||||||
- run: bundle exec i18n-tasks check-normalized
|
- run: bundle exec i18n-tasks check-normalized
|
||||||
- run: bundle exec i18n-tasks unused
|
- run: bundle exec i18n-tasks unused -l en
|
||||||
- run: bundle exec i18n-tasks missing -t plural
|
|
||||||
- run: bundle exec i18n-tasks check-consistent-interpolations
|
- run: bundle exec i18n-tasks check-consistent-interpolations
|
||||||
|
|
||||||
workflows:
|
workflows:
|
||||||
|
|
|
@ -52,7 +52,9 @@ Bug reports and feature suggestions can be submitted to [GitHub Issues](https://
|
||||||
|
|
||||||
## Translations
|
## Translations
|
||||||
|
|
||||||
You can submit translations via pull request.
|
You can submit translations via [Crowdin](https://crowdin.com/project/mastodon). They are periodically merged into the codebase.
|
||||||
|
|
||||||
|
[![Crowdin](https://d322cqt584bo4o.cloudfront.net/mastodon/localized.svg)][crowdin]
|
||||||
|
|
||||||
## Pull requests
|
## Pull requests
|
||||||
|
|
||||||
|
|
|
@ -61,6 +61,7 @@ class ComposeForm extends ImmutablePureComponent {
|
||||||
onPickEmoji: PropTypes.func.isRequired,
|
onPickEmoji: PropTypes.func.isRequired,
|
||||||
showSearch: PropTypes.bool,
|
showSearch: PropTypes.bool,
|
||||||
anyMedia: PropTypes.bool,
|
anyMedia: PropTypes.bool,
|
||||||
|
singleColumn: PropTypes.bool,
|
||||||
};
|
};
|
||||||
|
|
||||||
static defaultProps = {
|
static defaultProps = {
|
||||||
|
@ -116,7 +117,7 @@ class ComposeForm extends ImmutablePureComponent {
|
||||||
}
|
}
|
||||||
|
|
||||||
handleFocus = () => {
|
handleFocus = () => {
|
||||||
if (this.composeForm) {
|
if (this.composeForm && !this.props.singleColumn) {
|
||||||
this.composeForm.scrollIntoView();
|
this.composeForm.scrollIntoView();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,7 @@ const ComposePanel = () => (
|
||||||
<div className='compose-panel'>
|
<div className='compose-panel'>
|
||||||
<SearchContainer openInRoute />
|
<SearchContainer openInRoute />
|
||||||
<NavigationContainer />
|
<NavigationContainer />
|
||||||
<ComposeFormContainer />
|
<ComposeFormContainer singleColumn />
|
||||||
<LinkFooter withHotkeys />
|
<LinkFooter withHotkeys />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
74
boxfile.yml
74
boxfile.yml
|
@ -64,8 +64,9 @@ deploy.config:
|
||||||
- |-
|
- |-
|
||||||
if [[ "${ES_ENABLED}" != "false" ]]
|
if [[ "${ES_ENABLED}" != "false" ]]
|
||||||
then
|
then
|
||||||
bundle exec rake chewy:deploy
|
bin/tootctl search deploy
|
||||||
fi
|
fi
|
||||||
|
- bin/tootctl cache clear
|
||||||
|
|
||||||
|
|
||||||
web.web:
|
web.web:
|
||||||
|
@ -120,77 +121,6 @@ worker.sidekiq:
|
||||||
- public/system
|
- public/system
|
||||||
|
|
||||||
|
|
||||||
worker.cron_only:
|
|
||||||
start: sleep 365d
|
|
||||||
|
|
||||||
writable_dirs:
|
|
||||||
- tmp
|
|
||||||
|
|
||||||
log_watch:
|
|
||||||
rake: 'log/production.log'
|
|
||||||
|
|
||||||
network_dirs:
|
|
||||||
data.storage:
|
|
||||||
- public/system
|
|
||||||
|
|
||||||
cron:
|
|
||||||
# 20:00 (8 pm), server time: send out the daily digest emails to everyone
|
|
||||||
# who opted to receive one
|
|
||||||
- id: send_digest_emails
|
|
||||||
schedule: '00 20 * * *'
|
|
||||||
command: 'bundle exec rake mastodon:emails:digest'
|
|
||||||
|
|
||||||
# 00:10 (ten past midnight), server time: remove local copies of remote
|
|
||||||
# users' media once they are older than a certain age (use NUM_DAYS evar to
|
|
||||||
# change this from the default of 7 days)
|
|
||||||
- id: clear_remote_media
|
|
||||||
schedule: '10 00 * * *'
|
|
||||||
command: 'bundle exec rake mastodon:media:remove_remote'
|
|
||||||
|
|
||||||
# 00:20 (twenty past midnight), server time: remove subscriptions to remote
|
|
||||||
# users that nobody follows locally (anymore)
|
|
||||||
- id: clear_unfollowed_subs
|
|
||||||
schedule: '20 00 * * *'
|
|
||||||
command: 'bundle exec rake mastodon:push:clear'
|
|
||||||
|
|
||||||
# 00:30 (half past midnight), server time: update local copies of remote
|
|
||||||
# users' avatars to match whatever they currently have set on their profile
|
|
||||||
- id: update_remote_avatars
|
|
||||||
schedule: '30 00 * * *'
|
|
||||||
command: 'bundle exec rake mastodon:media:redownload_avatars'
|
|
||||||
|
|
||||||
############################################################################
|
|
||||||
# This task is one you might want to enable, or might not. It keeps disk
|
|
||||||
# usage low, but makes "shadow bans" (scenarios where the user is silenced,
|
|
||||||
# but not intended to be made aware that the silencing has occurred) much
|
|
||||||
# more difficult to put in place, as users would then notice their media is
|
|
||||||
# vanishing on a regular basis. Enable it if you aren't worried about users
|
|
||||||
# knowing they've been silenced (on the instance level), and want to save
|
|
||||||
# disk space. Leave it disabled otherwise.
|
|
||||||
############################################################################
|
|
||||||
# # 00:00 (midnight), server time: remove media posted by silenced users
|
|
||||||
# - id: clear_silenced_media
|
|
||||||
# schedule: '00 00 * * *'
|
|
||||||
# command: 'bundle exec rake mastodon:media:remove_silenced'
|
|
||||||
|
|
||||||
############################################################################
|
|
||||||
# The following two tasks can be uncommented to automatically open and close
|
|
||||||
# registrations on a schedule. The format of 'schedule' is a standard cron
|
|
||||||
# time expression: minute hour day month day-of-week; search for "cron
|
|
||||||
# time expressions" for more info on how to set these up. The examples here
|
|
||||||
# open registration only from 8 am to 4 pm, server time.
|
|
||||||
############################################################################
|
|
||||||
# # 08:00 (8 am), server time: open registrations so new users can join
|
|
||||||
# - id: open_registrations
|
|
||||||
# schedule: '00 08 * * *'
|
|
||||||
# command: 'bundle exec rake mastodon:settings:open_registrations'
|
|
||||||
#
|
|
||||||
# # 16:00 (4 pm), server time: close registrations so new users *can't* join
|
|
||||||
# - id: close_registrations
|
|
||||||
# schedule: '00 16 * * *'
|
|
||||||
# command: 'bundle exec rake mastodon:settings:close_registrations'
|
|
||||||
|
|
||||||
|
|
||||||
data.db:
|
data.db:
|
||||||
image: nanobox/postgresql:9.6
|
image: nanobox/postgresql:9.6
|
||||||
|
|
||||||
|
|
|
@ -10,10 +10,13 @@ http {
|
||||||
sendfile on;
|
sendfile on;
|
||||||
|
|
||||||
gzip on;
|
gzip on;
|
||||||
gzip_http_version 1.0;
|
|
||||||
gzip_proxied any;
|
|
||||||
gzip_min_length 500;
|
|
||||||
gzip_disable "MSIE [1-6]\.";
|
gzip_disable "MSIE [1-6]\.";
|
||||||
|
gzip_vary on;
|
||||||
|
gzip_proxied any;
|
||||||
|
gzip_comp_level 6;
|
||||||
|
gzip_buffers 16 8k;
|
||||||
|
gzip_min_length 500;
|
||||||
|
gzip_http_version 1.1;
|
||||||
gzip_types text/plain text/xml text/javascript text/css text/comma-separated-values application/xml+rss application/xml application/x-javascript application/json application/javascript application/atom+xml;
|
gzip_types text/plain text/xml text/javascript text/css text/comma-separated-values application/xml+rss application/xml application/x-javascript application/json application/javascript application/atom+xml;
|
||||||
|
|
||||||
# Proxy upstream to the puma process
|
# Proxy upstream to the puma process
|
||||||
|
@ -36,9 +39,12 @@ http {
|
||||||
# Listen on port 8080
|
# Listen on port 8080
|
||||||
listen 8080;
|
listen 8080;
|
||||||
|
|
||||||
|
keepalive_timeout 70;
|
||||||
|
client_max_body_size 80M;
|
||||||
|
|
||||||
root /app/public;
|
root /app/public;
|
||||||
|
|
||||||
client_max_body_size 80M;
|
add_header Strict-Transport-Security "max-age=31536000";
|
||||||
|
|
||||||
location / {
|
location / {
|
||||||
try_files $uri @rails;
|
try_files $uri @rails;
|
||||||
|
@ -47,6 +53,10 @@ http {
|
||||||
# Proxy connections to rails
|
# Proxy connections to rails
|
||||||
location @rails {
|
location @rails {
|
||||||
proxy_set_header Host $host;
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto https;
|
||||||
|
proxy_set_header Proxy "";
|
||||||
proxy_pass_header Server;
|
proxy_pass_header Server;
|
||||||
|
|
||||||
proxy_pass http://rails;
|
proxy_pass http://rails;
|
||||||
|
@ -62,6 +72,10 @@ http {
|
||||||
# Proxy connections to node
|
# Proxy connections to node
|
||||||
location /api/v1/streaming {
|
location /api/v1/streaming {
|
||||||
proxy_set_header Host $host;
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto https;
|
||||||
|
proxy_set_header Proxy "";
|
||||||
|
|
||||||
proxy_pass http://node;
|
proxy_pass http://node;
|
||||||
proxy_buffering off;
|
proxy_buffering off;
|
||||||
|
|
|
@ -10,10 +10,13 @@ http {
|
||||||
sendfile on;
|
sendfile on;
|
||||||
|
|
||||||
gzip on;
|
gzip on;
|
||||||
gzip_http_version 1.1;
|
|
||||||
gzip_proxied any;
|
|
||||||
gzip_min_length 500;
|
|
||||||
gzip_disable "MSIE [1-6]\.";
|
gzip_disable "MSIE [1-6]\.";
|
||||||
|
gzip_vary on;
|
||||||
|
gzip_proxied any;
|
||||||
|
gzip_comp_level 6;
|
||||||
|
gzip_buffers 16 8k;
|
||||||
|
gzip_min_length 500;
|
||||||
|
gzip_http_version 1.1;
|
||||||
gzip_types text/plain text/xml text/javascript text/css text/comma-separated-values application/xml+rss application/xml application/x-javascript application/json application/javascript application/atom+xml;
|
gzip_types text/plain text/xml text/javascript text/css text/comma-separated-values application/xml+rss application/xml application/x-javascript application/json application/javascript application/atom+xml;
|
||||||
|
|
||||||
# Proxy upstream to the node process
|
# Proxy upstream to the node process
|
||||||
|
@ -31,11 +34,13 @@ http {
|
||||||
# Listen on port 8080
|
# Listen on port 8080
|
||||||
listen 8080;
|
listen 8080;
|
||||||
|
|
||||||
add_header Strict-Transport-Security "max-age=31536000";
|
keepalive_timeout 70;
|
||||||
# add_header Content-Security-Policy "style-src 'self' 'unsafe-inline'; script-src 'self'; object-src 'self'; img-src data: https:; media-src data: https:; connect-src 'self' wss://<%= ENV["LOCAL_DOMAIN"] %>; upgrade-insecure-requests";
|
client_max_body_size 80M;
|
||||||
|
|
||||||
root /app/public;
|
root /app/public;
|
||||||
|
|
||||||
|
add_header Strict-Transport-Security "max-age=31536000";
|
||||||
|
|
||||||
location / {
|
location / {
|
||||||
try_files $uri @node;
|
try_files $uri @node;
|
||||||
}
|
}
|
||||||
|
@ -43,6 +48,10 @@ http {
|
||||||
# Proxy connections to node
|
# Proxy connections to node
|
||||||
location @node {
|
location @node {
|
||||||
proxy_set_header Host $host;
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto https;
|
||||||
|
proxy_set_header Proxy "";
|
||||||
|
|
||||||
proxy_pass http://node;
|
proxy_pass http://node;
|
||||||
proxy_buffering off;
|
proxy_buffering off;
|
||||||
|
|
|
@ -10,10 +10,13 @@ http {
|
||||||
sendfile on;
|
sendfile on;
|
||||||
|
|
||||||
gzip on;
|
gzip on;
|
||||||
gzip_http_version 1.0;
|
|
||||||
gzip_proxied any;
|
|
||||||
gzip_min_length 500;
|
|
||||||
gzip_disable "MSIE [1-6]\.";
|
gzip_disable "MSIE [1-6]\.";
|
||||||
|
gzip_vary on;
|
||||||
|
gzip_proxied any;
|
||||||
|
gzip_comp_level 6;
|
||||||
|
gzip_buffers 16 8k;
|
||||||
|
gzip_min_length 500;
|
||||||
|
gzip_http_version 1.1;
|
||||||
gzip_types text/plain text/xml text/javascript text/css text/comma-separated-values application/xml+rss application/xml application/x-javascript application/json application/javascript application/atom+xml;
|
gzip_types text/plain text/xml text/javascript text/css text/comma-separated-values application/xml+rss application/xml application/x-javascript application/json application/javascript application/atom+xml;
|
||||||
|
|
||||||
# Proxy upstream to the puma process
|
# Proxy upstream to the puma process
|
||||||
|
@ -31,12 +34,12 @@ http {
|
||||||
# Listen on port 8080
|
# Listen on port 8080
|
||||||
listen 8080;
|
listen 8080;
|
||||||
|
|
||||||
add_header Strict-Transport-Security "max-age=31536000";
|
keepalive_timeout 70;
|
||||||
# add_header Content-Security-Policy "style-src 'self' 'unsafe-inline'; script-src 'self'; object-src 'self'; img-src data: https:; media-src data: https:; connect-src 'self' wss://<%= ENV["LOCAL_DOMAIN"] %>; upgrade-insecure-requests";
|
client_max_body_size 80M;
|
||||||
|
|
||||||
root /app/public;
|
root /app/public;
|
||||||
|
|
||||||
client_max_body_size 80M;
|
add_header Strict-Transport-Security "max-age=31536000";
|
||||||
|
|
||||||
location / {
|
location / {
|
||||||
try_files $uri @rails;
|
try_files $uri @rails;
|
||||||
|
@ -44,17 +47,23 @@ http {
|
||||||
|
|
||||||
location /sw.js {
|
location /sw.js {
|
||||||
add_header Cache-Control "public, max-age=0";
|
add_header Cache-Control "public, max-age=0";
|
||||||
|
add_header Strict-Transport-Security "max-age=31536000";
|
||||||
try_files $uri @rails;
|
try_files $uri @rails;
|
||||||
}
|
}
|
||||||
|
|
||||||
location ~ ^/(emoji|packs|system/media_attachments/files|system/accounts/avatars) {
|
location ~ ^/(emoji|packs|system/media_attachments/files|system/accounts/avatars) {
|
||||||
add_header Cache-Control "public, max-age=31536000, immutable";
|
add_header Cache-Control "public, max-age=31536000, immutable";
|
||||||
|
add_header Strict-Transport-Security "max-age=31536000";
|
||||||
try_files $uri @rails;
|
try_files $uri @rails;
|
||||||
}
|
}
|
||||||
|
|
||||||
# Proxy connections to rails
|
# Proxy connections to rails
|
||||||
location @rails {
|
location @rails {
|
||||||
proxy_set_header Host $host;
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto https;
|
||||||
|
proxy_set_header Proxy "";
|
||||||
proxy_pass_header Server;
|
proxy_pass_header Server;
|
||||||
|
|
||||||
proxy_pass http://rails;
|
proxy_pass http://rails;
|
||||||
|
@ -66,7 +75,10 @@ http {
|
||||||
|
|
||||||
proxy_cache CACHE;
|
proxy_cache CACHE;
|
||||||
proxy_cache_valid 200 7d;
|
proxy_cache_valid 200 7d;
|
||||||
|
proxy_cache_valid 410 24h;
|
||||||
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
|
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
|
||||||
|
add_header Strict-Transport-Security "max-age=31536000";
|
||||||
|
add_header X-Cached $upstream_cache_status;
|
||||||
|
|
||||||
tcp_nodelay on;
|
tcp_nodelay on;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue