Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
df1c13e
Add FAPI (Fediverse Auxiliary Service Provider) support
pfefferle Oct 10, 2025
803d3ba
Implement FASP registration and capability management
pfefferle Oct 10, 2025
f806c0a
Update REST route base and endpoint path
pfefferle Oct 10, 2025
d6420e7
Fix typo in registration endpoint URL
pfefferle Oct 10, 2025
bce4469
Fix REST route to include rest_base in path
pfefferle Oct 10, 2025
b6a9fff
Refactor FASP registration and admin classes
pfefferle Oct 15, 2025
35cde33
Use Activitypub signature verification for provider info
pfefferle Oct 15, 2025
af77faa
Refactor FASP to use Application RSA keypair for signing
pfefferle Oct 15, 2025
b2bda2b
Refactor FASP controller to use signature helper
pfefferle Oct 15, 2025
b068326
Change signature base and params methods to private
pfefferle Oct 15, 2025
c27b06a
Move FASP registrations admin UI to settings tab
pfefferle Oct 29, 2025
a46b3de
Refactor FASP capability auth to use signature verification
pfefferle Oct 29, 2025
ab3cafa
Add E2E tests for FASP controller REST API
pfefferle Oct 29, 2025
c1ec77c
Enforce FASP public key fingerprint and key matching
pfefferle Oct 29, 2025
8f80146
Update docs/fasp-registration.md
pfefferle Oct 29, 2025
743d5af
Update docs/fasp-registration.md
pfefferle Oct 29, 2025
61ded0a
Update docs/fasp-registration.md
pfefferle Oct 29, 2025
a210f0b
Refactor FASP registration handling and admin actions
pfefferle Oct 30, 2025
f177a56
Update includes/class-fasp.php
pfefferle Oct 30, 2025
9ba9050
Add sanitize_callback to REST API registration args
pfefferle Oct 30, 2025
e060736
Address PR review feedback for FASP implementation.
pfefferle Jan 20, 2026
59c0b8f
Simplify FASP keyId handling to match spec.
pfefferle Jan 20, 2026
396e265
Integrate FASP signature handling with existing system.
pfefferle Jan 20, 2026
a6fcefe
Add tests for Ed25519 signature verification and FASP integration.
pfefferle Jan 20, 2026
49961cf
Use multi-line comment syntax.
pfefferle Jan 20, 2026
8cd6713
Add FASP to supported federation protocols.
pfefferle Jan 20, 2026
4418739
Use Ed25519 for FASP signatures as required by spec.
pfefferle Jan 20, 2026
a1a5081
Remove FASP documentation files.
pfefferle Jan 20, 2026
666b78b
Add changelog entry.
pfefferle Jan 20, 2026
dbce571
Fix security issues and address Copilot feedback.
pfefferle Jan 20, 2026
24d109d
Fix docblock and Ed25519 alg parameter validation.
pfefferle Jan 20, 2026
d1c3b2d
Fix PHPCS issues in test file.
pfefferle Jan 20, 2026
c31a2da
Fix E2E tests to use valid Ed25519 public keys.
pfefferle Jan 21, 2026
2fa7b9a
Make FASP feature opt-in and improve admin UI.
pfefferle Jan 21, 2026
f0ef6d9
Enable FASP feature flag in tests.
pfefferle Jan 21, 2026
2a49821
Refactor FASP registration storage and improve feedback
pfefferle Jan 27, 2026
921b19e
Merge branch 'trunk' into fapi
pfefferle Jan 27, 2026
04f22cf
Refactor FASP capability management and add HTTPS validation
pfefferle Jan 27, 2026
ea1e4d5
Refactor FASP admin notices to use WordPress settings API
pfefferle Jan 27, 2026
20709b2
Merge origin/trunk into fapi
pfefferle Apr 10, 2026
eedd803
Store verified keyId in Verification trait, remove Server::verify_sig…
pfefferle Apr 10, 2026
2156f44
Simplify activitypub_pre_get_public_key filter handling
pfefferle Apr 10, 2026
7a14e99
Fix FASP spec compliance issues
pfefferle Apr 10, 2026
2995523
Simplify FASP implementation
pfefferle Apr 10, 2026
1fce4c7
Fix tests for FASP refactoring
pfefferle Apr 10, 2026
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
4 changes: 4 additions & 0 deletions .github/changelog/add-fasp-support
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Significance: minor
Type: added

Add support for auxiliary fediverse services like moderation tools and search providers.
1 change: 1 addition & 0 deletions FEDERATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ The WordPress plugin largely follows ActivityPub's server-to-server specificatio
- [HTTP Signatures](https://swicg.github.io/activitypub-http-signature/)
- [NodeInfo](https://nodeinfo.diaspora.software/)
- [Interaction Policy](https://docs.gotosocial.org/en/latest/federation/interaction_policy/)
- [FASP](https://github.com/mastodon/fediverse_auxiliary_service_provider_specifications/) (Fediverse Auxiliary Service Provider)

## Supported FEPs

Expand Down
10 changes: 10 additions & 0 deletions activitypub.php
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,11 @@ function rest_init() {
( new Rest\Nodeinfo_Controller() )->register_routes();
}
( new Rest\Proxy_Controller() )->register_routes();

// Load FASP endpoints only if enabled.
if ( '1' === \get_option( 'activitypub_enable_fasp', '0' ) ) {
( new Rest\Fasp_Controller() )->register_routes();
}
}
\add_action( 'rest_api_init', __NAMESPACE__ . '\rest_init' );

Expand Down Expand Up @@ -123,6 +128,11 @@ function plugin_init() {
\add_action( 'init', array( __NAMESPACE__ . '\Relay', 'init' ) );
}

// Only load FASP if enabled.
if ( '1' === \get_option( 'activitypub_enable_fasp', '0' ) ) {
\add_action( 'init', array( __NAMESPACE__ . '\Fasp', 'init' ) );
}

// Load development tools.
if ( 'local' === wp_get_environment_type() ) {
$loader_file = __DIR__ . '/local/load.php';
Expand Down
116 changes: 116 additions & 0 deletions assets/css/activitypub-admin.css
Original file line number Diff line number Diff line change
Expand Up @@ -401,6 +401,112 @@ input.blog-user-identifier {
}
}

/* FASP Registrations */
.fasp-registrations-list {
margin-bottom: 2em;
}

.fasp-registration-card {
margin: 10px 0;
padding: 15px;
background: #fff;
}

.fasp-registration-card.highlighted {
border-color: #3582c4;
box-shadow: 0 0 0 1px #3582c4;
}

.fasp-registration-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 10px;
}

.fasp-registration-name {
font-size: 14px;
font-weight: 600;
margin: 0;
}

.fasp-registration-actions {
display: flex;
gap: 10px;
}

.fasp-registration-details {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 10px;
margin-bottom: 10px;
}

.fasp-registration-detail {
background: #f6f7f7;
padding: 10px;
border-radius: 3px;
}

.fasp-registration-detail strong {
display: block;
margin-bottom: 5px;
font-size: 11px;
text-transform: uppercase;
color: #50575e;
}

.fasp-registration-detail p.description { /* stylelint-disable-line no-descending-specificity */
font-size: 12px;
margin: 5px 0;
}

.fasp-registration-fingerprint {
margin-top: 10px;
}

.fasp-fingerprint {
display: block;
font-size: 12px;
word-break: break-all;
background: #f0f0f1;
padding: 8px;
border-radius: 3px;
margin-top: 5px;
}

.fasp-technical-details {
margin-top: 10px;
border-top: 1px solid #f0f0f1;
padding-top: 10px;
}

.fasp-technical-details summary {
font-size: 13px;
padding: 5px 0;
}

.fasp-technical-details .fasp-registration-details {
margin-top: 10px;
}

/* stylelint-disable no-descending-specificity */
.fasp-empty-state {
text-align: center;
padding: 40px 20px;
background: #f6f7f7;
border-radius: 4px;
}

.fasp-empty-state p {
margin: 0 0 10px;
}

.fasp-empty-state p.description {
margin: 0;
}
/* stylelint-enable no-descending-specificity */

@media screen and (max-width: 782px) {

.activitypub-settings {
Expand All @@ -411,4 +517,14 @@ input.blog-user-identifier {
max-width: calc(100% - 36px);
width: 100%;
}

.fasp-registration-details {
grid-template-columns: 1fr;
}

.fasp-registration-header {
flex-direction: column;
align-items: flex-start;
gap: 10px;
}
}
Loading
Loading