Commit graph

10,595 commits

Author SHA1 Message Date
Phantasm
1d758dbbf5
Elixir 1.19: Do not restart :logger in ConfigDB TransferTask 2026-07-17 22:39:43 +02:00
Lain Soykaf
b862254889
fix(deps): update Gun to 2.4.1 2026-07-17 21:09:13 +04:00
Lain Soykaf
f11ffca7f5
feat(http): rework Gun connection pooling 2026-07-17 20:35:17 +04:00
moon.eth
b11e8888d1 MediaProxy: improve inline rendering of remote image attachments
Two related changes that ensure remote images render inline in timelines
instead of as clickable links.

reverse_proxy: always force inline for whitelisted content types
  When `inline_content_types` is configured as a whitelist, the upstream's
  `content-disposition` header used to be passed through unchanged. Some
  origins send `content-disposition: attachment` for media we want
  embedded, so the proxy now always emits `content-disposition: inline`
  for whitelisted types (overriding the upstream header), deriving a
  filename from `MIME.extensions/1` (e.g. `inline.gif`) so browsers have
  something to use for "Save As". When the type has no known extension,
  the bare token `inline` is emitted. The `inline_content_types: true`
  (pass-through) and `:false` (always attachment) behaviours are
  unchanged.

ActivityPub: sniff MIME type for extensionless/generic attachments
  Some remotes (e.g. extensionless Cloudflare Images URLs) ship
  attachments with no usable `mediaType` (missing, empty, or
  `application/octet-stream`), which would render as links instead of
  inline images. `AttachmentValidator.fix_media_type/1` now fetches the
  first 8 KB of the URL and runs it through libmagic when the declared
  type carries no real information. Only `image/*` results replace the
  declared type; any other result, non-2xx response, transport error, or
  exception yields `nil` and the original type is kept, so ingestion
  never blocks and non-image media is never reclassified. Present real
  types are left untouched (no fetch is attempted).

The new logic lives in `Pleroma.Web.ActivityPub.ObjectValidators.AttachmentTypeSniffer`.

