Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(ui): persist all logs #7822

Merged
merged 2 commits into from Mar 25, 2024
Merged

Conversation

chris-olszewski
Copy link
Contributor

@chris-olszewski chris-olszewski commented Mar 22, 2024

Description

This PR changes UI behavior so all task output gets persisted to terminal after the run is finished.

Non-goals of the PR: respecting --output-mode for what logs get persisted.

This PR also ditches the "priority" channel for communicating with the rendering thread. This was intended to avoid a scenario where tasks were producing so many events that it took awhile to get to a "stop" event. In reality this introduces so many race conditions of a "stop" event causing events that happened not to be processed leading to missing information e.g. dropping the last line of task output since the stop event takes priority.

Testing Instructions

Run turbo and verify that logs get persisted under various scenarios:
Cache misses:
Screenshot 2024-03-22 at 1 56 35 PM

Failures (not displaying tasks that didn't start):
Screenshot 2024-03-22 at 1 55 59 PM

Cache hits:
Screenshot 2024-03-22 at 1 55 25 PM

Closes TURBO-2692

Copy link

vercel bot commented Mar 22, 2024

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Updated (UTC)
examples-nonmonorepo ✅ Ready (Inspect) Visit Preview Mar 22, 2024 9:06pm
rust-docs ✅ Ready (Inspect) Visit Preview Mar 22, 2024 9:06pm
8 Ignored Deployments
Name Status Preview Updated (UTC)
examples-basic-web ⬜️ Ignored (Inspect) Mar 22, 2024 9:06pm
examples-designsystem-docs ⬜️ Ignored (Inspect) Mar 22, 2024 9:06pm
examples-gatsby-web ⬜️ Ignored (Inspect) Mar 22, 2024 9:06pm
examples-kitchensink-blog ⬜️ Ignored (Inspect) Mar 22, 2024 9:06pm
examples-native-web ⬜️ Ignored (Inspect) Mar 22, 2024 9:06pm
examples-svelte-web ⬜️ Ignored (Inspect) Mar 22, 2024 9:06pm
examples-tailwind-web ⬜️ Ignored (Inspect) Mar 22, 2024 9:06pm
examples-vite-web ⬜️ Ignored (Inspect) Mar 22, 2024 9:06pm

Copy link
Contributor

🟢 Turbopack Benchmark CI successful 🟢

Thanks

Copy link
Contributor

github-actions bot commented Mar 22, 2024

🟢 CI successful 🟢

Thanks

@chris-olszewski chris-olszewski merged commit 4fac8a6 into main Mar 25, 2024
56 checks passed
@chris-olszewski chris-olszewski deleted the olszewski/feat_ui_persist_all_logs branch March 25, 2024 15:30
chris-olszewski added a commit that referenced this pull request Mar 25, 2024
### Description

With #7822 (and #7805 ) we're using `insert_before` to persist logs.
This can panic (ratatui-org/ratatui#999) if
the viewport fills the entire terminal.

This PR changes our viewport construction so it now takes terminal size
into account. (Previously we always would use 60, even if the terminal
didn't have 60 rows)

### Testing Instructions

Use UI with a terminal that has a height of 60 or less.


Closes TURBO-2695
kodiakhq bot added a commit to weareinreach/TransMascFutures that referenced this pull request Apr 2, 2024
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@crowdin/crowdin-api-client](https://togithub.com/crowdin/crowdin-api-client-js) | [`1.32.0` -> `1.33.0`](https://renovatebot.com/diffs/npm/@crowdin%2fcrowdin-api-client/1.32.0/1.33.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@crowdin%2fcrowdin-api-client/1.33.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@crowdin%2fcrowdin-api-client/1.33.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@crowdin%2fcrowdin-api-client/1.32.0/1.33.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@crowdin%2fcrowdin-api-client/1.32.0/1.33.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@types/node](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)) | [`20.11.30` -> `20.12.2`](https://renovatebot.com/diffs/npm/@types%2fnode/20.11.30/20.12.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fnode/20.12.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fnode/20.12.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fnode/20.11.30/20.12.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fnode/20.11.30/20.12.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@typescript-eslint/eslint-plugin](https://typescript-eslint.io/packages/eslint-plugin) ([source](https://togithub.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin)) | [`7.4.0` -> `7.5.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2feslint-plugin/7.4.0/7.5.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@typescript-eslint%2feslint-plugin/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@typescript-eslint%2feslint-plugin/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@typescript-eslint%2feslint-plugin/7.4.0/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@typescript-eslint%2feslint-plugin/7.4.0/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@typescript-eslint/parser](https://typescript-eslint.io/packages/parser) ([source](https://togithub.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser)) | [`7.4.0` -> `7.5.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/7.4.0/7.5.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@typescript-eslint%2fparser/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@typescript-eslint%2fparser/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@typescript-eslint%2fparser/7.4.0/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@typescript-eslint%2fparser/7.4.0/7.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [eslint-plugin-turbo](https://togithub.com/vercel/turbo) ([source](https://togithub.com/vercel/turbo/tree/HEAD/packages/eslint-plugin-turbo)) | [`1.13.0` -> `1.13.1`](https://renovatebot.com/diffs/npm/eslint-plugin-turbo/1.13.0/1.13.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/eslint-plugin-turbo/1.13.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/eslint-plugin-turbo/1.13.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/eslint-plugin-turbo/1.13.0/1.13.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint-plugin-turbo/1.13.0/1.13.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [i18next-browser-languagedetector](https://togithub.com/i18next/i18next-browser-languageDetector) | [`7.2.0` -> `7.2.1`](https://renovatebot.com/diffs/npm/i18next-browser-languagedetector/7.2.0/7.2.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/i18next-browser-languagedetector/7.2.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/i18next-browser-languagedetector/7.2.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/i18next-browser-languagedetector/7.2.0/7.2.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/i18next-browser-languagedetector/7.2.0/7.2.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [listr2](https://togithub.com/listr2/listr2) | [`8.1.1` -> `8.1.3`](https://renovatebot.com/diffs/npm/listr2/8.1.1/8.1.3) | [![age](https://developer.mend.io/api/mc/badges/age/npm/listr2/8.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/listr2/8.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/listr2/8.1.1/8.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/listr2/8.1.1/8.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [pnpm](https://pnpm.io) ([source](https://togithub.com/pnpm/pnpm)) | [`8.15.5` -> `8.15.6`](https://renovatebot.com/diffs/npm/pnpm/8.15.5/8.15.6) | [![age](https://developer.mend.io/api/mc/badges/age/npm/pnpm/8.15.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/pnpm/8.15.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/pnpm/8.15.5/8.15.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/pnpm/8.15.5/8.15.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [prettier-plugin-packagejson](https://togithub.com/matzkoh/prettier-plugin-packagejson) | [`2.4.13` -> `2.4.14`](https://renovatebot.com/diffs/npm/prettier-plugin-packagejson/2.4.13/2.4.14) | [![age](https://developer.mend.io/api/mc/badges/age/npm/prettier-plugin-packagejson/2.4.14?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/prettier-plugin-packagejson/2.4.14?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/prettier-plugin-packagejson/2.4.13/2.4.14?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/prettier-plugin-packagejson/2.4.13/2.4.14?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [turbo](https://turbo.build/repo) ([source](https://togithub.com/vercel/turbo)) | [`1.13.0` -> `1.13.1`](https://renovatebot.com/diffs/npm/turbo/1.13.0/1.13.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/turbo/1.13.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/turbo/1.13.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/turbo/1.13.0/1.13.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/turbo/1.13.0/1.13.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>crowdin/crowdin-api-client-js (@&#8203;crowdin/crowdin-api-client)</summary>

### [`v1.33.0`](https://togithub.com/crowdin/crowdin-api-client-js/releases/tag/1.33.0)

[Compare Source](https://togithub.com/crowdin/crowdin-api-client-js/compare/1.32.0...1.33.0)

#### What's Changed

-   fix: update ai methods by [@&#8203;NazarLysyi](https://togithub.com/NazarLysyi) in [crowdin/crowdin-api-client-js#386
-   ci: upgrade actions by [@&#8203;andrii-bodnar](https://togithub.com/andrii-bodnar) in [crowdin/crowdin-api-client-js#385

#### New Contributors

-   [@&#8203;NazarLysyi](https://togithub.com/NazarLysyi) made their first contribution in [crowdin/crowdin-api-client-js#386

**Full Changelog**: crowdin/crowdin-api-client-js@1.32.0...1.33.0

</details>

<details>
<summary>typescript-eslint/typescript-eslint (@&#8203;typescript-eslint/eslint-plugin)</summary>

### [`v7.5.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#750-2024-04-01)

[Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v7.4.0...v7.5.0)

##### 🩹 Fixes

-   **eslint-plugin:** \[no-floating-promises] handle TaggedTemplateExpression

-   **eslint-plugin:** \[no-unnecessary-type-assertion] handle exactOptionalPropertyTypes compiler option

##### ❤️  Thank You

-   Brad Zacher
-   Kim Sang Du
-   Mark de Dios
-   Naru
-   YeonJuan

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

</details>

<details>
<summary>typescript-eslint/typescript-eslint (@&#8203;typescript-eslint/parser)</summary>

### [`v7.5.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#750-2024-04-01)

[Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v7.4.0...v7.5.0)

##### 🩹 Fixes

-   **parser:** disallow `errorOnTypeScriptSyntacticAndSemanticIssues`

##### ❤️  Thank You

-   Brad Zacher
-   Kim Sang Du
-   Mark de Dios
-   Naru
-   YeonJuan

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

</details>

<details>
<summary>vercel/turbo (eslint-plugin-turbo)</summary>

### [`v1.13.1`](https://togithub.com/vercel/turbo/releases/tag/v1.13.1): Turborepo v1.13.1

[Compare Source](https://togithub.com/vercel/turbo/compare/v1.13.0...v1.13.1)



##### What's Changed

##### Docs

-   docs: add missing CLI references by [@&#8203;wokcito](https://togithub.com/wokcito) in [vercel/turbo#7806
-   (docs): refer to correct Github Actions cache version as described in example by [@&#8203;KarelVerschraegen](https://togithub.com/KarelVerschraegen) in [vercel/turbo#7869
-   Docs: Fix heading by [@&#8203;Dragate](https://togithub.com/Dragate) in [vercel/turbo#7873

##### Changelog

-   feat(ui): persist logs on failure by [@&#8203;chris-olszewski](https://togithub.com/chris-olszewski) in [vercel/turbo#7805
-   feat(Turborepo): handle package manager changes by [@&#8203;gsoltis](https://togithub.com/gsoltis) in [vercel/turbo#7770
-   feat(ui): add ability to scroll task output by [@&#8203;chris-olszewski](https://togithub.com/chris-olszewski) in [vercel/turbo#7807
-   fix(ui): avoid dupe key events on windows by [@&#8203;chris-olszewski](https://togithub.com/chris-olszewski) in [vercel/turbo#7809
-   fix(ui): avoid using prefix for replayed logs by [@&#8203;chris-olszewski](https://togithub.com/chris-olszewski) in [vercel/turbo#7810
-   chore: remove some unused imports by [@&#8203;chris-olszewski](https://togithub.com/chris-olszewski) in [vercel/turbo#7816
-   feat(ui): persist all logs by [@&#8203;chris-olszewski](https://togithub.com/chris-olszewski) in [vercel/turbo#7822
-   fix(ui): limit viewport size based on term size by [@&#8203;chris-olszewski](https://togithub.com/chris-olszewski) in [vercel/turbo#7837
-   feat(Turborepo): return invalid states from package discovery by [@&#8203;gsoltis](https://togithub.com/gsoltis) in [vercel/turbo#7789
-   fix(Turborepo): ignore working tree state for fixed git comparisons by [@&#8203;gsoltis](https://togithub.com/gsoltis) in [vercel/turbo#7838
-   fix(vt100): fix scrollback underflow by [@&#8203;chris-olszewski](https://togithub.com/chris-olszewski) in [vercel/turbo#7844
-   fix(ui): account for border when reserving size for logs by [@&#8203;chris-olszewski](https://togithub.com/chris-olszewski) in [vercel/turbo#7846
-   fix(yarn4): properly handle workspace protocol with path by [@&#8203;chris-olszewski](https://togithub.com/chris-olszewski) in [vercel/turbo#7817
-   feat(lockfile): support for parsing pnpm lockfile v7 by [@&#8203;chris-olszewski](https://togithub.com/chris-olszewski) in [vercel/turbo#7853
-   fix(pnpm): support new pnpm9 default link-workspace-packages by [@&#8203;chris-olszewski](https://togithub.com/chris-olszewski) in [vercel/turbo#7865
-   chore(telemetry): track dot env usage by [@&#8203;chris-olszewski](https://togithub.com/chris-olszewski) in [vercel/turbo#7876
-   chore: fix lockfile by [@&#8203;chris-olszewski](https://togithub.com/chris-olszewski) in [vercel/turbo#7877

##### New Contributors

-   [@&#8203;wokcito](https://togithub.com/wokcito) made their first contribution in [vercel/turbo#7806
-   [@&#8203;Dragate](https://togithub.com/Dragate) made their first contribution in [vercel/turbo#7873

**Full Changelog**: vercel/turbo@v1.13.0...v1.13.1

</details>

<details>
<summary>i18next/i18next-browser-languageDetector (i18next-browser-languagedetector)</summary>

### [`v7.2.1`](https://togithub.com/i18next/i18next-browser-languageDetector/blob/HEAD/CHANGELOG.md#721)

[Compare Source](https://togithub.com/i18next/i18next-browser-languageDetector/compare/v7.2.0...v7.2.1)

-   fix: align addDetector impementation to type definition [282](https://togithub.com/i18next/i18next-browser-languageDetector/issues/282)

</details>

<details>
<summary>listr2/listr2 (listr2)</summary>

### [`v8.1.3`](https://togithub.com/listr2/listr2/releases/tag/listr2%408.1.3)

[Compare Source](https://togithub.com/listr2/listr2/compare/listr2@&#8203;8.1.2...listr2@&#8203;8.1.3)

#### listr2 [8.1.3](https://togithub.com/listr2/listr2/compare/listr2@&#8203;8.1.2...listr2@&#8203;8.1.3) (2024-03-31)

##### Bug Fixes

-   remove all listeners call ([763ada8](https://togithub.com/listr2/listr2/commit/763ada8402b542139a98aa57a97e80ccb7e3e78f))

### [`v8.1.2`](https://togithub.com/listr2/listr2/compare/listr2@&#8203;8.1.1...listr2@&#8203;8.1.2)

[Compare Source](https://togithub.com/listr2/listr2/compare/listr2@&#8203;8.1.1...listr2@&#8203;8.1.2)

</details>

<details>
<summary>pnpm/pnpm (pnpm)</summary>

### [`v8.15.6`](https://togithub.com/pnpm/pnpm/releases/tag/v8.15.6)

[Compare Source](https://togithub.com/pnpm/pnpm/compare/v8.15.5...v8.15.6)

#### Patch Changes

-   The exit code of the child process should be preserved on `pnpm run` [#&#8203;7817](https://togithub.com/pnpm/pnpm/issues/7817).
-   When sorting packages in a workspace, take into account workspace dependencies specified as `peerDependencies` [#&#8203;7813](https://togithub.com/pnpm/pnpm/issues/7813).
-   Add `--ignore-scripts` argument to `prune` command [#&#8203;7836](https://togithub.com/pnpm/pnpm/pull/7836).

#### Platinum Sponsors

<table>
  <tbody>
    <tr>
      <td align="center" valign="middle">
        <a href="https://bit.dev/?utm_source=pnpm&utm_medium=readme" target="_blank"><img src="https://pnpm.io/img/users/bit.svg" width="80"></a>
      </td>
      <td align="center" valign="middle">
        <a href="https://figma.com/?utm_source=pnpm&utm_medium=readme" target="_blank"><img src="https://pnpm.io/img/users/figma.svg" width="80"></a>
      </td>
    </tr>
  </tbody>
</table>

#### Gold Sponsors

<table>
  <tbody>
    <tr>
      <td align="center" valign="middle">
        <a href="https://discord.com/?utm_source=pnpm&utm_medium=readme" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/discord.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/discord_light.svg" />
            <img src="https://pnpm.io/img/users/discord.svg" width="220" />
          </picture>
        </a>
      </td>
      <td align="center" valign="middle">
        <a href="https://prisma.io/?utm_source=pnpm&utm_medium=readme" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/prisma.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/prisma_light.svg" />
            <img src="https://pnpm.io/img/users/prisma.svg" width="180" />
          </picture>
        </a>
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        <a href="https://uscreen.de/?utm_source=pnpm&utm_medium=readme" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/uscreen.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/uscreen_light.svg" />
            <img src="https://pnpm.io/img/users/uscreen.svg" width="180" />
          </picture>
        </a>
      </td>
      <td align="center" valign="middle">
        <a href="https://www.jetbrains.com/?utm_source=pnpm&utm_medium=readme" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/jetbrains.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/jetbrains.svg" />
            <img src="https://pnpm.io/img/users/jetbrains.svg" width="85" />
          </picture>
        </a>
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        <a href="https://nx.dev/?utm_source=pnpm&utm_medium=readme" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/nx.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/nx_light.svg" />
            <img src="https://pnpm.io/img/users/nx.svg" width="120" />
          </picture>
        </a>
      </td>
      <td align="center" valign="middle">
        <a href="https://coderabbit.ai/?utm_source=pnpm&utm_medium=readme" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/coderabbit.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/coderabbit_light.svg" />
            <img src="https://pnpm.io/img/users/coderabbit.svg" width="220" />
          </picture>
        </a>
      </td>
    </tr>
  </tbody>
</table>

#### Silver Sponsors

<table>
  <tbody>
    <tr>
      <td align="center" valign="middle">
        <a href="https://leniolabs.com/?utm_source=pnpm&utm_medium=readme" target="_blank">
          <img src="https://pnpm.io/img/users/leniolabs.jpg" width="80">
        </a>
      </td>
      <td align="center" valign="middle">
        <a href="https://vercel.com/?utm_source=pnpm&utm_medium=readme" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/vercel.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/vercel_light.svg" />
            <img src="https://pnpm.io/img/users/vercel.svg" width="180" />
          </picture>
        </a>
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        <a href="https://depot.dev/?utm_source=pnpm&utm_medium=readme" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/depot.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/depot_light.svg" />
            <img src="https://pnpm.io/img/users/depot.svg" width="200" />
          </picture>
        </a>
      </td>
      <td align="center" valign="middle">
        <a href="https://moonrepo.dev/?utm_source=pnpm&utm_medium=readme" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/moonrepo.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/moonrepo_light.svg" />
            <img src="https://pnpm.io/img/users/moonrepo.svg" width="200" />
          </picture>
        </a>
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        <a href="https://devowl.io/?utm_source=pnpm&utm_medium=readme" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/devowlio.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/devowlio.svg" />
            <img src="https://pnpm.io/img/users/devowlio.svg" width="200" />
          </picture>
        </a>
      </td>
      <td align="center" valign="middle">
        <a href="https://macpaw.com/?utm_source=pnpm&utm_medium=readme" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/macpaw.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/macpaw_light.svg" />
            <img src="https://pnpm.io/img/users/macpaw.svg" width="200" />
          </picture>
        </a>
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        <a href="https://cerbos.dev/?utm_source=pnpm&utm_medium=readme" target="_blank">
          <picture>
            <source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/cerbos.svg" />
            <source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/cerbos_light.svg" />
            <img src="https://pnpm.io/img/users/cerbos.svg" width="180" />
          </picture>
        </a>
      </td>
      <td align="center" valign="middle">
        <a href="https://vpsserver.com/en-us/?utm_source=pnpm&utm_medium=readme" target="_blank">
          <img src="https://pnpm.io/img/users/vpsserver.svg" width="180" />
        </a>
      </td>
    </tr>
  </tbody>
</table>

</details>

<details>
<summary>matzkoh/prettier-plugin-packagejson (prettier-plugin-packagejson)</summary>

### [`v2.4.14`](https://togithub.com/matzkoh/prettier-plugin-packagejson/releases/tag/v2.4.14)

[Compare Source](https://togithub.com/matzkoh/prettier-plugin-packagejson/compare/v2.4.13...v2.4.14)

##### Bug Fixes

-   **deps:** update dependency sort-package-json to v2.10.0 ([e2bb083](https://togithub.com/matzkoh/prettier-plugin-packagejson/commit/e2bb083b08de7b25840412f919c0f6394f919af6))

</details>

<details>
<summary>vercel/turbo (turbo)</summary>

### [`v1.13.1`](https://togithub.com/vercel/turbo/compare/v1.13.0...v1.13.1)

[Compare Source](https://togithub.com/vercel/turbo/compare/v1.13.0...v1.13.1)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on Monday,before 4am on Thursday" (UTC), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired.

---

 - [ ] If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/weareinreach/GLAAD).



PR-URL: #377
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants