Commit 3ce00656 authored by ChanHaeng Lee's avatar ChanHaeng Lee
Browse files

Merge remote-tracking branch 'upstream/main'

parents ee3839ad 7733c1d8
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -421,6 +421,7 @@ jobs:
          | @fedify/fedify   | ${{ steps.versioning.outputs.version }} | [JSR][jsr:@fedify/fedify]   | [npm][npm:@fedify/fedify]   |
          | @fedify/cli      | ${{ steps.versioning.outputs.version }} | [JSR][jsr:@fedify/cli]      |                             |
          | @fedify/amqp     | ${{ steps.versioning.outputs.version }} | [JSR][jsr:@fedify/amqp]     | [npm][npm:@fedify/amqp]     |
          | @fedify/elysia   | ${{ steps.versioning.outputs.version }} |                             | [npm][npm:@fedify/elysia]   |
          | @fedify/express  | ${{ steps.versioning.outputs.version }} | [JSR][jsr:@fedify/express]  | [npm][npm:@fedify/express]  |
          | @fedify/h3       | ${{ steps.versioning.outputs.version }} | [JSR][jsr:@fedify/h3]       | [npm][npm:@fedify/h3]       |
          | @fedify/nestjs   | ${{ steps.versioning.outputs.version }} |                             | [npm][npm:@fedify/nestjs]   |
@@ -434,6 +435,7 @@ jobs:
          [jsr:@fedify/cli]: https://jsr.io/@fedify/cli@${{ steps.versioning.outputs.version }}
          [jsr:@fedify/amqp]: https://jsr.io/@fedify/amqp@${{ steps.versioning.outputs.version }}
          [npm:@fedify/amqp]: https://www.npmjs.com/package/@fedify/amqp/v/${{ steps.versioning.outputs.short_version }}
          [npm:@fedify/elysia]: https://www.npmjs.com/package/@fedify/elysia/v/${{ steps.versioning.outputs.short_version }}
          [jsr:@fedify/express]: https://jsr.io/@fedify/express@${{ steps.versioning.outputs.version }}
          [npm:@fedify/express]: https://www.npmjs.com/package/@fedify/express/v/${{ steps.versioning.outputs.short_version }}
          [jsr:@fedify/h3]: https://jsr.io/@fedify/h3@${{ steps.versioning.outputs.version }}
