grapevine/book/changelog.md
Charles Hall c24f79b79b
update rust deps except rocksdb and otel clownery
* OTel v0.25.0 requires downgrading Tokio to 1.38 [0]
* They have a fix for this but aren't cutting a release just for release
  schedule reasons [1]
* Prometheus support (at least for server-pull) was dropped at OTel
  v0.23 and isn't planned to be picked up again until OTel v1 [2]
* No real reasoning was provided for this decision AFAICT [3] [4]
* So many compiler errors
* Unhelpful changelogs

The last two points are what made me give up on trying to upgrade to
OTel v0.24 too.

RocksDB isn't updated because we'd need to update our nixpkgs too but
that causes other problems, such as an upstream bug in liburing when
building for musl.

[0]: https://github.com/open-telemetry/opentelemetry-rust/issues/2094
[1]: https://github.com/open-telemetry/opentelemetry-rust/issues/2094#issuecomment-2346834030
[2]: https://docs.rs/opentelemetry-prometheus/0.17.0/opentelemetry_prometheus/index.html
[3]: https://github.com/open-telemetry/opentelemetry-rust/pull/1792
[4]: https://github.com/open-telemetry/opentelemetry-rust/pull/1792#issuecomment-2121514344
2024-09-23 14:22:55 -07:00

16 KiB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased

This will be the first release of Grapevine since it was forked from Conduit 0.7.0.

Security

  1. Prevent XSS via user-uploaded media. (!8)
  2. Switch from incorrect, hand-rolled X-Matrix Authorization parser to the much better implementation provided by Ruma. (!31)
    • This is not practically exploitable to our knowledge, but this change does reduce risk.
  3. Switch to a more trustworthy password hashing library. (!29)
    • This is not practically exploitable to our knowledge, but this change does reduce risk.
  4. Don't return redacted events from the search endpoint. (!41 (f74043d), !41 (83cdc9c))
  5. Prevent impersonation in EDUs. (!41 (da99b07))
    • m.signing_key_update was not affected by this bug.
  6. Verify PDUs and transactions against the temporally-correct signing keys. (!41 (9087da9))
  7. Only allow the admin bot to change the room ID that the admin room alias points to. (!42)

Removed

  1. Remove update checker. (17a0b34)
  2. Remove optional automatic display name emoji for newly registered users. (cddf699)
  3. Remove admin room welcome message on first startup. (c9945f6)
  4. Remove incomplete presence implementation. (f27941d)
  5. Remove Debian packaging. (d41f0fb)
  6. Remove Docker packaging. (!48)
  7. BREAKING: Remove unstable room versions. (!59)

Changed

  1. BREAKING: Rename conduit_cache_capacity_modifier configuration option to cache_capacity_modifier. (5619d7e)
    • If you are explicitly setting this configuration option, make sure to change its name before updating.
  2. BREAKING: Rename Conduit to Grapevine. (360e020)
    • The CONDUIT_VERSION_EXTRA build-time environment variable has been renamed to GRAPEVINE_VERSION_EXTRA. This change only affects distribution packagers or non-Nix users who are building from source. If you fall into one of those categories and were explicitly setting this environment variable, make sure to change its name before building Grapevine.
  3. BREAKING: Change the default port from 8000 to 6167. (f205280)
    • If you relied on the default port being 8000, either update your other configuration to use the new port, or explicitly configure Grapevine's port to 8000.
  4. Improve tracing spans and events. (!11 (a275db3) (merged as 5172f66), !11 (a275db3) (merged as 5172f66), !11 (f556fce) (merged as ac42e0b), !18, !26, !50, !52, !54, !56, !69, !102)
  5. Stop returning unnecessary member counts from /_matrix/client/{r0,v3}/sync. (!12)
  6. BREAKING: Allow federation by default. (!24)
    • If you relied on federation being disabled by default, make sure to explicitly disable it before upgrading.
  7. BREAKING: Remove the [global] section from the configuration file. (!38)
    • Details on how to migrate can be found in the merge request's description.
  8. BREAKING: Allow specifying multiple transport listeners in the configuration file. (!39)
    • Details on how to migrate can be found in the merge request's description.
  9. Increase default log level so that span information is included. (!50)
  10. BREAKING: Reorganize config into sections. (!49)
    • Details on how to migrate can be found in the merge request's description.
  11. Try to generate thumbnails for remote media ourselves if the federation thumbnail request fails. (!58)
  12. BREAKING: Disable unauthenticated access to media by default, set the serve_media_unauthenticated config option to true to enable it. (!103)
  13. BREAKING: Split CLI into multiple subcommands. The CLI invocation to run the server is now behind the serve command, so grapevine --config ... becomes grapevine serve --config .... (!108)

