# ActivityPub Plugin

**URL:** https://meta.discourse.org/t/activitypub-plugin/266794
**Category:** Plugin
**Tags:** experimental, activitypub
**Created:** [May 31, 2023, 5:21pm UTC](https://meta.discourse.org/t/activitypub-plugin/266794 "2023-05-31T17:21:52Z")
**Posts on this page:** 20
**Page:** 17

<div class="post-metadata">

### Author: ![angus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/angus/32/341715_2.png) [@angus](https://meta.discourse.org/u/angus)
#### Post date: [October 23, 2024, 7:38am UTC](https://meta.discourse.org/t/activitypub-plugin/266794/328 "2024-10-23T07:38:06Z")

</div>

Yes, you can now change the `preferredUsername` of Actors. Note the following about how this interoperates with Mastodon:

> The username displayed for the actor will not change until someone performs a lookup of the new handle. Following / Posting etc will continue to work regardless of the username displayed.

I had hoped my PR to Mastodon would be merged before merging this

[https://github.com/mastodon/mastodon/pull/30361](https://github.com/mastodon/mastodon/pull/30361)

Neverthless, considering the acceptance tests demonstrating that Mastodon can actually handle username changes, and the passage of time, I decided to go ahead with this.

---

<div class="post-metadata">

### Author: ![pepicrft](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pepicrft/32/451719_2.png) [@pepicrft](https://meta.discourse.org/u/pepicrft)
#### Post date: [October 27, 2024, 6:36pm UTC](https://meta.discourse.org/t/activitypub-plugin/266794/329 "2024-10-27T18:36:31Z")

</div>

> [@angus](#):
>
> This error means that you’re not running an up-to-date version of Discourse. The ActivityPub plugin currently requires the latest version of Discourse to work.

Thanks @Angus for your response here. I checked the instance that I’m running, and it’s 3.3.2, which seems to be the latest. I also updated the plugin to the latest version, but the error persists. This is the most recent stack trace that I collected from `/logs`:

> **Stack trace**
>
> activemodel (7.1.3.4) lib/active\_model/attribute\_methods.rb:489:in `method\_missing'
> 
> plugins/discourse-activity-pub/plugin.rb:368:in `block (2 levels) in activate!’
> 
> lib/plugin/instance.rb:376:in `public\_send’
> 
> lib/plugin/instance.rb:376:in `block (2 levels) in add\_to\_class’
> 
> plugins/discourse-activity-pub/plugin.rb:332:in `block (2 levels) in activate!’
> 
> lib/plugin/instance.rb:376:in `public\_send’
> 
> lib/plugin/instance.rb:376:in `block (2 levels) in add\_to\_class’
> 
> plugins/discourse-activity-pub/plugin.rb:338:in `block (2 levels) in activate!’
> 
> lib/plugin/instance.rb:376:in `public\_send’
> 
> lib/plugin/instance.rb:376:in `block (2 levels) in add\_to\_class’
> 
> plugins/discourse-activity-pub/app/models/discourse\_activity\_pub\_object.rb:107:in `after\_scheduled’
> 
> plugins/discourse-activity-pub/app/models/discourse\_activity\_pub\_activity.rb:126:in `after\_scheduled’
> 
> plugins/discourse-activity-pub/lib/discourse\_activity\_pub/delivery\_handler.rb:89:in `after\_scheduled’
> 
> plugins/discourse-activity-pub/lib/discourse\_activity\_pub/delivery\_handler.rb:15:in `perform’
> 
> plugins/discourse-activity-pub/lib/discourse\_activity\_pub/delivery\_handler.rb:27:in `perform’
> 
> plugins/discourse-activity-pub/app/models/concerns/discourse\_activity\_pub/ap/model\_callbacks.rb:160:in `block in activity\_pub\_deliver\_activity’
> 
> plugins/discourse-activity-pub/app/models/concerns/discourse\_activity\_pub/ap/model\_callbacks.rb:159:in `each’
> 
> plugins/discourse-activity-pub/app/models/concerns/discourse\_activity\_pub/ap/model\_callbacks.rb:159:in `activity\_pub\_deliver\_activity’
> 
> plugins/discourse-activity-pub/app/models/concerns/discourse\_activity\_pub/ap/model\_callbacks.rb:41:in `perform\_activity\_pub\_activity’
> 
> plugins/discourse-activity-pub/plugin.rb:457:in `block (2 levels) in activate!’
> 
> lib/plugin/instance.rb:376:in `public\_send’
> 
> lib/plugin/instance.rb:376:in `block (2 levels) in add\_to\_class’
> 
> plugins/discourse-activity-pub/plugin.rb:664:in `block (2 levels) in activate!’
> 
> lib/plugin/instance.rb:576:in `block in on’
> 
> lib/discourse\_event.rb:12:in `block in trigger’
> 
> /home/cloudron/rbenv/versions/3.3.4/lib/ruby/3.3.0/set.rb:501:in `each\_key’
> 
> /home/cloudron/rbenv/versions/3.3.4/lib/ruby/3.3.0/set.rb:501:in `each’
> 
> lib/discourse\_event.rb:12:in `trigger’
> 
> lib/post\_creator.rb:258:in `trigger\_after\_events’
> 
> lib/post\_creator.rb:220:in `create’
> 
> lib/new\_post\_manager.rb:318:in `perform\_create\_post’
> 
> lib/new\_post\_manager.rb:252:in `perform’
> 
> app/controllers/posts\_controller.rb:215:in `create’
> 
> actionpack (7.1.3.4) lib/action\_controller/metal/basic\_implicit\_render.rb:6:in `send\_action’
> 
> actionpack (7.1.3.4) lib/abstract\_controller/base.rb:224:in `process\_action’
> 
> actionpack (7.1.3.4) lib/action\_controller/metal/rendering.rb:165:in `process\_action’
> 
> actionpack (7.1.3.4) lib/abstract\_controller/callbacks.rb:259:in `block in process\_action’
> 
> activesupport (7.1.3.4) lib/active\_support/callbacks.rb:121:in `block in run\_callbacks’
> 
> app/controllers/application\_controller.rb:424:in `block in with\_resolved\_locale’
> 
> i18n (1.14.5) lib/i18n.rb:351:in `with\_locale’
> 
> app/controllers/application\_controller.rb:424:in `with\_resolved\_locale’
> 
> activesupport (7.1.3.4) lib/active\_support/callbacks.rb:130:in `block in run\_callbacks’
> 
> activesupport (7.1.3.4) lib/active\_support/callbacks.rb:141:in `run\_callbacks’
> 
> actionpack (7.1.3.4) lib/abstract\_controller/callbacks.rb:258:in `process\_action’
> 
> actionpack (7.1.3.4) lib/action\_controller/metal/rescue.rb:25:in `process\_action’
> 
> actionpack (7.1.3.4) lib/action\_controller/metal/instrumentation.rb:74:in `block in process\_action’
> 
> activesupport (7.1.3.4) lib/active\_support/notifications.rb:206:in `block in instrument’
> 
> activesupport (7.1.3.4) lib/active\_support/notifications/instrumenter.rb:58:in `instrument’
> 
> activesupport (7.1.3.4) lib/active\_support/notifications.rb:206:in `instrument’
> 
> actionpack (7.1.3.4) lib/action\_controller/metal/instrumentation.rb:73:in `process\_action’
> 
> actionpack (7.1.3.4) lib/action\_controller/metal/params\_wrapper.rb:261:in `process\_action’
> 
> activerecord (7.1.3.4) lib/active\_record/railties/controller\_runtime.rb:32:in `process\_action’
> 
> actionpack (7.1.3.4) lib/abstract\_controller/base.rb:160:in `process’
> 
> actionview (7.1.3.4) lib/action\_view/rendering.rb:40:in `process’
> 
> rack-mini-profiler (3.3.1) lib/mini\_profiler/profiling\_methods.rb:89:in `block in profile\_method’
> 
> actionpack (7.1.3.4) lib/action\_controller/metal.rb:227:in `dispatch’
> 
> actionpack (7.1.3.4) lib/action\_controller/metal.rb:309:in `dispatch’
> 
> actionpack (7.1.3.4) lib/action\_dispatch/routing/route\_set.rb:49:in `dispatch’
> 
> actionpack (7.1.3.4) lib/action\_dispatch/routing/route\_set.rb:32:in `serve’
> 
> actionpack (7.1.3.4) lib/action\_dispatch/journey/router.rb:51:in `block in serve’
> 
> actionpack (7.1.3.4) lib/action\_dispatch/journey/router.rb:131:in `block in find\_routes’
> 
> actionpack (7.1.3.4) lib/action\_dispatch/journey/router.rb:124:in `each’
> 
> actionpack (7.1.3.4) lib/action\_dispatch/journey/router.rb:124:in `find\_routes’
> 
> actionpack (7.1.3.4) lib/action\_dispatch/journey/router.rb:32:in `serve’
> 
> actionpack (7.1.3.4) lib/action\_dispatch/routing/route\_set.rb:882:in `call’
> 
> lib/middleware/omniauth\_bypass\_middleware.rb:64:in `call’
> 
> rack (2.2.9) lib/rack/tempfile\_reaper.rb:15:in `call’
> 
> rack (2.2.9) lib/rack/conditional\_get.rb:40:in `call’
> 
> rack (2.2.9) lib/rack/head.rb:12:in `call’
> 
> actionpack (7.1.3.4) lib/action\_dispatch/http/permissions\_policy.rb:36:in `call’
> 
> lib/content\_security\_policy/middleware.rb:12:in `call’
> 
> lib/middleware/anonymous\_cache.rb:399:in `call’
> 
> lib/middleware/csp\_script\_nonce\_injector.rb:12:in `call’
> 
> config/initializers/008-rack-cors.rb:14:in `call’
> 
> rack (2.2.9) lib/rack/session/abstract/id.rb:266:in `context’
> 
> rack (2.2.9) lib/rack/session/abstract/id.rb:260:in `call’
> 
> actionpack (7.1.3.4) lib/action\_dispatch/middleware/cookies.rb:689:in `call’
> 
> actionpack (7.1.3.4) lib/action\_dispatch/middleware/callbacks.rb:29:in `block in call’
> 
> activesupport (7.1.3.4) lib/active\_support/callbacks.rb:101:in `run\_callbacks’
> 
> actionpack (7.1.3.4) lib/action\_dispatch/middleware/callbacks.rb:28:in `call’
> 
> actionpack (7.1.3.4) lib/action\_dispatch/middleware/debug\_exceptions.rb:29:in `call’
> 
> actionpack (7.1.3.4) lib/action\_dispatch/middleware/show\_exceptions.rb:31:in `call’
> 
> logster (2.20.0) lib/logster/middleware/reporter.rb:40:in `call’
> 
> lib/freedom\_patches/rails\_rack\_logger\_from\_rails\_7\_2.rb:35:in `call\_app’
> 
> lib/freedom\_patches/rails\_rack\_logger\_from\_rails\_7\_2.rb:22:in `call’
> 
> config/initializers/100-quiet\_logger.rb:20:in `call’
> 
> config/initializers/100-silence\_logger.rb:29:in `call’
> 
> actionpack (7.1.3.4) lib/action\_dispatch/middleware/request\_id.rb:28:in `call’
> 
> lib/middleware/enforce\_hostname.rb:24:in `call’
> 
> rack (2.2.9) lib/rack/method\_override.rb:24:in `call’
> 
> actionpack (7.1.3.4) lib/action\_dispatch/middleware/executor.rb:14:in `call’
> 
> actionpack (7.1.3.4) lib/action\_dispatch/middleware/static.rb:25:in `call’
> 
> rack (2.2.9) lib/rack/sendfile.rb:110:in `call’
> 
> rack-mini-profiler (3.3.1) lib/mini\_profiler.rb:191:in `call’
> 
> message\_bus (4.3.8) lib/message\_bus/rack/middleware.rb:60:in `call’
> 
> lib/middleware/request\_tracker.rb:360:in `call’
> 
> actionpack (7.1.3.4) lib/action\_dispatch/middleware/remote\_ip.rb:92:in `call’
> 
> railties (7.1.3.4) lib/rails/engine.rb:536:in `call’
> 
> railties (7.1.3.4) lib/rails/railtie.rb:226:in `public\_send’
> 
> railties (7.1.3.4) lib/rails/railtie.rb:226:in `method\_missing’
> 
> rack (2.2.9) lib/rack/urlmap.rb:74:in `block in call’
> 
> rack (2.2.9) lib/rack/urlmap.rb:58:in `each’
> 
> rack (2.2.9) lib/rack/urlmap.rb:58:in `call’
> 
> unicorn (6.1.0) lib/unicorn/http\_server.rb:634:in `process\_client’
> 
> unicorn (6.1.0) lib/unicorn/http\_server.rb:739:in `worker\_loop’
> 
> unicorn (6.1.0) lib/unicorn/http\_server.rb:547:in `spawn\_missing\_workers’
> 
> unicorn (6.1.0) lib/unicorn/http\_server.rb:143:in `start’
> 
> unicorn (6.1.0) bin/unicorn:128:in `\<top (required)\>’
> 
> vendor/bundle/ruby/3.3.0/bin/unicorn:25:in `load’
> 
> vendor/bundle/ruby/3.3.0/bin/unicorn:25:in `\<top (required)\>’
> 
> bundler (2.5.9) lib/bundler/cli/exec.rb:58:in `load’
> 
> bundler (2.5.9) lib/bundler/cli/exec.rb:58:in `kernel\_load’
> 
> bundler (2.5.9) lib/bundler/cli/exec.rb:23:in `run’
> 
> bundle activemodel (7.1.3.4) lib/active\_model/attribute\_methods.rb:489:in `method_missing' plugins/discourse-activity-pub/plugin.rb:368:in `block (2 levels) in activate!’  
> lib/plugin/instance.rb:376:in `public_send' lib/plugin/instance.rb:376:in `block (2 levels) in add\_to\_class’  
> plugins/discourse-activity-pub/plugin.rb:332:in `block (2 levels) in activate!' lib/plugin/instance.rb:376:in `public\_send’  
> lib/plugin/instance.rb:376:in `block (2 levels) in add_to_class' plugins/discourse-activity-pub/plugin.rb:338:in `block (2 levels) in activate!’  
> lib/plugin/instance.rb:376:in `public_send' lib/plugin/instance.rb:376:in `block (2 levels) in add\_to\_class’  
> plugins/discourse-activity-pub/app/models/discourse\_activity\_pub\_object.rb:107:in `after_scheduled' plugins/discourse-activity-pub/app/models/discourse_activity_pub_activity.rb:126:in `after\_scheduled’  
> plugins/discourse-activity-pub/lib/discourse\_activity\_pub/delivery\_handler.rb:89:in `after_scheduled' plugins/discourse-activity-pub/lib/discourse_activity_pub/delivery_handler.rb:15:in `perform’  
> plugins/discourse-activity-pub/lib/discourse\_activity\_pub/delivery\_handler.rb:27:in `perform' plugins/discourse-activity-pub/app/models/concerns/discourse_activity_pub/ap/model_callbacks.rb:160:in `block in activity\_pub\_deliver\_activity’  
> plugins/discourse-activity-pub/app/models/concerns/discourse\_activity\_pub/ap/model\_callbacks.rb:159:in `each' plugins/discourse-activity-pub/app/models/concerns/discourse_activity_pub/ap/model_callbacks.rb:159:in `activity\_pub\_deliver\_activity’  
> plugins/discourse-activity-pub/app/models/concerns/discourse\_activity\_pub/ap/model\_callbacks.rb:41:in `perform_activity_pub_activity' plugins/discourse-activity-pub/plugin.rb:457:in `block (2 levels) in activate!’  
> lib/plugin/instance.rb:376:in `public_send' lib/plugin/instance.rb:376:in `block (2 levels) in add\_to\_class’  
> plugins/discourse-activity-pub/plugin.rb:664:in `block (2 levels) in activate!' lib/plugin/instance.rb:576:in `block in on’  
> lib/discourse\_event.rb:12:in `block in trigger' /home/cloudron/rbenv/versions/3.3.4/lib/ruby/3.3.0/set.rb:501:in `each\_key’  
> /home/cloudron/rbenv/versions/3.3.4/lib/ruby/3.3.0/set.rb:501:in `each' lib/discourse_event.rb:12:in `trigger’  
> lib/post\_creator.rb:258:in `trigger_after_events' lib/post_creator.rb:220:in `create’  
> lib/new\_post\_manager.rb:318:in `perform_create_post' lib/new_post_manager.rb:252:in `perform’  
> app/controllers/posts\_controller.rb:215:in `create' actionpack (7.1.3.4) lib/action_controller/metal/basic_implicit_render.rb:6:in `send\_action’  
> actionpack (7.1.3.4) lib/abstract\_controller/base.rb:224:in `process_action' actionpack (7.1.3.4) lib/action_controller/metal/rendering.rb:165:in `process\_action’  
> actionpack (7.1.3.4) lib/abstract\_controller/callbacks.rb:259:in `block in process_action' activesupport (7.1.3.4) lib/active_support/callbacks.rb:121:in `block in run\_callbacks’  
> app/controllers/application\_controller.rb:424:in `block in with_resolved_locale' i18n (1.14.5) lib/i18n.rb:351:in `with\_locale’  
> app/controllers/application\_controller.rb:424:in `with_resolved_locale' activesupport (7.1.3.4) lib/active_support/callbacks.rb:130:in `block in run\_callbacks’  
> activesupport (7.1.3.4) lib/active\_support/callbacks.rb:141:in `run_callbacks' actionpack (7.1.3.4) lib/abstract_controller/callbacks.rb:258:in `process\_action’  
> actionpack (7.1.3.4) lib/action\_controller/metal/rescue.rb:25:in `process_action' actionpack (7.1.3.4) lib/action_controller/metal/instrumentation.rb:74:in `block in process\_action’  
> activesupport (7.1.3.4) lib/active\_support/notifications.rb:206:in `block in instrument' activesupport (7.1.3.4) lib/active_support/notifications/instrumenter.rb:58:in `instrument’  
> activesupport (7.1.3.4) lib/active\_support/notifications.rb:206:in `instrument' actionpack (7.1.3.4) lib/action_controller/metal/instrumentation.rb:73:in `process\_action’  
> actionpack (7.1.3.4) lib/action\_controller/metal/params\_wrapper.rb:261:in `process_action' activerecord (7.1.3.4) lib/active_record/railties/controller_runtime.rb:32:in `process\_action’  
> actionpack (7.1.3.4) lib/abstract\_controller/base.rb:160:in `process' actionview (7.1.3.4) lib/action_view/rendering.rb:40:in `process’  
> rack-mini-profiler (3.3.1) lib/mini\_profiler/profiling\_methods.rb:89:in `block in profile_method' actionpack (7.1.3.4) lib/action_controller/metal.rb:227:in `dispatch’  
> actionpack (7.1.3.4) lib/action\_controller/metal.rb:309:in `dispatch' actionpack (7.1.3.4) lib/action_dispatch/routing/route_set.rb:49:in `dispatch’  
> actionpack (7.1.3.4) lib/action\_dispatch/routing/route\_set.rb:32:in `serve' actionpack (7.1.3.4) lib/action_dispatch/journey/router.rb:51:in `block in serve’  
> actionpack (7.1.3.4) lib/action\_dispatch/journey/router.rb:131:in `block in find_routes' actionpack (7.1.3.4) lib/action_dispatch/journey/router.rb:124:in `each’  
> actionpack (7.1.3.4) lib/action\_dispatch/journey/router.rb:124:in `find_routes' actionpack (7.1.3.4) lib/action_dispatch/journey/router.rb:32:in `serve’  
> actionpack (7.1.3.4) lib/action\_dispatch/routing/route\_set.rb:882:in `call' lib/middleware/omniauth_bypass_middleware.rb:64:in `call’  
> rack (2.2.9) lib/rack/tempfile\_reaper.rb:15:in `call' rack (2.2.9) lib/rack/conditional_get.rb:40:in `call’  
> rack (2.2.9) lib/rack/head.rb:12:in `call' actionpack (7.1.3.4) lib/action_dispatch/http/permissions_policy.rb:36:in `call’  
> lib/content\_security\_policy/middleware.rb:12:in `call' lib/middleware/anonymous_cache.rb:399:in `call’  
> lib/middleware/csp\_script\_nonce\_injector.rb:12:in `call' config/initializers/008-rack-cors.rb:14:in `call’  
> rack (2.2.9) lib/rack/session/abstract/id.rb:266:in `context' rack (2.2.9) lib/rack/session/abstract/id.rb:260:in `call’  
> actionpack (7.1.3.4) lib/action\_dispatch/middleware/cookies.rb:689:in `call' actionpack (7.1.3.4) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call’  
> activesupport (7.1.3.4) lib/active\_support/callbacks.rb:101:in `run_callbacks' actionpack (7.1.3.4) lib/action_dispatch/middleware/callbacks.rb:28:in `call’  
> actionpack (7.1.3.4) lib/action\_dispatch/middleware/debug\_exceptions.rb:29:in `call' actionpack (7.1.3.4) lib/action_dispatch/middleware/show_exceptions.rb:31:in `call’  
> logster (2.20.0) lib/logster/middleware/reporter.rb:40:in `call' lib/freedom_patches/rails_rack_logger_from_rails_7_2.rb:35:in `call\_app’  
> lib/freedom\_patches/rails\_rack\_logger\_from\_rails\_7\_2.rb:22:in `call' config/initializers/100-quiet_logger.rb:20:in `call’  
> config/initializers/100-silence\_logger.rb:29:in `call' actionpack (7.1.3.4) lib/action_dispatch/middleware/request_id.rb:28:in `call’  
> lib/middleware/enforce\_hostname.rb:24:in `call' rack (2.2.9) lib/rack/method_override.rb:24:in `call’  
> actionpack (7.1.3.4) lib/action\_dispatch/middleware/executor.rb:14:in `call' actionpack (7.1.3.4) lib/action_dispatch/middleware/static.rb:25:in `call’  
> rack (2.2.9) lib/rack/sendfile.rb:110:in `call' rack-mini-profiler (3.3.1) lib/mini_profiler.rb:191:in `call’  
> message\_bus (4.3.8) lib/message\_bus/rack/middleware.rb:60:in `call' lib/middleware/request_tracker.rb:360:in `call’  
> actionpack (7.1.3.4) lib/action\_dispatch/middleware/remote\_ip.rb:92:in `call' railties (7.1.3.4) lib/rails/engine.rb:536:in `call’  
> railties (7.1.3.4) lib/rails/railtie.rb:226:in `public_send' railties (7.1.3.4) lib/rails/railtie.rb:226:in `method\_missing’  
> rack (2.2.9) lib/rack/urlmap.rb:74:in `block in call' rack (2.2.9) lib/rack/urlmap.rb:58:in `each’  
> rack (2.2.9) lib/rack/urlmap.rb:58:in `call' unicorn (6.1.0) lib/unicorn/http_server.rb:634:in `process\_client’  
> unicorn (6.1.0) lib/unicorn/http\_server.rb:739:in `worker_loop' unicorn (6.1.0) lib/unicorn/http_server.rb:547:in `spawn\_missing\_workers’  
> unicorn (6.1.0) lib/unicorn/http\_server.rb:143:in `start' unicorn (6.1.0) bin/unicorn:128:in `\<top (required)\>’  
> vendor/bundle/ruby/3.3.0/bin/unicorn:25:in `load' vendor/bundle/ruby/3.3.0/bin/unicorn:25:in `\<top (required)\>’  
> bundler (2.5.9) lib/bundler/cli/exec.rb:58:in `load' bundler (2.5.9) lib/bundler/cli/exec.rb:58:in `kernel\_load’  
> bundler (2.5.9) lib/bundler/cli/exec.rb:23:in `run’  
> bundle

Which seems to be coming from here. Why would `moderating_groups` be missing as a method on the `activity_pub_taxonomy` object?

```rb
group_ids.push(*activity_pub_topic.activity_pub_taxonomy.moderating_groups.pluck(:id))

```

Thanks in advance! The work you’ve been here is amazing, and can’t wait to have it working in our forum and syndicate updates with it.

---

<div class="post-metadata">

### Author: ![mcdanlj](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mcdanlj/32/131829_2.png) [@mcdanlj](https://meta.discourse.org/u/mcdanlj)
#### Post date: [October 27, 2024, 7:14pm UTC](https://meta.discourse.org/t/activitypub-plugin/266794/330 "2024-10-27T19:14:51Z")

</div>

> [@pepicrft](#):
>
> I checked the instance that I’m running, and it’s 3.3.2, which seems to be the latest.

The “stable” releases are named “stable” in the sense of “not changing” and are not generally recommended if you are making changes like introducing new plugins. New plugin development generally is free to follow current development versions. New “stable” releases are done only a few times per year, and that would be handcuffs for work like this.

I do wish at this point that CDCK would drop the “beta” moniker from their rolling releases because it really isn’t a great description. It keeps introducing confusion like this, and creates mismatched expectations. But 3.4.0-beta is almost certainly what you’ll want to work with this plugin at least at this time.

> [@3.4.0.beta2: Better pageview metrics, multiple category moderator groups, watch chat threads, and more](https://meta.discourse.org/t/3-4-0-beta2-better-pageview-metrics-multiple-category-moderator-groups-watch-chat-threads-and-more/329340):
>
> New features in 3.4.0.beta2 Better pageview metrics with the new site traffic report We’ve added a new “site traffic” report on the admin dashboard that highlights pageviews from users and hides traffic from crawlers and other sources like bots by default. This now give you a far more accurate gauge of traffic to your site from logged in members to anonymous visitors. [Learn more…](https://meta.discourse.org/t/better-pageview-metrics-with-the-new-site-traffic-report/324068)

---

<div class="post-metadata">

### Author: ![pepicrft](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pepicrft/32/451719_2.png) [@pepicrft](https://meta.discourse.org/u/pepicrft)
#### Post date: [October 29, 2024, 9:26am UTC](https://meta.discourse.org/t/activitypub-plugin/266794/331 "2024-10-29T09:26:46Z")

</div>

> [@mcdanlj](#):
>
> I do wish at this point that CDCK would drop the “beta” moniker from their rolling releases because it really isn’t a great description. It keeps introducing confusion like this, and creates mismatched expectations. But 3.4.0-beta is almost certainly what you’ll want to work with this plugin at least at this time.

Thanks @mcdanlj 🙏

---

<div class="post-metadata">

### Author: ![joo](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/joo/32/334852_2.png) [@joo](https://meta.discourse.org/u/joo)
#### Post date: [November 9, 2024, 4:57am UTC](https://meta.discourse.org/t/activitypub-plugin/266794/332 "2024-11-09T04:57:44Z")

</div>

Hello, does the ActivityPub plugin support adding Threads users? I tried adding a Threads user, but it seems I can’t locate them. Thank you for your help!

---

<div class="post-metadata">

### Author: ![angus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/angus/32/341715_2.png) [@angus](https://meta.discourse.org/u/angus)
#### Post date: [November 11, 2024, 8:47am UTC](https://meta.discourse.org/t/activitypub-plugin/266794/333 "2024-11-11T08:47:45Z")

</div>

Hello @joo,

While any ActivityPub implementation that follows the ActivityPub spec should work out of the box, I haven’t attempted to add explicit Threads support yet as the last time I checked I wasn’t able to access ActivityPub in Threads (i.e. on my own Meta accounts), or find any documentation on it outside of some help articles and blog posts. As soon as it’s possible to get some insight into how it’s set up, I’ll be looking at adding some explicit support for Threads.

---

<div class="post-metadata">

### Author: ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)
#### Post date: [December 31, 2024, 4:42pm UTC](https://meta.discourse.org/t/activitypub-plugin/266794/334 "2024-12-31T16:42:10Z")

</div>

AFAIK is should be available everywhere except in EU. A threads-user must allow federation first, though.

---

<div class="post-metadata">

### Author: ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)
#### Post date: [January 3, 2025, 7:13pm UTC](https://meta.discourse.org/t/activitypub-plugin/266794/335 "2025-01-03T19:13:07Z")

</div>

Is there any (easy) way to purge everything that is related to the plugin? Mine is quite a mess right now.

I tried the plugin something like 9 months ago, but then there was something, can’t remember what, and I disabled it.

Now I gave it a new try, but it looks like it is stuck in the past. Every Mastodon server gets a 403 error from the forum. Instances can’t find my actors, and therefore any topics aren’t sent further.

I can’t follow Meta. I see pending status, but when I change pages, the follows list is empty. The same thing happens with Mastodon users. It finds them, shows pending, but the list is empty again when I go somewhere else.

I have three Mastodon users who can find my actors, and all of them are accounts I used for testing nine months ago. But even that isn’t working nicely.

Two of those were from my self-hosted instance. That server is destroyed (because of a horrible experience with a Mastodon upgrade that went terribly wrong). When I try to delete those two, they disappear from the follow list, but if I change pages, they’re back there.

That third one can find and follow my actors, but it never shows up in the follow list. It’s a ghost. And it doesn’t get topics; it just follows.

All of my setups are pure standard.

At the moment, I don’t know any other solution than to clean up every bit about the plugin and ActivePub. But that requires working with the database, right?

---

<div class="post-metadata">

### Author: ![angus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/angus/32/341715_2.png) [@angus](https://meta.discourse.org/u/angus)
#### Post date: [January 6, 2025, 9:29am UTC](https://meta.discourse.org/t/activitypub-plugin/266794/336 "2025-01-06T09:29:25Z")

</div>

Hey @Jagster.

There isn’t any reason to purge your data. The plugin’s underlying data structure has not changed since it was launched. When it has changed, data is migrated appropriately. Let’s figure out what’s wrong instead.

Could you start by sharing a link to your forum. Perhaps send it to me a chat here on meta. I’m sure we can straighten things out 🙂

---

<div class="post-metadata">

### Author: ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)
#### Post date: [January 6, 2025, 9:37am UTC](https://meta.discourse.org/t/activitypub-plugin/266794/337 "2025-01-06T09:37:10Z")

</div>

Even I have different type servers/services in use, my knowledge and point of view is strongly on level end user. And then solutions like total destruction feels very logical 😂

Public forum, so I can put it here. And because it is pure Finnish it can’t counted as an ad… This leads directly to one category where ActivePub is in use: [Ihminen, luonto & maailma - Katiskan foorumi](https://foorumi.katiska.eu/c/ihmiselama/32/none)

OT, but has category links always had `../none` 🤔

---

<div class="post-metadata">

### Author: ![angus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/angus/32/341715_2.png) [@angus](https://meta.discourse.org/u/angus)
#### Post date: [January 6, 2025, 10:57am UTC](https://meta.discourse.org/t/activitypub-plugin/266794/338 "2025-01-06T10:57:36Z")

</div>

9 posts were split to a new topic: [How to debug connectivity issues with ActivityPub](https://meta.discourse.org/t/how-to-debug-connectivity-issues-with-activitypub/345798)

---

<div class="post-metadata">

### Author: ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)
#### Post date: [January 9, 2025, 9:55am UTC](https://meta.discourse.org/t/activitypub-plugin/266794/339 "2025-01-09T09:55:48Z")

</div>

I’m a bit confused again. The context is from my forum to Mastodon — even this might be more general thing.

A category federates and visibility is public. But it is unlisted on Mastodon — that the open padlock means, right? The icon should be the globe indicating public visibility. Sure, unlisted is public too, kind of.

What is the reason for unlisting?

---

<div class="post-metadata">

### Author: ![angus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/angus/32/341715_2.png) [@angus](https://meta.discourse.org/u/angus)
#### Post date: [January 10, 2025, 5:55pm UTC](https://meta.discourse.org/t/activitypub-plugin/266794/340 "2025-01-10T17:55:10Z")

</div>

Hey @Jagster what publication type are you using?

---

<div class="post-metadata">

### Author: ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)
#### Post date: [January 10, 2025, 5:56pm UTC](https://meta.discourse.org/t/activitypub-plugin/266794/341 "2025-01-10T17:56:57Z")

</div>

First post (public, note)

---

<div class="post-metadata">

### Author: ![angus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/angus/32/341715_2.png) [@angus](https://meta.discourse.org/u/angus)
#### Post date: [January 13, 2025, 4:15pm UTC](https://meta.discourse.org/t/activitypub-plugin/266794/342 "2025-01-13T16:15:22Z")

</div>

Just a note that I haven’t forgotten about you. I’ll test this myself first thing tomorrow.

---

<div class="post-metadata">

### Author: ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)
#### Post date: [January 13, 2025, 6:32pm UTC](https://meta.discourse.org/t/activitypub-plugin/266794/343 "2025-01-13T18:32:19Z")

</div>

Cool. We all had weekend, and that question isn’t exacly priority one level thing.

---

<div class="post-metadata">

### Author: ![hellekin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/hellekin/32/51636_2.png) [@hellekin](https://meta.discourse.org/u/hellekin)
#### Post date: [January 14, 2025, 2:36pm UTC](https://meta.discourse.org/t/activitypub-plugin/266794/344 "2025-01-14T14:36:24Z")

</div>

A quick question for clarity…

### What happens when you move a post to a new ActivityPub-enabled topic?

I find the process of

1. replying to a topic with a long post in a private category
2. integrate others’ feedback there
3. split post into a new topic in a public category

a suitable alternative for Drafts, when it just happens in the conversation. But then, the moved post has a timestamp in the past, which makes me worried that the ActivityPub won’t pick it up when it is moved to an ActivityPub-enabled category.

---

<div class="post-metadata">

### Author: ![angus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/angus/32/341715_2.png) [@angus](https://meta.discourse.org/u/angus)
#### Post date: [January 14, 2025, 4:30pm UTC](https://meta.discourse.org/t/activitypub-plugin/266794/345 "2025-01-14T16:30:45Z")

</div>

> [@Jagster](#):
>
> But it is unlisted on Mastodon

I was sure I had addressed this, but nothing is really addressed until it has a spec! It’ll be addressed when this is merged.

[https://github.com/discourse/discourse-activity-pub/pull/154](https://github.com/discourse/discourse-activity-pub/pull/154)

> [@hellekin](#):
>
> What happens when you move a post to a new ActivityPub-enabled topic?

I’ve enumerated all the main permutations of post moving in the spec.

```plaintext
Topic
  move_posts
    with posts in an ap category
      with first_post enabled
        when moved to an existing non-ap topic
          moves the posts
          updates the note references
          does not create new objects or activities
        when moved to an existing first_post topic
          updates the note references
          moves the posts
          does not create new objects or activities
        when moved to a new non-ap topic
          moves the posts
          updates the note references
          does not create new objects or activities
        when moved to a new first_post topic
          does not create new objects or activities
          does not create a collection for the new topic
          moves the posts
          updates the note references
      with full_topic enabled
        when moved to an existing full_topic topic
          does not create new collections, objects or activities
          moves the posts
          updates the note references
        when moved to a new non-ap topic
          updates the note references
          moves the posts
          does not create new collections, objects or activities
        when moved to a new full_topic topic
          updates the note references
          does not create new objects or activities
          creates a collection for the new topic
          moves the posts
        when moved to an existing non-ap topic
          moves the posts
          updates the note references
          does not create new collections, objects or activities
    with posts in a non ap category
      when moved to an existing full_topic topic
        does not create new collections, objects or activities
        moves the posts
      when moved to a new first_post topic
        does not create a collection for the new topic
        moves the posts
        does not create new objects or activities
      when moved to an existing first_post topic
        does not create new collections, objects or activities
        moves the posts
      when moved to a new full_topic topic
        moves the posts
        does not create new objects or activities
        creates a collection for the new topic

```

Note that the above applies _mutatis mutandis_ to tag actors. So to answer your specific question: your posts will remain unpublished after you move them, i.e. the status will look like this:

 ![Screenshot at Jan 14 17-20-51](https://global.discourse-cdn.com/meta/original/4X/d/e/7/de79f86fc17a368cc16fe9e807e36a5be4f62266.png)

Note that the same is true if you change the category of a topic, i.e. moving an unpublished topic into an AP category (or tag).

In both cases (moving posts or changing the category) you can then manually publish the post(s) using the manual publish feature, albeit this is currently only available for topics associated with a `first post` Actor.

 ![Screenshot at Jan 14 17-21-09](https://global.discourse-cdn.com/meta/original/4X/4/8/8/4881e3c3dc29c391c9c96e2332e964c43d4168a5.jpeg)

I’ll be adding manually publication of moved or recategorised posts with a `full topic` Actor soon. I want to make sure the main permutations of that feature are considered, which is why it’s not currently possible.

---

<div class="post-metadata">

### Author: ![hellekin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/hellekin/32/51636_2.png) [@hellekin](https://meta.discourse.org/u/hellekin)
#### Post date: [January 14, 2025, 6:54pm UTC](https://meta.discourse.org/t/activitypub-plugin/266794/346 "2025-01-14T18:54:50Z")

</div>

That would be my use-case then:

> [@angus](#):
>
> ```plaintext
> with posts in a non ap category
> when moved to a new full_topic topic
> moves the posts
> does not create new objects or activities
> creates a collection for the new topic
> 
> ```

Hmmm, something’s wrong on [Directions to O₅F₂FDEM - Announcements - OFFDEM](https://oxygen.offdem.net/t/directions-to-o-f-fdem/460), the category is Note/Full Topic, but did not post anything to the Fediverse for a long time. And the ActivityPub icon does not show on the post. Is there a way to kinda reset / SIGHUP the Actor?

(`@infodesk@oxygen.offdem.net`)

> [@angus](#):
>
> I’ll be adding manually publication of moved or recategorised posts with a `full topic` Actor soon.

Ha! This. Thank you so much @angus, you rock.

---

<div class="post-metadata">

### Author: ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)
#### Post date: [January 15, 2025, 10:31pm UTC](https://meta.discourse.org/t/activitypub-plugin/266794/347 "2025-01-15T22:31:30Z")

</div>

Linked actor on a user’s profile doesn’t know how to use Pixelfed. It should be very much same than Mastodon, but sure, there can be some differences.

Pixelfed is growing fast now, thanks for Zuckerberg, so it would be nice if it would be an option at some point.

Same thing with Bookwyrm — there could be some demand connect discussion somewhere else. At some point anyway. But I could see easily demand to connect discussion of books to Discourse. I know — that is basically same than open a category hoping it will generate something 🤷‍♂️

[Previous page](https://meta.discourse.org/t/activitypub-plugin/266794.md?page=16)

[Next page](https://meta.discourse.org/t/activitypub-plugin/266794.md?page=18)
