forked from AkkomaGang/akkoma
Compare commits
216 commits
Author | SHA1 | Date | |
---|---|---|---|
73b0bb9261 | |||
a06e233032 | |||
7466136ad3 | |||
bdca5f5d68 | |||
Hélène | a74ce2d77a | ||
7977dd6ac7 | |||
3e504bf958 | |||
8b69704b9e | |||
4605efe272 | |||
a8093732bd | |||
f06fd53b53 | |||
214ef7ff73 | |||
f9943b2065 | |||
57c030a0a7 | |||
e2d24eda57 | |||
c3b2b71ea2 | |||
95e654a238 | |||
cf08e4ec73 | |||
aa4c73e233 | |||
8517bc18aa | |||
be08d9305b | |||
a5d7e98de0 | |||
5f37db330f | |||
d7c53da77a | |||
e63d49d238 | |||
b76340511d | |||
2db640632b | |||
cdc5bbe836 | |||
4458db3201 | |||
ee32e36b01 | |||
79ccb6b999 | |||
89667189b8 | |||
9b69ccb35b | |||
cd42e2bed0 | |||
aca11fb70e | |||
7ea330b4fe | |||
d3f3f30c6a | |||
bc59da96c5 | |||
8de573b047 | |||
1a917cfeec | |||
5e38887080 | |||
e644f8dea5 | |||
396f036b13 | |||
0149ea4538 | |||
af82f09ce3 | |||
8b0c2890f9 | |||
1deab33fb0 | |||
32e4aa42d3 | |||
0b686c6e54 | |||
9c52a496f7 | |||
fdbf9b06e5 | |||
cadca083ea | |||
50a316cd63 | |||
f63d9b7835 | |||
0cc6557716 | |||
1edbda39e1 | |||
ee05abe052 | |||
17aa3644be | |||
56197192bb | |||
6ba93c2cb3 | |||
9f4c5743e8 | |||
2fa1ca84e6 | |||
a867107437 | |||
0fd3695b9c | |||
d91e9cee04 | |||
Sam Therapy | 061cb749cd | ||
099b2a5267 | |||
Hakaba Hitoyo | 8102d842ec | ||
a0a0198ad2 | |||
d7fbabe209 | |||
Hakaba Hitoyo | 5393d441c4 | ||
fa8e2ffa3f | |||
e473bcf7a0 | |||
60deddb7e5 | |||
7c044a1841 | |||
d1cc9e4eaf | |||
71c80204c9 | |||
bd81af731e | |||
2d77976305 | |||
5a4e3aa715 | |||
61dfeca1cc | |||
de99fd7804 | |||
f8f2a17754 | |||
0dd02e1947 | |||
FloatingGhost | d26eca644c | ||
FloatingGhost | 7d355c263c | ||
FloatingGhost | 970ac804e0 | ||
FloatingGhost | 06db507f39 | ||
FloatingGhost | 33f8ea76ac | ||
FloatingGhost | ea7317e8eb | ||
FloatingGhost | 0fd45bbf82 | ||
FloatingGhost | 83efd56a16 | ||
FloatingGhost | 84d791e59e | ||
FloatingGhost | 4440ea0981 | ||
FloatingGhost | 655bd7e67b | ||
FloatingGhost | 5a870d2c6d | ||
FloatingGhost | 85e067ec9d | ||
e1799f9456 | |||
FloatingGhost | 4e923b331f | ||
736060da6b | |||
9e263ed65c | |||
FloatingGhost | fc96e359a4 | ||
FloatingGhost | 936c9243b6 | ||
dc0df5dbcd | |||
FloatingGhost | 40f54b9d8f | ||
FloatingGhost | cf96f5e594 | ||
FloatingGhost | 187c5417e6 | ||
FloatingGhost | ab9d7f14eb | ||
ee82cb7ae9 | |||
FloatingGhost | fe313522b2 | ||
FloatingGhost | 64c13832c3 | ||
FloatingGhost | c4d2717beb | ||
63b1b722f9 | |||
f9b587bebf | |||
FloatingGhost | c2909aa2a4 | ||
FloatingGhost | 163c9299f3 | ||
FloatingGhost | 8842a9a9ed | ||
FloatingGhost | 922b911880 | ||
FloatingGhost | 79877729b9 | ||
18097ea4f0 | |||
4d30ffed3e | |||
64944c164f | |||
3bf257171f | |||
a146f6acab | |||
27cb3d6273 | |||
2bab9dd175 | |||
a4de79ced0 | |||
8951be7710 | |||
0604b0dd09 | |||
0f4e0e667e | |||
99e9c2c668 | |||
65b4d2ce84 | |||
ab12a05a43 | |||
c1ae35ff2c | |||
dd7977bb68 | |||
a4b8a1150e | |||
0a1527c008 | |||
249fe88d12 | |||
267184b70e | |||
c5a20c80c4 | |||
d5644a52aa | |||
1bbc701a3a | |||
19d557c870 | |||
53de3a9d44 | |||
9fdf0720cf | |||
7b87cac6cc | |||
75c4fefb1c | |||
1dba3bc4dc | |||
61bae9a407 | |||
e3d394eef6 | |||
0266bc3c96 | |||
aaa9314f4c | |||
9983799ccb | |||
98ce239ebc | |||
66e8c6f90f | |||
NEETzsche | 7a015b1fe2 | ||
263b42a73d | |||
78c6aeee1b | |||
f5d4ef50b4 | |||
8328289619 | |||
6ffe43af70 | |||
560bcd58ab | |||
00523bdf5e | |||
88c21b9282 | |||
9faac1094f | |||
787a02c4b1 | |||
74cf0f0355 | |||
a02cfd7f52 | |||
c180f9276f | |||
dfb2808535 | |||
397f67fef8 | |||
70fbd1f09e | |||
1dfb67f1e0 | |||
69b089c894 | |||
b108b05650 | |||
72d5e29117 | |||
ac434f83c3 | |||
ecdc81b37a | |||
39c5ebb1f6 | |||
cd8f1aac47 | |||
31148c1857 | |||
db90c9e3b0 | |||
d5eb44e8b3 | |||
Hakaba Hitoyo | 790081540d | ||
71baa713bc | |||
NEETzsche | 6284353025 | ||
8b5a658991 | |||
a4436bcc3f | |||
84dcb55b0f | |||
eedf551eed | |||
0f90fd5805 | |||
62a45747d9 | |||
b34f0a6e51 | |||
e4cfdfd701 | |||
a98a127718 | |||
ea204dbca1 | |||
f4bc2f5975 | |||
cd3175c7fe | |||
bf0b32c9aa | |||
4f249b2397 | |||
753a9b3f32 | |||
fd043b0ab3 | |||
991b26f494 | |||
dafcf896d9 | |||
ffeae7ef2c | |||
9032d065e6 | |||
8ef1d8b566 | |||
6d81493861 | |||
6d35b57802 | |||
042c37bcee | |||
3c16f80ffc | |||
e2832da2ce | |||
bee3d6d0cb | |||
16d3533d1e | |||
a9b0027071 | |||
590a10af33 |
25
.gitea/issue_template.md
Normal file
25
.gitea/issue_template.md
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
<!--
|
||||||
|
### Precheck
|
||||||
|
|
||||||
|
* Please do a quick search to ensure no similar issues has been reported before. If the issue has not been addressed after 2 weeks, it's fine to bump it (e.g. give a thumbs up or leave a comment).
|
||||||
|
* Try to ensure that the bug is actually related to the Pleroma backend. For example, if a bug happens in Pleroma-FE but not in Mastodon-FE or mobile clients, it's likely that the bug should be filed in [Pleroma-FE](https://git.pleroma.social/pleroma/pleroma-fe/issues/new) repository.
|
||||||
|
-->
|
||||||
|
|
||||||
|
### Environment (only relevant for bugs, not enhancement requests)
|
||||||
|
|
||||||
|
* Installation type (OTP or From Source):
|
||||||
|
* Version (could be found in the "Version" tab of settings in Pleroma-FE):
|
||||||
|
* Elixir version (`elixir -v` for from source installations, N/A for OTP):
|
||||||
|
* Operating system:
|
||||||
|
* PostgreSQL version (`psql -V`):
|
||||||
|
|
||||||
|
|
||||||
|
### Description
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Please try to be clear what the problem is.
|
||||||
|
* For bugs, add steps to reproduce, what's the result and what you expect. Logfiles, screenshots and additional information can also help us better understand the problem.
|
||||||
|
* For enhancements, make it clear what you expect and what problem you try to solve.
|
||||||
|
|
||||||
|
You can link to other issues or pull requests by using a hashtag and number. E.g. to refer to issue https://codeberg.org/newroma-dev/newroma/issues/32 you can write #32
|
||||||
|
-->
|
11
.gitea/pull_request_template.md
Normal file
11
.gitea/pull_request_template.md
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
<!--
|
||||||
|
You can link to other issues or pull requests by using a hashtag and number. E.g. to refer to issue https://codeberg.org/newroma-dev/newroma/issues/32 you can write #32
|
||||||
|
|
||||||
|
If this PR closes an issue, you can use the "closes" keyword: closes #32
|
||||||
|
|
||||||
|
If you're still working on the PR, please prepend the title with "WIP:": WIP: Doing stuff
|
||||||
|
|
||||||
|
When you un-wip a PR, feel free to ping the maintainers on the chat so they know your code is ready for review. If you haven't gotten any feedback after a couple of weeks, feel free to ping again.
|
||||||
|
|
||||||
|
You're expected to resolve issues people bring up in the comments. Once all issues have been resolved, please ping the maintainers again so that they know you're ready for review again.
|
||||||
|
-->
|
|
@ -90,6 +90,7 @@ unit-testing:
|
||||||
unit-testing-erratic:
|
unit-testing-erratic:
|
||||||
stage: test
|
stage: test
|
||||||
retry: 2
|
retry: 2
|
||||||
|
allow_failure: true
|
||||||
only:
|
only:
|
||||||
changes:
|
changes:
|
||||||
- "**/*.ex"
|
- "**/*.ex"
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
<!--
|
|
||||||
### Precheck
|
|
||||||
|
|
||||||
* For support use https://git.pleroma.social/pleroma/pleroma-support or [community channels](https://git.pleroma.social/pleroma/pleroma#community-channels).
|
|
||||||
* Please do a quick search to ensure no similar bug has been reported before. If the bug has not been addressed after 2 weeks, it's fine to bump it.
|
|
||||||
* Try to ensure that the bug is actually related to the Pleroma backend. For example, if a bug happens in Pleroma-FE but not in Mastodon-FE or mobile clients, it's likely that the bug should be filed in [Pleroma-FE](https://git.pleroma.social/pleroma/pleroma-fe/issues/new) repository.
|
|
||||||
-->
|
|
||||||
|
|
||||||
### Environment
|
|
||||||
|
|
||||||
* Installation type (OTP or From Source):
|
|
||||||
* Pleroma version (could be found in the "Version" tab of settings in Pleroma-FE):
|
|
||||||
* Elixir version (`elixir -v` for from source installations, N/A for OTP):
|
|
||||||
* Operating system:
|
|
||||||
* PostgreSQL version (`psql -V`):
|
|
||||||
|
|
||||||
|
|
||||||
### Bug description
|
|
|
@ -1,6 +0,0 @@
|
||||||
### Release checklist
|
|
||||||
* [ ] Bump version in `mix.exs`
|
|
||||||
* [ ] Compile a changelog
|
|
||||||
* [ ] Create an MR with an announcement to pleroma.social
|
|
||||||
* [ ] Tag the release
|
|
||||||
* [ ] Merge `stable` into `develop` (in case the fixes are already in develop, use `git merge -s ours --no-commit` and manually merge the changelogs)
|
|
24
CHANGELOG.md
24
CHANGELOG.md
|
@ -12,6 +12,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||||
### Added
|
### Added
|
||||||
- `activeMonth` and `activeHalfyear` fields in NodeInfo usage.users object
|
- `activeMonth` and `activeHalfyear` fields in NodeInfo usage.users object
|
||||||
- Experimental support for Finch. Put `config :tesla, :adapter, {Tesla.Adapter.Finch, name: MyFinch}` in your secrets file to use it. Reverse Proxy will still use Hackney.
|
- Experimental support for Finch. Put `config :tesla, :adapter, {Tesla.Adapter.Finch, name: MyFinch}` in your secrets file to use it. Reverse Proxy will still use Hackney.
|
||||||
|
- `ForceMentionsInPostContent` MRF policy
|
||||||
- AdminAPI: allow moderators to manage reports, users, invites, and custom emojis
|
- AdminAPI: allow moderators to manage reports, users, invites, and custom emojis
|
||||||
- AdminAPI: restrict moderators to access sensitive data: change user credentials, get password reset token, read private statuses and chats, etc
|
- AdminAPI: restrict moderators to access sensitive data: change user credentials, get password reset token, read private statuses and chats, etc
|
||||||
- PleromaAPI: Add remote follow API endpoint at `POST /api/v1/pleroma/remote_interaction`
|
- PleromaAPI: Add remote follow API endpoint at `POST /api/v1/pleroma/remote_interaction`
|
||||||
|
@ -21,12 +22,17 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||||
- Ability to log slow Ecto queries by configuring `:pleroma, :telemetry, :slow_queries_logging`
|
- Ability to log slow Ecto queries by configuring `:pleroma, :telemetry, :slow_queries_logging`
|
||||||
- Added Phoenix LiveDashboard at `/phoenix/live_dashboard`
|
- Added Phoenix LiveDashboard at `/phoenix/live_dashboard`
|
||||||
- Added `/manifest.json` for progressive web apps.
|
- Added `/manifest.json` for progressive web apps.
|
||||||
|
- MastoAPI: Support for `birthday` and `show_birthday` field in `/api/v1/accounts/update_credentials`.
|
||||||
|
- Configuration: Add `birthday_required` and `birthday_min_age` settings to provide a way to require users to enter their birth date.
|
||||||
|
- PleromaAPI: Add `GET /api/v1/pleroma/birthdays` API endpoint
|
||||||
|
- Make backend-rendered pages translatable. This includes emails. Pages returned as a HTTP response are translated using the language specified in the `userLanguage` cookie, or the `Accept-Language` header. Emails are translated using the `language` field when registering. This language can be changed by `PATCH /api/v1/accounts/update_credentials` with the `language` field.
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
- Subscription(Bell) Notifications: Don't create from Pipeline Ingested replies
|
- Subscription(Bell) Notifications: Don't create from Pipeline Ingested replies
|
||||||
- Handle Reject for already-accepted Follows properly
|
- Handle Reject for already-accepted Follows properly
|
||||||
- Display OpenGraph data on alternative notice routes.
|
- Display OpenGraph data on alternative notice routes.
|
||||||
- Fix replies count for remote replies
|
- Fix replies count for remote replies
|
||||||
|
- Fixed hashtags disappearing from the end of lines when Markdown is enabled
|
||||||
- ChatAPI: Add link headers
|
- ChatAPI: Add link headers
|
||||||
- Limited number of search results to 40 to prevent DoS attacks
|
- Limited number of search results to 40 to prevent DoS attacks
|
||||||
- ActivityPub: fixed federation of attachment dimensions
|
- ActivityPub: fixed federation of attachment dimensions
|
||||||
|
@ -35,9 +41,26 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||||
- Fixed crash when pinned_objects is nil
|
- Fixed crash when pinned_objects is nil
|
||||||
- Fixed slow timelines when there are a lot of deactivated users
|
- Fixed slow timelines when there are a lot of deactivated users
|
||||||
- Fixed account deletion API
|
- Fixed account deletion API
|
||||||
|
- `Pleroma.Upload.Filter.AnalyzeMetadata`: blurhash now returns the blurhash instead of an error
|
||||||
|
|
||||||
### Removed
|
### Removed
|
||||||
|
|
||||||
|
## 2.4.3 - 2022-05-06
|
||||||
|
|
||||||
|
### Security
|
||||||
|
- Private `/objects/` and `/activities/` leaking if cached by authenticated user
|
||||||
|
- SweetXML library DTD bomb
|
||||||
|
|
||||||
|
## 2.4.2 - 2022-01-10
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- Federation issues caused by HTTP pool checkout timeouts
|
||||||
|
- Compatibility with Elixir 1.13
|
||||||
|
|
||||||
|
### Upgrade notes
|
||||||
|
|
||||||
|
1. Restart Pleroma
|
||||||
|
|
||||||
## 2.4.1 - 2021-08-29
|
## 2.4.1 - 2021-08-29
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
@ -71,6 +94,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||||
- Improved Twittercard and OpenGraph meta tag generation including thumbnails and image dimension metadata when available.
|
- Improved Twittercard and OpenGraph meta tag generation including thumbnails and image dimension metadata when available.
|
||||||
- AdminAPI: sort users so the newest are at the top.
|
- AdminAPI: sort users so the newest are at the top.
|
||||||
- ActivityPub Client-to-Server(C2S): Limitation on the type of Activity/Object are lifted as they are now passed through ObjectValidators
|
- ActivityPub Client-to-Server(C2S): Limitation on the type of Activity/Object are lifted as they are now passed through ObjectValidators
|
||||||
|
- MRF (`AntiFollowbotPolicy`): Bot accounts are now also considered followbots. Users can still allow bots to follow them by first following the bot.
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
|
|
6
COPYING
6
COPYING
|
@ -1,11 +1,11 @@
|
||||||
Unless otherwise stated this repository is copyright © 2017-2021
|
Unless otherwise stated this repository is copyright © 2017-2022
|
||||||
Pleroma Authors <https://pleroma.social/>, and is distributed under
|
Pleroma Authors <https://pleroma.social/>, and is distributed under
|
||||||
The GNU Affero General Public License Version 3, you should have received a
|
The GNU Affero General Public License Version 3, you should have received a
|
||||||
copy of the license file as AGPL-3.
|
copy of the license file as AGPL-3.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
Files inside docs directory are copyright © 2021 Pleroma Authors
|
Files inside docs directory are copyright © 2022 Pleroma Authors
|
||||||
<https://pleroma.social/>, and are distributed under the Creative Commons
|
<https://pleroma.social/>, and are distributed under the Creative Commons
|
||||||
Attribution 4.0 International license, you should have received
|
Attribution 4.0 International license, you should have received
|
||||||
a copy of the license file as CC-BY-4.0.
|
a copy of the license file as CC-BY-4.0.
|
||||||
|
@ -30,7 +30,7 @@ priv/static/images/pleroma-fox-tan-shy.png
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
The following files are copyright © 2017-2020 Pleroma Authors
|
The following files are copyright © 2017-2022 Pleroma Authors
|
||||||
<https://pleroma.social/>, and are distributed under the Creative Commons
|
<https://pleroma.social/>, and are distributed under the Creative Commons
|
||||||
Attribution-ShareAlike 4.0 International license, you should have received
|
Attribution-ShareAlike 4.0 International license, you should have received
|
||||||
a copy of the license file as CC-BY-SA-4.0.
|
a copy of the license file as CC-BY-SA-4.0.
|
||||||
|
|
|
@ -149,8 +149,6 @@ config :pleroma, Pleroma.Web.Endpoint,
|
||||||
]
|
]
|
||||||
|
|
||||||
# Configures Elixir's Logger
|
# Configures Elixir's Logger
|
||||||
config :logger, truncate: 65536
|
|
||||||
|
|
||||||
config :logger, :console,
|
config :logger, :console,
|
||||||
level: :debug,
|
level: :debug,
|
||||||
format: "\n$time $metadata[$level] $message\n",
|
format: "\n$time $metadata[$level] $message\n",
|
||||||
|
@ -259,7 +257,11 @@ config :pleroma, :instance,
|
||||||
show_reactions: true,
|
show_reactions: true,
|
||||||
password_reset_token_validity: 60 * 60 * 24,
|
password_reset_token_validity: 60 * 60 * 24,
|
||||||
profile_directory: true,
|
profile_directory: true,
|
||||||
privileged_staff: false
|
privileged_staff: false,
|
||||||
|
max_endorsed_users: 20,
|
||||||
|
birthday_required: false,
|
||||||
|
birthday_min_age: 0,
|
||||||
|
max_media_attachments: 1_000
|
||||||
|
|
||||||
config :pleroma, :welcome,
|
config :pleroma, :welcome,
|
||||||
direct_message: [
|
direct_message: [
|
||||||
|
@ -684,8 +686,8 @@ config :pleroma, :rate_limit,
|
||||||
timeline: {500, 3},
|
timeline: {500, 3},
|
||||||
search: [{1000, 10}, {1000, 30}],
|
search: [{1000, 10}, {1000, 30}],
|
||||||
app_account_creation: {1_800_000, 25},
|
app_account_creation: {1_800_000, 25},
|
||||||
relations_actions: {10_000, 10},
|
relations_actions: {10_000, 50},
|
||||||
relation_id_action: {60_000, 2},
|
relation_id_action: {60_000, 20},
|
||||||
statuses_actions: {10_000, 15},
|
statuses_actions: {10_000, 15},
|
||||||
status_id_action: {60_000, 3},
|
status_id_action: {60_000, 3},
|
||||||
password_reset: {1_800_000, 5},
|
password_reset: {1_800_000, 5},
|
||||||
|
|
|
@ -552,6 +552,14 @@ config :pleroma, :config_description, [
|
||||||
100_000
|
100_000
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
%{
|
||||||
|
key: :max_media_attachments,
|
||||||
|
type: :integer,
|
||||||
|
description: "Maximum number of post media attachments",
|
||||||
|
suggestions: [
|
||||||
|
1_000_000
|
||||||
|
]
|
||||||
|
},
|
||||||
%{
|
%{
|
||||||
key: :upload_limit,
|
key: :upload_limit,
|
||||||
type: :integer,
|
type: :integer,
|
||||||
|
@ -742,6 +750,16 @@ config :pleroma, :config_description, [
|
||||||
3
|
3
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
%{
|
||||||
|
key: :max_endorsed_users,
|
||||||
|
type: :integer,
|
||||||
|
description: "The maximum number of recommended accounts. 0 will disable the feature.",
|
||||||
|
suggestions: [
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
3
|
||||||
|
]
|
||||||
|
},
|
||||||
%{
|
%{
|
||||||
key: :autofollowed_nicknames,
|
key: :autofollowed_nicknames,
|
||||||
type: {:list, :string},
|
type: {:list, :string},
|
||||||
|
@ -947,6 +965,17 @@ config :pleroma, :config_description, [
|
||||||
type: :boolean,
|
type: :boolean,
|
||||||
description:
|
description:
|
||||||
"Let moderators access sensitive data (e.g. updating user credentials, get password reset token, delete users, index and read private statuses and chats)"
|
"Let moderators access sensitive data (e.g. updating user credentials, get password reset token, delete users, index and read private statuses and chats)"
|
||||||
|
},
|
||||||
|
%{
|
||||||
|
key: :birthday_required,
|
||||||
|
type: :boolean,
|
||||||
|
description: "Require users to enter their birthday."
|
||||||
|
},
|
||||||
|
%{
|
||||||
|
key: :birthday_min_age,
|
||||||
|
type: :integer,
|
||||||
|
description:
|
||||||
|
"Minimum required age for users to create account. Only used if birthday is required."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
|
@ -17,11 +17,11 @@ su pleroma -s $SHELL -lc "./bin/pleroma_ctl migrate"
|
||||||
## For from source installations (using git)
|
## For from source installations (using git)
|
||||||
|
|
||||||
1. Go to the working directory of Pleroma (default is `/opt/pleroma`)
|
1. Go to the working directory of Pleroma (default is `/opt/pleroma`)
|
||||||
2. Run `git pull`. This pulls the latest changes from upstream.
|
2. Run `git pull` [^1]. This pulls the latest changes from upstream.
|
||||||
3. Run `mix deps.get` [^1]. This pulls in any new dependencies.
|
3. Run `mix deps.get` [^1]. This pulls in any new dependencies.
|
||||||
4. Stop the Pleroma service.
|
4. Stop the Pleroma service.
|
||||||
5. Run `mix ecto.migrate` [^1] [^2]. This task performs database migrations, if there were any.
|
5. Run `mix ecto.migrate` [^1] [^2]. This task performs database migrations, if there were any.
|
||||||
6. Start the Pleroma service.
|
6. Start the Pleroma service.
|
||||||
|
|
||||||
[^1]: Depending on which install guide you followed (for example on Debian/Ubuntu), you want to run `mix` tasks as `pleroma` user by adding `sudo -Hu pleroma` before the command.
|
[^1]: Depending on which install guide you followed (for example on Debian/Ubuntu), you want to run `git` and `mix` tasks as `pleroma` user by adding `sudo -Hu pleroma` before the command.
|
||||||
[^2]: Prefix with `MIX_ENV=prod` to run it using the production config file.
|
[^2]: Prefix with `MIX_ENV=prod` to run it using the production config file.
|
||||||
|
|
|
@ -116,3 +116,9 @@ Feel free to contact us to be added to this list!
|
||||||
- Contact: [@r@freesoftwareextremist.com](https://freesoftwareextremist.com/users/r)
|
- Contact: [@r@freesoftwareextremist.com](https://freesoftwareextremist.com/users/r)
|
||||||
- Features: Does not requires JavaScript
|
- Features: Does not requires JavaScript
|
||||||
- Features: MastoAPI
|
- Features: MastoAPI
|
||||||
|
|
||||||
|
### Glitch-lily
|
||||||
|
- Source Code: <https://lily.kazv.moe/infra/glitch-lily>
|
||||||
|
- Contact: [@tusooa@kazv.moe](https://kazv.moe/users/tusooa)
|
||||||
|
- Features: MastoAPI
|
||||||
|
- Based on [glitch-soc](https://github.com/glitch-soc/mastodon) frontend
|
||||||
|
|
|
@ -125,6 +125,9 @@ To add configuration to your config file, you can copy it from the base config.
|
||||||
* `Pleroma.Web.ActivityPub.MRF.ActivityExpirationPolicy`: Sets a default expiration on all posts made by users of the local instance. Requires `Pleroma.Workers.PurgeExpiredActivity` to be enabled for processing the scheduled delections.
|
* `Pleroma.Web.ActivityPub.MRF.ActivityExpirationPolicy`: Sets a default expiration on all posts made by users of the local instance. Requires `Pleroma.Workers.PurgeExpiredActivity` to be enabled for processing the scheduled delections.
|
||||||
* `Pleroma.Web.ActivityPub.MRF.ForceBotUnlistedPolicy`: Makes all bot posts to disappear from public timelines.
|
* `Pleroma.Web.ActivityPub.MRF.ForceBotUnlistedPolicy`: Makes all bot posts to disappear from public timelines.
|
||||||
* `Pleroma.Web.ActivityPub.MRF.FollowBotPolicy`: Automatically follows newly discovered users from the specified bot account. Local accounts, locked accounts, and users with "#nobot" in their bio are respected and excluded from being followed.
|
* `Pleroma.Web.ActivityPub.MRF.FollowBotPolicy`: Automatically follows newly discovered users from the specified bot account. Local accounts, locked accounts, and users with "#nobot" in their bio are respected and excluded from being followed.
|
||||||
|
* `Pleroma.Web.ActivityPub.MRF.AntiFollowbotPolicy`: Drops follow requests from followbots. Users can still allow bots to follow them by first following the bot.
|
||||||
|
* `Pleroma.Web.ActivityPub.MRF.KeywordPolicy`: Rejects or removes from the federated timeline or replaces keywords. (See [`:mrf_keyword`](#mrf_keyword)).
|
||||||
|
* `Pleroma.Web.ActivityPub.MRF.ForceMentionsInContent`: Forces every mentioned user to be reflected in the post content.
|
||||||
* `transparency`: Make the content of your Message Rewrite Facility settings public (via nodeinfo).
|
* `transparency`: Make the content of your Message Rewrite Facility settings public (via nodeinfo).
|
||||||
* `transparency_exclusions`: Exclude specific instance names from MRF transparency. The use of the exclusions feature will be disclosed in nodeinfo as a boolean value.
|
* `transparency_exclusions`: Exclude specific instance names from MRF transparency. The use of the exclusions feature will be disclosed in nodeinfo as a boolean value.
|
||||||
|
|
||||||
|
|
|
@ -241,6 +241,7 @@ Additional parameters can be added to the JSON body/Form data:
|
||||||
- `discoverable` - if true, external services (search bots) etc. are allowed to index / list the account (regardless of this setting, user will still appear in regular search results).
|
- `discoverable` - if true, external services (search bots) etc. are allowed to index / list the account (regardless of this setting, user will still appear in regular search results).
|
||||||
- `actor_type` - the type of this account.
|
- `actor_type` - the type of this account.
|
||||||
- `accepts_chat_messages` - if false, this account will reject all chat messages.
|
- `accepts_chat_messages` - if false, this account will reject all chat messages.
|
||||||
|
- `language` - user's preferred language for receiving emails (digest, confirmation, etc.)
|
||||||
|
|
||||||
All images (avatar, banner and background) can be reset to the default by sending an empty string ("") instead of a file.
|
All images (avatar, banner and background) can be reset to the default by sending an empty string ("") instead of a file.
|
||||||
|
|
||||||
|
@ -292,6 +293,7 @@ Has these additional parameters (which are the same as in Pleroma-API):
|
||||||
- `captcha_token`: optional, contains provider-specific captcha token
|
- `captcha_token`: optional, contains provider-specific captcha token
|
||||||
- `captcha_answer_data`: optional, contains provider-specific captcha data
|
- `captcha_answer_data`: optional, contains provider-specific captcha data
|
||||||
- `token`: invite token required when the registrations aren't public.
|
- `token`: invite token required when the registrations aren't public.
|
||||||
|
- `language`: optional, user's preferred language for receiving emails (digest, confirmation, etc.), default to the language set in the `userLanguage` cookies or `Accept-Language` header.
|
||||||
|
|
||||||
## Instance
|
## Instance
|
||||||
|
|
||||||
|
@ -377,12 +379,6 @@ Pleroma is generally compatible with the Mastodon 2.7.2 API, but some newer feat
|
||||||
|
|
||||||
- `GET /api/v1/identity_proofs`: Returns an empty array, `[]`
|
- `GET /api/v1/identity_proofs`: Returns an empty array, `[]`
|
||||||
|
|
||||||
### Endorsements
|
|
||||||
|
|
||||||
*Added in Mastodon 2.5.0*
|
|
||||||
|
|
||||||
- `GET /api/v1/endorsements`: Returns an empty array, `[]`
|
|
||||||
|
|
||||||
### Featured tags
|
### Featured tags
|
||||||
|
|
||||||
*Added in Mastodon 3.0.0*
|
*Added in Mastodon 3.0.0*
|
||||||
|
|
|
@ -660,3 +660,38 @@ Emoji reactions work a lot like favourites do. They make it possible to react to
|
||||||
"url": "https://example.com/media/backups/archive-foobar-20200910T161803-QUhx6VYDRQ2wfV0SdA2Pfj_2CLM_ATUlw-D5l5TJf4Q.zip"
|
"url": "https://example.com/media/backups/archive-foobar-20200910T161803-QUhx6VYDRQ2wfV0SdA2Pfj_2CLM_ATUlw-D5l5TJf4Q.zip"
|
||||||
}]
|
}]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## `GET /api/oauth_tokens`
|
||||||
|
### Retrieve a list of active sessions for the user
|
||||||
|
* Method: `GET`
|
||||||
|
* Authentication: required
|
||||||
|
* Params: none
|
||||||
|
* Response: JSON
|
||||||
|
* Example response:
|
||||||
|
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"app_name": "Pleroma FE",
|
||||||
|
"id": 9275,
|
||||||
|
"valid_until": "2121-11-24T15:51:08.234234"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"app_name": "Patron",
|
||||||
|
"id": 8805,
|
||||||
|
"valid_until": "2121-10-26T18:09:59.857150"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"app_name": "Soapbox FE",
|
||||||
|
"id": 9727,
|
||||||
|
"valid_until": "2121-12-25T16:52:39.692877"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
## `DELETE /api/oauth_tokens/:id`
|
||||||
|
### Revoke a user session by its ID
|
||||||
|
* Method: `DELETE`
|
||||||
|
* Authentication: required
|
||||||
|
* Params: none
|
||||||
|
* Response: HTTP 200 on success, 500 on error
|
||||||
|
|
|
@ -5,34 +5,13 @@
|
||||||
# 2. Copy this section into your Caddyfile and restart Caddy.
|
# 2. Copy this section into your Caddyfile and restart Caddy.
|
||||||
|
|
||||||
example.tld {
|
example.tld {
|
||||||
log /var/log/caddy/pleroma_access.log
|
log {
|
||||||
errors /var/log/caddy/pleroma_error.log
|
output file /var/log/caddy/pleroma.log
|
||||||
|
}
|
||||||
|
|
||||||
gzip
|
encode gzip
|
||||||
|
|
||||||
# this is explicitly IPv4 since Pleroma.Web.Endpoint binds on IPv4 only
|
# this is explicitly IPv4 since Pleroma.Web.Endpoint binds on IPv4 only
|
||||||
# and `localhost.` resolves to [::0] on some systems: see issue #930
|
# and `localhost.` resolves to [::0] on some systems: see issue #930
|
||||||
proxy / 127.0.0.1:4000 {
|
reverse_proxy 127.0.0.1:4000
|
||||||
websocket
|
|
||||||
transparent
|
|
||||||
}
|
|
||||||
|
|
||||||
tls {
|
|
||||||
# Remove the rest of the lines in here, if you want to support older devices
|
|
||||||
key_type p256
|
|
||||||
ciphers ECDHE-ECDSA-WITH-CHACHA20-POLY1305 ECDHE-RSA-WITH-CHACHA20-POLY1305 ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-RSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-GCM-SHA256
|
|
||||||
}
|
|
||||||
|
|
||||||
# If you do not want to use the mediaproxy function, remove these lines.
|
|
||||||
# To use this directive, you need the http.cache plugin for Caddy.
|
|
||||||
cache {
|
|
||||||
match_path /media
|
|
||||||
default_max_age 720m
|
|
||||||
}
|
|
||||||
|
|
||||||
cache {
|
|
||||||
match_path /proxy
|
|
||||||
default_max_age 720m
|
|
||||||
}
|
|
||||||
# Stop removing lines here.
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Mix.Pleroma do
|
defmodule Mix.Pleroma do
|
||||||
|
|
|
@ -7,6 +7,7 @@ defmodule Mix.Tasks.Pleroma.Activity do
|
||||||
alias Pleroma.User
|
alias Pleroma.User
|
||||||
alias Pleroma.Web.CommonAPI
|
alias Pleroma.Web.CommonAPI
|
||||||
alias Pleroma.Pagination
|
alias Pleroma.Pagination
|
||||||
|
alias Pleroma.Object.Fetcher
|
||||||
require Logger
|
require Logger
|
||||||
import Mix.Pleroma
|
import Mix.Pleroma
|
||||||
import Ecto.Query
|
import Ecto.Query
|
||||||
|
@ -19,6 +20,13 @@ defmodule Mix.Tasks.Pleroma.Activity do
|
||||||
|> IO.inspect()
|
|> IO.inspect()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def run(["fetch", id | _rest]) do
|
||||||
|
start_pleroma()
|
||||||
|
id
|
||||||
|
|> Fetcher.fetch_and_contain_remote_object_from_id()
|
||||||
|
|> IO.inspect()
|
||||||
|
end
|
||||||
|
|
||||||
def run(["delete_by_keyword", user, keyword | _rest]) do
|
def run(["delete_by_keyword", user, keyword | _rest]) do
|
||||||
start_pleroma()
|
start_pleroma()
|
||||||
u = User.get_by_nickname(user)
|
u = User.get_by_nickname(user)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Mix.Tasks.Pleroma.App do
|
defmodule Mix.Tasks.Pleroma.App do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Mix.Tasks.Pleroma.Benchmark do
|
defmodule Mix.Tasks.Pleroma.Benchmark do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Mix.Tasks.Pleroma.Config do
|
defmodule Mix.Tasks.Pleroma.Config do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Mix.Tasks.Pleroma.CountStatuses do
|
defmodule Mix.Tasks.Pleroma.CountStatuses do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Mix.Tasks.Pleroma.Database do
|
defmodule Mix.Tasks.Pleroma.Database do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Mix.Tasks.Pleroma.Digest do
|
defmodule Mix.Tasks.Pleroma.Digest do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Mix.Tasks.Pleroma.Docs do
|
defmodule Mix.Tasks.Pleroma.Docs do
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-onl
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Mix.Tasks.Pleroma.Ecto do
|
defmodule Mix.Tasks.Pleroma.Ecto do
|
||||||
@doc """
|
@doc """
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-onl
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Mix.Tasks.Pleroma.Ecto.Migrate do
|
defmodule Mix.Tasks.Pleroma.Ecto.Migrate do
|
||||||
use Mix.Task
|
use Mix.Task
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-onl
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Mix.Tasks.Pleroma.Ecto.Rollback do
|
defmodule Mix.Tasks.Pleroma.Ecto.Rollback do
|
||||||
use Mix.Task
|
use Mix.Task
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Mix.Tasks.Pleroma.Email do
|
defmodule Mix.Tasks.Pleroma.Email do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Mix.Tasks.Pleroma.Emoji do
|
defmodule Mix.Tasks.Pleroma.Emoji do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Mix.Tasks.Pleroma.Frontend do
|
defmodule Mix.Tasks.Pleroma.Frontend do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Mix.Tasks.Pleroma.Instance do
|
defmodule Mix.Tasks.Pleroma.Instance do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Mix.Tasks.Pleroma.NotificationSettings do
|
defmodule Mix.Tasks.Pleroma.NotificationSettings do
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
# Pleroma: A lightweight social networking server
|
||||||
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Mix.Tasks.Pleroma.OpenapiSpec do
|
defmodule Mix.Tasks.Pleroma.OpenapiSpec do
|
||||||
def run([path]) do
|
def run([path]) do
|
||||||
# Load Pleroma application to get version info
|
# Load Pleroma application to get version info
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Mix.Tasks.Pleroma.RefreshCounterCache do
|
defmodule Mix.Tasks.Pleroma.RefreshCounterCache do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Mix.Tasks.Pleroma.Relay do
|
defmodule Mix.Tasks.Pleroma.Relay do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Mix.Tasks.Pleroma.RobotsTxt do
|
defmodule Mix.Tasks.Pleroma.RobotsTxt do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Mix.Tasks.Pleroma.Uploads do
|
defmodule Mix.Tasks.Pleroma.Uploads do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Mix.Tasks.Pleroma.User do
|
defmodule Mix.Tasks.Pleroma.User do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Phoenix.Transports.WebSocket.Raw do
|
defmodule Phoenix.Transports.WebSocket.Raw do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Activity do
|
defmodule Pleroma.Activity do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Activity.HTML do
|
defmodule Pleroma.Activity.HTML do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Activity.Ir.Topics do
|
defmodule Pleroma.Activity.Ir.Topics do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Activity.Queries do
|
defmodule Pleroma.Activity.Queries do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Activity.Search do
|
defmodule Pleroma.Activity.Search do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Application do
|
defmodule Pleroma.Application do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.ApplicationRequirements do
|
defmodule Pleroma.ApplicationRequirements do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.BBS.Authenticator do
|
defmodule Pleroma.BBS.Authenticator do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.BBS.Handler do
|
defmodule Pleroma.BBS.Handler do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Bookmark do
|
defmodule Pleroma.Bookmark do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Caching do
|
defmodule Pleroma.Caching do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Captcha do
|
defmodule Pleroma.Captcha do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Captcha.Kocaptcha do
|
defmodule Pleroma.Captcha.Kocaptcha do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Captcha.Native do
|
defmodule Pleroma.Captcha.Native do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Captcha.Service do
|
defmodule Pleroma.Captcha.Service do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Chat do
|
defmodule Pleroma.Chat do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Chat.MessageReference do
|
defmodule Pleroma.Chat.MessageReference do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Clippy do
|
defmodule Pleroma.Clippy do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Config do
|
defmodule Pleroma.Config do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Config.DeprecationWarnings do
|
defmodule Pleroma.Config.DeprecationWarnings do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Config.Getting do
|
defmodule Pleroma.Config.Getting do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Config.Helpers do
|
defmodule Pleroma.Config.Helpers do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Config.Holder do
|
defmodule Pleroma.Config.Holder do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Config.Loader do
|
defmodule Pleroma.Config.Loader do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Config.Oban do
|
defmodule Pleroma.Config.Oban do
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
# Pleroma: A lightweight social networking server
|
||||||
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Config.ReleaseRuntimeProvider do
|
defmodule Pleroma.Config.ReleaseRuntimeProvider do
|
||||||
@moduledoc """
|
@moduledoc """
|
||||||
Imports runtime config and `{env}.exported_from_db.secret.exs` for releases.
|
Imports runtime config and `{env}.exported_from_db.secret.exs` for releases.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Config.TransferTask do
|
defmodule Pleroma.Config.TransferTask do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.ConfigDB do
|
defmodule Pleroma.ConfigDB do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Constants do
|
defmodule Pleroma.Constants do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Conversation do
|
defmodule Pleroma.Conversation do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Conversation.Participation do
|
defmodule Pleroma.Conversation.Participation do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Conversation.Participation.RecipientShip do
|
defmodule Pleroma.Conversation.Participation.RecipientShip do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.CounterCache do
|
defmodule Pleroma.CounterCache do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.DataMigration do
|
defmodule Pleroma.DataMigration do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Delivery do
|
defmodule Pleroma.Delivery do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Docs.Generator do
|
defmodule Pleroma.Docs.Generator do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Docs.JSON do
|
defmodule Pleroma.Docs.JSON do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Docs.Markdown do
|
defmodule Pleroma.Docs.Markdown do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
import EctoEnum
|
import EctoEnum
|
||||||
|
@ -10,7 +10,8 @@ defenum(Pleroma.UserRelationship.Type,
|
||||||
reblog_mute: 3,
|
reblog_mute: 3,
|
||||||
notification_mute: 4,
|
notification_mute: 4,
|
||||||
inverse_subscription: 5,
|
inverse_subscription: 5,
|
||||||
suggestion_dismiss: 6
|
suggestion_dismiss: 6,
|
||||||
|
endorsement: 7
|
||||||
)
|
)
|
||||||
|
|
||||||
defenum(Pleroma.FollowingRelationship.State,
|
defenum(Pleroma.FollowingRelationship.State,
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.EctoType.ActivityPub.ObjectValidators.DateTime do
|
defmodule Pleroma.EctoType.ActivityPub.ObjectValidators.DateTime do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.EctoType.ActivityPub.ObjectValidators.Emoji do
|
defmodule Pleroma.EctoType.ActivityPub.ObjectValidators.Emoji do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.EctoType.ActivityPub.ObjectValidators.ObjectID do
|
defmodule Pleroma.EctoType.ActivityPub.ObjectValidators.ObjectID do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.EctoType.ActivityPub.ObjectValidators.Recipients do
|
defmodule Pleroma.EctoType.ActivityPub.ObjectValidators.Recipients do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.EctoType.ActivityPub.ObjectValidators.SafeText do
|
defmodule Pleroma.EctoType.ActivityPub.ObjectValidators.SafeText do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.EctoType.ActivityPub.ObjectValidators.Uri do
|
defmodule Pleroma.EctoType.ActivityPub.ObjectValidators.Uri do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.EctoType.Config.Atom do
|
defmodule Pleroma.EctoType.Config.Atom do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.EctoType.Config.BinaryValue do
|
defmodule Pleroma.EctoType.Config.BinaryValue do
|
||||||
|
|
|
@ -1,7 +1,3 @@
|
||||||
# Akkoma: A lightweight social networking server
|
|
||||||
# Copyright © 2022-2022 Akkoma Authors <https://git.ihatebeinga.live/IHBAGang/akkoma/>
|
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
|
||||||
|
|
||||||
defmodule Pleroma.Elasticsearch.DocumentMappings.Activity do
|
defmodule Pleroma.Elasticsearch.DocumentMappings.Activity do
|
||||||
alias Pleroma.Object
|
alias Pleroma.Object
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,3 @@
|
||||||
# Akkoma: A lightweight social networking server
|
|
||||||
# Copyright © 2022-2022 Akkoma Authors <https://git.ihatebeinga.live/IHBAGang/akkoma/>
|
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
|
||||||
|
|
||||||
defmodule Pleroma.Elasticsearch.DocumentMappings.Hashtag do
|
defmodule Pleroma.Elasticsearch.DocumentMappings.Hashtag do
|
||||||
def id(obj), do: obj.id
|
def id(obj), do: obj.id
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,3 @@
|
||||||
# Akkoma: A lightweight social networking server
|
|
||||||
# Copyright © 2022-2022 Akkoma Authors <https://git.ihatebeinga.live/IHBAGang/akkoma/>
|
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
|
||||||
|
|
||||||
defmodule Pleroma.Elasticsearch.DocumentMappings.User do
|
defmodule Pleroma.Elasticsearch.DocumentMappings.User do
|
||||||
def id(obj), do: obj.id
|
def id(obj), do: obj.id
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,3 @@
|
||||||
# Akkoma: A lightweight social networking server
|
|
||||||
# Copyright © 2022-2022 Akkoma Authors <https://git.ihatebeinga.live/IHBAGang/akkoma/>
|
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
|
||||||
|
|
||||||
defmodule Pleroma.Elasticsearch do
|
defmodule Pleroma.Elasticsearch do
|
||||||
alias Pleroma.Activity
|
alias Pleroma.Activity
|
||||||
alias Pleroma.User
|
alias Pleroma.User
|
||||||
|
@ -143,7 +139,6 @@ defmodule Pleroma.Elasticsearch do
|
||||||
def bulk_post(data, :users) do
|
def bulk_post(data, :users) do
|
||||||
d =
|
d =
|
||||||
data
|
data
|
||||||
|> Enum.filter(fn x -> x.actor_type == "Person" end)
|
|
||||||
|> Enum.map(fn d ->
|
|> Enum.map(fn d ->
|
||||||
[
|
[
|
||||||
%{index: %{_id: DocumentMappings.User.id(d)}},
|
%{index: %{_id: DocumentMappings.User.id(d)}},
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Emails.AdminEmail do
|
defmodule Pleroma.Emails.AdminEmail do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Emails.Mailer do
|
defmodule Pleroma.Emails.Mailer do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Emails.NewUsersDigestEmail do
|
defmodule Pleroma.Emails.NewUsersDigestEmail do
|
||||||
|
|
|
@ -1,13 +1,16 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Emails.UserEmail do
|
defmodule Pleroma.Emails.UserEmail do
|
||||||
@moduledoc "User emails"
|
@moduledoc "User emails"
|
||||||
|
|
||||||
|
require Pleroma.Web.Gettext
|
||||||
|
|
||||||
alias Pleroma.Config
|
alias Pleroma.Config
|
||||||
alias Pleroma.User
|
alias Pleroma.User
|
||||||
alias Pleroma.Web.Endpoint
|
alias Pleroma.Web.Endpoint
|
||||||
|
alias Pleroma.Web.Gettext
|
||||||
alias Pleroma.Web.Router
|
alias Pleroma.Web.Router
|
||||||
|
|
||||||
import Swoosh.Email
|
import Swoosh.Email
|
||||||
|
@ -27,29 +30,75 @@ defmodule Pleroma.Emails.UserEmail do
|
||||||
|
|
||||||
@spec welcome(User.t(), map()) :: Swoosh.Email.t()
|
@spec welcome(User.t(), map()) :: Swoosh.Email.t()
|
||||||
def welcome(user, opts \\ %{}) do
|
def welcome(user, opts \\ %{}) do
|
||||||
new()
|
Gettext.with_locale_or_default user.language do
|
||||||
|> to(recipient(user))
|
new()
|
||||||
|> from(Map.get(opts, :sender, sender()))
|
|> to(recipient(user))
|
||||||
|> subject(Map.get(opts, :subject, "Welcome to #{instance_name()}!"))
|
|> from(Map.get(opts, :sender, sender()))
|
||||||
|> html_body(Map.get(opts, :html, "Welcome to #{instance_name()}!"))
|
|> subject(
|
||||||
|> text_body(Map.get(opts, :text, "Welcome to #{instance_name()}!"))
|
Map.get(
|
||||||
|
opts,
|
||||||
|
:subject,
|
||||||
|
Gettext.dpgettext(
|
||||||
|
"static_pages",
|
||||||
|
"welcome email subject",
|
||||||
|
"Welcome to %{instance_name}!",
|
||||||
|
instance_name: instance_name()
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|> html_body(
|
||||||
|
Map.get(
|
||||||
|
opts,
|
||||||
|
:html,
|
||||||
|
Gettext.dpgettext(
|
||||||
|
"static_pages",
|
||||||
|
"welcome email html body",
|
||||||
|
"Welcome to %{instance_name}!",
|
||||||
|
instance_name: instance_name()
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|> text_body(
|
||||||
|
Map.get(
|
||||||
|
opts,
|
||||||
|
:text,
|
||||||
|
Gettext.dpgettext(
|
||||||
|
"static_pages",
|
||||||
|
"welcome email text body",
|
||||||
|
"Welcome to %{instance_name}!",
|
||||||
|
instance_name: instance_name()
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def password_reset_email(user, token) when is_binary(token) do
|
def password_reset_email(user, token) when is_binary(token) do
|
||||||
password_reset_url = Router.Helpers.reset_password_url(Endpoint, :reset, token)
|
Gettext.with_locale_or_default user.language do
|
||||||
|
password_reset_url = Router.Helpers.reset_password_url(Endpoint, :reset, token)
|
||||||
|
|
||||||
html_body = """
|
html_body =
|
||||||
<h3>Reset your password at #{instance_name()}</h3>
|
Gettext.dpgettext(
|
||||||
<p>Someone has requested password change for your account at #{instance_name()}.</p>
|
"static_pages",
|
||||||
<p>If it was you, visit the following link to proceed: <a href="#{password_reset_url}">reset password</a>.</p>
|
"password reset email body",
|
||||||
<p>If it was someone else, nothing to worry about: your data is secure and your password has not been changed.</p>
|
"""
|
||||||
"""
|
<h3>Reset your password at %{instance_name}</h3>
|
||||||
|
<p>Someone has requested password change for your account at %{instance_name}.</p>
|
||||||
|
<p>If it was you, visit the following link to proceed: <a href="%{password_reset_url}">reset password</a>.</p>
|
||||||
|
<p>If it was someone else, nothing to worry about: your data is secure and your password has not been changed.</p>
|
||||||
|
""",
|
||||||
|
instance_name: instance_name(),
|
||||||
|
password_reset_url: password_reset_url
|
||||||
|
)
|
||||||
|
|
||||||
new()
|
new()
|
||||||
|> to(recipient(user))
|
|> to(recipient(user))
|
||||||
|> from(sender())
|
|> from(sender())
|
||||||
|> subject("Password reset")
|
|> subject(
|
||||||
|> html_body(html_body)
|
Gettext.dpgettext("static_pages", "password reset email subject", "Password reset")
|
||||||
|
)
|
||||||
|
|> html_body(html_body)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def user_invitation_email(
|
def user_invitation_email(
|
||||||
|
@ -58,73 +107,136 @@ defmodule Pleroma.Emails.UserEmail do
|
||||||
to_email,
|
to_email,
|
||||||
to_name \\ nil
|
to_name \\ nil
|
||||||
) do
|
) do
|
||||||
registration_url =
|
Gettext.with_locale_or_default user.language do
|
||||||
Router.Helpers.redirect_url(
|
registration_url =
|
||||||
Endpoint,
|
Router.Helpers.redirect_url(
|
||||||
:registration_page,
|
Endpoint,
|
||||||
user_invite_token.token
|
:registration_page,
|
||||||
|
user_invite_token.token
|
||||||
|
)
|
||||||
|
|
||||||
|
html_body =
|
||||||
|
Gettext.dpgettext(
|
||||||
|
"static_pages",
|
||||||
|
"user invitation email body",
|
||||||
|
"""
|
||||||
|
<h3>You are invited to %{instance_name}</h3>
|
||||||
|
<p>%{inviter_name} invites you to join %{instance_name}, an instance of Pleroma federated social networking platform.</p>
|
||||||
|
<p>Click the following link to register: <a href="%{registration_url}">accept invitation</a>.</p>
|
||||||
|
""",
|
||||||
|
instance_name: instance_name(),
|
||||||
|
inviter_name: user.name,
|
||||||
|
registration_url: registration_url
|
||||||
|
)
|
||||||
|
|
||||||
|
new()
|
||||||
|
|> to(recipient(to_email, to_name))
|
||||||
|
|> from(sender())
|
||||||
|
|> subject(
|
||||||
|
Gettext.dpgettext(
|
||||||
|
"static_pages",
|
||||||
|
"user invitation email subject",
|
||||||
|
"Invitation to %{instance_name}",
|
||||||
|
instance_name: instance_name()
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|> html_body(html_body)
|
||||||
html_body = """
|
end
|
||||||
<h3>You are invited to #{instance_name()}</h3>
|
|
||||||
<p>#{user.name} invites you to join #{instance_name()}, an instance of Pleroma federated social networking platform.</p>
|
|
||||||
<p>Click the following link to register: <a href="#{registration_url}">accept invitation</a>.</p>
|
|
||||||
"""
|
|
||||||
|
|
||||||
new()
|
|
||||||
|> to(recipient(to_email, to_name))
|
|
||||||
|> from(sender())
|
|
||||||
|> subject("Invitation to #{instance_name()}")
|
|
||||||
|> html_body(html_body)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def account_confirmation_email(user) do
|
def account_confirmation_email(user) do
|
||||||
confirmation_url =
|
Gettext.with_locale_or_default user.language do
|
||||||
Router.Helpers.confirm_email_url(
|
confirmation_url =
|
||||||
Endpoint,
|
Router.Helpers.confirm_email_url(
|
||||||
:confirm_email,
|
Endpoint,
|
||||||
user.id,
|
:confirm_email,
|
||||||
to_string(user.confirmation_token)
|
user.id,
|
||||||
|
to_string(user.confirmation_token)
|
||||||
|
)
|
||||||
|
|
||||||
|
html_body =
|
||||||
|
Gettext.dpgettext(
|
||||||
|
"static_pages",
|
||||||
|
"confirmation email body",
|
||||||
|
"""
|
||||||
|
<h3>Thank you for registering on %{instance_name}</h3>
|
||||||
|
<p>Email confirmation is required to activate the account.</p>
|
||||||
|
<p>Please click the following link to <a href="%{confirmation_url}">activate your account</a>.</p>
|
||||||
|
""",
|
||||||
|
instance_name: instance_name(),
|
||||||
|
confirmation_url: confirmation_url
|
||||||
|
)
|
||||||
|
|
||||||
|
new()
|
||||||
|
|> to(recipient(user))
|
||||||
|
|> from(sender())
|
||||||
|
|> subject(
|
||||||
|
Gettext.dpgettext(
|
||||||
|
"static_pages",
|
||||||
|
"confirmation email subject",
|
||||||
|
"%{instance_name} account confirmation",
|
||||||
|
instance_name: instance_name()
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|> html_body(html_body)
|
||||||
html_body = """
|
end
|
||||||
<h3>Thank you for registering on #{instance_name()}</h3>
|
|
||||||
<p>Email confirmation is required to activate the account.</p>
|
|
||||||
<p>Please click the following link to <a href="#{confirmation_url}">activate your account</a>.</p>
|
|
||||||
"""
|
|
||||||
|
|
||||||
new()
|
|
||||||
|> to(recipient(user))
|
|
||||||
|> from(sender())
|
|
||||||
|> subject("#{instance_name()} account confirmation")
|
|
||||||
|> html_body(html_body)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def approval_pending_email(user) do
|
def approval_pending_email(user) do
|
||||||
html_body = """
|
Gettext.with_locale_or_default user.language do
|
||||||
<h3>Awaiting Approval</h3>
|
html_body =
|
||||||
<p>Your account at #{instance_name()} is being reviewed by staff. You will receive another email once your account is approved.</p>
|
Gettext.dpgettext(
|
||||||
"""
|
"static_pages",
|
||||||
|
"approval pending email body",
|
||||||
|
"""
|
||||||
|
<h3>Awaiting Approval</h3>
|
||||||
|
<p>Your account at %{instance_name} is being reviewed by staff. You will receive another email once your account is approved.</p>
|
||||||
|
""",
|
||||||
|
instance_name: instance_name()
|
||||||
|
)
|
||||||
|
|
||||||
new()
|
new()
|
||||||
|> to(recipient(user))
|
|> to(recipient(user))
|
||||||
|> from(sender())
|
|> from(sender())
|
||||||
|> subject("Your account is awaiting approval")
|
|> subject(
|
||||||
|> html_body(html_body)
|
Gettext.dpgettext(
|
||||||
|
"static_pages",
|
||||||
|
"approval pending email subject",
|
||||||
|
"Your account is awaiting approval"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|> html_body(html_body)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def successful_registration_email(user) do
|
def successful_registration_email(user) do
|
||||||
html_body = """
|
Gettext.with_locale_or_default user.language do
|
||||||
<h3>Hello @#{user.nickname},</h3>
|
html_body =
|
||||||
<p>Your account at #{instance_name()} has been registered successfully.</p>
|
Gettext.dpgettext(
|
||||||
<p>No further action is required to activate your account.</p>
|
"static_pages",
|
||||||
"""
|
"successful registration email body",
|
||||||
|
"""
|
||||||
|
<h3>Hello @%{nickname},</h3>
|
||||||
|
<p>Your account at %{instance_name} has been registered successfully.</p>
|
||||||
|
<p>No further action is required to activate your account.</p>
|
||||||
|
""",
|
||||||
|
nickname: user.nickname,
|
||||||
|
instance_name: instance_name()
|
||||||
|
)
|
||||||
|
|
||||||
new()
|
new()
|
||||||
|> to(recipient(user))
|
|> to(recipient(user))
|
||||||
|> from(sender())
|
|> from(sender())
|
||||||
|> subject("Account registered on #{instance_name()}")
|
|> subject(
|
||||||
|> html_body(html_body)
|
Gettext.dpgettext(
|
||||||
|
"static_pages",
|
||||||
|
"successful registration email subject",
|
||||||
|
"Account registered on %{instance_name}",
|
||||||
|
instance_name: instance_name()
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|> html_body(html_body)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@doc """
|
@doc """
|
||||||
|
@ -134,69 +246,78 @@ defmodule Pleroma.Emails.UserEmail do
|
||||||
"""
|
"""
|
||||||
@spec digest_email(User.t()) :: Swoosh.Email.t() | nil
|
@spec digest_email(User.t()) :: Swoosh.Email.t() | nil
|
||||||
def digest_email(user) do
|
def digest_email(user) do
|
||||||
notifications = Pleroma.Notification.for_user_since(user, user.last_digest_emailed_at)
|
Gettext.with_locale_or_default user.language do
|
||||||
|
notifications = Pleroma.Notification.for_user_since(user, user.last_digest_emailed_at)
|
||||||
|
|
||||||
mentions =
|
mentions =
|
||||||
notifications
|
notifications
|
||||||
|> Enum.filter(&(&1.activity.data["type"] == "Create"))
|
|> Enum.filter(&(&1.activity.data["type"] == "Create"))
|
||||||
|> Enum.map(fn notification ->
|
|> Enum.map(fn notification ->
|
||||||
object = Pleroma.Object.normalize(notification.activity, fetch: false)
|
object = Pleroma.Object.normalize(notification.activity, fetch: false)
|
||||||
|
|
||||||
if not is_nil(object) do
|
if not is_nil(object) do
|
||||||
object = update_in(object.data["content"], &format_links/1)
|
object = update_in(object.data["content"], &format_links/1)
|
||||||
|
|
||||||
%{
|
%{
|
||||||
data: notification,
|
data: notification,
|
||||||
object: object,
|
object: object,
|
||||||
from: User.get_by_ap_id(notification.activity.actor)
|
from: User.get_by_ap_id(notification.activity.actor)
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|> Enum.filter(& &1)
|
|> Enum.filter(& &1)
|
||||||
|
|
||||||
followers =
|
followers =
|
||||||
notifications
|
notifications
|
||||||
|> Enum.filter(&(&1.activity.data["type"] == "Follow"))
|
|> Enum.filter(&(&1.activity.data["type"] == "Follow"))
|
||||||
|> Enum.map(fn notification ->
|
|> Enum.map(fn notification ->
|
||||||
from = User.get_by_ap_id(notification.activity.actor)
|
from = User.get_by_ap_id(notification.activity.actor)
|
||||||
|
|
||||||
if not is_nil(from) do
|
if not is_nil(from) do
|
||||||
%{
|
%{
|
||||||
data: notification,
|
data: notification,
|
||||||
object: Pleroma.Object.normalize(notification.activity, fetch: false),
|
object: Pleroma.Object.normalize(notification.activity, fetch: false),
|
||||||
from: User.get_by_ap_id(notification.activity.actor)
|
from: User.get_by_ap_id(notification.activity.actor)
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|> Enum.filter(& &1)
|
|> Enum.filter(& &1)
|
||||||
|
|
||||||
unless Enum.empty?(mentions) do
|
unless Enum.empty?(mentions) do
|
||||||
styling = Config.get([__MODULE__, :styling])
|
styling = Config.get([__MODULE__, :styling])
|
||||||
logo = Config.get([__MODULE__, :logo])
|
logo = Config.get([__MODULE__, :logo])
|
||||||
|
|
||||||
html_data = %{
|
html_data = %{
|
||||||
instance: instance_name(),
|
instance: instance_name(),
|
||||||
user: user,
|
user: user,
|
||||||
mentions: mentions,
|
mentions: mentions,
|
||||||
followers: followers,
|
followers: followers,
|
||||||
unsubscribe_link: unsubscribe_url(user, "digest"),
|
unsubscribe_link: unsubscribe_url(user, "digest"),
|
||||||
styling: styling
|
styling: styling
|
||||||
}
|
}
|
||||||
|
|
||||||
logo_path =
|
logo_path =
|
||||||
if is_nil(logo) do
|
if is_nil(logo) do
|
||||||
Path.join(:code.priv_dir(:pleroma), "static/static/logo.svg")
|
Path.join(:code.priv_dir(:pleroma), "static/static/logo.svg")
|
||||||
else
|
else
|
||||||
Path.join(Config.get([:instance, :static_dir]), logo)
|
Path.join(Config.get([:instance, :static_dir]), logo)
|
||||||
end
|
end
|
||||||
|
|
||||||
new()
|
new()
|
||||||
|> to(recipient(user))
|
|> to(recipient(user))
|
||||||
|> from(sender())
|
|> from(sender())
|
||||||
|> subject("Your digest from #{instance_name()}")
|
|> subject(
|
||||||
|> put_layout(false)
|
Gettext.dpgettext(
|
||||||
|> render_body("digest.html", html_data)
|
"static_pages",
|
||||||
|> attachment(Swoosh.Attachment.new(logo_path, filename: "logo.svg", type: :inline))
|
"digest email subject",
|
||||||
|
"Your digest from %{instance_name}",
|
||||||
|
instance_name: instance_name()
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|> put_layout(false)
|
||||||
|
|> render_body("digest.html", html_data)
|
||||||
|
|> attachment(Swoosh.Attachment.new(logo_path, filename: "logo.svg", type: :inline))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -226,27 +347,47 @@ defmodule Pleroma.Emails.UserEmail do
|
||||||
|
|
||||||
def backup_is_ready_email(backup, admin_user_id \\ nil) do
|
def backup_is_ready_email(backup, admin_user_id \\ nil) do
|
||||||
%{user: user} = Pleroma.Repo.preload(backup, :user)
|
%{user: user} = Pleroma.Repo.preload(backup, :user)
|
||||||
download_url = Pleroma.Web.PleromaAPI.BackupView.download_url(backup)
|
|
||||||
|
|
||||||
html_body =
|
Gettext.with_locale_or_default user.language do
|
||||||
if is_nil(admin_user_id) do
|
download_url = Pleroma.Web.PleromaAPI.BackupView.download_url(backup)
|
||||||
"""
|
|
||||||
<p>You requested a full backup of your Pleroma account. It's ready for download:</p>
|
|
||||||
<p><a href="#{download_url}">#{download_url}</a></p>
|
|
||||||
"""
|
|
||||||
else
|
|
||||||
admin = Pleroma.Repo.get(User, admin_user_id)
|
|
||||||
|
|
||||||
"""
|
html_body =
|
||||||
<p>Admin @#{admin.nickname} requested a full backup of your Pleroma account. It's ready for download:</p>
|
if is_nil(admin_user_id) do
|
||||||
<p><a href="#{download_url}">#{download_url}</a></p>
|
Gettext.dpgettext(
|
||||||
"""
|
"static_pages",
|
||||||
end
|
"account archive email body - self-requested",
|
||||||
|
"""
|
||||||
|
<p>You requested a full backup of your Pleroma account. It's ready for download:</p>
|
||||||
|
<p><a href="%{download_url}">%{download_url}</a></p>
|
||||||
|
""",
|
||||||
|
download_url: download_url
|
||||||
|
)
|
||||||
|
else
|
||||||
|
admin = Pleroma.Repo.get(User, admin_user_id)
|
||||||
|
|
||||||
new()
|
Gettext.dpgettext(
|
||||||
|> to(recipient(user))
|
"static_pages",
|
||||||
|> from(sender())
|
"account archive email body - admin requested",
|
||||||
|> subject("Your account archive is ready")
|
"""
|
||||||
|> html_body(html_body)
|
<p>Admin @%{admin_nickname} requested a full backup of your Pleroma account. It's ready for download:</p>
|
||||||
|
<p><a href="%{download_url}">%{download_url}</a></p>
|
||||||
|
""",
|
||||||
|
admin_nickname: admin.nickname,
|
||||||
|
download_url: download_url
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
new()
|
||||||
|
|> to(recipient(user))
|
||||||
|
|> from(sender())
|
||||||
|
|> subject(
|
||||||
|
Gettext.dpgettext(
|
||||||
|
"static_pages",
|
||||||
|
"account archive email subject",
|
||||||
|
"Your account archive is ready"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|> html_body(html_body)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
# emoji-test.txt
|
# emoji-test.txt
|
||||||
# Date: 2020-09-12, 22:19:50 GMT
|
# Date: 2021-08-26, 17:22:23 GMT
|
||||||
# © 2020 Unicode®, Inc.
|
# © 2021 Unicode®, Inc.
|
||||||
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
|
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
|
||||||
# For terms of use, see http://www.unicode.org/terms_of_use.html
|
# For terms of use, see http://www.unicode.org/terms_of_use.html
|
||||||
#
|
#
|
||||||
# Emoji Keyboard/Display Test Data for UTS #51
|
# Emoji Keyboard/Display Test Data for UTS #51
|
||||||
# Version: 13.1
|
# Version: 14.0
|
||||||
#
|
#
|
||||||
# For documentation and usage, see http://www.unicode.org/reports/tr51
|
# For documentation and usage, see http://www.unicode.org/reports/tr51
|
||||||
#
|
#
|
||||||
|
@ -43,6 +43,7 @@
|
||||||
1F602 ; fully-qualified # 😂 E0.6 face with tears of joy
|
1F602 ; fully-qualified # 😂 E0.6 face with tears of joy
|
||||||
1F642 ; fully-qualified # 🙂 E1.0 slightly smiling face
|
1F642 ; fully-qualified # 🙂 E1.0 slightly smiling face
|
||||||
1F643 ; fully-qualified # 🙃 E1.0 upside-down face
|
1F643 ; fully-qualified # 🙃 E1.0 upside-down face
|
||||||
|
1FAE0 ; fully-qualified # 🫠 E14.0 melting face
|
||||||
1F609 ; fully-qualified # 😉 E0.6 winking face
|
1F609 ; fully-qualified # 😉 E0.6 winking face
|
||||||
1F60A ; fully-qualified # 😊 E0.6 smiling face with smiling eyes
|
1F60A ; fully-qualified # 😊 E0.6 smiling face with smiling eyes
|
||||||
1F607 ; fully-qualified # 😇 E1.0 smiling face with halo
|
1F607 ; fully-qualified # 😇 E1.0 smiling face with halo
|
||||||
|
@ -68,10 +69,13 @@
|
||||||
1F911 ; fully-qualified # 🤑 E1.0 money-mouth face
|
1F911 ; fully-qualified # 🤑 E1.0 money-mouth face
|
||||||
|
|
||||||
# subgroup: face-hand
|
# subgroup: face-hand
|
||||||
1F917 ; fully-qualified # 🤗 E1.0 hugging face
|
1F917 ; fully-qualified # 🤗 E1.0 smiling face with open hands
|
||||||
1F92D ; fully-qualified # 🤭 E5.0 face with hand over mouth
|
1F92D ; fully-qualified # 🤭 E5.0 face with hand over mouth
|
||||||
|
1FAE2 ; fully-qualified # 🫢 E14.0 face with open eyes and hand over mouth
|
||||||
|
1FAE3 ; fully-qualified # 🫣 E14.0 face with peeking eye
|
||||||
1F92B ; fully-qualified # 🤫 E5.0 shushing face
|
1F92B ; fully-qualified # 🤫 E5.0 shushing face
|
||||||
1F914 ; fully-qualified # 🤔 E1.0 thinking face
|
1F914 ; fully-qualified # 🤔 E1.0 thinking face
|
||||||
|
1FAE1 ; fully-qualified # 🫡 E14.0 saluting face
|
||||||
|
|
||||||
# subgroup: face-neutral-skeptical
|
# subgroup: face-neutral-skeptical
|
||||||
1F910 ; fully-qualified # 🤐 E1.0 zipper-mouth face
|
1F910 ; fully-qualified # 🤐 E1.0 zipper-mouth face
|
||||||
|
@ -79,6 +83,7 @@
|
||||||
1F610 ; fully-qualified # 😐 E0.7 neutral face
|
1F610 ; fully-qualified # 😐 E0.7 neutral face
|
||||||
1F611 ; fully-qualified # 😑 E1.0 expressionless face
|
1F611 ; fully-qualified # 😑 E1.0 expressionless face
|
||||||
1F636 ; fully-qualified # 😶 E1.0 face without mouth
|
1F636 ; fully-qualified # 😶 E1.0 face without mouth
|
||||||
|
1FAE5 ; fully-qualified # 🫥 E14.0 dotted line face
|
||||||
1F636 200D 1F32B FE0F ; fully-qualified # 😶🌫️ E13.1 face in clouds
|
1F636 200D 1F32B FE0F ; fully-qualified # 😶🌫️ E13.1 face in clouds
|
||||||
1F636 200D 1F32B ; minimally-qualified # 😶🌫 E13.1 face in clouds
|
1F636 200D 1F32B ; minimally-qualified # 😶🌫 E13.1 face in clouds
|
||||||
1F60F ; fully-qualified # 😏 E0.6 smirking face
|
1F60F ; fully-qualified # 😏 E0.6 smirking face
|
||||||
|
@ -105,7 +110,7 @@
|
||||||
1F975 ; fully-qualified # 🥵 E11.0 hot face
|
1F975 ; fully-qualified # 🥵 E11.0 hot face
|
||||||
1F976 ; fully-qualified # 🥶 E11.0 cold face
|
1F976 ; fully-qualified # 🥶 E11.0 cold face
|
||||||
1F974 ; fully-qualified # 🥴 E11.0 woozy face
|
1F974 ; fully-qualified # 🥴 E11.0 woozy face
|
||||||
1F635 ; fully-qualified # 😵 E0.6 knocked-out face
|
1F635 ; fully-qualified # 😵 E0.6 face with crossed-out eyes
|
||||||
1F635 200D 1F4AB ; fully-qualified # 😵💫 E13.1 face with spiral eyes
|
1F635 200D 1F4AB ; fully-qualified # 😵💫 E13.1 face with spiral eyes
|
||||||
1F92F ; fully-qualified # 🤯 E5.0 exploding head
|
1F92F ; fully-qualified # 🤯 E5.0 exploding head
|
||||||
|
|
||||||
|
@ -121,6 +126,7 @@
|
||||||
|
|
||||||
# subgroup: face-concerned
|
# subgroup: face-concerned
|
||||||
1F615 ; fully-qualified # 😕 E1.0 confused face
|
1F615 ; fully-qualified # 😕 E1.0 confused face
|
||||||
|
1FAE4 ; fully-qualified # 🫤 E14.0 face with diagonal mouth
|
||||||
1F61F ; fully-qualified # 😟 E1.0 worried face
|
1F61F ; fully-qualified # 😟 E1.0 worried face
|
||||||
1F641 ; fully-qualified # 🙁 E1.0 slightly frowning face
|
1F641 ; fully-qualified # 🙁 E1.0 slightly frowning face
|
||||||
2639 FE0F ; fully-qualified # ☹️ E0.7 frowning face
|
2639 FE0F ; fully-qualified # ☹️ E0.7 frowning face
|
||||||
|
@ -130,6 +136,7 @@
|
||||||
1F632 ; fully-qualified # 😲 E0.6 astonished face
|
1F632 ; fully-qualified # 😲 E0.6 astonished face
|
||||||
1F633 ; fully-qualified # 😳 E0.6 flushed face
|
1F633 ; fully-qualified # 😳 E0.6 flushed face
|
||||||
1F97A ; fully-qualified # 🥺 E11.0 pleading face
|
1F97A ; fully-qualified # 🥺 E11.0 pleading face
|
||||||
|
1F979 ; fully-qualified # 🥹 E14.0 face holding back tears
|
||||||
1F626 ; fully-qualified # 😦 E1.0 frowning face with open mouth
|
1F626 ; fully-qualified # 😦 E1.0 frowning face with open mouth
|
||||||
1F627 ; fully-qualified # 😧 E1.0 anguished face
|
1F627 ; fully-qualified # 😧 E1.0 anguished face
|
||||||
1F628 ; fully-qualified # 😨 E0.6 fearful face
|
1F628 ; fully-qualified # 😨 E0.6 fearful face
|
||||||
|
@ -232,8 +239,8 @@
|
||||||
1F4AD ; fully-qualified # 💭 E1.0 thought balloon
|
1F4AD ; fully-qualified # 💭 E1.0 thought balloon
|
||||||
1F4A4 ; fully-qualified # 💤 E0.6 zzz
|
1F4A4 ; fully-qualified # 💤 E0.6 zzz
|
||||||
|
|
||||||
# Smileys & Emotion subtotal: 170
|
# Smileys & Emotion subtotal: 177
|
||||||
# Smileys & Emotion subtotal: 170 w/o modifiers
|
# Smileys & Emotion subtotal: 177 w/o modifiers
|
||||||
|
|
||||||
# group: People & Body
|
# group: People & Body
|
||||||
|
|
||||||
|
@ -269,6 +276,30 @@
|
||||||
1F596 1F3FD ; fully-qualified # 🖖🏽 E1.0 vulcan salute: medium skin tone
|
1F596 1F3FD ; fully-qualified # 🖖🏽 E1.0 vulcan salute: medium skin tone
|
||||||
1F596 1F3FE ; fully-qualified # 🖖🏾 E1.0 vulcan salute: medium-dark skin tone
|
1F596 1F3FE ; fully-qualified # 🖖🏾 E1.0 vulcan salute: medium-dark skin tone
|
||||||
1F596 1F3FF ; fully-qualified # 🖖🏿 E1.0 vulcan salute: dark skin tone
|
1F596 1F3FF ; fully-qualified # 🖖🏿 E1.0 vulcan salute: dark skin tone
|
||||||
|
1FAF1 ; fully-qualified # 🫱 E14.0 rightwards hand
|
||||||
|
1FAF1 1F3FB ; fully-qualified # 🫱🏻 E14.0 rightwards hand: light skin tone
|
||||||
|
1FAF1 1F3FC ; fully-qualified # 🫱🏼 E14.0 rightwards hand: medium-light skin tone
|
||||||
|
1FAF1 1F3FD ; fully-qualified # 🫱🏽 E14.0 rightwards hand: medium skin tone
|
||||||
|
1FAF1 1F3FE ; fully-qualified # 🫱🏾 E14.0 rightwards hand: medium-dark skin tone
|
||||||
|
1FAF1 1F3FF ; fully-qualified # 🫱🏿 E14.0 rightwards hand: dark skin tone
|
||||||
|
1FAF2 ; fully-qualified # 🫲 E14.0 leftwards hand
|
||||||
|
1FAF2 1F3FB ; fully-qualified # 🫲🏻 E14.0 leftwards hand: light skin tone
|
||||||
|
1FAF2 1F3FC ; fully-qualified # 🫲🏼 E14.0 leftwards hand: medium-light skin tone
|
||||||
|
1FAF2 1F3FD ; fully-qualified # 🫲🏽 E14.0 leftwards hand: medium skin tone
|
||||||
|
1FAF2 1F3FE ; fully-qualified # 🫲🏾 E14.0 leftwards hand: medium-dark skin tone
|
||||||
|
1FAF2 1F3FF ; fully-qualified # 🫲🏿 E14.0 leftwards hand: dark skin tone
|
||||||
|
1FAF3 ; fully-qualified # 🫳 E14.0 palm down hand
|
||||||
|
1FAF3 1F3FB ; fully-qualified # 🫳🏻 E14.0 palm down hand: light skin tone
|
||||||
|
1FAF3 1F3FC ; fully-qualified # 🫳🏼 E14.0 palm down hand: medium-light skin tone
|
||||||
|
1FAF3 1F3FD ; fully-qualified # 🫳🏽 E14.0 palm down hand: medium skin tone
|
||||||
|
1FAF3 1F3FE ; fully-qualified # 🫳🏾 E14.0 palm down hand: medium-dark skin tone
|
||||||
|
1FAF3 1F3FF ; fully-qualified # 🫳🏿 E14.0 palm down hand: dark skin tone
|
||||||
|
1FAF4 ; fully-qualified # 🫴 E14.0 palm up hand
|
||||||
|
1FAF4 1F3FB ; fully-qualified # 🫴🏻 E14.0 palm up hand: light skin tone
|
||||||
|
1FAF4 1F3FC ; fully-qualified # 🫴🏼 E14.0 palm up hand: medium-light skin tone
|
||||||
|
1FAF4 1F3FD ; fully-qualified # 🫴🏽 E14.0 palm up hand: medium skin tone
|
||||||
|
1FAF4 1F3FE ; fully-qualified # 🫴🏾 E14.0 palm up hand: medium-dark skin tone
|
||||||
|
1FAF4 1F3FF ; fully-qualified # 🫴🏿 E14.0 palm up hand: dark skin tone
|
||||||
|
|
||||||
# subgroup: hand-fingers-partial
|
# subgroup: hand-fingers-partial
|
||||||
1F44C ; fully-qualified # 👌 E0.6 OK hand
|
1F44C ; fully-qualified # 👌 E0.6 OK hand
|
||||||
|
@ -302,6 +333,12 @@
|
||||||
1F91E 1F3FD ; fully-qualified # 🤞🏽 E3.0 crossed fingers: medium skin tone
|
1F91E 1F3FD ; fully-qualified # 🤞🏽 E3.0 crossed fingers: medium skin tone
|
||||||
1F91E 1F3FE ; fully-qualified # 🤞🏾 E3.0 crossed fingers: medium-dark skin tone
|
1F91E 1F3FE ; fully-qualified # 🤞🏾 E3.0 crossed fingers: medium-dark skin tone
|
||||||
1F91E 1F3FF ; fully-qualified # 🤞🏿 E3.0 crossed fingers: dark skin tone
|
1F91E 1F3FF ; fully-qualified # 🤞🏿 E3.0 crossed fingers: dark skin tone
|
||||||
|
1FAF0 ; fully-qualified # 🫰 E14.0 hand with index finger and thumb crossed
|
||||||
|
1FAF0 1F3FB ; fully-qualified # 🫰🏻 E14.0 hand with index finger and thumb crossed: light skin tone
|
||||||
|
1FAF0 1F3FC ; fully-qualified # 🫰🏼 E14.0 hand with index finger and thumb crossed: medium-light skin tone
|
||||||
|
1FAF0 1F3FD ; fully-qualified # 🫰🏽 E14.0 hand with index finger and thumb crossed: medium skin tone
|
||||||
|
1FAF0 1F3FE ; fully-qualified # 🫰🏾 E14.0 hand with index finger and thumb crossed: medium-dark skin tone
|
||||||
|
1FAF0 1F3FF ; fully-qualified # 🫰🏿 E14.0 hand with index finger and thumb crossed: dark skin tone
|
||||||
1F91F ; fully-qualified # 🤟 E5.0 love-you gesture
|
1F91F ; fully-qualified # 🤟 E5.0 love-you gesture
|
||||||
1F91F 1F3FB ; fully-qualified # 🤟🏻 E5.0 love-you gesture: light skin tone
|
1F91F 1F3FB ; fully-qualified # 🤟🏻 E5.0 love-you gesture: light skin tone
|
||||||
1F91F 1F3FC ; fully-qualified # 🤟🏼 E5.0 love-you gesture: medium-light skin tone
|
1F91F 1F3FC ; fully-qualified # 🤟🏼 E5.0 love-you gesture: medium-light skin tone
|
||||||
|
@ -359,6 +396,12 @@
|
||||||
261D 1F3FD ; fully-qualified # ☝🏽 E1.0 index pointing up: medium skin tone
|
261D 1F3FD ; fully-qualified # ☝🏽 E1.0 index pointing up: medium skin tone
|
||||||
261D 1F3FE ; fully-qualified # ☝🏾 E1.0 index pointing up: medium-dark skin tone
|
261D 1F3FE ; fully-qualified # ☝🏾 E1.0 index pointing up: medium-dark skin tone
|
||||||
261D 1F3FF ; fully-qualified # ☝🏿 E1.0 index pointing up: dark skin tone
|
261D 1F3FF ; fully-qualified # ☝🏿 E1.0 index pointing up: dark skin tone
|
||||||
|
1FAF5 ; fully-qualified # 🫵 E14.0 index pointing at the viewer
|
||||||
|
1FAF5 1F3FB ; fully-qualified # 🫵🏻 E14.0 index pointing at the viewer: light skin tone
|
||||||
|
1FAF5 1F3FC ; fully-qualified # 🫵🏼 E14.0 index pointing at the viewer: medium-light skin tone
|
||||||
|
1FAF5 1F3FD ; fully-qualified # 🫵🏽 E14.0 index pointing at the viewer: medium skin tone
|
||||||
|
1FAF5 1F3FE ; fully-qualified # 🫵🏾 E14.0 index pointing at the viewer: medium-dark skin tone
|
||||||
|
1FAF5 1F3FF ; fully-qualified # 🫵🏿 E14.0 index pointing at the viewer: dark skin tone
|
||||||
|
|
||||||
# subgroup: hand-fingers-closed
|
# subgroup: hand-fingers-closed
|
||||||
1F44D ; fully-qualified # 👍 E0.6 thumbs up
|
1F44D ; fully-qualified # 👍 E0.6 thumbs up
|
||||||
|
@ -411,6 +454,12 @@
|
||||||
1F64C 1F3FD ; fully-qualified # 🙌🏽 E1.0 raising hands: medium skin tone
|
1F64C 1F3FD ; fully-qualified # 🙌🏽 E1.0 raising hands: medium skin tone
|
||||||
1F64C 1F3FE ; fully-qualified # 🙌🏾 E1.0 raising hands: medium-dark skin tone
|
1F64C 1F3FE ; fully-qualified # 🙌🏾 E1.0 raising hands: medium-dark skin tone
|
||||||
1F64C 1F3FF ; fully-qualified # 🙌🏿 E1.0 raising hands: dark skin tone
|
1F64C 1F3FF ; fully-qualified # 🙌🏿 E1.0 raising hands: dark skin tone
|
||||||
|
1FAF6 ; fully-qualified # 🫶 E14.0 heart hands
|
||||||
|
1FAF6 1F3FB ; fully-qualified # 🫶🏻 E14.0 heart hands: light skin tone
|
||||||
|
1FAF6 1F3FC ; fully-qualified # 🫶🏼 E14.0 heart hands: medium-light skin tone
|
||||||
|
1FAF6 1F3FD ; fully-qualified # 🫶🏽 E14.0 heart hands: medium skin tone
|
||||||
|
1FAF6 1F3FE ; fully-qualified # 🫶🏾 E14.0 heart hands: medium-dark skin tone
|
||||||
|
1FAF6 1F3FF ; fully-qualified # 🫶🏿 E14.0 heart hands: dark skin tone
|
||||||
1F450 ; fully-qualified # 👐 E0.6 open hands
|
1F450 ; fully-qualified # 👐 E0.6 open hands
|
||||||
1F450 1F3FB ; fully-qualified # 👐🏻 E1.0 open hands: light skin tone
|
1F450 1F3FB ; fully-qualified # 👐🏻 E1.0 open hands: light skin tone
|
||||||
1F450 1F3FC ; fully-qualified # 👐🏼 E1.0 open hands: medium-light skin tone
|
1F450 1F3FC ; fully-qualified # 👐🏼 E1.0 open hands: medium-light skin tone
|
||||||
|
@ -424,6 +473,31 @@
|
||||||
1F932 1F3FE ; fully-qualified # 🤲🏾 E5.0 palms up together: medium-dark skin tone
|
1F932 1F3FE ; fully-qualified # 🤲🏾 E5.0 palms up together: medium-dark skin tone
|
||||||
1F932 1F3FF ; fully-qualified # 🤲🏿 E5.0 palms up together: dark skin tone
|
1F932 1F3FF ; fully-qualified # 🤲🏿 E5.0 palms up together: dark skin tone
|
||||||
1F91D ; fully-qualified # 🤝 E3.0 handshake
|
1F91D ; fully-qualified # 🤝 E3.0 handshake
|
||||||
|
1F91D 1F3FB ; fully-qualified # 🤝🏻 E3.0 handshake: light skin tone
|
||||||
|
1F91D 1F3FC ; fully-qualified # 🤝🏼 E3.0 handshake: medium-light skin tone
|
||||||
|
1F91D 1F3FD ; fully-qualified # 🤝🏽 E3.0 handshake: medium skin tone
|
||||||
|
1F91D 1F3FE ; fully-qualified # 🤝🏾 E3.0 handshake: medium-dark skin tone
|
||||||
|
1F91D 1F3FF ; fully-qualified # 🤝🏿 E3.0 handshake: dark skin tone
|
||||||
|
1FAF1 1F3FB 200D 1FAF2 1F3FC ; fully-qualified # 🫱🏻🫲🏼 E14.0 handshake: light skin tone, medium-light skin tone
|
||||||
|
1FAF1 1F3FB 200D 1FAF2 1F3FD ; fully-qualified # 🫱🏻🫲🏽 E14.0 handshake: light skin tone, medium skin tone
|
||||||
|
1FAF1 1F3FB 200D 1FAF2 1F3FE ; fully-qualified # 🫱🏻🫲🏾 E14.0 handshake: light skin tone, medium-dark skin tone
|
||||||
|
1FAF1 1F3FB 200D 1FAF2 1F3FF ; fully-qualified # 🫱🏻🫲🏿 E14.0 handshake: light skin tone, dark skin tone
|
||||||
|
1FAF1 1F3FC 200D 1FAF2 1F3FB ; fully-qualified # 🫱🏼🫲🏻 E14.0 handshake: medium-light skin tone, light skin tone
|
||||||
|
1FAF1 1F3FC 200D 1FAF2 1F3FD ; fully-qualified # 🫱🏼🫲🏽 E14.0 handshake: medium-light skin tone, medium skin tone
|
||||||
|
1FAF1 1F3FC 200D 1FAF2 1F3FE ; fully-qualified # 🫱🏼🫲🏾 E14.0 handshake: medium-light skin tone, medium-dark skin tone
|
||||||
|
1FAF1 1F3FC 200D 1FAF2 1F3FF ; fully-qualified # 🫱🏼🫲🏿 E14.0 handshake: medium-light skin tone, dark skin tone
|
||||||
|
1FAF1 1F3FD 200D 1FAF2 1F3FB ; fully-qualified # 🫱🏽🫲🏻 E14.0 handshake: medium skin tone, light skin tone
|
||||||
|
1FAF1 1F3FD 200D 1FAF2 1F3FC ; fully-qualified # 🫱🏽🫲🏼 E14.0 handshake: medium skin tone, medium-light skin tone
|
||||||
|
1FAF1 1F3FD 200D 1FAF2 1F3FE ; fully-qualified # 🫱🏽🫲🏾 E14.0 handshake: medium skin tone, medium-dark skin tone
|
||||||
|
1FAF1 1F3FD 200D 1FAF2 1F3FF ; fully-qualified # 🫱🏽🫲🏿 E14.0 handshake: medium skin tone, dark skin tone
|
||||||
|
1FAF1 1F3FE 200D 1FAF2 1F3FB ; fully-qualified # 🫱🏾🫲🏻 E14.0 handshake: medium-dark skin tone, light skin tone
|
||||||
|
1FAF1 1F3FE 200D 1FAF2 1F3FC ; fully-qualified # 🫱🏾🫲🏼 E14.0 handshake: medium-dark skin tone, medium-light skin tone
|
||||||
|
1FAF1 1F3FE 200D 1FAF2 1F3FD ; fully-qualified # 🫱🏾🫲🏽 E14.0 handshake: medium-dark skin tone, medium skin tone
|
||||||
|
1FAF1 1F3FE 200D 1FAF2 1F3FF ; fully-qualified # 🫱🏾🫲🏿 E14.0 handshake: medium-dark skin tone, dark skin tone
|
||||||
|
1FAF1 1F3FF 200D 1FAF2 1F3FB ; fully-qualified # 🫱🏿🫲🏻 E14.0 handshake: dark skin tone, light skin tone
|
||||||
|
1FAF1 1F3FF 200D 1FAF2 1F3FC ; fully-qualified # 🫱🏿🫲🏼 E14.0 handshake: dark skin tone, medium-light skin tone
|
||||||
|
1FAF1 1F3FF 200D 1FAF2 1F3FD ; fully-qualified # 🫱🏿🫲🏽 E14.0 handshake: dark skin tone, medium skin tone
|
||||||
|
1FAF1 1F3FF 200D 1FAF2 1F3FE ; fully-qualified # 🫱🏿🫲🏾 E14.0 handshake: dark skin tone, medium-dark skin tone
|
||||||
1F64F ; fully-qualified # 🙏 E0.6 folded hands
|
1F64F ; fully-qualified # 🙏 E0.6 folded hands
|
||||||
1F64F 1F3FB ; fully-qualified # 🙏🏻 E1.0 folded hands: light skin tone
|
1F64F 1F3FB ; fully-qualified # 🙏🏻 E1.0 folded hands: light skin tone
|
||||||
1F64F 1F3FC ; fully-qualified # 🙏🏼 E1.0 folded hands: medium-light skin tone
|
1F64F 1F3FC ; fully-qualified # 🙏🏼 E1.0 folded hands: medium-light skin tone
|
||||||
|
@ -501,6 +575,7 @@
|
||||||
1F441 ; unqualified # 👁 E0.7 eye
|
1F441 ; unqualified # 👁 E0.7 eye
|
||||||
1F445 ; fully-qualified # 👅 E0.6 tongue
|
1F445 ; fully-qualified # 👅 E0.6 tongue
|
||||||
1F444 ; fully-qualified # 👄 E0.6 mouth
|
1F444 ; fully-qualified # 👄 E0.6 mouth
|
||||||
|
1FAE6 ; fully-qualified # 🫦 E14.0 biting lip
|
||||||
|
|
||||||
# subgroup: person
|
# subgroup: person
|
||||||
1F476 ; fully-qualified # 👶 E0.6 baby
|
1F476 ; fully-qualified # 👶 E0.6 baby
|
||||||
|
@ -1472,6 +1547,12 @@
|
||||||
1F477 1F3FE 200D 2640 ; minimally-qualified # 👷🏾♀ E4.0 woman construction worker: medium-dark skin tone
|
1F477 1F3FE 200D 2640 ; minimally-qualified # 👷🏾♀ E4.0 woman construction worker: medium-dark skin tone
|
||||||
1F477 1F3FF 200D 2640 FE0F ; fully-qualified # 👷🏿♀️ E4.0 woman construction worker: dark skin tone
|
1F477 1F3FF 200D 2640 FE0F ; fully-qualified # 👷🏿♀️ E4.0 woman construction worker: dark skin tone
|
||||||
1F477 1F3FF 200D 2640 ; minimally-qualified # 👷🏿♀ E4.0 woman construction worker: dark skin tone
|
1F477 1F3FF 200D 2640 ; minimally-qualified # 👷🏿♀ E4.0 woman construction worker: dark skin tone
|
||||||
|
1FAC5 ; fully-qualified # 🫅 E14.0 person with crown
|
||||||
|
1FAC5 1F3FB ; fully-qualified # 🫅🏻 E14.0 person with crown: light skin tone
|
||||||
|
1FAC5 1F3FC ; fully-qualified # 🫅🏼 E14.0 person with crown: medium-light skin tone
|
||||||
|
1FAC5 1F3FD ; fully-qualified # 🫅🏽 E14.0 person with crown: medium skin tone
|
||||||
|
1FAC5 1F3FE ; fully-qualified # 🫅🏾 E14.0 person with crown: medium-dark skin tone
|
||||||
|
1FAC5 1F3FF ; fully-qualified # 🫅🏿 E14.0 person with crown: dark skin tone
|
||||||
1F934 ; fully-qualified # 🤴 E3.0 prince
|
1F934 ; fully-qualified # 🤴 E3.0 prince
|
||||||
1F934 1F3FB ; fully-qualified # 🤴🏻 E3.0 prince: light skin tone
|
1F934 1F3FB ; fully-qualified # 🤴🏻 E3.0 prince: light skin tone
|
||||||
1F934 1F3FC ; fully-qualified # 🤴🏼 E3.0 prince: medium-light skin tone
|
1F934 1F3FC ; fully-qualified # 🤴🏼 E3.0 prince: medium-light skin tone
|
||||||
|
@ -1592,6 +1673,18 @@
|
||||||
1F930 1F3FD ; fully-qualified # 🤰🏽 E3.0 pregnant woman: medium skin tone
|
1F930 1F3FD ; fully-qualified # 🤰🏽 E3.0 pregnant woman: medium skin tone
|
||||||
1F930 1F3FE ; fully-qualified # 🤰🏾 E3.0 pregnant woman: medium-dark skin tone
|
1F930 1F3FE ; fully-qualified # 🤰🏾 E3.0 pregnant woman: medium-dark skin tone
|
||||||
1F930 1F3FF ; fully-qualified # 🤰🏿 E3.0 pregnant woman: dark skin tone
|
1F930 1F3FF ; fully-qualified # 🤰🏿 E3.0 pregnant woman: dark skin tone
|
||||||
|
1FAC3 ; fully-qualified # 🫃 E14.0 pregnant man
|
||||||
|
1FAC3 1F3FB ; fully-qualified # 🫃🏻 E14.0 pregnant man: light skin tone
|
||||||
|
1FAC3 1F3FC ; fully-qualified # 🫃🏼 E14.0 pregnant man: medium-light skin tone
|
||||||
|
1FAC3 1F3FD ; fully-qualified # 🫃🏽 E14.0 pregnant man: medium skin tone
|
||||||
|
1FAC3 1F3FE ; fully-qualified # 🫃🏾 E14.0 pregnant man: medium-dark skin tone
|
||||||
|
1FAC3 1F3FF ; fully-qualified # 🫃🏿 E14.0 pregnant man: dark skin tone
|
||||||
|
1FAC4 ; fully-qualified # 🫄 E14.0 pregnant person
|
||||||
|
1FAC4 1F3FB ; fully-qualified # 🫄🏻 E14.0 pregnant person: light skin tone
|
||||||
|
1FAC4 1F3FC ; fully-qualified # 🫄🏼 E14.0 pregnant person: medium-light skin tone
|
||||||
|
1FAC4 1F3FD ; fully-qualified # 🫄🏽 E14.0 pregnant person: medium skin tone
|
||||||
|
1FAC4 1F3FE ; fully-qualified # 🫄🏾 E14.0 pregnant person: medium-dark skin tone
|
||||||
|
1FAC4 1F3FF ; fully-qualified # 🫄🏿 E14.0 pregnant person: dark skin tone
|
||||||
1F931 ; fully-qualified # 🤱 E5.0 breast-feeding
|
1F931 ; fully-qualified # 🤱 E5.0 breast-feeding
|
||||||
1F931 1F3FB ; fully-qualified # 🤱🏻 E5.0 breast-feeding: light skin tone
|
1F931 1F3FB ; fully-qualified # 🤱🏻 E5.0 breast-feeding: light skin tone
|
||||||
1F931 1F3FC ; fully-qualified # 🤱🏼 E5.0 breast-feeding: medium-light skin tone
|
1F931 1F3FC ; fully-qualified # 🤱🏼 E5.0 breast-feeding: medium-light skin tone
|
||||||
|
@ -1862,6 +1955,7 @@
|
||||||
1F9DF 200D 2642 ; minimally-qualified # 🧟♂ E5.0 man zombie
|
1F9DF 200D 2642 ; minimally-qualified # 🧟♂ E5.0 man zombie
|
||||||
1F9DF 200D 2640 FE0F ; fully-qualified # 🧟♀️ E5.0 woman zombie
|
1F9DF 200D 2640 FE0F ; fully-qualified # 🧟♀️ E5.0 woman zombie
|
||||||
1F9DF 200D 2640 ; minimally-qualified # 🧟♀ E5.0 woman zombie
|
1F9DF 200D 2640 ; minimally-qualified # 🧟♀ E5.0 woman zombie
|
||||||
|
1F9CC ; fully-qualified # 🧌 E14.0 troll
|
||||||
|
|
||||||
# subgroup: person-activity
|
# subgroup: person-activity
|
||||||
1F486 ; fully-qualified # 💆 E0.6 person getting massage
|
1F486 ; fully-qualified # 💆 E0.6 person getting massage
|
||||||
|
@ -3168,8 +3262,8 @@
|
||||||
1FAC2 ; fully-qualified # 🫂 E13.0 people hugging
|
1FAC2 ; fully-qualified # 🫂 E13.0 people hugging
|
||||||
1F463 ; fully-qualified # 👣 E0.6 footprints
|
1F463 ; fully-qualified # 👣 E0.6 footprints
|
||||||
|
|
||||||
# People & Body subtotal: 2899
|
# People & Body subtotal: 2986
|
||||||
# People & Body subtotal: 494 w/o modifiers
|
# People & Body subtotal: 506 w/o modifiers
|
||||||
|
|
||||||
# group: Component
|
# group: Component
|
||||||
|
|
||||||
|
@ -3304,6 +3398,7 @@
|
||||||
1F988 ; fully-qualified # 🦈 E3.0 shark
|
1F988 ; fully-qualified # 🦈 E3.0 shark
|
||||||
1F419 ; fully-qualified # 🐙 E0.6 octopus
|
1F419 ; fully-qualified # 🐙 E0.6 octopus
|
||||||
1F41A ; fully-qualified # 🐚 E0.6 spiral shell
|
1F41A ; fully-qualified # 🐚 E0.6 spiral shell
|
||||||
|
1FAB8 ; fully-qualified # 🪸 E14.0 coral
|
||||||
|
|
||||||
# subgroup: animal-bug
|
# subgroup: animal-bug
|
||||||
1F40C ; fully-qualified # 🐌 E0.6 snail
|
1F40C ; fully-qualified # 🐌 E0.6 snail
|
||||||
|
@ -3329,6 +3424,7 @@
|
||||||
1F490 ; fully-qualified # 💐 E0.6 bouquet
|
1F490 ; fully-qualified # 💐 E0.6 bouquet
|
||||||
1F338 ; fully-qualified # 🌸 E0.6 cherry blossom
|
1F338 ; fully-qualified # 🌸 E0.6 cherry blossom
|
||||||
1F4AE ; fully-qualified # 💮 E0.6 white flower
|
1F4AE ; fully-qualified # 💮 E0.6 white flower
|
||||||
|
1FAB7 ; fully-qualified # 🪷 E14.0 lotus
|
||||||
1F3F5 FE0F ; fully-qualified # 🏵️ E0.7 rosette
|
1F3F5 FE0F ; fully-qualified # 🏵️ E0.7 rosette
|
||||||
1F3F5 ; unqualified # 🏵 E0.7 rosette
|
1F3F5 ; unqualified # 🏵 E0.7 rosette
|
||||||
1F339 ; fully-qualified # 🌹 E0.6 rose
|
1F339 ; fully-qualified # 🌹 E0.6 rose
|
||||||
|
@ -3353,9 +3449,11 @@
|
||||||
1F341 ; fully-qualified # 🍁 E0.6 maple leaf
|
1F341 ; fully-qualified # 🍁 E0.6 maple leaf
|
||||||
1F342 ; fully-qualified # 🍂 E0.6 fallen leaf
|
1F342 ; fully-qualified # 🍂 E0.6 fallen leaf
|
||||||
1F343 ; fully-qualified # 🍃 E0.6 leaf fluttering in wind
|
1F343 ; fully-qualified # 🍃 E0.6 leaf fluttering in wind
|
||||||
|
1FAB9 ; fully-qualified # 🪹 E14.0 empty nest
|
||||||
|
1FABA ; fully-qualified # 🪺 E14.0 nest with eggs
|
||||||
|
|
||||||
# Animals & Nature subtotal: 147
|
# Animals & Nature subtotal: 151
|
||||||
# Animals & Nature subtotal: 147 w/o modifiers
|
# Animals & Nature subtotal: 151 w/o modifiers
|
||||||
|
|
||||||
# group: Food & Drink
|
# group: Food & Drink
|
||||||
|
|
||||||
|
@ -3396,6 +3494,7 @@
|
||||||
1F9C5 ; fully-qualified # 🧅 E12.0 onion
|
1F9C5 ; fully-qualified # 🧅 E12.0 onion
|
||||||
1F344 ; fully-qualified # 🍄 E0.6 mushroom
|
1F344 ; fully-qualified # 🍄 E0.6 mushroom
|
||||||
1F95C ; fully-qualified # 🥜 E3.0 peanuts
|
1F95C ; fully-qualified # 🥜 E3.0 peanuts
|
||||||
|
1FAD8 ; fully-qualified # 🫘 E14.0 beans
|
||||||
1F330 ; fully-qualified # 🌰 E0.6 chestnut
|
1F330 ; fully-qualified # 🌰 E0.6 chestnut
|
||||||
|
|
||||||
# subgroup: food-prepared
|
# subgroup: food-prepared
|
||||||
|
@ -3491,6 +3590,7 @@
|
||||||
1F37B ; fully-qualified # 🍻 E0.6 clinking beer mugs
|
1F37B ; fully-qualified # 🍻 E0.6 clinking beer mugs
|
||||||
1F942 ; fully-qualified # 🥂 E3.0 clinking glasses
|
1F942 ; fully-qualified # 🥂 E3.0 clinking glasses
|
||||||
1F943 ; fully-qualified # 🥃 E3.0 tumbler glass
|
1F943 ; fully-qualified # 🥃 E3.0 tumbler glass
|
||||||
|
1FAD7 ; fully-qualified # 🫗 E14.0 pouring liquid
|
||||||
1F964 ; fully-qualified # 🥤 E5.0 cup with straw
|
1F964 ; fully-qualified # 🥤 E5.0 cup with straw
|
||||||
1F9CB ; fully-qualified # 🧋 E13.0 bubble tea
|
1F9CB ; fully-qualified # 🧋 E13.0 bubble tea
|
||||||
1F9C3 ; fully-qualified # 🧃 E12.0 beverage box
|
1F9C3 ; fully-qualified # 🧃 E12.0 beverage box
|
||||||
|
@ -3504,10 +3604,11 @@
|
||||||
1F374 ; fully-qualified # 🍴 E0.6 fork and knife
|
1F374 ; fully-qualified # 🍴 E0.6 fork and knife
|
||||||
1F944 ; fully-qualified # 🥄 E3.0 spoon
|
1F944 ; fully-qualified # 🥄 E3.0 spoon
|
||||||
1F52A ; fully-qualified # 🔪 E0.6 kitchen knife
|
1F52A ; fully-qualified # 🔪 E0.6 kitchen knife
|
||||||
|
1FAD9 ; fully-qualified # 🫙 E14.0 jar
|
||||||
1F3FA ; fully-qualified # 🏺 E1.0 amphora
|
1F3FA ; fully-qualified # 🏺 E1.0 amphora
|
||||||
|
|
||||||
# Food & Drink subtotal: 131
|
# Food & Drink subtotal: 134
|
||||||
# Food & Drink subtotal: 131 w/o modifiers
|
# Food & Drink subtotal: 134 w/o modifiers
|
||||||
|
|
||||||
# group: Travel & Places
|
# group: Travel & Places
|
||||||
|
|
||||||
|
@ -3597,6 +3698,7 @@
|
||||||
2668 FE0F ; fully-qualified # ♨️ E0.6 hot springs
|
2668 FE0F ; fully-qualified # ♨️ E0.6 hot springs
|
||||||
2668 ; unqualified # ♨ E0.6 hot springs
|
2668 ; unqualified # ♨ E0.6 hot springs
|
||||||
1F3A0 ; fully-qualified # 🎠 E0.6 carousel horse
|
1F3A0 ; fully-qualified # 🎠 E0.6 carousel horse
|
||||||
|
1F6DD ; fully-qualified # 🛝 E14.0 playground slide
|
||||||
1F3A1 ; fully-qualified # 🎡 E0.6 ferris wheel
|
1F3A1 ; fully-qualified # 🎡 E0.6 ferris wheel
|
||||||
1F3A2 ; fully-qualified # 🎢 E0.6 roller coaster
|
1F3A2 ; fully-qualified # 🎢 E0.6 roller coaster
|
||||||
1F488 ; fully-qualified # 💈 E0.6 barber pole
|
1F488 ; fully-qualified # 💈 E0.6 barber pole
|
||||||
|
@ -3652,6 +3754,7 @@
|
||||||
1F6E2 FE0F ; fully-qualified # 🛢️ E0.7 oil drum
|
1F6E2 FE0F ; fully-qualified # 🛢️ E0.7 oil drum
|
||||||
1F6E2 ; unqualified # 🛢 E0.7 oil drum
|
1F6E2 ; unqualified # 🛢 E0.7 oil drum
|
||||||
26FD ; fully-qualified # ⛽ E0.6 fuel pump
|
26FD ; fully-qualified # ⛽ E0.6 fuel pump
|
||||||
|
1F6DE ; fully-qualified # 🛞 E14.0 wheel
|
||||||
1F6A8 ; fully-qualified # 🚨 E0.6 police car light
|
1F6A8 ; fully-qualified # 🚨 E0.6 police car light
|
||||||
1F6A5 ; fully-qualified # 🚥 E0.6 horizontal traffic light
|
1F6A5 ; fully-qualified # 🚥 E0.6 horizontal traffic light
|
||||||
1F6A6 ; fully-qualified # 🚦 E1.0 vertical traffic light
|
1F6A6 ; fully-qualified # 🚦 E1.0 vertical traffic light
|
||||||
|
@ -3660,6 +3763,7 @@
|
||||||
|
|
||||||
# subgroup: transport-water
|
# subgroup: transport-water
|
||||||
2693 ; fully-qualified # ⚓ E0.6 anchor
|
2693 ; fully-qualified # ⚓ E0.6 anchor
|
||||||
|
1F6DF ; fully-qualified # 🛟 E14.0 ring buoy
|
||||||
26F5 ; fully-qualified # ⛵ E0.6 sailboat
|
26F5 ; fully-qualified # ⛵ E0.6 sailboat
|
||||||
1F6F6 ; fully-qualified # 🛶 E3.0 canoe
|
1F6F6 ; fully-qualified # 🛶 E3.0 canoe
|
||||||
1F6A4 ; fully-qualified # 🚤 E0.6 speedboat
|
1F6A4 ; fully-qualified # 🚤 E0.6 speedboat
|
||||||
|
@ -3797,8 +3901,8 @@
|
||||||
1F4A7 ; fully-qualified # 💧 E0.6 droplet
|
1F4A7 ; fully-qualified # 💧 E0.6 droplet
|
||||||
1F30A ; fully-qualified # 🌊 E0.6 water wave
|
1F30A ; fully-qualified # 🌊 E0.6 water wave
|
||||||
|
|
||||||
# Travel & Places subtotal: 264
|
# Travel & Places subtotal: 267
|
||||||
# Travel & Places subtotal: 264 w/o modifiers
|
# Travel & Places subtotal: 267 w/o modifiers
|
||||||
|
|
||||||
# group: Activities
|
# group: Activities
|
||||||
|
|
||||||
|
@ -3874,6 +3978,7 @@
|
||||||
1F52E ; fully-qualified # 🔮 E0.6 crystal ball
|
1F52E ; fully-qualified # 🔮 E0.6 crystal ball
|
||||||
1FA84 ; fully-qualified # 🪄 E13.0 magic wand
|
1FA84 ; fully-qualified # 🪄 E13.0 magic wand
|
||||||
1F9FF ; fully-qualified # 🧿 E11.0 nazar amulet
|
1F9FF ; fully-qualified # 🧿 E11.0 nazar amulet
|
||||||
|
1FAAC ; fully-qualified # 🪬 E14.0 hamsa
|
||||||
1F3AE ; fully-qualified # 🎮 E0.6 video game
|
1F3AE ; fully-qualified # 🎮 E0.6 video game
|
||||||
1F579 FE0F ; fully-qualified # 🕹️ E0.7 joystick
|
1F579 FE0F ; fully-qualified # 🕹️ E0.7 joystick
|
||||||
1F579 ; unqualified # 🕹 E0.7 joystick
|
1F579 ; unqualified # 🕹 E0.7 joystick
|
||||||
|
@ -3882,6 +3987,7 @@
|
||||||
1F9E9 ; fully-qualified # 🧩 E11.0 puzzle piece
|
1F9E9 ; fully-qualified # 🧩 E11.0 puzzle piece
|
||||||
1F9F8 ; fully-qualified # 🧸 E11.0 teddy bear
|
1F9F8 ; fully-qualified # 🧸 E11.0 teddy bear
|
||||||
1FA85 ; fully-qualified # 🪅 E13.0 piñata
|
1FA85 ; fully-qualified # 🪅 E13.0 piñata
|
||||||
|
1FAA9 ; fully-qualified # 🪩 E14.0 mirror ball
|
||||||
1FA86 ; fully-qualified # 🪆 E13.0 nesting dolls
|
1FA86 ; fully-qualified # 🪆 E13.0 nesting dolls
|
||||||
2660 FE0F ; fully-qualified # ♠️ E0.6 spade suit
|
2660 FE0F ; fully-qualified # ♠️ E0.6 spade suit
|
||||||
2660 ; unqualified # ♠ E0.6 spade suit
|
2660 ; unqualified # ♠ E0.6 spade suit
|
||||||
|
@ -3907,8 +4013,8 @@
|
||||||
1F9F6 ; fully-qualified # 🧶 E11.0 yarn
|
1F9F6 ; fully-qualified # 🧶 E11.0 yarn
|
||||||
1FAA2 ; fully-qualified # 🪢 E13.0 knot
|
1FAA2 ; fully-qualified # 🪢 E13.0 knot
|
||||||
|
|
||||||
# Activities subtotal: 95
|
# Activities subtotal: 97
|
||||||
# Activities subtotal: 95 w/o modifiers
|
# Activities subtotal: 97 w/o modifiers
|
||||||
|
|
||||||
# group: Objects
|
# group: Objects
|
||||||
|
|
||||||
|
@ -4009,6 +4115,7 @@
|
||||||
|
|
||||||
# subgroup: computer
|
# subgroup: computer
|
||||||
1F50B ; fully-qualified # 🔋 E0.6 battery
|
1F50B ; fully-qualified # 🔋 E0.6 battery
|
||||||
|
1FAAB ; fully-qualified # 🪫 E14.0 low battery
|
||||||
1F50C ; fully-qualified # 🔌 E0.6 electric plug
|
1F50C ; fully-qualified # 🔌 E0.6 electric plug
|
||||||
1F4BB ; fully-qualified # 💻 E0.6 laptop
|
1F4BB ; fully-qualified # 💻 E0.6 laptop
|
||||||
1F5A5 FE0F ; fully-qualified # 🖥️ E0.7 desktop computer
|
1F5A5 FE0F ; fully-qualified # 🖥️ E0.7 desktop computer
|
||||||
|
@ -4207,7 +4314,9 @@
|
||||||
1FA78 ; fully-qualified # 🩸 E12.0 drop of blood
|
1FA78 ; fully-qualified # 🩸 E12.0 drop of blood
|
||||||
1F48A ; fully-qualified # 💊 E0.6 pill
|
1F48A ; fully-qualified # 💊 E0.6 pill
|
||||||
1FA79 ; fully-qualified # 🩹 E12.0 adhesive bandage
|
1FA79 ; fully-qualified # 🩹 E12.0 adhesive bandage
|
||||||
|
1FA7C ; fully-qualified # 🩼 E14.0 crutch
|
||||||
1FA7A ; fully-qualified # 🩺 E12.0 stethoscope
|
1FA7A ; fully-qualified # 🩺 E12.0 stethoscope
|
||||||
|
1FA7B ; fully-qualified # 🩻 E14.0 x-ray
|
||||||
|
|
||||||
# subgroup: household
|
# subgroup: household
|
||||||
1F6AA ; fully-qualified # 🚪 E0.6 door
|
1F6AA ; fully-qualified # 🚪 E0.6 door
|
||||||
|
@ -4232,6 +4341,7 @@
|
||||||
1F9FB ; fully-qualified # 🧻 E11.0 roll of paper
|
1F9FB ; fully-qualified # 🧻 E11.0 roll of paper
|
||||||
1FAA3 ; fully-qualified # 🪣 E13.0 bucket
|
1FAA3 ; fully-qualified # 🪣 E13.0 bucket
|
||||||
1F9FC ; fully-qualified # 🧼 E11.0 soap
|
1F9FC ; fully-qualified # 🧼 E11.0 soap
|
||||||
|
1FAE7 ; fully-qualified # 🫧 E14.0 bubbles
|
||||||
1FAA5 ; fully-qualified # 🪥 E13.0 toothbrush
|
1FAA5 ; fully-qualified # 🪥 E13.0 toothbrush
|
||||||
1F9FD ; fully-qualified # 🧽 E11.0 sponge
|
1F9FD ; fully-qualified # 🧽 E11.0 sponge
|
||||||
1F9EF ; fully-qualified # 🧯 E11.0 fire extinguisher
|
1F9EF ; fully-qualified # 🧯 E11.0 fire extinguisher
|
||||||
|
@ -4246,9 +4356,10 @@
|
||||||
26B1 ; unqualified # ⚱ E1.0 funeral urn
|
26B1 ; unqualified # ⚱ E1.0 funeral urn
|
||||||
1F5FF ; fully-qualified # 🗿 E0.6 moai
|
1F5FF ; fully-qualified # 🗿 E0.6 moai
|
||||||
1FAA7 ; fully-qualified # 🪧 E13.0 placard
|
1FAA7 ; fully-qualified # 🪧 E13.0 placard
|
||||||
|
1FAAA ; fully-qualified # 🪪 E14.0 identification card
|
||||||
|
|
||||||
# Objects subtotal: 299
|
# Objects subtotal: 304
|
||||||
# Objects subtotal: 299 w/o modifiers
|
# Objects subtotal: 304 w/o modifiers
|
||||||
|
|
||||||
# group: Symbols
|
# group: Symbols
|
||||||
|
|
||||||
|
@ -4409,6 +4520,7 @@
|
||||||
2795 ; fully-qualified # ➕ E0.6 plus
|
2795 ; fully-qualified # ➕ E0.6 plus
|
||||||
2796 ; fully-qualified # ➖ E0.6 minus
|
2796 ; fully-qualified # ➖ E0.6 minus
|
||||||
2797 ; fully-qualified # ➗ E0.6 divide
|
2797 ; fully-qualified # ➗ E0.6 divide
|
||||||
|
1F7F0 ; fully-qualified # 🟰 E14.0 heavy equals sign
|
||||||
267E FE0F ; fully-qualified # ♾️ E11.0 infinity
|
267E FE0F ; fully-qualified # ♾️ E11.0 infinity
|
||||||
267E ; unqualified # ♾ E11.0 infinity
|
267E ; unqualified # ♾ E11.0 infinity
|
||||||
|
|
||||||
|
@ -4581,8 +4693,8 @@
|
||||||
1F533 ; fully-qualified # 🔳 E0.6 white square button
|
1F533 ; fully-qualified # 🔳 E0.6 white square button
|
||||||
1F532 ; fully-qualified # 🔲 E0.6 black square button
|
1F532 ; fully-qualified # 🔲 E0.6 black square button
|
||||||
|
|
||||||
# Symbols subtotal: 301
|
# Symbols subtotal: 302
|
||||||
# Symbols subtotal: 301 w/o modifiers
|
# Symbols subtotal: 302 w/o modifiers
|
||||||
|
|
||||||
# group: Flags
|
# group: Flags
|
||||||
|
|
||||||
|
@ -4871,7 +4983,7 @@
|
||||||
# Flags subtotal: 275 w/o modifiers
|
# Flags subtotal: 275 w/o modifiers
|
||||||
|
|
||||||
# Status Counts
|
# Status Counts
|
||||||
# fully-qualified : 3512
|
# fully-qualified : 3624
|
||||||
# minimally-qualified : 817
|
# minimally-qualified : 817
|
||||||
# unqualified : 252
|
# unqualified : 252
|
||||||
# component : 9
|
# component : 9
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Emoji do
|
defmodule Pleroma.Emoji do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Emoji.Formatter do
|
defmodule Pleroma.Emoji.Formatter do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Emoji.Loader do
|
defmodule Pleroma.Emoji.Loader do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Emoji.Pack do
|
defmodule Pleroma.Emoji.Pack do
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Pleroma: A lightweight social networking server
|
# Pleroma: A lightweight social networking server
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
defmodule Pleroma.Filter do
|
defmodule Pleroma.Filter do
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue