&& make install \
&& libtool --finish /usr/local/lib \
&& cd /mastodon \
- && rm -rf /tmp/* /var/cache/apk/*
+ && rm -rf /tmp/*
COPY Gemfile Gemfile.lock package.json yarn.lock .yarnclean /mastodon/
+COPY stack-fix.c /lib
+RUN gcc -shared -fPIC /lib/stack-fix.c -o /lib/stack-fix.so
+RUN rm /lib/stack-fix.c
RUN bundle config build.nokogiri --use-system-libraries --with-iconv-lib=/usr/local/lib --with-iconv-include=/usr/local/include \
&& bundle install -j$(getconf _NPROCESSORS_ONLN) --deployment --without test development \
before_action :store_current_location
before_action :authenticate_resource_owner!
+ before_action :set_pack
+ before_action :set_body_classes
include Localized
# frozen_string_literal: true
-class Settings::SessionsController < Settings::BaseController
+# Intentionally does not inherit from BaseController
+class Settings::SessionsController < ApplicationController
+ before_action :authenticate_user!
before_action :set_session, only: :destroy
def destroy
"navigation_bar.favourites": "Favourites",
"navigation_bar.filters": "Muted words",
"navigation_bar.follow_requests": "Follow requests",
- "navigation_bar.info": "About this instance",
+ "navigation_bar.info": "About this server",
"navigation_bar.keyboard_shortcuts": "Hotkeys",
"navigation_bar.lists": "Lists",
+ "navigation_bar.misc": "Misc",
"navigation_bar.logout": "Logout",
"navigation_bar.mutes": "Muted users",
"navigation_bar.personal": "Personal",
class MediaAttachment < ApplicationRecord
self.inheritance_column = nil
- enum type: [:image, :gifv, :video, :unknown]
+ enum type: [:image, :gifv, :video, :audio, :unknown]
- IMAGE_FILE_EXTENSIONS = ['.jpg', '.jpeg', '.png', '.gif'].freeze
+ IMAGE_FILE_EXTENSIONS = ['.jpg', '.jpeg', '.png', '.gif', '.webp'].freeze
VIDEO_FILE_EXTENSIONS = ['.webm', '.mp4', '.m4v', '.mov'].freeze
+ AUDIO_FILE_EXTENSIONS = ['.mp3', '.m4a', '.wav', '.ogg'].freeze
- IMAGE_MIME_TYPES = ['image/jpeg', 'image/png', 'image/gif'].freeze
+ IMAGE_MIME_TYPES = ['image/jpeg', 'image/png', 'image/gif', 'image/webp'].freeze
VIDEO_MIME_TYPES = ['video/webm', 'video/mp4', 'video/quicktime'].freeze
VIDEO_CONVERTIBLE_MIME_TYPES = ['video/webm', 'video/quicktime'].freeze
+ AUDIO_MIME_TYPES = ['audio/mpeg', 'audio/mp4', 'audio/vnd.wav', 'audio/wav', 'audio/x-wav', 'audio/x-wave', 'audio/ogg',].freeze
IMAGE_STYLES = {
original: {
processors: ->(f) { file_processors f },
convert_options: { all: '-quality 90 -strip' }
- validates_attachment_content_type :file, content_type: IMAGE_MIME_TYPES + VIDEO_MIME_TYPES
+ validates_attachment_content_type :file, content_type: IMAGE_MIME_TYPES + VIDEO_MIME_TYPES + AUDIO_MIME_TYPES
- validates_attachment_size :file, less_than: IMAGE_LIMIT, unless: :video?
- validates_attachment_size :file, less_than: VIDEO_LIMIT, if: :video?
+ validates_attachment_size :file, less_than: IMAGE_LIMIT, unless: :video_or_gifv?
+ validates_attachment_size :file, less_than: VIDEO_LIMIT, if: :video_or_gifv?
remotable_attachment :file, VIDEO_LIMIT
include Attachmentable
def remove_from_media
return unless @status.public_visibility?
- Redis.current.publish('timeline:public:media', @payload)
- Redis.current.publish('timeline:public:local:media', @payload) if @status.local?
+ redis.publish('timeline:public:media', @payload)
+ redis.publish('timeline:public:local:media', @payload) if @status.local?
end
-
- def redis
- Redis.current
- end
+
+ def remove_from_direct
+ @mentions.each do |mention|
+ Redis.current.publish("timeline:direct:#{mention.account.id}", @payload) if mention.account.local?
+ end
+ Redis.current.publish("timeline:direct:#{@account.id}", @payload) if @account.local?
+ end
end
desc_html: Modify the look with CSS loaded on every page
title: Custom CSS
hero:
- desc_html: Displayed on the frontpage. At least 600x100px recommended. When not set, falls back to instance thumbnail
+ desc_html: Displayed on the frontpage. At least 600x100px recommended. When not set, falls back to server thumbnail
title: Hero image
+ hide_followers_count:
+ desc_html: Do not show followers count on user profiles
+ title: Hide followers count
mascot:
desc_html: Displayed on multiple pages. At least 293×205px recommended. When not set, falls back to default mascot
title: Mascot image
development: Development
edit_profile: Edit profile
export: Data export
+ featured_tags: Featured hashtags
+ flavours: Flavours
followers: Authorized followers
import: Import
migrate: Account migration
development: 開発
edit_profile: プロフィールを編集
export: データのエクスポート
- followers: 信頼済みのインスタンス
+ featured_tags: 注目のハッシュタグ
+ flavours: フレーバー
+ followers: 信頼済みのサーバー
import: データのインポート
migrate: アカウントの引っ越し
notifications: 通知
development: Tworzenie aplikacji
edit_profile: Edytuj profil
export: Eksportowanie danych
+ featured_tags: Wyróżnione hashtagi
+ flavours: Odmiany
followers: Autoryzowani śledzący
import: Importowanie danych
migrate: Migracja konta
setting_hide_network: Who you follow and who follows you will not be shown on your profile
setting_noindex: Affects your public profile and status pages
setting_show_application: The application you use to toot will be displayed in the detailed view of your toots
- setting_theme: Affects how Mastodon looks when you're logged in from any device.
+ setting_skin: Reskins the selected Mastodon flavour
username: Your username will be unique on %{domain}
whole_word: When the keyword or phrase is alphanumeric only, it will only be applied if it matches the whole word
+ featured_tag:
+ name: 'You might want to use one of these:'
imports:
- data: CSV file exported from another Mastodon instance
+ data: CSV file exported from another Mastodon server
sessions:
otp: 'Enter the two-factor code generated by your phone app or use one of your recovery codes:'
user:
setting_display_media_show_all: Zawsze pokazuj zawartość multimedialną jako wrażliwą
setting_hide_network: Informacje o tym, kto Cię śledzi i kogo śledzisz nie będą widoczne
setting_noindex: Wpływa na widoczność strony profilu i Twoich wpisów
- setting_theme: Zmienia wygląd Mastodona po zalogowaniu z dowolnego urządzenia.
+ setting_show_application: W informacjach o wpisie będzie widoczna informacja o aplikacji, z której został wysłany
+ setting_skin: Zmienia wygląd używanej odmiany Mastodona
username: Twoja nazwa użytkownika będzie niepowtarzalna na %{domain}
whole_word: Jeśli słowo lub fraza składa się jedynie z liter lub cyfr, filtr będzie zastosowany tylko do pełnych wystąpień
+ featured_tag:
+ name: 'Sugerujemy użycie jednego z następujących:'
imports:
data: Plik CSV wyeksportowany z innej instancji Mastodona
sessions:
setting_hide_network: Ukryj swoją sieć
setting_noindex: Nie indeksuj mojego profilu w wyszukiwarkach internetowych
setting_reduce_motion: Ogranicz ruch w animacjach
+ setting_show_application: Informuj o aplikacji z której wysłano wpisy
+ setting_skin: Motyw
setting_system_font_ui: Używaj domyślnej czcionki systemu
- setting_theme: Motyw strony
setting_unfollow_modal: Pytaj o potwierdzenie przed cofnięciem śledzenia
severity: Priorytet
type: Importowane dane