Fixed

  1. Fix questionable numeric conversions. (71c48f6)
  2. Stop sending no-longer-valid cached responses from the /_matrix/client/{r0,v3}/sync endpoints. (!7)
  3. Stop returning extra E2EE device updates from /_matrix/client/{r0,v3}/sync as that violates the specification. (!12)
  4. Make certain membership state transitions work correctly again. (!16)
    • For example, it was previously impossible to unban users from rooms.
  5. Ensure that tracing-flame flushes all its data before the process exits. (!20 (263edcc))
  6. Reduce the likelihood of locking up the async runtime. (!19)
  7. Fix dynamically linked jemalloc builds. (!23)
  8. Fix search results not including subsequent pages in certain situations. (!35 (0cdf032))
  9. Fix search results missing events in subsequent pages in certain situations. (!35 (3551a6e))
  10. Only process admin commands if the admin bot is in the admin room. (!43)
  11. Fix bug where invalid account data from a client could prevent a user from joining any upgraded rooms and brick rooms that affected users attempted to upgrade. (!53)
  12. Fix bug where unexpected keys were deleted from m.direct account data events when joining an upgraded room. (!53)
  13. Fixed appservice users not receiving federated invites if the local server isn't already resident in the room (!80)
  14. Fix bug where, if a server has multiple public keys, only one would be fetched. (!78)
  15. Fix bug where expired keys may not be re-fetched in some scenarios. (!78)
  16. Fix bug where signing keys would not be fetched when joining a room if we hadn't previously seen any signing keys from that server. (!87)
  17. Fixed bug (#48) that caused us to attempt to fetch our own signing keys from ourselves over federation, and fail ("Won't send federation request to ourselves"). (!96)
  18. Fixed incoming HTTP/2 requests failing federation signature check. (!104)

Added

  1. Add various conveniences for users of the Nix package. (51f9650, bbb1a6f)
  2. Add a NixOS module. (33e7a46)
  3. Add a Conduit compat mode. (a25f2ec)
    • BREAKING: If you're migrating from Conduit, this option must be enabled or else your homeserver will refuse to start.
  4. Include GRAPEVINE_VERSION_EXTRA information in the /_matrix/federation/v1/version endpoint. (509b70b)
  5. Allow multiple tracing subscribers to be active at once. (!20 (7a154f74))
  6. Allow configuring the filter for tracing-flame. (!20 (507de06))
  7. Collect HTTP response time metrics via OpenTelemetry and optionally expose them as Prometheus metrics. This functionality is disabled by default. (!22)
  8. Collect metrics for lookup results (e.g. cache hits/misses). (!15, !36)
  9. Add configuration options for controlling the log format and colors. (!46)
  10. Recognize the !admin prefix to invoke admin commands. (!45)
  11. Add the set-tracing-filter admin command to change log/metrics/flame filters dynamically at runtime. (!49)
  12. Add more configuration options. (!49)
    • observability.traces.filter: The tracing filter to use for OpenTelemetry traces.
    • observability.traces.endpoint: Where OpenTelemetry should send traces.
    • observability.flame.filter: The tracing filter for tracing-flame.
    • observability.flame.filename: Where tracing-flame will write its output.
    • observability.logs.timestamp: Whether timestamps should be included in the logs.
  13. Support building nix packages without IFD (!73)
  14. Report local users getting banned in the server logs and admin room. (!65, !84)
  15. Added support for Authenticated Media (MSC3916). (!58, !111)
  16. BREAKING: Added support for configuring and serving /.well-known/matrix/... data. (!90, !94)
    • The server_discovery.client.base_url option is now required.
  17. Added support for configuring old verify/signing keys in config (federation.old_verify_keys) (!96)
  18. Added admin commands to delete media (!99, !102)