Tests: comprehensive coverage of both changes, including a dedicated
suite for the sniffer covering happy paths, non-image bodies, HTTP
failures, raised exceptions, guard clauses, and verification that the
Range header is sent; AttachmentValidator tests for mimeType fallback,
empty-string mediaType, multi-URL sniffing, and HTTP-failure fallback;
ReverseProxy tests for inline_content_types `true`/`false`/custom
whitelists, bare-inline for types without a MIME extension, and
attachment_name handling.
2026-07-14 15:04:06 +09:00
Mark Felder
f4b415c54e Improve RSS compliance
The core feed reader issue was that RSS 2.0 <link> is a simple text
element and can only appear once per <item>.
By having multiple <link> tags with rel attributes, parsers were
getting confused and resolving entries to the wrong URL.
Now each item has exactly one <link>: the post URL. Everything else
uses valid <atom:link> or dedicated extension elements where
appropriate.
2026-07-10 16:57:13 +00:00
Lain Soykaf
dc348e8be8
fix(deps): adapt hackney and mdex behavior 2026-07-02 12:48:52 +04:00
Lain Soykaf
9154f6fe3c
fix(deps): replace earmark with mdex 2026-07-02 11:31:54 +04:00
Phantasm
70c79ad512
Merge branch 'develop' into gitlab-mr-iid-4381 2026-06-30 00:31:51 +02:00
Phantasm
7d9175350d
Elixir 1.19: Completely overwrite formatter for default handler
:logger.update_handler_config/3 can merge configs,
:logger.set_handler_config/3 instead resets the rest to defaults.
2026-06-30 00:24:48 +02:00
nicole mikołajczyk
b0ae451942 Merge pull request 'Allow attaching emojis to user lists' (#7929) from mkljczk/pleroma:list-emoji into develop
Reviewed-on: https://git.pleroma.social/pleroma/pleroma/pulls/7929
2026-06-29 12:51:43 +00:00
Phantasm
c290f022de
InstanceView: Add show.json render test 2026-06-26 01:59:54 +02:00
nicole mikołajczyk
c6d1cead83 Allow attaching emojis to user lists
Signed-off-by: nicole mikołajczyk <git@mkljczk.pl>
2026-06-23 16:08:52 +02:00
Phantasm
9782bcf979
Elixir 1.19: Fix most MRFs being absent from AdminAPI suggestions.
Elixir 1.19 started lazily loading modules, so modules only get loaded
when referenced. Thus :code.all_loaded would no longer include all MRF
policies which is used on startup to generate sugestions for AdminAPI.
2026-06-16 20:22:24 +02:00
Phantasm
07c65adb0c
Grouped Notifications: Add feature flag to instance view and nodeinfo 2026-06-10 22:54:06 +02:00
lain
98cd1bbb9a Merge pull request 'Add grouped notifications API' (#7910) from issue-7905-grouped-notifications into develop
Reviewed-on: https://git.pleroma.social/pleroma/pleroma/pulls/7910
Reviewed-by: Phantasm <phnt@noreply.git.pleroma.social>
2026-06-05 09:23:26 +00:00
Lain Soykaf
fc9e6793ce
Address grouped notification review cleanup 2026-05-29 12:30:33 +04:00
Lain Soykaf
a84d16831f
Fix account favourites ordering 2026-05-25 18:09:18 +04:00
lain
33fdc59bc1 Merge branch 'develop' into issue-7887-featured-collection 2026-05-25 11:24:10 +00:00
lain
c8c1f7d38b Merge pull request 'Fix Websockets streaming API pushing old already federated posts to TL' (#7907) from websockets-necroposts into develop
Reviewed-on: https://git.pleroma.social/pleroma/pleroma/pulls/7907
2026-05-25 10:25:36 +00:00
Lain Soykaf
4c9fc6287e
Remove unreachable WebSocket protocol match 2026-05-25 09:26:07 +04:00
Phantasm
0c0d687330
credo, lint 2026-05-24 23:41:59 +02:00
Phantasm
5f55c9653c
RichMedia: Disable websockets backfill streaming in StatusView 2026-05-24 23:41:59 +02:00
Phantasm
678fe8a064
RichMedia: Add support for disabling wss streaming out on backfill 2026-05-24 23:41:58 +02:00
Lain Soykaf
a2a23b327b
Keep cursor cleanup scoped to grouped notifications 2026-05-23 14:27:11 +04:00
Lain Soykaf
add3844c6d
Persist notification group keys 2026-05-23 11:38:33 +04:00
Lain Soykaf
b054c2aa42
Fix paged featured collection fetches 2026-05-22 22:11:37 +04:00
Lain Soykaf
1e65c7a69e
Add grouped notifications API 2026-05-22 20:36:52 +04:00
Lain Soykaf
9dd02ecd50
Fix WebSocket protocol token handshakes 2026-05-22 16:30:14 +04:00
lain
4fe802b25a Merge branch 'develop' into gitlab-mr-iid-4381 2026-05-14 09:27:13 +00:00
lain
c7c453ca21 Merge branch 'develop' into gitlab-mr-iid-4426 2026-05-14 06:56:57 +00:00
lain
b90ac6b9c7 Merge branch 'develop' into host-verification 2026-05-14 06:01:31 +00:00
Phantasm
7651490c50
Merge branch 'develop' into gitlab-mr-iid-4381 2026-05-14 00:14:27 +02:00
Lain Soykaf
c92d233233
Use upstream remote_ip package 2026-05-13 20:04:12 +04:00
lain
47ca427497 Merge pull request 'Better user search' (#7793) from gitlab-mr-iid-4416 into develop
Reviewed-on: https://git.pleroma.social/pleroma/pleroma/pulls/7793
2026-05-13 09:53:52 +00:00
lain
ffff2098f0 Merge pull request 'Signatures: Only true is true.' (#7892) from bump/http-signatures-0.1.3 into develop
Reviewed-on: https://git.pleroma.social/pleroma/pleroma/pulls/7892
2026-05-13 06:09:06 +00:00
Lain Soykaf
68e4bb53a2
Merge branch 'develop' into fix/reject-third-party-reports 2026-05-13 08:49:20 +04:00
nicole mikołajczyk
4d3aea1fce Handle reports with just actor ap id as the object
Signed-off-by: nicole mikołajczyk <git@mkljczk.pl>
2026-05-13 00:56:56 +02:00
Phantasm
2b3ac2d7fe
lint 2026-05-13 00:44:33 +02:00
Phantasm
95b15190de
ActivityPubController: require validated host header 2026-05-13 00:32:57 +02:00
Phantasm
6c2d8209c9
SignatureRetryWorker: require validated host header 2026-05-13 00:32:54 +02:00
Phantasm
6f415cf3fc
EnsureHostMatchesPlug: Remove match against default scheme port
Checking against the default port of the Endpoint URL scheme is
redundant as normal instances will have the combination https/443
by default created by pleroma.instance gen, Tor-only instances should
have combination http/80 and local testing instances httt/XXXX.

The default scheme port doesn't add anything usefull in these configs.
2026-05-12 23:31:55 +02:00
Lain Soykaf
0cf865f025
Reject third-party remote reports 2026-05-12 23:50:30 +04:00
Phantasm
ea886dc36b
EnsureHostMatchesPlug: Ensure Host header matches instance URI 2026-05-12 16:50:28 +02:00
Lain Soykaf
71afba4825
Signature: Treat HTTP signature errors as invalid 2026-05-12 08:52:42 +04:00
Lain Soykaf
ab9fd33762
Fix Phoenix upstream migration regressions 2026-05-11 22:14:01 +04:00
Lain Soykaf
216a00f73f
Merge develop into Phoenix upstream migration 2026-05-11 22:13:46 +04:00
Lain Soykaf
47021b5aba
Fix MFM validator alias ordering 2026-05-11 16:37:59 +04:00
Lain Soykaf
6b86e31e5d
Add backend MFM support 2026-05-11 14:53:06 +04:00
Phantasm
4873991983 Update Pleroma-FE build artifacts URL 2026-05-06 13:55:45 +00:00
Lain Soykaf
727e9e7749
Fix votersCount inflation in multiple-choice polls
increase_vote_count/3 was incrementing votersCount on every vote
activity, causing inflation when a single voter picks multiple options.
Now only increments when the actor is a new unique voter, and preserves
existing votersCount otherwise.

Also adds is_integer guard to voters_count/1 to handle nil safely, and
adds tests for the voters_count clause ordering and edge cases.
2026-05-06 11:33:34 +04:00