@evanp/activitypub-bot 0.41.2 → 0.42.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.markdownlint.json +3 -0
- package/CHANGELOG.md +1223 -0
- package/CODE_OF_CONDUCT.md +129 -0
- package/lib/activitydeliverer.js +2 -2
- package/lib/activityhandler.js +2 -2
- package/lib/bot.js +4 -0
- package/lib/botcontext.js +52 -2
- package/lib/bots/litepubrelayclient.js +86 -0
- package/lib/bots/litepubrelayserver.js +96 -0
- package/lib/bots/{relayclient.js → mastodonrelayclient.js} +2 -2
- package/lib/bots/{relayserver.js → mastodonrelayserver.js} +2 -2
- package/lib/distributionworker.js +25 -25
- package/lib/index.js +2 -2
- package/lib/routes/user.js +11 -2
- package/package.json +1 -1
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,1223 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on
|
|
6
|
+
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
7
|
+
and this project adheres to
|
|
8
|
+
[Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
9
|
+
|
|
10
|
+
## [Unreleased]
|
|
11
|
+
|
|
12
|
+
## [0.42.1] - 2026-04-22
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- `CHANGELOG.md` in [Keep a Changelog](https://keepachangelog.com/en/1.1.0/)
|
|
17
|
+
format.
|
|
18
|
+
- `CODE_OF_CONDUCT.md`.
|
|
19
|
+
- `.markdownlint.json` with `MD024` set to `siblings_only` to allow repeated
|
|
20
|
+
`### Added`/`### Fixed` subheadings per release.
|
|
21
|
+
|
|
22
|
+
### Fixed
|
|
23
|
+
|
|
24
|
+
- Flaky `retries distribution to a flaky recipient` test waits on
|
|
25
|
+
`distributor.onIdle()` instead of a fixed 2-second timeout.
|
|
26
|
+
|
|
27
|
+
## [0.42.0] - 2026-04-22
|
|
28
|
+
|
|
29
|
+
### Added
|
|
30
|
+
|
|
31
|
+
- `LitePubRelayClientBot`, a functional LitePub relay client.
|
|
32
|
+
- `BotContext.followers()` and `BotContext.following()` async iterators.
|
|
33
|
+
- Additional `BotContext` introspection methods to support relay client bots.
|
|
34
|
+
- `actorType` getter on `Bot` so subclasses can override their declared
|
|
35
|
+
actor type.
|
|
36
|
+
- `relayForwarding` option on `LitePubRelayServerBot`.
|
|
37
|
+
- Dedicated `LitePubRelayServerBot` separate from the Mastodon-style server.
|
|
38
|
+
|
|
39
|
+
### Changed
|
|
40
|
+
|
|
41
|
+
- Relay client/server code split into Mastodon- and LitePub-specific classes.
|
|
42
|
+
- Lower retention for the duplicate-activity cache.
|
|
43
|
+
- Bumped `mysql2`, `nanoid`, and `redis` dependencies.
|
|
44
|
+
|
|
45
|
+
## [0.41.3] - 2026-04-21
|
|
46
|
+
|
|
47
|
+
Hot patch on the `stable` branch.
|
|
48
|
+
|
|
49
|
+
### Fixed
|
|
50
|
+
|
|
51
|
+
- Errors in `DistributionWorker` are now logged instead of swallowed.
|
|
52
|
+
|
|
53
|
+
## [0.41.2] - 2026-04-13
|
|
54
|
+
|
|
55
|
+
### Fixed
|
|
56
|
+
|
|
57
|
+
- `SafeAgent` calls `super.createConnection()` correctly.
|
|
58
|
+
|
|
59
|
+
## [0.41.1] - 2026-04-13
|
|
60
|
+
|
|
61
|
+
### Fixed
|
|
62
|
+
|
|
63
|
+
- `trust proxy 1` is interpreted as `1` (integer) so Express parses
|
|
64
|
+
`X-Forwarded-*` correctly.
|
|
65
|
+
|
|
66
|
+
## [0.41.0] - 2026-04-13
|
|
67
|
+
|
|
68
|
+
### Added
|
|
69
|
+
|
|
70
|
+
- `trust proxy` enabled in Express.
|
|
71
|
+
|
|
72
|
+
## [0.40.2] - 2026-04-13
|
|
73
|
+
|
|
74
|
+
### Fixed
|
|
75
|
+
|
|
76
|
+
- Correct `redis-url` handling in `activitypub-bot.js`.
|
|
77
|
+
- Missing `profile-file` option wired through.
|
|
78
|
+
|
|
79
|
+
## [0.40.1] - 2026-04-13
|
|
80
|
+
|
|
81
|
+
### Fixed
|
|
82
|
+
|
|
83
|
+
- Conflicts in integration tests.
|
|
84
|
+
|
|
85
|
+
## [0.40.0] - 2026-04-13
|
|
86
|
+
|
|
87
|
+
### Added
|
|
88
|
+
|
|
89
|
+
- Integration test before release.
|
|
90
|
+
- Optional Redis backend for rate-limit storage.
|
|
91
|
+
- Rate limiting on GET and POST with standard `RateLimit-*` headers.
|
|
92
|
+
- Request timeout, maximum size, and maximum redirects for outbound requests.
|
|
93
|
+
- Optional allowance of requests to private IP addresses (off by default).
|
|
94
|
+
- `SafeAgent` performs connection-time private-IP checks to protect
|
|
95
|
+
against SSRF in `ActivityPubClient`.
|
|
96
|
+
|
|
97
|
+
### Changed
|
|
98
|
+
|
|
99
|
+
- Renamed `RateLimiter` to `RequestThrottler` to reflect its role more
|
|
100
|
+
accurately.
|
|
101
|
+
- `http:` URLs and private-IP hosts are rejected unless explicitly allowed.
|
|
102
|
+
|
|
103
|
+
### Fixed
|
|
104
|
+
|
|
105
|
+
- Explicit handling of duplicate `resource` parameters on the Webfinger
|
|
106
|
+
endpoint.
|
|
107
|
+
|
|
108
|
+
## [0.39.6] - 2026-04-11
|
|
109
|
+
|
|
110
|
+
### Fixed
|
|
111
|
+
|
|
112
|
+
- Validate only minimal derived components when checking a signature.
|
|
113
|
+
|
|
114
|
+
## [0.39.5] - 2026-04-11
|
|
115
|
+
|
|
116
|
+
### Fixed
|
|
117
|
+
|
|
118
|
+
- Only include `@method` and `@target-uri` when signing.
|
|
119
|
+
|
|
120
|
+
## [0.39.4] - 2026-04-10
|
|
121
|
+
|
|
122
|
+
### Changed
|
|
123
|
+
|
|
124
|
+
- More debugging and error reporting in `ActivityPubClient`.
|
|
125
|
+
|
|
126
|
+
## [0.39.3] - 2026-04-10
|
|
127
|
+
|
|
128
|
+
### Changed
|
|
129
|
+
|
|
130
|
+
- Extra debug output for failed RFC 9421 signatures.
|
|
131
|
+
|
|
132
|
+
## [0.39.2] - 2026-04-10
|
|
133
|
+
|
|
134
|
+
### Fixed
|
|
135
|
+
|
|
136
|
+
- Send `Content-Digest` (not `Digest`) when signing with RFC 9421.
|
|
137
|
+
|
|
138
|
+
## [0.39.1] - 2026-04-10
|
|
139
|
+
|
|
140
|
+
### Fixed
|
|
141
|
+
|
|
142
|
+
- Corrected HTTP error code type in `DistributionWorker`.
|
|
143
|
+
- Logger attributes now include the class name.
|
|
144
|
+
|
|
145
|
+
## [0.39.0] - 2026-04-10
|
|
146
|
+
|
|
147
|
+
### Added
|
|
148
|
+
|
|
149
|
+
- RFC 9421 HTTP Message Signatures on outbound `POST` requests.
|
|
150
|
+
- Double-knock in `ActivityPubClient.get()`: fall back to draft-cavage-12
|
|
151
|
+
after an RFC 9421 auth failure and cache the per-origin policy.
|
|
152
|
+
- `SignaturePolicyStorage` backs the cached per-origin signature policy.
|
|
153
|
+
- Remote objects are resolved through a cached proxy when direct load fails.
|
|
154
|
+
|
|
155
|
+
### Changed
|
|
156
|
+
|
|
157
|
+
- Prefer FEP-C180 problem details on error responses; fall back to
|
|
158
|
+
default problem details otherwise.
|
|
159
|
+
- `app` wires up `ActivityPubClient` with `messageSigner` and `policyStore`.
|
|
160
|
+
|
|
161
|
+
## [0.38.4] - 2026-04-07
|
|
162
|
+
|
|
163
|
+
### Fixed
|
|
164
|
+
|
|
165
|
+
- Pre-cache expired context `https://w3id.org/identity/v1`.
|
|
166
|
+
|
|
167
|
+
## [0.38.3] - 2026-04-07
|
|
168
|
+
|
|
169
|
+
### Added
|
|
170
|
+
|
|
171
|
+
- Pre-cached DID, security, and GoToSocial contexts.
|
|
172
|
+
- `X-Powered-By` header removed from responses.
|
|
173
|
+
- Structured logging replaces template-literal log lines.
|
|
174
|
+
- Request-ID propagated into per-request log entries.
|
|
175
|
+
|
|
176
|
+
## [0.38.2] - 2026-04-07
|
|
177
|
+
|
|
178
|
+
### Fixed
|
|
179
|
+
|
|
180
|
+
- Special-case two objects with the same ID where one is a
|
|
181
|
+
`CryptographicKey`, in `ActivityPubClient.#resolveObject`.
|
|
182
|
+
|
|
183
|
+
## [0.38.1] - 2026-04-07
|
|
184
|
+
|
|
185
|
+
### Removed
|
|
186
|
+
|
|
187
|
+
- `p-queue` dependency (no longer needed).
|
|
188
|
+
|
|
189
|
+
## [0.38.0] - 2026-04-07
|
|
190
|
+
|
|
191
|
+
### Added
|
|
192
|
+
|
|
193
|
+
- `X-Request-ID` middleware to track requests end-to-end.
|
|
194
|
+
|
|
195
|
+
### Fixed
|
|
196
|
+
|
|
197
|
+
- Honor the `Date:` header in the `HTTPMessageSignature` validation branch.
|
|
198
|
+
|
|
199
|
+
## [0.37.1] - 2026-04-04
|
|
200
|
+
|
|
201
|
+
### Fixed
|
|
202
|
+
|
|
203
|
+
- Better handling of derived components in `HTTPMessageSignature`.
|
|
204
|
+
|
|
205
|
+
## [0.37.0] - 2026-04-04
|
|
206
|
+
|
|
207
|
+
### Added
|
|
208
|
+
|
|
209
|
+
- `HTTPMessageSignature` class implementing RFC 9421.
|
|
210
|
+
- Signature authenticator accepts RFC 9421 message signatures alongside
|
|
211
|
+
draft-cavage.
|
|
212
|
+
- `HTTPMessageSignature.created()` helper.
|
|
213
|
+
- `Digester.contentDigest()` for RFC 9421 `Content-Digest`.
|
|
214
|
+
|
|
215
|
+
### Fixed
|
|
216
|
+
|
|
217
|
+
- Use a regex rather than naive `split()` when parsing `Signature-Input`.
|
|
218
|
+
- Pass full URL to `HTTPMessageSignature.validate()`.
|
|
219
|
+
|
|
220
|
+
## [0.36.2] - 2026-04-02
|
|
221
|
+
|
|
222
|
+
### Fixed
|
|
223
|
+
|
|
224
|
+
- Dropped the single-item `alsoKnownAs` value that was triggering a Misskey bug.
|
|
225
|
+
|
|
226
|
+
## [0.36.1] - 2026-04-01
|
|
227
|
+
|
|
228
|
+
### Fixed
|
|
229
|
+
|
|
230
|
+
- Cache headers correctly when the stored data is null.
|
|
231
|
+
|
|
232
|
+
## [0.36.0] - 2026-03-31
|
|
233
|
+
|
|
234
|
+
### Added
|
|
235
|
+
|
|
236
|
+
- `RemoteObjectCache` class with conditional refresh (`If-None-Match`,
|
|
237
|
+
`If-Modified-Since`).
|
|
238
|
+
- `ActivityPubClient` requires and uses `RemoteObjectCache`.
|
|
239
|
+
- `app` wires `RemoteObjectCache` into the client.
|
|
240
|
+
|
|
241
|
+
### Changed
|
|
242
|
+
|
|
243
|
+
- Refactored common logic in `ActivityPubClient.#get()`.
|
|
244
|
+
|
|
245
|
+
## [0.35.0] - 2026-03-30
|
|
246
|
+
|
|
247
|
+
### Added
|
|
248
|
+
|
|
249
|
+
- `DistributionWorker`, `DeliveryWorker`, and `FanoutWorker` as
|
|
250
|
+
subclasses of a shared `Worker` base.
|
|
251
|
+
- `IntakeWorker` processes shared-inbox intake as a background job.
|
|
252
|
+
- Activity fan-out moved to its own queue.
|
|
253
|
+
- Command-line options documented in the README.
|
|
254
|
+
|
|
255
|
+
### Changed
|
|
256
|
+
|
|
257
|
+
- Default page size raised from 20 to 256.
|
|
258
|
+
- Slightly better logging for follows.
|
|
259
|
+
|
|
260
|
+
## [0.34.1] - 2026-03-29
|
|
261
|
+
|
|
262
|
+
### Changed
|
|
263
|
+
|
|
264
|
+
- Dependency bumps only (no user-visible changes).
|
|
265
|
+
|
|
266
|
+
## [0.34.0] - 2026-03-29
|
|
267
|
+
|
|
268
|
+
### Added
|
|
269
|
+
|
|
270
|
+
- Workaround to accept `Follow` activities that omit addressing.
|
|
271
|
+
- Guess Mastodon's 300 requests / 5 minutes rate-limit policy when no
|
|
272
|
+
headers are present.
|
|
273
|
+
- Peek at current rate-limit values.
|
|
274
|
+
|
|
275
|
+
### Changed
|
|
276
|
+
|
|
277
|
+
- `pendingFollowing` consistently stores activities, not actors.
|
|
278
|
+
|
|
279
|
+
### Removed
|
|
280
|
+
|
|
281
|
+
- References to the unused `pendingFollowers` collection.
|
|
282
|
+
|
|
283
|
+
### Fixed
|
|
284
|
+
|
|
285
|
+
- `ActivityHandler.#handleBlock()` checks for a pending follow activity
|
|
286
|
+
rather than a pending actor.
|
|
287
|
+
- Correct handling of pending follow activity during actor block.
|
|
288
|
+
- Test for unfollow correctly uses `pendingFollowing` in `BotContext`.
|
|
289
|
+
|
|
290
|
+
## [0.33.0] - 2026-03-26
|
|
291
|
+
|
|
292
|
+
### Added
|
|
293
|
+
|
|
294
|
+
- Webfinger lookup for profile pages.
|
|
295
|
+
|
|
296
|
+
### Changed
|
|
297
|
+
|
|
298
|
+
- Grudgingly accept the default namespace for security-namespace
|
|
299
|
+
properties when fetching keys and actors.
|
|
300
|
+
|
|
301
|
+
### Removed
|
|
302
|
+
|
|
303
|
+
- Dead code path for fetching remote public keys in `RemoteKeyStorage`.
|
|
304
|
+
|
|
305
|
+
### Fixed
|
|
306
|
+
|
|
307
|
+
- Confirm the owner of a remote public key before trusting it.
|
|
308
|
+
|
|
309
|
+
## [0.32.3] - 2026-03-24
|
|
310
|
+
|
|
311
|
+
### Fixed
|
|
312
|
+
|
|
313
|
+
- Fail fast on unrecoverable server errors.
|
|
314
|
+
- Respect `Retry-After` delay on 500-class errors when specified.
|
|
315
|
+
|
|
316
|
+
## [0.32.2] - 2026-03-24
|
|
317
|
+
|
|
318
|
+
### Added
|
|
319
|
+
|
|
320
|
+
- More robust distribution behavior.
|
|
321
|
+
- Retry after distribution on 429 errors.
|
|
322
|
+
|
|
323
|
+
## [0.32.1] - 2026-03-24
|
|
324
|
+
|
|
325
|
+
### Added
|
|
326
|
+
|
|
327
|
+
- Archive failed jobs to a `failed_job` table.
|
|
328
|
+
|
|
329
|
+
### Fixed
|
|
330
|
+
|
|
331
|
+
- `DistributionWorker` now fails jobs on unrecoverable errors.
|
|
332
|
+
|
|
333
|
+
## [0.32.0] - 2026-03-24
|
|
334
|
+
|
|
335
|
+
### Added
|
|
336
|
+
|
|
337
|
+
- Profile page route for bots (`/profile/{botid}`).
|
|
338
|
+
- Custom icon and image for bots.
|
|
339
|
+
- Profile page link in Webfinger output.
|
|
340
|
+
- URL property on the actor pointing at the profile page.
|
|
341
|
+
- Discovery link on the profile page.
|
|
342
|
+
- `UrlFormatter.formatProfile()` and companion format/unformat methods
|
|
343
|
+
for icon and image.
|
|
344
|
+
|
|
345
|
+
### Changed
|
|
346
|
+
|
|
347
|
+
- Profile page centered in body. (#154)
|
|
348
|
+
|
|
349
|
+
### Fixed
|
|
350
|
+
|
|
351
|
+
- Count of links in Webfinger results.
|
|
352
|
+
|
|
353
|
+
## [0.31.1] - 2026-03-22
|
|
354
|
+
|
|
355
|
+
### Changed
|
|
356
|
+
|
|
357
|
+
- Block activities with no `id` from the shared inbox.
|
|
358
|
+
|
|
359
|
+
### Fixed
|
|
360
|
+
|
|
361
|
+
- Reject activities with no `id` at the inbox.
|
|
362
|
+
|
|
363
|
+
## [0.31.0] - 2026-03-22
|
|
364
|
+
|
|
365
|
+
### Added
|
|
366
|
+
|
|
367
|
+
- Dedicated server actor bot; routes, Webfinger, and documentation
|
|
368
|
+
updated accordingly.
|
|
369
|
+
- `DoNothingBot` accepts custom parameters.
|
|
370
|
+
- Bots can declare whether they need HTTP signature verification.
|
|
371
|
+
- `UrlFormatter` exposes a `hostname` getter.
|
|
372
|
+
|
|
373
|
+
### Changed
|
|
374
|
+
|
|
375
|
+
- `ActivityPubClient` uses the server actor for signed key-fetch
|
|
376
|
+
requests; no special-case.
|
|
377
|
+
- Server actor ID is now derived from the domain name.
|
|
378
|
+
|
|
379
|
+
### Removed
|
|
380
|
+
|
|
381
|
+
- Server special case in Webfinger routes and unused server routes.
|
|
382
|
+
- HTTP-signature check for server actor, Webfinger, and health endpoints.
|
|
383
|
+
|
|
384
|
+
### Fixed
|
|
385
|
+
|
|
386
|
+
- `KeyStorage` no longer accepts `null` username.
|
|
387
|
+
- Don't verify signatures for the server actor itself.
|
|
388
|
+
|
|
389
|
+
## [0.30.6] - 2026-03-21
|
|
390
|
+
|
|
391
|
+
### Fixed
|
|
392
|
+
|
|
393
|
+
- Skip HTTP-signature verification for server, Webfinger, and health endpoints.
|
|
394
|
+
|
|
395
|
+
## [0.30.5] - 2026-03-21
|
|
396
|
+
|
|
397
|
+
### Added
|
|
398
|
+
|
|
399
|
+
- Rate-limit header parsing supports either dates or integers.
|
|
400
|
+
|
|
401
|
+
## [0.30.4] - 2026-03-21
|
|
402
|
+
|
|
403
|
+
### Fixed
|
|
404
|
+
|
|
405
|
+
- Correct protocol for homepage URL.
|
|
406
|
+
|
|
407
|
+
## [0.30.3] - 2026-03-21
|
|
408
|
+
|
|
409
|
+
### Added
|
|
410
|
+
|
|
411
|
+
- `name` on server actor.
|
|
412
|
+
|
|
413
|
+
## [0.30.2] - 2026-03-21
|
|
414
|
+
|
|
415
|
+
### Fixed
|
|
416
|
+
|
|
417
|
+
- Correct `preferredUsername` for server actor.
|
|
418
|
+
|
|
419
|
+
## [0.30.1] - 2026-03-21
|
|
420
|
+
|
|
421
|
+
### Fixed
|
|
422
|
+
|
|
423
|
+
- Wait test for `ActivityPubClient`.
|
|
424
|
+
|
|
425
|
+
## [0.30.0] - 2026-03-21
|
|
426
|
+
|
|
427
|
+
### Changed
|
|
428
|
+
|
|
429
|
+
- Rate limiter switched to a greedy algorithm.
|
|
430
|
+
- More logging info on failed requests.
|
|
431
|
+
|
|
432
|
+
### Fixed
|
|
433
|
+
|
|
434
|
+
- Additional reference fixes for `ActivityHandler.#doActivity()`.
|
|
435
|
+
- Errors in reply and follow handling.
|
|
436
|
+
- Don't expose `botId '*'` publicly in `BotContext`.
|
|
437
|
+
- More robust argument checks in `ActivityPubClient`.
|
|
438
|
+
- Argument checks in `KeyStorage`.
|
|
439
|
+
|
|
440
|
+
## [0.29.0] - 2026-03-19
|
|
441
|
+
|
|
442
|
+
### Added
|
|
443
|
+
|
|
444
|
+
- Webfinger routes for both bot actors and the server actor.
|
|
445
|
+
- HTTPS Webfinger support.
|
|
446
|
+
- `UrlFormatter.acct()` for `acct:` URI formatting.
|
|
447
|
+
|
|
448
|
+
## [0.28.7] - 2026-03-19
|
|
449
|
+
|
|
450
|
+
### Fixed
|
|
451
|
+
|
|
452
|
+
- Larger body-size limit for incoming JSON data.
|
|
453
|
+
|
|
454
|
+
## [0.28.6] - 2026-03-19
|
|
455
|
+
|
|
456
|
+
### Fixed
|
|
457
|
+
|
|
458
|
+
- Support `keyId` with a parameter in the signature header.
|
|
459
|
+
|
|
460
|
+
## [0.28.5] - 2026-03-18
|
|
461
|
+
|
|
462
|
+
### Added
|
|
463
|
+
|
|
464
|
+
- More logging in `HTTPSignatureAuthenticator`.
|
|
465
|
+
- More robust handling of server responses.
|
|
466
|
+
|
|
467
|
+
## [0.28.4] - 2026-03-18
|
|
468
|
+
|
|
469
|
+
### Added
|
|
470
|
+
|
|
471
|
+
- Better handling of fragment URIs in `ActivityPubClient`.
|
|
472
|
+
|
|
473
|
+
## [0.28.3] - 2026-03-18
|
|
474
|
+
|
|
475
|
+
### Added
|
|
476
|
+
|
|
477
|
+
- Embed `publicKey` in the server actor.
|
|
478
|
+
|
|
479
|
+
## [0.28.2] - 2026-03-18
|
|
480
|
+
|
|
481
|
+
### Fixed
|
|
482
|
+
|
|
483
|
+
- Rate-limit test epsilon consistent everywhere.
|
|
484
|
+
|
|
485
|
+
## [0.28.1] - 2026-03-18
|
|
486
|
+
|
|
487
|
+
### Fixed
|
|
488
|
+
|
|
489
|
+
- Grow the epsilon for the `ActivityPubClient` test.
|
|
490
|
+
|
|
491
|
+
## [0.28.0] - 2026-03-18
|
|
492
|
+
|
|
493
|
+
### Changed
|
|
494
|
+
|
|
495
|
+
- Server actor moved to `/actor`.
|
|
496
|
+
|
|
497
|
+
## [0.27.1] - 2026-03-17
|
|
498
|
+
|
|
499
|
+
### Fixed
|
|
500
|
+
|
|
501
|
+
- More breathing room in the rate-limit test.
|
|
502
|
+
|
|
503
|
+
## [0.27.0] - 2026-03-17
|
|
504
|
+
|
|
505
|
+
### Added
|
|
506
|
+
|
|
507
|
+
- `ActivityPubClient` respects rate limits via a `RateLimiter` argument.
|
|
508
|
+
- `RateLimiter` class.
|
|
509
|
+
|
|
510
|
+
## [0.26.3] - 2026-03-17
|
|
511
|
+
|
|
512
|
+
### Fixed
|
|
513
|
+
|
|
514
|
+
- Better handling of `Accept` header for root URL.
|
|
515
|
+
|
|
516
|
+
## [0.26.2] - 2026-03-17
|
|
517
|
+
|
|
518
|
+
### Fixed
|
|
519
|
+
|
|
520
|
+
- Better error when a key is not found.
|
|
521
|
+
|
|
522
|
+
## [0.26.1] - 2026-03-17
|
|
523
|
+
|
|
524
|
+
### Fixed
|
|
525
|
+
|
|
526
|
+
- Timestamps on collections.
|
|
527
|
+
|
|
528
|
+
## [0.26.0] - 2026-03-17
|
|
529
|
+
|
|
530
|
+
### Changed
|
|
531
|
+
|
|
532
|
+
- `BotContext.announceObject()` takes an `actors` argument.
|
|
533
|
+
|
|
534
|
+
### Fixed
|
|
535
|
+
|
|
536
|
+
- Better handling of objects without owners or names.
|
|
537
|
+
|
|
538
|
+
## [0.25.1] - 2026-03-17
|
|
539
|
+
|
|
540
|
+
### Fixed
|
|
541
|
+
|
|
542
|
+
- `BotFactory` also supports `actorOK()`.
|
|
543
|
+
- Relay client deletes the follow activity instead of setting it to null.
|
|
544
|
+
|
|
545
|
+
## [0.25.0] - 2026-03-16
|
|
546
|
+
|
|
547
|
+
### Added
|
|
548
|
+
|
|
549
|
+
- `FollowBackBot` that follows back automatically and undoes its follow
|
|
550
|
+
when unfollowed.
|
|
551
|
+
- Undo-Follow callback on the `Bot` interface.
|
|
552
|
+
- `BotContext` silently succeeds on duplicate follow.
|
|
553
|
+
|
|
554
|
+
### Changed
|
|
555
|
+
|
|
556
|
+
- Exported `FollowBackBot`.
|
|
557
|
+
|
|
558
|
+
## [0.24.2] - 2026-03-12
|
|
559
|
+
|
|
560
|
+
### Added
|
|
561
|
+
|
|
562
|
+
- Handle `Accept` and `Reject` for relay follow activities.
|
|
563
|
+
|
|
564
|
+
## [0.24.1] - 2026-03-12
|
|
565
|
+
|
|
566
|
+
### Fixed
|
|
567
|
+
|
|
568
|
+
- Send the full `Public` URL for relay follow/unfollow.
|
|
569
|
+
- Log at `info` instead of `debug` in relay client.
|
|
570
|
+
|
|
571
|
+
## [0.24.0] - 2026-03-11
|
|
572
|
+
|
|
573
|
+
### Added
|
|
574
|
+
|
|
575
|
+
- Unsubscribe from relay (#91).
|
|
576
|
+
|
|
577
|
+
## [0.23.0] - 2026-03-11
|
|
578
|
+
|
|
579
|
+
### Added
|
|
580
|
+
|
|
581
|
+
- Configurable worker counts and index file.
|
|
582
|
+
- Command-line script covered by tests.
|
|
583
|
+
- Documentation for delivery, distribution, and the index file.
|
|
584
|
+
|
|
585
|
+
### Changed
|
|
586
|
+
|
|
587
|
+
- Default distribution worker count is now 8.
|
|
588
|
+
|
|
589
|
+
## [0.22.0] - 2026-03-11
|
|
590
|
+
|
|
591
|
+
### Added
|
|
592
|
+
|
|
593
|
+
- Index page. (#118)
|
|
594
|
+
|
|
595
|
+
### Changed
|
|
596
|
+
|
|
597
|
+
- `makeApp()` takes keyword arguments.
|
|
598
|
+
|
|
599
|
+
## [0.21.2] - 2026-03-09
|
|
600
|
+
|
|
601
|
+
### Added
|
|
602
|
+
|
|
603
|
+
- Reaper for stalled/crashed jobs; releases stalled jobs back to the queue.
|
|
604
|
+
- Wake sleeping workers when a new job is enqueued.
|
|
605
|
+
|
|
606
|
+
### Changed
|
|
607
|
+
|
|
608
|
+
- Better handling of collections as recipients in `Authorizer`.
|
|
609
|
+
- Better locking for Postgres in `JobQueue`.
|
|
610
|
+
- Database errors bubble up.
|
|
611
|
+
|
|
612
|
+
### Fixed
|
|
613
|
+
|
|
614
|
+
- Correct retry behaviour.
|
|
615
|
+
- Await delivery properly.
|
|
616
|
+
- Use workers in tests.
|
|
617
|
+
- Better queue handling in `activityhandler.test.js`.
|
|
618
|
+
- `app` wires `jobQueue` and `distributionWorkers` correctly.
|
|
619
|
+
|
|
620
|
+
## [0.21.1] - 2026-02-25
|
|
621
|
+
|
|
622
|
+
### Fixed
|
|
623
|
+
|
|
624
|
+
- Correct `summary` property. (#119)
|
|
625
|
+
|
|
626
|
+
## [0.21.0] - 2026-02-18
|
|
627
|
+
|
|
628
|
+
### Added
|
|
629
|
+
|
|
630
|
+
- Persistent job queue backed by the database.
|
|
631
|
+
- `DistributionWorker` class.
|
|
632
|
+
- `DeliveryWorker` for local delivery.
|
|
633
|
+
- Retry after a period of time.
|
|
634
|
+
- `IntakeWorker` for shared-inbox intake.
|
|
635
|
+
- Distribute public activities to the bot inbox as well as the shared
|
|
636
|
+
inbox (with deduplication).
|
|
637
|
+
|
|
638
|
+
### Changed
|
|
639
|
+
|
|
640
|
+
- Single queue used by `ActivityDistributor`.
|
|
641
|
+
|
|
642
|
+
### Removed
|
|
643
|
+
|
|
644
|
+
- Unused properties and constants from `ActivityDeliverer`.
|
|
645
|
+
|
|
646
|
+
## [0.20.1] - 2026-02-18
|
|
647
|
+
|
|
648
|
+
### Fixed
|
|
649
|
+
|
|
650
|
+
- Description for relay server.
|
|
651
|
+
|
|
652
|
+
## [0.20.0] - 2026-02-18
|
|
653
|
+
|
|
654
|
+
### Added
|
|
655
|
+
|
|
656
|
+
- Export `RelayClientBot` and `RelayServerBot`.
|
|
657
|
+
|
|
658
|
+
## [0.19.0] - 2026-02-17
|
|
659
|
+
|
|
660
|
+
### Changed
|
|
661
|
+
|
|
662
|
+
- Large test-suite cleanup: database isolation, cleanup helpers, unique
|
|
663
|
+
hostnames across tests.
|
|
664
|
+
- Consistent lowercase aliases in `ActorStorage` and `ObjectStorage`
|
|
665
|
+
queries for Postgres/SQLite compatibility.
|
|
666
|
+
|
|
667
|
+
### Fixed
|
|
668
|
+
|
|
669
|
+
- Better table-existence check for Postgres.
|
|
670
|
+
- Postgres migrations run inside a lock to prevent conflicts.
|
|
671
|
+
- SQLite-memory URL no longer used (broke in Node 25).
|
|
672
|
+
- `ActorStorage` handles mixed-case and lowercase keys.
|
|
673
|
+
|
|
674
|
+
## [0.18.0] - 2026-02-10
|
|
675
|
+
|
|
676
|
+
### Added
|
|
677
|
+
|
|
678
|
+
- Accept `hs2019` HTTP signatures.
|
|
679
|
+
|
|
680
|
+
## [0.17.0] - 2026-02-10
|
|
681
|
+
|
|
682
|
+
### Added
|
|
683
|
+
|
|
684
|
+
- `RelayServerBot` class.
|
|
685
|
+
- `Bot.handleActivity()` hook to skip default activity handling.
|
|
686
|
+
- `BotContext.doActivity()` method.
|
|
687
|
+
- `RelayClientBot`.
|
|
688
|
+
- Bots can allowlist specific HTTP-signature authors.
|
|
689
|
+
|
|
690
|
+
### Fixed
|
|
691
|
+
|
|
692
|
+
- Prevent duplicate relay clients.
|
|
693
|
+
- Better debug output for `app.onIdle()`.
|
|
694
|
+
- Always lower-case `type` in the URL formatter.
|
|
695
|
+
|
|
696
|
+
## [0.16.7] - 2026-01-30
|
|
697
|
+
|
|
698
|
+
### Added
|
|
699
|
+
|
|
700
|
+
- More info included on Undo activities.
|
|
701
|
+
|
|
702
|
+
## [0.16.6] - 2026-01-28
|
|
703
|
+
|
|
704
|
+
### Fixed
|
|
705
|
+
|
|
706
|
+
- Correct recipients of Undo-Announce.
|
|
707
|
+
|
|
708
|
+
## [0.16.5] - 2026-01-28
|
|
709
|
+
|
|
710
|
+
### Changed
|
|
711
|
+
|
|
712
|
+
- Refactored `BotContext.#undoActivity()` for clarity.
|
|
713
|
+
|
|
714
|
+
## [0.16.4] - 2026-01-28
|
|
715
|
+
|
|
716
|
+
### Fixed
|
|
717
|
+
|
|
718
|
+
- Use bot key as username.
|
|
719
|
+
|
|
720
|
+
## [0.16.3] - 2026-01-28
|
|
721
|
+
|
|
722
|
+
### Fixed
|
|
723
|
+
|
|
724
|
+
- Stray include in `ActorStorage`.
|
|
725
|
+
|
|
726
|
+
## [0.16.2] - 2026-01-28
|
|
727
|
+
|
|
728
|
+
### Removed
|
|
729
|
+
|
|
730
|
+
- Stray `console.log()`.
|
|
731
|
+
|
|
732
|
+
## [0.16.1] - 2026-01-28
|
|
733
|
+
|
|
734
|
+
### Fixed
|
|
735
|
+
|
|
736
|
+
- Debug logging in `botcontext.test.js`.
|
|
737
|
+
|
|
738
|
+
## [0.16.0] - 2026-01-28
|
|
739
|
+
|
|
740
|
+
### Added
|
|
741
|
+
|
|
742
|
+
- `BotContext.unannounceObject(obj)`.
|
|
743
|
+
- `lastactivity` table for efficient undos.
|
|
744
|
+
- `ActorStorage` last-activity helpers.
|
|
745
|
+
|
|
746
|
+
### Changed
|
|
747
|
+
|
|
748
|
+
- Refactored `BotContext` to send activities via a helper and look up
|
|
749
|
+
the most recent activity for undos.
|
|
750
|
+
|
|
751
|
+
## [0.15.4] - 2026-01-27
|
|
752
|
+
|
|
753
|
+
### Fixed
|
|
754
|
+
|
|
755
|
+
- Error when filtering pages containing a single item.
|
|
756
|
+
|
|
757
|
+
## [0.15.3] - 2026-01-26
|
|
758
|
+
|
|
759
|
+
### Fixed
|
|
760
|
+
|
|
761
|
+
- `package-lock.json`.
|
|
762
|
+
|
|
763
|
+
## [0.15.2] - 2026-01-26
|
|
764
|
+
|
|
765
|
+
### Fixed
|
|
766
|
+
|
|
767
|
+
- `package-lock.json` version.
|
|
768
|
+
|
|
769
|
+
## [0.15.1] - 2026-01-26
|
|
770
|
+
|
|
771
|
+
### Fixed
|
|
772
|
+
|
|
773
|
+
- `package.json` entry for `activitypub-nock`.
|
|
774
|
+
|
|
775
|
+
## [0.15.0] - 2026-01-26
|
|
776
|
+
|
|
777
|
+
### Added
|
|
778
|
+
|
|
779
|
+
- Deliver to remote collections (`followers`, `following`, generic).
|
|
780
|
+
- Distribute to local collections.
|
|
781
|
+
|
|
782
|
+
## [0.14.2] - 2026-01-25
|
|
783
|
+
|
|
784
|
+
### Fixed
|
|
785
|
+
|
|
786
|
+
- Skip items in a collection where the read-access check errors.
|
|
787
|
+
|
|
788
|
+
## [0.14.1] - 2026-01-25
|
|
789
|
+
|
|
790
|
+
### Fixed
|
|
791
|
+
|
|
792
|
+
- Better format for `shares` collection `Add`.
|
|
793
|
+
|
|
794
|
+
## [0.14.0] - 2026-01-25
|
|
795
|
+
|
|
796
|
+
### Added
|
|
797
|
+
|
|
798
|
+
- Correctly generate an `Add` activity when an object is liked.
|
|
799
|
+
|
|
800
|
+
### Changed
|
|
801
|
+
|
|
802
|
+
- Use 202 Accepted for inbox responses.
|
|
803
|
+
- `ActivityDeliverer` uses a queue for delivery.
|
|
804
|
+
|
|
805
|
+
### Fixed
|
|
806
|
+
|
|
807
|
+
- More robust behavior when local objects contain bad data.
|
|
808
|
+
|
|
809
|
+
## [0.13.14] - 2026-01-23
|
|
810
|
+
|
|
811
|
+
### Changed
|
|
812
|
+
|
|
813
|
+
- Nock helpers extracted into the `@evanp/activitypub-nock` package for re-use.
|
|
814
|
+
|
|
815
|
+
## [0.13.13] - 2026-01-22
|
|
816
|
+
|
|
817
|
+
### Changed
|
|
818
|
+
|
|
819
|
+
- `#doActivity()` sets `actor`, `id`, `published`, and `updated`.
|
|
820
|
+
|
|
821
|
+
### Fixed
|
|
822
|
+
|
|
823
|
+
- Fall back to the user in URL as owner if it's a local object.
|
|
824
|
+
|
|
825
|
+
## [0.13.12] - 2026-01-22
|
|
826
|
+
|
|
827
|
+
### Fixed
|
|
828
|
+
|
|
829
|
+
- More robust bot-actor generation.
|
|
830
|
+
|
|
831
|
+
## [0.13.11] - 2026-01-22
|
|
832
|
+
|
|
833
|
+
### Fixed
|
|
834
|
+
|
|
835
|
+
- Don't redeliver an activity that's already in the inbox.
|
|
836
|
+
|
|
837
|
+
## [0.13.10] - 2026-01-22
|
|
838
|
+
|
|
839
|
+
### Added
|
|
840
|
+
|
|
841
|
+
- Better handling of null key material in the database.
|
|
842
|
+
|
|
843
|
+
## [0.13.9] - 2026-01-22
|
|
844
|
+
|
|
845
|
+
### Fixed
|
|
846
|
+
|
|
847
|
+
- `bot.ok.test` no longer depends on ordering.
|
|
848
|
+
|
|
849
|
+
## [0.13.8] - 2026-01-22
|
|
850
|
+
|
|
851
|
+
### Added
|
|
852
|
+
|
|
853
|
+
- More debug logging for `OKBot`.
|
|
854
|
+
|
|
855
|
+
## [0.13.7] - 2026-01-22
|
|
856
|
+
|
|
857
|
+
### Added
|
|
858
|
+
|
|
859
|
+
- More logging during activity delivery.
|
|
860
|
+
|
|
861
|
+
## [0.13.6] - 2026-01-22
|
|
862
|
+
|
|
863
|
+
### Added
|
|
864
|
+
|
|
865
|
+
- Logging for received activities.
|
|
866
|
+
|
|
867
|
+
## [0.13.5] - 2026-01-22
|
|
868
|
+
|
|
869
|
+
### Fixed
|
|
870
|
+
|
|
871
|
+
- `KeyStorage` uses a zero-length string for the system key.
|
|
872
|
+
|
|
873
|
+
## [0.13.4] - 2026-01-22
|
|
874
|
+
|
|
875
|
+
### Fixed
|
|
876
|
+
|
|
877
|
+
- `OKBot` works in the public inbox context.
|
|
878
|
+
|
|
879
|
+
## [0.13.3] - 2026-01-22
|
|
880
|
+
|
|
881
|
+
### Fixed
|
|
882
|
+
|
|
883
|
+
- Symlink global libs into `/app/` inside Docker.
|
|
884
|
+
|
|
885
|
+
## [0.13.2] - 2026-01-22
|
|
886
|
+
|
|
887
|
+
### Fixed
|
|
888
|
+
|
|
889
|
+
- Path issues in Dockerfile.
|
|
890
|
+
|
|
891
|
+
## [0.13.1] - 2026-01-22
|
|
892
|
+
|
|
893
|
+
### Added
|
|
894
|
+
|
|
895
|
+
- `.npmignore` to exclude unnecessary files.
|
|
896
|
+
|
|
897
|
+
### Fixed
|
|
898
|
+
|
|
899
|
+
- Proper path for the `activitypub-bot` script.
|
|
900
|
+
|
|
901
|
+
## [0.13.0] - 2026-01-22
|
|
902
|
+
|
|
903
|
+
### Added
|
|
904
|
+
|
|
905
|
+
- Default bot classes exported from the library.
|
|
906
|
+
|
|
907
|
+
### Fixed
|
|
908
|
+
|
|
909
|
+
- Workaround for Express 5 disallowing regexes in routes.
|
|
910
|
+
|
|
911
|
+
## [0.12.1] - 2026-01-21
|
|
912
|
+
|
|
913
|
+
### Fixed
|
|
914
|
+
|
|
915
|
+
- Default bots file wired up from `bin`.
|
|
916
|
+
|
|
917
|
+
## [0.12.0] - 2026-01-21
|
|
918
|
+
|
|
919
|
+
### Changed
|
|
920
|
+
|
|
921
|
+
- Simplified Dockerfile.
|
|
922
|
+
- Reorganized top-level scripts and packaged the library.
|
|
923
|
+
|
|
924
|
+
## [0.11.0] - 2026-01-21
|
|
925
|
+
|
|
926
|
+
### Added
|
|
927
|
+
|
|
928
|
+
- `BotContext.announceObject()`.
|
|
929
|
+
- `onAnnounce()` callback when an actor's object is shared (#56).
|
|
930
|
+
- Thread-context registration for performance.
|
|
931
|
+
- Deliver to local members of a remote collection through the shared inbox.
|
|
932
|
+
- `ActivityPubClient.items(collection)` async iterator for paged and
|
|
933
|
+
ordered collections.
|
|
934
|
+
|
|
935
|
+
### Changed
|
|
936
|
+
|
|
937
|
+
- Express bumped from 4.x to 5.x.
|
|
938
|
+
|
|
939
|
+
### Fixed
|
|
940
|
+
|
|
941
|
+
- Better handling of `null` in `KeyStorage`.
|
|
942
|
+
|
|
943
|
+
## [0.10.0] - 2026-01-15
|
|
944
|
+
|
|
945
|
+
### Added
|
|
946
|
+
|
|
947
|
+
- Handle public messages.
|
|
948
|
+
- Delivery to followers via shared inbox.
|
|
949
|
+
- `sharedInbox` endpoint on the actor.
|
|
950
|
+
- Utility to look up usernames that have a given item in a collection.
|
|
951
|
+
- Deliver activities to local `followers` and `following` collections.
|
|
952
|
+
- Delivery to remote `following` collections.
|
|
953
|
+
- Webfinger lookup tools in `BotContext`.
|
|
954
|
+
- `BotContext.sendReply()`.
|
|
955
|
+
- Microsyntax transformation (hashtags, URLs, mentions) in `BotContext`.
|
|
956
|
+
|
|
957
|
+
### Changed
|
|
958
|
+
|
|
959
|
+
- Six delivery cases rationalized: public, local actor, local collection,
|
|
960
|
+
remote actor, remote collection, other.
|
|
961
|
+
- Delivery code moved into `ActivityDeliverer`.
|
|
962
|
+
|
|
963
|
+
### Fixed
|
|
964
|
+
|
|
965
|
+
- `ActivityDistributor` won't distribute an activity back to the actor.
|
|
966
|
+
- Correct type for `Hashtag` in microsyntax.
|
|
967
|
+
|
|
968
|
+
## [0.9.0] - 2026-01-10
|
|
969
|
+
|
|
970
|
+
### Added
|
|
971
|
+
|
|
972
|
+
- `thread` and thread-page routes.
|
|
973
|
+
- Thread collection management for remote objects.
|
|
974
|
+
- `BotContext.duplicate()`.
|
|
975
|
+
- `BotFactory` support for dynamically-provisioned bots: actor routes,
|
|
976
|
+
collections, public key, and inbox handling.
|
|
977
|
+
- FEP-5711 inverse properties (`replies`, `likes`, `shares`) on actors
|
|
978
|
+
and new content.
|
|
979
|
+
|
|
980
|
+
### Fixed
|
|
981
|
+
|
|
982
|
+
- Conversation tracking in replies.
|
|
983
|
+
- Reactions and thread on new content.
|
|
984
|
+
- `inReplyTo` for OK bot.
|
|
985
|
+
- Correct origin in `actorstorage.test.js`.
|
|
986
|
+
- `UrlFormatter.getUserName()` uses `unformat()`.
|
|
987
|
+
|
|
988
|
+
## [0.8.0] - 2025-09-13
|
|
989
|
+
|
|
990
|
+
### Added
|
|
991
|
+
|
|
992
|
+
- Inverse properties on `replies`, `likes`, and `shares`.
|
|
993
|
+
|
|
994
|
+
## [0.7.5] - 2025-06-03
|
|
995
|
+
|
|
996
|
+
### Fixed
|
|
997
|
+
|
|
998
|
+
- Don't handle the same activity a second time.
|
|
999
|
+
|
|
1000
|
+
## [0.7.4] - 2025-06-03
|
|
1001
|
+
|
|
1002
|
+
### Changed
|
|
1003
|
+
|
|
1004
|
+
- Additional error checks on collection operations.
|
|
1005
|
+
|
|
1006
|
+
## [0.7.3] - 2025-06-03
|
|
1007
|
+
|
|
1008
|
+
### Fixed
|
|
1009
|
+
|
|
1010
|
+
- Outbox route when it contains activities.
|
|
1011
|
+
|
|
1012
|
+
## [0.7.2] - 2025-06-03
|
|
1013
|
+
|
|
1014
|
+
### Fixed
|
|
1015
|
+
|
|
1016
|
+
- `Authorizer.canRead()` checks for object and object.id.
|
|
1017
|
+
- `HTTPSignature` uses query params when building the signing string.
|
|
1018
|
+
- Silent logger for `HTTPSignature`.
|
|
1019
|
+
- `HTTPSignature` handles URLs with parameters.
|
|
1020
|
+
|
|
1021
|
+
## [0.7.1] - 2025-05-23
|
|
1022
|
+
|
|
1023
|
+
### Fixed
|
|
1024
|
+
|
|
1025
|
+
- Quietly fail when delivering to actors with no inbox.
|
|
1026
|
+
|
|
1027
|
+
## [0.7.0] - 2025-05-22
|
|
1028
|
+
|
|
1029
|
+
### Added
|
|
1030
|
+
|
|
1031
|
+
- `OKBot` replies at most once to a mention.
|
|
1032
|
+
- `BotContext.hasData()`.
|
|
1033
|
+
- Logger on `BotContext`.
|
|
1034
|
+
- Logging in `OKBot`.
|
|
1035
|
+
- Class name in logger output.
|
|
1036
|
+
|
|
1037
|
+
## [0.6.0] - 2025-05-22
|
|
1038
|
+
|
|
1039
|
+
### Added
|
|
1040
|
+
|
|
1041
|
+
- Robustness to key rotation.
|
|
1042
|
+
- Option to skip the cache in `RemoteKeyStorage`.
|
|
1043
|
+
|
|
1044
|
+
### Fixed
|
|
1045
|
+
|
|
1046
|
+
- Future and past dates.
|
|
1047
|
+
|
|
1048
|
+
## [0.5.7] - 2025-05-17
|
|
1049
|
+
|
|
1050
|
+
### Fixed
|
|
1051
|
+
|
|
1052
|
+
- `OKBot` mentions the sender correctly.
|
|
1053
|
+
|
|
1054
|
+
## [0.5.6] - 2025-05-17
|
|
1055
|
+
|
|
1056
|
+
### Fixed
|
|
1057
|
+
|
|
1058
|
+
- Better table and queries for `RemotePublicKey`.
|
|
1059
|
+
- Actually save local public and private keys.
|
|
1060
|
+
|
|
1061
|
+
## [0.5.5] - 2025-05-17
|
|
1062
|
+
|
|
1063
|
+
### Added
|
|
1064
|
+
|
|
1065
|
+
- Log public/private key access.
|
|
1066
|
+
|
|
1067
|
+
### Fixed
|
|
1068
|
+
|
|
1069
|
+
- Trim `target` and `host` in `HTTPSignature`.
|
|
1070
|
+
|
|
1071
|
+
## [0.5.4] - 2025-05-16
|
|
1072
|
+
|
|
1073
|
+
### Changed
|
|
1074
|
+
|
|
1075
|
+
- Use a list for headers in `HTTPSignature` to make signing replicable.
|
|
1076
|
+
- Better escaping and trimming in `HTTPSignature`.
|
|
1077
|
+
|
|
1078
|
+
## [0.5.3] - 2025-05-16
|
|
1079
|
+
|
|
1080
|
+
### Fixed
|
|
1081
|
+
|
|
1082
|
+
- Digester test regression.
|
|
1083
|
+
|
|
1084
|
+
## [0.5.2] - 2025-05-16
|
|
1085
|
+
|
|
1086
|
+
### Fixed
|
|
1087
|
+
|
|
1088
|
+
- Signature-header match regex in tests.
|
|
1089
|
+
|
|
1090
|
+
## [0.5.1] - 2025-05-16
|
|
1091
|
+
|
|
1092
|
+
### Added
|
|
1093
|
+
|
|
1094
|
+
- Packaging fixes for the signing work in 0.5.0.
|
|
1095
|
+
|
|
1096
|
+
## [0.5.0] - 2025-05-16
|
|
1097
|
+
|
|
1098
|
+
### Added
|
|
1099
|
+
|
|
1100
|
+
- Sign `Accept`, `Content-Type`, and `User-Agent` headers.
|
|
1101
|
+
|
|
1102
|
+
## [0.4.10] - 2025-05-16
|
|
1103
|
+
|
|
1104
|
+
### Added
|
|
1105
|
+
|
|
1106
|
+
- More HTTP-signature debugging output.
|
|
1107
|
+
|
|
1108
|
+
## [0.4.9] - 2025-05-15
|
|
1109
|
+
|
|
1110
|
+
### Added
|
|
1111
|
+
|
|
1112
|
+
- Debug output for HTTP signatures.
|
|
1113
|
+
|
|
1114
|
+
## [0.4.8] - 2025-05-14
|
|
1115
|
+
|
|
1116
|
+
### Changed
|
|
1117
|
+
|
|
1118
|
+
- All HTTP-signature and digest methods consolidated into dedicated modules.
|
|
1119
|
+
|
|
1120
|
+
## [0.4.7] - 2025-05-14
|
|
1121
|
+
|
|
1122
|
+
### Changed
|
|
1123
|
+
|
|
1124
|
+
- Compare digest algorithms case-independently.
|
|
1125
|
+
|
|
1126
|
+
## [0.4.6] - 2025-05-14
|
|
1127
|
+
|
|
1128
|
+
### Fixed
|
|
1129
|
+
|
|
1130
|
+
- Better handling of key IDs with a fragment.
|
|
1131
|
+
|
|
1132
|
+
## [0.4.5] - 2025-05-13
|
|
1133
|
+
|
|
1134
|
+
### Added
|
|
1135
|
+
|
|
1136
|
+
- Better error reporting in the distributor.
|
|
1137
|
+
- Log bad incoming activities.
|
|
1138
|
+
|
|
1139
|
+
## [0.4.4] - 2025-05-13
|
|
1140
|
+
|
|
1141
|
+
### Fixed
|
|
1142
|
+
|
|
1143
|
+
- Better `Digest` and `Date` validation, with better error messages.
|
|
1144
|
+
|
|
1145
|
+
## [0.4.3] - 2025-05-13
|
|
1146
|
+
|
|
1147
|
+
### Fixed
|
|
1148
|
+
|
|
1149
|
+
- Bad `Digest` value on outgoing HTTP requests.
|
|
1150
|
+
|
|
1151
|
+
## [0.4.2] - 2025-05-13
|
|
1152
|
+
|
|
1153
|
+
### Fixed
|
|
1154
|
+
|
|
1155
|
+
- Correct method in POST signature.
|
|
1156
|
+
|
|
1157
|
+
## [0.4.1] - 2025-05-13
|
|
1158
|
+
|
|
1159
|
+
### Fixed
|
|
1160
|
+
|
|
1161
|
+
- Common logger used for `ActivityDistributor`.
|
|
1162
|
+
|
|
1163
|
+
## [0.4.0] - 2025-05-13
|
|
1164
|
+
|
|
1165
|
+
### Added
|
|
1166
|
+
|
|
1167
|
+
- `LOG_LEVEL` environment variable.
|
|
1168
|
+
|
|
1169
|
+
### Fixed
|
|
1170
|
+
|
|
1171
|
+
- Better handling of remote keys with their own URL.
|
|
1172
|
+
- Use `CryptographicKey` rather than `PublicKey`.
|
|
1173
|
+
|
|
1174
|
+
## [0.3.4] - 2025-05-13
|
|
1175
|
+
|
|
1176
|
+
### Fixed
|
|
1177
|
+
|
|
1178
|
+
- Client doesn't sign requests for HTTP-signature keys unless necessary.
|
|
1179
|
+
|
|
1180
|
+
## [0.3.3] - 2025-05-12
|
|
1181
|
+
|
|
1182
|
+
### Fixed
|
|
1183
|
+
|
|
1184
|
+
- Webfinger endpoint works correctly.
|
|
1185
|
+
|
|
1186
|
+
## [0.3.2] - 2025-05-12
|
|
1187
|
+
|
|
1188
|
+
### Fixed
|
|
1189
|
+
|
|
1190
|
+
- Copy `lib` and `bots` to the correct directories in Docker.
|
|
1191
|
+
- Multiplatform Docker image.
|
|
1192
|
+
|
|
1193
|
+
## [0.3.1] - 2025-05-12
|
|
1194
|
+
|
|
1195
|
+
### Fixed
|
|
1196
|
+
|
|
1197
|
+
- Copy `bots` directory in Docker.
|
|
1198
|
+
|
|
1199
|
+
## [0.3.0] - 2025-05-12
|
|
1200
|
+
|
|
1201
|
+
### Added
|
|
1202
|
+
|
|
1203
|
+
- Standard bot classes and a new bot architecture.
|
|
1204
|
+
- Start script.
|
|
1205
|
+
|
|
1206
|
+
## [0.2.0] - 2025-05-11
|
|
1207
|
+
|
|
1208
|
+
### Added
|
|
1209
|
+
|
|
1210
|
+
- Docker image built on tag.
|
|
1211
|
+
- `/livez` and `/readyz` health-check routes.
|
|
1212
|
+
|
|
1213
|
+
## [0.1.0] - 2025-05-10
|
|
1214
|
+
|
|
1215
|
+
### Added
|
|
1216
|
+
|
|
1217
|
+
- Initial release: ActivityPub bot framework with Webfinger, actor
|
|
1218
|
+
routes, inbox/outbox, shared inbox, HTTP Signatures, object and actor
|
|
1219
|
+
storage, key storage, bot context API, activity distribution, and
|
|
1220
|
+
default bots (`OKBot`, `DoNothingBot`).
|
|
1221
|
+
- Sequelize drivers for SQLite, Postgres, and MySQL.
|
|
1222
|
+
- Docker multi-platform build workflow.
|
|
1223
|
+
- Dependabot configuration.
|