+4 −2
Original line number Diff line number Diff line
@@ -64,6 +64,7 @@ The repository is organized as a monorepo with the following packages:
    -  *src/x/*: Framework integrations
 -  *packages/cli/*: Fedify CLI implementation (@fedify/cli, built with Deno)
 -  *packages/amqp/*: AMQP/RabbitMQ driver (@fedify/amqp)
 -  *packages/elysia/*: Elysia integration (@fedify/elysia)
 -  *packages/express/*: Express.js integration (@fedify/express)
 -  *packages/h3/*: h3 framework integration (@fedify/h3)
 -  *packages/postgres/*: PostgreSQL drivers (@fedify/postgres)
@@ -256,8 +257,9 @@ The monorepo uses different build processes for different packages:
2. **@fedify/cli**: Built with Deno, distributed via JSR and npm

3. **Database adapters and integrations**: Use tsdown for TypeScript compilation:
   - *packages/amqp/*, *packages/express/*, *packages/h3/*, *packages/sqlite/*,
     *packages/postgres/*, *packages/redis/*, *packages/nestjs/*
   - *packages/amqp/*, *packages/elysia*, *packages/express/*, *packages/h3/*,
     *packages/sqlite/*, *packages/postgres/*, *packages/redis/*,
     *packages/nestjs/*
   - Built to support Node.js and Bun environments

Ensure changes work across all distribution formats and target environments.
+133 −57
Original line number Diff line number Diff line
@@ -3,36 +3,56 @@
Fedify changelog
================

Version 1.9.0
-------------

To be released.


Version 1.8.1
-------------

To be released.  Note that 1.8.0 was skipped due to a mistake in
Released on August 6, 2025.  Note that 1.8.0 was skipped due to a mistake in
the versioning.

 -  The repository has been restructured as a monorepo, consolidating all
    Fedify packages into a single repository with unified versioning.  This
    change affects the following packages:

     -  `@fedify/fedify` (main library)
     -  `@fedify/cli` (CLI toolchain)
     -  `@fedify/amqp` (AMQP/RabbitMQ driver)
     -  `@fedify/express` (Express integration)
     -  `@fedify/h3` (h3 framework integration)
     -  `@fedify/postgres` (PostgreSQL drivers)
     -  `@fedify/redis` (Redis drivers)
     -  *@fedify/fedify* (main library)
     -  *@fedify/cli* (CLI toolchain)
     -  *@fedify/amqp* (AMQP/RabbitMQ driver)
     -  *@fedify/express* (Express integration)
     -  *@fedify/h3* (h3 framework integration)
     -  *@fedify/postgres* (PostgreSQL drivers)
     -  *@fedify/redis* (Redis drivers)

    All packages now follow the same version number and are released together.
    Previously, each package had independent versioning.

 -  Added mock classes for `Federation` and `Context` interfaces to improve
    testability without requiring a real federation server setup. The mock
    classes track all sent activities with metadata and support all standard
    Fedify patterns including custom path registration and multiple activity
    type listeners.  [[#197], [#283] by Lee ByeongJun]
 -  Several new packages have been added to the monorepo:

     -  Added `@fedify/testing` package.
     -  Added `MockFederation` class.
     -  Added `MockContext` class.
     -  *@fedify/elysia* ([Elysia] integration)
     -  *@fedify/nestjs* ([NestJS] integration)
     -  *@fedify/sqlite* (SQLite drivers)
     -  *@fedify/testing* (testing utilities)

### @fedify/fedify

 -  Added custom collection dispatchers.  [[#310], [#332] by ChanHaeng Lee]

     -  Added `CustomCollectionDispatcher`, `CustomCollectionCounter`, and
        `CustomCollectionCursor` types for custom collection dispatching.
     -  Added `CustomCollectionCallbackSetters` type for setting custom
        collection callbacks.
     -  Added `CustomCollectionHandler` class and `handleCustomCollection()` and
        `handleOrderedCollection()` functions to process custom collections.
     -  Added `setCollectionDispatcher()` and `setOrderedCollectionDispatcher()`
        methods to the `Federatable` interface. Implemented in
        `FederationBuilderImpl` class.
     -  Added `getCollectionUri()` method to the `Context` interface.
     -  Added utility types `ConstructorWithTypeId` and `ParamsKeyPath` for
        custom collection dispatchers.

 -  Key–value stores now optionally support CAS (compare-and-swap) operation
    for atomic updates.  This is useful for implementing optimistic locking
@@ -42,13 +62,6 @@ the versioning.
     -  Added `MemoryKvStore.cas()` method.
     -  Added `DenoKvStore.cas()` method.

 -  Added options to customize the temporary actor information when running
    `fedify inbox` command.  [[#262], [#285] by Hasang Cho]

     -  Added `--actor-name` option to customize the actor display name.
     -  Added `--actor-summary` option to customize the actor description.
     -  Both options provide sensible defaults when not specified.

 -  Added useful functions for fediverse handles at `@fedify/fedify/vocab`.
    This functions simplify working with fediverse handles and URLs.
    [[#278] by ChanHaeng Lee]
@@ -63,6 +76,25 @@ the versioning.
 -  Added `LookupWebFingerOptions.maxRedirection` option.
    [[#248], [#281] by Lee ByeongJun]

 -  APIs making HTTP requests became able to optionally take `AbortSignal`.
    [[#51], [#315] by Hyunchae Kim]

     -  Added `DocumentLoaderOptions` interface.
     -  The `DocumentLoader` type became able to optionally take
        the second parameter.
     -  Added `LookupObjectOptions.signal` option.
     -  Added `LookupWebFingerOptions.signal` option.
     -  Added `DoubleKnockOptions.signal` option.

### @fedify/cli

 -  The `fedify` CLI now correctly disables color output when standard output
    isn't a TTY (for example, when redirecting to a file) or when the `NO_COLOR`
    environment variable is set.  [[#257], [#341] by Cho Hasang]

 -  Added `fedify nodeinfo` command, and deprecated `fedify node` command in
    favor of `fedify nodeinfo`.  [[#267], [#331] by Hyeonseo Kim]

 -  Added `fedify webfinger` command. This command allows users to look up
    WebFinger information for a given resource.
    [[#260], [#278] by ChanHaeng Lee]
@@ -77,6 +109,27 @@ the versioning.
        number of redirects to follow when performing WebFinger lookups.
        [[#311], [#328] by KeunHyeong Park]

 -  The `fedify lookup` command now displays images depending on user's
    terminal emulator. [[#169], [#348] by Jiwon Kwon]

     -  Supported terminal emulators are [Kitty], [WezTerm], [Konsole], [Warp],
        [Wayst], [st], and [iTerm].

 -  Added `-o`/`--output` option to `fedify lookup` command. This option allows
    users to save retrieved lookup results to specified path.
    [[#261], [#321] by Jiwon Kwon]

 -  Added options to customize the temporary actor information when running
    `fedify inbox` command.  [[#262], [#285] by Hasang Cho]

     -  Added `--actor-name` option to customize the actor display name.
     -  Added `--actor-summary` option to customize the actor description.
     -  Both options provide sensible defaults when not specified.

 -  The `fedify inbox` command now displays the type of the object contained
    in each activity, in addition to the activity's own type.
    [[#191], [#342] by Jang Hanarae]

 -  Added `--dry-run` option to `fedify init` command.  This option allows users
    to preview what files and configurations would be created without actually
    creating them.  [[#263], [#298] by Lee ByeongJun]
@@ -85,50 +138,47 @@ the versioning.
    failed to correctly render the favicon in terminal emulators that do not
    support 24-bit colors.  [[#168], [#282], [#304] by Hyeonseo Kim]

 -  Supported NestJS integration with the `@fedify/nestjs` package.
### @fedify/elysia

 -  Supported [Elysia] integration with the *@fedify/elysia* package.
    [[#286], [#339] by Hyeonseo Kim]

     -  Added *@fedify/elysia* package.
     -  Added `fedify` Elysia plugin for integrating Fedify into Elysia
        applications.

### @fedify/nestjs

 -  Supported [NestJS] integration with the *@fedify/nestjs* package.
    [[#269], [#309] by Jaeyeol Lee]

     -  Added `@fedify/nestjs` package.
     -  Added *@fedify/nestjs* package.
     -  Added `FedifyModule` for integrating Fedify into NestJS applications.

### @fedify/sqlite

 -  Added `SqliteKvStore`, implementing `KvStore` using SQLite with the
    `@fedify/sqlite` package. Compatible with Bun, Deno, and Node.js.
    *@fedify/sqlite* package. Compatible with Bun, Deno, and Node.js.
    [[#274], [#318] by An Subin]

     -  Added `@fedify/sqlite` package.
     -  Added *@fedify/sqlite* package.
     -  Added `SqliteKvStore`, a SQLite implementation of `KvStore`.

 -  Added `-o`/`--output` option to `fedify lookup` command. This option allows
    users to save retrieved lookup results to specified path.
    [[#261], [#321] by Jiwon Kwon]

 -  Added `fedify nodeinfo` command, and deprecated `fedify node` command in
    favor of `fedify nodeinfo`.  [[#267], [#331] by Hyeonseo Kim]
### @fedify/testing

 -  Added custom collection dispatchers.  [[#310], [#332] by ChanHaeng Lee]

     -  Added `CustomCollectionDispatcher`, `CustomCollectionCounter`, and
        `CustomCollectionCursor` types for custom collection dispatching.
     -  Added `CustomCollectionCallbackSetters` type for setting custom
        collection callbacks.
     -  Added `CustomCollectionHandler` class and `handleCustomCollection()` and
        `handleOrderedCollection()` functions to process custom collections.
     -  Added `setCollectionDispatcher()` and `setOrderedCollectionDispatcher()`
        methods to the `Federatable` interface. Implemented in
        `FederationBuilderImpl` class.
     -  Added `getCollectionUri()` method to the `Context` interface.
     -  Added utility types `ConstructorWithTypeId` and `ParamsKeyPath` for
        custom collection dispatchers.

 -  The `fedify inbox` command now displays the type of the object contained
    in each activity, in addition to the activity's own type.
    [[#191], [#342] by Jang Hanarae]
 -  Added mock classes for `Federation` and `Context` interfaces to improve
    testability without requiring a real federation server setup. The mock
    classes track all sent activities with metadata and support all standard
    Fedify patterns including custom path registration and multiple activity
    type listeners.  [[#197], [#283] by Lee ByeongJun]

 -  The `fedify` CLI now correctly disables color output when standard output
    isn't a TTY (for example, when redirecting to a file) or when the `NO_COLOR`
    environment variable is set.  [[#257], [#341] by Cho Hasang]
     -  Added *@fedify/testing* package.
     -  Added `MockFederation` class.
     -  Added `MockContext` class.

[#51]: https://github.com/fedify-dev/fedify/issues/51
[#168]: https://github.com/fedify-dev/fedify/issues/168
[#169]: https://github.com/fedify-dev/fedify/issues/169
[#191]: https://github.com/fedify-dev/fedify/issues/191
[#197]: https://github.com/fedify-dev/fedify/issues/197
[#248]: https://github.com/fedify-dev/fedify/issues/248
@@ -139,24 +189,50 @@ the versioning.
[#263]: https://github.com/fedify-dev/fedify/issues/263
[#267]: https://github.com/fedify-dev/fedify/issues/267
[#269]: https://github.com/fedify-dev/fedify/issues/269
[#274]: https://github.com/fedify-dev/fedify/issues/274
[#278]: https://github.com/fedify-dev/fedify/pull/278
[#281]: https://github.com/fedify-dev/fedify/pull/281
[#282]: https://github.com/fedify-dev/fedify/pull/282
[#283]: https://github.com/fedify-dev/fedify/pull/283
[#285]: https://github.com/fedify-dev/fedify/pull/285
[#286]: https://github.com/fedify-dev/fedify/issues/286
[#298]: https://github.com/fedify-dev/fedify/pull/298
[#304]: https://github.com/fedify-dev/fedify/issues/304
[#309]: https://github.com/fedify-dev/fedify/pull/309
[#274]: https://github.com/fedify-dev/fedify/issues/274
[#318]: https://github.com/fedify-dev/fedify/pull/318
[#310]: https://github.com/fedify-dev/fedify/issues/310
[#311]: https://github.com/fedify-dev/fedify/issues/311
[#315]: https://github.com/fedify-dev/fedify/pull/315
[#318]: https://github.com/fedify-dev/fedify/pull/318
[#321]: https://github.com/fedify-dev/fedify/pull/321
[#328]: https://github.com/fedify-dev/fedify/pull/328
[#331]: https://github.com/fedify-dev/fedify/pull/331
[#332]: https://github.com/fedify-dev/fedify/pull/332
[#342]: https://github.com/fedify-dev/fedify/pull/342
[#339]: https://github.com/fedify-dev/fedify/pull/339
[#341]: https://github.com/fedify-dev/fedify/pull/341
[#342]: https://github.com/fedify-dev/fedify/pull/342
[#348]: https://github.com/fedify-dev/fedify/pull/348
[Kitty]: https://sw.kovidgoyal.net/kitty/
[Elysia]: https://elysiajs.com/
[NestJS]: https://nestjs.com/
[WezTerm]: https://wezterm.org/
[Konsole]: https://konsole.kde.org/
[Warp]: https://www.warp.dev/
[Wayst]: https://github.com/91861/wayst
[st]: https://st.suckless.org/
[iTerm]: https://iterm2.com/


Version 1.7.8
-------------

Released on August 5, 2025.

 -  Updated `kvCache()` wrapper to read from preloaded contexts rather than
    from the `KvStore`. This saves network and disk overheads when parsing
    activities and objects using the JSON-LD processor.
    [[#352] by Fabien O'Carroll]

[#352]: https://github.com/fedify-dev/fedify/pull/352


Version 1.7.7
+2 −1
Original line number Diff line number Diff line
@@ -187,7 +187,8 @@ The repository is organized as a monorepo with the following packages:
 -  *packages/cli/*: The Fedify CLI (@fedify/cli).  The CLI is built with
    [Deno].
 -  *packages/amqp/*: AMQP/RabbitMQ driver (@fedify/amqp) for Fedify.
 -  *packages/express/*: Express.js integration (@fedify/express) for Fedify.
 -  *packages/elysia/*: Elysia integration (@fedify/elysia) for Fedify.
 -  *packages/express/*: Express integration (@fedify/express) for Fedify.
 -  *packages/h3/*: h3 framework integration (@fedify/h3) for Fedify.
 -  *packages/postgres/*: PostgreSQL drivers (@fedify/postgres) for Fedify.
 -  *packages/redis/*: Redis drivers (@fedify/redis) for Fedify.
+2 −0
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@
    "./packages/fedify",
    "./packages/cli",
    "./packages/amqp",
    "./packages/elysia",
    "./packages/express",
    "./packages/h3",
    "./packages/postgres",
@@ -20,6 +21,7 @@
    "@logtape/logtape": "jsr:@logtape/logtape@^1.0.0",
    "@std/assert": "jsr:@std/assert@^1.0.13",
    "@std/async": "jsr:@std/async@^1.0.13",
    "@std/encoding": "jsr:@std/encoding@^1.0.10",
    "@std/fs": "jsr:@std/fs@^1.0.3",
    "@std/path": "jsr:@std/path@^1.0.6",
    "@std/yaml": "jsr:@std/yaml@^1.0.8",
Loading