Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
cd15158
Update follow return types and error handling
pfefferle Aug 26, 2025
0a25386
Add changelog
matticbot Aug 26, 2025
33caee1
Update includes/collection/class-following.php
pfefferle Aug 26, 2025
a55ace0
Remove obsolete changelog entry 2094-from-description
pfefferle Aug 26, 2025
183e5da
Add follow activity to outbox with private visibility
pfefferle Aug 26, 2025
38aa151
Update CLI example to use underscore in command
pfefferle Aug 26, 2025
51ece21
Revert "Update CLI example to use underscore in command"
pfefferle Aug 26, 2025
d45c63c
Merge branch 'trunk' into change/simplify-follow-returns
pfefferle Sep 24, 2025
5cecd4b
Merge branch 'trunk' into change/simplify-follow-returns
pfefferle Sep 24, 2025
1763290
Fix PHP warning in bulk edit scenario when post_author is missing (#2…
obenland Sep 24, 2025
d476c61
Add following meta key to Jetpack sync allowlist (#2226)
obenland Sep 24, 2025
fcf057c
Migration: Re-use async batch infrastructure (#1343)
obenland Sep 24, 2025
c19e96e
Register post types and meta on 'init' action (#2232)
pfefferle Sep 24, 2025
2df8c07
Bump tar-fs from 3.1.0 to 3.1.1 (#2234)
dependabot[bot] Sep 24, 2025
72d5fe8
Enhance Jetpack integration for comment meta sync (#2233)
obenland Sep 25, 2025
c04be77
Add health check for active Captcha plugins (#2231)
pfefferle Sep 25, 2025
f69aa24
Add `fetch_by_acct` and `fetch_by_various` methods to Remote_Actors (…
pfefferle Sep 25, 2025
c108c36
Add init check to get_comment_type_slugs (#2237)
obenland Sep 29, 2025
738954c
Prevent PHP Warning (#2238)
pfefferle Sep 29, 2025
512dcbe
Add row action filters and Jetpack Reader link integration (#2241)
pfefferle Sep 30, 2025
2faaaab
Move routing logic to new Router class (#2245)
pfefferle Sep 30, 2025
6d3d393
Update deploy workflow to trigger on release (#2248)
pfefferle Sep 30, 2025
a7aaddd
Update Jetpack connection check to use Manager class (#2249)
pfefferle Sep 30, 2025
63595d4
Add external link icon to Jetpack reader feed link (#2247)
pfefferle Sep 30, 2025
f89b005
Add upgrade routine to enable ActivityPub feeds in WordPress.com Read…
obenland Sep 30, 2025
4dec3c9
Improve user ID fallback and transformer logic (#2246)
pfefferle Sep 30, 2025
2c66740
Fix Reader URL generation for WPCOM environment (#2250)
pfefferle Sep 30, 2025
120df7d
Add QuoteRequest activity handler support (#2240)
pfefferle Sep 30, 2025
0ba4416
Release 7.5.0 (#2253)
pfefferle Oct 1, 2025
b7874e7
Fix release script to handle do_action_deprecated with double quotes …
obenland Oct 1, 2025
9fd20ea
Improve NodeInfo handling and add support for FEP-0151 (#2255)
pfefferle Oct 1, 2025
6be0f21
Add detailed magic method docs to ActivityPub classes (#2254)
pfefferle Oct 1, 2025
a28d39b
Fix flaky test_handle_create_check_multiple_comments test (#2262)
obenland Oct 1, 2025
5afcc60
Fix HTML entity encoding in extra field names (#2261)
obenland Oct 1, 2025
b209cfa
Fix Jetpack reader feed URL path (#2263)
obenland Oct 1, 2025
a90aaa4
Add FEP-3b86 Activity Intents support to WebFinger (#2256)
pfefferle Oct 1, 2025
5477449
Bump @wordpress/api-fetch from 7.31.0 to 7.32.0 (#2267)
dependabot[bot] Oct 2, 2025
1fa4641
Bump @wordpress/compose from 7.31.0 to 7.32.0 (#2264)
dependabot[bot] Oct 2, 2025
d062f46
Bump @wordpress/block-editor from 15.4.0 to 15.5.0 (#2265)
dependabot[bot] Oct 2, 2025
0e337d7
Add bidirectional transforms between reply and embed blocks (#2244)
obenland Oct 2, 2025
8266a43
Validate ActivityPub URLs in reply block before setting inReplyTo (#2…
obenland Oct 2, 2025
e5a2043
Improve inbox activity type handling and tests (#2260)
pfefferle Oct 2, 2025
a62cfdc
Remove duplicate webfinger_user_data filter (#2269)
pfefferle Oct 2, 2025
4c88cdf
Fix broken translation link in CONTRIBUTING.md (#2276)
edent Oct 2, 2025
de4651c
Bump @wordpress/editor from 14.31.0 to 14.32.0 (#2283)
dependabot[bot] Oct 3, 2025
01e2660
Bump @wordpress/env from 10.31.0 to 10.32.0 (#2280)
dependabot[bot] Oct 3, 2025
7db4d64
Bump @wordpress/edit-post from 8.31.0 to 8.32.0 (#2282)
dependabot[bot] Oct 3, 2025
0705d19
Fix Prettify workflow for pull requests from forks (#2277)
obenland Oct 3, 2025
b88abc7
Tests: Avoid using `runInSeparateProcess` where possible (#2275)
obenland Oct 3, 2025
7a69aa8
Update builds (again) (#2285)
pfefferle Oct 3, 2025
85b956d
Reorganize test directory structure (#2289)
obenland Oct 6, 2025
f79de51
Fix: issue #2286 – typo, improved quoting explanation, add missing i1…
Jiwoon-Kim Oct 6, 2025
a90665b
Use `bp_members_get_user_url` if available for author URLs (#2292)
pfefferle Oct 6, 2025
34cf1b5
Exclude build asset files from PHP GitHub Actions triggers (#2293)
pfefferle Oct 6, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .distignore
Original file line number Diff line number Diff line change
Expand Up @@ -45,5 +45,5 @@ README.md
readme.md
SECURITY.md
src
tests
phpunit
vendor
4 changes: 0 additions & 4 deletions .github/changelog/2193-from-description

This file was deleted.

4 changes: 0 additions & 4 deletions .github/changelog/2195-from-description

This file was deleted.

4 changes: 0 additions & 4 deletions .github/changelog/2200-from-description

This file was deleted.

4 changes: 0 additions & 4 deletions .github/changelog/2206-from-description

This file was deleted.

4 changes: 0 additions & 4 deletions .github/changelog/2207-from-description

This file was deleted.

4 changes: 0 additions & 4 deletions .github/changelog/2209-from-description

This file was deleted.

4 changes: 0 additions & 4 deletions .github/changelog/2210-from-description

This file was deleted.

4 changes: 0 additions & 4 deletions .github/changelog/2211-from-description

This file was deleted.

4 changes: 0 additions & 4 deletions .github/changelog/2221-from-description

This file was deleted.

4 changes: 0 additions & 4 deletions .github/changelog/2223-from-description

This file was deleted.

4 changes: 4 additions & 0 deletions .github/changelog/2244-from-description
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Significance: minor
Type: added

Add bidirectional transforms between reply and embed blocks for improved user experience.
4 changes: 4 additions & 0 deletions .github/changelog/2252-from-description
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Significance: patch
Type: fixed

Reply block now properly validates ActivityPub URLs before setting inReplyTo field
4 changes: 4 additions & 0 deletions .github/changelog/2255-from-description
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Significance: minor
Type: changed

Added support for the latest NodeInfo (FEP-0151), with improved federation details, staff info, and software metadata for better ActivityPub compliance.
4 changes: 4 additions & 0 deletions .github/changelog/2256-from-description
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Significance: minor
Type: changed

Added support for FEP-3b86 Activity Intents, extending WebFinger and REST interactions with new Create and Follow intent links.
4 changes: 4 additions & 0 deletions .github/changelog/2260-from-description
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Significance: patch
Type: fixed

Fixed activity processing to handle QuoteRequest and other edge cases more reliably.
4 changes: 4 additions & 0 deletions .github/changelog/2261-from-description
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Significance: patch
Type: fixed

Fixed HTML entity encoding in extra field names when displayed on ActivityPub platforms
4 changes: 4 additions & 0 deletions .github/changelog/2290-from-description
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Significance: patch
Type: fixed

Fixed typo in example, improve quoting description.
9 changes: 4 additions & 5 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
name: Deploy to WordPress.org
on:
push:
tags:
- '*'
release:
types: [released]
jobs:
tag:
name: New tag
deploy_to_wp_repository:
name: Deploy to WP.org
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/extract-wp-hooks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ name: Extract WordPress Hooks
on:
push:
branches: [trunk]
paths: ['**.php']
paths:
- '**.php'
- '!build/**/*.asset.php'
workflow_dispatch:

jobs:
Expand Down
19 changes: 12 additions & 7 deletions .github/workflows/format.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
- name: Checkout code
uses: actions/checkout@v5
with:
ref: ${{ github.head_ref }}
ref: ${{ github.event.pull_request.head.sha }}

- name: Setup Node.js
uses: actions/setup-node@v5
Expand All @@ -29,12 +29,17 @@ jobs:
- name: Check for changes and commit
run: |
if [ -n "$(git status --porcelain)" ]; then
echo "Formatting changes detected, committing files..."
git config user.name "Automattic Bot"
git config user.email "[email protected]"
git add .
git commit -m "Prettify"
git push
if [ "${{ github.event.pull_request.head.repo.full_name }}" != "${{ github.repository }}" ]; then
echo "::error::Formatting changes detected in PR from fork. Please run 'npm run format' locally and push the changes."
exit 1
else
echo "Formatting changes detected, committing files..."
git config user.name "Automattic Bot"
git config user.email "[email protected]"
git add .
git commit -m "Prettify"
git push
fi
else
echo "No formatting changes needed"
fi
2 changes: 2 additions & 0 deletions .github/workflows/phpcs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ on:
- 'phpunit.xml.dist'
- 'phpcs.xml'
- '.github/workflows/phpcs.yml'
- '!build/**/*.asset.php'
pull_request:
paths:
- '**/*.php'
Expand All @@ -18,6 +19,7 @@ on:
- 'phpunit.xml.dist'
- 'phpcs.xml'
- '.github/workflows/phpcs.yml'
- '!build/**/*.asset.php'
jobs:
phpcs:
runs-on: ubuntu-latest
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/phpunit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ on:
- 'phpunit.xml.dist'
- 'phpcs.xml'
- '.github/workflows/phpunit.yml'
- '!build/**/*.asset.php'
pull_request:
paths:
- '**/*.php'
Expand All @@ -18,6 +19,7 @@ on:
- 'phpunit.xml.dist'
- 'phpcs.xml'
- '.github/workflows/phpunit.yml'
- '!build/**/*.asset.php'
jobs:
phpunit:
runs-on: ubuntu-latest
Expand Down Expand Up @@ -145,7 +147,7 @@ jobs:
# Extract just the method name from the full class::method
METHOD_NAME=$(echo "$COVERS_TARGET" | sed 's/.*:://')
echo "Extracted method name: $METHOD_NAME"
if TEST_FILE=$(find tests/ -name "*.php" -type f -exec grep -l "@covers.*$METHOD_NAME" {} \; | head -1); then
if TEST_FILE=$(find phpunit/tests/ -name "*.php" -type f -exec grep -l "@covers.*$METHOD_NAME" {} \; | head -1); then
echo "Found test file: $TEST_FILE"
if LINE_NUM=$(grep -n "@covers.*$METHOD_NAME" "$TEST_FILE" | head -1 | cut -d: -f1); then
echo "Found line number: $LINE_NUM"
Expand Down
28 changes: 28 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,33 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [7.5.0] - 2025-10-01
### Added
- Added a setting to control who can quote your posts. [#2207]
- Added support for QuoteRequest activities (FEP-044f), enabling proper handling, validation, and policy-based acceptance or rejection of quote requests. [#2240]
- Add upgrade routine to enable ActivityPub feeds in WordPress.com Reader [#2243]
- Add Yoast SEO integration for author archives site health check. [#2193]
- Improved interaction policies with clearer defaults and better Mastodon compatibility. [#2221]
- New site health check warns if active Captcha plugins may block ActivityPub comments. [#2231]
- Sync following meta to enable RSS feed subscriptions for ActivityPub actors in WordPress.com Reader [#2226]
- You can now follow people and see their updates right in the WordPress.com Reader when using Jetpack or WordPress.com. [#2241]

### Changed
- Added support for fetching actors by account identifiers and improved reliability of actor retrieval. [#2235]
- Clarify error messages in account modal to specify full profile URL format. [#2209]
- Improved checks to better identify public Activities. [#2206]
- Improved compatibility by making the 'implements' field always use multiple entries. [#2195]
- Improved recipient handling for clarity and improved visibility handling of activities. [#2210]
- Remote reply blocks now sync account info across all blocks on the same page [#2211]
- Standardized notification handling with new hooks for better extensibility and consistency. [#2223]
- Updated sync allowlist to add support for Jetpack notifications of likes and reposts. [#2233]

### Fixed
- Fixed an issue where post metadata in the block editor was missing or failed to update. [#2232]
- Fix Flag activity object list processing to preserve URL arrays [#2200]
- Fix PHP warning in bulk edit scenario when post_author is missing from $_REQUEST [#2230]
- Posts now only fall back to the blog user when blog mode is enabled and no valid author exists, ensuring content negotiation only runs if an Actor is available. [#2246]

## [7.4.0] - 2025-09-15
### Added
- Add activitypub_json REST field for ap_actor posts to access raw JSON data [#2121]
Expand Down Expand Up @@ -1437,6 +1464,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added
- initial

[7.5.0]: https://github.com/Automattic/wordpress-activitypub/compare/7.4.0...7.5.0
[7.4.0]: https://github.com/Automattic/wordpress-activitypub/compare/7.3.0...7.4.0
[7.3.0]: https://github.com/Automattic/wordpress-activitypub/compare/7.2.0...7.3.0
[7.2.0]: https://github.com/Automattic/wordpress-activitypub/compare/7.1.0...7.2.0
Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ This helps us organize feedback effectively and ensures your questions get the r

## Translate the plugin

If you speak a foreign language, you can help translate the ActivityPub plugin into your own language. [here is how.](docs/translations)
If you speak a foreign language, you can help translate the ActivityPub plugin into your own language. [Here is how to get started with translating.](docs/translations.md)

## License

Expand Down
3 changes: 3 additions & 0 deletions FEDERATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ The WordPress plugin largely follows ActivityPub's server-to-server specificatio
## Supported FEPs

- [FEP-f1d5: NodeInfo in Fediverse Software](https://codeberg.org/fediverse/fep/src/branch/main/fep/f1d5/fep-f1d5.md)
- [FEP-0151: NodeInfo in Fediverse Software (2025 edition)](https://codeberg.org/fediverse/fep/src/branch/main/fep/0151/fep-0151.md)
- [FEP-67ff: FEDERATION.md](https://codeberg.org/fediverse/fep/src/branch/main/fep/67ff/fep-67ff.md)
- [FEP-5feb: Search indexing consent for actors](https://codeberg.org/fediverse/fep/src/branch/main/fep/5feb/fep-5feb.md)
- [FEP-2677: Identifying the Application Actor](https://codeberg.org/fediverse/fep/src/branch/main/fep/2677/fep-2677.md)
Expand All @@ -21,6 +22,8 @@ The WordPress plugin largely follows ActivityPub's server-to-server specificatio
- [FEP-b2b8: Long-form Text](https://codeberg.org/fediverse/fep/src/branch/main/fep/b2b8/fep-b2b8.md)
- [FEP-7888: Demystifying the context property](https://codeberg.org/fediverse/fep/src/branch/main/fep/7888/fep-7888.md)
- [FEP-844e: Capability discovery](https://codeberg.org/fediverse/fep/src/branch/main/fep/844e/fep-844e.md)
- [FEP-044f: Consent-respecting quote posts](https://codeberg.org/fediverse/fep/src/branch/main/fep/044f/fep-044f.md)
- [FEP-3b86: Activity Intents](https://codeberg.org/fediverse/fep/src/branch/main/fep/3b86/fep-3b86.md)

Partially supported FEPs

Expand Down
5 changes: 3 additions & 2 deletions activitypub.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* Plugin Name: ActivityPub
* Plugin URI: https://github.com/Automattic/wordpress-activitypub
* Description: The ActivityPub protocol is a decentralized social networking protocol based upon the ActivityStreams 2.0 data format.
* Version: 7.4.0
* Version: 7.5.0
* Author: Matthias Pfefferle & Automattic
* Author URI: https://automattic.com/
* License: MIT
Expand All @@ -17,7 +17,7 @@

namespace Activitypub;

\define( 'ACTIVITYPUB_PLUGIN_VERSION', '7.4.0' );
\define( 'ACTIVITYPUB_PLUGIN_VERSION', '7.5.0' );

// Plugin related constants.
\define( 'ACTIVITYPUB_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
Expand Down Expand Up @@ -81,6 +81,7 @@ function plugin_init() {
\add_action( 'init', array( __NAMESPACE__ . '\Move', 'init' ) );
\add_action( 'init', array( __NAMESPACE__ . '\Options', 'init' ) );
\add_action( 'init', array( __NAMESPACE__ . '\Post_Types', 'init' ) );
\add_action( 'init', array( __NAMESPACE__ . '\Router', 'init' ) );
\add_action( 'init', array( __NAMESPACE__ . '\Scheduler', 'init' ) );
\add_action( 'init', array( __NAMESPACE__ . '\Search', 'init' ) );
\add_action( 'init', array( __NAMESPACE__ . '\Signature', 'init' ) );
Expand Down
5 changes: 5 additions & 0 deletions assets/css/activitypub-admin.css
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,11 @@ summary {
transform: translateY(-30%) rotate(-135deg);
}

table.followings .dashicons {
font-size: 1em;
line-height: 1.7;
}

.activitypub-settings-accordion-trigger:active,
.activitypub-settings-accordion-trigger:hover {
background: #f6f7f7;
Expand Down
44 changes: 39 additions & 5 deletions bin/__tests__/release.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -177,18 +177,52 @@ function old_function() {}`;
} );

test( 'replaces unreleased in apply_filters_deprecated calls', () => {
const content = `$value = apply_filters_deprecated(
'old_filter',
array( $value ),
'unreleased',
'new_filter'
const content = `$value = apply_filters_deprecated(
'old_filter',
array( $value ),
'unreleased',
'new_filter'
);`;

const result = applyVersionReplacements( content, testVersion, patterns );
expect( result ).toContain( `'${ testVersion }',` );
expect( result ).not.toContain( `'unreleased',` );
} );

test( 'replaces unreleased in do_action_deprecated calls with single quotes', () => {
const content = `do_action_deprecated( 'old_action', array( $this ), 'unreleased', 'new_action' );`;

const doActionPatterns = [
{
search: /(?<=\b(?:apply_filters_deprecated|do_action_deprecated)\s*\(\s*'.*?'\s*,\s*array\s*\(.*?\)\s*,\s*')unreleased(?=['"],\s*['"])/gi,
replace: testVersion,
},
];

const result = applyVersionReplacements( content, testVersion, doActionPatterns );
expect( result ).toContain(
`do_action_deprecated( 'old_action', array( $this ), '${ testVersion }', 'new_action' )`
);
expect( result ).not.toContain( `'unreleased'` );
} );

test( 'replaces unreleased in do_action_deprecated calls with double quotes', () => {
const content = `\\do_action_deprecated( 'activitypub_notification', array( $this ), 'unreleased', "new_action" );`;

const doActionPatterns = [
{
search: /(?<=\b(?:apply_filters_deprecated|do_action_deprecated)\s*\(\s*'.*?'\s*,\s*array\s*\(.*?\)\s*,\s*')unreleased(?=['"],\s*['"])/gi,
replace: testVersion,
},
];

const result = applyVersionReplacements( content, testVersion, doActionPatterns );
expect( result ).toContain(
`\\do_action_deprecated( 'activitypub_notification', array( $this ), '${ testVersion }', "new_action" )`
);
expect( result ).not.toContain( `'unreleased'` );
} );

test( 'handles case insensitive @since and @deprecated', () => {
const content = `/**
* @Since unreleased
Expand Down
2 changes: 1 addition & 1 deletion bin/release.js
Original file line number Diff line number Diff line change
Expand Up @@ -274,7 +274,7 @@ async function createRelease() {
replace: ( match ) => match.replace( /unreleased/i, version ),
},
{
search: /(?<=\b(?:apply_filters_deprecated|do_action_deprecated)\s*\(\s*'.*?'\s*,\s*array\s*\(.*?\)\s*,\s*')unreleased(?=',\s*['<=>])/gi,
search: /(?<=\b(?:apply_filters_deprecated|do_action_deprecated)\s*\(\s*'.*?'\s*,\s*array\s*\(.*?\)\s*,\s*')unreleased(?=['"],\s*['"])/gi,
replace: ( match ) => match.replace( /unreleased/i, version ),
},
] );
Expand Down
2 changes: 1 addition & 1 deletion build/editor-plugin/plugin.asset.php
Original file line number Diff line number Diff line change
@@ -1 +1 @@
<?php return array('dependencies' => array('react-jsx-runtime', 'wp-components', 'wp-core-data', 'wp-data', 'wp-edit-post', 'wp-editor', 'wp-element', 'wp-i18n', 'wp-plugins', 'wp-primitives', 'wp-url'), 'version' => 'faa910495b60327c9360');
<?php return array('dependencies' => array('react-jsx-runtime', 'wp-components', 'wp-core-data', 'wp-data', 'wp-edit-post', 'wp-editor', 'wp-element', 'wp-i18n', 'wp-plugins', 'wp-primitives', 'wp-url'), 'version' => '12df5cf70e99e55c6091');
Loading
Loading