diff options
106 files changed, 444 insertions, 174 deletions
diff --git a/.mailmap b/.mailmap new file mode 100644 index 000000000..e066fd34a --- /dev/null +++ b/.mailmap @@ -0,0 +1,3 @@ +Starfall <us@starfall.systems> Starfall <admin@plural.cafe> +Starfall <us@starfall.systems> <root@starfall.blue> + diff --git a/Dockerfile b/Dockerfile index 962e5a8c9..742f28d14 100644 --- a/Dockerfile +++ b/Dockerfile @@ -103,13 +103,21 @@ ENV NODE_ENV="production" ENV RAILS_SERVE_STATIC_FILES="true" ENV BIND="0.0.0.0" -# Set the run user USER mastodon +ARG SOURCE_COMMIT +ENV SOURCE_TAG $SOURCE_COMMIT + # Precompile assets -RUN cd ~ && \ - OTP_SECRET=precompile_placeholder SECRET_KEY_BASE=precompile_placeholder rails assets:precompile && \ - yarn cache clean +RUN cd ~ && OTP_SECRET=_ SECRET_KEY_BASE=_ rails assets:precompile --trace && yarn cache clean + +# Empty temporary files +USER root + +RUN rm -rf /opt/mastodon/tmp/* + +# Set the run user +USER mastodon # Set the work dir and the container entry point WORKDIR /opt/mastodon diff --git a/README.md b/README.md index 470e379dc..502e0d8db 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,33 @@ -# Mastodon Glitch Edition # +![Mastodon](https://i.imgur.com/NhZc40l.png) +======== -> Now with automated deploys! +[![Build Status](https://img.shields.io/docker/cloud/build/pluralcafe/mastodon)](https://hub.docker.com/repository/docker/pluralcafe/mastodon) [![Site Status](https://img.shields.io/website?label=plural.cafe&logo=mastodon&url=https%3A%2F%2Fplural.cafe)](https://plural.cafe) -[![Build Status](https://img.shields.io/circleci/project/github/glitch-soc/mastodon.svg)][circleci] +Mastodon is a **free, open-source social network server** based on **open web protocols** like ActivityPub and OStatus. The social focus of the project is a viable decentralized alternative to commercial social media silos that returns the control of the content distribution channels to the people. The technical focus of the project is a good user interface, a clean REST API for 3rd party apps and robust anti-abuse tools. -[circleci]: https://circleci.com/gh/glitch-soc/mastodon +**Ruby on Rails** is used for the back-end, while **React.js** and Redux are used for the dynamic front-end. A static front-end for public resources (profiles and statuses) is also provided. -So here's the deal: we all work on this code, and then it runs on dev.glitch.social and anyone who uses that does so absolutely at their own risk. can you dig it? +This repository specifically is for [Plural Café](https://plural.cafe) and has three branches: -- You can view documentation for this project at [glitch-soc.github.io/docs/](https://glitch-soc.github.io/docs/). -- And contributing guidelines are available [here](CONTRIBUTING.md) and [here](https://glitch-soc.github.io/docs/contributing/). +* **main** (**edge** on Docker Hub) for all development and staging work, +* **glitch** for all commits from upstream that will automatically be synched to this repository, and +* **production** (**latest** on Docker Hub) for what goes onto the main website. + +In addition, there are several repositories in this GitHub organization: + +* **pluralcafe/mastodon** is this repository and is the codebase for what Plural Café runs, +* [**pluralcafe/utils**](https://github.com/pluralcafe/utils) are an assortment of scripts and tutorials to help in Mastodon system administration or general helper files this instance uses, +* [**pluralcafe/barkeep**](https://github.com/pluralcafe/barkeep) is forked from [mbilokonsky/ambassador](https://github.com/mbilokonsky/ambassador) and serves as the Ambassador bot that is run on the instance. + +This instance is a fork of a fork: this has the [Mastodon Glitch Edition](https://github.com/glitch-soc/mastodon) commits. Documentation for Mastodon Glitch Edition [can be found here](https://glitch-soc.github.io/docs/). Anyone wishing to use Glitch Edition in a Docker image for their own site can use the `pluralcafe/mastodon:glitch` image. + +--- + +## Notable changes from upstream + +See output of `git log glitch..main --oneline | grep -v '[mM]erge' | less` for a (more) complete history. + +* <ol> margin issue fixed so numbered lists aren't cut off a few pixels shy of 1 number +* HTML summary/details tags are allowed in toots +* gemini protocol links are supported (not yet supported: automatically marking gemini:// text as links) +* authentication required for account api endpoints to block some naive scrapers diff --git a/app/controllers/api/v1/accounts/follower_accounts_controller.rb b/app/controllers/api/v1/accounts/follower_accounts_controller.rb index a665863eb..dbb8cac5e 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 7d885a212..8c650570f 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 92ccb8061..6e44f5c01 100644 --- a/app/controllers/api/v1/accounts/statuses_controller.rb +++ b/app/controllers/api/v1/accounts/statuses_controller.rb @@ -22,6 +22,8 @@ class Api::V1::Accounts::StatusesController < Api::BaseController end def cached_account_statuses + return Status.none unless user_signed_in? + statuses = truthy_param?(:pinned) ? pinned_scope : permitted_account_statuses statuses.merge!(only_media_scope) if truthy_param?(:only_media) diff --git a/app/helpers/settings_helper.rb b/app/helpers/settings_helper.rb index b60901040..677e3fc6c 100644 --- a/app/helpers/settings_helper.rb +++ b/app/helpers/settings_helper.rb @@ -16,6 +16,7 @@ module SettingsHelper de: 'Deutsch', el: 'Ελληνικά', en: 'English', + 'en-cafe': 'English (Plural Café)', eo: 'Esperanto', 'es-AR': 'Español (Argentina)', es: 'Español', diff --git a/app/javascript/flavours/glitch/features/getting_started/components/trends.js b/app/javascript/flavours/glitch/features/getting_started/components/trends.js index 0734ec72b..c60f78f7e 100644 --- a/app/javascript/flavours/glitch/features/getting_started/components/trends.js +++ b/app/javascript/flavours/glitch/features/getting_started/components/trends.js @@ -38,7 +38,7 @@ export default class Trends extends ImmutablePureComponent { <div className='getting-started__trends'> <h4><FormattedMessage id='trends.trending_now' defaultMessage='Trending now' /></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/link_footer.js b/app/javascript/flavours/glitch/features/ui/components/link_footer.js index 4d7fc36c2..d26bbe9f8 100644 --- a/app/javascript/flavours/glitch/features/ui/components/link_footer.js +++ b/app/javascript/flavours/glitch/features/ui/components/link_footer.js @@ -58,9 +58,10 @@ class LinkFooter extends React.PureComponent { <p> <FormattedMessage id='getting_started.open_source_notice' - defaultMessage='Glitchsoc is open source software, a friendly fork of {Mastodon}. You can contribute or report issues on GitHub at {github}.' + defaultMessage='GlitchCafe is open source software, based on {Glitchsoc} which is a friendly fork of {Mastodon}. You can contribute or report issues on GitHub at {github}.' values={{ - github: <span><a href='https://github.com/glitch-soc/mastodon' rel='noopener noreferrer' target='_blank'>glitch-soc/mastodon</a> (v{version})</span>, + github: <span><a href='https://github.com/pluralcafe/mastodon' rel='noopener noreferrer' target='_blank'>pluralcafe/mastodon</a> (v{version})</span>, + Glitchsoc: <a href='https://github.com/glitch-soc/mastodon' rel='noopener noreferrer' target='_blank'>glitch-soc/mastodon</a>, Mastodon: <a href='https://github.com/tootsuite/mastodon' rel='noopener noreferrer' target='_blank'>Mastodon</a> }} /> </p> 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 bd2d2eb4e..abcbf13db 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 @@ -33,8 +33,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.js b/app/javascript/flavours/glitch/locales/en-cafe.js new file mode 100755 index 000000000..6886de5d3 --- /dev/null +++ b/app/javascript/flavours/glitch/locales/en-cafe.js @@ -0,0 +1,8 @@ +import base_english from 'flavours/glitch/locales/en'; +import inherited from 'mastodon/locales/en-cafe.json'; + +const messages = { + // No new translations for glitch-soc strings. +}; + +export default Object.assign({}, base_english, inherited, messages); diff --git a/app/javascript/flavours/glitch/locales/en.js b/app/javascript/flavours/glitch/locales/en.js index 90e924d4a..699affd70 100644 --- a/app/javascript/flavours/glitch/locales/en.js +++ b/app/javascript/flavours/glitch/locales/en.js @@ -1,7 +1,7 @@ import inherited from 'mastodon/locales/en.json'; const messages = { - 'getting_started.open_source_notice': 'Glitchsoc is free open source software forked from {Mastodon}. You can contribute or report issues on GitHub at {github}.', + 'getting_started.open_source_notice': 'GlitchCafe is free open source software based on {Glitchsoc} and {Mastodon}. You can see our source code on GitHub at {github}.', 'layout.auto': 'Auto', 'layout.current_is': 'Your current layout is:', 'layout.desktop': 'Desktop', @@ -10,7 +10,7 @@ const messages = { 'getting_started.onboarding': 'Show me around', '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.welcome': 'Welcome to {domain}!', - 'onboarding.page_six.github': '{domain} runs on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}, and is compatible with any Mastodon instance or app. Glitchsoc is entirely free and open-source. You can report bugs, request features, or contribute to the code on {github}.', + 'onboarding.page_six.github': '{domain} runs on GlitchCafe, which is based on Glitchsoc. Glitchsoc is a friendly {fork} of {Mastodon}, and is compatible with any Mastodon instance or app. GlitchCafe includes Plural Cafe-specific additions to Glitchsoc. Glitchsoc is entirely free and open-source. You can report bugs, request features, or contribute to the code on {github}.', 'settings.auto_collapse': 'Automatic collapsing', 'settings.auto_collapse_all': 'Everything', 'settings.auto_collapse_lengthy': 'Lengthy toots', diff --git a/app/javascript/flavours/glitch/styles/accounts.scss b/app/javascript/flavours/glitch/styles/accounts.scss index a5ddde937..d66a2b237 100644 --- a/app/javascript/flavours/glitch/styles/accounts.scss +++ b/app/javascript/flavours/glitch/styles/accounts.scss @@ -203,8 +203,7 @@ } } -.account-role, -.simple_form .recommended { +.account-role { display: inline-block; padding: 4px 6px; cursor: default; diff --git a/app/javascript/flavours/glitch/styles/components/drawer.scss b/app/javascript/flavours/glitch/styles/components/drawer.scss index b6d06f53a..edc16e250 100644 --- a/app/javascript/flavours/glitch/styles/components/drawer.scss +++ b/app/javascript/flavours/glitch/styles/components/drawer.scss @@ -117,6 +117,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 e906a7261..69c9a6fe3 100644 --- a/app/javascript/flavours/glitch/styles/components/status.scss +++ b/app/javascript/flavours/glitch/styles/components/status.scss @@ -134,19 +134,19 @@ } ul, ol { - margin-left: 1em; - p { margin: 0; } } ul { + margin-left: 1em; list-style-type: disc; } ol { list-style-type: decimal; + list-style-position: inside; } } @@ -377,7 +377,7 @@ } .display-name:hover .display-name__html { - text-decoration: none; + text-decoration: underline; } .status__content { @@ -398,7 +398,7 @@ } a:hover { - text-decoration: none; + text-decoration: underline; } } &:focus > .status__content:after { @@ -419,6 +419,10 @@ .notification__message { margin: -10px 0px 10px 0; + + a:hover { + text-decoration: underline; + } } } @@ -563,6 +567,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 b93acd6cd..ed1f66fab 100644 --- a/app/javascript/flavours/glitch/styles/forms.scss +++ b/app/javascript/flavours/glitch/styles/forms.scss @@ -83,12 +83,6 @@ code { text-decoration: none; } } - - .recommended { - position: absolute; - margin: 0 4px; - margin-top: -2px; - } } } diff --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/locales/de.json b/app/javascript/mastodon/locales/de.json index eabfdd001..c98e3230d 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -448,7 +448,7 @@ "upload_error.poll": "Dateiuploads sind in Kombination mit Umfragen nicht erlaubt.", "upload_form.audio_description": "Beschreibe die Audiodatei für Menschen mit Hörschädigungen", "upload_form.description": "Für Menschen mit Sehbehinderung beschreiben", - "upload_form.edit": "Bearbeiten", + "upload_form.edit": "Beschreiben", "upload_form.thumbnail": "Miniaturansicht ändern", "upload_form.undo": "Löschen", "upload_form.video_description": "Beschreibe das Video 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 4e910a757..a8091cd87 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -1329,7 +1329,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..76b211bbd --- /dev/null +++ b/app/javascript/mastodon/locales/en-cafe.json @@ -0,0 +1,51 @@ +{ + "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.", + "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.", + "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 ff8fa56bd..b43690c3a 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -453,7 +453,7 @@ "upload_error.poll": "File upload not allowed with polls.", "upload_form.audio_description": "Describe for people with hearing loss", "upload_form.description": "Describe for the visually impaired", - "upload_form.edit": "Edit", + "upload_form.edit": "Describe", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Delete", "upload_form.video_description": "Describe for people with hearing loss or visual impairment", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 37ce004f1..7d7af8b44 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -448,7 +448,7 @@ "upload_error.poll": "Subida de archivos no permitida con encuestas.", "upload_form.audio_description": "Describir para personas con problemas auditivos", "upload_form.description": "Describir para los usuarios con dificultad visual", - "upload_form.edit": "Editar", + "upload_form.edit": "Describir", "upload_form.thumbnail": "Cambiar miniatura", "upload_form.undo": "Borrar", "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 202579e6f..ae2a2eef6 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -448,7 +448,7 @@ "upload_error.poll": "Tiedon lataaminen ei ole sallittua kyselyissä.", "upload_form.audio_description": "Kuvaile kuulovammaisille", "upload_form.description": "Anna kuvaus näkörajoitteisia varten", - "upload_form.edit": "Muokkaa", + "upload_form.edit": "Kuvaile", "upload_form.thumbnail": "Vaihda pikkukuva", "upload_form.undo": "Peru", "upload_form.video_description": "Kuvaile kuulo- tai näkövammaisille", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index a1746644c..811e318b4 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -448,7 +448,7 @@ "upload_error.poll": "L’envoi de fichiers n’est pas autorisé avec les sondages.", "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.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 d’audition ou de vision", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 18fa04c5e..3a4617448 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -453,7 +453,7 @@ "upload_error.poll": "アンケートではファイルをアップロードできません。", "upload_form.audio_description": "聴取が難しいユーザーへの説明", "upload_form.description": "閲覧が難しいユーザーへの説明", - "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 70df22e3d..6c305aae6 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -448,7 +448,7 @@ "upload_error.poll": "Het uploaden van bestanden is in polls niet toegestaan.", "upload_form.audio_description": "Omschrijf dit voor mensen met een auditieve beperking", "upload_form.description": "Omschrijf dit voor mensen met een visuele beperking", - "upload_form.edit": "Bewerken", + "upload_form.edit": "Omschrijf", "upload_form.thumbnail": "Miniatuurafbeelding wijzigen", "upload_form.undo": "Verwijderen", "upload_form.video_description": "Omschrijf dit voor mensen met een auditieve of visuele beperking", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 6e2ff329e..acad358ac 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -453,7 +453,7 @@ "upload_error.poll": "Dołączanie plików nie dozwolone z głosowaniami.", "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.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 1a45d9ca9..fed22080c 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -448,7 +448,7 @@ "upload_error.poll": "Não é possível fazer upload de arquivos com enquetes.", "upload_form.audio_description": "Descrever para pessoas com deficiência auditiva", "upload_form.description": "Descreva para deficientes visuais", - "upload_form.edit": "Editar", + "upload_form.edit": "Descreva", "upload_form.thumbnail": "Alterar miniatura", "upload_form.undo": "Excluir", "upload_form.video_description": "Descreva para pessoas com deficiência auditiva ou visual", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 0f3ccebe7..2e04328cc 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -448,7 +448,7 @@ "upload_error.poll": "К опросам нельзя прикреплять файлы.", "upload_form.audio_description": "Опишите аудиофайл для людей с нарушением слуха", "upload_form.description": "Добавьте описание для людей с нарушениями зрения:", - "upload_form.edit": "Изменить", + "upload_form.edit": "Опишите", "upload_form.thumbnail": "Изменить обложку", "upload_form.undo": "Отменить", "upload_form.video_description": "Опишите видео для людей с нарушением слуха или зрения", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 973d5a895..d10f29aaf 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -448,7 +448,7 @@ "upload_error.poll": "Nahrávanie súborov pri anketách nieje možné.", "upload_form.audio_description": "Popíš, pre ľudí so stratou sluchu", "upload_form.description": "Opis pre slabo vidiacich", - "upload_form.edit": "Uprav", + "upload_form.edit": "Popíš", "upload_form.thumbnail": "Change thumbnail", "upload_form.undo": "Vymaž", "upload_form.video_description": "Popíš, pre ľudí so stratou sluchu, alebo očným znevýhodnením", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index e8a02934d..fa336579a 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -448,7 +448,7 @@ "upload_error.poll": "Filuppladdning tillåts inte med omröstningar.", "upload_form.audio_description": "Beskriv för personer med hörselnedsättning", "upload_form.description": "Beskriv för synskadade", - "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 8e6b0cdd5..6a8a6f1de 100644 --- a/app/javascript/styles/mastodon-light/diff.scss +++ b/app/javascript/styles/mastodon-light/diff.scss @@ -656,12 +656,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 2c78e81be..332b9f420 100644 --- a/app/javascript/styles/mastodon/accounts.scss +++ b/app/javascript/styles/mastodon/accounts.scss @@ -201,8 +201,7 @@ } } -.account-role, -.simple_form .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 ef4a08c59..021db048b 100644 --- a/app/javascript/styles/mastodon/forms.scss +++ b/app/javascript/styles/mastodon/forms.scss @@ -83,12 +83,6 @@ code { text-decoration: none; } } - - .recommended { - position: absolute; - margin: 0 4px; - margin-top: -2px; - } } } diff --git a/app/services/activitypub/process_account_service.rb b/app/services/activitypub/process_account_service.rb index 7e268f4d4..2161b91ee 100644 --- a/app/services/activitypub/process_account_service.rb +++ b/app/services/activitypub/process_account_service.rb @@ -38,13 +38,14 @@ class ActivityPub::ProcessAccountService < BaseService return if @account.nil? after_protocol_change! if protocol_changed? - after_key_change! if key_changed? && !@options[:signed_with_known_key] clear_tombstones! if key_changed? after_suspension_change! if suspension_changed? + return after_key_change! if key_changed? && !@options[:signed_with_known_key] unless @options[:only_key] || @account.suspended? check_featured_collection! if @account.featured_collection_url.present? check_links! unless @account.fields.empty? + process_sync end @account @@ -140,7 +141,8 @@ class ActivityPub::ProcessAccountService < BaseService end def after_key_change! - RefollowWorker.perform_async(@account.id) + ResetAccountWorker.perform_async(@account.id) + nil end def after_suspension_change! 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 ccea2e9b7..4170c9e44 100644 --- a/app/views/settings/preferences/appearance/show.html.haml +++ b/app/views/settings/preferences/appearance/show.html.haml @@ -25,7 +25,7 @@ = f.input :setting_use_pending_items, as: :boolean, wrapper: :with_label .fields-group - = f.input :setting_auto_play_gif, as: :boolean, wrapper: :with_label, recommended: true + = f.input :setting_auto_play_gif, as: :boolean, wrapper: :with_label = f.input :setting_reduce_motion, as: :boolean, wrapper: :with_label = f.input :setting_disable_swiping, as: :boolean, wrapper: :with_label = f.input :setting_system_font_ui, as: :boolean, wrapper: :with_label diff --git a/app/views/settings/preferences/other/show.html.haml b/app/views/settings/preferences/other/show.html.haml index 3b5c7016d..372d934fb 100644 --- a/app/views/settings/preferences/other/show.html.haml +++ b/app/views/settings/preferences/other/show.html.haml @@ -14,7 +14,7 @@ = f.input :setting_hide_network, as: :boolean, wrapper: :with_label .fields-group - = f.input :setting_aggregate_reblogs, as: :boolean, wrapper: :with_label, recommended: true + = f.input :setting_aggregate_reblogs, as: :boolean, wrapper: :with_label - unless Setting.hide_followers_count .fields-group @@ -33,7 +33,7 @@ = f.input :setting_default_sensitive, as: :boolean, wrapper: :with_label .fields-group - = f.input :setting_show_application, as: :boolean, wrapper: :with_label, recommended: true + = f.input :setting_show_application, as: :boolean, wrapper: :with_label .fields-group = f.input :setting_default_content_type, collection: ['text/plain', 'text/markdown', 'text/html'], wrapper: :with_label, 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' diff --git a/app/views/settings/profiles/show.html.haml b/app/views/settings/profiles/show.html.haml index 6061e9cfd..fb7ce6780 100644 --- a/app/views/settings/profiles/show.html.haml +++ b/app/views/settings/profiles/show.html.haml @@ -31,7 +31,7 @@ - if Setting.profile_directory .fields-group - = f.input :discoverable, as: :boolean, wrapper: :with_label, hint: t('simple_form.hints.defaults.discoverable'), recommended: true + = f.input :discoverable, as: :boolean, wrapper: :with_label, hint: t('simple_form.hints.defaults.discoverable') %hr.spacer/ diff --git a/app/workers/reset_account_worker.rb b/app/workers/reset_account_worker.rb new file mode 100644 index 000000000..f63d8682a --- /dev/null +++ b/app/workers/reset_account_worker.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +class ResetAccountWorker + include Sidekiq::Worker + + def perform(account_id) + account = Account.find(account_id) + return if account.local? + + account_uri = account.uri + SuspendAccountService.new.call(account) + ResolveAccountService.new.call(account_uri) + rescue ActiveRecord::RecordNotFound + true + end +end diff --git a/config/application.rb b/config/application.rb index 8200a2fcf..31fe9e4e0 100644 --- a/config/application.rb +++ b/config/application.rb @@ -70,6 +70,7 @@ module Mastodon :de, :el, :en, + :'en-cafe', :eo, :es, :'es-AR', @@ -137,9 +138,12 @@ module Mastodon config.i18n.default_locale = ENV['DEFAULT_LOCALE']&.to_sym unless config.i18n.available_locales.include?(config.i18n.default_locale) - config.i18n.default_locale = :en + config.i18n.default_locale = :'en-cafe' end + # fall back to English when a translation cannot be found + config.i18n.fallbacks = [:'en-cafe', :en] + # config.paths.add File.join('app', 'api'), glob: File.join('**', '*.rb') # config.autoload_paths += Dir[Rails.root.join('app', 'api', '*')] diff --git a/config/environments/production.rb b/config/environments/production.rb index bf6b5d88e..c25556665 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -65,10 +65,6 @@ Rails.application.configure do # Set this to true and configure the email server for immediate delivery to raise delivery errors. # config.action_mailer.raise_delivery_errors = false - # Enable locale fallbacks for I18n (makes lookups for any locale fall back to - # English when a translation cannot be found). - config.i18n.fallbacks = [:en] - # Send deprecation notices to registered listeners. config.active_support.deprecation = :notify diff --git a/config/i18n-tasks.yml b/config/i18n-tasks.yml index e09f4262b..3db1bc602 100644 --- a/config/i18n-tasks.yml +++ b/config/i18n-tasks.yml @@ -51,7 +51,7 @@ ignore_unused: - 'activerecord.errors.*' - '{devise,pagination,doorkeeper}.*' - '{date,datetime,time,number}.*' - - 'simple_form.{yes,no,recommended}' + - 'simple_form.{yes,no}' - 'simple_form.{placeholders,hints,labels}.*' - 'simple_form.{error_notification,required}.:' - 'errors.messages.*' diff --git a/config/initializers/content_security_policy.rb b/config/initializers/content_security_policy.rb index 549ac3568..a5eed5db2 100644 --- a/config/initializers/content_security_policy.rb +++ b/config/initializers/content_security_policy.rb @@ -33,9 +33,9 @@ if Rails.env.production? p.frame_ancestors :none p.script_src :self, assets_host p.font_src :self, assets_host - p.img_src :self, :data, :blob, *data_hosts + p.img_src :self, :data, :blob, *data_hosts, "pool.jortage.com", "blob.jortage.com", "s3-us-east-2.amazonaws.com" p.style_src :self, assets_host - p.media_src :self, :data, *data_hosts + p.media_src :self, :data, *data_hosts, "pool.jortage.com", "blob.jortage.com", "s3-us-east-2.amazonaws.com" p.frame_src :self, :https p.child_src :self, :blob, assets_host p.worker_src :self, :blob, assets_host diff --git a/config/initializers/simple_form.rb b/config/initializers/simple_form.rb index 3a2097d2f..8ec642653 100644 --- a/config/initializers/simple_form.rb +++ b/config/initializers/simple_form.rb @@ -8,16 +8,7 @@ module AppendComponent end end -module RecommendedComponent - def recommended(_wrapper_options = nil) - return unless options[:recommended] - options[:label_text] = ->(raw_label_text, _required_label_text, _label_present) { safe_join([raw_label_text, ' ', content_tag(:span, I18n.t('simple_form.recommended'), class: 'recommended')]) } - nil - end -end - SimpleForm.include_component(AppendComponent) -SimpleForm.include_component(RecommendedComponent) SimpleForm.setup do |config| # Wrappers are used by the form builder to generate a @@ -74,7 +65,6 @@ SimpleForm.setup do |config| b.use :html5 b.wrapper tag: :div, class: :label_input do |ba| - ba.optional :recommended ba.use :label ba.wrapper tag: :div, class: :label_input__wrapper do |bb| diff --git a/config/locales/en-cafe.yml b/config/locales/en-cafe.yml new file mode 100755 index 000000000..77c5338f0 --- /dev/null +++ b/config/locales/en-cafe.yml @@ -0,0 +1,47 @@ +--- +en-cafe: + about: + about_hashtag_html: These are public toots tagged with <strong>#%{hashtag}</strong>. You can interact with them if you have an account anywhere in the fediverse. + hosted_on: GlitchCafé hosted on %{domain} + posts: + one: Toot + other: Toots + posts_tab_heading: Toots + posts_with_replies: Toots and replies + unavailable_content: Domain blocks + unavailable_content_description: + domain: Instance + reason: Reason + rejecting_media: 'Media files from these instances will not be processed or stored, and no thumbnails will be displayed, requiring manual click-through to the original file:' + rejecting_media_title: Filtered media + silenced: 'Posts from these instances will be hidden in public timelines and conversations, and no notifications will be generated from their users interactions, unless you are following them:' + silenced_title: Silenced instances + suspended: 'No data from these instances will be processed, stored or exchanged, making any interaction or communication with users from these instances impossible:' + suspended_title: Suspended instances + archive_takeout: + hint_html: You can request an archive of your <strong>toots and uploaded media</strong>. The exported data will be in the ActivityPub format, readable by any compliant software. You can request an archive every 7 days. + auth: + description: + prefix_invited_by_user: "@%{name} invites you to join Plural Café!" + prefix_sign_up: Sign up on Plural Café today! + remote_interaction: + favourite: + prompt: 'You want to favourite this toot:' + reblog: + prompt: 'You want to boost this toot:' + reply: + prompt: 'You want to reply to this toot:' + scheduled_statuses: + over_daily_limit: You have exceeded the limit of %{limit} scheduled toots for that day + over_total_limit: You have exceeded the limit of %{limit} scheduled toots + statuses: + pin_errors: + limit: You have already pinned the maximum number of toots + ownership: Someone else's toot cannot be pinned + private: Non-public toot cannot be pinned + stream_entries: + pinned: Pinned toot + user_mailer: + warning: + explanation: + silence: You can still use your account but only people who are already following you will see your toots on this server, and you may be excluded from various public listings. However, others may still manually follow you. diff --git a/config/locales/simple_form.ar.yml b/config/locales/simple_form.ar.yml index e02e87fcb..47ad19a6d 100644 --- a/config/locales/simple_form.ar.yml +++ b/config/locales/simple_form.ar.yml @@ -213,7 +213,6 @@ ar: trendable: السماح لهذه الكلمة المفتاحية بالظهور تحت المتداوَلة usable: اسمح للتبويقات باستخدام هذا الوسم 'no': لا - recommended: موصى بها required: mark: "*" text: مطلوب diff --git a/config/locales/simple_form.ast.yml b/config/locales/simple_form.ast.yml index 332f55079..2b960fb31 100644 --- a/config/locales/simple_form.ast.yml +++ b/config/locales/simple_form.ast.yml @@ -93,7 +93,6 @@ ast: tag: name: Etiqueta 'no': Non - recommended: Aconséyase required: text: ríquese 'yes': Sí diff --git a/config/locales/simple_form.co.yml b/config/locales/simple_form.co.yml index b326f3f55..c1ccd950b 100644 --- a/config/locales/simple_form.co.yml +++ b/config/locales/simple_form.co.yml @@ -207,7 +207,6 @@ co: trendable: Auturizà stu hashtag à esse vistu in e tendenze usable: Auturizà i statuti à utilizà stu hashtag 'no': Nò - recommended: Ricumandati required: mark: "*" text: riquisiti diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml index 92e9af416..6ef8d2095 100644 --- a/config/locales/simple_form.cs.yml +++ b/config/locales/simple_form.cs.yml @@ -213,7 +213,6 @@ cs: trendable: Povolit zobrazení tohoto hashtagu mezi populárními usable: Povolit používat tento hashtag v příspěvcích 'no': Ne - recommended: Doporučeno required: mark: "*" text: vyžadováno diff --git a/config/locales/simple_form.cy.yml b/config/locales/simple_form.cy.yml index 6d7b01746..231b46765 100644 --- a/config/locales/simple_form.cy.yml +++ b/config/locales/simple_form.cy.yml @@ -182,7 +182,6 @@ cy: trendable: Gadewch i'r hashnod hwn ymddangos o dan dueddiadau usable: Caniatáu i tŵtiau ddefnyddio'r hashnod hwn 'no': Na - recommended: Argymhellwyd required: text: gofynnol 'yes': Ie diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml index 3f84121a7..976bd0696 100644 --- a/config/locales/simple_form.da.yml +++ b/config/locales/simple_form.da.yml @@ -212,7 +212,6 @@ da: trendable: Tillad visning af dette hashtag under trends usable: Tillad indlæg at benytte dette hashtag 'no': Nej - recommended: Anbefalet required: mark: "*" text: krævet diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml index 562ba19cd..381acc3be 100644 --- a/config/locales/simple_form.de.yml +++ b/config/locales/simple_form.de.yml @@ -213,7 +213,6 @@ de: trendable: Erlaube es diesen Hashtag in den Trends erscheinen zu lassen usable: Beiträge erlauben, diesen Hashtag zu verwenden 'no': Nein - recommended: Empfohlen required: mark: "*" text: Pflichtfeld diff --git a/config/locales/simple_form.el.yml b/config/locales/simple_form.el.yml index 375bf6527..0213b7884 100644 --- a/config/locales/simple_form.el.yml +++ b/config/locales/simple_form.el.yml @@ -213,7 +213,6 @@ el: trendable: Εμφάνιση της ετικέτας στις τάσεις usable: Χρήση της ετικέτας σε τουτ 'no': Όχι - recommended: Προτείνεται required: mark: "*" text: απαιτείται diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml index c4388ffc5..008c43b97 100644 --- a/config/locales/simple_form.en.yml +++ b/config/locales/simple_form.en.yml @@ -70,7 +70,7 @@ en: imports: data: CSV file exported from another Mastodon server invite_request: - text: This will help us review your application + text: 'If you are interested in signing up, please put whether you are a plural system or singlet in the "Why do you want to join" box. This is purely to ward off spam bots. If this is not answered, your request to join the instance will be rejected.' ip_block: comment: Optional. Remember why you added this rule. expires_in: IP addresses are a finite resource, they are sometimes shared and often change hands. For this reason, indefinite IP blocks are not recommended. @@ -213,7 +213,6 @@ en: trendable: Allow this hashtag to appear under trends usable: Allow posts to use this hashtag 'no': 'No' - recommended: Recommended required: mark: "*" text: required diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml index b810bac67..1b884d2f9 100644 --- a/config/locales/simple_form.eo.yml +++ b/config/locales/simple_form.eo.yml @@ -177,7 +177,6 @@ eo: trendable: Permesi al ĉi tiu kradvorto aperi en furoraĵoj usable: Permesi mesaĝojn uzi ĉi tiun kradvorton 'no': Ne - recommended: Rekomendita required: mark: "*" text: bezonata diff --git a/config/locales/simple_form.es-AR.yml b/config/locales/simple_form.es-AR.yml index 95c98dff1..a539749c4 100644 --- a/config/locales/simple_form.es-AR.yml +++ b/config/locales/simple_form.es-AR.yml @@ -213,7 +213,6 @@ es-AR: trendable: Permitir que esta etiqueta aparezca bajo tendencias usable: Permitir a los mensajes usar esta etiqueta 'no': 'No' - recommended: Opción recomendada required: mark: "*" text: obligatorio diff --git a/config/locales/simple_form.et.yml b/config/locales/simple_form.et.yml index 7d8957b18..e3c1a0b98 100644 --- a/config/locales/simple_form.et.yml +++ b/config/locales/simple_form.et.yml @@ -183,7 +183,6 @@ et: trendable: Luba sellel sildil trendida usable: Luba tuututustel seda silti kasutada 'no': Ei - recommended: Soovituslik required: text: kohustuslik 'yes': Jah diff --git a/config/locales/simple_form.eu.yml b/config/locales/simple_form.eu.yml index 68913558f..d1301c66f 100644 --- a/config/locales/simple_form.eu.yml +++ b/config/locales/simple_form.eu.yml @@ -213,7 +213,6 @@ eu: trendable: Baimendu traola hau joeretan agertzea usable: Baimendu tootek traola hau erabiltzea 'no': Ez - recommended: Aholkatua required: mark: "*" text: beharrezkoa diff --git a/config/locales/simple_form.fa.yml b/config/locales/simple_form.fa.yml index 5305a5394..ed69f5fe4 100644 --- a/config/locales/simple_form.fa.yml +++ b/config/locales/simple_form.fa.yml @@ -211,7 +211,6 @@ fa: trendable: بگذارید که این برچسب در موضوعات پرطرفدار دیده شود usable: بگذارید که این برچسب در بوقها به کار بروند 'no': خیر - recommended: توصیه میشود required: mark: "*" text: ضروری diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml index 8296bed54..31227fac8 100644 --- a/config/locales/simple_form.fi.yml +++ b/config/locales/simple_form.fi.yml @@ -128,7 +128,6 @@ fi: trendable: Salli tämän aihetunnisteen näkyä trendeissä usable: Salli tuuttauksien käyttää tätä aihetunnistetta 'no': Ei - recommended: Suositeltu required: text: pakollinen tieto 'yes': Kyllä diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml index d768da037..1690e11bc 100644 --- a/config/locales/simple_form.fr.yml +++ b/config/locales/simple_form.fr.yml @@ -213,7 +213,6 @@ fr: trendable: Autoriser ce hashtag à apparaitre dans les tendances usable: Autoriser les messages à utiliser ce hashtag 'no': Non - recommended: Recommandé required: mark: "*" text: champs requis diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml index 650a2578d..82308bbd9 100644 --- a/config/locales/simple_form.gl.yml +++ b/config/locales/simple_form.gl.yml @@ -213,7 +213,6 @@ gl: trendable: Permitir que este cancelo apareza en tendencias usable: Permitir que as publicacións utilicen este cancelo 'no': Non - recommended: Recomendado required: mark: "*" text: requerido diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml index 5434bc3b7..35b02c0fe 100644 --- a/config/locales/simple_form.hu.yml +++ b/config/locales/simple_form.hu.yml @@ -213,7 +213,6 @@ hu: trendable: A hashtag megjelenhet a trendek között usable: Bejegyzések használhatják ezt a hashtaget 'no': Nem - recommended: Ajánlott required: mark: "*" text: kötelező diff --git a/config/locales/simple_form.hy.yml b/config/locales/simple_form.hy.yml index df5995ac4..042aed9c3 100644 --- a/config/locales/simple_form.hy.yml +++ b/config/locales/simple_form.hy.yml @@ -202,7 +202,6 @@ hy: trendable: Թոյլատրել, որ այս պիտակը յայտնուի թրենդներում usable: Թոյլատրել թթերին օգտագործել այս պիտակը 'no': Ոչ - recommended: Խորհուրդ է տրվում required: text: պարտադիր title: diff --git a/config/locales/simple_form.id.yml b/config/locales/simple_form.id.yml index fe0fca5f9..efed6cc98 100644 --- a/config/locales/simple_form.id.yml +++ b/config/locales/simple_form.id.yml @@ -213,7 +213,6 @@ id: trendable: Izinkan tagar ini muncul di bawah tren usable: Izinkan toot memakai tagar ini 'no': Tidak - recommended: Direkomendasikan required: mark: "*" text: wajib diff --git a/config/locales/simple_form.is.yml b/config/locales/simple_form.is.yml index c05d645ab..963a4101a 100644 --- a/config/locales/simple_form.is.yml +++ b/config/locales/simple_form.is.yml @@ -213,7 +213,6 @@ is: trendable: Leyfa þessu myllumerki að birtast undir tilhneigingum usable: Leyfa tístum að nota þetta myllumerki 'no': Nei - recommended: Mælt með required: mark: "*" text: nauðsynlegt diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml index 3067a287a..8515da934 100644 --- a/config/locales/simple_form.it.yml +++ b/config/locales/simple_form.it.yml @@ -213,7 +213,6 @@ it: trendable: Permetti a questo hashtag di apparire nelle tendenze usable: Permetti ai toot di utilizzare questo hashtag 'no': 'No' - recommended: Consigliato required: mark: "*" text: richiesto diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml index 4c4133baf..e83313d43 100644 --- a/config/locales/simple_form.ja.yml +++ b/config/locales/simple_form.ja.yml @@ -213,7 +213,6 @@ ja: trendable: トレンドへの表示を許可する usable: 投稿への使用を許可する 'no': いいえ - recommended: おすすめ required: mark: "*" text: 必須 diff --git a/config/locales/simple_form.kab.yml b/config/locales/simple_form.kab.yml index a6242951f..cd9ca2514 100644 --- a/config/locales/simple_form.kab.yml +++ b/config/locales/simple_form.kab.yml @@ -98,7 +98,6 @@ kab: tag: name: Ahacṭag 'no': Ala - recommended: Yettuwelleh required: text: ilaq 'yes': Ih diff --git a/config/locales/simple_form.kk.yml b/config/locales/simple_form.kk.yml index 63fe3d460..882454d78 100644 --- a/config/locales/simple_form.kk.yml +++ b/config/locales/simple_form.kk.yml @@ -93,7 +93,6 @@ kk: trendable: Хештегті трендтерде көрсетуге рұқсат бер usable: Бұл хештегті қолдануға рұқсат бер 'no': Жоқ - recommended: Рекоменделген required: text: міндетті 'yes': Иә diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml index 7fb7506f9..d9b0ec2e0 100644 --- a/config/locales/simple_form.ko.yml +++ b/config/locales/simple_form.ko.yml @@ -213,7 +213,6 @@ ko: trendable: 이 해시태그가 유행에 보여지도록 허용 usable: 이 해시태그를 게시물에 사용 가능하도록 허용 'no': 아니오 - recommended: 추천함 required: mark: "*" text: 필수 항목 diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml index 4fdcb70f0..d8ce979d5 100644 --- a/config/locales/simple_form.nl.yml +++ b/config/locales/simple_form.nl.yml @@ -213,7 +213,6 @@ nl: trendable: Toestaan dat deze hashtag onder trends te zien valt usable: Toestaan dat deze hashtag in toots gebruikt mag worden 'no': Nee - recommended: Aanbevolen required: mark: "*" text: vereist diff --git a/config/locales/simple_form.nn.yml b/config/locales/simple_form.nn.yml index 04f8c2b28..4f75701a7 100644 --- a/config/locales/simple_form.nn.yml +++ b/config/locales/simple_form.nn.yml @@ -198,7 +198,6 @@ nn: trendable: Tillat denne emneknaggen til å synast under trendar usable: Gje tut lov til å nytta denne emneknaggen 'no': Nei - recommended: Tilrådt required: mark: "*" text: obligatorisk diff --git a/config/locales/simple_form.no.yml b/config/locales/simple_form.no.yml index 81913086e..37863d9e8 100644 --- a/config/locales/simple_form.no.yml +++ b/config/locales/simple_form.no.yml @@ -198,7 +198,6 @@ trendable: Tillat denne emneknaggen til å vises under trender usable: Tillat tuter å bruke denne emneknaggen 'no': Nei - recommended: Anbefalt required: mark: "*" text: obligatorisk diff --git a/config/locales/simple_form.oc.yml b/config/locales/simple_form.oc.yml index e2520da3f..b66aeec1c 100644 --- a/config/locales/simple_form.oc.yml +++ b/config/locales/simple_form.oc.yml @@ -205,7 +205,6 @@ oc: trendable: Permetre a aquesta etiqueta d’aparéisser a las tendéncias usable: Permetre als tuts d’utilizar aquesta etiqueta 'no': Non - recommended: Recomandat required: mark: "*" text: requesit diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml index b217cd738..0c371f4f1 100644 --- a/config/locales/simple_form.pl.yml +++ b/config/locales/simple_form.pl.yml @@ -213,7 +213,6 @@ pl: trendable: Pozwól na wyświetlanie tego hashtagu w „Na czasie” usable: Pozwól na umieszczanie tego hashtagu we wpisach 'no': Nie - recommended: Polecane required: mark: "*" text: pole wymagane diff --git a/config/locales/simple_form.pt-BR.yml b/config/locales/simple_form.pt-BR.yml index 358e054f6..c9f3a3b1a 100644 --- a/config/locales/simple_form.pt-BR.yml +++ b/config/locales/simple_form.pt-BR.yml @@ -206,7 +206,6 @@ pt-BR: trendable: Permitir que esta hashtag fique em alta usable: Permitir que toots usem esta hashtag 'no': Não - recommended: Recomendado required: text: obrigatório title: diff --git a/config/locales/simple_form.pt-PT.yml b/config/locales/simple_form.pt-PT.yml index 4d0d5291f..768c1abe7 100644 --- a/config/locales/simple_form.pt-PT.yml +++ b/config/locales/simple_form.pt-PT.yml @@ -213,7 +213,6 @@ pt-PT: trendable: Permitir que esta hashtag apareça em destaque usable: Permitir que toots utilizem esta hashtag 'no': Não - recommended: Recomendado required: mark: "*" text: obrigatório diff --git a/config/locales/simple_form.ro.yml b/config/locales/simple_form.ro.yml index 8d30c2746..8138f1859 100644 --- a/config/locales/simple_form.ro.yml +++ b/config/locales/simple_form.ro.yml @@ -180,7 +180,6 @@ ro: trendable: Permite acestui hashtag să apară sub tendințe usable: Permite postărilor să folosească acest hashtag 'no': Nu - recommended: Recomandat required: text: obligatoriu 'yes': Da diff --git a/config/locales/simple_form.ru.yml b/config/locales/simple_form.ru.yml index f704f6e5a..44d84faf5 100644 --- a/config/locales/simple_form.ru.yml +++ b/config/locales/simple_form.ru.yml @@ -213,7 +213,6 @@ ru: trendable: Разрешить показ хэштега в трендах usable: Разрешить использовать этот хэштег в постах 'no': Нет - recommended: Рекомендуем required: mark: "*" text: обязательно diff --git a/config/locales/simple_form.sk.yml b/config/locales/simple_form.sk.yml index 99d7d42e3..dbf69cce7 100644 --- a/config/locales/simple_form.sk.yml +++ b/config/locales/simple_form.sk.yml @@ -170,7 +170,6 @@ sk: trendable: Povoľ zobrazovanie tohto haštagu medzi trendujúcimi usable: Povoľ používanie tohto haštagu v príspevkoch 'no': Nie - recommended: Odporúčané required: text: povinné 'yes': Áno diff --git a/config/locales/simple_form.sl.yml b/config/locales/simple_form.sl.yml index 20a07eccb..f0bf1e6c9 100644 --- a/config/locales/simple_form.sl.yml +++ b/config/locales/simple_form.sl.yml @@ -136,7 +136,6 @@ sl: reblog: Pošlji e-pošto, ko nekdo sune vaše stanje report: Pošlji e-pošto, ko je oddana nova prijava 'no': Ne - recommended: Priporočeno required: text: zahtevano 'yes': Da diff --git a/config/locales/simple_form.sq.yml b/config/locales/simple_form.sq.yml index 2a97725cb..995f4babd 100644 --- a/config/locales/simple_form.sq.yml +++ b/config/locales/simple_form.sq.yml @@ -213,7 +213,6 @@ sq: trendable: Lejoje këtë hashtag të shfaqet në prirje usable: Lejoji mesazhet të përdorin këtë hashtag 'no': Jo - recommended: E rekomanduar required: mark: "*" text: e domosdoshme diff --git a/config/locales/simple_form.sv.yml b/config/locales/simple_form.sv.yml index 92d826bbc..2a9063f78 100644 --- a/config/locales/simple_form.sv.yml +++ b/config/locales/simple_form.sv.yml @@ -172,7 +172,6 @@ sv: trendable: Tillåt att denna hashtag visas under trender usable: Tillåt tutningar att använda denna hashtag 'no': Nej - recommended: Rekommenderad required: mark: "*" text: obligatorisk diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml index 3e2e930a7..108dfb7eb 100644 --- a/config/locales/simple_form.th.yml +++ b/config/locales/simple_form.th.yml @@ -200,7 +200,6 @@ th: trendable: อนุญาตให้แฮชแท็กนี้ปรากฏภายใต้แนวโน้ม usable: อนุญาตให้โพสต์ใช้แฮชแท็กนี้ 'no': ไม่ - recommended: แนะนำ required: mark: "*" text: จำเป็น diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml index 5e26da732..d299ddd86 100644 --- a/config/locales/simple_form.tr.yml +++ b/config/locales/simple_form.tr.yml @@ -213,7 +213,6 @@ tr: trendable: Bu etiketin gündem altında görünmesine izin ver usable: Tootların bu etiketi kullanmasına izin ver 'no': Hayır - recommended: Önerilen required: mark: "*" text: gerekli diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml index 2153d6091..2ada78ca1 100644 --- a/config/locales/simple_form.uk.yml +++ b/config/locales/simple_form.uk.yml @@ -213,7 +213,6 @@ uk: trendable: Дозволити появу цього хештеґа у списку популярних хештеґів usable: Дозволити дмухам використовувати цей хештеґ 'no': Ні - recommended: Рекомендовано required: mark: "*" text: обов'язкове diff --git a/config/locales/simple_form.vi.yml b/config/locales/simple_form.vi.yml index a934cc174..5c6c10d37 100644 --- a/config/locales/simple_form.vi.yml +++ b/config/locales/simple_form.vi.yml @@ -213,7 +213,6 @@ vi: trendable: Cho phép hashtag này xuất hiện trong xu hướng usable: Cho phép dùng hashtag này trong tút 'no': Tắt - recommended: Đề xuất required: mark: "*" text: yêu cầu diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml index 30bd0ac6e..52135a2f1 100644 --- a/config/locales/simple_form.zh-CN.yml +++ b/config/locales/simple_form.zh-CN.yml @@ -213,7 +213,6 @@ zh-CN: trendable: 允许在热门下显示此话题 usable: 允许嘟文使用此话题标签 'no': 否 - recommended: 推荐 required: mark: "*" text: 必填 diff --git a/config/locales/simple_form.zh-HK.yml b/config/locales/simple_form.zh-HK.yml index c9359bfd0..27a99da4c 100644 --- a/config/locales/simple_form.zh-HK.yml +++ b/config/locales/simple_form.zh-HK.yml @@ -213,7 +213,6 @@ zh-HK: trendable: 允許此主題標籤在趨勢下顯示 usable: 允許文章使用此主題標籤 'no': 否 - recommended: 建議 required: mark: "*" text: 必須填寫 diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml index ec2d62e24..ce255ec36 100644 --- a/config/locales/simple_form.zh-TW.yml +++ b/config/locales/simple_form.zh-TW.yml @@ -180,7 +180,6 @@ zh-TW: trendable: 允許此主題標籤在趨勢下顯示 usable: 允許嘟文使用此主題標籤 'no': 否 - recommended: 建議 required: text: 必須填寫 title: diff --git a/db/migrate/20180617162849_remove_unused_indexes.rb b/db/migrate/20180617162849_remove_unused_indexes.rb deleted file mode 100644 index 61add6385..000000000 --- a/db/migrate/20180617162849_remove_unused_indexes.rb +++ /dev/null @@ -1,7 +0,0 @@ -class RemoveUnusedIndexes < ActiveRecord::Migration[5.2] - def change - remove_index :statuses, name: "index_statuses_on_conversation_id" - remove_index :users, name: "index_users_on_filtered_languages" - remove_index :backups, name: "index_backups_on_user_id" - end -end diff --git a/db/migrate/20180628181026_create_custom_filters.rb b/db/migrate/20180628181026_create_custom_filters.rb deleted file mode 100644 index d19cf2e9d..000000000 --- a/db/migrate/20180628181026_create_custom_filters.rb +++ /dev/null @@ -1,13 +0,0 @@ -class CreateCustomFilters < ActiveRecord::Migration[5.2] - def change - create_table :custom_filters do |t| - t.belongs_to :account, foreign_key: { on_delete: :cascade } - t.datetime :expires_at - t.text :phrase, null: false, default: '' - t.string :context, array: true, null: false, default: [] - t.boolean :irreversible, null: false, default: false - - t.timestamps - end - end -end diff --git a/hooks/build b/hooks/build new file mode 100755 index 000000000..4f7259bec --- /dev/null +++ b/hooks/build @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +echo "Building from ${SOURCE_COMMIT}" +docker build --build-arg SOURCE_COMMIT=`head -c 7 <<< $SOURCE_COMMIT` -t $IMAGE_NAME . diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb index ff0e694b7..4118f1f3c 100644 --- a/lib/mastodon/version.rb +++ b/lib/mastodon/version.rb @@ -21,7 +21,11 @@ module Mastodon end def suffix - '+glitch' + if source_tag + "+cafe.#{source_tag}" + else + "+cafe" + end end def to_a @@ -33,7 +37,7 @@ module Mastodon end def repository - ENV.fetch('GITHUB_REPOSITORY', 'glitch-soc/mastodon') + ENV.fetch('GITHUB_REPOSITORY', 'pluralcafe/mastodon') end def source_base_url diff --git a/lib/sanitize_ext/sanitize_config.rb b/lib/sanitize_ext/sanitize_config.rb index ecaec2f84..fed504cf2 100644 --- a/lib/sanitize_ext/sanitize_config.rb +++ b/lib/sanitize_ext/sanitize_config.rb @@ -15,6 +15,7 @@ class Sanitize ipfs ipns ssb + gemini gopher xmpp magnet @@ -84,7 +85,7 @@ class Sanitize end MASTODON_STRICT ||= freeze_config( - elements: %w(p br span a abbr del pre blockquote code b strong u sub sup i em h1 h2 h3 h4 h5 ul ol li), + elements: %w(p br span a abbr del pre blockquote code b strong u sub sup i em h1 h2 h3 h4 h5 ul ol li details summary), attributes: { 'a' => %w(href rel class title), diff --git a/package.json b/package.json index b1f904faf..7ce0e233b 100644 --- a/package.json +++ b/package.json @@ -71,8 +71,8 @@ "@github/webauthn-json": "^0.5.7", "@rails/ujs": "^6.1.3", "array-includes": "^3.1.3", - "atrament": "0.2.4", "arrow-key-navigation": "^1.2.0", + "atrament": "0.2.4", "autoprefixer": "^9.8.6", "axios": "^0.21.1", "babel-loader": "^8.2.2", @@ -82,6 +82,7 @@ "babel-plugin-transform-react-remove-prop-types": "^0.4.24", "babel-runtime": "^6.26.0", "blurhash": "^1.1.3", + "caniuse-lite": "^1.0.30001208", "classnames": "^2.3.1", "color-blend": "^3.0.1", "compression-webpack-plugin": "^6.1.1", diff --git a/public/avatars/original/missing.png b/public/avatars/original/missing.png index 34c8e45e6..0fefd3c3a 100644 --- a/public/avatars/original/missing.png +++ b/public/avatars/original/missing.png Binary files differdiff --git a/public/avatars/original/plural-knot.svg b/public/avatars/original/plural-knot.svg new file mode 100755 index 000000000..bf4a7a8ff --- /dev/null +++ b/public/avatars/original/plural-knot.svg @@ -0,0 +1,169 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + inkscape:export-ydpi="63.82" + inkscape:export-xdpi="63.82" + inkscape:export-filename="C:\devil\pluralcafe\mastodon\public\avatars\original\missing.png" + sodipodi:docname="plural-knot.svg" + inkscape:version="1.0 (4035a4fb49, 2020-05-01)" + id="svg8" + version="1.1" + viewBox="0 0 159.20357 159.20357" + height="159.20357mm" + width="159.20357mm"> + <defs + id="defs2" /> + <sodipodi:namedview + fit-margin-bottom="0" + fit-margin-right="0" + fit-margin-left="0" + fit-margin-top="0" + inkscape:window-maximized="1" + inkscape:window-y="-8" + inkscape:window-x="1912" + inkscape:window-height="1058" + inkscape:window-width="1858" + showgrid="false" + inkscape:document-rotation="0" + inkscape:current-layer="layer3" + inkscape:document-units="mm" + inkscape:cy="316.5168" + inkscape:cx="277.46816" + inkscape:zoom="0.98994949" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + borderopacity="1.0" + bordercolor="#666666" + pagecolor="#ffffff" + id="base" /> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + transform="translate(-21.064414,-4.308929)" + style="display:inline" + id="layer1" + inkscape:groupmode="layer" + inkscape:label="Layer 1"> + <g + style="display:none" + transform="translate(-8.94689,-52.449395)" + inkscape:label="guide" + id="layer2"> + <g + id="g870" + style="display:inline"> + <g + id="g868-3" + transform="matrix(4.4223215,0,0,4.4223215,30.011304,56.758324)" + style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:0.39886;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"> + <path + id="path854-6" + d="m 36,32 c 0,2.209 -1.791,4 -4,4 H 4 C 1.791,36 0,34.209 0,32 V 4 C 0,1.791 1.791,0 4,0 h 28 c 2.209,0 4,1.791 4,4 z" + inkscape:connector-curvature="0" + style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:0.39886;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + inkscape:export-filename="/home/mordecai/alt-key-purple.png" + inkscape:export-xdpi="92.813103" + inkscape:export-ydpi="92.813103" /> + </g> + <g + id="g868-3-7" + transform="matrix(3.2281286,0,0,3.2281286,51.506777,78.253798)" + style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:0.39886;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"> + <path + id="path854-6-5" + d="m 36,32 c 0,2.209 -1.791,4 -4,4 H 4 C 1.791,36 0,34.209 0,32 V 4 C 0,1.791 1.791,0 4,0 h 28 c 2.209,0 4,1.791 4,4 z" + inkscape:connector-curvature="0" + style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:0.39886;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + inkscape:export-filename="/home/mordecai/alt-key-purple.png" + inkscape:export-xdpi="92.813103" + inkscape:export-ydpi="92.813103" /> + </g> + </g> + </g> + </g> + <g + transform="translate(-21.064414,-4.308929)" + inkscape:label="rings" + id="layer3" + inkscape:groupmode="layer"> + <g + id="g1151"> + <g + style="display:inline;fill:#d9e1e8;fill-opacity:1;stroke:none;stroke-opacity:1" + transform="matrix(4.4223215,0,0,4.4223215,21.064414,4.308929)" + id="g868"> + <path + inkscape:export-ydpi="92.813103" + inkscape:export-xdpi="92.813103" + inkscape:export-filename="/home/mordecai/alt-key-purple.png" + style="fill:#d9e1e8;fill-opacity:1;stroke:none;stroke-opacity:1" + inkscape:connector-curvature="0" + d="m 36,32 c 0,2.209 -1.791,4 -4,4 H 4 C 1.791,36 0,34.209 0,32 V 4 C 0,1.791 1.791,0 4,0 h 28 c 2.209,0 4,1.791 4,4 z" + id="path854" /> + </g> + <path + d="m 100.6155,26.313866 a 35.80561,35.80561 0 0 0 -35.725991,35.805567 35.80561,35.80561 0 0 0 35.805571,35.805565 35.80561,35.80561 0 0 0 35.80557,-35.805565 35.80561,35.80561 0 0 0 -35.80557,-35.805567 35.80561,35.80561 0 0 0 -0.0796,0 z m 0.0796,7.020245 A 28.785372,28.785372 0 0 1 129.4804,62.119433 28.785372,28.785372 0 0 1 100.69508,90.904755 28.785372,28.785372 0 0 1 71.909752,62.119433 28.785372,28.785372 0 0 1 100.69508,33.334111 Z" + style="vector-effect:none;fill:#889fbe;fill-opacity:1;stroke:none;stroke-width:7.82577;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers" + id="path1039" /> + <path + d="m 100.58906,69.886559 a 35.80561,35.80561 0 0 0 -35.725988,35.805561 35.80561,35.80561 0 0 0 35.805568,35.80557 35.80561,35.80561 0 0 0 35.80557,-35.80557 35.80561,35.80561 0 0 0 -35.80557,-35.805561 35.80561,35.80561 0 0 0 -0.0796,0 z m 0.0796,7.020246 a 28.785373,28.785373 0 0 1 28.7853,28.785315 28.785373,28.785373 0 0 1 -28.78532,28.78532 28.785373,28.785373 0 0 1 -28.785325,-28.78532 28.785373,28.785373 0 0 1 28.785325,-28.785315 z" + style="vector-effect:none;fill:#a3b6cf;fill-opacity:1;stroke:none;stroke-width:7.82577;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers" + id="circle1031-9" /> + <path + id="circle1031-9-0" + style="vector-effect:none;fill:#b4c3d6;fill-opacity:1;stroke:none;stroke-width:7.82577;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers" + d="M 78.728456,48.105159 A 35.80561,35.80561 0 0 0 43.002467,83.910721 35.80561,35.80561 0 0 0 78.808035,119.71629 35.80561,35.80561 0 0 0 114.61361,83.910721 35.80561,35.80561 0 0 0 78.808035,48.105159 a 35.80561,35.80561 0 0 0 -0.0796,0 z m 0.0796,7.020247 A 28.785373,28.785373 0 0 1 107.59336,83.910721 28.785373,28.785373 0 0 1 78.808035,112.69604 28.785373,28.785373 0 0 1 50.02271,83.910721 28.785373,28.785373 0 0 1 78.808035,55.125406 Z" /> + <path + id="circle1031" + style="vector-effect:none;fill:#c1cddb;fill-opacity:1;stroke:none;stroke-width:29.5777;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers" + d="M 462.51562,181.81445 A 135.32829,135.32829 0 0 0 327.48828,317.14258 135.32829,135.32829 0 0 0 462.81641,452.4707 135.32829,135.32829 0 0 0 598.14453,317.14258 135.32829,135.32829 0 0 0 462.81641,181.81445 a 135.32829,135.32829 0 0 0 -0.30079,0 z m 0.30079,26.53321 A 108.79511,108.79511 0 0 1 571.61133,317.14258 108.79511,108.79511 0 0 1 462.81641,425.9375 108.79511,108.79511 0 0 1 354.02148,317.14258 108.79511,108.79511 0 0 1 462.81641,208.34766 Z" + transform="scale(0.26458333)" /> + <path + id="rect1071" + style="fill:#889fbe;fill-opacity:1;stroke:none;stroke-width:26.6683;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 285.22266,182.40625 a 135.32829,135.32829 0 0 0 -32.14844,7.0332 135.32829,135.32829 0 0 0 -7.17383,32.11719 108.79511,108.79511 0 0 1 28.53906,-10.6582 108.79511,108.79511 0 0 1 10.78321,-28.49219 z" + transform="scale(0.26458333)" /> + <path + id="rect1073" + style="fill:#889fbe;fill-opacity:1;stroke:none;stroke-width:26.6683;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 328.10938,330.08789 a 135.32829,135.32829 0 0 0 7.13085,32.20117 135.32829,135.32829 0 0 0 32.19336,7.17969 108.79511,108.79511 0 0 1 -10.7832,-28.55664 108.79511,108.79511 0 0 1 -28.54101,-10.82422 z" + transform="scale(0.26458333)" /> + <path + id="rect1075" + style="fill:#889fbe;fill-opacity:1;stroke:none;stroke-width:29.9925;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 469.4668,297.51172 a 108.79511,108.79511 0 0 1 -17.83203,19.65625 108.79511,108.79511 0 0 1 17.81054,19.67578 135.32829,135.32829 0 0 0 18.47852,-19.6543 135.32829,135.32829 0 0 0 -18.45703,-19.67773 z" + transform="scale(0.26458333)" /> + <path + id="rect1079" + style="fill:#a3b6cf;fill-opacity:1;stroke:none;stroke-width:26.6683;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 393.19727,264.73828 a 108.79511,108.79511 0 0 1 10.79687,28.50391 108.79511,108.79511 0 0 1 28.54297,10.69336 135.32829,135.32829 0 0 0 -7.17578,-32.13867 135.32829,135.32829 0 0 0 -32.16406,-7.0586 z" + transform="scale(0.26458333)" /> + <path + id="rect1081" + style="fill:#a3b6cf;fill-opacity:1;stroke:none;stroke-width:26.6683;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 515.17773,412.50781 a 108.79511,108.79511 0 0 1 -28.54687,10.79102 108.79511,108.79511 0 0 1 -10.79297,28.54297 135.32829,135.32829 0 0 0 32.1875,-7.14453 135.32829,135.32829 0 0 0 7.15234,-32.18946 z" + transform="scale(0.26458333)" /> + <path + id="rect1083" + style="fill:#b4c3d6;fill-opacity:1;stroke:none;stroke-width:33.4685;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 380.33594,209.85547 a 135.32829,135.32829 0 0 0 -19.63282,18.48242 108.79511,108.79511 0 0 1 19.63477,17.85938 108.79511,108.79511 0 0 1 19.63281,-17.85938 135.32829,135.32829 0 0 0 -19.63476,-18.48242 z" + transform="scale(0.26458333)" /> + </g> + </g> +</svg> diff --git a/public/favicon.ico b/public/favicon.ico index 79000c9cc..c6ecf1314 100644..100755 --- a/public/favicon.ico +++ b/public/favicon.ico Binary files differdiff --git a/yarn.lock b/yarn.lock index ce7d90da8..11f999089 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2836,20 +2836,15 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001135: - version "1.0.30001143" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001143.tgz#560f2cfb9f313d1d7e52eb8dac0e4e36c8821c0d" - integrity sha512-p/PO5YbwmCpBJPxjOiKBvAlUPgF8dExhfEpnsH+ys4N/791WHrYrGg0cyHiAURl5hSbx5vIcjKmQAP6sHDYH3w== - -caniuse-lite@^1.0.30001157: - version "1.0.30001159" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001159.tgz#bebde28f893fa9594dadcaa7d6b8e2aa0299df20" - integrity sha512-w9Ph56jOsS8RL20K9cLND3u/+5WASWdhC/PPrf+V3/HsM3uHOavWOR1Xzakbv4Puo/srmPHudkmCRWM7Aq+/UA== - -caniuse-lite@^1.0.30001181: - version "1.0.30001191" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001191.tgz#bacb432b6701f690c8c5f7c680166b9a9f0843d9" - integrity sha512-xJJqzyd+7GCJXkcoBiQ1GuxEiOBCLQ0aVW9HMekifZsAVGdj5eJ4mFB9fEhSHipq9IOk/QXFJUiIr9lZT+EsGw== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001135, caniuse-lite@^1.0.30001157, caniuse-lite@^1.0.30001181: + version "1.0.30001208" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001208.tgz" + integrity sha512-OE5UE4+nBOro8Dyvv0lfx+SRtfVIOM9uhKqFmJeUbGriqhhStgp1A0OyBpgy3OUF8AhYCT+PVwPC1gMl2ZcQMA== + +caniuse-lite@^1.0.30001208: + version "1.0.30001208" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001208.tgz#a999014a35cebd4f98c405930a057a0d75352eb9" + integrity sha512-OE5UE4+nBOro8Dyvv0lfx+SRtfVIOM9uhKqFmJeUbGriqhhStgp1A0OyBpgy3OUF8AhYCT+PVwPC1gMl2ZcQMA== capture-exit@^2.0.0: version "2.0.0" |