Goal
Sister issue to #515 (Phanpy). Make JSS speak enough of the Mastodon + Pleroma API surface that Soapbox can sign in to a pod and use it.
Soapbox is a feature-rich web client originally built for Pleroma/Akkoma, also Mastodon-API compatible. Heavier UI than Phanpy, broader feature set (custom emoji, quote posts, chats, polls, groups), AGPL-3.0 licensed.
Why a separate issue
Most of the work is shared with #515 — Phase 1 of the Phanpy shim covers the core Mastodon REST endpoints Soapbox also uses. This issue scopes the delta: extra endpoints, Pleroma-specific extensions, and the architectural questions Soapbox raises that Phanpy didn't.
What's different vs Phanpy
| Surface |
Phanpy needs |
Soapbox additionally needs |
| Core REST |
yes (covered in #515) |
yes — same set |
/api/v1/custom_emojis |
optional |
expected, prominent in UI |
/api/v1/polls/<id> + vote endpoints |
basic |
full poll lifecycle |
/api/v1/conversations |
basic |
DM-focused UI |
/api/pleroma/* extensions |
n/a |
for quote posts, reactions, chat — Pleroma-only |
/api/v1/markers |
optional |
read-position sync |
/api/v1/filters |
none |
filter management UI |
The Pleroma extensions are the only material extra work. Skipping them gets ~85% of Soapbox functional (it gracefully degrades when the server doesn't expose them — Soapbox works against Mastodon servers today, and Mastodon has no Pleroma extensions either).
License consideration
Soapbox is AGPL-3.0. That changes the embed calculus vs Phanpy (MIT):
- Linking only (
links.jsonld opens the hosted Soapbox UI in a new tab) → no license obligation.
- Embedding/bundling Soapbox into a Solid app on the pod → AGPL would attach. Anyone running it serves source-availability obligations under network use.
If the suite is AGPL-friendly (solid-apps already is, AGPL-3.0-only), bundling is fine. If we ever want a permissive option to ship alongside, Phanpy is the cleaner choice; Soapbox is the richer one.
Recommendation
Success criteria
A user opens Soapbox at e.g. soapbox.pub, enters their pod URL as the server, authenticates via OAuth, sees their home timeline, posts, sees realtime updates. Pleroma-only features (quotes, reactions, chats) are absent — same as connecting Soapbox to a vanilla Mastodon instance today.
Notes
Goal
Sister issue to #515 (Phanpy). Make JSS speak enough of the Mastodon + Pleroma API surface that Soapbox can sign in to a pod and use it.
Soapbox is a feature-rich web client originally built for Pleroma/Akkoma, also Mastodon-API compatible. Heavier UI than Phanpy, broader feature set (custom emoji, quote posts, chats, polls, groups), AGPL-3.0 licensed.
Why a separate issue
Most of the work is shared with #515 — Phase 1 of the Phanpy shim covers the core Mastodon REST endpoints Soapbox also uses. This issue scopes the delta: extra endpoints, Pleroma-specific extensions, and the architectural questions Soapbox raises that Phanpy didn't.
What's different vs Phanpy
/api/v1/custom_emojis/api/v1/polls/<id>+ vote endpoints/api/v1/conversations/api/pleroma/*extensions/api/v1/markers/api/v1/filtersThe Pleroma extensions are the only material extra work. Skipping them gets ~85% of Soapbox functional (it gracefully degrades when the server doesn't expose them — Soapbox works against Mastodon servers today, and Mastodon has no Pleroma extensions either).
License consideration
Soapbox is AGPL-3.0. That changes the embed calculus vs Phanpy (MIT):
links.jsonldopens the hosted Soapbox UI in a new tab) → no license obligation.If the suite is AGPL-friendly (solid-apps already is, AGPL-3.0-only), bundling is fine. If we ever want a permissive option to ship alongside, Phanpy is the cleaner choice; Soapbox is the richer one.
Recommendation
/api/v1/custom_emojis, conversations, markers — small additional work that benefits Soapbox without changing the Phanpy story.Success criteria
A user opens Soapbox at e.g.
soapbox.pub, enters their pod URL as the server, authenticates via OAuth, sees their home timeline, posts, sees realtime updates. Pleroma-only features (quotes, reactions, chats) are absent — same as connecting Soapbox to a vanilla Mastodon instance today.Notes