diff options
Diffstat (limited to 'app')
68 files changed, 341 insertions, 99 deletions
diff --git a/app/controllers/api/v1/accounts/follower_accounts_controller.rb b/app/controllers/api/v1/accounts/follower_accounts_controller.rb index 68952de89..0daa3fe1e 100644 --- a/app/controllers/api/v1/accounts/follower_accounts_controller.rb +++ b/app/controllers/api/v1/accounts/follower_accounts_controller.rb @@ -25,7 +25,7 @@ class Api::V1::Accounts::FollowerAccountsController < Api::BaseController end def hide_results? - @account.suspended? || (@account.hides_followers? && current_account&.id != @account.id) || (current_account && @account.blocking?(current_account)) + !user_signed_in? || @account.suspended? || (@account.hides_followers? && current_account&.id != @account.id) || (current_account && @account.blocking?(current_account)) end def default_accounts diff --git a/app/controllers/api/v1/accounts/following_accounts_controller.rb b/app/controllers/api/v1/accounts/following_accounts_controller.rb index 0a4d2ae7b..abac80557 100644 --- a/app/controllers/api/v1/accounts/following_accounts_controller.rb +++ b/app/controllers/api/v1/accounts/following_accounts_controller.rb @@ -25,7 +25,7 @@ class Api::V1::Accounts::FollowingAccountsController < Api::BaseController end def hide_results? - @account.suspended? || (@account.hides_following? && current_account&.id != @account.id) || (current_account && @account.blocking?(current_account)) + !user_signed_in? || @account.suspended? || (@account.hides_following? && current_account&.id != @account.id) || (current_account && @account.blocking?(current_account)) end def default_accounts diff --git a/app/controllers/api/v1/accounts/relationships_controller.rb b/app/controllers/api/v1/accounts/relationships_controller.rb index 1d3992a28..865529e25 100644 --- a/app/controllers/api/v1/accounts/relationships_controller.rb +++ b/app/controllers/api/v1/accounts/relationships_controller.rb @@ -5,10 +5,14 @@ class Api::V1::Accounts::RelationshipsController < Api::BaseController before_action :require_user! def index - accounts = Account.where(id: account_ids).select('id') - # .where doesn't guarantee that our results are in the same order - # we requested them, so return the "right" order to the requestor. - @accounts = accounts.index_by(&:id).values_at(*account_ids).compact + if user_signed_in? + accounts = Account.where(id: account_ids).select('id') + # .where doesn't guarantee that our results are in the same order + # we requested them, so return the "right" order to the requestor. + @accounts = accounts.index_by(&:id).values_at(*account_ids).compact + else + @accounts = Account.none + end render json: @accounts, each_serializer: REST::RelationshipSerializer, relationships: relationships end diff --git a/app/controllers/api/v1/accounts/search_controller.rb b/app/controllers/api/v1/accounts/search_controller.rb index 3061fcb7e..aa8745931 100644 --- a/app/controllers/api/v1/accounts/search_controller.rb +++ b/app/controllers/api/v1/accounts/search_controller.rb @@ -12,6 +12,7 @@ class Api::V1::Accounts::SearchController < Api::BaseController private def account_search + return Account.none unless user_signed_in? AccountSearchService.new.call( params[:q], current_account, diff --git a/app/controllers/api/v1/accounts/statuses_controller.rb b/app/controllers/api/v1/accounts/statuses_controller.rb index 7ed48cf65..58e668dca 100644 --- a/app/controllers/api/v1/accounts/statuses_controller.rb +++ b/app/controllers/api/v1/accounts/statuses_controller.rb @@ -22,6 +22,7 @@ class Api::V1::Accounts::StatusesController < Api::BaseController end def cached_account_statuses + return Status.none unless user_signed_in? cache_collection_paginated_by_id( AccountStatusesFilter.new(@account, current_account, params).results, Status, diff --git a/app/controllers/api/v1/instances/domain_blocks_controller.rb b/app/controllers/api/v1/instances/domain_blocks_controller.rb index 37a6906fb..e81c4de28 100644 --- a/app/controllers/api/v1/instances/domain_blocks_controller.rb +++ b/app/controllers/api/v1/instances/domain_blocks_controller.rb @@ -1,8 +1,6 @@ # frozen_string_literal: true class Api::V1::Instances::DomainBlocksController < Api::BaseController - skip_before_action :require_authenticated_user!, unless: :whitelist_mode? - before_action :require_enabled_api! before_action :set_domain_blocks diff --git a/app/helpers/languages_helper.rb b/app/helpers/languages_helper.rb index bbf0a97fc..c367ae1cd 100644 --- a/app/helpers/languages_helper.rb +++ b/app/helpers/languages_helper.rb @@ -206,8 +206,12 @@ module LanguagesHelper zba: ['Balaibalan', 'باليبلن'].freeze, zgh: ['Standard Moroccan Tamazight', 'ⵜⴰⵎⴰⵣⵉⵖⵜ'].freeze, }.freeze + + CUSTOM = { + 'en-cafe': ['English (Plural Cafe)', 'English (Plural Cafe)'].freeze, + }.freeze - SUPPORTED_LOCALES = {}.merge(ISO_639_1).merge(ISO_639_3).freeze + SUPPORTED_LOCALES = {}.merge(ISO_639_1).merge(ISO_639_3).merge(CUSTOM).freeze # For ISO-639-1 and ISO-639-3 language codes, we have their official # names, but for some translations, we need the names of the diff --git a/app/javascript/flavours/glitch/features/getting_started/components/trends.jsx b/app/javascript/flavours/glitch/features/getting_started/components/trends.jsx index d7e222d71..d45934d6e 100644 --- a/app/javascript/flavours/glitch/features/getting_started/components/trends.jsx +++ b/app/javascript/flavours/glitch/features/getting_started/components/trends.jsx @@ -43,7 +43,7 @@ export default class Trends extends ImmutablePureComponent { </Link> </h4> - {trends.take(3).map(hashtag => <Hashtag key={hashtag.get('name')} hashtag={hashtag} />)} + {trends.take(1).map(hashtag => <Hashtag key={hashtag.get('name')} hashtag={hashtag} />)} </div> ); } diff --git a/app/javascript/flavours/glitch/features/ui/components/onboarding_modal.jsx b/app/javascript/flavours/glitch/features/ui/components/onboarding_modal.jsx index 29eb91a6b..7c9105c58 100644 --- a/app/javascript/flavours/glitch/features/ui/components/onboarding_modal.jsx +++ b/app/javascript/flavours/glitch/features/ui/components/onboarding_modal.jsx @@ -142,17 +142,18 @@ const PageSix = ({ admin, domain }) => { <h1><FormattedMessage id='onboarding.page_six.almost_done' defaultMessage='Almost done...' /></h1> {adminSection} <p> - <FormattedMessage - id='onboarding.page_six.github' - defaultMessage='{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. Glitchsoc is free open-source software. You can report bugs, request features, or contribute to the code on {github}.' - values={{ - domain, - fork: <a href='https://en.wikipedia.org/wiki/Fork_(software_development)' target='_blank' rel='noopener'>fork</a>, - Mastodon: <a href='https://github.com/mastodon/mastodon' target='_blank' rel='noopener'>Mastodon</a>, - github: <a href={source_url} target='_blank' rel='noopener'>GitHub</a>, - }} - /> - </p> + <FormattedMessage + id='onboarding.page_six.github' + defaultMessage='{domain} runs on GlitchCafé, which is based on {Glitchsoc}, a friendly {fork} of {Mastodon}. GlitchCafé is fully compatible with all Mastodon apps and instances. GlitchCafé is free open-source software. You can view the source code on {git} and report bugs, request features, or contribute to the code by emailing {admin}.' + values={{ + domain, + fork: <a href='https://en.wikipedia.org/wiki/Fork_(software_development)' target='_blank' rel='noopener'>fork</a>, + Mastodon: <a href='https://github.com/mastodon/mastodon' target='_blank' rel='noopener'>Mastodon</a>, + Glitchsoc: <a href='https://github.com/glitch-soc/mastodon' target='_blank' rel='noopener'>GlitchSoc</a>, + git: <a href='https://git.starfall.systems/pluralcafe/mastodon/' rel='noopener noreferrer' target='_blank'>our Git repository</a>, + admin: <a href='mailto://admin@plural.cafe' rel='noopener noreferrer'>admin@plural.cafe</a> }} + /> + </p> <p><FormattedMessage id='onboarding.page_six.apps_available' defaultMessage='There are {apps} available for iOS, Android and other platforms.' values={{ domain, apps: <a href='https://joinmastodon.org/apps' target='_blank' rel='noopener'><FormattedMessage id='onboarding.page_six.various_app' defaultMessage='mobile apps' /></a> }} /></p> <p><em><FormattedMessage id='onboarding.page_six.appetoot' defaultMessage='Bon Appetoot!' /></em></p> </div> diff --git a/app/javascript/flavours/glitch/features/ui/containers/status_list_container.js b/app/javascript/flavours/glitch/features/ui/containers/status_list_container.js index 3cd0707f2..ddb991d54 100644 --- a/app/javascript/flavours/glitch/features/ui/containers/status_list_container.js +++ b/app/javascript/flavours/glitch/features/ui/containers/status_list_container.js @@ -31,8 +31,6 @@ const makeGetStatusIds = (pending = false) => createSelector([ const statusForId = statuses.get(id); let showStatus = true; - if (statusForId.get('account') === me) return true; - if (columnSettings.getIn(['shows', 'reblog']) === false) { showStatus = showStatus && statusForId.get('reblog') === null; } diff --git a/app/javascript/flavours/glitch/locales/en-cafe.json b/app/javascript/flavours/glitch/locales/en-cafe.json new file mode 100644 index 000000000..f418dac1b --- /dev/null +++ b/app/javascript/flavours/glitch/locales/en-cafe.json @@ -0,0 +1,201 @@ +{ + "about.fork_disclaimer": "Glitch-soc is free open source software forked from Mastodon.", + "account.add_account_note": "Add note for @{name}", + "account.disclaimer_full": "Information below may reflect the user's profile incompletely.", + "account.follows": "Follows", + "account.joined": "Joined {date}", + "account.suspended_disclaimer_full": "This user has been suspended by a moderator.", + "account.view_full_profile": "View full profile", + "account_note.cancel": "Cancel", + "account_note.edit": "Edit", + "account_note.glitch_placeholder": "No comment provided", + "account_note.save": "Save", + "advanced_options.icon_title": "Advanced options", + "advanced_options.local-only.long": "Do not post to other instances", + "advanced_options.local-only.short": "Local-only", + "advanced_options.local-only.tooltip": "This post is local-only", + "advanced_options.threaded_mode.long": "Automatically opens a reply on posting", + "advanced_options.threaded_mode.short": "Threaded mode", + "advanced_options.threaded_mode.tooltip": "Threaded mode enabled", + "boost_modal.missing_description": "This toot contains some media without description", + "column.favourited_by": "Favourited by", + "column.heading": "Misc", + "column.reblogged_by": "Boosted by", + "column.subheading": "Miscellaneous options", + "column_header.profile": "Profile", + "column_subheading.lists": "Lists", + "column_subheading.navigation": "Navigation", + "community.column_settings.allow_local_only": "Show local-only toots", + "compose.attach": "Attach...", + "compose.attach.doodle": "Draw something", + "compose.attach.upload": "Upload a file", + "compose.content-type.html": "HTML", + "compose.content-type.markdown": "Markdown", + "compose.content-type.plain": "Plain text", + "compose_form.poll.multiple_choices": "Allow multiple choices", + "compose_form.poll.single_choice": "Allow one choice", + "compose_form.spoiler": "Hide text behind warning", + "confirmation_modal.do_not_ask_again": "Do not ask for confirmation again", + "confirmations.deprecated_settings.confirm": "Use Mastodon preferences", + "confirmations.deprecated_settings.message": "Some of the glitch-soc device-specific {app_settings} you are using have been replaced by Mastodon {preferences} and will be overriden:", + "confirmations.missing_media_description.confirm": "Send anyway", + "confirmations.missing_media_description.edit": "Edit media", + "confirmations.missing_media_description.message": "At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.", + "confirmations.unfilter.author": "Author", + "confirmations.unfilter.confirm": "Show", + "confirmations.unfilter.edit_filter": "Edit filter", + "confirmations.unfilter.filters": "Matching {count, plural, one {filter} other {filters}}", + "content-type.change": "Content type", + "direct.group_by_conversations": "Group by conversation", + "endorsed_accounts_editor.endorsed_accounts": "Featured accounts", + "favourite_modal.combo": "You can press {combo} to skip this next time", + "getting_started.onboarding": "Show me around", + "getting_started.open_source_notice": "GlitchCafé is free open source software, based on {Glitchsoc} which is a friendly fork of {Mastodon}. You can see our source code on {github} and report bugs, request features, or contribute by emailing {admin}", + "home.column_settings.advanced": "Advanced", + "home.column_settings.filter_regex": "Filter out by regular expressions", + "home.column_settings.show_direct": "Show DMs", + "home.settings": "Column settings", + "keyboard_shortcuts.bookmark": "to bookmark", + "keyboard_shortcuts.secondary_toot": "to send toot using secondary privacy setting", + "keyboard_shortcuts.toggle_collapse": "to collapse/uncollapse toots", + "layout.auto": "Auto", + "layout.desktop": "Desktop", + "layout.hint.auto": "Automatically chose layout based on “Enable advanced web interface” setting and screen size.", + "layout.hint.desktop": "Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.hint.single": "Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.", + "layout.single": "Mobile", + "media_gallery.sensitive": "Sensitive", + "moved_to_warning": "This account is marked as moved to {moved_to_link}, and may thus not accept new follows.", + "navigation_bar.app_settings": "App settings", + "navigation_bar.featured_users": "Featured users", + "navigation_bar.info": "Extended information", + "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts", + "navigation_bar.misc": "Misc", + "notification.markForDeletion": "Mark for deletion", + "notification_purge.btn_all": "Select\nall", + "notification_purge.btn_apply": "Clear\nselected", + "notification_purge.btn_invert": "Invert\nselection", + "notification_purge.btn_none": "Select\nnone", + "notification_purge.start": "Enter notification cleaning mode", + "notifications.marked_clear": "Clear selected notifications", + "notifications.marked_clear_confirmation": "Are you sure you want to permanently clear all selected notifications?", + "onboarding.done": "Done", + "onboarding.next": "Next", + "onboarding.page_five.public_timelines": "The local timeline shows public posts from everyone on {domain}. The federated timeline shows public posts from everyone who people on {domain} follow. These are the Public Timelines, a great way to discover new people.", + "onboarding.page_four.home": "The home timeline shows posts from people you follow.", + "onboarding.page_four.notifications": "The notifications column shows when someone interacts with you.", + "onboarding.page_one.federation": "{domain} is an 'instance' of Mastodon. Mastodon is a network of independent servers joining up to make one larger social network. We call these servers instances.", + "onboarding.page_one.handle": "You are on {domain}, so your full handle is {handle}", + "onboarding.page_one.welcome": "Welcome to {domain}!", + "onboarding.page_six.admin": "Your instance's admin is {admin}.", + "onboarding.page_six.almost_done": "Almost done...", + "onboarding.page_six.appetoot": "Bon Appetoot!", + "onboarding.page_six.apps_available": "There are {apps} available for iOS, Android and other platforms.", + "onboarding.page_six.github": "{domain} runs on GlitchCafé, which is based on {Glitchsoc}, a friendly {fork} of {Mastodon}. Glitchsoc is fully compatible with all Mastodon apps and instances. GlitchCafé is free open-source software. You can view the source code on {github} and report bugs, request features, or contribute to the code by emailing {admin}.", + "onboarding.page_six.guidelines": "community guidelines", + "onboarding.page_six.read_guidelines": "Please read {domain}'s {guidelines}!", + "onboarding.page_six.various_app": "mobile apps", + "onboarding.page_three.profile": "Edit your profile to change your avatar, bio, and display name. There, you will also find other preferences.", + "onboarding.page_three.search": "Use the search bar to find people and look at hashtags, such as {illustration} and {introductions}. To look for a person who is not on this instance, use their full handle.", + "onboarding.page_two.compose": "Write posts from the compose column. You can upload images, change privacy settings, and add content warnings with the icons below.", + "onboarding.skip": "Skip", + "settings.always_show_spoilers_field": "Always enable the Content Warning field", + "settings.auto_collapse": "Automatic collapsing", + "settings.auto_collapse_all": "Everything", + "settings.auto_collapse_lengthy": "Lengthy toots", + "settings.auto_collapse_media": "Toots with media", + "settings.auto_collapse_notifications": "Notifications", + "settings.auto_collapse_reblogs": "Boosts", + "settings.auto_collapse_replies": "Replies", + "settings.close": "Close", + "settings.collapsed_statuses": "Collapsed toots", + "settings.compose_box_opts": "Compose box", + "settings.confirm_before_clearing_draft": "Show confirmation dialog before overwriting the message being composed", + "settings.confirm_boost_missing_media_description": "Show confirmation dialog before boosting toots lacking media descriptions", + "settings.confirm_missing_media_description": "Show confirmation dialog before sending toots lacking media descriptions", + "settings.content_warnings": "Content Warnings", + "settings.content_warnings.regexp": "Regular expression", + "settings.content_warnings_filter": "Content warnings to not automatically unfold:", + "settings.content_warnings_media_outside": "Display media attachments outside content warnings", + "settings.content_warnings_media_outside_hint": "Reproduce upstream Mastodon behavior by having the Content Warning toggle not affect media attachments", + "settings.content_warnings_shared_state": "Show/hide content of all copies at once", + "settings.content_warnings_shared_state_hint": "Reproduce upstream Mastodon behavior by having the Content Warning button affect all copies of a post at once. This will prevent automatic collapsing of any copy of a toot with unfolded CW", + "settings.content_warnings_unfold_opts": "Auto-unfolding options", + "settings.deprecated_setting": "This setting is now controlled from Mastodon's {settings_page_link}", + "settings.enable_collapsed": "Enable collapsed toots", + "settings.enable_collapsed_hint": "Collapsed posts have parts of their contents hidden to take up less screen space. This is distinct from the Content Warning feature", + "settings.enable_content_warnings_auto_unfold": "Automatically unfold content-warnings", + "settings.general": "General", + "settings.hicolor_privacy_icons": "High color privacy icons", + "settings.hicolor_privacy_icons.hint": "Display privacy icons in bright and easily distinguishable colors", + "settings.image_backgrounds": "Image backgrounds", + "settings.image_backgrounds_media": "Preview collapsed toot media", + "settings.image_backgrounds_media_hint": "If the post has any media attachment, use the first one as a background", + "settings.image_backgrounds_users": "Give collapsed toots an image background", + "settings.inline_preview_cards": "Inline preview cards for external links", + "settings.layout": "Layout:", + "settings.layout_opts": "Layout options", + "settings.media": "Media", + "settings.media_fullwidth": "Full-width media previews", + "settings.media_letterbox": "Letterbox media", + "settings.media_letterbox_hint": "Scale down and letterbox media to fill the image containers instead of stretching and cropping them", + "settings.media_reveal_behind_cw": "Reveal sensitive media behind a CW by default", + "settings.notifications.favicon_badge": "Unread notifications favicon badge", + "settings.notifications.favicon_badge.hint": "Add a badge for unread notifications to the favicon", + "settings.notifications.tab_badge": "Unread notifications badge", + "settings.notifications.tab_badge.hint": "Display a badge for unread notifications in the column icons when the notifications column isn't open", + "settings.notifications_opts": "Notifications options", + "settings.pop_in_left": "Left", + "settings.pop_in_player": "Enable pop-in player", + "settings.pop_in_position": "Pop-in player position:", + "settings.pop_in_right": "Right", + "settings.preferences": "User preferences", + "settings.prepend_cw_re": "Prepend “re: ” to content warnings when replying", + "settings.preselect_on_reply": "Pre-select usernames on reply", + "settings.preselect_on_reply_hint": "When replying to a conversation with multiple participants, pre-select usernames past the first", + "settings.rewrite_mentions": "Rewrite mentions in displayed statuses", + "settings.rewrite_mentions_acct": "Rewrite with username and domain (when the account is remote)", + "settings.rewrite_mentions_no": "Do not rewrite mentions", + "settings.rewrite_mentions_username": "Rewrite with username", + "settings.shared_settings_link": "user preferences", + "settings.show_action_bar": "Show action buttons in collapsed toots", + "settings.show_content_type_choice": "Show content-type choice when authoring toots", + "settings.show_reply_counter": "Display an estimate of the reply count", + "settings.side_arm": "Secondary toot button:", + "settings.side_arm.none": "None", + "settings.side_arm_reply_mode": "When replying to a toot, the secondary toot button should:", + "settings.side_arm_reply_mode.copy": "Copy privacy setting of the toot being replied to", + "settings.side_arm_reply_mode.keep": "Keep its set privacy", + "settings.side_arm_reply_mode.restrict": "Restrict privacy setting to that of the toot being replied to", + "settings.status_icons": "Toot icons", + "settings.status_icons_language": "Language indicator", + "settings.status_icons_local_only": "Local-only indicator", + "settings.status_icons_media": "Media and poll indicators", + "settings.status_icons_reply": "Reply indicator", + "settings.status_icons_visibility": "Toot privacy indicator", + "settings.swipe_to_change_columns": "Allow swiping to change columns (Mobile only)", + "settings.tag_misleading_links": "Tag misleading links", + "settings.tag_misleading_links.hint": "Add a visual indication with the link target host to every link not mentioning it explicitly", + "settings.wide_view": "Wide view (Desktop mode only)", + "settings.wide_view_hint": "Stretches columns to better fill the available space.", + "status.collapse": "Collapse", + "status.has_audio": "Features attached audio files", + "status.has_pictures": "Features attached pictures", + "status.has_preview_card": "Features an attached preview card", + "status.has_video": "Features attached videos", + "status.in_reply_to": "This toot is a reply", + "status.is_poll": "This toot is a poll", + "status.local_only": "Only visible from your instance", + "status.sensitive_toggle": "Click to view", + "status.uncollapse": "Uncollapse", + "web_app_crash.change_your_settings": "Change your {settings}", + "web_app_crash.content": "You could try any of the following:", + "web_app_crash.debug_info": "Debug information", + "web_app_crash.disable_addons": "Disable browser add-ons or built-in translation tools", + "web_app_crash.issue_tracker": "issue tracker", + "web_app_crash.reload": "Reload", + "web_app_crash.reload_page": "{reload} the current page", + "web_app_crash.report_issue": "Report a bug in the {issuetracker}", + "web_app_crash.settings": "settings", + "web_app_crash.title": "We're sorry, but something went wrong with the Mastodon app." +} diff --git a/app/javascript/flavours/glitch/styles/accounts.scss b/app/javascript/flavours/glitch/styles/accounts.scss index b1faf07c2..cee93e25b 100644 --- a/app/javascript/flavours/glitch/styles/accounts.scss +++ b/app/javascript/flavours/glitch/styles/accounts.scss @@ -202,8 +202,6 @@ } .account-role, -.simple_form .recommended, -.simple_form .not_recommended, .simple_form .glitch_only { display: inline-block; padding: 4px 6px; diff --git a/app/javascript/flavours/glitch/styles/components/drawer.scss b/app/javascript/flavours/glitch/styles/components/drawer.scss index ec8a3da9e..3e482774e 100644 --- a/app/javascript/flavours/glitch/styles/components/drawer.scss +++ b/app/javascript/flavours/glitch/styles/components/drawer.scss @@ -128,6 +128,10 @@ flex: 1 1 auto; margin-left: 8px; overflow: hidden; + + & > a:hover { + text-decoration: underline; + } } .drawer--results { diff --git a/app/javascript/flavours/glitch/styles/components/status.scss b/app/javascript/flavours/glitch/styles/components/status.scss index 1a7dfe9ae..21c28919a 100644 --- a/app/javascript/flavours/glitch/styles/components/status.scss +++ b/app/javascript/flavours/glitch/styles/components/status.scss @@ -325,7 +325,7 @@ } .display-name:hover .display-name__html { - text-decoration: none; + text-decoration: underline; } .status__content { @@ -349,7 +349,7 @@ } a:hover { - text-decoration: none; + text-decoration: underline; } } @@ -377,7 +377,11 @@ } .notification__message { - margin: -10px 0 10px; + margin: -10px 0px 10px; + + a:hover { + text-decoration: underline; + } } } @@ -517,6 +521,10 @@ overflow: hidden; text-overflow: ellipsis; } + + a:hover { + text-decoration: underline; + } } .status__action-bar { diff --git a/app/javascript/flavours/glitch/styles/forms.scss b/app/javascript/flavours/glitch/styles/forms.scss index 602de9002..9692df786 100644 --- a/app/javascript/flavours/glitch/styles/forms.scss +++ b/app/javascript/flavours/glitch/styles/forms.scss @@ -102,9 +102,6 @@ code { text-decoration: none; } } - - .recommended, - .not_recommended, .glitch_only { position: absolute; margin: 0 4px; diff --git a/app/javascript/flavours/glitch/styles/rich_text.scss b/app/javascript/flavours/glitch/styles/rich_text.scss index e60818353..081641f0b 100644 --- a/app/javascript/flavours/glitch/styles/rich_text.scss +++ b/app/javascript/flavours/glitch/styles/rich_text.scss @@ -83,11 +83,13 @@ } ul { + margin-left: 1em; list-style-type: disc; } ol { list-style-type: decimal; + list-style-position: inside; } } diff --git a/app/javascript/icons/android-chrome-144x144.png b/app/javascript/icons/android-chrome-144x144.png index 698fb4a26..1b040e070 100644 --- a/app/javascript/icons/android-chrome-144x144.png +++ b/app/javascript/icons/android-chrome-144x144.png Binary files differdiff --git a/app/javascript/icons/android-chrome-192x192.png b/app/javascript/icons/android-chrome-192x192.png index 2b6b63264..0fab4ca6b 100644 --- a/app/javascript/icons/android-chrome-192x192.png +++ b/app/javascript/icons/android-chrome-192x192.png Binary files differdiff --git a/app/javascript/icons/android-chrome-256x256.png b/app/javascript/icons/android-chrome-256x256.png index 51e3849a2..4a3c00272 100644 --- a/app/javascript/icons/android-chrome-256x256.png +++ b/app/javascript/icons/android-chrome-256x256.png Binary files differdiff --git a/app/javascript/icons/android-chrome-36x36.png b/app/javascript/icons/android-chrome-36x36.png index 925f69c4f..939df3019 100644 --- a/app/javascript/icons/android-chrome-36x36.png +++ b/app/javascript/icons/android-chrome-36x36.png Binary files differdiff --git a/app/javascript/icons/android-chrome-384x384.png b/app/javascript/icons/android-chrome-384x384.png index 9d256a83c..18c3a8e88 100644 --- a/app/javascript/icons/android-chrome-384x384.png +++ b/app/javascript/icons/android-chrome-384x384.png Binary files differdiff --git a/app/javascript/icons/android-chrome-48x48.png b/app/javascript/icons/android-chrome-48x48.png index bcfe7475d..b690555d3 100644 --- a/app/javascript/icons/android-chrome-48x48.png +++ b/app/javascript/icons/android-chrome-48x48.png Binary files differdiff --git a/app/javascript/icons/android-chrome-512x512.png b/app/javascript/icons/android-chrome-512x512.png index bffacfb69..752540b46 100644 --- a/app/javascript/icons/android-chrome-512x512.png +++ b/app/javascript/icons/android-chrome-512x512.png Binary files differdiff --git a/app/javascript/icons/android-chrome-72x72.png b/app/javascript/icons/android-chrome-72x72.png index 16679d573..e45896701 100644 --- a/app/javascript/icons/android-chrome-72x72.png +++ b/app/javascript/icons/android-chrome-72x72.png Binary files differdiff --git a/app/javascript/icons/android-chrome-96x96.png b/app/javascript/icons/android-chrome-96x96.png index 9ade87cf3..112e43896 100644 --- a/app/javascript/icons/android-chrome-96x96.png +++ b/app/javascript/icons/android-chrome-96x96.png Binary files differdiff --git a/app/javascript/icons/apple-touch-icon-1024x1024.png b/app/javascript/icons/apple-touch-icon-1024x1024.png index 8ec371eb2..b6a064991 100644 --- a/app/javascript/icons/apple-touch-icon-1024x1024.png +++ b/app/javascript/icons/apple-touch-icon-1024x1024.png Binary files differdiff --git a/app/javascript/icons/apple-touch-icon-114x114.png b/app/javascript/icons/apple-touch-icon-114x114.png index e1563f51e..252c5b4b4 100644 --- a/app/javascript/icons/apple-touch-icon-114x114.png +++ b/app/javascript/icons/apple-touch-icon-114x114.png Binary files differdiff --git a/app/javascript/icons/apple-touch-icon-120x120.png b/app/javascript/icons/apple-touch-icon-120x120.png index e9a5f5b0e..90a2e2608 100644 --- a/app/javascript/icons/apple-touch-icon-120x120.png +++ b/app/javascript/icons/apple-touch-icon-120x120.png Binary files differdiff --git a/app/javascript/icons/apple-touch-icon-144x144.png b/app/javascript/icons/apple-touch-icon-144x144.png index 698fb4a26..1b040e070 100644 --- a/app/javascript/icons/apple-touch-icon-144x144.png +++ b/app/javascript/icons/apple-touch-icon-144x144.png Binary files differdiff --git a/app/javascript/icons/apple-touch-icon-152x152.png b/app/javascript/icons/apple-touch-icon-152x152.png index 0cc93cc28..b26610ba8 100644 --- a/app/javascript/icons/apple-touch-icon-152x152.png +++ b/app/javascript/icons/apple-touch-icon-152x152.png Binary files differdiff --git a/app/javascript/icons/apple-touch-icon-167x167.png b/app/javascript/icons/apple-touch-icon-167x167.png index 9bbbf5312..df7c641da 100644 --- a/app/javascript/icons/apple-touch-icon-167x167.png +++ b/app/javascript/icons/apple-touch-icon-167x167.png Binary files differdiff --git a/app/javascript/icons/apple-touch-icon-180x180.png b/app/javascript/icons/apple-touch-icon-180x180.png index 329b803b9..0d0c53437 100644 --- a/app/javascript/icons/apple-touch-icon-180x180.png +++ b/app/javascript/icons/apple-touch-icon-180x180.png Binary files differdiff --git a/app/javascript/icons/apple-touch-icon-57x57.png b/app/javascript/icons/apple-touch-icon-57x57.png index e00e142c6..4fff3e56d 100644 --- a/app/javascript/icons/apple-touch-icon-57x57.png +++ b/app/javascript/icons/apple-touch-icon-57x57.png Binary files differdiff --git a/app/javascript/icons/apple-touch-icon-60x60.png b/app/javascript/icons/apple-touch-icon-60x60.png index 011285b56..29eda300d 100644 --- a/app/javascript/icons/apple-touch-icon-60x60.png +++ b/app/javascript/icons/apple-touch-icon-60x60.png Binary files differdiff --git a/app/javascript/icons/apple-touch-icon-72x72.png b/app/javascript/icons/apple-touch-icon-72x72.png index 16679d573..e45896701 100644 --- a/app/javascript/icons/apple-touch-icon-72x72.png +++ b/app/javascript/icons/apple-touch-icon-72x72.png Binary files differdiff --git a/app/javascript/icons/apple-touch-icon-76x76.png b/app/javascript/icons/apple-touch-icon-76x76.png index 83c874887..7dae1cbd1 100644 --- a/app/javascript/icons/apple-touch-icon-76x76.png +++ b/app/javascript/icons/apple-touch-icon-76x76.png Binary files differdiff --git a/app/javascript/icons/favicon-16x16.png b/app/javascript/icons/favicon-16x16.png index eed8e0035..b9f0b9b6f 100644 --- a/app/javascript/icons/favicon-16x16.png +++ b/app/javascript/icons/favicon-16x16.png Binary files differdiff --git a/app/javascript/icons/favicon-32x32.png b/app/javascript/icons/favicon-32x32.png index 9165746bc..428dd69cd 100644 --- a/app/javascript/icons/favicon-32x32.png +++ b/app/javascript/icons/favicon-32x32.png Binary files differdiff --git a/app/javascript/icons/favicon-48x48.png b/app/javascript/icons/favicon-48x48.png index 259676c0a..43d3b9392 100644 --- a/app/javascript/icons/favicon-48x48.png +++ b/app/javascript/icons/favicon-48x48.png Binary files differdiff --git a/app/javascript/locales/locale-data/en-cafe.js b/app/javascript/locales/locale-data/en-cafe.js new file mode 100755 index 000000000..363aabc2b --- /dev/null +++ b/app/javascript/locales/locale-data/en-cafe.js @@ -0,0 +1,8 @@ +/*eslint eqeqeq: "off"*/ +/*eslint no-nested-ternary: "off"*/ +/*eslint quotes: "off"*/ + +export default [{ + locale: "en-cafe', + parentLocale: 'en', +}]; diff --git a/app/javascript/mastodon/features/ui/components/follow_requests_column_link.jsx b/app/javascript/mastodon/features/ui/components/follow_requests_column_link.jsx index 1cd1b79bc..e6ffbdb84 100644 --- a/app/javascript/mastodon/features/ui/components/follow_requests_column_link.jsx +++ b/app/javascript/mastodon/features/ui/components/follow_requests_column_link.jsx @@ -32,10 +32,6 @@ class FollowRequestsColumnLink extends React.Component { render () { const { count, intl } = this.props; - if (count === 0) { - return null; - } - return ( <ColumnLink transparent diff --git a/app/javascript/mastodon/features/ui/components/media_modal.jsx b/app/javascript/mastodon/features/ui/components/media_modal.jsx index 52bd75453..e8005e67a 100644 --- a/app/javascript/mastodon/features/ui/components/media_modal.jsx +++ b/app/javascript/mastodon/features/ui/components/media_modal.jsx @@ -95,25 +95,6 @@ class MediaModal extends ImmutablePureComponent { componentDidMount () { window.addEventListener('keydown', this.handleKeyDown, false); - - this._sendBackgroundColor(); - } - - componentDidUpdate (prevProps, prevState) { - if (prevState.index !== this.state.index) { - this._sendBackgroundColor(); - } - } - - _sendBackgroundColor () { - const { media, onChangeBackgroundColor } = this.props; - const index = this.getIndex(); - const blurhash = media.getIn([index, 'blurhash']); - - if (blurhash) { - const backgroundColor = getAverageFromBlurhash(blurhash); - onChangeBackgroundColor(backgroundColor); - } } componentWillUnmount () { diff --git a/app/javascript/mastodon/features/ui/components/video_modal.jsx b/app/javascript/mastodon/features/ui/components/video_modal.jsx index 99359a58c..0e754ccc7 100644 --- a/app/javascript/mastodon/features/ui/components/video_modal.jsx +++ b/app/javascript/mastodon/features/ui/components/video_modal.jsx @@ -28,12 +28,6 @@ class VideoModal extends ImmutablePureComponent { componentDidMount () { const { media, onChangeBackgroundColor } = this.props; - - const backgroundColor = getAverageFromBlurhash(media.get('blurhash')); - - if (backgroundColor) { - onChangeBackgroundColor(backgroundColor); - } } render () { diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 2312ca2fb..d56cdcd85 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -635,7 +635,7 @@ "upload_form.audio_description": "Beschreibe für Menschen mit Hörbehinderung", "upload_form.description": "Beschreibe für Menschen mit Sehbehinderung", "upload_form.description_missing": "Keine Beschreibung hinzugefügt", - "upload_form.edit": "Bearbeiten", + "upload_form.edit": "Beschreiben", "upload_form.thumbnail": "Vorschaubild ändern", "upload_form.undo": "Löschen", "upload_form.video_description": "Beschreibe für Menschen mit einer Hör- oder Sehbehinderung", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index b490a7b6b..fb6181e1a 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -1761,7 +1761,7 @@ "id": "upload_form.undo" }, { - "defaultMessage": "Edit", + "defaultMessage": "Describe", "id": "upload_form.edit" }, { diff --git a/app/javascript/mastodon/locales/en-cafe.json b/app/javascript/mastodon/locales/en-cafe.json new file mode 100755 index 000000000..95ea9c8cb --- /dev/null +++ b/app/javascript/mastodon/locales/en-cafe.json @@ -0,0 +1,53 @@ +{ + "account.posts": "Toots", + "account.posts_with_replies": "Toots and replies", + "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}", + "column.pins": "Pinned toots", + "compose_form.direct_message_warning": "This toot will only be sent to the mentioned users.", + "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.", + "compose_form.publish": "Toot", + "confirmations.delete.message": "Are you sure you want to delete this toot?", + "confirmations.redraft.message": "Are you sure you want to delete this toot and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.", + "embed.instructions": "Embed this toot on your website by copying the code below.", + "empty_column.account_timeline": "No toots here!", + "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.", + "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.", + "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.", + "empty_column.list": "There is nothing in this list yet. When members of this list post new toots, they will appear here.", + "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.", + "introduction.interactions.reblog.text": "You can share other people's toots with your followers by boosting them.", + "introduction.interactions.reply.text": "You can reply to other people's and your own toots, which will chain them together in a conversation.", + "keyboard_shortcuts.column": "to focus a toot in one of the columns", + "keyboard_shortcuts.enter": "to open toot", + "keyboard_shortcuts.pinned": "to open pinned toots list", + "keyboard_shortcuts.toot": "to start a brand new toot", + "navigation_bar.compose": "Compose new toot", + "navigation_bar.pins": "Pinned toots", + "notification.favourite": "{name} favourited your toot", + "notification.reblog": "{name} boosted your toot", + "notifications.column_settings.status": "New toots:", + "privacy.change": "Change toot privacy", + "search_popout.tips.full_text": "Simple text returns toots you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.", + "search_popout.tips.status": "toot", + "search_results.statuses": "Toots", + "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.", + "status.admin_status": "Open this toot in the moderation interface", + "status.copy": "Copy link to toot", + "status.open": "Expand this toot", + "status.pinned": "Pinned toot", + "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", + "status.show_more_all": "Expand all toots", + "timeline_hint.resources.statuses": "Older toots", + + "upload_form.edit": "Describe", + "upload_modal.description_placeholder": "Jackdaws love my big sphinx of quartz", + "upload_modal.edit_media": "Add description", + + "column.community": "Plural Café", + "directory.local": "From Plural Café only", + "empty_column.community": "The Plural Café timeline is empty. Write something publicly to get the ball rolling!", + "getting_started.open_source_notice": "GlitchCafé is open source software. You can contribute or report issues on GitHub at {github}.", + "introduction.federation.local.text": "Public posts from people on Plural Café will appear in the local timeline.", + "navigation_bar.community_timeline": "Plural Café timeline", + "tabs_bar.local_timeline": "Plural Café" +} diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 236f16861..601b61f2c 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -635,7 +635,7 @@ "upload_form.audio_description": "Describe for people who are deaf or hard of hearing", "upload_form.description": "Describe for people who are blind or have low vision", "upload_form.description_missing": "No description added", - "upload_form.edit": "Edit", + "upload_form.edit": "Describe", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Delete", "upload_form.video_description": "Describe for people who are deaf, hard of hearing, blind or have low vision", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index d9f254055..25a568e24 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -635,7 +635,7 @@ "upload_form.audio_description": "Describir para personas con problemas auditivos", "upload_form.description": "Describir para personas con discapacidad visual", "upload_form.description_missing": "No se ha añadido ninguna descripción", - "upload_form.edit": "Editar", + "upload_form.edit": "Describir", "upload_form.thumbnail": "Cambiar miniatura", "upload_form.undo": "Eliminar", "upload_form.video_description": "Describir para personas con problemas auditivos o visuales", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index a086e0e21..1069ef8e2 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -635,7 +635,7 @@ "upload_form.audio_description": "Kuvaile sisältöä kuuroille ja kuulorajoitteisille", "upload_form.description": "Kuvaile sisältöä sokeille ja näkörajoitteisille", "upload_form.description_missing": "Kuvausta ei ole lisätty", - "upload_form.edit": "Muokkaa", + "upload_form.edit": "Kuvaile", "upload_form.thumbnail": "Vaihda pikkukuva", "upload_form.undo": "Poista", "upload_form.video_description": "Kuvaile sisältöä kuuroille, kuulorajoitteisille, sokeille tai näkörajoitteisille", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index d3f5bc5a7..75b5b9bf7 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -635,7 +635,7 @@ "upload_form.audio_description": "Décrire pour les personnes ayant des difficultés d’audition", "upload_form.description": "Décrire pour les malvoyant·e·s", "upload_form.description_missing": "Description manquante", - "upload_form.edit": "Modifier", + "upload_form.edit": "Décrire", "upload_form.thumbnail": "Changer la vignette", "upload_form.undo": "Supprimer", "upload_form.video_description": "Décrire pour les personnes ayant des problèmes de vue ou d'audition", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 803736eaa..01eac6a10 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -635,7 +635,7 @@ "upload_form.audio_description": "聴き取りが難しいユーザーへの説明", "upload_form.description": "視覚的に閲覧が難しいユーザーへの説明", "upload_form.description_missing": "説明を追加していません", - "upload_form.edit": "編集", + "upload_form.edit": "説明", "upload_form.thumbnail": "サムネイルを変更", "upload_form.undo": "削除", "upload_form.video_description": "聴き取りや視覚的に閲覧が難しいユーザーへの説明", diff --git a/app/javascript/mastodon/locales/locale-data/en-cafe.js b/app/javascript/mastodon/locales/locale-data/en-cafe.js new file mode 100755 index 000000000..363aabc2b --- /dev/null +++ b/app/javascript/mastodon/locales/locale-data/en-cafe.js @@ -0,0 +1,8 @@ +/*eslint eqeqeq: "off"*/ +/*eslint no-nested-ternary: "off"*/ +/*eslint quotes: "off"*/ + +export default [{ + locale: "en-cafe', + parentLocale: 'en', +}]; diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index bb33a6f0c..7be1e0c5c 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -635,7 +635,7 @@ "upload_form.audio_description": "Omschrijf dit voor dove of slechthorende mensen", "upload_form.description": "Omschrijf dit voor blinde of slechtziende mensen", "upload_form.description_missing": "Geen omschrijving toegevoegd", - "upload_form.edit": "Bewerken", + "upload_form.edit": "Omschrijf", "upload_form.thumbnail": "Miniatuurafbeelding wijzigen", "upload_form.undo": "Verwijderen", "upload_form.video_description": "Omschrijf dit voor dove, slechthorende, blinde of slechtziende mensen", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 77d1d7c85..a77da8885 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -635,7 +635,7 @@ "upload_form.audio_description": "Opisz dla osób niesłyszących i niedosłyszących", "upload_form.description": "Wprowadź opis dla niewidomych i niedowidzących", "upload_form.description_missing": "Nie dodano opisu", - "upload_form.edit": "Edytuj", + "upload_form.edit": "Opisz", "upload_form.thumbnail": "Zmień miniaturę", "upload_form.undo": "Usuń", "upload_form.video_description": "Opisz dla osób niesłyszących, niedosłyszących, niewidomych i niedowidzących", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index d10c9a8f7..cdab4c812 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -635,7 +635,7 @@ "upload_form.audio_description": "Descrever para deficientes auditivos", "upload_form.description": "Descrever para deficientes visuais", "upload_form.description_missing": "Sem descrição", - "upload_form.edit": "Editar", + "upload_form.edit": "Descreva", "upload_form.thumbnail": "Alterar miniatura", "upload_form.undo": "Excluir", "upload_form.video_description": "Descrever para deficientes auditivos ou visuais", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 4e3a1c627..c86a33bdd 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -635,7 +635,7 @@ "upload_form.audio_description": "Опишите аудиофайл для людей с нарушением слуха", "upload_form.description": "Добавьте описание для людей с нарушениями зрения:", "upload_form.description_missing": "Описание не добавлено", - "upload_form.edit": "Изменить", + "upload_form.edit": "Опишите", "upload_form.thumbnail": "Изменить обложку", "upload_form.undo": "Отменить", "upload_form.video_description": "Опишите видео для людей с нарушением слуха или зрения", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 0b78b7856..f22670955 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -635,7 +635,7 @@ "upload_form.audio_description": "Beskriv för personer med hörselnedsättning", "upload_form.description": "Beskriv för synskadade", "upload_form.description_missing": "Beskrivning saknas", - "upload_form.edit": "Redigera", + "upload_form.edit": "Beskriv", "upload_form.thumbnail": "Ändra miniatyr", "upload_form.undo": "Radera", "upload_form.video_description": "Beskriv för personer med hörsel- eller synnedsättning", diff --git a/app/javascript/mastodon/locales/whitelist_en-cafe.json b/app/javascript/mastodon/locales/whitelist_en-cafe.json new file mode 100755 index 000000000..0d4f101c7 --- /dev/null +++ b/app/javascript/mastodon/locales/whitelist_en-cafe.json @@ -0,0 +1,2 @@ +[ +] diff --git a/app/javascript/styles/mastodon-light/diff.scss b/app/javascript/styles/mastodon-light/diff.scss index 7498477ca..40856cc04 100644 --- a/app/javascript/styles/mastodon-light/diff.scss +++ b/app/javascript/styles/mastodon-light/diff.scss @@ -630,12 +630,6 @@ html { background: rgba($error-red, 0.5); text-shadow: none; } - - .recommended { - border-color: $ui-highlight-color; - color: $ui-highlight-color; - background-color: rgba($ui-highlight-color, 0.1); - } } .compose-form .compose-form__warning { diff --git a/app/javascript/styles/mastodon/accounts.scss b/app/javascript/styles/mastodon/accounts.scss index 853d7f70d..71bd20ebf 100644 --- a/app/javascript/styles/mastodon/accounts.scss +++ b/app/javascript/styles/mastodon/accounts.scss @@ -197,9 +197,7 @@ } } -.account-role, -.simple_form .recommended, -.simple_form .not_recommended { +.account-role { display: inline-block; padding: 4px 6px; cursor: default; diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss index 7d4bde5e9..129a836f3 100644 --- a/app/javascript/styles/mastodon/forms.scss +++ b/app/javascript/styles/mastodon/forms.scss @@ -102,13 +102,6 @@ code { text-decoration: none; } } - - .recommended, - .not_recommended { - position: absolute; - margin: 0 4px; - margin-top: -2px; - } } } diff --git a/app/models/account.rb b/app/models/account.rb index 4fc7b9d08..215f8ce09 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -411,10 +411,8 @@ class Account < ApplicationRecord DISALLOWED_TSQUERY_CHARACTERS = /['?\\:‘’]/.freeze TEXTSEARCH = "(setweight(to_tsvector('simple', accounts.display_name), 'A') || setweight(to_tsvector('simple', accounts.username), 'B') || setweight(to_tsvector('simple', coalesce(accounts.domain, '')), 'C'))" - REPUTATION_SCORE_FUNCTION = '(greatest(0, coalesce(s.followers_count, 0)) / (greatest(0, coalesce(s.following_count, 0)) + 1.0))' - FOLLOWERS_SCORE_FUNCTION = 'log(greatest(0, coalesce(s.followers_count, 0)) + 2)' TIME_DISTANCE_FUNCTION = '(case when s.last_status_at is null then 0 else exp(-1.0 * ((greatest(0, abs(extract(DAY FROM age(s.last_status_at))) - 30.0)^2) / (2.0 * ((-1.0 * 30^2) / (2.0 * ln(0.3)))))) end)' - BOOST = "((#{REPUTATION_SCORE_FUNCTION} + #{FOLLOWERS_SCORE_FUNCTION} + #{TIME_DISTANCE_FUNCTION}) / 3.0)" + BOOST = "(#{TIME_DISTANCE_FUNCTION})" def readonly_attributes super - %w(statuses_count following_count followers_count) diff --git a/app/models/report_note.rb b/app/models/report_note.rb index 74b46027e..8307badd6 100644 --- a/app/models/report_note.rb +++ b/app/models/report_note.rb @@ -18,5 +18,5 @@ class ReportNote < ApplicationRecord scope :latest, -> { reorder(created_at: :desc) } - validates :content, presence: true, length: { maximum: 500 } + validates :content, presence: true, length: { maximum: 2000 } end diff --git a/app/serializers/nodeinfo/serializer.rb b/app/serializers/nodeinfo/serializer.rb index f70cc38f0..ae91b7d23 100644 --- a/app/serializers/nodeinfo/serializer.rb +++ b/app/serializers/nodeinfo/serializer.rb @@ -10,7 +10,7 @@ class NodeInfo::Serializer < ActiveModel::Serializer end def software - { name: 'mastodon', version: Mastodon::Version.to_s } + { name: 'glitchcafe', version: Mastodon::Version.to_s } end def services diff --git a/app/serializers/rest/domain_block_serializer.rb b/app/serializers/rest/domain_block_serializer.rb index 678463e13..4709418cf 100644 --- a/app/serializers/rest/domain_block_serializer.rb +++ b/app/serializers/rest/domain_block_serializer.rb @@ -8,7 +8,7 @@ class REST::DomainBlockSerializer < ActiveModel::Serializer end def digest - object.domain_digest + "" end def comment diff --git a/app/validators/poll_validator.rb b/app/validators/poll_validator.rb index 1aaf5a5d0..d48073995 100644 --- a/app/validators/poll_validator.rb +++ b/app/validators/poll_validator.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class PollValidator < ActiveModel::Validator - MAX_OPTIONS = (ENV['MAX_POLL_OPTIONS'] || 5).to_i + MAX_OPTIONS = (ENV['MAX_POLL_OPTIONS'] || 6).to_i MAX_OPTION_CHARS = (ENV['MAX_POLL_OPTION_CHARS'] || 100).to_i MAX_EXPIRATION = 1.month.freeze MIN_EXPIRATION = 5.minutes.freeze @@ -9,7 +9,7 @@ class PollValidator < ActiveModel::Validator def validate(poll) current_time = Time.now.utc - poll.errors.add(:options, I18n.t('polls.errors.too_few_options')) unless poll.options.size > 1 + poll.errors.add(:options, I18n.t('polls.errors.too_few_options')) unless poll.options.size > 0 poll.errors.add(:options, I18n.t('polls.errors.too_many_options', max: MAX_OPTIONS)) if poll.options.size > MAX_OPTIONS poll.errors.add(:options, I18n.t('polls.errors.over_character_limit', max: MAX_OPTION_CHARS)) if poll.options.any? { |option| option.mb_chars.grapheme_length > MAX_OPTION_CHARS } poll.errors.add(:options, I18n.t('polls.errors.duplicate_options')) unless poll.options.uniq.size == poll.options.size diff --git a/app/views/settings/preferences/appearance/show.html.haml b/app/views/settings/preferences/appearance/show.html.haml index dc82ce5b6..b3752ed89 100644 --- a/app/views/settings/preferences/appearance/show.html.haml +++ b/app/views/settings/preferences/appearance/show.html.haml @@ -28,7 +28,7 @@ = ff.input :'web.use_pending_items', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_use_pending_items'), hint: I18n.t('simple_form.hints.defaults.setting_use_pending_items') .fields-group - = ff.input :'web.auto_play', wrapper: :with_label, recommended: true, label: I18n.t('simple_form.labels.defaults.setting_auto_play_gif') + = ff.input :'web.auto_play', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_auto_play_gif') = ff.input :'web.reduce_motion', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_reduce_motion') = ff.input :'web.disable_swiping', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_disable_swiping') = ff.input :'web.use_system_font', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_system_font_ui') diff --git a/app/views/settings/preferences/other/show.html.haml b/app/views/settings/preferences/other/show.html.haml index 6420b6634..42765d0cb 100644 --- a/app/views/settings/preferences/other/show.html.haml +++ b/app/views/settings/preferences/other/show.html.haml @@ -12,7 +12,7 @@ = ff.input :noindex, wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_noindex'), hint: I18n.t('simple_form.hints.defaults.setting_noindex') .fields-group - = ff.input :aggregate_reblogs, wrapper: :with_label, recommended: true, label: I18n.t('simple_form.labels.defaults.setting_aggregate_reblogs'), hint: I18n.t('simple_form.hints.defaults.setting_aggregate_reblogs') + = ff.input :aggregate_reblogs, wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_aggregate_reblogs'), hint: I18n.t('simple_form.hints.defaults.setting_aggregate_reblogs') - unless Setting.hide_followers_count .fields-group @@ -31,7 +31,7 @@ = ff.input :default_sensitive, wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_default_sensitive'), hint: I18n.t('simple_form.hints.defaults.setting_default_sensitive') .fields-group - = ff.input :show_application, wrapper: :with_label, recommended: true, label: I18n.t('simple_form.labels.defaults.setting_show_application'), hint: I18n.t('simple_form.hints.defaults.setting_show_application') + = ff.input :show_application, wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_show_application'), hint: I18n.t('simple_form.hints.defaults.setting_show_application') .fields-group = ff.input :default_content_type, collection: ['text/plain', 'text/markdown', 'text/html'], wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_default_content_type'), include_blank: false, label_method: lambda { |item| safe_join([t("simple_form.labels.defaults.setting_default_content_type_#{item.split('/')[1]}"), content_tag(:span, t("simple_form.hints.defaults.setting_default_content_type_#{item.split('/')[1]}"), class: 'hint')]) }, required: false, as: :radio_buttons, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li', glitch_only: true |