# ruru

## 2.0.0-beta.29

### Patch Changes

- [`ce9dd46`](https://github.com/graphile/crystal/commit/ce9dd46bd0625ab23ee0f728baec0479149ef895)
  Thanks [@benjie](https://github.com/benjie)! - Fix the sidebar border in
  collapsed mode

## 2.0.0-beta.28

### Patch Changes

- [#2646](https://github.com/graphile/crystal/pull/2646)
  [`59adcd5`](https://github.com/graphile/crystal/commit/59adcd52d3fd465c8d6afdcefaa41c82c9a77319)
  Thanks [@benjie](https://github.com/benjie)! - Add condensed mode for Ruru,
  enabled by default. (To disable, use the settings cog in the editor view and
  uncheck condensed.)

- [#2645](https://github.com/graphile/crystal/pull/2645)
  [`f941cfd`](https://github.com/graphile/crystal/commit/f941cfdcc8235e34716d3595745a05e49267de12)
  Thanks [@benjie](https://github.com/benjie)! - Upgrade GraphiQL to latest
  release

## 2.0.0-beta.27

### Patch Changes

- [`a31dc7c`](https://github.com/graphile/crystal/commit/a31dc7ce30cea33fdbecb7fbe4f9c70f24d8a318)
  Thanks [@benjie](https://github.com/benjie)! - Fix URLs in README

- [#2636](https://github.com/graphile/crystal/pull/2636)
  [`ba8dacb`](https://github.com/graphile/crystal/commit/ba8dacb1ef93f79a61622ea7581cce4e593243bc)
  Thanks [@benjie](https://github.com/benjie)! - Improve backwards compatibility
  of ruruHTML function; explicitly deprecate the htmlParts argument.

## 2.0.0-beta.26

### Patch Changes

- [#2629](https://github.com/graphile/crystal/pull/2629)
  [`c5cc0ba`](https://github.com/graphile/crystal/commit/c5cc0ba6228c754bca60219d78ca1bc1b10759ca)
  Thanks [@benjie](https://github.com/benjie)! - Fix loading worker scripts from
  remote URLs.

- [#2631](https://github.com/graphile/crystal/pull/2631)
  [`506b7a1`](https://github.com/graphile/crystal/commit/506b7a16bbdee72b0ac41eb3f3235775d629be6c)
  Thanks [@benjie](https://github.com/benjie)! - Add a `ruru.html` file you can
  self-host, and move Ruru documentation to the website for easier navigation

- [#2632](https://github.com/graphile/crystal/pull/2632)
  [`418190a`](https://github.com/graphile/crystal/commit/418190a04169fdd01e166ae30fa764098bb34249)
  Thanks [@benjie](https://github.com/benjie)! - Ruru loading state now matches
  expected theme (light/dark).

## 2.0.0-beta.25

### Patch Changes

- [#2578](https://github.com/graphile/crystal/pull/2578)
  [`1d76d2f`](https://github.com/graphile/crystal/commit/1d76d2f0d19b4d56895ee9988440a35d2c60f9f9)
  Thanks [@benjie](https://github.com/benjie)! - 🚨 **Ruru has been "rebuilt"!
  The loading methods and APIs have changed!**

  Ruru is now built on top of GraphiQL v5, which moves to using the Monaco
  editor (the same editor used in VSCode) enabling more familiar keybindings and
  more features (e.g. press F1 in the editor to see the command palette, and you
  can now add comments in the variables JSON). This has required a
  rearchitecture to Ruru's previously "single file" approach since Monaco uses
  workers which require additional files.

  In this release we have embraced the bundle splitting approach. We now bundle
  both `prettier` and `mermaid`, and they are now loaded on-demand.

  Usage instructions for all environments have had to change since we can no
  longer serve Ruru as a single HTML file. We now include helpers for serving
  Ruru's static files from whatever JS-based webserver you are using.

  We've also added some additional improvements:
  - Formatting with prettier now maintains the cursor position
    (`Ctrl-Shift-P`/`Meta-Shift-P`/`Cmd-Shift-P` depending on platform)
  - All editors are now formatted, not just the GraphQL editor
  - Prettier and mermaid should now work offline
  - Even more GraphiQL props are now passed through, including
    `inputValueDeprecation` and `schemaDeprecation` which you can set to false
    if your GraphQL server is, _ahem_, a little behind the GraphQL spec draft.

  🚨 **Changes you need to make:** 🚨
  - If you are using Ruru directly (i.e. importing from `ruru/server`), please
    see the new Ruru README for setup instructions, you'll want to switch out
    your previous setup. In particular, `ruru/bundle` no longer exists and you
    now need to serve the static files (via `ruru/static`).
  - `defaultHTMLParts` is no more; instead `config.htmlParts` (also
    `preset.ruru.htmlParts` for Graphile Config users) now allows the entries to
    be callback functions reducing boilerplate:
    ```diff
    -import { defaultHTMLParts } from "ruru/server";
     const config = {
       htmlParts: {
    -    metaTags: defaultHTMLParts.metaTags + "<!-- local override -->",
    +    metaTags: (base) => base + "<!-- local override -->",
       }
     }
    ```
    (alternatively you can use `makeHTMLParts(config)`)
  - Grafserv users: `plugin.grafserv.middleware.ruruHTMLParts` is renamed to
    `ruruHTML` and wraps the generation of the HTML - simply trim `Parts` from
    the name and be sure calling `next()` is the final line of the function
    ```diff
     const plugin = {
       grafserv: {
         middleware: {
    -      ruruHTMLParts(next, event) {
    +      ruruHTML(next, event) {
             const { htmlParts, request } = event;
             htmlParts.titleTag = `<title>${escapeHTML(
               "Ruru | " + request.getHeader("host"),
             )}</title>`;
             return next();
           },
         },
       },
     };
    ```

  Additional changes:
  - `RuruConfig.clientConfig` has been added for props to explicitly pass to
    Ruru making it explicit that these will be sent to the client
  - `RuruServerConfig` has deprecated the client options `editorTheme`,
    `debugTools` and `eventSourceInit` at the top level; instead these should be
    passed via `RuruServerConfig.clientConfig` making it explicit these will be
    sent to the client and expanding to cover more props
    ```diff
     const config = {
       endpoint: "/graphql",
    +  clientConfig: {
       editorTheme: "dark",
    +  },
     }
    ```

- [#2605](https://github.com/graphile/crystal/pull/2605)
  [`24d379a`](https://github.com/graphile/crystal/commit/24d379ae4b8a3c0afe3f1a309d87806a05e8d00d)
  Thanks [@benjie](https://github.com/benjie)! - Add defaultTheme and
  forcedTheme props to Ruru (passed through to GraphiQL)

- [#2600](https://github.com/graphile/crystal/pull/2600)
  [`ad588ec`](https://github.com/graphile/crystal/commit/ad588ecde230359f56800e414b7c5fa1aed14957)
  Thanks [@benjie](https://github.com/benjie)! - Mark all
  peerDependencies=dependencies modules as optional peerDependencies to make
  pnpm marginally happier hopefully.

## 2.0.0-beta.24

### Patch Changes

- [#2584](https://github.com/graphile/crystal/pull/2584)
  [`00b3b8b`](https://github.com/graphile/crystal/commit/00b3b8baea55f0f8cb90c769baf63b408a593182)
  Thanks [@benjie](https://github.com/benjie)! - Upgrade to GraphiQL v4. 🚨
  Change `graphiql/graphiql.css` to `graphiql/style.css` and
  `@graphiql/plugin-explorer/dist/style.css` to
  `@graphiql/plugin-explorer/style.css`

- [#2577](https://github.com/graphile/crystal/pull/2577)
  [`0c6b1f1`](https://github.com/graphile/crystal/commit/0c6b1f1e188f6e2913832adfed9ca76dfdc25c47)
  Thanks [@benjie](https://github.com/benjie)! - Update dependencies

- [#2582](https://github.com/graphile/crystal/pull/2582)
  [`826f2cb`](https://github.com/graphile/crystal/commit/826f2cbff651273098d6b0d8c343aefeacfb5a14)
  Thanks [@benjie](https://github.com/benjie)! - Fix button-in-button warning
  from ToolbarMenu

- [#2585](https://github.com/graphile/crystal/pull/2585)
  [`5311f9c`](https://github.com/graphile/crystal/commit/5311f9c8206fb3287b6aae6c4e7668ae920a4441)
  Thanks [@benjie](https://github.com/benjie)! - Upgrade to React 19

- [#2583](https://github.com/graphile/crystal/pull/2583)
  [`faee38b`](https://github.com/graphile/crystal/commit/faee38bbff0421bbccfaa77c0dffa5c2d44e2b92)
  Thanks [@benjie](https://github.com/benjie)! - 🚨 Upgrade to graphql-ws v6

- Updated dependencies
  [[`0c6b1f1`](https://github.com/graphile/crystal/commit/0c6b1f1e188f6e2913832adfed9ca76dfdc25c47),
  [`e0cdabe`](https://github.com/graphile/crystal/commit/e0cdabe25c8894da550546c93bc03b895585544c)]:
  - graphile-config@0.0.1-beta.17

## 2.0.0-beta.23

### Patch Changes

- [#2444](https://github.com/graphile/crystal/pull/2444)
  [`192a27e08763ea26607344a2ea6c7f5c595cc2a3`](https://github.com/graphile/crystal/commit/192a27e08763ea26607344a2ea6c7f5c595cc2a3)
  Thanks [@benjie](https://github.com/benjie)! - Upgrade to Mermaid 11, and
  reduce verbosity of polymorphism in plan diagrams.

- [#2546](https://github.com/graphile/crystal/pull/2546)
  [`997c49648b62a93e5b915c65c49cdad1654bef3e`](https://github.com/graphile/crystal/commit/997c49648b62a93e5b915c65c49cdad1654bef3e)
  Thanks [@benjie](https://github.com/benjie)! - Fix issue where ruru wasn't
  hiding explain output in incremental delivery results.
- Updated dependencies
  [[`459e1869a2ec58925b2bac5458af487c52a8ca37`](https://github.com/graphile/crystal/commit/459e1869a2ec58925b2bac5458af487c52a8ca37)]:
  - graphile-config@0.0.1-beta.16

## 2.0.0-beta.22

### Patch Changes

- [#2426](https://github.com/graphile/crystal/pull/2426)
  [`658d46c9a5b246e3beb4ba2a004334278f7bb24d`](https://github.com/graphile/crystal/commit/658d46c9a5b246e3beb4ba2a004334278f7bb24d)
  Thanks [@benjie](https://github.com/benjie)! - Upgrade GraphiQL and fix
  duplicate module issue

## 2.0.0-beta.21

### Patch Changes

- Updated dependencies
  [[`00d79e6f5608affc3f36bb0ce4ca2547230174e7`](https://github.com/graphile/crystal/commit/00d79e6f5608affc3f36bb0ce4ca2547230174e7)]:
  - graphile-config@0.0.1-beta.15

## 2.0.0-beta.20

### Patch Changes

- [#2365](https://github.com/graphile/crystal/pull/2365)
  [`ba2847f3e`](https://github.com/graphile/crystal/commit/ba2847f3e87b3c081e4b9fc4e62a81cc8bd8bb15)
  Thanks [@benjie](https://github.com/benjie)! - `ruru/server` no longer uses
  `fs` module to read data/version from disk, instead data is bundled in source
  files. This may aid people attempting to bundle ruru.

## 2.0.0-beta.19

### Patch Changes

- Updated dependencies
  [[`83c546509`](https://github.com/graphile/crystal/commit/83c546509d24be2955a56120981363ad3c3a5f3f)]:
  - graphile-config@0.0.1-beta.14

## 2.0.0-beta.18

### Patch Changes

- Updated dependencies
  [[`7580bc16a`](https://github.com/graphile/crystal/commit/7580bc16a050fd8d916c6dabe9d1ded980090349)]:
  - graphile-config@0.0.1-beta.13

## 2.0.0-beta.17

### Patch Changes

- [#2266](https://github.com/graphile/crystal/pull/2266)
  [`38163c86a`](https://github.com/graphile/crystal/commit/38163c86ae628fed84cf38fc6a1cc76a7bc7932a)
  Thanks [@hos](https://github.com/hos)! - Fix white-screen-of-death caused by
  EventSource disconnection. Instead, handle errors gracefully. Also, allow
  overriding of the EventSource configuration options.
- Updated dependencies
  [[`d13b76f0f`](https://github.com/graphile/crystal/commit/d13b76f0fef2a58466ecb44880af62d25910e83e),
  [`b167bd849`](https://github.com/graphile/crystal/commit/b167bd8499be5866b71bac6594d55bd768fda1d0),
  [`6a13ecbd4`](https://github.com/graphile/crystal/commit/6a13ecbd45534c39c846c1d8bc58242108426dd1)]:
  - graphile-config@0.0.1-beta.12

## 2.0.0-beta.16

### Patch Changes

- Updated dependencies
  [[`5626c7d36`](https://github.com/graphile/crystal/commit/5626c7d3649285e11fe9857dfa319d2883d027eb)]:
  - graphile-config@0.0.1-beta.11

## 2.0.0-beta.15

### Patch Changes

- Updated dependencies
  [[`cc0941731`](https://github.com/graphile/crystal/commit/cc0941731a1679bc04ce7b7fd4254009bb5f1f62),
  [`8b472cd51`](https://github.com/graphile/crystal/commit/8b472cd51cd66d8227f9f2722d09c0a774792b0f),
  [`9cd9bb522`](https://github.com/graphile/crystal/commit/9cd9bb5222a9f0398ee4b8bfa4f741b6de2a2192)]:
  - graphile-config@0.0.1-beta.10

## 2.0.0-beta.14

### Patch Changes

- [#2125](https://github.com/graphile/crystal/pull/2125)
  [`18addb385`](https://github.com/graphile/crystal/commit/18addb3852525aa91019a36d58fa2fecd8b5b443)
  Thanks [@benjie](https://github.com/benjie)! - Change how unary steps are
  rendered to plan diagrams, fixing the rendering of side-effect steps.

- [#2124](https://github.com/graphile/crystal/pull/2124)
  [`cf535c210`](https://github.com/graphile/crystal/commit/cf535c21078da06c14dd12f30e9b4378da4ded03)
  Thanks [@benjie](https://github.com/benjie)! - Render implicit side effects as
  dependencies on plan diagram

## 2.0.0-beta.13

### Patch Changes

- Updated dependencies
  [[`582bd768f`](https://github.com/graphile/crystal/commit/582bd768fec403ce3284f293b85b9fd86e4d3f40)]:
  - graphile-config@0.0.1-beta.9

## 2.0.0-beta.12

### Patch Changes

- Updated dependencies
  [[`db8ceed0f`](https://github.com/graphile/crystal/commit/db8ceed0f17923eb78ff09c9f3f28800a5c7e3b6)]:
  - graphile-config@0.0.1-beta.8

## 2.0.0-beta.11

### Patch Changes

- [#1931](https://github.com/graphile/crystal/pull/1931)
  [`941e28003`](https://github.com/graphile/crystal/commit/941e280038a735014a9fe4e24fc534a197fac0f2)
  Thanks [@benjie](https://github.com/benjie)! - Add support for deprecated
  arguments to Ruru.

- [#1931](https://github.com/graphile/crystal/pull/1931)
  [`068be2f51`](https://github.com/graphile/crystal/commit/068be2f51d7a9c17311f26c6c9451985397c9e1f)
  Thanks [@benjie](https://github.com/benjie)! - Fix issue typing into Ruru
  explorer plugin - characters no longer overwritten.

- Updated dependencies
  [[`5de3e86eb`](https://github.com/graphile/crystal/commit/5de3e86eba1ddfe5e07732d0325c63e5d72d4b5b)]:
  - graphile-config@0.0.1-beta.7

## 2.0.0-beta.10

### Patch Changes

- Updated dependencies
  [[`0df5511ac`](https://github.com/graphile/crystal/commit/0df5511ac8b79ea34f8d12ebf8feeb421f8fe971)]:
  - graphile-config@0.0.1-beta.6

## 2.0.0-beta.9

### Patch Changes

- [#1877](https://github.com/graphile/crystal/pull/1877)
  [`8a0cdb95f`](https://github.com/graphile/crystal/commit/8a0cdb95f200b28b0ea1ab5caa12b23dce5f374f)
  Thanks [@benjie](https://github.com/benjie)! - Move 'declare global' out of
  'interfaces.ts' and into 'index.ts' or equivalent. Should make TypeScript more
  aware of these types.
- Updated dependencies
  [[`8a0cdb95f`](https://github.com/graphile/crystal/commit/8a0cdb95f200b28b0ea1ab5caa12b23dce5f374f)]:
  - graphile-config@0.0.1-beta.5

## 2.0.0-beta.8

### Patch Changes

- Updated dependencies
  [[`7aef73319`](https://github.com/graphile/crystal/commit/7aef73319a8a147c700727be62427e1eefdefbf8)]:
  - graphile-config@0.0.1-beta.4

## 2.0.0-beta.7

### Patch Changes

- [#1799](https://github.com/graphile/crystal/pull/1799)
  [`3dd5d86d6`](https://github.com/graphile/crystal/commit/3dd5d86d6c1ea7ba106c08e8a315ec47ed6cfa2d)
  Thanks [@jvandermey](https://github.com/jvandermey)! - Can now pass onEdit
  callbacks through the Ruru config via the plugin system; e.g. to update the
  URL search params with the current editor state.

## 2.0.0-beta.6

### Patch Changes

- [#1796](https://github.com/graphile/crystal/pull/1796)
  [`ebb0b817e`](https://github.com/graphile/crystal/commit/ebb0b817e3efe210445d3f3396ff4bc53ebab3e7)
  Thanks [@benjie](https://github.com/benjie)! - Can now set initial query and
  variables in Ruru via the plugin system; e.g. to set query/variables based on
  query string.

## 2.0.0-beta.5

### Patch Changes

- [#514](https://github.com/graphile/crystal-pre-merge/pull/514)
  [`c9848f693`](https://github.com/graphile/crystal-pre-merge/commit/c9848f6936a5abd7740c0638bfb458fb5551f03b)
  Thanks [@benjie](https://github.com/benjie)! - Update package.json repository
  information

- Updated dependencies
  [[`c9848f693`](https://github.com/graphile/crystal-pre-merge/commit/c9848f6936a5abd7740c0638bfb458fb5551f03b)]:
  - graphile-config@0.0.1-beta.3

## 2.0.0-beta.4

### Patch Changes

- [`4c39d7c0b`](https://github.com/benjie/crystal/commit/4c39d7c0bae5acb6ae79cc1fec0a1eabdd40a234)
  Thanks [@benjie](https://github.com/benjie)! - Bump - npm broke the publish?

## 2.0.0-beta.3

### Patch Changes

- [#496](https://github.com/benjie/crystal/pull/496)
  [`c9bfd9892`](https://github.com/benjie/crystal/commit/c9bfd989247f9433fb5b18c5175c9d8d64cd21a1)
  Thanks [@benjie](https://github.com/benjie)! - Update dependencies (sometimes
  through major versions).

- [#496](https://github.com/benjie/crystal/pull/496)
  [`1867d365f`](https://github.com/benjie/crystal/commit/1867d365f360ac8411f622b0813ca76a19ab4013)
  Thanks [@benjie](https://github.com/benjie)! - Ruru now runs on React 18

- [#496](https://github.com/benjie/crystal/pull/496)
  [`c747d91e9`](https://github.com/benjie/crystal/commit/c747d91e9646409c66e73c12195dbf6cbd97b211)
  Thanks [@benjie](https://github.com/benjie)! - Modules converted to ESM to fix
  compatibility with GraphiQL.

- Updated dependencies
  [[`c9bfd9892`](https://github.com/benjie/crystal/commit/c9bfd989247f9433fb5b18c5175c9d8d64cd21a1)]:
  - graphile-config@0.0.1-beta.2

## 2.0.0-beta.2

### Patch Changes

- [#488](https://github.com/benjie/crystal/pull/488)
  [`9f82b8612`](https://github.com/benjie/crystal/commit/9f82b861206fdd2b8a7c50ba5184112dfb57b54a)
  Thanks [@benjie](https://github.com/benjie)! - Fix detection of SQL aliases

## 2.0.0-beta.1

### Patch Changes

- [`cbd987385`](https://github.com/benjie/crystal/commit/cbd987385f99bd1248bc093ac507cc2f641ba3e8)
  Thanks [@benjie](https://github.com/benjie)! - Bump all packages to beta

- Updated dependencies
  [[`cbd987385`](https://github.com/benjie/crystal/commit/cbd987385f99bd1248bc093ac507cc2f641ba3e8)]:
  - graphile-config@0.0.1-beta.1

## 2.0.0-alpha.11

### Patch Changes

- Updated dependencies
  [[`a22830b2f`](https://github.com/benjie/crystal/commit/a22830b2f293b50a244ac18e1601d7579b450c7d)]:
  - graphile-config@0.0.1-alpha.7

## 2.0.0-alpha.10

### Patch Changes

- [#418](https://github.com/benjie/crystal/pull/418)
  [`9ab2adba2`](https://github.com/benjie/crystal/commit/9ab2adba2c146b5d1bc91bbb2f25e4645ed381de)
  Thanks [@benjie](https://github.com/benjie)! - Overhaul peerDependencies and
  dependencies to try and eliminate duplicate modules error.

## 2.0.0-alpha.9

### Patch Changes

- Updated dependencies
  [[`675b7abb9`](https://github.com/benjie/crystal/commit/675b7abb93e11d955930b9026fb0b65a56ecc999),
  [`c5050dd28`](https://github.com/benjie/crystal/commit/c5050dd286bd6d9fa4a5d9cfbf87ba609cb148dd),
  [`0d1782869`](https://github.com/benjie/crystal/commit/0d1782869adc76f5bbcecfdcbb85a258c468ca37)]:
  - graphile-config@0.0.1-alpha.6

## 2.0.0-alpha.8

### Patch Changes

- Updated dependencies
  [[`644938276`](https://github.com/benjie/crystal/commit/644938276ebd48c5486ba9736a525fcc66d7d714)]:
  - graphile-config@0.0.1-alpha.5

## 2.0.0-alpha.7

### Patch Changes

- [#399](https://github.com/benjie/crystal/pull/399)
  [`409581534`](https://github.com/benjie/crystal/commit/409581534f41ac2cf0ff21c77c2bcd8eaa8218fd)
  Thanks [@benjie](https://github.com/benjie)! - Change many of the dependencies
  to be instead (or also) peerDependencies, to avoid duplicate modules.

## 2.0.0-alpha.6

### Patch Changes

- Updated dependencies
  [[`198ac74d5`](https://github.com/benjie/crystal/commit/198ac74d52fe1e47d602fe2b7c52f216d5216b25)]:
  - graphile-config@0.0.1-alpha.4

## 2.0.0-alpha.5

### Patch Changes

- Updated dependencies
  [[`adc7ae5e0`](https://github.com/benjie/crystal/commit/adc7ae5e002961c8b8286500527752f21139ab9e)]:
  - graphile-config@0.0.1-alpha.3

## 2.0.0-alpha.4

### Patch Changes

- [`f34bd5a3c`](https://github.com/benjie/crystal/commit/f34bd5a3c353693b86a0307357a3620110700e1c)
  Thanks [@benjie](https://github.com/benjie)! - Address dependency issues.

## 2.0.0-alpha.3

### Patch Changes

- [`2fe247f75`](https://github.com/benjie/crystal/commit/2fe247f751377e18b3d6809cba39a01aa1602dbc)
  Thanks [@benjie](https://github.com/benjie)! - Added ability to download
  mermaid plan diagram as SVG.

- [`7f857950a`](https://github.com/benjie/crystal/commit/7f857950a7e4ec763c936eb6bd1fb77824041d71)
  Thanks [@benjie](https://github.com/benjie)! - Upgrade to the latest
  TypeScript/tslib

- Updated dependencies
  [[`7f857950a`](https://github.com/benjie/crystal/commit/7f857950a7e4ec763c936eb6bd1fb77824041d71)]:
  - graphile-config@0.0.1-alpha.2

## 2.0.0-alpha.2

### Patch Changes

- [#305](https://github.com/benjie/crystal/pull/305)
  [`3cf35fdb4`](https://github.com/benjie/crystal/commit/3cf35fdb41d08762e9ff838a55dd7fc6004941f8)
  Thanks [@benjie](https://github.com/benjie)! - 🚨 Ruru is now a CommonJS
  module, no longer an ESM module.

  Ruru CLI now reads options from a `graphile.config.ts` file if present.

  It's now possible to customize the HTML that Ruru is served with (specifically
  the meta, title, stylesheets, header JS, body content, body JS, and init
  script), either via configuration:

  ```ts
  import { defaultHTMLParts } from "ruru/server";

  const preset: GraphileConfig.Preset = {
    //...
    ruru: {
      htmlParts: {
        titleTag: "<title>GraphiQL with Grafast support - Ruru!</title>",
        metaTags:
          defaultHTMLParts.metaTags +
          `<meta name="viewport" content="width=device-width, initial-scale=1" />`,
      },
    },
  };
  ```

  or via a plugin, which allows you to change it on a per-request (per-user)
  basis:

  ```ts
  const RuruMetaPlugin: GraphileConfig.Plugin = {
    name: "RuruMetaPlugin",
    version: "0.0.0",
    grafserv: {
      hooks: {
        ruruHTMLParts(_info, parts, extra) {
          // extra.request gives you access to request details, so you can customize `parts` for the user

          parts.metaTags += `<meta name="viewport" content="width=device-width, initial-scale=1" />`;
        },
      },
    },
  };
  ```

## 2.0.0-alpha.1

### Patch Changes

- [`759ad403d`](https://github.com/benjie/crystal/commit/759ad403d71363312c5225c165873ae84b8a098c)
  Thanks [@benjie](https://github.com/benjie)! - Alpha release - see
  https://postgraphile.org/news/2023-04-26-version-5-alpha

- Updated dependencies
  [[`759ad403d`](https://github.com/benjie/crystal/commit/759ad403d71363312c5225c165873ae84b8a098c)]:
  - graphile-config@0.0.1-alpha.1

## 2.0.0-1.2

### Patch Changes

- Updated dependencies
  [[`b4eaf89f4`](https://github.com/benjie/crystal/commit/b4eaf89f401ca207de08770361d07903f6bb9cb0)]:
  - graphile-config@0.0.1-1.2

## 2.0.0-1.1

### Patch Changes

- [#267](https://github.com/benjie/crystal/pull/267)
  [`159735204`](https://github.com/benjie/crystal/commit/15973520462d4a95e3cdf04fdacfc71ca851122f)
  Thanks [@benjie](https://github.com/benjie)! - Add formatting for SQL aliases

- [#260](https://github.com/benjie/crystal/pull/260)
  [`d5312e6b9`](https://github.com/benjie/crystal/commit/d5312e6b968fbeb46d074b82a41b4bdbc166598c)
  Thanks [@benjie](https://github.com/benjie)! - TypeScript v5 is now required

- Updated dependencies
  [[`d5312e6b9`](https://github.com/benjie/crystal/commit/d5312e6b968fbeb46d074b82a41b4bdbc166598c)]:
  - graphile-config@0.0.1-1.1

## 2.0.0-0.13

### Patch Changes

- [`612092359`](undefined) - Fix header saving

## 2.0.0-0.12

### Patch Changes

- Updated dependencies
  [[`11e7c12c5`](https://github.com/benjie/crystal/commit/11e7c12c5a3545ee24b5e39392fbec190aa1cf85)]:
  - graphile-config@0.0.1-0.6

## 2.0.0-0.11

### Patch Changes

- [#229](https://github.com/benjie/crystal/pull/229)
  [`b795b3da5`](https://github.com/benjie/crystal/commit/b795b3da5f8e8f13c495be3a8cf71667f3d149f8)
  Thanks [@benjie](https://github.com/benjie)! - Upgrade GraphiQL, gaining the
  watch mode fix.

## 2.0.0-0.10

### Patch Changes

- [#200](https://github.com/benjie/crystal/pull/200)
  [`e11698473`](https://github.com/benjie/crystal/commit/e1169847303790570bfafa07eb25d8fce53a0391)
  Thanks [@benjie](https://github.com/benjie)! - Add support for websocket
  subscriptions to Ruru.

## 2.0.0-0.9

### Patch Changes

- Updated dependencies [[`0ab95d0b1`](undefined)]:
  - graphile-config@0.0.1-0.5

## 2.0.0-0.8

### Patch Changes

- Updated dependencies
  [[`842f6ccbb`](https://github.com/benjie/crystal/commit/842f6ccbb3c9bd0c101c4f4df31c5ed1aea9b2ab)]:
  - graphile-config@0.0.1-0.4

## 2.0.0-0.7

### Patch Changes

- Updated dependencies
  [[`19e2961de`](https://github.com/benjie/crystal/commit/19e2961de67dc0b9601799bba256e4c4a23cc0cb),
  [`11d6be65e`](https://github.com/benjie/crystal/commit/11d6be65e0da489f8ab3e3a8b8db145f8b2147ad)]:
  - graphile-config@0.0.1-0.3

## 2.0.0-0.6

### Patch Changes

- [`a40fa6966`](undefined) - Default to explain enabled. Fix issues with fetcher
  mutating immutable objects. Fix typo in README. Fix playground on grafast
  website.

- [`8f04af08d`](https://github.com/benjie/crystal/commit/8f04af08da68baf7b2b4d508eac0d2a57064da7b)
  Thanks [@benjie](https://github.com/benjie)! - Fix typo in README

## 2.0.0-0.5

### Patch Changes

- [`9b296ba54`](undefined) - More secure, more compatible, and lots of fixes
  across the monorepo

- Updated dependencies [[`9b296ba54`](undefined)]:
  - graphile-config@0.0.1-0.2

## 2.0.0-0.4

### Patch Changes

- [`768f32681`](undefined) - Fix peerDependencies ranges

## 2.0.0-0.3

### Patch Changes

- [`0983df3f6`](undefined) - Downgrade to React 16 to work around npm infinite
  loop bug (npm/cli#5322).

## 2.0.0-0.2

### Patch Changes

- [`d11c1911c`](undefined) - Fix dependencies

- Updated dependencies [[`d11c1911c`](undefined)]:
  - graphile-config@0.0.1-0.1

## 2.0.0-0.1

### Patch Changes

- [`6576bd37b`](undefined) - Fix text colours in dark mode

## 2.0.0-0.0

### Major Changes

- [#125](https://github.com/benjie/crystal/pull/125)
  [`91f2256b3`](https://github.com/benjie/crystal/commit/91f2256b3fd699bec19fc86f1ca79df057e58639)
  Thanks [@benjie](https://github.com/benjie)! - Initial changesets release

### Patch Changes

- Updated dependencies
  [[`91f2256b3`](https://github.com/benjie/crystal/commit/91f2256b3fd699bec19fc86f1ca79df057e58639)]:
  - graphile-config@0.0.1-0.0
