{"parents": [], "prev": {"link": "../", "title": "RB Gateway Release Notes"}, "next": {"link": "../1.0/", "title": "RB Gateway 1.0 Release Notes"}, "title": "RB Gateway 2.0 Release Notes", "meta": null, "body": "
\n

# RB Gateway 2.0 Release Notes\u00b6

\n

Release date: May 26, 2026

\n
\n

## New Features\u00b6

\n

\n

- Added support for bcrypt-encoded passwords in the htpasswd file.

  \n

  Plain-text passwords continue to work, but bcrypt hashes are now the\nrecommended way to store credentials. These can be created with\nhtpasswd -B.

  \n
\n

- Added a configurable timeout on outbound webhook deliveries.

  \n

  Previously, a slow or unresponsive Review Board server (or any other\nwebhook target) could tie up rb-gateway goroutines indefinitely. Webhook\nHTTP requests now time out so transient networking issues no longer back\nup the service.

  \n
\n

- Switched logging over to structured logging via `slog`.

  \n

  Log records now carry key/value fields rather than free-form strings,\nmaking them easier to parse and forward to log aggregators.

  \n
\n

\n
\n
\n

## Bug Fixes\u00b6

\n

\n

- Fixed a crash when listing branches for Mercurial repositories with no\nbookmarks. (Bug #4792)

\n

- Fixed startup when `webhooks.json` is missing or empty.

  \n

  rb-gateway used to fail to start if the configured webhook store file\ndid not exist. It will now start with an empty webhook store in this\ncase. (Bug #4721)

  \n
\n

- Fixed parsing of empty `tokens.dat` files.

  \n

  An empty token store file is now treated as an empty store rather than\na parse error.

  \n
\n

\n
\n
\n

## Modernization and Internals\u00b6

\n

A large portion of this release is internal cleanup that reduces the\nexternal dependency footprint and brings the codebase up to modern Go\nconventions. None of these should be visible to users of the service:

\n

\n

- Replaced `gorilla/mux` with the standard library\u2019s\n`net/http.ServeMux`.

\n

- Replaced `kingpin` with the standard library\u2019s `flag` package for\nCLI argument parsing.

\n

- Replaced `go-http-auth` with a custom HTTP Basic auth middleware.

\n

- Replaced the unmaintained `gohg` package with direct invocation of\nthe `hg` command.

\n

- Replaced the deprecated `io/ioutil` APIs with their modern\nequivalents (`io.ReadAll`, `os.ReadFile`, `os.WriteFile`,\n`os.MkdirTemp`, `os.CreateTemp`).

\n

- Updated `go-git` and other dependencies to address several published\nCVEs and a runtime-panic advisory in `go-git` 5.17.0.

\n

\n
\n
\n

## Contributors\u00b6

\n

\n

- Beth Rennie

\n

- Christian Hammond

\n

- David Trowbridge

\n

- Michelle Aubin

\n

\n
\n
\n", "metatags": "\n", "rellinks": [["genindex", "General Index", "I", "index"], ["1.0", "RB Gateway 1.0 Release Notes", "N", "next"], ["index", "RB Gateway Release Notes", "P", "previous"]], "sourcename": "2.0.rst.txt", "toc": "

\n
- RB Gateway 2.0 Release Notes
  \n
  - New Features
  \n
  - Bug Fixes
  \n
  - Modernization and Internals
  \n
  - Contributors
  \n
  \n
\n

\n", "display_toc": true, "page_source_suffix": ".rst", "current_page_name": "2.0", "sidebars": ["localtoc.html", "relations.html", "sourcelink.html", "searchbox.html"], "alabaster_version": "0.7.16", "alabaster_version_info": [0, 7, 16]}