Merge tag 'v3.5.5+hometown-1.0.8' into hometown-4.0-1.0.8-merge
This commit is contained in:
commit
a98750aac0
|
@ -22,6 +22,11 @@ class AccountsController < ApplicationController
|
||||||
format.rss do
|
format.rss do
|
||||||
expires_in 1.minute, public: true
|
expires_in 1.minute, public: true
|
||||||
|
|
||||||
|
if @account&.user&.setting_norss == true
|
||||||
|
@statuses = []
|
||||||
|
next
|
||||||
|
end
|
||||||
|
|
||||||
limit = params[:limit].present? ? [params[:limit].to_i, PAGE_SIZE_MAX].min : PAGE_SIZE
|
limit = params[:limit].present? ? [params[:limit].to_i, PAGE_SIZE_MAX].min : PAGE_SIZE
|
||||||
@statuses = filtered_statuses.without_reblogs.without_local_only.limit(limit)
|
@statuses = filtered_statuses.without_reblogs.without_local_only.limit(limit)
|
||||||
@statuses = cache_collection(@statuses, Status)
|
@statuses = cache_collection(@statuses, Status)
|
||||||
|
|
|
@ -47,6 +47,7 @@ class Settings::PreferencesController < Settings::BaseController
|
||||||
:setting_disable_swiping,
|
:setting_disable_swiping,
|
||||||
:setting_system_font_ui,
|
:setting_system_font_ui,
|
||||||
:setting_noindex,
|
:setting_noindex,
|
||||||
|
:setting_norss,
|
||||||
:setting_theme,
|
:setting_theme,
|
||||||
:setting_aggregate_reblogs,
|
:setting_aggregate_reblogs,
|
||||||
:setting_show_application,
|
:setting_show_application,
|
||||||
|
|
|
@ -26,7 +26,7 @@ class StatusesCleanupController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def resource_params
|
def resource_params
|
||||||
params.require(:account_statuses_cleanup_policy).permit(:enabled, :min_status_age, :keep_direct, :keep_pinned, :keep_polls, :keep_media, :keep_self_fav, :keep_self_bookmark, :min_favs, :min_reblogs)
|
params.require(:account_statuses_cleanup_policy).permit(:enabled, :min_status_age, :keep_direct, :keep_pinned, :keep_polls, :keep_media, :keep_self_fav, :keep_local, :keep_self_bookmark, :min_favs, :min_reblogs)
|
||||||
end
|
end
|
||||||
|
|
||||||
def set_body_classes
|
def set_body_classes
|
||||||
|
|
|
@ -535,7 +535,7 @@ class Status extends ImmutablePureComponent {
|
||||||
onCollapsedToggle={this.handleCollapsedToggle}
|
onCollapsedToggle={this.handleCollapsedToggle}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
{media}
|
{status.get('activity_pub_type') === 'Article' ? null : media}
|
||||||
|
|
||||||
<StatusActionBar scrollKey={scrollKey} status={status} account={account} onFilter={matchedFilters ? this.handleFilterClick : null} {...other} />
|
<StatusActionBar scrollKey={scrollKey} status={status} account={account} onFilter={matchedFilters ? this.handleFilterClick : null} {...other} />
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -276,7 +276,7 @@ class StatusContent extends React.PureComponent {
|
||||||
|
|
||||||
{mentionsPlaceholder}
|
{mentionsPlaceholder}
|
||||||
|
|
||||||
<div tabIndex={!hidden ? 0 : null} className={`status__content__text ${!hidden ? 'status__content__text--visible' : ''} translate`} lang={lang} dangerouslySetInnerHTML={content} />
|
<div tabIndex={!hidden ? 0 : null} className={`status__content__text ${!hidden ? 'status__content__text--visible' : ''} ${status.get('activity_pub_type') === 'Article' ? 'article-type' : ''} translate`} lang={lang} dangerouslySetInnerHTML={content} />
|
||||||
{!hidden && poll}
|
{!hidden && poll}
|
||||||
{!hidden && translateButton}
|
{!hidden && translateButton}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -3,6 +3,7 @@ import PropTypes from 'prop-types';
|
||||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||||
import ImmutablePureComponent from 'react-immutable-pure-component';
|
import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||||
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
|
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
|
||||||
|
import Toggle from 'react-toggle';
|
||||||
import IconButton from 'mastodon/components/icon_button';
|
import IconButton from 'mastodon/components/icon_button';
|
||||||
import Icon from 'mastodon/components/icon';
|
import Icon from 'mastodon/components/icon';
|
||||||
import AutosuggestInput from 'mastodon/components/autosuggest_input';
|
import AutosuggestInput from 'mastodon/components/autosuggest_input';
|
||||||
|
@ -155,6 +156,12 @@ class PollForm extends ImmutablePureComponent {
|
||||||
<ul>
|
<ul>
|
||||||
{options.map((title, i) => <Option title={title} key={i} index={i} onChange={onChangeOption} onRemove={onRemoveOption} isPollMultiple={isMultiple} onToggleMultiple={this.handleToggleMultiple} autoFocus={i === autoFocusIndex} {...other} />)}
|
{options.map((title, i) => <Option title={title} key={i} index={i} onChange={onChangeOption} onRemove={onRemoveOption} isPollMultiple={isMultiple} onToggleMultiple={this.handleToggleMultiple} autoFocus={i === autoFocusIndex} {...other} />)}
|
||||||
</ul>
|
</ul>
|
||||||
|
<div className='is-multiple-toggle'>
|
||||||
|
<Toggle className='is-multiple-checkbox' checked={isMultiple} onChange={this.handleToggleMultiple}/>
|
||||||
|
<span className='is-multiple-toggle__label'>
|
||||||
|
<FormattedMessage id='poll.is_multiple' defaultMessage='Multiple choice' />
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div className='poll__footer'>
|
<div className='poll__footer'>
|
||||||
<button type='button' disabled={options.size >= 4} className='button button-secondary' onClick={this.handleAddOption}><Icon id='plus' /> <FormattedMessage {...messages.add_option} /></button>
|
<button type='button' disabled={options.size >= 4} className='button button-secondary' onClick={this.handleAddOption}><Icon id='plus' /> <FormattedMessage {...messages.add_option} /></button>
|
||||||
|
|
|
@ -42,7 +42,7 @@ class Category extends React.PureComponent {
|
||||||
|
|
||||||
switch(category) {
|
switch(category) {
|
||||||
case 'dislike':
|
case 'dislike':
|
||||||
onNextStep('thanks');
|
onNextStep('statuses');
|
||||||
break;
|
break;
|
||||||
case 'violation':
|
case 'violation':
|
||||||
onNextStep('rules');
|
onNextStep('rules');
|
||||||
|
|
|
@ -279,7 +279,7 @@ class DetailedStatus extends ImmutablePureComponent {
|
||||||
onTranslate={this.handleTranslate}
|
onTranslate={this.handleTranslate}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
{media}
|
{status.get('activity_pub_type') === 'Article' ? null : media}
|
||||||
|
|
||||||
<div className='detailed-status__meta'>
|
<div className='detailed-status__meta'>
|
||||||
<a className='detailed-status__datetime' href={`/@${status.getIn(['account', 'acct'])}\/${status.get('id')}`} target='_blank' rel='noopener noreferrer'>
|
<a className='detailed-status__datetime' href={`/@${status.getIn(['account', 'acct'])}\/${status.get('id')}`} target='_blank' rel='noopener noreferrer'>
|
||||||
|
|
|
@ -94,7 +94,6 @@ class LinkFooter extends React.PureComponent {
|
||||||
<Link to='/keyboard-shortcuts'><FormattedMessage id='footer.keyboard_shortcuts' defaultMessage='Keyboard shortcuts' /></Link>
|
<Link to='/keyboard-shortcuts'><FormattedMessage id='footer.keyboard_shortcuts' defaultMessage='Keyboard shortcuts' /></Link>
|
||||||
{' · '}
|
{' · '}
|
||||||
<a href={source_url} rel='noopener noreferrer' target='_blank'><FormattedMessage id='footer.source_code' defaultMessage='View source code' /></a>
|
<a href={source_url} rel='noopener noreferrer' target='_blank'><FormattedMessage id='footer.source_code' defaultMessage='View source code' /></a>
|
||||||
{' · '}
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
|
@ -449,6 +449,7 @@
|
||||||
"poll.vote": "Vote",
|
"poll.vote": "Vote",
|
||||||
"poll.voted": "You voted for this answer",
|
"poll.voted": "You voted for this answer",
|
||||||
"poll.votes": "{votes, plural, one {# vote} other {# votes}}",
|
"poll.votes": "{votes, plural, one {# vote} other {# votes}}",
|
||||||
|
"poll.is_multiple": "Multiple choice",
|
||||||
"poll_button.add_poll": "Add a poll",
|
"poll_button.add_poll": "Add a poll",
|
||||||
"poll_button.remove_poll": "Remove poll",
|
"poll_button.remove_poll": "Remove poll",
|
||||||
"privacy.change": "Change post privacy",
|
"privacy.change": "Change post privacy",
|
||||||
|
|
|
@ -980,6 +980,11 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.article-type {
|
||||||
|
display: inline-block;
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
.article-type img {
|
.article-type img {
|
||||||
max-width: 95%;
|
max-width: 95%;
|
||||||
}
|
}
|
||||||
|
@ -4215,6 +4220,21 @@ a.status-card.compact:hover {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Hometown: Styling for toggle for multiple choice polls
|
||||||
|
.is-multiple-toggle {
|
||||||
|
display: block;
|
||||||
|
line-height: 24px;
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.is-multiple-toggle__label {
|
||||||
|
color: $inverted-text-color;
|
||||||
|
display: inline-block;
|
||||||
|
margin-bottom: 14px;
|
||||||
|
margin-left: 8px;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
.setting-toggle {
|
.setting-toggle {
|
||||||
display: block;
|
display: block;
|
||||||
line-height: 24px;
|
line-height: 24px;
|
||||||
|
|
|
@ -165,6 +165,15 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
|
||||||
handler = Handler.new(proc)
|
handler = Handler.new(proc)
|
||||||
Ox.sax_parse(handler, @object['content'])
|
Ox.sax_parse(handler, @object['content'])
|
||||||
handler.srcs.each do |src|
|
handler.srcs.each do |src|
|
||||||
|
# Handle images where the src is formatted as "/foo/bar.png"
|
||||||
|
# we assume that the `url` field is populated which lets us infer
|
||||||
|
# the protocol and domain of the _original_ article, as though
|
||||||
|
# we were looking at it via a web browser
|
||||||
|
if src[0] == '/' && !@object['url'].nil?
|
||||||
|
site = Addressable::URI.parse(@object['url']).site
|
||||||
|
src = site + src
|
||||||
|
end
|
||||||
|
|
||||||
if skip_download?
|
if skip_download?
|
||||||
@object['content'].gsub!(src, '')
|
@object['content'].gsub!(src, '')
|
||||||
next
|
next
|
||||||
|
|
|
@ -5,6 +5,7 @@ module Settings
|
||||||
DEFAULTING_TO_UNSCOPED = %w(
|
DEFAULTING_TO_UNSCOPED = %w(
|
||||||
theme
|
theme
|
||||||
noindex
|
noindex
|
||||||
|
norss
|
||||||
).freeze
|
).freeze
|
||||||
|
|
||||||
def initialize(object)
|
def initialize(object)
|
||||||
|
|
|
@ -31,6 +31,7 @@ class UserSettingsDecorator
|
||||||
user.settings['disable_swiping'] = disable_swiping_preference if change?('setting_disable_swiping')
|
user.settings['disable_swiping'] = disable_swiping_preference if change?('setting_disable_swiping')
|
||||||
user.settings['system_font_ui'] = system_font_ui_preference if change?('setting_system_font_ui')
|
user.settings['system_font_ui'] = system_font_ui_preference if change?('setting_system_font_ui')
|
||||||
user.settings['noindex'] = noindex_preference if change?('setting_noindex')
|
user.settings['noindex'] = noindex_preference if change?('setting_noindex')
|
||||||
|
user.settings['norss'] = norss_preference if change?('setting_norss')
|
||||||
user.settings['theme'] = theme_preference if change?('setting_theme')
|
user.settings['theme'] = theme_preference if change?('setting_theme')
|
||||||
user.settings['aggregate_reblogs'] = aggregate_reblogs_preference if change?('setting_aggregate_reblogs')
|
user.settings['aggregate_reblogs'] = aggregate_reblogs_preference if change?('setting_aggregate_reblogs')
|
||||||
user.settings['show_application'] = show_application_preference if change?('setting_show_application')
|
user.settings['show_application'] = show_application_preference if change?('setting_show_application')
|
||||||
|
@ -102,6 +103,10 @@ class UserSettingsDecorator
|
||||||
boolean_cast_setting 'setting_noindex'
|
boolean_cast_setting 'setting_noindex'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def norss_preference
|
||||||
|
boolean_cast_setting 'setting_norss'
|
||||||
|
end
|
||||||
|
|
||||||
def show_application_preference
|
def show_application_preference
|
||||||
boolean_cast_setting 'setting_show_application'
|
boolean_cast_setting 'setting_show_application'
|
||||||
end
|
end
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
# keep_media :boolean default(FALSE), not null
|
# keep_media :boolean default(FALSE), not null
|
||||||
# keep_self_fav :boolean default(TRUE), not null
|
# keep_self_fav :boolean default(TRUE), not null
|
||||||
# keep_self_bookmark :boolean default(TRUE), not null
|
# keep_self_bookmark :boolean default(TRUE), not null
|
||||||
|
# keep_local :boolean default(TRUE), not null
|
||||||
# min_favs :integer
|
# min_favs :integer
|
||||||
# min_reblogs :integer
|
# min_reblogs :integer
|
||||||
# created_at :datetime not null
|
# created_at :datetime not null
|
||||||
|
@ -66,6 +67,7 @@ class AccountStatusesCleanupPolicy < ApplicationRecord
|
||||||
scope.merge!(without_poll_scope) if keep_polls?
|
scope.merge!(without_poll_scope) if keep_polls?
|
||||||
scope.merge!(without_media_scope) if keep_media?
|
scope.merge!(without_media_scope) if keep_media?
|
||||||
scope.merge!(without_self_fav_scope) if keep_self_fav?
|
scope.merge!(without_self_fav_scope) if keep_self_fav?
|
||||||
|
scope.merge!(without_local_scope) if keep_local?
|
||||||
scope.merge!(without_self_bookmark_scope) if keep_self_bookmark?
|
scope.merge!(without_self_bookmark_scope) if keep_self_bookmark?
|
||||||
|
|
||||||
scope.reorder(id: :asc).limit(limit)
|
scope.reorder(id: :asc).limit(limit)
|
||||||
|
@ -148,6 +150,10 @@ class AccountStatusesCleanupPolicy < ApplicationRecord
|
||||||
Status.where(Status.arel_table[:id].lteq(max_id))
|
Status.where(Status.arel_table[:id].lteq(max_id))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def without_local_scope
|
||||||
|
Status.where(local_only: false)
|
||||||
|
end
|
||||||
|
|
||||||
def without_self_fav_scope
|
def without_self_fav_scope
|
||||||
Status.where('NOT EXISTS (SELECT * FROM favourites fav WHERE fav.account_id = statuses.account_id AND fav.status_id = statuses.id)')
|
Status.where('NOT EXISTS (SELECT * FROM favourites fav WHERE fav.account_id = statuses.account_id AND fav.status_id = statuses.id)')
|
||||||
end
|
end
|
||||||
|
|
|
@ -27,6 +27,7 @@ class Form::AdminSettings
|
||||||
show_domain_blocks
|
show_domain_blocks
|
||||||
show_domain_blocks_rationale
|
show_domain_blocks_rationale
|
||||||
noindex
|
noindex
|
||||||
|
norss
|
||||||
require_invite_text
|
require_invite_text
|
||||||
media_cache_retention_period
|
media_cache_retention_period
|
||||||
content_cache_retention_period
|
content_cache_retention_period
|
||||||
|
@ -48,6 +49,7 @@ class Form::AdminSettings
|
||||||
trends
|
trends
|
||||||
trendable_by_default
|
trendable_by_default
|
||||||
noindex
|
noindex
|
||||||
|
norss
|
||||||
require_invite_text
|
require_invite_text
|
||||||
).freeze
|
).freeze
|
||||||
|
|
||||||
|
|
|
@ -132,7 +132,7 @@ class User < ApplicationRecord
|
||||||
has_many :session_activations, dependent: :destroy
|
has_many :session_activations, dependent: :destroy
|
||||||
|
|
||||||
delegate :auto_play_gif, :default_sensitive, :unfollow_modal, :boost_modal, :delete_modal,
|
delegate :auto_play_gif, :default_sensitive, :unfollow_modal, :boost_modal, :delete_modal,
|
||||||
:reduce_motion, :system_font_ui, :noindex, :theme, :display_media,
|
:reduce_motion, :system_font_ui, :noindex, :norss, :theme, :display_media,
|
||||||
:expand_spoilers, :default_language, :aggregate_reblogs, :show_application,
|
:expand_spoilers, :default_language, :aggregate_reblogs, :show_application,
|
||||||
:advanced_layout, :use_blurhash, :use_pending_items, :trends, :crop_images,
|
:advanced_layout, :use_blurhash, :use_pending_items, :trends, :crop_images,
|
||||||
:disable_swiping, :default_federation, :always_send_emails,
|
:disable_swiping, :default_federation, :always_send_emails,
|
||||||
|
|
|
@ -4,6 +4,7 @@ class REST::PreferencesSerializer < ActiveModel::Serializer
|
||||||
attribute :posting_default_privacy, key: 'posting:default:visibility'
|
attribute :posting_default_privacy, key: 'posting:default:visibility'
|
||||||
attribute :posting_default_sensitive, key: 'posting:default:sensitive'
|
attribute :posting_default_sensitive, key: 'posting:default:sensitive'
|
||||||
attribute :posting_default_language, key: 'posting:default:language'
|
attribute :posting_default_language, key: 'posting:default:language'
|
||||||
|
attribute :posting_default_federation, key: 'posting:default:federation'
|
||||||
|
|
||||||
attribute :reading_default_sensitive_media, key: 'reading:expand:media'
|
attribute :reading_default_sensitive_media, key: 'reading:expand:media'
|
||||||
attribute :reading_default_sensitive_text, key: 'reading:expand:spoilers'
|
attribute :reading_default_sensitive_text, key: 'reading:expand:spoilers'
|
||||||
|
@ -27,4 +28,8 @@ class REST::PreferencesSerializer < ActiveModel::Serializer
|
||||||
def reading_default_sensitive_text
|
def reading_default_sensitive_text
|
||||||
object.user.setting_expand_spoilers
|
object.user.setting_expand_spoilers
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def posting_default_federation
|
||||||
|
object.user.setting_default_federation
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -5,7 +5,8 @@
|
||||||
- if @account.user_prefers_noindex?
|
- if @account.user_prefers_noindex?
|
||||||
%meta{ name: 'robots', content: 'noindex, noarchive' }/
|
%meta{ name: 'robots', content: 'noindex, noarchive' }/
|
||||||
|
|
||||||
%link{ rel: 'alternate', type: 'application/rss+xml', href: @rss_url }/
|
- if !@account.user&.setting_norss
|
||||||
|
%link{ rel: 'alternate', type: 'application/rss+xml', href: @rss_url }/
|
||||||
%link{ rel: 'alternate', type: 'application/activity+json', href: ActivityPub::TagManager.instance.uri_for(@account) }/
|
%link{ rel: 'alternate', type: 'application/activity+json', href: ActivityPub::TagManager.instance.uri_for(@account) }/
|
||||||
|
|
||||||
- @account.fields.select(&:verifiable?).each do |field|
|
- @account.fields.select(&:verifiable?).each do |field|
|
||||||
|
|
|
@ -10,6 +10,9 @@
|
||||||
.fields-group
|
.fields-group
|
||||||
= f.input :setting_noindex, as: :boolean, wrapper: :with_label
|
= f.input :setting_noindex, as: :boolean, wrapper: :with_label
|
||||||
|
|
||||||
|
.fields-group
|
||||||
|
= f.input :setting_norss, as: :boolean, wrapper: :with_label
|
||||||
|
|
||||||
.fields-group
|
.fields-group
|
||||||
= f.input :setting_aggregate_reblogs, as: :boolean, wrapper: :with_label, recommended: true
|
= f.input :setting_aggregate_reblogs, as: :boolean, wrapper: :with_label, recommended: true
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,10 @@
|
||||||
.fields-row__column.fields-row__column-6.fields-group
|
.fields-row__column.fields-row__column-6.fields-group
|
||||||
= f.input :keep_media, wrapper: :with_label, label: t('statuses_cleanup.keep_media'), hint: t('statuses_cleanup.keep_media_hint')
|
= f.input :keep_media, wrapper: :with_label, label: t('statuses_cleanup.keep_media'), hint: t('statuses_cleanup.keep_media_hint')
|
||||||
|
|
||||||
|
.fields-row
|
||||||
|
.fields-row__column.fields-row__column-6.fields-group
|
||||||
|
= f.input :keep_local, wrapper: :with_label, label: t('statuses_cleanup.keep_local'), hint: t('statuses_cleanup.keep_local_hint')
|
||||||
|
|
||||||
%h4= t('statuses_cleanup.interaction_exceptions')
|
%h4= t('statuses_cleanup.interaction_exceptions')
|
||||||
|
|
||||||
.fields-row
|
.fields-row
|
||||||
|
|
|
@ -1497,6 +1497,8 @@ en:
|
||||||
interaction_exceptions_explanation: Note that there is no guarantee for posts to be deleted if they go below the favourite or boost threshold after having once gone over them.
|
interaction_exceptions_explanation: Note that there is no guarantee for posts to be deleted if they go below the favourite or boost threshold after having once gone over them.
|
||||||
keep_direct: Keep direct messages
|
keep_direct: Keep direct messages
|
||||||
keep_direct_hint: Doesn't delete any of your direct messages
|
keep_direct_hint: Doesn't delete any of your direct messages
|
||||||
|
keep_local: Keep local-only messages
|
||||||
|
keep_local_hint: Doesn't delete any of your local-only posts
|
||||||
keep_media: Keep posts with media attachments
|
keep_media: Keep posts with media attachments
|
||||||
keep_media_hint: Doesn't delete any of your posts that have media attachments
|
keep_media_hint: Doesn't delete any of your posts that have media attachments
|
||||||
keep_pinned: Keep pinned posts
|
keep_pinned: Keep pinned posts
|
||||||
|
|
|
@ -194,7 +194,7 @@ en:
|
||||||
setting_auto_play_gif: Auto-play animated GIFs
|
setting_auto_play_gif: Auto-play animated GIFs
|
||||||
setting_boost_modal: Show confirmation dialog before boosting
|
setting_boost_modal: Show confirmation dialog before boosting
|
||||||
setting_crop_images: Crop images in non-expanded posts to 16x9
|
setting_crop_images: Crop images in non-expanded posts to 16x9
|
||||||
setting_default_federation: Allow my posts to reach other instances by default
|
setting_default_federation: Allow my posts to reach other servers by default
|
||||||
setting_default_language: Posting language
|
setting_default_language: Posting language
|
||||||
setting_default_privacy: Posting privacy
|
setting_default_privacy: Posting privacy
|
||||||
setting_default_sensitive: Always mark media as sensitive
|
setting_default_sensitive: Always mark media as sensitive
|
||||||
|
@ -207,6 +207,7 @@ en:
|
||||||
setting_expand_spoilers: Always expand posts marked with content warnings
|
setting_expand_spoilers: Always expand posts marked with content warnings
|
||||||
setting_hide_network: Hide your social graph
|
setting_hide_network: Hide your social graph
|
||||||
setting_noindex: Opt-out of search engine indexing
|
setting_noindex: Opt-out of search engine indexing
|
||||||
|
setting_norss: Opt-out of an RSS feed for your public posts
|
||||||
setting_reduce_motion: Reduce motion in animations
|
setting_reduce_motion: Reduce motion in animations
|
||||||
setting_show_application: Disclose application used to send posts
|
setting_show_application: Disclose application used to send posts
|
||||||
setting_system_font_ui: Use system's default font
|
setting_system_font_ui: Use system's default font
|
||||||
|
|
|
@ -30,6 +30,7 @@ defaults: &defaults
|
||||||
show_application: true
|
show_application: true
|
||||||
system_font_ui: false
|
system_font_ui: false
|
||||||
noindex: false
|
noindex: false
|
||||||
|
norss: false
|
||||||
theme: 'default'
|
theme: 'default'
|
||||||
aggregate_reblogs: true
|
aggregate_reblogs: true
|
||||||
advanced_layout: false
|
advanced_layout: false
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
class AddKeepLocalToAccountStatusesCleanupPolicies < ActiveRecord::Migration[6.1]
|
||||||
|
def change
|
||||||
|
add_column :account_statuses_cleanup_policies, :keep_local, :boolean
|
||||||
|
change_column_default :account_statuses_cleanup_policies, :keep_local, false
|
||||||
|
end
|
||||||
|
end
|
|
@ -10,7 +10,7 @@
|
||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(version: 2022_11_04_133904) do
|
ActiveRecord::Schema.define(version: 2022_12_02_035831) do
|
||||||
|
|
||||||
# These are extensions that must be enabled in order to support this database
|
# These are extensions that must be enabled in order to support this database
|
||||||
enable_extension "plpgsql"
|
enable_extension "plpgsql"
|
||||||
|
@ -116,6 +116,7 @@ ActiveRecord::Schema.define(version: 2022_11_04_133904) do
|
||||||
t.integer "min_reblogs"
|
t.integer "min_reblogs"
|
||||||
t.datetime "created_at", precision: 6, null: false
|
t.datetime "created_at", precision: 6, null: false
|
||||||
t.datetime "updated_at", precision: 6, null: false
|
t.datetime "updated_at", precision: 6, null: false
|
||||||
|
t.boolean "keep_local", default: true, null: false
|
||||||
t.index ["account_id"], name: "index_account_statuses_cleanup_policies_on_account_id"
|
t.index ["account_id"], name: "index_account_statuses_cleanup_policies_on_account_id"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ module Mastodon
|
||||||
module_function
|
module_function
|
||||||
|
|
||||||
def major
|
def major
|
||||||
2
|
4
|
||||||
end
|
end
|
||||||
|
|
||||||
def minor
|
def minor
|
||||||
|
@ -21,7 +21,7 @@ module Mastodon
|
||||||
end
|
end
|
||||||
|
|
||||||
def suffix
|
def suffix
|
||||||
'+4.0.0'
|
'+hometown-1.1.0'
|
||||||
end
|
end
|
||||||
|
|
||||||
def to_a
|
def to_a
|
||||||
|
|
|
@ -86,9 +86,6 @@ class Sanitize
|
||||||
'rel' => 'nofollow noopener noreferrer',
|
'rel' => 'nofollow noopener noreferrer',
|
||||||
'target' => '_blank',
|
'target' => '_blank',
|
||||||
},
|
},
|
||||||
'span' => {
|
|
||||||
'class' => 'article-type',
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
|
||||||
protocols: {
|
protocols: {
|
||||||
|
|
Loading…
Reference in New Issue