Skip to content

Conversation

@github-actions
Copy link
Contributor

@github-actions github-actions bot commented Feb 24, 2025

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@fedimod/fires-server@0.1.0

Minor Changes

  • #62 d3d6fd8 Thanks @ThisIsMissEm! - Add CLI to support setting up a FIRES server

    This work was done in PR #60. The idea is to help someone configure a FIRES server, and eventually provision the issue admin-level bearer token for authentication.

    Provided a working installation of a FIRES server, you can run:

    node ace fires:setup
    

    Which will prompt you for the following questions:

    • Please give your new FIRES server a short description
    • What is your contact email? (publicly available)
    • What is the contact fediverse account?
    • Where is your website as a FIRES provider?
    • Do you have a website with documentation?
    • Where can people go to lodge an appeal for moderation decisions?
    • Would you like to redirect visitors to a different URL for this server?
      • (if yes) Which URL?

    Both the documentation and homepage URLs are optional, the rest are currently mandatory.

    This information will eventually be available when visiting the root of the FIRES server.

  • #50 647e6af Thanks @ThisIsMissEm! - Add required PUBLIC_URL environment variable

  • #36 791d620 Thanks @ThisIsMissEm! - Bootstrap fires-server component

    • Sets up an adonis.js application with postgresql, lucid, vite, edge.js, and pico.css
    • Adds database configuration for using SSL CA Certificates (needed for people to deploy with providers like DigitalOcean's Managed Databases)
    • Disables multipart/form-data requests, as the FIRES server doesn't need to handle these, but there's no way to disable them in Adonis.js yet. See: Add support for completely disabling multipart request handling adonisjs/bodyparser#66
  • #47 9455ab7 Thanks @ThisIsMissEm! - Add docker images to deployments

    We're now building both amd64 and arm64 docker images for fires-server.

  • #72 ce2e791 Thanks @ThisIsMissEm! - Added support for NodeInfo Protocol

    This helps discovery of FIRES servers by using the well-known NodeInfo
    Protocol
    . We don't expose usage data
    because it's not relevant and the FIRES server doesn't have "users" as such.

    We're also currently using a non-standard protocol of "fires" as the
    protocol in NodeInfo Schema is defined as an enum of specific string values, so
    isn't extensible without new revisions to their specification, and it lacks a
    protocol registry (like what many IETF specs have), so I can't "register" the
    "fires" protocol.

    But at least this gives some discovery information.

  • #103 8c3372c Thanks @ThisIsMissEm! - Add CLI commands for Access Tokens

    This change introduces the following node ace commands to manage access tokens on the FIRES reference server:

    • fires:tokens:list
    • fires:tokens:create
    • fires:tokens:delete <token_prefix>

    Also updates the documentation and seeders to fix a few small issues.

  • #64 81ebb83 Thanks @ThisIsMissEm! - Implemented Labels API

    This provides a new set of APIs to the FIRES reference server, as well as documenting the API of the Labels endpoint(s) in the FIRES protocol.

    The FIRES protocol covers reading the collection of all labels and retrieving an individual label as both text/html and application/json or application/ld+json.

    The non-standard API for managing labels covers creating, updated, deprecating and deleting labels from the FIRES reference server.

  • #96 8d4aa5a Thanks @ThisIsMissEm! - Use DATABASE_URL in libpq compat mode for database connections

    This change removes the previous DATABASE_* environment variables, and replaces them with a singular DATABASE_URL. This ensures we have better handling of SSL Certificates for self-signed certificates (e.g., when the postgresql database is on a managed service like DigitalOcean).

    When using DATABASE_URL you can omit the database name (the path component of the connection string), in which case, we will automatically use the combined of fires_ and the current NODE_ENV as the database name.

    Also introduced is DATABASE_POOL_MAX to configure the database pool size, as we weren't previously using database connection pooling.

  • #90 b026248 Thanks @ThisIsMissEm! - Add authentication to API

    The API now requires authentication via HTTP Authorization header using a Bearer token. Each token has a number of scopes or 'abilities', such as read, write, admin. Currently the only API that exists and is protected is the labels API. In the future we may change scopes of tokens to more granular options, e.g., read:labels, write:labels, etc, but for now the coarse granularity is fine. The consumer of the FIRES server protocol does not know what scopes they have from the token alone, it is just an opaque access token.

    Internally in the reference server implementation for FIRES, we're using tokens that can be cryptographically verified before we attempt to check if the token actually exists in the database, which reduces the attack surface on the database compared to always querying for whether a user-supplied token exists in the database. This is inspired by how Ory.sh structures their access tokens. Tokens are prefixed with fires_.

Patch Changes

  • #46 02f2b07 Thanks @ThisIsMissEm! - Migrate from npm to pnpm for better builds

  • #52 56c8d47 Thanks @ThisIsMissEm! - Fix docker image labels, these weren't working correctly on edge images

  • #100 ef6e170 Thanks @ThisIsMissEm! - Refactor: Improve request tests

    This switches us to use the japa plugin approach for request tests, injecting a assertResponse and request values into TestContext, which does the createServer / createRequestInjection logic automatically. In the future this plugin will be extracted into a stand-alone japa plugin for doing fast request testing.

    Also ensures the database is correctly setup before tests.

@fedimod/fires-docs@1.1.0

Minor Changes

  • #64 81ebb83 Thanks @ThisIsMissEm! - Implemented Labels API

    This provides a new set of APIs to the FIRES reference server, as well as documenting the API of the Labels endpoint(s) in the FIRES protocol.

    The FIRES protocol covers reading the collection of all labels and retrieving an individual label as both text/html and application/json or application/ld+json.

    The non-standard API for managing labels covers creating, updated, deprecating and deleting labels from the FIRES reference server.

Patch Changes

@github-actions github-actions bot force-pushed the changeset-release/main branch 3 times, most recently from 5377c51 to 1727f06 Compare February 26, 2025 01:02
@github-actions github-actions bot force-pushed the changeset-release/main branch 16 times, most recently from 9395300 to 8e7d060 Compare March 10, 2025 18:48
@github-actions github-actions bot force-pushed the changeset-release/main branch 11 times, most recently from 9f85388 to 7e5a62e Compare March 22, 2025 19:37
@github-actions github-actions bot force-pushed the changeset-release/main branch 3 times, most recently from 33bb356 to d90906e Compare March 26, 2025 22:16
@github-actions github-actions bot force-pushed the changeset-release/main branch 3 times, most recently from a61d823 to f2bccc5 Compare April 27, 2025 17:28
@github-actions github-actions bot force-pushed the changeset-release/main branch 9 times, most recently from 60e689d to 6239059 Compare May 10, 2025 23:12
@ThisIsMissEm
Copy link
Contributor

ThisIsMissEm commented May 10, 2025

Prerelease checklist:

  • Test Docker instructions work correct
  • Ensure Authentication is documented in readme (maybe move to protocol docs? have a non-standard section?)
  • Ensure freshly provisioned server works as expected, in case my development database has filled up with junk.

@ThisIsMissEm ThisIsMissEm self-assigned this May 10, 2025
@github-actions github-actions bot force-pushed the changeset-release/main branch 4 times, most recently from a37e5e5 to 89b0aea Compare May 21, 2025 21:01
@github-actions github-actions bot force-pushed the changeset-release/main branch from 89b0aea to bc3a2c2 Compare May 21, 2025 21:14
@ThisIsMissEm ThisIsMissEm merged commit 94b6c59 into main May 21, 2025
3 checks passed
@ThisIsMissEm ThisIsMissEm deleted the changeset-release/main branch May 21, 2025 21:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants