185 Commits

Author SHA1 Message Date
Wanjohi
f92150cb9e fix: WIP 2025-05-05 07:04:30 +03:00
Wanjohi
c0c14d8c3c feat: Change the pricing 2025-05-05 05:34:16 +03:00
Wanjohi
47e61599bb feat(api): Add payments with Polar.sh (#264)
## Description
<!-- Briefly describe the purpose and scope of your changes -->


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Introduced a new subscription API endpoint for managing subscriptions
and products.
- Enhanced subscription management with new entities and
functionalities.
- Added functionality to retrieve current timestamps in both local and
UTC formats.
- Added Polar.sh integration with customer portal and checkout session
creation APIs.

- **Refactor**
- Redesigned team details to now present members and subscription
information instead of a plan type.
  - Enhanced member management by incorporating role assignments.
- Streamlined user data handling and removed legacy subscription event
logic.
  - Simplified error handling in actor functions for better clarity.
  - Updated plan types and UI labels to reflect new subscription tiers.
  - Improved database indexing for Steam user data.

- **Chores**
- Updated the database schema with new tables and fields to support
subscription, team, and member enhancements.
  - Extended identifier prefixes to broaden system integration.
- Added new secrets related to pricing plans in infrastructure
configuration.
  - Configured API and auth routing with new domain and routing rules.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-04-18 14:24:19 +03:00
dependabot[bot]
76d27e4708 build(deps): bump golang.org/x/net from 0.34.0 to 0.38.0 in /packages/maitred in the go_modules group across 1 directory (#266)
Bumps the go_modules group with 1 update in the /packages/maitred
directory: [golang.org/x/net](https://github.com/golang/net).

Updates `golang.org/x/net` from 0.34.0 to 0.38.0
<details>
<summary>Commits</summary>
<ul>
<li><a
href="e1fcd82abb"><code>e1fcd82</code></a>
html: properly handle trailing solidus in unquoted attribute value in
foreign...</li>
<li><a
href="ebed060e8f"><code>ebed060</code></a>
internal/http3: fix build of tests with GOEXPERIMENT=nosynctest</li>
<li><a
href="1f1fa29e0a"><code>1f1fa29</code></a>
publicsuffix: regenerate table</li>
<li><a
href="12150816f7"><code>1215081</code></a>
http2: improve error when server sends HTTP/1</li>
<li><a
href="312450e473"><code>312450e</code></a>
html: ensure &lt;search&gt; tag closes &lt;p&gt; and update tests</li>
<li><a
href="09731f9bf9"><code>09731f9</code></a>
http2: improve handling of lost PING in Server</li>
<li><a
href="55989e24b9"><code>55989e2</code></a>
http2/h2c: use ResponseController for hijacking connections</li>
<li><a
href="2914f46773"><code>2914f46</code></a>
websocket: re-recommend gorilla/websocket</li>
<li><a
href="99b3ae0643"><code>99b3ae0</code></a>
go.mod: update golang.org/x dependencies</li>
<li><a
href="85d1d54551"><code>85d1d54</code></a>
go.mod: update golang.org/x dependencies</li>
<li>Additional commits viewable in <a
href="https://github.com/golang/net/compare/v0.34.0...v0.38.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=golang.org/x/net&package-manager=go_modules&previous-version=0.34.0&new-version=0.38.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/nestrilabs/nestri/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-17 19:53:52 +03:00
Wanjohi
896832b89c 🐜 fix: Remove Steam account info repetition (#263)
## Description
<!-- Briefly describe the purpose and scope of your changes -->


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- User profiles now display integrated Steam account information for a
more consolidated view.
- Accounts can now include associated teams and Steam account
information.

- **Refactor**
- Streamlined the underlying data structures for user, machine, and
Steam information to improve consistency and performance.

- **Chores**
- Updated database schemas and upgraded core dependencies, including the
`remeda` and `vite` packages, while refining authentication settings for
smoother operation.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-14 10:51:40 +03:00
dependabot[bot]
492013d610 build(deps): bump the npm_and_yarn group across 3 directories with 1 update (#260)
Bumps the npm_and_yarn group with 1 update in the /apps/docs directory:
[vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite).
Bumps the npm_and_yarn group with 1 update in the /apps/www directory:
[vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite).
Bumps the npm_and_yarn group with 1 update in the /packages/www
directory:
[vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite).

Updates `vite` from 6.2.5 to 6.2.6
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/releases">vite's
releases</a>.</em></p>
<blockquote>
<h2>v6.2.6</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.2.6/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/blob/v6.2.6/packages/vite/CHANGELOG.md">vite's
changelog</a>.</em></p>
<blockquote>
<h2><!-- raw HTML omitted -->6.2.6 (2025-04-10)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: reject requests with <code>#</code> in request-target (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19830">#19830</a>)
(<a
href="3bb0883d22">3bb0883</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19830">#19830</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d3dbf25fd5"><code>d3dbf25</code></a>
release: v6.2.6</li>
<li><a
href="3bb0883d22"><code>3bb0883</code></a>
fix: reject requests with <code>#</code> in request-target (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19830">#19830</a>)</li>
<li>See full diff in <a
href="https://github.com/vitejs/vite/commits/v6.2.6/packages/vite">compare
view</a></li>
</ul>
</details>
<br />

Updates `vite` from 6.0.14 to 6.0.15
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/releases">vite's
releases</a>.</em></p>
<blockquote>
<h2>v6.2.6</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.2.6/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/blob/v6.2.6/packages/vite/CHANGELOG.md">vite's
changelog</a>.</em></p>
<blockquote>
<h2><!-- raw HTML omitted -->6.2.6 (2025-04-10)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: reject requests with <code>#</code> in request-target (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19830">#19830</a>)
(<a
href="3bb0883d22">3bb0883</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19830">#19830</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d3dbf25fd5"><code>d3dbf25</code></a>
release: v6.2.6</li>
<li><a
href="3bb0883d22"><code>3bb0883</code></a>
fix: reject requests with <code>#</code> in request-target (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19830">#19830</a>)</li>
<li>See full diff in <a
href="https://github.com/vitejs/vite/commits/v6.2.6/packages/vite">compare
view</a></li>
</ul>
</details>
<br />

Updates `vite` from 6.0.14 to 6.0.15
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/releases">vite's
releases</a>.</em></p>
<blockquote>
<h2>v6.2.6</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.2.6/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/blob/v6.2.6/packages/vite/CHANGELOG.md">vite's
changelog</a>.</em></p>
<blockquote>
<h2><!-- raw HTML omitted -->6.2.6 (2025-04-10)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: reject requests with <code>#</code> in request-target (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19830">#19830</a>)
(<a
href="3bb0883d22">3bb0883</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19830">#19830</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d3dbf25fd5"><code>d3dbf25</code></a>
release: v6.2.6</li>
<li><a
href="3bb0883d22"><code>3bb0883</code></a>
fix: reject requests with <code>#</code> in request-target (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19830">#19830</a>)</li>
<li>See full diff in <a
href="https://github.com/vitejs/vite/commits/v6.2.6/packages/vite">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/nestrilabs/nestri/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-14 10:33:56 +03:00
Wanjohi
e93099784c feat(api): Connect Steam to main user account (#262)
## Description
This attempts to connect the Steam account to user account... for easier
management

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **New Features**
- Enhanced user profiles and account views now display integrated Steam
account details and enriched team associations for a more comprehensive
experience.
- **Chores**
- Backend and database refinements have been implemented to improve
system stability, data integrity, and overall performance.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-04-14 10:32:21 +03:00
Kristian Ollikainen
9a6826b069 feat(runner): Fixes and improvements (#259)
## Description

- Improves latency for runner
- Fixes bugs in entrypoint bash scripts
- Package updates, gstreamer 1.26 and workaround for it

Modified runner workflow to hopefully pull latest cachyos base image on
nightlies. This will cause a full build but for nightlies should be
fine?

Also removed the duplicate key-down workaround as we've enabled ordered
datachannels now. Increased retransmit to 2 from 0 to see if it'll help
with some network issues.

Marked as draft as I need to do bug testing still, I'll do it after
fever calms down 😅



<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **New Features**
- Enhanced deployment workflows with optimized container image
management.
- Improved audio and video processing for lower latency and better
synchronization.
  - Consolidated debugging options to ease command-line monitoring.

- **Refactor**
- Streamlined internal script flow and process handling for smoother
performance.
- Updated dependency management and communication protocols to boost
overall stability.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Co-authored-by: DatCaptainHorse <DatCaptainHorse@users.noreply.github.com>
2025-04-13 23:13:09 +03:00
Wanjohi
f408ec56cb feat(www): Add logic to the homepage and Steam integration (#258)
## Description
<!-- Briefly describe the purpose and scope of your changes -->


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Upgraded API and authentication services with dynamic scaling,
enhanced load balancing, and real-time interaction endpoints.
- Introduced new commands to streamline local development and container
builds.
- Added new endpoints for retrieving Steam account information and
managing connections.
- Implemented a QR code authentication interface for Steam, enhancing
user login experiences.

- **Database Updates**
- Rolled out comprehensive schema migrations that improve data integrity
and indexing.
- Introduced new tables for managing Steam user credentials and machine
information.

- **UI Enhancements**
- Added refreshed animated assets and an improved QR code login flow for
a more engaging experience.
	- Introduced new styled components for displaying friends and games.

- **Maintenance**
- Completed extensive refactoring and configuration updates to optimize
performance and development workflows.
- Updated logging configurations and improved error handling mechanisms.
	- Streamlined resource definitions in the configuration files.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-04-13 14:30:45 +03:00
Wanjohi
8394bb4259 🐜 fix(dependabot): Remove the goddamn file (#257)
## Description
<!-- Briefly describe the purpose and scope of your changes -->
2025-04-12 13:50:35 +03:00
dependabot[bot]
0305a14fdd build(deps-dev): bump @nuxt/devtools from 1.7.0 to 2.3.2 in /apps/docs (#256)
Bumps
[@nuxt/devtools](https://github.com/nuxt/devtools/tree/HEAD/packages/devtools)
from 1.7.0 to 2.3.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/nuxt/devtools/releases"><code>@​nuxt/devtools</code>'s
releases</a>.</em></p>
<blockquote>
<h2>v2.3.2</h2>
<h3>   🐞 Bug Fixes</h3>
<ul>
<li>Prioritize vue-devtools plugin registation, fix <a
href="https://github.com/nuxt/devtools/tree/HEAD/packages/devtools/issues/823">#823</a>,
fix <a
href="https://github.com/nuxt/devtools/tree/HEAD/packages/devtools/issues/822">#822</a>
 -  by <a href="https://github.com/antfu"><code>@​antfu</code></a> in <a
href="https://redirect.github.com/nuxt/devtools/issues/823">nuxt/devtools#823</a>
and <a
href="https://redirect.github.com/nuxt/devtools/issues/822">nuxt/devtools#822</a>
<a href="https://github.com/nuxt/devtools/commit/259853b9"><!-- raw HTML
omitted -->(25985)<!-- raw HTML omitted --></a></li>
<li>Update <code>vite-plugin-vue-tracer</code>  -  by <a
href="https://github.com/antfu"><code>@​antfu</code></a> <a
href="https://github.com/nuxt/devtools/commit/0c1740cc"><!-- raw HTML
omitted -->(0c174)<!-- raw HTML omitted --></a></li>
</ul>
<h5>    <a
href="https://github.com/nuxt/devtools/compare/v2.3.1...v2.3.2">View
changes on GitHub</a></h5>
<h2>v2.3.1</h2>
<h3>   🐞 Bug Fixes</h3>
<ul>
<li>Downgrade <code>execa</code> to be compatible with Node v18, fix <a
href="https://github.com/nuxt/devtools/tree/HEAD/packages/devtools/issues/821">#821</a>
 -  by <a href="https://github.com/antfu"><code>@​antfu</code></a> in <a
href="https://redirect.github.com/nuxt/devtools/issues/821">nuxt/devtools#821</a>
<a href="https://github.com/nuxt/devtools/commit/f15c7dca"><!-- raw HTML
omitted -->(f15c7)<!-- raw HTML omitted --></a></li>
</ul>
<h5>    <a
href="https://github.com/nuxt/devtools/compare/v2.3.0...v2.3.1">View
changes on GitHub</a></h5>
<h2>v2.3.0</h2>
<h3>   🚀 Features</h3>
<ul>
<li>Debug page of module mutation  -  by <a
href="https://github.com/antfu"><code>@​antfu</code></a> in <a
href="https://redirect.github.com/nuxt/devtools/issues/770">nuxt/devtools#770</a>
<a href="https://github.com/nuxt/devtools/commit/f7e9ab55"><!-- raw HTML
omitted -->(f7e9a)<!-- raw HTML omitted --></a></li>
</ul>
<h5>    <a
href="https://github.com/nuxt/devtools/compare/v2.2.1...v2.3.0">View
changes on GitHub</a></h5>
<h2>v2.2.1</h2>
<h3>   🐞 Bug Fixes</h3>
<ul>
<li><strong>inspector</strong>: Do not register instapector events if
there is already any  -  by <a
href="https://github.com/antfu"><code>@​antfu</code></a> <a
href="https://github.com/nuxt/devtools/commit/db01e1b5"><!-- raw HTML
omitted -->(db01e)<!-- raw HTML omitted --></a></li>
</ul>
<h5>    <a
href="https://github.com/nuxt/devtools/compare/v2.2.0...v2.2.1">View
changes on GitHub</a></h5>
<h2>v2.2.0</h2>
<h3>   🚀 Features</h3>
<ul>
<li>Migrate to <code>vite-plugin-vue-tracer</code>  -  by <a
href="https://github.com/antfu"><code>@​antfu</code></a> in <a
href="https://redirect.github.com/nuxt/devtools/issues/803">nuxt/devtools#803</a>
<a href="https://github.com/nuxt/devtools/commit/faa08d39"><!-- raw HTML
omitted -->(faa08)<!-- raw HTML omitted --></a></li>
<li>Component graph node name toogle  -  by <a
href="https://github.com/runyasak"><code>@​runyasak</code></a> and <a
href="https://github.com/antfu"><code>@​antfu</code></a> in <a
href="https://redirect.github.com/nuxt/devtools/issues/797">nuxt/devtools#797</a>
<a href="https://github.com/nuxt/devtools/commit/2eb2a37e"><!-- raw HTML
omitted -->(2eb2a)<!-- raw HTML omitted --></a></li>
</ul>
<h5>    <a
href="https://github.com/nuxt/devtools/compare/v2.1.3...v2.2.0">View
changes on GitHub</a></h5>
<h2>v2.1.3</h2>
<p><em>No significant changes</em></p>
<h5>    <a
href="https://github.com/nuxt/devtools/compare/v2.1.2...v2.1.3">View
changes on GitHub</a></h5>
<h2>v2.1.2</h2>
<p><em>No significant changes</em></p>
<h5>    <a
href="https://github.com/nuxt/devtools/compare/v2.1.1...v2.1.2">View
changes on GitHub</a></h5>
<h2>v2.1.1</h2>
<h3>   🚀 Features</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/nuxt/devtools/blob/main/CHANGELOG.md"><code>@​nuxt/devtools</code>'s
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/nuxt/devtools/compare/v2.3.1...v2.3.2">2.3.2</a>
(2025-03-26)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>prioritize vue-devtools plugin registation, fix <a
href="https://redirect.github.com/nuxt/devtools/issues/823">#823</a>,
fix <a
href="https://redirect.github.com/nuxt/devtools/issues/822">#822</a> (<a
href="259853b94c">259853b</a>)</li>
<li>update <code>vite-plugin-vue-tracer</code> (<a
href="0c1740cc1d">0c1740c</a>)</li>
</ul>
<h2><a
href="https://github.com/nuxt/devtools/compare/v2.3.0...v2.3.1">2.3.1</a>
(2025-03-20)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>downgrade <code>execa</code> to be compatible with Node v18, fix <a
href="https://redirect.github.com/nuxt/devtools/issues/821">#821</a> (<a
href="f15c7dca3a">f15c7dc</a>)</li>
</ul>
<h1><a
href="https://github.com/nuxt/devtools/compare/v2.2.1...v2.3.0">2.3.0</a>
(2025-03-13)</h1>
<h3>Features</h3>
<ul>
<li>debug page of module mutation (<a
href="https://redirect.github.com/nuxt/devtools/issues/770">#770</a>)
(<a
href="f7e9ab555a">f7e9ab5</a>)</li>
</ul>
<h2><a
href="https://github.com/nuxt/devtools/compare/v2.2.0...v2.2.1">2.2.1</a>
(2025-03-05)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>inspector:</strong> do not register instapector events if
there is already any (<a
href="db01e1b561">db01e1b</a>)</li>
</ul>
<h1><a
href="https://github.com/nuxt/devtools/compare/v2.1.3...v2.2.0">2.2.0</a>
(2025-03-05)</h1>
<h3>Features</h3>
<ul>
<li>component graph node name toogle (<a
href="https://redirect.github.com/nuxt/devtools/issues/797">#797</a>)
(<a
href="2eb2a37e79">2eb2a37</a>)</li>
<li>migrate to <code>vite-plugin-vue-tracer</code> (<a
href="https://redirect.github.com/nuxt/devtools/issues/803">#803</a>)
(<a
href="faa08d3949">faa08d3</a>)</li>
</ul>
<h2><a
href="https://github.com/nuxt/devtools/compare/v2.1.2...v2.1.3">2.1.3</a>
(2025-03-03)</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f919dbc5a7"><code>f919dbc</code></a>
chore: release v2.3.2</li>
<li><a
href="068173338c"><code>0681733</code></a>
Add Windsurf to the list of editors (<a
href="https://github.com/nuxt/devtools/tree/HEAD/packages/devtools/issues/820">#820</a>)</li>
<li><a
href="259853b94c"><code>259853b</code></a>
fix: prioritize vue-devtools plugin registation, fix <a
href="https://github.com/nuxt/devtools/tree/HEAD/packages/devtools/issues/823">#823</a>,
fix <a
href="https://github.com/nuxt/devtools/tree/HEAD/packages/devtools/issues/822">#822</a></li>
<li><a
href="11812abcc0"><code>11812ab</code></a>
chore: release v2.3.1</li>
<li><a
href="4e9da7fd36"><code>4e9da7f</code></a>
chore: release v2.3.0</li>
<li><a
href="f7e9ab555a"><code>f7e9ab5</code></a>
feat: debug page of module mutation (<a
href="https://github.com/nuxt/devtools/tree/HEAD/packages/devtools/issues/770">#770</a>)</li>
<li><a
href="68df38ed21"><code>68df38e</code></a>
build: only apply build output customisation to client build (<a
href="https://github.com/nuxt/devtools/tree/HEAD/packages/devtools/issues/806">#806</a>)</li>
<li><a
href="f0d804f945"><code>f0d804f</code></a>
chore: add missing type deps</li>
<li><a
href="a6448d95d6"><code>a6448d9</code></a>
chore: use named catalogs</li>
<li><a
href="eda0e673b4"><code>eda0e67</code></a>
chore: release v2.2.1</li>
<li>Additional commits viewable in <a
href="https://github.com/nuxt/devtools/commits/v2.3.2/packages/devtools">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@nuxt/devtools&package-manager=npm_and_yarn&previous-version=1.7.0&new-version=2.3.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-12 13:47:07 +03:00
Wanjohi
6b1521d7d4 feat(dependabot): Put a leash on it (#231)
## Description
This attempts to limit the dependabot alerts to a week, plus make sure
it works on all the projects

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **Chores**
- Introduced an automated dependency update configuration to help keep
all package ecosystems current.
- **Bug Fixes**
- Adjusted the email sender address configuration to ensure that
outgoing communications display the intended sender details.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-04-12 13:41:42 +03:00
dependabot[bot]
39e187832a build(deps): bump the npm_and_yarn group across 3 directories with 2 updates (#229)
Bumps the npm_and_yarn group with 1 update in the /apps/docs directory:
[koa](https://github.com/koajs/koa).
Bumps the npm_and_yarn group with 1 update in the /apps/www directory:
[vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite).
Bumps the npm_and_yarn group with 1 update in the /packages/www
directory:
[vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite).

Updates `koa` from 2.15.4 to 2.16.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/koajs/koa/releases">koa's
releases</a>.</em></p>
<blockquote>
<h2>v2.16.1</h2>
<p>fix: don't render redirect values in anchor ref</p>
<h2>2.16.0</h2>
<p>This is a backported release to fix core underlying issue with
<code>HEAD</code> requests when using
<code>http2.createSecureServer</code>. See discussion at <a
href="https://redirect.github.com/koajs/koa/pull/1593">koajs/koa#1593</a>
and <a
href="https://redirect.github.com/koajs/koa/issues/1547">koajs/koa#1547</a>.</p>
<ul>
<li>fix missing cleanup, if response socket is no longer writeable
(issue 1547) (<a
href="https://redirect.github.com/koajs/koa/pull/1593">koajs/koa#1593</a>)
399cb6b0dd2104224c0ef0ce8e92f84e4f7faf42</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="ba14822069"><code>ba14822</code></a>
2.16.1</li>
<li><a
href="2ff6c3fb80"><code>2ff6c3f</code></a>
2.16.0</li>
<li><a
href="3d51d034af"><code>3d51d03</code></a>
ci: allow codecov to fail</li>
<li><a
href="eb84d890b8"><code>eb84d89</code></a>
fix: don't render redirect values in anchor ref</li>
<li>See full diff in <a
href="https://github.com/koajs/koa/compare/2.15.4...v2.16.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `vite` from 5.4.16 to 6.0.14
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/releases">vite's
releases</a>.</em></p>
<blockquote>
<h2>v6.0.14</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.0.14/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.0.13</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.0.13/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.0.12</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.0.12/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.0.11</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.0.11/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.0.10</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.0.10/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.0.9</h2>
<p>This version contains a breaking change due to security fixes. See <a
href="https://github.com/vitejs/vite/security/advisories/GHSA-vg6x-rcgg-rjx6">https://github.com/vitejs/vite/security/advisories/GHSA-vg6x-rcgg-rjx6</a>
for more details.</p>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.0.9/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.0.8</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.0.8/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.0.7</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.0.7/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.0.6</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.0.6/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.0.5</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.0.5/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.0.4</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.0.4/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.0.3</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.0.3/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.0.2</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.0.2/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>plugin-legacy@6.0.2</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/plugin-legacy@6.0.2/packages/plugin-legacy/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>create-vite@6.0.1</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/create-vite@6.0.1/packages/create-vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.0.1</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.0.1/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/blob/v6.0.14/packages/vite/CHANGELOG.md">vite's
changelog</a>.</em></p>
<blockquote>
<h2><!-- raw HTML omitted -->6.0.14 (2025-04-03)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: backport <a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19782">#19782</a>,
fs check with svg and relative paths (<a
href="48ee91df38">48ee91d</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19782">#19782</a></li>
</ul>
<h2><!-- raw HTML omitted -->6.0.13 (2025-03-31)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: fs check in transform middleware (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19761">#19761</a>)
(<a
href="1487f393f3">1487f39</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19761">#19761</a></li>
</ul>
<h2><!-- raw HTML omitted -->6.0.12 (2025-03-24)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: fs raw query with query separators (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19702">#19702</a>)
(<a
href="92ca12dc79">92ca12d</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19702">#19702</a></li>
</ul>
<h2><!-- raw HTML omitted -->6.0.11 (2025-01-21)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: <code>preview.allowedHosts</code> with specific values was not
respected (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19246">#19246</a>)
(<a
href="aeb3ec84a2">aeb3ec8</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19246">#19246</a></li>
<li>fix: allow CORS from loopback addresses by default (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19249">#19249</a>)
(<a
href="3d03899737">3d03899</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19249">#19249</a></li>
</ul>
<h2><!-- raw HTML omitted -->6.0.10 (2025-01-20)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: try parse <code>server.origin</code> URL (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19241">#19241</a>)
(<a
href="2495022420">2495022</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19241">#19241</a></li>
</ul>
<h2><!-- raw HTML omitted -->6.0.9 (2025-01-20)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix!: check host header to prevent DNS rebinding attacks and
introduce <code>server.allowedHosts</code> (<a
href="bd896fb5f3">bd896fb</a>)</li>
<li>fix!: default <code>server.cors: false</code> to disallow fetching
from untrusted origins (<a
href="b09572acc9">b09572a</a>)</li>
<li>fix: verify token for HMR WebSocket connection (<a
href="029dcd6d77">029dcd6</a>)</li>
</ul>
<h2><!-- raw HTML omitted -->6.0.8 (2025-01-20)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: avoid SSR HMR for HTML files (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19193">#19193</a>)
(<a
href="3bd55bcb7e">3bd55bc</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19193">#19193</a></li>
<li>fix: build time display 7m 60s (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19108">#19108</a>)
(<a
href="cf0d2c8e23">cf0d2c8</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19108">#19108</a></li>
<li>fix: don't resolve URL starting with double slash (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19059">#19059</a>)
(<a
href="35942cde11">35942cd</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19059">#19059</a></li>
<li>fix: ensure <code>server.close()</code> only called once (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19204">#19204</a>)
(<a
href="db81c2dada">db81c2d</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19204">#19204</a></li>
<li>fix: resolve.conditions in ResolvedConfig was
<code>defaultServerConditions</code> (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19174">#19174</a>)
(<a
href="ad75c56dce">ad75c56</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19174">#19174</a></li>
<li>fix: tree shake stringified JSON imports (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19189">#19189</a>)
(<a
href="f2aed62d0b">f2aed62</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19189">#19189</a></li>
<li>fix: use shared sigterm callback (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19203">#19203</a>)
(<a
href="47039f4643">47039f4</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19203">#19203</a></li>
<li>fix(deps): update all non-major dependencies (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19098">#19098</a>)
(<a
href="8639538e64">8639538</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19098">#19098</a></li>
<li>fix(optimizer): use correct default install state path for yarn PnP
(<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19119">#19119</a>)
(<a
href="e690d8bb1e">e690d8b</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19119">#19119</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f678baacaf"><code>f678baa</code></a>
release: v6.0.14</li>
<li><a
href="48ee91df38"><code>48ee91d</code></a>
fix: backport <a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19782">#19782</a>,
fs check with svg and relative paths</li>
<li><a
href="0eaadcf952"><code>0eaadcf</code></a>
release: v6.0.13</li>
<li><a
href="1487f393f3"><code>1487f39</code></a>
fix: fs check in transform middleware (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19761">#19761</a>)</li>
<li><a
href="9d981f9d38"><code>9d981f9</code></a>
release: v6.0.12</li>
<li><a
href="92ca12dc79"><code>92ca12d</code></a>
fix: fs raw query with query separators (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19702">#19702</a>)</li>
<li><a
href="a0ed4057c9"><code>a0ed405</code></a>
release: v6.0.11</li>
<li><a
href="3d03899737"><code>3d03899</code></a>
fix: allow CORS from loopback addresses by default (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19249">#19249</a>)</li>
<li><a
href="aeb3ec84a2"><code>aeb3ec8</code></a>
fix: <code>preview.allowedHosts</code> with specific values was not
respected (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19246">#19246</a>)</li>
<li><a
href="9654348258"><code>9654348</code></a>
release: v6.0.10</li>
<li>Additional commits viewable in <a
href="https://github.com/vitejs/vite/commits/v6.0.14/packages/vite">compare
view</a></li>
</ul>
</details>
<br />

Updates `vite` from 5.4.16 to 6.0.14
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/releases">vite's
releases</a>.</em></p>
<blockquote>
<h2>v6.0.14</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.0.14/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.0.13</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.0.13/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.0.12</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.0.12/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.0.11</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.0.11/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.0.10</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.0.10/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.0.9</h2>
<p>This version contains a breaking change due to security fixes. See <a
href="https://github.com/vitejs/vite/security/advisories/GHSA-vg6x-rcgg-rjx6">https://github.com/vitejs/vite/security/advisories/GHSA-vg6x-rcgg-rjx6</a>
for more details.</p>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.0.9/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.0.8</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.0.8/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.0.7</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.0.7/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.0.6</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.0.6/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.0.5</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.0.5/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.0.4</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.0.4/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.0.3</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.0.3/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.0.2</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.0.2/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>plugin-legacy@6.0.2</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/plugin-legacy@6.0.2/packages/plugin-legacy/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>create-vite@6.0.1</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/create-vite@6.0.1/packages/create-vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.0.1</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.0.1/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/blob/v6.0.14/packages/vite/CHANGELOG.md">vite's
changelog</a>.</em></p>
<blockquote>
<h2><!-- raw HTML omitted -->6.0.14 (2025-04-03)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: backport <a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19782">#19782</a>,
fs check with svg and relative paths (<a
href="48ee91df38">48ee91d</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19782">#19782</a></li>
</ul>
<h2><!-- raw HTML omitted -->6.0.13 (2025-03-31)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: fs check in transform middleware (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19761">#19761</a>)
(<a
href="1487f393f3">1487f39</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19761">#19761</a></li>
</ul>
<h2><!-- raw HTML omitted -->6.0.12 (2025-03-24)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: fs raw query with query separators (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19702">#19702</a>)
(<a
href="92ca12dc79">92ca12d</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19702">#19702</a></li>
</ul>
<h2><!-- raw HTML omitted -->6.0.11 (2025-01-21)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: <code>preview.allowedHosts</code> with specific values was not
respected (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19246">#19246</a>)
(<a
href="aeb3ec84a2">aeb3ec8</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19246">#19246</a></li>
<li>fix: allow CORS from loopback addresses by default (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19249">#19249</a>)
(<a
href="3d03899737">3d03899</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19249">#19249</a></li>
</ul>
<h2><!-- raw HTML omitted -->6.0.10 (2025-01-20)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: try parse <code>server.origin</code> URL (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19241">#19241</a>)
(<a
href="2495022420">2495022</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19241">#19241</a></li>
</ul>
<h2><!-- raw HTML omitted -->6.0.9 (2025-01-20)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix!: check host header to prevent DNS rebinding attacks and
introduce <code>server.allowedHosts</code> (<a
href="bd896fb5f3">bd896fb</a>)</li>
<li>fix!: default <code>server.cors: false</code> to disallow fetching
from untrusted origins (<a
href="b09572acc9">b09572a</a>)</li>
<li>fix: verify token for HMR WebSocket connection (<a
href="029dcd6d77">029dcd6</a>)</li>
</ul>
<h2><!-- raw HTML omitted -->6.0.8 (2025-01-20)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: avoid SSR HMR for HTML files (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19193">#19193</a>)
(<a
href="3bd55bcb7e">3bd55bc</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19193">#19193</a></li>
<li>fix: build time display 7m 60s (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19108">#19108</a>)
(<a
href="cf0d2c8e23">cf0d2c8</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19108">#19108</a></li>
<li>fix: don't resolve URL starting with double slash (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19059">#19059</a>)
(<a
href="35942cde11">35942cd</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19059">#19059</a></li>
<li>fix: ensure <code>server.close()</code> only called once (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19204">#19204</a>)
(<a
href="db81c2dada">db81c2d</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19204">#19204</a></li>
<li>fix: resolve.conditions in ResolvedConfig was
<code>defaultServerConditions</code> (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19174">#19174</a>)
(<a
href="ad75c56dce">ad75c56</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19174">#19174</a></li>
<li>fix: tree shake stringified JSON imports (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19189">#19189</a>)
(<a
href="f2aed62d0b">f2aed62</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19189">#19189</a></li>
<li>fix: use shared sigterm callback (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19203">#19203</a>)
(<a
href="47039f4643">47039f4</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19203">#19203</a></li>
<li>fix(deps): update all non-major dependencies (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19098">#19098</a>)
(<a
href="8639538e64">8639538</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19098">#19098</a></li>
<li>fix(optimizer): use correct default install state path for yarn PnP
(<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19119">#19119</a>)
(<a
href="e690d8bb1e">e690d8b</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19119">#19119</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f678baacaf"><code>f678baa</code></a>
release: v6.0.14</li>
<li><a
href="48ee91df38"><code>48ee91d</code></a>
fix: backport <a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19782">#19782</a>,
fs check with svg and relative paths</li>
<li><a
href="0eaadcf952"><code>0eaadcf</code></a>
release: v6.0.13</li>
<li><a
href="1487f393f3"><code>1487f39</code></a>
fix: fs check in transform middleware (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19761">#19761</a>)</li>
<li><a
href="9d981f9d38"><code>9d981f9</code></a>
release: v6.0.12</li>
<li><a
href="92ca12dc79"><code>92ca12d</code></a>
fix: fs raw query with query separators (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19702">#19702</a>)</li>
<li><a
href="a0ed4057c9"><code>a0ed405</code></a>
release: v6.0.11</li>
<li><a
href="3d03899737"><code>3d03899</code></a>
fix: allow CORS from loopback addresses by default (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19249">#19249</a>)</li>
<li><a
href="aeb3ec84a2"><code>aeb3ec8</code></a>
fix: <code>preview.allowedHosts</code> with specific values was not
respected (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19246">#19246</a>)</li>
<li><a
href="9654348258"><code>9654348</code></a>
release: v6.0.10</li>
<li>Additional commits viewable in <a
href="https://github.com/vitejs/vite/commits/v6.0.14/packages/vite">compare
view</a></li>
</ul>
</details>
<br />

<details>
<summary>Most Recent Ignore Conditions Applied to This Pull
Request</summary>

| Dependency Name | Ignore Conditions |
| --- | --- |
| vite | [< 5.5, > 5.4.16] |
</details>


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/nestrilabs/nestri/network/alerts).

</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Wanjohi <elviswanjohi47@gmail.com>
2025-04-12 13:03:10 +03:00
Wanjohi
de80f3e6ab feat(maitred): Update maitred - hookup to the API (#198)
## Description
We are attempting to hookup maitred to the API
Maitred duties will be:
- [ ] Hookup to the API
- [ ]  Wait for signal (from the API) to start Steam
- [ ] Stop signal to stop the gaming session, clean up Steam... and
maybe do the backup

## Summary by CodeRabbit

- **New Features**
- Introduced Docker-based deployment configurations for both the main
and relay applications.
- Added new API endpoints enabling real-time machine messaging and
enhanced IoT operations.
- Expanded database schema and actor types to support improved machine
tracking.

- **Improvements**
- Enhanced real-time communication and relay management with streamlined
room handling.
- Upgraded dependencies, logging, and error handling for greater
stability and performance.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: DatCaptainHorse <DatCaptainHorse@users.noreply.github.com>
Co-authored-by: Kristian Ollikainen <14197772+DatCaptainHorse@users.noreply.github.com>
2025-04-07 23:23:53 +03:00
Wanjohi
6990494b34 🐜 fix(infra): Fix the Web path 2025-04-07 23:14:22 +03:00
Wanjohi
5a3fdf25ff 🧹 chore(infra): Upgrade to sst v3.11.21 2025-04-07 22:45:58 +03:00
dependabot[bot]
18b14a4261 build(deps): bump the npm_and_yarn group across 3 directories with 1 update (#224)
Bumps the npm_and_yarn group with 1 update in the /apps/docs directory:
[vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite).
Bumps the npm_and_yarn group with 1 update in the /apps/www directory:
[vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite).
Bumps the npm_and_yarn group with 1 update in the /packages/www
directory:
[vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite).

Updates `vite` from 6.2.3 to 6.2.5
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/releases">vite's
releases</a>.</em></p>
<blockquote>
<h2>v6.2.5</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.2.5/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.2.4</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.2.4/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/blob/v6.2.5/packages/vite/CHANGELOG.md">vite's
changelog</a>.</em></p>
<blockquote>
<h2><!-- raw HTML omitted -->6.2.5 (2025-04-03)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: backport <a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19782">#19782</a>,
fs check with svg and relative paths (<a
href="fdb196e9f8">fdb196e</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19782">#19782</a></li>
</ul>
<h2><!-- raw HTML omitted -->6.2.4 (2025-03-31)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: fs check in transform middleware (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19761">#19761</a>)
(<a
href="7a4fabab6a">7a4faba</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19761">#19761</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c176acf70a"><code>c176acf</code></a>
release: v6.2.5</li>
<li><a
href="fdb196e9f8"><code>fdb196e</code></a>
fix: backport <a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19782">#19782</a>,
fs check with svg and relative paths</li>
<li><a
href="037f801075"><code>037f801</code></a>
release: v6.2.4</li>
<li><a
href="7a4fabab6a"><code>7a4faba</code></a>
fix: fs check in transform middleware (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19761">#19761</a>)</li>
<li>See full diff in <a
href="https://github.com/vitejs/vite/commits/v6.2.5/packages/vite">compare
view</a></li>
</ul>
</details>
<br />

Updates `vite` from 5.4.12 to 5.4.16
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/releases">vite's
releases</a>.</em></p>
<blockquote>
<h2>v6.2.5</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.2.5/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.2.4</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.2.4/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/blob/v6.2.5/packages/vite/CHANGELOG.md">vite's
changelog</a>.</em></p>
<blockquote>
<h2><!-- raw HTML omitted -->6.2.5 (2025-04-03)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: backport <a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19782">#19782</a>,
fs check with svg and relative paths (<a
href="fdb196e9f8">fdb196e</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19782">#19782</a></li>
</ul>
<h2><!-- raw HTML omitted -->6.2.4 (2025-03-31)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: fs check in transform middleware (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19761">#19761</a>)
(<a
href="7a4fabab6a">7a4faba</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19761">#19761</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c176acf70a"><code>c176acf</code></a>
release: v6.2.5</li>
<li><a
href="fdb196e9f8"><code>fdb196e</code></a>
fix: backport <a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19782">#19782</a>,
fs check with svg and relative paths</li>
<li><a
href="037f801075"><code>037f801</code></a>
release: v6.2.4</li>
<li><a
href="7a4fabab6a"><code>7a4faba</code></a>
fix: fs check in transform middleware (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19761">#19761</a>)</li>
<li>See full diff in <a
href="https://github.com/vitejs/vite/commits/v6.2.5/packages/vite">compare
view</a></li>
</ul>
</details>
<br />

Updates `vite` from 5.4.12 to 5.4.16
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/releases">vite's
releases</a>.</em></p>
<blockquote>
<h2>v6.2.5</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.2.5/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.2.4</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.2.4/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/blob/v6.2.5/packages/vite/CHANGELOG.md">vite's
changelog</a>.</em></p>
<blockquote>
<h2><!-- raw HTML omitted -->6.2.5 (2025-04-03)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: backport <a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19782">#19782</a>,
fs check with svg and relative paths (<a
href="fdb196e9f8">fdb196e</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19782">#19782</a></li>
</ul>
<h2><!-- raw HTML omitted -->6.2.4 (2025-03-31)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: fs check in transform middleware (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19761">#19761</a>)
(<a
href="7a4fabab6a">7a4faba</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19761">#19761</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c176acf70a"><code>c176acf</code></a>
release: v6.2.5</li>
<li><a
href="fdb196e9f8"><code>fdb196e</code></a>
fix: backport <a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19782">#19782</a>,
fs check with svg and relative paths</li>
<li><a
href="037f801075"><code>037f801</code></a>
release: v6.2.4</li>
<li><a
href="7a4fabab6a"><code>7a4faba</code></a>
fix: fs check in transform middleware (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19761">#19761</a>)</li>
<li>See full diff in <a
href="https://github.com/vitejs/vite/commits/v6.2.5/packages/vite">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/nestrilabs/nestri/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-03 18:50:19 +03:00
dependabot[bot]
f4aa2ca4a4 build(deps): bump vite from 6.2.2 to 6.2.3 in /apps/docs in the npm_and_yarn group across 1 directory (#213)
Bumps the npm_and_yarn group with 1 update in the /apps/docs directory:
[vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite).

Updates `vite` from 6.2.2 to 6.2.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/releases">vite's
releases</a>.</em></p>
<blockquote>
<h2>v6.2.3</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.2.3/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/blob/v6.2.3/packages/vite/CHANGELOG.md">vite's
changelog</a>.</em></p>
<blockquote>
<h2><!-- raw HTML omitted -->6.2.3 (2025-03-24)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: fs raw query with query separators (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19702">#19702</a>)
(<a
href="f234b5744d">f234b57</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19702">#19702</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="16869d7c99"><code>16869d7</code></a>
release: v6.2.3</li>
<li><a
href="f234b5744d"><code>f234b57</code></a>
fix: fs raw query with query separators (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19702">#19702</a>)</li>
<li>See full diff in <a
href="https://github.com/vitejs/vite/commits/v6.2.3/packages/vite">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=vite&package-manager=npm_and_yarn&previous-version=6.2.2&new-version=6.2.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/nestrilabs/nestri/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Wanjohi <71614375+wanjohiryan@users.noreply.github.com>
2025-04-03 18:44:46 +03:00
Wanjohi
6092c4e4f8 🐜 fix(www): Change CTA for now (#223)
## Description
Change the CTA for the landing page
2025-04-03 18:29:21 +03:00
Wanjohi
f3d7ea2663 🧹 chore: Use simpler PR template (#220)
## Description
Use a simpler template
2025-03-26 08:01:50 +03:00
Wanjohi
7ff4ff8c90 🐜 fix(infra): Make sure all stages are in sync (#219)
## Description
Syncs all branches to the current changes
2025-03-26 07:59:40 +03:00
Wanjohi
7ecc068466 feat(infra): Use a shared VPC (#218)
## Description
The scope of this PR is to add a shared VPC for everyone on the team.
2025-03-26 06:29:25 +03:00
Wanjohi
633b332700 🏇🏾ci(docs): Deploy docs to cloudflare (#217)
## Description
This deploys docs to cloudflare pages

## Related Issues
<!-- List any related issues (e.g., "Closes #123", "Fixes #456") -->

## Type of Change

- [ ] Bug fix (non-breaking change)
- [ ] New feature (non-breaking change)
- [ ] Breaking change (fix or feature that changes existing
functionality)
- [ ] Documentation update
- [ ] Other (please describe):

## Checklist

- [ ] I have updated relevant documentation
- [ ] My code follows the project's coding style
- [ ] My changes generate no new warnings/errors

## Notes for Reviewers
<!-- Point out areas you'd like reviewers to focus on, questions you
have, or decisions that need discussion -->

## Screenshots/Demo
<!-- If applicable, add screenshots or a GIF demo of your changes
(especially for UI changes) -->

## Additional Context
<!-- Add any other context about the pull request here -->
2025-03-26 04:03:17 +03:00
Wanjohi
cacdae79c0 🐜 fix(ci): Remove unnecessary code 2025-03-26 03:35:16 +03:00
Wanjohi
ca4432bcde 🐜 fix(ci): Fix issue where main does not deploy to prod (#216)
## Description
Fix an issue where the `apps/www` CI does not push to main

## Related Issues
<!-- List any related issues (e.g., "Closes #123", "Fixes #456") -->

## Type of Change

- [x] Bug fix (non-breaking change)
- [ ] New feature (non-breaking change)
- [ ] Breaking change (fix or feature that changes existing
functionality)
- [ ] Documentation update
- [ ] Other (please describe):

## Checklist

- [ ] I have updated relevant documentation
- [ ] My code follows the project's coding style
- [ ] My changes generate no new warnings/errors

## Notes for Reviewers
<!-- Point out areas you'd like reviewers to focus on, questions you
have, or decisions that need discussion -->

## Screenshots/Demo
<!-- If applicable, add screenshots or a GIF demo of your changes
(especially for UI changes) -->

## Additional Context
<!-- Add any other context about the pull request here -->
2025-03-26 03:31:09 +03:00
Wanjohi
261a1276f5 🏇 ci(www): Test whether it is working (#215)
## Description
This fixes issues with the `apps/www` ci
## Related Issues
<!-- List any related issues (e.g., "Closes #123", "Fixes #456") -->

## Type of Change

- [x] Bug fix (non-breaking change)
- [ ] New feature (non-breaking change)
- [ ] Breaking change (fix or feature that changes existing
functionality)
- [ ] Documentation update
- [ ] Other (please describe):

## Checklist

- [ ] I have updated relevant documentation
- [ ] My code follows the project's coding style
- [ ] My changes generate no new warnings/errors

## Notes for Reviewers
<!-- Point out areas you'd like reviewers to focus on, questions you
have, or decisions that need discussion -->

## Screenshots/Demo
<!-- If applicable, add screenshots or a GIF demo of your changes
(especially for UI changes) -->

## Additional Context
<!-- Add any other context about the pull request here -->
2025-03-26 03:20:40 +03:00
Wanjohi
a45b2bf9b7 feat(ci): Deploy nestri landing page (#214)
## Description
This attempts to deploy `apps/www` to the new CF account using
cloudflare pages project

## Related Issues
<!-- List any related issues (e.g., "Closes #123", "Fixes #456") -->

## Type of Change

- [ ] Bug fix (non-breaking change)
- [x] New feature (non-breaking change)
- [ ] Breaking change (fix or feature that changes existing
functionality)
- [ ] Documentation update
- [ ] Other (please describe):

## Checklist

- [ ] I have updated relevant documentation
- [ ] My code follows the project's coding style
- [ ] My changes generate no new warnings/errors

## Notes for Reviewers
<!-- Point out areas you'd like reviewers to focus on, questions you
have, or decisions that need discussion -->

## Screenshots/Demo
<!-- If applicable, add screenshots or a GIF demo of your changes
(especially for UI changes) -->

## Additional Context
<!-- Add any other context about the pull request here -->
2025-03-26 03:04:28 +03:00
Wanjohi
f62fc1fb4b feat(www): Finish up on the onboarding (#210)
Merging this prematurely to make sure the team is on the same boat... like dang! We need to find a better way to do this. 

Plus it has become too big
2025-03-26 02:21:53 +03:00
dependabot[bot]
957eca7794 build(deps-dev): bump nuxt from 3.15.4 to 3.16.1 in /apps/docs in the npm_and_yarn group across 1 directory (#211)
Bumps the npm_and_yarn group with 1 update in the /apps/docs directory:
[nuxt](https://github.com/nuxt/nuxt/tree/HEAD/packages/nuxt).

Updates `nuxt` from 3.15.4 to 3.16.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/nuxt/nuxt/releases">nuxt's
releases</a>.</em></p>
<blockquote>
<h2>v3.16.1</h2>
<p><a
href="https://github.com/nuxt/nuxt/compare/v3.16.0...v3.16.1">compare
changes</a></p>
<h3>🔥 Performance</h3>
<ul>
<li><strong>nuxt:</strong> Use browser cache for payloads (<a
href="https://redirect.github.com/nuxt/nuxt/pull/31379">#31379</a>)</li>
</ul>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>nuxt:</strong> Restore nuxt aliases to nitro
compilerOptions.paths (<a
href="https://redirect.github.com/nuxt/nuxt/pull/31278">#31278</a>)</li>
<li><strong>nuxt:</strong> Use new <code>mocked-exports</code> (<a
href="https://redirect.github.com/nuxt/nuxt/pull/31295">#31295</a>)</li>
<li><strong>nuxt:</strong> Check resolved options for polyfills (<a
href="https://redirect.github.com/nuxt/nuxt/pull/31307">#31307</a>)</li>
<li><strong>nuxt:</strong> Render style component html (<a
href="https://redirect.github.com/nuxt/nuxt/pull/31337">#31337</a>)</li>
<li><strong>nuxt:</strong> Add missing lazy hydration prop in regex (<a
href="https://redirect.github.com/nuxt/nuxt/pull/31359">#31359</a>)</li>
<li><strong>nuxt:</strong> Fully resolve nuxt dependencies (<a
href="https://redirect.github.com/nuxt/nuxt/pull/31436">#31436</a>)</li>
<li><strong>vite:</strong> Don't show interim vite build output files
(<a
href="https://redirect.github.com/nuxt/nuxt/pull/31439">#31439</a>)</li>
<li><strong>nuxt:</strong> Ignore prerendering unprefixed public assets
(<a
href="https://github.com/nuxt/nuxt/commit/151912ec3">151912ec3</a>)</li>
<li><strong>nuxt:</strong> Use more performant router catchall pattern
(<a
href="https://redirect.github.com/nuxt/nuxt/pull/31450">#31450</a>)</li>
<li><strong>nuxt:</strong> Prevent param duplication in
<code>typedPages</code> implementation (<a
href="https://redirect.github.com/nuxt/nuxt/pull/31331">#31331</a>)</li>
<li><strong>nuxt:</strong> Sort route paths before creating route tree
(<a
href="https://redirect.github.com/nuxt/nuxt/pull/31454">#31454</a>)</li>
</ul>
<h3>📖 Documentation</h3>
<ul>
<li>Update link to vercel edge network (<a
href="https://github.com/nuxt/nuxt/commit/ec20802a5">ec20802a5</a>)</li>
<li>Improve HMR performance note for Windows users (<a
href="https://redirect.github.com/nuxt/nuxt/pull/31301">#31301</a>)</li>
<li>Correct WSL note phrasing (<a
href="https://redirect.github.com/nuxt/nuxt/pull/31322">#31322</a>)</li>
<li>Fix typo (<a
href="https://redirect.github.com/nuxt/nuxt/pull/31341">#31341</a>)</li>
<li>Adjust <code>app.head</code> example (<a
href="https://redirect.github.com/nuxt/nuxt/pull/31350">#31350</a>)</li>
<li>Include package manager options in update script (<a
href="https://redirect.github.com/nuxt/nuxt/pull/31346">#31346</a>)</li>
<li>Add missing comma (<a
href="https://redirect.github.com/nuxt/nuxt/pull/31362">#31362</a>)</li>
<li>Add mention of <code>addServerTemplate</code> to modules guide (<a
href="https://redirect.github.com/nuxt/nuxt/pull/31369">#31369</a>)</li>
<li>Add <code>rspack</code> and remove <code>test-utils</code> for
monorepo guide (<a
href="https://redirect.github.com/nuxt/nuxt/pull/31371">#31371</a>)</li>
<li>Adjust example (<a
href="https://redirect.github.com/nuxt/nuxt/pull/31372">#31372</a>)</li>
<li>Update experimental docs (<a
href="https://redirect.github.com/nuxt/nuxt/pull/31388">#31388</a>)</li>
<li>Use <code>ini</code> syntax block highlighting for <code>.env</code>
files (<a
href="https://github.com/nuxt/nuxt/commit/f79fabe46">f79fabe46</a>)</li>
<li>Improve <code>useHydration</code> docs (<a
href="https://redirect.github.com/nuxt/nuxt/pull/31427">#31427</a>)</li>
<li>Update broken docs links (<a
href="https://redirect.github.com/nuxt/nuxt/pull/31430">#31430</a>)</li>
<li>Mention possibility of prerendering api routes (<a
href="https://redirect.github.com/nuxt/nuxt/pull/31234">#31234</a>)</li>
</ul>
<h3>🏡 Chore</h3>
<ul>
<li>Fix gitignore (<a
href="https://github.com/nuxt/nuxt/commit/6fe9dff7e">6fe9dff7e</a>)</li>
<li>Bump axios dependency in lockfile (<a
href="https://github.com/nuxt/nuxt/commit/c3352e80b">c3352e80b</a>)</li>
<li>Lint repo (<a
href="https://github.com/nuxt/nuxt/commit/2ab20bfdc">2ab20bfdc</a>)</li>
<li>Add scorecard badge (<a
href="https://redirect.github.com/nuxt/nuxt/pull/31302">#31302</a>)</li>
<li>Dedupe (<a
href="https://github.com/nuxt/nuxt/commit/be5d85f2b">be5d85f2b</a>)</li>
</ul>
<h3> Tests</h3>
<ul>
<li>Migrate runtime compiler test to playwright (+ add test cases) (<a
href="https://redirect.github.com/nuxt/nuxt/pull/31405">#31405</a>)</li>
<li>Migrate spa preloader tests to playwright (<a
href="https://redirect.github.com/nuxt/nuxt/pull/31273">#31273</a>)</li>
<li>Use <code>srvx</code> and random port for remote provider (<a
href="https://redirect.github.com/nuxt/nuxt/pull/31432">#31432</a>)</li>
</ul>
<h3>🤖 CI</h3>
<ul>
<li>Automate release on merge of of v3/v4 (<a
href="https://github.com/nuxt/nuxt/commit/6ae5b5fdb">6ae5b5fdb</a>)</li>
<li>Fix workflow quoting (<a
href="https://github.com/nuxt/nuxt/commit/fef39cf3c">fef39cf3c</a>)</li>
</ul>
<h3>❤️ Contributors</h3>
<ul>
<li>Daniel Roe (<a
href="https://github.com/danielroe"><code>@​danielroe</code></a>)</li>
<li>Anoesj Sadraee (<a
href="https://github.com/Anoesj"><code>@​Anoesj</code></a>)</li>
<li>Peter Radko (<a
href="https://github.com/Gwynerva"><code>@​Gwynerva</code></a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="cd38de24c1"><code>cd38de2</code></a>
v3.16.1</li>
<li><a
href="ea9025ea01"><code>ea9025e</code></a>
fix(nuxt): sort route paths before creating route tree (<a
href="https://github.com/nuxt/nuxt/tree/HEAD/packages/nuxt/issues/31454">#31454</a>)</li>
<li><a
href="7bbc794b19"><code>7bbc794</code></a>
fix(nuxt): prevent param duplication in <code>typedPages</code>
implementation (<a
href="https://github.com/nuxt/nuxt/tree/HEAD/packages/nuxt/issues/31331">#31331</a>)</li>
<li><a
href="10a4f8ee6b"><code>10a4f8e</code></a>
fix(nuxt): use more performant router catchall pattern (<a
href="https://github.com/nuxt/nuxt/tree/HEAD/packages/nuxt/issues/31450">#31450</a>)</li>
<li><a
href="502720f4c8"><code>502720f</code></a>
chore(deps): update all non-major dependencies (3.x) (<a
href="https://github.com/nuxt/nuxt/tree/HEAD/packages/nuxt/issues/31452">#31452</a>)</li>
<li><a
href="151912ec38"><code>151912e</code></a>
fix(nuxt): ignore prerendering unprefixed public assets</li>
<li><a
href="a752be862a"><code>a752be8</code></a>
docs: update broken docs links (<a
href="https://github.com/nuxt/nuxt/tree/HEAD/packages/nuxt/issues/31430">#31430</a>)</li>
<li><a
href="19ac2e76ff"><code>19ac2e7</code></a>
fix(nuxt): fully resolve nuxt dependencies (<a
href="https://github.com/nuxt/nuxt/tree/HEAD/packages/nuxt/issues/31436">#31436</a>)</li>
<li><a
href="9374ceb420"><code>9374ceb</code></a>
chore(deps): update devdependency nitropack to v2.11.7 (3.x) (<a
href="https://github.com/nuxt/nuxt/tree/HEAD/packages/nuxt/issues/31441">#31441</a>)</li>
<li><a
href="e26dd61e2e"><code>e26dd61</code></a>
chore(deps): update all non-major dependencies (3.x) (<a
href="https://github.com/nuxt/nuxt/tree/HEAD/packages/nuxt/issues/31421">#31421</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/nuxt/nuxt/commits/v3.16.1/packages/nuxt">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=nuxt&package-manager=npm_and_yarn&previous-version=3.15.4&new-version=3.16.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/nestrilabs/nestri/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-21 10:05:48 +03:00
Wanjohi
74f8208fa4 🐜 fix: Fix dynamodb errors when trying to authenticate (#208)
## Description
This fixes an issue where `openauthjs` throws timeout errors while
attempting to access DynamoDB
> I am so glad this was not a major issue 😅
## Related Issues
[OpenAuth Error TypeError: fetch failed while accessing DynamoDB on AWS
#5543
](https://github.com/sst/sst/issues/5543)
[Error TypeError: fetch failed while accessing DynamoDB on AWS
#220](https://github.com/toolbeam/openauth/issues/220)
## Type of Change

- [x] Bug fix (non-breaking change)
- [ ] New feature (non-breaking change)
- [ ] Breaking change (fix or feature that changes existing
functionality)
- [ ] Documentation update
- [ ] Other (please describe):

## Checklist

- [x] I have updated relevant documentation
- [ ] My code follows the project's coding style
- [ ] My changes generate no new warnings/errors

## Screenshots/Demo

![image](https://github.com/user-attachments/assets/03656741-4e74-4947-8a15-333f5cf19dc8)
2025-03-10 04:43:14 +03:00
Wanjohi
b251584ccb 🧹 chore(www): Update the onboarding (#207)
## Description
<!-- Briefly describe the purpose and scope of your changes -->

## Related Issues
<!-- List any related issues (e.g., "Closes #123", "Fixes #456") -->

## Type of Change

- [x] Bug fix (non-breaking change)
- [ ] New feature (non-breaking change)
- [ ] Breaking change (fix or feature that changes existing
functionality)
- [ ] Documentation update
- [ ] Other (please describe):

## Checklist

- [ ] I have updated relevant documentation
- [ ] My code follows the project's coding style
- [ ] My changes generate no new warnings/errors

## Notes for Reviewers
<!-- Point out areas you'd like reviewers to focus on, questions you
have, or decisions that need discussion -->

## Screenshots/Demo
<!-- If applicable, add screenshots or a GIF demo of your changes
(especially for UI changes) -->

## Additional Context
<!-- Add any other context about the pull request here -->
2025-03-10 04:06:03 +03:00
dependabot[bot]
15825c70e6 build(deps): bump ring from 0.17.11 to 0.17.13 in /packages/server in the cargo group across 1 directory (#205)
Bumps the cargo group with 1 update in the /packages/server directory:
[ring](https://github.com/briansmith/ring).

Updates `ring` from 0.17.11 to 0.17.13
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/briansmith/ring/blob/main/RELEASES.md">ring's
changelog</a>.</em></p>
<blockquote>
<h1>Version 0.17.13 (2025-03-06)</h1>
<p>Increased MSRV to 1.66.0 to avoid bugs in earlier versions so that we
can
safely use <code>core::arch::x86_64::__cpuid</code> and
<code>core::arch::x86::__cpuid</code> from
Rust in future releases.</p>
<p>AVX2-based VAES-CLMUL implementation. This will be a notable
performance
improvement for most newish x86-64 systems. This will likely raise the
minimum
binutils version supported for very old Linux distros.</p>
<h1>Version 0.17.12 (2025-03-05)</h1>
<p>Bug fix: <a
href="https://redirect.github.com/briansmith/ring/pull/2447">briansmith/ring#2447</a>
for denial of service (DoS).</p>
<ul>
<li>
<p>Fixes a panic in
<code>ring::aead::quic::HeaderProtectionKey::new_mask()</code> when
integer overflow checking is enabled. In the QUIC protocol, an attacker
can
induce this panic by sending a specially-crafted packet. Even
unintentionally
it is likely to occur in 1 out of every 2**32 packets sent and/or
received.</p>
</li>
<li>
<p>Fixes a panic on 64-bit targets in <code>ring::aead::{AES_128_GCM,
AES_256_GCM}</code>
when overflow checking is enabled, when encrypting/decrypting
approximately
68,719,476,700 bytes (about 64 gigabytes) of data in a single chunk.
Protocols
like TLS and SSH are not affected by this because those protocols break
large
amounts of data into small chunks. Similarly, most applications will not
attempt to encrypt/decrypt 64GB of data in one chunk.</p>
</li>
</ul>
<p>Overflow checking is not enabled in release mode by default, but
<code>RUSTFLAGS=&quot;-C overflow-checks&quot;</code> or
<code>overflow-checks = true</code> in the Cargo.toml
profile can override this. Overflow checking is usually enabled by
default in
debug mode.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/briansmith/ring/commits">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ring&package-manager=cargo&previous-version=0.17.11&new-version=0.17.13)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/nestrilabs/nestri/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-08 10:42:21 +02:00
Wanjohi
117503081b feat(www): Finish up on the onboarding (#202)
## Description
This is an attempt to finish up on the onboarding and creating a team

## Type of Change

- [ ] Bug fix (non-breaking change)
- [x] New feature (non-breaking change)
- [ ] Breaking change (fix or feature that changes existing
functionality)
- [ ] Documentation update
- [ ] Other (please describe):

## Checklist

- [ ] I have updated relevant documentation
- [x] My code follows the project's coding style
- [x] My changes generate no new warnings/errors
2025-03-05 22:44:00 +03:00
Wanjohi
1aeafec40b 🐜 fix(db): Migrate to Neon org account (#204)
## Description
Migrates to a neon account shared by the Nestrilabs organisation

## Related Issues
<!-- List any related issues (e.g., "Closes #123", "Fixes #456") -->

## Type of Change

- [ ] Bug fix (non-breaking change)
- [ ] New feature (non-breaking change)
- [ ] Breaking change (fix or feature that changes existing
functionality)
- [ ] Documentation update
- [ ] Other (please describe):

## Checklist

- [ ] I have updated relevant documentation
- [ ] My code follows the project's coding style
- [ ] My changes generate no new warnings/errors

## Notes for Reviewers
<!-- Point out areas you'd like reviewers to focus on, questions you
have, or decisions that need discussion -->

## Screenshots/Demo
<!-- If applicable, add screenshots or a GIF demo of your changes
(especially for UI changes) -->

## Additional Context
<!-- Add any other context about the pull request here -->
2025-03-03 14:59:48 +03:00
Wanjohi
9ab4b6580c 🐜 fix(db): Fix database state issues (#203)
## Description
This attempts to fix all database issues for all teammates

## Related Issues
1. Getting funny errors while trying to run `sst dev`
2. The neon pulumi stuff trying to create a db each time on push

## Type of Change

- [x] Bug fix (non-breaking change)
- [ ] New feature (non-breaking change)
- [ ] Breaking change (fix or feature that changes existing
functionality)
- [ ] Documentation update
- [ ] Other (please describe):

## Checklist

- [ ] I have updated relevant documentation
- [ ] My code follows the project's coding style
- [x] My changes generate no new warnings/errors

## Notes for Reviewers
<!-- Point out areas you'd like reviewers to focus on, questions you
have, or decisions that need discussion -->

## Screenshots/Demo
<!-- If applicable, add screenshots or a GIF demo of your changes
(especially for UI changes) -->

## Additional Context
<!-- Add any other context about the pull request here -->
2025-03-03 13:36:13 +03:00
Kristian Ollikainen
49853807a1 feat(relay): Port muxing and TLS (#197)
## Description
This PR will work on adding port muxing (share single port for HTTP/WS +
WebRTC connections), along with API communication.

## Type of Change

- [x] Bug fix (non-breaking change)
- [x] New feature (non-breaking change)

## Checklist

- [ ] I have updated relevant documentation
- [x] My code follows the project's coding style
- [x] My changes generate no new warnings/errors

---------

Co-authored-by: DatCaptainHorse <DatCaptainHorse@users.noreply.github.com>
2025-03-02 18:47:25 +03:00
Wanjohi
321dda60d9 🐜 fix(www): Error Missing "./400.css" specifier in "@fontsource/geist-mono" (#201)
## Description
Attempts to fix the build issue (again) where the non-variable fonts
from font-source are throwing `Missing "./*00.css" specifier in
"@fontsource/geist-*` while building or developing locally... like damn!

## Related Issues
<!-- List any related issues (e.g., "Closes #123", "Fixes #456") -->

## Type of Change

- [x] Bug fix (non-breaking change)
- [ ] New feature (non-breaking change)
- [ ] Breaking change (fix or feature that changes existing
functionality)
- [ ] Documentation update
- [ ] Other (please describe):

## Checklist

- [x] I have updated relevant documentation
- [x] My code follows the project's coding style
- [ ] My changes generate no new warnings/errors
2025-03-02 14:54:20 +03:00
Wanjohi
fb47bb6699 🐜 fix: Remove old.sst.config.ts file 2025-03-02 01:47:00 +03:00
Wanjohi
849a470073 🐜 fix(infra): Share the same Neon project 2025-03-02 01:30:57 +03:00
Wanjohi
178c612f0f 🐜 fix: Make sure the db uses the same name (#199)
## Description
This fixes the issue where Cloudflare fails

## Related Issues
<!-- List any related issues (e.g., "Closes #123", "Fixes #456") -->

## Type of Change

- [x] Bug fix (non-breaking change)
- [ ] New feature (non-breaking change)
- [ ] Breaking change (fix or feature that changes existing
functionality)
- [ ] Documentation update
- [ ] Other (please describe):

## Checklist

- [x] I have updated relevant documentation
- [x] My code follows the project's coding style
- [x] My changes generate no new warnings/errors
2025-03-02 00:01:25 +03:00
Kristian Ollikainen
b18b08b822 feat(runner): Rust updates and improvements (#196)
## Description
- Updates to latest Rust 2024 🎉
- Make DataChannel messages ordered on nestri-server side
- Bugfixes and code improvements + formatting

## Type of Change

- [x] Bug fix (non-breaking change)
- [x] New feature (non-breaking change)

## Checklist

- [x] I have updated relevant documentation
- [x] My code follows the project's coding style
- [x] My changes generate no new warnings/errors

---------

Co-authored-by: DatCaptainHorse <DatCaptainHorse@users.noreply.github.com>
Co-authored-by: Wanjohi <elviswanjohi47@gmail.com>
2025-03-01 21:57:54 +02:00
dependabot[bot]
ea96fed4f6 build(deps-dev): bump vite from 5.4.10 to 5.4.12 in /packages/www in the npm_and_yarn group across 1 directory (#195)
Bumps the npm_and_yarn group with 1 update in the /packages/www
directory:
[vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite).

Updates `vite` from 5.4.10 to 5.4.12
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/releases">vite's
releases</a>.</em></p>
<blockquote>
<h2>v5.4.12</h2>
<p>This version contains a breaking change due to security fixes. See <a
href="https://github.com/vitejs/vite/security/advisories/GHSA-vg6x-rcgg-rjx6">https://github.com/vitejs/vite/security/advisories/GHSA-vg6x-rcgg-rjx6</a>
for more details.</p>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v5.4.12/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v5.4.11</h2>
<p>Please refer to <a
href="ecd2375460/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/blob/v5.4.12/packages/vite/CHANGELOG.md">vite's
changelog</a>.</em></p>
<blockquote>
<h2><!-- raw HTML omitted -->5.4.12 (2025-01-20)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix!: check host header to prevent DNS rebinding attacks and
introduce <code>server.allowedHosts</code> (<a
href="9da4abc8dd">9da4abc</a>)</li>
<li>fix!: default <code>server.cors: false</code> to disallow fetching
from untrusted origins (<a
href="dfea38f1ff">dfea38f</a>)</li>
<li>fix: verify token for HMR WebSocket connection (<a
href="b71a5c89a1">b71a5c8</a>)</li>
<li>chore: add deps update changelog (<a
href="ecd2375460">ecd2375</a>)</li>
</ul>
<h2><!-- raw HTML omitted -->5.4.11 (2024-11-11)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix(deps): update dependencies of postcss-modules (<a
href="ceb15db613">ceb15db</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/18617">#18617</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f428aa9af8"><code>f428aa9</code></a>
release: v5.4.12</li>
<li><a
href="9da4abc8dd"><code>9da4abc</code></a>
fix!: check host header to prevent DNS rebinding attacks and introduce
`serve...</li>
<li><a
href="b71a5c89a1"><code>b71a5c8</code></a>
fix: verify token for HMR WebSocket connection</li>
<li><a
href="dfea38f1ff"><code>dfea38f</code></a>
fix!: default <code>server.cors: false</code> to disallow fetching from
untrusted origins</li>
<li><a
href="ecd2375460"><code>ecd2375</code></a>
chore: add deps update changelog</li>
<li><a
href="c54c860f9d"><code>c54c860</code></a>
release: v5.4.11</li>
<li>See full diff in <a
href="https://github.com/vitejs/vite/commits/v5.4.12/packages/vite">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=vite&package-manager=npm_and_yarn&previous-version=5.4.10&new-version=5.4.12)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/nestrilabs/nestri/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-27 21:41:21 +03:00
Wanjohi
457aac2258 feat(infra): Update infra and add support for teams to SST (#186)
## Description
- [x] Adds support for AWS SSO, which makes us (the team) able to use
SST and update the components independently
- [x] Splits the webpage into the landing page (Qwik), and Astro (the
console) in charge of playing. This allows us to pass in Environment
Variables to the console
- ~Migrates the docs from Nuxt to Nextjs, and connects them to SST. This
allows us to use Fumadocs _citation needed_ that's much more beautiful,
and supports OpenApi~
- Cloudflare pages with github integration is not working on our new CF
account. So we will have to push the pages deployment manually with
Github actions
- [x] Moves the current set up from my personal CF and AWS accounts to
dedicated Nestri accounts -

## Related Issues
<!-- List any related issues (e.g., "Closes #123", "Fixes #456") -->

## Type of Change

- [ ] Bug fix (non-breaking change)
- [x] New feature (non-breaking change)
- [ ] Breaking change (fix or feature that changes existing
functionality)
- [x] Documentation update
- [ ] Other (please describe):

## Checklist

- [x] I have updated relevant documentation
- [x] My code follows the project's coding style
- [x] My changes generate no new warnings/errors

## Notes for Reviewers
<!-- Point out areas you'd like reviewers to focus on, questions you
have, or decisions that need discussion -->
Please approve my PR 🥹


## Screenshots/Demo
<!-- If applicable, add screenshots or a GIF demo of your changes
(especially for UI changes) -->

## Additional Context
<!-- Add any other context about the pull request here -->
2025-02-27 18:52:05 +03:00
Kristian Ollikainen
237e016b2d 🐜 fix(runner): Workarounds for NVIDIA drivers (#188)
#### Description

This PR will be fixing issue of runner not working under Ubuntu and
other Debian-based distros with NVIDIA GPUs.
Another fix will be arriving is allowing Steam to run without namespace
requirements, removing the need for `--privileged` flag in certain
situations.

#### Type of Change

- [x] Bug fix (non-breaking change)

---------

Co-authored-by: DatCaptainHorse <DatCaptainHorse@users.noreply.github.com>
2025-02-27 17:37:23 +02:00
dependabot[bot]
1d68ec71b8 build(deps): bump the npm_and_yarn group across 2 directories with 3 updates (#192)
Bumps the npm_and_yarn group with 2 updates in the /apps/docs directory:
[@nuxt/vite-builder](https://github.com/nuxt/nuxt/tree/HEAD/packages/vite)
and [nuxt](https://github.com/nuxt/nuxt/tree/HEAD/packages/nuxt).
Bumps the npm_and_yarn group with 1 update in the /apps/www directory:
[vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite).

Updates `@nuxt/vite-builder` from 3.13.2 to 3.15.4
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/nuxt/nuxt/releases"><code>@​nuxt/vite-builder</code>'s
releases</a>.</em></p>
<blockquote>
<h2>v3.15.4</h2>
<blockquote>
<p>3.15.4 is the next patch release.</p>
</blockquote>
<h2> Upgrading</h2>
<p>As usual, our recommendation for upgrading is to run:</p>
<pre lang="sh"><code>npx nuxi@latest upgrade --force
</code></pre>
<p>This will refresh your lockfile as well, and ensures that you pull in
updates from other dependencies that Nuxt relies on, particularly in the
unjs ecosystem.</p>
<h2>👉 Changelog</h2>
<p><a
href="https://github.com/nuxt/nuxt/compare/v3.15.3...v3.15.4">compare
changes</a></p>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>nuxt:</strong> Improve error logging when parsing with
<code>acorn</code> (<a
href="https://redirect.github.com/nuxt/nuxt/pull/30754">#30754</a>)</li>
<li><strong>nuxt:</strong> Clear island uid before saving into the
payload (<a
href="https://redirect.github.com/nuxt/nuxt/pull/30767">#30767</a>)</li>
<li><strong>kit:</strong> Load <code>@nuxt/schema</code> from
<code>nuxt</code> package dir (<a
href="https://redirect.github.com/nuxt/nuxt/pull/30774">#30774</a>)</li>
<li><strong>nuxt:</strong> Allow restarting nuxt on paths outside
<code>srcDir</code> (<a
href="https://redirect.github.com/nuxt/nuxt/pull/30771">#30771</a>)</li>
<li><strong>nuxt:</strong> Don't warn about calling
<code>useRoute</code> in SFC setup (<a
href="https://redirect.github.com/nuxt/nuxt/pull/30788">#30788</a>)</li>
<li><strong>webpack:</strong> Disallow cross-site requests in no-cors
mode (<a
href="https://redirect.github.com/nuxt/nuxt/pull/30757">#30757</a>)</li>
<li><strong>vite:</strong> Restore <code>externality</code> for dev
server externals (<a
href="https://redirect.github.com/nuxt/nuxt/pull/30802">#30802</a>)</li>
</ul>
<h3>💅 Refactors</h3>
<ul>
<li><strong>vite:</strong> Use new rollup <code>chunk.names</code> for
asset names (<a
href="https://redirect.github.com/nuxt/nuxt/pull/30780">#30780</a>)</li>
</ul>
<h3>❤️ Contributors</h3>
<ul>
<li>Daniel Roe (<a
href="https://github.com/danielroe"><code>@​danielroe</code></a>)</li>
<li>Peter Radko (<a
href="https://github.com/Gwynerva"><code>@​Gwynerva</code></a>)</li>
<li>Lansi (<a
href="https://github.com/lansi951"><code>@​lansi951</code></a>)</li>
<li>Julien Huang (<a
href="https://github.com/huang-julien"><code>@​huang-julien</code></a>)</li>
<li>Norbiros (<a
href="https://github.com/Norbiros"><code>@​Norbiros</code></a>)</li>
</ul>
<h2>v3.15.3</h2>
<blockquote>
<p>3.15.3 is the next regularly scheduled patch release.</p>
</blockquote>
<h2>👀 Highlights</h2>
<h3>CORS configuration for dev server</h3>
<p>Alongside a range of improvements, we've also shipped a significant
fix to impose <a
href="https://github.com/nuxt/nuxt/commit/406db5b4d">CORS origin
restrictions on the dev server</a>. This applies to your Vite or
Webpack/Rspack dev middleware only.</p>
<p>This is a significant/breaking change we would not normally ship in a
patch but it is a security fix (see <a
href="https://github.com/nuxt/nuxt/security/advisories/GHSA-4gf7-ff8x-hq99">https://github.com/nuxt/nuxt/security/advisories/GHSA-4gf7-ff8x-hq99</a>
and <a
href="https://github.com/nuxt/nuxt/security/advisories/GHSA-2452-6xj8-jh47">https://github.com/nuxt/nuxt/security/advisories/GHSA-2452-6xj8-jh47</a>)
and we urge you to update ASAP.</p>
<p>You can configure the allowed origins and other CORS options via the
<code>devServer.cors</code> options in your <code>nuxt.config</code>,
which may be relevant if you are developing with a custom hostname:</p>
<pre lang="ts"><code>export default defineNuxtConfig({
&lt;/tr&gt;&lt;/table&gt; 
</code></pre>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="244da170dd"><code>244da17</code></a>
v3.15.4</li>
<li><a
href="56d889ebb0"><code>56d889e</code></a>
fix(vite): restore <code>externality</code> for dev server externals (<a
href="https://github.com/nuxt/nuxt/tree/HEAD/packages/vite/issues/30802">#30802</a>)</li>
<li><a
href="325ed41a40"><code>325ed41</code></a>
refactor(vite): use new rollup <code>chunk.names</code> for asset names
(<a
href="https://github.com/nuxt/nuxt/tree/HEAD/packages/vite/issues/30780">#30780</a>)</li>
<li><a
href="940bcb8c4e"><code>940bcb8</code></a>
chore(deps): update all non-major dependencies (3.x) (<a
href="https://github.com/nuxt/nuxt/tree/HEAD/packages/vite/issues/30747">#30747</a>)</li>
<li><a
href="048f974eba"><code>048f974</code></a>
v3.15.3</li>
<li><a
href="c6056bd07d"><code>c6056bd</code></a>
chore(deps): update all non-major dependencies (3.x) (<a
href="https://github.com/nuxt/nuxt/tree/HEAD/packages/vite/issues/30733">#30733</a>)</li>
<li><a
href="406db5b4d2"><code>406db5b</code></a>
fix(vite,webpack): restrict access via cors to local origins + allow
configur...</li>
<li><a
href="09d8db5f2f"><code>09d8db5</code></a>
chore(deps): update vitest to v3.0.4 (3.x) (<a
href="https://github.com/nuxt/nuxt/tree/HEAD/packages/vite/issues/30724">#30724</a>)</li>
<li><a
href="10a54958d3"><code>10a5495</code></a>
fix(vite): inline shared folder in dev mode (<a
href="https://github.com/nuxt/nuxt/tree/HEAD/packages/vite/issues/30690">#30690</a>)</li>
<li><a
href="f1c2948cd0"><code>f1c2948</code></a>
chore(deps): update all non-major dependencies (3.x) (<a
href="https://github.com/nuxt/nuxt/tree/HEAD/packages/vite/issues/30694">#30694</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/nuxt/nuxt/commits/v3.15.4/packages/vite">compare
view</a></li>
</ul>
</details>
<br />

Updates `nuxt` from 3.13.2 to 3.15.4
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/nuxt/nuxt/releases">nuxt's
releases</a>.</em></p>
<blockquote>
<h2>v3.15.4</h2>
<blockquote>
<p>3.15.4 is the next patch release.</p>
</blockquote>
<h2> Upgrading</h2>
<p>As usual, our recommendation for upgrading is to run:</p>
<pre lang="sh"><code>npx nuxi@latest upgrade --force
</code></pre>
<p>This will refresh your lockfile as well, and ensures that you pull in
updates from other dependencies that Nuxt relies on, particularly in the
unjs ecosystem.</p>
<h2>👉 Changelog</h2>
<p><a
href="https://github.com/nuxt/nuxt/compare/v3.15.3...v3.15.4">compare
changes</a></p>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>nuxt:</strong> Improve error logging when parsing with
<code>acorn</code> (<a
href="https://redirect.github.com/nuxt/nuxt/pull/30754">#30754</a>)</li>
<li><strong>nuxt:</strong> Clear island uid before saving into the
payload (<a
href="https://redirect.github.com/nuxt/nuxt/pull/30767">#30767</a>)</li>
<li><strong>kit:</strong> Load <code>@nuxt/schema</code> from
<code>nuxt</code> package dir (<a
href="https://redirect.github.com/nuxt/nuxt/pull/30774">#30774</a>)</li>
<li><strong>nuxt:</strong> Allow restarting nuxt on paths outside
<code>srcDir</code> (<a
href="https://redirect.github.com/nuxt/nuxt/pull/30771">#30771</a>)</li>
<li><strong>nuxt:</strong> Don't warn about calling
<code>useRoute</code> in SFC setup (<a
href="https://redirect.github.com/nuxt/nuxt/pull/30788">#30788</a>)</li>
<li><strong>webpack:</strong> Disallow cross-site requests in no-cors
mode (<a
href="https://redirect.github.com/nuxt/nuxt/pull/30757">#30757</a>)</li>
<li><strong>vite:</strong> Restore <code>externality</code> for dev
server externals (<a
href="https://redirect.github.com/nuxt/nuxt/pull/30802">#30802</a>)</li>
</ul>
<h3>💅 Refactors</h3>
<ul>
<li><strong>vite:</strong> Use new rollup <code>chunk.names</code> for
asset names (<a
href="https://redirect.github.com/nuxt/nuxt/pull/30780">#30780</a>)</li>
</ul>
<h3>❤️ Contributors</h3>
<ul>
<li>Daniel Roe (<a
href="https://github.com/danielroe"><code>@​danielroe</code></a>)</li>
<li>Peter Radko (<a
href="https://github.com/Gwynerva"><code>@​Gwynerva</code></a>)</li>
<li>Lansi (<a
href="https://github.com/lansi951"><code>@​lansi951</code></a>)</li>
<li>Julien Huang (<a
href="https://github.com/huang-julien"><code>@​huang-julien</code></a>)</li>
<li>Norbiros (<a
href="https://github.com/Norbiros"><code>@​Norbiros</code></a>)</li>
</ul>
<h2>v3.15.3</h2>
<blockquote>
<p>3.15.3 is the next regularly scheduled patch release.</p>
</blockquote>
<h2>👀 Highlights</h2>
<h3>CORS configuration for dev server</h3>
<p>Alongside a range of improvements, we've also shipped a significant
fix to impose <a
href="https://github.com/nuxt/nuxt/commit/406db5b4d">CORS origin
restrictions on the dev server</a>. This applies to your Vite or
Webpack/Rspack dev middleware only.</p>
<p>This is a significant/breaking change we would not normally ship in a
patch but it is a security fix (see <a
href="https://github.com/nuxt/nuxt/security/advisories/GHSA-4gf7-ff8x-hq99">https://github.com/nuxt/nuxt/security/advisories/GHSA-4gf7-ff8x-hq99</a>
and <a
href="https://github.com/nuxt/nuxt/security/advisories/GHSA-2452-6xj8-jh47">https://github.com/nuxt/nuxt/security/advisories/GHSA-2452-6xj8-jh47</a>)
and we urge you to update ASAP.</p>
<p>You can configure the allowed origins and other CORS options via the
<code>devServer.cors</code> options in your <code>nuxt.config</code>,
which may be relevant if you are developing with a custom hostname:</p>
<pre lang="ts"><code>export default defineNuxtConfig({
&lt;/tr&gt;&lt;/table&gt; 
</code></pre>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="244da170dd"><code>244da17</code></a>
v3.15.4</li>
<li><a
href="ceaf0f5aea"><code>ceaf0f5</code></a>
chore(deps): update all non-major dependencies (3.x) (<a
href="https://github.com/nuxt/nuxt/tree/HEAD/packages/nuxt/issues/30804">#30804</a>)</li>
<li><a
href="626eba06cc"><code>626eba0</code></a>
fix(nuxt): don't warn about calling <code>useRoute</code> in SFC setup
(<a
href="https://github.com/nuxt/nuxt/tree/HEAD/packages/nuxt/issues/30788">#30788</a>)</li>
<li><a
href="7a1e5c818b"><code>7a1e5c8</code></a>
fix(nuxt): allow restarting nuxt on paths outside <code>srcDir</code>
(<a
href="https://github.com/nuxt/nuxt/tree/HEAD/packages/nuxt/issues/30771">#30771</a>)</li>
<li><a
href="ca2d91f8e0"><code>ca2d91f</code></a>
fix(kit): load <code>@nuxt/schema</code> from <code>nuxt</code> package
dir (<a
href="https://github.com/nuxt/nuxt/tree/HEAD/packages/nuxt/issues/30774">#30774</a>)</li>
<li><a
href="b78da56dd7"><code>b78da56</code></a>
fix(nuxt): clear island uid before saving into the payload (<a
href="https://github.com/nuxt/nuxt/tree/HEAD/packages/nuxt/issues/30767">#30767</a>)</li>
<li><a
href="e0c47f9bf3"><code>e0c47f9</code></a>
fix(nuxt): improve error logging when parsing with <code>acorn</code>
(<a
href="https://github.com/nuxt/nuxt/tree/HEAD/packages/nuxt/issues/30754">#30754</a>)</li>
<li><a
href="940bcb8c4e"><code>940bcb8</code></a>
chore(deps): update all non-major dependencies (3.x) (<a
href="https://github.com/nuxt/nuxt/tree/HEAD/packages/nuxt/issues/30747">#30747</a>)</li>
<li><a
href="048f974eba"><code>048f974</code></a>
v3.15.3</li>
<li><a
href="e96a96dbd9"><code>e96a96d</code></a>
perf(nuxt): enable <code>Transition</code> component only on client side
(<a
href="https://github.com/nuxt/nuxt/tree/HEAD/packages/nuxt/issues/30720">#30720</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/nuxt/nuxt/commits/v3.15.4/packages/nuxt">compare
view</a></li>
</ul>
</details>
<br />

Updates `vite` from 5.4.8 to 6.1.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/releases">vite's
releases</a>.</em></p>
<blockquote>
<h2>v5.4.12</h2>
<p>This version contains a breaking change due to security fixes. See <a
href="https://github.com/vitejs/vite/security/advisories/GHSA-vg6x-rcgg-rjx6">https://github.com/vitejs/vite/security/advisories/GHSA-vg6x-rcgg-rjx6</a>
for more details.</p>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v5.4.12/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v5.4.11</h2>
<p>Please refer to <a
href="ecd2375460/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v5.4.10</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v5.4.10/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v5.4.9</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v5.4.9/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v5.4.8</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v5.4.8/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v5.4.7</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v5.4.7/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v5.4.6</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v5.4.6/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v5.4.5</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v5.4.5/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v5.4.4</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v5.4.4/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v5.4.3</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v5.4.3/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>plugin-legacy@5.4.3</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/plugin-legacy@5.4.3/packages/plugin-legacy/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>plugin-legacy@5.4.2</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/plugin-legacy@5.4.2/packages/plugin-legacy/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v5.4.2</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v5.4.2/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>plugin-legacy@5.4.1</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/plugin-legacy@5.4.1/packages/plugin-legacy/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v5.4.1</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v5.4.1/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>plugin-legacy@5.4.0</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/plugin-legacy@5.4.0/packages/plugin-legacy/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/blob/v5.4.12/packages/vite/CHANGELOG.md">vite's
changelog</a>.</em></p>
<blockquote>
<h2><!-- raw HTML omitted -->5.4.12 (2025-01-20)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix!: check host header to prevent DNS rebinding attacks and
introduce <code>server.allowedHosts</code> (<a
href="9da4abc8dd">9da4abc</a>)</li>
<li>fix!: default <code>server.cors: false</code> to disallow fetching
from untrusted origins (<a
href="dfea38f1ff">dfea38f</a>)</li>
<li>fix: verify token for HMR WebSocket connection (<a
href="b71a5c89a1">b71a5c8</a>)</li>
<li>chore: add deps update changelog (<a
href="ecd2375460">ecd2375</a>)</li>
</ul>
<h2><!-- raw HTML omitted -->5.4.11 (2024-11-11)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix(deps): update dependencies of postcss-modules (<a
href="ceb15db613">ceb15db</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/18617">#18617</a></li>
</ul>
<h2><!-- raw HTML omitted -->5.4.10 (2024-10-23)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: backport <a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18367">#18367</a>,augment
hash for CSS files to prevent chromium erroring by loading previous fil
(<a
href="7d1a3bcc43">7d1a3bc</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/18367">#18367</a>
<a
href="https://redirect.github.com/vitejs/vite/issues/18412">#18412</a></li>
</ul>
<h2><!-- raw HTML omitted -->5.4.9 (2024-10-14)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: bump launch-editor-middleware to v2.9.1 (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18348">#18348</a>)
(<a
href="508d9ab834">508d9ab</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/18348">#18348</a></li>
<li>fix(css): fix lightningcss dep url resolution with custom root (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18125">#18125</a>)
(<a
href="eae00b561e">eae00b5</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/18125">#18125</a></li>
<li>fix(data-uri): only match ids starting with <code>data:</code> (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18241">#18241</a>)
(<a
href="96084d6e75">96084d6</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/18241">#18241</a></li>
<li>fix(deps): bump tsconfck (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18322">#18322</a>)
(<a
href="dc5434ce87">dc5434c</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/18322">#18322</a></li>
<li>fix(hmr): don't try to rewrite imports for direct CSS soft
invalidation (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18252">#18252</a>)
(<a
href="851b258c34">851b258</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/18252">#18252</a></li>
<li>fix(ssr): (backport <a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18150">#18150</a>)
fix source map remapping with multiple sources (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18204">#18204</a>)
(<a
href="262a8796d4">262a879</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/18204">#18204</a></li>
<li>chore: update all url references of vitejs.dev to vite.dev (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18276">#18276</a>)
(<a
href="c23558a7af">c23558a</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/18276">#18276</a></li>
<li>chore: update license copyright (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18278">#18278</a>)
(<a
href="1864eb17b2">1864eb1</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/18278">#18278</a></li>
<li>docs: update homepage (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18274">#18274</a>)
(<a
href="ae4416349e">ae44163</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/18274">#18274</a></li>
</ul>
<h2><!-- raw HTML omitted -->5.4.8 (2024-09-25)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix(css): backport <a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18113">#18113</a>,
fix missing source file warning with sass modern api custom importer (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18">#18</a>
(<a
href="7d47fc1c74">7d47fc1</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/18183">#18183</a></li>
<li>fix(css): backport <a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18128">#18128</a>,
ensure sass compiler initialized only once (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18184">#18184</a>)
(<a
href="8464d976b1">8464d97</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/18128">#18128</a>
<a
href="https://redirect.github.com/vitejs/vite/issues/18184">#18184</a></li>
</ul>
<h2><!-- raw HTML omitted -->5.4.7 (2024-09-20)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: treat config file as ESM in Deno (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18158">#18158</a>)
(<a
href="b5908a24ba">b5908a2</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/18158">#18158</a></li>
</ul>
<h2><!-- raw HTML omitted -->5.4.6 (2024-09-16)<!-- raw HTML omitted
--></h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f428aa9af8"><code>f428aa9</code></a>
release: v5.4.12</li>
<li><a
href="9da4abc8dd"><code>9da4abc</code></a>
fix!: check host header to prevent DNS rebinding attacks and introduce
`serve...</li>
<li><a
href="b71a5c89a1"><code>b71a5c8</code></a>
fix: verify token for HMR WebSocket connection</li>
<li><a
href="dfea38f1ff"><code>dfea38f</code></a>
fix!: default <code>server.cors: false</code> to disallow fetching from
untrusted origins</li>
<li><a
href="ecd2375460"><code>ecd2375</code></a>
chore: add deps update changelog</li>
<li><a
href="c54c860f9d"><code>c54c860</code></a>
release: v5.4.11</li>
<li><a
href="5f52bc8b9e"><code>5f52bc8</code></a>
release: v5.4.10</li>
<li><a
href="7d1a3bcc43"><code>7d1a3bc</code></a>
fix: backport <a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18367">#18367</a>,augment
hash for CSS files to prevent chromium erroring ...</li>
<li><a
href="898d61f94b"><code>898d61f</code></a>
release: v5.4.9</li>
<li><a
href="508d9ab834"><code>508d9ab</code></a>
fix: bump launch-editor-middleware to v2.9.1 (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18348">#18348</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/vitejs/vite/commits/v5.4.12/packages/vite">compare
view</a></li>
</ul>
</details>
<br />

Updates `vite` from 5.3.5 to 5.4.12
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/releases">vite's
releases</a>.</em></p>
<blockquote>
<h2>v5.4.12</h2>
<p>This version contains a breaking change due to security fixes. See <a
href="https://github.com/vitejs/vite/security/advisories/GHSA-vg6x-rcgg-rjx6">https://github.com/vitejs/vite/security/advisories/GHSA-vg6x-rcgg-rjx6</a>
for more details.</p>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v5.4.12/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v5.4.11</h2>
<p>Please refer to <a
href="ecd2375460/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v5.4.10</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v5.4.10/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v5.4.9</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v5.4.9/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v5.4.8</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v5.4.8/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v5.4.7</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v5.4.7/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v5.4.6</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v5.4.6/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v5.4.5</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v5.4.5/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v5.4.4</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v5.4.4/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v5.4.3</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v5.4.3/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>plugin-legacy@5.4.3</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/plugin-legacy@5.4.3/packages/plugin-legacy/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>plugin-legacy@5.4.2</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/plugin-legacy@5.4.2/packages/plugin-legacy/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v5.4.2</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v5.4.2/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>plugin-legacy@5.4.1</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/plugin-legacy@5.4.1/packages/plugin-legacy/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v5.4.1</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v5.4.1/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>plugin-legacy@5.4.0</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/plugin-legacy@5.4.0/packages/plugin-legacy/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/blob/v5.4.12/packages/vite/CHANGELOG.md">vite's
changelog</a>.</em></p>
<blockquote>
<h2><!-- raw HTML omitted -->5.4.12 (2025-01-20)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix!: check host header to prevent DNS rebinding attacks and
introduce <code>server.allowedHosts</code> (<a
href="9da4abc8dd">9da4abc</a>)</li>
<li>fix!: default <code>server.cors: false</code> to disallow fetching
from untrusted origins (<a
href="dfea38f1ff">dfea38f</a>)</li>
<li>fix: verify token for HMR WebSocket connection (<a
href="b71a5c89a1">b71a5c8</a>)</li>
<li>chore: add deps update changelog (<a
href="ecd2375460">ecd2375</a>)</li>
</ul>
<h2><!-- raw HTML omitted -->5.4.11 (2024-11-11)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix(deps): update dependencies of postcss-modules (<a
href="ceb15db613">ceb15db</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/18617">#18617</a></li>
</ul>
<h2><!-- raw HTML omitted -->5.4.10 (2024-10-23)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: backport <a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18367">#18367</a>,augment
hash for CSS files to prevent chromium erroring by loading previous fil
(<a
href="7d1a3bcc43">7d1a3bc</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/18367">#18367</a>
<a
href="https://redirect.github.com/vitejs/vite/issues/18412">#18412</a></li>
</ul>
<h2><!-- raw HTML omitted -->5.4.9 (2024-10-14)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: bump launch-editor-middleware to v2.9.1 (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18348">#18348</a>)
(<a
href="508d9ab834">508d9ab</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/18348">#18348</a></li>
<li>fix(css): fix lightningcss dep url resolution with custom root (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18125">#18125</a>)
(<a
href="eae00b561e">eae00b5</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/18125">#18125</a></li>
<li>fix(data-uri): only match ids starting with <code>data:</code> (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18241">#18241</a>)
(<a
href="96084d6e75">96084d6</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/18241">#18241</a></li>
<li>fix(deps): bump tsconfck (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18322">#18322</a>)
(<a
href="dc5434ce87">dc5434c</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/18322">#18322</a></li>
<li>fix(hmr): don't try to rewrite imports for direct CSS soft
invalidation (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18252">#18252</a>)
(<a
href="851b258c34">851b258</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/18252">#18252</a></li>
<li>fix(ssr): (backport <a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18150">#18150</a>)
fix source map remapping with multiple sources (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18204">#18204</a>)
(<a
href="262a8796d4">262a879</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/18204">#18204</a></li>
<li>chore: update all url references of vitejs.dev to vite.dev (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18276">#18276</a>)
(<a
href="c23558a7af">c23558a</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/18276">#18276</a></li>
<li>chore: update license copyright (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18278">#18278</a>)
(<a
href="1864eb17b2">1864eb1</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/18278">#18278</a></li>
<li>docs: update homepage (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18274">#18274</a>)
(<a
href="ae4416349e">ae44163</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/18274">#18274</a></li>
</ul>
<h2><!-- raw HTML omitted -->5.4.8 (2024-09-25)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix(css): backport <a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18113">#18113</a>,
fix missing source file warning with sass modern api custom importer (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18">#18</a>
(<a
href="7d47fc1c74">7d47fc1</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/18183">#18183</a></li>
<li>fix(css): backport <a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18128">#18128</a>,
ensure sass compiler initialized only once (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18184">#18184</a>)
(<a
href="8464d976b1">8464d97</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/18128">#18128</a>
<a
href="https://redirect.github.com/vitejs/vite/issues/18184">#18184</a></li>
</ul>
<h2><!-- raw HTML omitted -->5.4.7 (2024-09-20)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: treat config file as ESM in Deno (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18158">#18158</a>)
(<a
href="b5908a24ba">b5908a2</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/18158">#18158</a></li>
</ul>
<h2><!-- raw HTML omitted -->5.4.6 (2024-09-16)<!-- raw HTML omitted
--></h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f428aa9af8"><code>f428aa9</code></a>
release: v5.4.12</li>
<li><a
href="9da4abc8dd"><code>9da4abc</code></a>
fix!: check host header to prevent DNS rebinding attacks and introduce
`serve...</li>
<li><a
href="b71a5c89a1"><code>b71a5c8</code></a>
fix: verify token for HMR WebSocket connection</li>
<li><a
href="dfea38f1ff"><code>dfea38f</code></a>
fix!: default <code>server.cors: false</code> to disallow fetching from
untrusted origins</li>
<li><a
href="ecd2375460"><code>ecd2375</code></a>
chore: add deps update changelog</li>
<li><a
href="c54c860f9d"><code>c54c860</code></a>
release: v5.4.11</li>
<li><a
href="5f52bc8b9e"><code>5f52bc8</code></a>
release: v5.4.10</li>
<li><a
href="7d1a3bcc43"><code>7d1a3bc</code></a>
fix: backport <a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18367">#18367</a>,augment
hash for CSS files to prevent chromium erroring ...</li>
<li><a
href="898d61f94b"><code>898d61f</code></a>
release: v5.4.9</li>
<li><a
href="508d9ab834"><code>508d9ab</code></a>
fix: bump launch-editor-middleware to v2.9.1 (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18348">#18348</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/vitejs/vite/commits/v5.4.12/packages/vite">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/nestrilabs/nestri/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-24 23:51:14 +03:00
dependabot[bot]
a32c212a7e build(deps): bump openssl from 0.10.69 to 0.10.71 in /packages/server in the cargo group across 1 directory (#191)
Bumps the cargo group with 1 update in the /packages/server directory:
[openssl](https://github.com/sfackler/rust-openssl).

Updates `openssl` from 0.10.69 to 0.10.71
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/sfackler/rust-openssl/releases">openssl's
releases</a>.</em></p>
<blockquote>
<h2>openssl-v0.10.71</h2>
<h2>What's Changed</h2>
<ul>
<li>Expose rc2 ciphers on symm::Cipher by <a
href="https://github.com/alex"><code>@​alex</code></a> in <a
href="https://redirect.github.com/sfackler/rust-openssl/pull/2361">sfackler/rust-openssl#2361</a></li>
<li>add full Apache license file to openssl by <a
href="https://github.com/frncs-rss"><code>@​frncs-rss</code></a> in <a
href="https://redirect.github.com/sfackler/rust-openssl/pull/2366">sfackler/rust-openssl#2366</a></li>
<li>Release openssl v0.10.71 and openssl-sys v0.9.106 by <a
href="https://github.com/alex"><code>@​alex</code></a> in <a
href="https://redirect.github.com/sfackler/rust-openssl/pull/2369">sfackler/rust-openssl#2369</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/frncs-rss"><code>@​frncs-rss</code></a>
made their first contribution in <a
href="https://redirect.github.com/sfackler/rust-openssl/pull/2366">sfackler/rust-openssl#2366</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.70...openssl-v0.10.71">https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.70...openssl-v0.10.71</a></p>
<h2>openssl v0.10.70</h2>
<h2>What's Changed</h2>
<ul>
<li>Attempt to fix CI by pinning to the Ubuntu 22.04 image by <a
href="https://github.com/alex"><code>@​alex</code></a> in <a
href="https://redirect.github.com/sfackler/rust-openssl/pull/2357">sfackler/rust-openssl#2357</a></li>
<li>Remove EC_METHOD and EC_GROUP_new for LibreSSL 4.1 by <a
href="https://github.com/botovq"><code>@​botovq</code></a> in <a
href="https://redirect.github.com/sfackler/rust-openssl/pull/2356">sfackler/rust-openssl#2356</a></li>
<li>Test against 3.4.0 final release by <a
href="https://github.com/alex"><code>@​alex</code></a> in <a
href="https://redirect.github.com/sfackler/rust-openssl/pull/2359">sfackler/rust-openssl#2359</a></li>
<li>Expose <code>SslMethod::{dtls_client,dtls_server}</code> by <a
href="https://github.com/alex"><code>@​alex</code></a> in <a
href="https://redirect.github.com/sfackler/rust-openssl/pull/2358">sfackler/rust-openssl#2358</a></li>
<li>Fix lifetimes in ssl::select_next_proto by <a
href="https://github.com/sfackler"><code>@​sfackler</code></a> in <a
href="https://redirect.github.com/sfackler/rust-openssl/pull/2360">sfackler/rust-openssl#2360</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.69...openssl-v0.10.70">https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.69...openssl-v0.10.70</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="1a16077c43"><code>1a16077</code></a>
Merge pull request <a
href="https://redirect.github.com/sfackler/rust-openssl/issues/2369">#2369</a>
from alex/bump-for-release</li>
<li><a
href="3312618216"><code>3312618</code></a>
Merge pull request <a
href="https://redirect.github.com/sfackler/rust-openssl/issues/2366">#2366</a>
from frncs-rss/license_apache</li>
<li><a
href="f71fcf2176"><code>f71fcf2</code></a>
Release openssl v0.10.71 and openssl-sys v0.9.106</li>
<li><a
href="6ca34f8fce"><code>6ca34f8</code></a>
add full Apache license file</li>
<li><a
href="c0f1442b18"><code>c0f1442</code></a>
Merge pull request <a
href="https://redirect.github.com/sfackler/rust-openssl/issues/2361">#2361</a>
from alex/rc2</li>
<li><a
href="ae495dc27d"><code>ae495dc</code></a>
Expose rc2 ciphers on symm::Cipher</li>
<li><a
href="a4d399b0f1"><code>a4d399b</code></a>
Release openssl v0.10.70</li>
<li><a
href="c9a33e2860"><code>c9a33e2</code></a>
Release openssl-sys v0.9.105</li>
<li><a
href="f014afb230"><code>f014afb</code></a>
Merge pull request <a
href="https://redirect.github.com/sfackler/rust-openssl/issues/2360">#2360</a>
from sfackler/fix-alpn-lifetimes</li>
<li><a
href="8e6e30bbf7"><code>8e6e30b</code></a>
Fix lifetimes in ssl::select_next_proto</li>
<li>Additional commits viewable in <a
href="https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.69...openssl-v0.10.71">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=openssl&package-manager=cargo&previous-version=0.10.69&new-version=0.10.71)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/nestrilabs/nestri/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-24 02:39:24 +03:00
dependabot[bot]
5d350bda1f build(deps): bump golang.org/x/net from 0.27.0 to 0.33.0 in /packages/maitred in the go_modules group across 1 directory (#190)
Bumps the go_modules group with 1 update in the /packages/maitred
directory: [golang.org/x/net](https://github.com/golang/net).

Updates `golang.org/x/net` from 0.27.0 to 0.33.0
<details>
<summary>Commits</summary>
<ul>
<li><a
href="dfc720dfe0"><code>dfc720d</code></a>
go.mod: update golang.org/x dependencies</li>
<li><a
href="8e66b04771"><code>8e66b04</code></a>
html: use strings.EqualFold instead of lowering ourselves</li>
<li><a
href="b935f7b5d7"><code>b935f7b</code></a>
html: avoid endless loop on error token</li>
<li><a
href="9af49ef148"><code>9af49ef</code></a>
route: remove unused sizeof* consts</li>
<li><a
href="6705db9a4d"><code>6705db9</code></a>
quic: clean up crypto streams when dropping packet protection keys</li>
<li><a
href="4ef7588d2b"><code>4ef7588</code></a>
quic: handle ACK frame in packet which drops number space</li>
<li><a
href="552d8ac903"><code>552d8ac</code></a>
Revert &quot;route: change from syscall to x/sys/unix&quot;</li>
<li><a
href="13a7c0108b"><code>13a7c01</code></a>
Revert &quot;route: remove unused sizeof* consts on freebsd&quot;</li>
<li><a
href="285e1cf665"><code>285e1cf</code></a>
go.mod: update golang.org/x dependencies</li>
<li><a
href="d0a1049b7e"><code>d0a1049</code></a>
route: remove unused sizeof* consts on freebsd</li>
<li>Additional commits viewable in <a
href="https://github.com/golang/net/compare/v0.27.0...v0.33.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=golang.org/x/net&package-manager=go_modules&previous-version=0.27.0&new-version=0.33.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/nestrilabs/nestri/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-24 02:39:03 +03:00
Philipp Neumann
2bbd705af9 feat: Aggregated mouse movements (#185)
Mouse Movements are aggreagated to send out with an fixed interval

This reduces sending mouse movement events especially when the mouse is
moved really fast. The mouse events are not lost they will be summed and
aggregated to one single mouse movement and then send with the fixed
interval
2025-02-14 17:53:41 +02:00
Wanjohi
a23ae8025b 🐜 fix(www): Fix GPU lines on iOS (#183)
## Description
I am trying to fix a bug where the `Bring your own GPU` landing page
feature is broken on iOS

## Related Issues
<!-- List any related issues (e.g., "Closes #123", "Fixes #456") -->

## Type of Change

- [x] Bug fix (non-breaking change)
- [ ] New feature (non-breaking change)
- [ ] Breaking change (fix or feature that changes existing
functionality)
- [ ] Documentation update
- [ ] Other (please describe):

## Checklist

- [x] I have updated relevant documentation
- [x] My code follows the project's coding style
- [x] My changes generate no new warnings/errors

## Notes for Reviewers
<!-- Point out areas you'd like reviewers to focus on, questions you
have, or decisions that need discussion -->

## Screenshots/Demo
<!-- If applicable, add screenshots or a GIF demo of your changes
(especially for UI changes) -->
![IMG_1805
webp](https://github.com/user-attachments/assets/6b268737-243d-4a6d-920e-f86781b53ded)

## Additional Context
<!-- Add any other context about the pull request here -->
2025-02-11 13:59:12 +03:00
Kristian Ollikainen
7de6e243ed feat(runner): DMA-BUF support (for NVIDIA) (#181)
Also includes other improvements and hopefully reducing LOC with some
cleanup.

---------

Co-authored-by: DatCaptainHorse <DatCaptainHorse@users.noreply.github.com>
2025-02-11 12:03:03 +02:00
Wanjohi
060718d8b0 feat: Update website, API, and infra (#164)
>Adds `maitred` in charge of handling automated game installs, updates,
and even execution.

>Not only that, we have the hosted stuff here
>- [x] AWS Task on ECS GPUs
>- [ ] Add a service to listen for game starts and stops
(docker-compose.yml)
>- [x] Add a queue for requesting a game to start
>- [x] Fix up the play/watch UI 

>TODO:
>- Add a README
>- Add an SST docs

Edit:

- This adds a new landing page, updates the homepage etc etc
>I forgot what the rest of the updated stuff are 😅
2025-02-11 12:26:35 +03:00
Wanjohi
93327bdf1a 🧹 chore: Add CODEOWNERS (#182)
This tries to clear up the chaos on who is in charge of what
2025-02-08 06:12:25 +03:00
Kristian Ollikainen
4546eb6767 🐜 fix(runner): Workaround for NVIDIA driver issue (#180)
Co-authored-by: DatCaptainHorse <DatCaptainHorse@users.noreply.github.com>
2025-02-03 18:00:10 +02:00
Kristian Ollikainen
9d084011a2 🐜 fix(runner): Add missing source copy for gst-wayland-display (#179)
Okay that is good now

Co-authored-by: DatCaptainHorse <DatCaptainHorse@users.noreply.github.com>
2025-02-01 18:15:03 +02:00
Kristian Ollikainen
0642d0b787 🐜 fix(runner): gst-wayland-display directory fix (#178)
Co-authored-by: DatCaptainHorse <DatCaptainHorse@users.noreply.github.com>
2025-02-01 16:30:03 +02:00
Kristian Ollikainen
ec8d4f81da 🐜 fix(runner): Use proper directory (#177)
Co-authored-by: DatCaptainHorse <DatCaptainHorse@users.noreply.github.com>
2025-02-01 03:46:52 +02:00
Kristian Ollikainen
421aa70a7b 🐜 fix(CI): Caching fixes and improvements (#176)
Fixes previous PR

---------

Co-authored-by: DatCaptainHorse <DatCaptainHorse@users.noreply.github.com>
2025-01-31 22:22:26 +02:00
Wanjohi
29bc44ab83 perf(runner): Reduce CI buildtimes (#174)
This is an effort to reduce build times, for the runner image

---------

Co-authored-by: Kristian Ollikainen <14197772+DatCaptainHorse@users.noreply.github.com>
2025-01-31 15:24:37 +03:00
Kristian Ollikainen
c14626b104 feat(scripts): Auto-launch Steam (#173)
Woop

Co-authored-by: DatCaptainHorse <DatCaptainHorse@users.noreply.github.com>
2025-01-31 03:49:59 +03:00
Kristian Ollikainen
614bbbfce0 🐜 fix: a silly thing (#172) 2025-01-30 18:36:39 +02:00
Wanjohi
c2363b0bce feat: Add protobuf (#171)
This is a second attempt to add protobuf to Nestri, after the first one
failed

---------

Co-authored-by: Philipp Neumann <3daquawolf@gmail.com>
Co-authored-by: DatCaptainHorse <DatCaptainHorse@users.noreply.github.com>
2025-01-29 04:16:27 +03:00
Wanjohi
be6ea11052 revert(protobuf): Remove protobuf for now 2025-01-28 20:23:28 +03:00
Philipp Neumann
fbaa8835a3 feat: protobuf input messaging (#165)
Replace json protocol by protobuf
generate protobuf files with `bun buf generate` or just `buf generate`

- [x]  Implement all datatypes with proto files

- [x] Map to ts types or use the generated proto types directly with:
   - [x] web frontend
   - [x] relay
   - [x] runner

- [ ] final performance test (to be done when CI builds new images)

---------

Co-authored-by: DatCaptainHorse <DatCaptainHorse@users.noreply.github.com>
2025-01-28 16:04:20 +02:00
Kristian Ollikainen
431733a0e8 🐜 fix(scripts): Use class codes to check for lspci GPU devices (#168)
Fixes gpu_helpers returning "Non-VGA" devices as GPUs.

I was curious about DeepSeek's so I tried it's hand with this as my head
isn't quite up-to-speed yet 😅
But yeah it seems less error-prone than previous naive string-approach.

---------

Co-authored-by: DatCaptainHorse <DatCaptainHorse@users.noreply.github.com>
Co-authored-by: Wanjohi <elviswanjohi47@gmail.com>
Co-authored-by: Wanjohi <71614375+wanjohiryan@users.noreply.github.com>
2025-01-28 07:52:05 +03:00
Wanjohi
4c33d7fe00 🐜 fix(runner): Fix Pacman failing to install packages on Amazon Linux 2 (#167)
CachyOS v3 fails to run pacman while on Amazon Linux 2... causing issues
with running our hosted version on ECS

Exact errors:
```bash
[root@2b6cbba9d746 /]# sudo pacman -Syu vim
error: failed to initialize alpm library:
(root: /, dbpath: /var/lib/pacman/)
could not find or read directory
```
2025-01-27 07:14:21 +03:00
Wanjohi
bec5ba7c99 feat(runner): Add ludusavi backups (#166)
This lets us do game backups with this command
`STEAMAPPID=730 ludusavi wrap --infer steam --force
"steam://yourcommandhere"`
2025-01-26 10:19:10 +03:00
Wanjohi
056d7e070d 🐜 fix(ci): Fix the runner.yml 2025-01-23 02:19:18 +03:00
Kristian Ollikainen
fb77dc9572 🐜 fix(runner): dbus directory and mesa install (#163)
should fix the missing dbus runtime directory issue, using mesa-git as
it's less cumbersome to deal with package wise than normal mesa

---------

Co-authored-by: DatCaptainHorse <DatCaptainHorse@users.noreply.github.com>
Co-authored-by: Wanjohi <elviswanjohi47@gmail.com>
2025-01-23 02:16:33 +03:00
Wanjohi
9b8d187887 feat(www): Add api docs (#161) 2025-01-21 03:38:22 +03:00
Wanjohi
4a27f54e80 🐜 fix(www): Fix the marquee 2025-01-21 01:12:58 +03:00
Wanjohi
0d0b1f4b14 🐜 fix(www): Fix posthog 2025-01-18 07:50:36 +03:00
Wanjohi
f480ced756 feat: Connect the frontend to the API (#160) 2025-01-18 07:12:47 +03:00
Wanjohi
dfe37a6cec 🐜 fix(www): Fix pricing button sound 2025-01-14 03:49:05 +03:00
Wanjohi
3be481e260 feat(www): Finish up on the UI components (#158) 2025-01-14 03:24:53 +03:00
Wanjohi
a3ff8bff9f 🐜 fix(www): Fix the random avatars 2025-01-10 23:23:18 +03:00
Wanjohi
4df031d1bb feat(www): Add the home page UI (#155) 2025-01-10 01:22:45 +03:00
Wanjohi
f6287ef586 feat(auth): Update the authentication UI (#153)
We added a new Auth UI, with all the business logic to handle profiles and such... it works alright
2025-01-07 23:58:27 +03:00
Wanjohi
56b877fa27 feat: Add a websocket party (#152)
This adds functionality to connect to remote server thru the party
2025-01-05 23:45:41 +03:00
dependabot[bot]
c15657a0d1 🤖 build(deps): Bump golang.org/x/crypto from 0.29.0 to 0.31.0 in /packages/relay (#151)
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from
0.29.0 to 0.31.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="b4f1988a35"><code>b4f1988</code></a>
ssh: make the public key cache a 1-entry FIFO cache</li>
<li><a
href="7042ebcbe0"><code>7042ebc</code></a>
openpgp/clearsign: just use rand.Reader in tests</li>
<li><a
href="3e90321ac7"><code>3e90321</code></a>
go.mod: update golang.org/x dependencies</li>
<li><a
href="8c4e668694"><code>8c4e668</code></a>
x509roots/fallback: update bundle</li>
<li>See full diff in <a
href="https://github.com/golang/crypto/compare/v0.29.0...v0.31.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=golang.org/x/crypto&package-manager=go_modules&previous-version=0.29.0&new-version=0.31.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/nestrilabs/nestri/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-05 09:51:34 +03:00
Wanjohi
b47448255f feat: Add more API endpoints (#150) 2025-01-05 01:06:34 +03:00
Wanjohi
dede878c3c 🐜 fix(www): Fix a typo 2025-01-04 23:19:42 +03:00
Wanjohi
83908122bf 🐜 fix(www): Move the features around 2025-01-04 05:40:20 +03:00
Wanjohi
2c27420126 🐜 fix(www): Fix some typos 2025-01-04 05:35:58 +03:00
Wanjohi
fc5a755408 feat: Add auth flow (#146)
This adds a simple way to incorporate a centralized authentication flow.

The idea is to have the user, API and SSH (for machine authentication)
all in one place using `openauthjs` + `SST`

We also have a database now :)

> We are using InstantDB as it allows us to authenticate a use with just
the email. Plus it is super simple simple to use _of course after the
initial fumbles trying to design the db and relationships_
2025-01-04 00:02:28 +03:00
Wanjohi
33895974a7 🐜 fix(ci): Fix scheduled runners not working (#149) 2025-01-03 23:59:38 +03:00
Wanjohi
137b60edb8 feat(runner): Add steam (#148)
Nothing much- This just adds Steam to the image
2025-01-03 23:32:28 +03:00
Victor Pahuus Petersen
b479875924 Updated the Nestri Node documentation (#147)
Updated the Nestri Node documentation regarding node requirements and
added FAQ.

![image](https://github.com/user-attachments/assets/db367302-e9c3-4090-a36e-25f4d11f0cb6)

![image](https://github.com/user-attachments/assets/68b8e9ed-0cce-4d86-a689-1f3de3acc433)
2025-01-02 21:39:08 +03:00
Wanjohi
7d6a7542e2 🐛 fix(www): Fix a typo 2024-12-30 02:17:50 +03:00
Wanjohi
8c808bafcb 🐛 fix(www): Remove dead code 2024-12-27 13:06:35 +03:00
Wanjohi
08f2643dcd feat: Use howlerJS for audio 2024-12-27 13:01:13 +03:00
Wanjohi
82c1a3baea feat: Add even more features 2024-12-27 12:18:46 +03:00
Wanjohi
9fd7c6ff47 feat: Add more features 2024-12-27 12:01:11 +03:00
Wanjohi
c6c7b6a36d 🐛 fix: Change up FREE tier CTA 2024-12-27 02:10:22 +03:00
Wanjohi
c39866a019 🐛 fix: Fix a typo in pricing page 2024-12-26 22:46:13 +03:00
Wanjohi
0d36acb983 feat: Minor changes to the frontend (#145)
This PR does a facelift to the `/` and `/pricing` pages
2024-12-26 22:27:27 +03:00
Wanjohi
2c39517a27 feat: Check for updates in the packages/** directory 2024-12-10 19:26:06 +03:00
Wanjohi
aa7d3c5607 🐛 fix: Use common cache for all jobs 2024-12-10 18:50:47 +03:00
Wanjohi
9715cd9f8a 🐛 fix: Add step for setting up buildx 2024-12-10 18:46:55 +03:00
Wanjohi
a85c10a281 🐛 fix: Cache the runner image to reduce build time (#143) 2024-12-10 18:41:34 +03:00
Wanjohi
8d6b7f744b feat: Add CI for container (#141)
This creates a CI job for building `containers/runner.Containerfile` on
PR or on merge to main.

This helps in checking whether it can build and work as expected
2024-12-09 20:20:41 +03:00
Kristian Ollikainen
b6196b1c69 feat: Custom gst webrtc signaller, runtime GPU driver package install and more (#140)
🔥 🔥

Yes lots of commits because rebasing and all.. thankfully I know Git
just enough to have backups 😅

---------

Co-authored-by: Wanjohi <elviswanjohi47@gmail.com>
Co-authored-by: Kristian Ollikainen <DatCaptainHorse@users.noreply.github.com>
Co-authored-by: Wanjohi <71614375+wanjohiryan@users.noreply.github.com>
Co-authored-by: AquaWolf <3daquawolf@gmail.com>
2024-12-08 16:37:36 +03:00
Wanjohi
20d5ff511e 🧹 chore: Do some cleanup 2024-12-08 15:05:49 +03:00
Wanjohi
379db1c87b feat: Add streaming support (#125)
This adds:
- [x] Keyboard and mouse handling on the frontend
- [x] Video and audio streaming from the backend to the frontend
- [x] Input server that works with Websockets

Update - 17/11
- [ ] Master docker container to run this
- [ ] Steam runtime
- [ ] Entrypoint.sh

---------

Co-authored-by: Kristian Ollikainen <14197772+DatCaptainHorse@users.noreply.github.com>
Co-authored-by: Kristian Ollikainen <DatCaptainHorse@users.noreply.github.com>
2024-12-08 14:54:56 +03:00
Wanjohi
5eb21eeadb 🐛 fix: Remove cross-origin isolation 2024-11-27 11:48:08 +03:00
Wanjohi
339779fce1 🐛 fix: Remove cross-origin isolation 2024-11-27 11:46:40 +03:00
Victor Pahuus Petersen
565c459a5b feat: Updated Documentation (#127)
Added GitHub contributors to the homepage and and added the the
Container CLI section with @DatCaptainHorse .

---------

Co-authored-by: Diefferson Koderer Môro <diefferson.moro@gmail.com>
2024-11-11 16:47:35 +03:00
Wanjohi
be17ba026b feat: Add a new blog post 2024-10-27 05:12:05 +03:00
Wanjohi
86be67ad12 docs: Update README (#122)
Update the README
2024-10-27 01:40:57 +03:00
Wanjohi
7b29d68aed feat: Add package docker-to-rootfs (#121)
This package will handle creating the rootfs needed by CrosVM

> More info incoming
2024-10-10 14:42:16 +03:00
Victor Pahuus Petersen
cc51bd6f70 Fixed Nuxt Documentation build + added installation steps (#120)
Co-authored-by: Diefferson Koderer Môro <diefferson.moro@gmail.com>
2024-10-04 21:42:54 +03:00
Victor Pahuus Petersen
390ee2ac0f Documentation for Nestri (#116)
I have made documentation for Nestri, so everybody easy can find
instructions to get started. It will also make it easier for people to
help contribute to the documentation.

The documentation is built with Nuxt3, [Docus
](https://github.com/nuxt-themes) which uses Nuxt Content.

![image](https://github.com/user-attachments/assets/b30258c3-2267-4710-b8f4-48145e7c98d0)

![image](https://github.com/user-attachments/assets/6ccad52e-b6e1-4c8d-9c0c-bc4fae0227f1)
2024-09-27 01:22:53 +03:00
Wanjohi
bae089e223 feat: Host a relay on Hetzner (#114)
We are hosting a [MoQ](https://quic.video) relay on a remote (bare
metal) server on Hetzner

With a lot of help from @victorpahuus
2024-09-26 21:34:42 +03:00
Wanjohi
c4a6895726 🐛 fix: Remove problematic script 2024-09-24 22:15:56 +03:00
Wanjohi
efe95a7c8d feat: Add sys design 2024-09-23 20:15:49 +03:00
Wanjohi
e322693b70 🐛 fix: Move project structure to CONTRIBUTING.md 2024-09-20 15:10:50 +03:00
Wanjohi
1693fef708 feat: Add the Project Structure section to the Contributing.md 2024-09-20 14:43:09 +03:00
Wanjohi
41dbaf1b21 feat: Add CODE_OF_CONDICT.md and CONTRIBUTING.md 2024-09-20 14:32:05 +03:00
Wanjohi
9665549d0c feat: Onboarding 2024-09-20 11:37:30 +03:00
Wanjohi
6b422ca290 🐛 fix: Remove unused vars 2024-09-17 22:00:55 +03:00
Wanjohi
f2f3386bdb feat: Onboarding 2024-09-16 21:10:33 +03:00
Wanjohi
58e93b28e9 feat: Add donate page 2024-09-16 15:43:57 +03:00
Wanjohi
3088b050ed 🐛 fix: Add extra info to the hero section 2024-09-15 12:52:44 +03:00
Wanjohi
7663e17644 🐛 fix: Fix Portal on Safari 2024-09-15 01:27:06 +03:00
Wanjohi
5b713521a1 🐛 fix: Fix absolute game cover on Safari 2024-09-15 01:21:26 +03:00
Wanjohi
b1f35c9953 🐛 fix: Fix loading animation for images 2024-09-15 01:02:42 +03:00
Wanjohi
0696c9fc60 🐛 fix: Fix overflow on mobile 2024-09-14 20:44:51 +03:00
Wanjohi
abb4874749 feat: Add open-source feature 2024-09-13 23:41:17 +03:00
Wanjohi
0d4f0bce11 🐛 fix: Fix hover state on game cards 2024-09-13 21:52:25 +03:00
Wanjohi
c641d413a9 feat: Add game modals to homepage 2024-09-13 20:51:03 +03:00
Wanjohi
cac927196a 🐛 fix: Fix footer styling arrangement 2024-09-13 18:46:27 +03:00
Wanjohi
c30673f5a1 feat: Add /home (#111) 2024-09-13 17:41:34 +03:00
Wanjohi
1b1bedff36 feat: Add api (#112)
Add the api route -> https://nexus.nestri.workers.dev/
2024-09-10 22:38:35 +03:00
Wanjohi
df9f1cfe95 🐛 fix: Align the footer components 2024-09-08 23:03:12 +03:00
Wanjohi
b347115eae feat: Clean up after the blog 2024-09-08 21:28:36 +03:00
Wanjohi
5b4ea64b94 feat: Add markdown support plus /blog (#107)
Adds `/blog` page with support for `.md` and `.mdx` files.

What we learnt in setting this up will be packages in a package `@nestri/mdx` and used to set up the `/docs` and the `/terms` and `/privacy` routes
2024-09-08 20:16:56 +03:00
Wanjohi
8cc5a8b9e6 🐛 fix: Fix the hover event on footer links 2024-09-06 23:21:33 +03:00
Wanjohi
d66248cb97 🐛 fix: Use mute card colors 2024-09-05 21:30:30 +03:00
Wanjohi
1555dd7ab2 ♻ refactor: Remove apps/docs 2024-09-05 19:27:33 +03:00
Wanjohi
168be939a6 🐛 fix: Change theme color for Safari 2024-09-05 18:07:24 +03:00
Wanjohi
2e26ed08a1 fix: Change up the /404 page 2024-09-05 17:33:46 +03:00
Wanjohi
e2e5497c62 feat: Add www to cloudflare pages (#105)
Co-authored-by: --global <--global>

Add our website to cloudflare pages
2024-09-03 06:55:51 +03:00
Wanjohi
62b7a841ed feat: Add home 2024-09-02 15:46:28 +03:00
Wanjohi
2b6a048ccd 🐛 fix: Use a lower contrast color for as background color 2024-09-01 02:13:16 +03:00
Wanjohi
ba15f30bbf feat: Add game card with better colors 2024-09-01 01:19:15 +03:00
Wanjohi
8b42688bd4 feat: Game card 2024-09-01 00:34:50 +03:00
Wanjohi
1f9d3be2a6 🐛 fix: Use better contrast for selection 2024-08-31 22:00:09 +03:00
Wanjohi
22d43411b1 feat: Add support for MDX (#104)
This is an attempt to create our docs and blogs website
2024-08-31 21:37:45 +03:00
Wanjohi
a90fe4ba7a 🐛 fix: Remove unnecessary packages 2024-08-31 04:59:32 +03:00
Wanjohi
9a17df391a 🐛 fix: Remove Steam id generator 2024-08-31 04:56:19 +03:00
Wanjohi
e0b7e46c76 feat: Add a makeshift 404 page 2024-08-30 17:30:59 +03:00
Wanjohi
dc5a36b9d6 feat: Add 404 page 2024-08-30 16:57:08 +03:00
Wanjohi
73cec51728 feat: Add qwik-react (#103)
This adds the following pages:

The landing page (/)
The pricing page (/pricing)
The contact page (/contact)
The changelog page (/changelog)
Terms Of Service page (/terms)
Privacy Policy (/privacy)
2024-08-30 16:19:58 +03:00
Wanjohi
d13d3dc5d8 feat: Add nav-progress bad 2024-08-30 11:08:58 +03:00
Wanjohi
666aabeda2 🐛 fix: Change path to banner image 2024-08-30 10:38:57 +03:00
Wanjohi
5520883f00 feat: Add SEO stuff 2024-08-30 10:35:24 +03:00
Wanjohi
1cef08ebdf feat: Add eslint 2024-08-30 10:26:36 +03:00
Wanjohi
fd16947e14 feat: Add tailwind and cloudflare support 2024-08-30 10:22:10 +03:00
ejcupcake1234alt
81fc5e8f85 Create installer script. (#100)
This script might be broken, I'm in school right now, so I can't test it
at the moment. I will soon

## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**

 I have made a test installer script for locally hosting nestri.

Co-authored-by: Wanjohi <71614375+wanjohiryan@users.noreply.github.com>
2024-08-20 15:17:22 +03:00
Wanjohi
19923845c0 feat: [MAJOR] Rebrand (#101)
## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**

1. Netris has been renamed and rebranded to Nestri.
2. New Logo and colors, plus a new Philosophy and mission(more on that
later)
3. We are moving all different repos into this one - which means API,
Docker, Website, Docs etc will be moved here
2024-08-20 15:12:00 +03:00
Kristian Ollikainen
3df53e7e38 🐛 fix(base): Device selection patch for gpu-screen-recorder (#93)
## Description

Adds new `-device` argument for gpu-screen-recorder which allows
specifying a GPU to use (by `/dev/dri/cardN` path)

This fixes an issue with multi-gpu systems when device such as
`/dev/dri/card1` is passed through but gpu-screen-recorder will still
try to access `/dev/dri/card0` for capturing and failing.

Added relevant bits to `gpu_helpers.sh` to find the card path - I assume
all modern modesetting drivers will have a `/drm/` path that tells the
card number. If not, the script will fall back to gpu-screen-recorder's
own method of finding the card.

Edit: Forgot to mention patches are now copied to /tmp/ rather than
/etc/

Co-authored-by: Kristian Ollikainen <DatCaptainHorse@users.noreply.github.com>
2024-07-07 12:43:58 +03:00
Kristian Ollikainen
cf69f6c93a feat(server): Add Intel/AMD GPU support (#84)
## Description

### This is a DRAFT - Changes will be discussed and made upon requests!

In nutshell, this adds support for running Nestri with Intel and AMD
GPU's. Both integrated and dedicated.

It took a few days to find a trick for having output without dummy plugs
or connected displays, but I think I got it.

`gpu-screen-recorder` requires a custom patch to skip the check for
connected displays (as we're using a xrandr workaround which makes them
stay "unconnected")

Most likely fixes #68

### Changes

The NVIDIA sections have been split in their own code branches since
there's some NVIDIA specific things I didn't feel approriate to poke
more than necessary for the goal of this PR.

Added a script with helper functions related to GPU discovery and
gathering some basic info off from them (note: it might be better to
declare the helper script arrays outside it's initially run function).
The helper scripts rely on `lshw`.

NVIDIA code was slightly adjusted to use the bus-id's provided by the
helper functions to have some code re-use.

Cleaned up few things on the side.

---------

Co-authored-by: Kristian Ollikainen <DatCaptainHorse@users.noreply.github.com>
Co-authored-by: Wanjohi <71614375+wanjohiryan@users.noreply.github.com>
2024-07-07 11:06:48 +03:00
Wanjohi
b12b26223c feat: Add nestri cli (#79)
## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**


We are adding an option to start the Nestri server (omg almost called it
Netris :) using a cli

The idea is to reduce the friction of starting up the service and
running it, this includes:
1. Installing and configuring the Windows executables for the game
2. Running the game on a linux machine
3. Preparing the host system i.e configuring Docker, Nvidia
{Drivers,CUDA} etc etc
2024-06-28 03:26:11 +03:00
dependabot[bot]
19e2f62603 ⚒️ build(deps): Bump docker/build-push-action from 5 to 6 (#86)
Bumps
[docker/build-push-action](https://github.com/docker/build-push-action)
from 5 to 6.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/docker/build-push-action/releases">docker/build-push-action's
releases</a>.</em></p>
<blockquote>
<h2>v6.0.0</h2>
<ul>
<li>Export build record and generate <a
href="https://docs.docker.com/build/ci/github-actions/build-summary/">build
summary</a> by <a
href="https://github.com/crazy-max"><code>@​crazy-max</code></a> in <a
href="https://redirect.github.com/docker/build-push-action/pull/1120">docker/build-push-action#1120</a></li>
<li>Bump <code>@​docker/actions-toolkit</code> from 0.24.0 to 0.26.0 in
<a
href="https://redirect.github.com/docker/build-push-action/pull/1132">docker/build-push-action#1132</a>
<a
href="https://redirect.github.com/docker/build-push-action/pull/1136">docker/build-push-action#1136</a>
<a
href="https://redirect.github.com/docker/build-push-action/pull/1138">docker/build-push-action#1138</a></li>
<li>Bump braces from 3.0.2 to 3.0.3 in <a
href="https://redirect.github.com/docker/build-push-action/pull/1137">docker/build-push-action#1137</a></li>
</ul>
<blockquote>
<p>[!NOTE]
This major release adds support for generating <a
href="https://docs.docker.com/build/ci/github-actions/build-summary/">Build
summary</a> and exporting build record for your build. You can disable
this feature by setting <a
href="https://docs.docker.com/build/ci/github-actions/build-summary/#disable-job-summary">
<code>DOCKER_BUILD_NO_SUMMARY: true</code> environment variable in your
workflow</a>.</p>
</blockquote>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/docker/build-push-action/compare/v5.4.0...v6.0.0">https://github.com/docker/build-push-action/compare/v5.4.0...v6.0.0</a></p>
<h2>v5.4.0</h2>
<ul>
<li>Show builder information before building by <a
href="https://github.com/crazy-max"><code>@​crazy-max</code></a> in <a
href="https://redirect.github.com/docker/build-push-action/pull/1128">docker/build-push-action#1128</a></li>
<li>Handle attestations correctly with provenance and sbom inputs by <a
href="https://github.com/crazy-max"><code>@​crazy-max</code></a> in <a
href="https://redirect.github.com/docker/build-push-action/pull/1086">docker/build-push-action#1086</a></li>
<li>Bump <code>@​docker/actions-toolkit</code> from 0.19.0 to 0.24.0 in
<a
href="https://redirect.github.com/docker/build-push-action/pull/1088">docker/build-push-action#1088</a>
<a
href="https://redirect.github.com/docker/build-push-action/pull/1105">docker/build-push-action#1105</a>
<a
href="https://redirect.github.com/docker/build-push-action/pull/1121">docker/build-push-action#1121</a>
<a
href="https://redirect.github.com/docker/build-push-action/pull/1127">docker/build-push-action#1127</a></li>
<li>Bump undici from 5.28.3 to 5.28.4 in <a
href="https://redirect.github.com/docker/build-push-action/pull/1090">docker/build-push-action#1090</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/docker/build-push-action/compare/v5.3.0...v5.4.0">https://github.com/docker/build-push-action/compare/v5.3.0...v5.4.0</a></p>
<h2>v5.3.0</h2>
<ul>
<li>Bump <code>@​docker/actions-toolkit</code> from 0.18.0 to 0.19.0 in
<a
href="https://redirect.github.com/docker/build-push-action/pull/1080">docker/build-push-action#1080</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/docker/build-push-action/compare/v5.2.0...v5.3.0">https://github.com/docker/build-push-action/compare/v5.2.0...v5.3.0</a></p>
<h2>v5.2.0</h2>
<ul>
<li>Disable quotes detection for <code>outputs</code> input by <a
href="https://github.com/crazy-max"><code>@​crazy-max</code></a> in <a
href="https://redirect.github.com/docker/build-push-action/pull/1074">docker/build-push-action#1074</a></li>
<li>Warn about ignored inputs by <a
href="https://github.com/favonia"><code>@​favonia</code></a> in <a
href="https://redirect.github.com/docker/build-push-action/pull/1019">docker/build-push-action#1019</a></li>
<li>Bump <code>@​docker/actions-toolkit</code> from 0.14.0 to 0.18.0 in
<a
href="https://redirect.github.com/docker/build-push-action/pull/1070">docker/build-push-action#1070</a></li>
<li>Bump undici from 5.26.3 to 5.28.3 in <a
href="https://redirect.github.com/docker/build-push-action/pull/1057">docker/build-push-action#1057</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/docker/build-push-action/compare/v5.1.0...v5.2.0">https://github.com/docker/build-push-action/compare/v5.1.0...v5.2.0</a></p>
<h2>v5.1.0</h2>
<ul>
<li>Add <code>annotations</code> input by <a
href="https://github.com/crazy-max"><code>@​crazy-max</code></a> in <a
href="https://redirect.github.com/docker/build-push-action/pull/992">docker/build-push-action#992</a></li>
<li>Add <code>secret-envs</code> input by <a
href="https://github.com/elias-lundgren"><code>@​elias-lundgren</code></a>
in <a
href="https://redirect.github.com/docker/build-push-action/pull/980">docker/build-push-action#980</a></li>
<li>Bump <code>@​babel/traverse</code> from 7.17.3 to 7.23.2 in <a
href="https://redirect.github.com/docker/build-push-action/pull/991">docker/build-push-action#991</a></li>
<li>Bump <code>@​docker/actions-toolkit</code> from 0.13.0-rc.1 to
0.14.0 in <a
href="https://redirect.github.com/docker/build-push-action/pull/990">docker/build-push-action#990</a>
<a
href="https://redirect.github.com/docker/build-push-action/pull/1006">docker/build-push-action#1006</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/docker/build-push-action/compare/v5.0.0...v5.1.0">https://github.com/docker/build-push-action/compare/v5.0.0...v5.1.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c382f710d3"><code>c382f71</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/build-push-action/issues/1120">#1120</a>
from crazy-max/build-summary</li>
<li><a
href="5a5b70d974"><code>5a5b70d</code></a>
chore: update generated content</li>
<li><a
href="dc24cf9e25"><code>dc24cf9</code></a>
don't generate summary for cloud driver</li>
<li><a
href="667cb22c52"><code>667cb22</code></a>
DOCKER_BUILD_NO_SUMMARY env to disable summary</li>
<li><a
href="d880b1964b"><code>d880b19</code></a>
generate build summary</li>
<li><a
href="e51051ad0b"><code>e51051a</code></a>
export build record and upload artifact</li>
<li><a
href="86c2bd0031"><code>86c2bd0</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/build-push-action/issues/1137">#1137</a>
from docker/dependabot/npm_and_yarn/braces-3.0.3</li>
<li><a
href="268d2b1611"><code>268d2b1</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/build-push-action/issues/1138">#1138</a>
from docker/dependabot/npm_and_yarn/docker/actions-t...</li>
<li><a
href="2b8dc7f529"><code>2b8dc7f</code></a>
chore: update generated content</li>
<li><a
href="840c12be17"><code>840c12b</code></a>
chore(deps): Bump <code>@​docker/actions-toolkit</code> from 0.25.1 to
0.26.0</li>
<li>Additional commits viewable in <a
href="https://github.com/docker/build-push-action/compare/v5...v6">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=docker/build-push-action&package-manager=github_actions&previous-version=5&new-version=6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Wanjohi <71614375+wanjohiryan@users.noreply.github.com>
2024-06-28 03:25:27 +03:00
dependabot[bot]
9e9411c83f ⚒️ build(deps): Bump moq-server from a6b1d2b to aedb284 (#90)
Bumps [moq-server](https://github.com/kixelated/moq-rs) from `a6b1d2b`
to `aedb284`.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="aedb284ac8"><code>aedb284</code></a>
Remove unneeded build-deps</li>
<li><a
href="d73744b230"><code>d73744b</code></a>
Add required version for moq-sub</li>
<li><a
href="e661e52a79"><code>e661e52</code></a>
moq-sub (updated) (<a
href="https://redirect.github.com/kixelated/moq-rs/issues/170">#170</a>)</li>
<li>See full diff in <a
href="a6b1d2b63a...aedb284ac8">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-26 22:19:07 +03:00
Kristian Ollikainen
904f300ead 🐛 fix(base): Use meson for gpu-screen-recorder (#83)
## Description

The `gpu-screen-recorder` project switched to using meson instead of a
custom build script (see
[commit](https://git.dec05eba.com/gpu-screen-recorder/commit/?id=dfa7dc6659755b7a8385aad5003fd80483dd4ffe))

Rather than using the `install.sh` which is now deprecated, I switched
to using meson and ninja to build & install.

My text-editor wanted to format the end of the file as well, but that is
hopefully no issue 😅

Signed-off-by: Kristian Ollikainen <DatCaptainHorse@users.noreply.github.com>
Co-authored-by: Kristian Ollikainen <DatCaptainHorse@users.noreply.github.com>
Co-authored-by: Wanjohi <71614375+wanjohiryan@users.noreply.github.com>
2024-06-20 19:07:48 +03:00
Wanjohi
e729e1c57e 🐛 fix(labeler): Use remote config (#89)
## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**

PR labeler does not work on PR forks, still... I dunno why
2024-06-18 02:39:13 +03:00
Wanjohi
04a277dede 🐛 fix(autolabeller): Use GITHUB_TOKEN for adding labels too (#88)
## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**

Well, we figured out the first part(PR TITLE) and forgot about the
labelling part. 😅 Consult #87 for more info
2024-06-18 01:56:20 +03:00
Wanjohi
51366d3b4b 🐛 fix(autolabeller): Use GITHUB_TOKEN for autolabelling (#87)
## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**
We are using my personal account key to do autolabelling. This used to
work when the project was under my personal, but now it breaks whenever
some 3rd party tries to open a PR
2024-06-18 01:48:39 +03:00
pure
25c29f007e 🐛 fix(server): Fix startup aswell change supervisord's username to use nestri (#82) 2024-06-07 00:01:06 +03:00
Wanjohi
fd4f575b46 🐛 fix: Delete .scripts/supervisord.d directory (#81) 2024-06-06 21:08:18 +03:00
Wanjohi
3991027587 🐛 fix(server): Replace netris with nestri in supervisord.conf (#80)
## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**

Supervisord fails to run as user `netris` no longer exists. So we are
renaming all occurrences of old username with new username `nestri`
2024-06-06 19:10:24 +03:00
Wanjohi
5c9cb8e563 🐛 fix: Rename netris to nestri (#78)
## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**

This PR is the first in a series of PRs trying to solve the issue #48 by
renaming `Netris` to `Nestri` to avoid Trademark legal issues.
2024-06-06 00:27:40 +03:00
dependabot[bot]
f05494c08a 🔨 build(deps): Bump moq-server from 4ad3c77 to 1230cd6 (#71)
Bumps [moq-server](https://github.com/kixelated/moq-rs) from `4ad3c77`
to `1230cd6`.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="1230cd6d67"><code>1230cd6</code></a>
filter DNS query results to only include addresses that our quic
endpoint can...</li>
<li><a
href="33b05a5266"><code>33b05a5</code></a>
Make listings accessible (<a
href="https://redirect.github.com/kixelated/moq-rs/issues/167">#167</a>)</li>
<li>See full diff in <a
href="4ad3c77785...1230cd6d67">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-01 23:06:00 +03:00
pure
705f953e66 🐛 fix(server): Remove xargs from startup.sh (#73)
## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**

fix startup.sh by ryan himself
2024-06-01 01:39:36 +03:00
Wanjohi
3fed8605fa 📝 docs(readme): Add manual setup and game launch instructions (#69)
## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**
Update the README to show how to how to run Netris.
2024-05-30 03:22:16 +03:00
Wanjohi
674124e819 🐛 fix(server): Final touches (#66)
## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**

This is a catch all PR that tries to smooth out the creases found while
playing using Netris.
What i have found so far:
1. Change `NAME` environment to `SESSION_ID` for warp server.
2. Run `entrypoint.sh` and `warp-input` as user `netris`
3. Netris-proton is broken, it quits prematurely. I think it has to be a
problem with a missing wine installation
2024-05-30 01:53:07 +03:00
Wanjohi
9a11f459cb 🐛 fix(input): Retry when namespace doesn't exist (#65)
## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**

`Warp-input` server errors out when the namespace or `session_id` has
not yet been created on our relay.
This is a problem, as we do not know when the user will start playing.
The idea is to have the bin/input run both a server and a client at the
same time. Which can be used to then transmit bidirectional information.
2024-05-27 01:08:56 +03:00
Wanjohi
46fe87a715 feat(server): Add warp-input server (#64)
## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**

We need to remove the inputtino server, and replace it with `warp-input`
server, which is developed in-house and it works.
2024-05-25 00:52:46 +03:00
Wanjohi
204730450c feat(server): Add startup script (#63)
## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**

We start the container using supervisord, which is limiting as the user
has no way of telling the container what game to run. So, the idea is to
run like so: `docker run... ghcr.io/netrisdotme/netris/server:<tag>
netris-proton /game/yourgame.exe`


Co-authored by @djpremier
2024-05-25 00:24:45 +03:00
Wanjohi
e6fa6ea6e1 🐛 fix(server): Support the Open Kernel Module (#62)
## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**

Currently, the container fails when trying to download drivers for a
container running non-proprietary Nvidia drivers. So, this is a fix
which searches for numbers rather than a fixed point in the string.
2024-05-25 00:07:27 +03:00
Wanjohi
ea157b4898 feat(server): Rename /netris/proton to netris-proton (#61)
## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**

With help from @djpremier, rename `/usr/bin/netris/proton` as "the
script cannot be found in bash `(eg.: $ proton -r /games/AlanWake.exe)`
if it is in the subdirectory of /usr/bin, probably because it is found
in a subdir inside `/usr/bin` "
2024-05-25 00:02:36 +03:00
Wanjohi
df332b66bc 🐛 fix(git): Build warp-input on push to main (#57)
## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**

There is a bug whereby `netris/warp-input` does not build and deploy a
new nightly docker image when a pr is merged. This happens when there
are changes in `bin/input/**` directory, and this is not the expected
behaviour. So i added the directory back into the `warp-input.yml`
workflow file.
2024-05-21 03:24:37 +03:00
Wanjohi
8304ca08a4 🐛 fix(input): Append input to server's session ID for now (#56)
## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**

I am having issues trying to append `input` to the session_id using
bash. Most probably because supervisord is using the ENV variables
already available in the container. So, here we append the `input` part
inside the rust binary instead. This is much cleaner and it works.
2024-05-21 03:13:52 +03:00
Wanjohi
9bb194091d 🐛 fix(git): Release warp* docker images too (#46)
## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**

`warp-input.yml` workflow was not getting invoked on push. So, I change
the `Github Token` which has broader permissions.
2024-05-19 05:06:54 +03:00
Wanjohi
ad210f2b75 🐛 fix(git): Fix release (#45)
## Description

**What issue are you solving (or what feature are you adding) and how
are you doing it?**

Well, I tried doing a release and it did not go as expected, due to some
issues with the git_token plus concurrency. So, i have fixed that... let
us do a re-release.
2024-05-19 04:42:14 +03:00
642 changed files with 91463 additions and 13921 deletions

3
.dockerignore Normal file
View File

@@ -0,0 +1,3 @@
**/target/
**/.git
**/.env

2
.env.example Normal file
View File

@@ -0,0 +1,2 @@
CLOUDFLARE_API_TOKEN=
NEON_API_KEY=

17
.github/CODEOWNERS vendored
View File

@@ -1 +1,16 @@
* @wanjohiryan
* @dev-team
/apps/ @victorpahuus @AquaWolf
/packages/ui/ @wanjohiryan @victorpahuus @AquaWolf
/protobuf/ @AquaWolf
/infra/ @wanjohiryan
/packages/core/ @wanjohiryan
/packages/functions/ @wanjohiryan
/containers/ @DatCaptainHorse
/packages/server/ @DatCaptainHorse
/packages/relay/ @DatCaptainHorse
/packages/scripts/ @DatCaptainHorse
/packages/input/ @DatCaptainHorse

1
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1 @@
polar: nestri

2
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,2 @@
## Description
<!-- Briefly describe the purpose and scope of your changes -->

View File

@@ -1,18 +0,0 @@
version: 2
updates:
- package-ecosystem: 'gitsubmodule'
directory: '/'
schedule:
interval: 'daily'
open-pull-requests-limit: 10
labels:
- 'type/build'
- package-ecosystem: 'github-actions'
directory: '/'
schedule:
interval: 'weekly'
labels:
- 'type/build'
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-patch"]

119
.github/labeler.yml vendored
View File

@@ -1,119 +0,0 @@
version: 2
labels:
- label: 'type/chore'
branch: '^chore/.*'
title: '^\s*.*?\schore(?:(.+))?!?:'
- label: 'type/fix'
branch: '^fix/.*'
title: '^\s*.*?\sfix(?:(.+))?!?:'
- label: 'type/feat'
branch: '^feat/.*'
title: '^\s*.*?\sfeat(?:(.+))?!?:'
- label: 'type/breaking'
body: '(?i)breaking.*'
- label: 'type/docs'
branch: '^docs/.*'
title: '^\s*.*?\sdocs(?:(.+))?!?:'
branch: '^docs/.*'
files:
- '**/*.md$'
- '**/*.mdx$'
- label: 'type/ci'
branch: '^ci/.*'
title: '^\s*.*?\sci(?:(.+))?!?:'
files:
- '.github/.+'
- label: 'type/build'
branch: '^dependabot/.*'
title: '^\s*.*?\sbuild(?:(.+))?!?:'
- label: 'type/perf'
title: '^\s*.*?\sperf(?:(.+))?!?:'
- label: 'mergeable/false'
mergeable: False
- label: 'usr/dependabot'
branch: '^dependabot/.*'
authors:
- 'dependabot[bot]'
- label: 'scope/back-end'
files:
- 'server.Dockerfile'
- label: 'scope/base'
files:
- 'base.Dockerfile'
- label: 'scope/ffmpeg'
files:
- 'ffmpeg.Dockerfile'
- label: 'scope/recorder'
files:
- 'recorder.Dockerfile'
- label: 'scope/relay'
files:
- 'relay.Dockerfile'
- label: 'scope/front-end'
files:
- 'apps/www/.+'
- label: 'pkg/www'
files:
- 'apps/www/.+'
- label: 'scope/git'
files:
- '**/.gitignore$'
- '.github/.+'
- label: "size/xs"
size:
below: 10
exclude-files: ["pnpm-lock.yml","yarn.lock"]
- label: "size/s"
size:
above: 9
below: 100
exclude-files: ["pnpm-lock.yml","yarn.lock"]
- label: "size/m"
size:
above: 49
below: 200
exclude-files: ["pnpm-lock.yml","yarn.lock"]
- label: "size/l"
size:
above: 199
below: 500
exclude-files: ["pnpm-lock.yml","yarn.lock"]
- label: "size/xl"
size:
above: 499
below: 1000
exclude-files: ["pnpm-lock.yml","yarn.lock"]
- label: "size/xxl"
size:
above: 999
exclude-files: ["pnpm-lock.yml","yarn.lock"]
- label: "usr/wanjohi"
authors: ['wanjohiryan']
- label: "usr/unknown"
negate: True
authors: ['wanjohiryan','apps/dependabot','dependabot', 'dependabot[bot]']

108
.github/labels.yml vendored
View File

@@ -1,108 +0,0 @@
# Default labels
- name: "type/fix"
color: "B60205"
- name: "type/build"
color: "6C55D7"
- name: "type/feat"
color: "0ADE12"
- name: "type/docs"
color: "891059"
- name: "type/refactor"
color: "8D44DF"
- name: "type/revert"
color: "5319e7"
- name: "type/style"
color: "D71964"
- name: "type/test"
color: "0B9EE8"
- name: "type/breaking"
color: "0590CC"
- name: "type/chore"
color: "B44A63"
- name: "type/ci"
color: "4FE1A6"
- name: "type/perf"
color: "4FE1A6"
- name: "mergeable/false"
color: "B60205"
- name: "priority/high"
color: "D4E734"
- name: "priority/mid"
color: "D4E734"
- name: "priority/low"
color: "D4E734"
- name: "reg/docker"
color: "5319e7"
- name: "reg/npm"
color: "5319e7"
- name: "pkg/www"
color: "5319e7"
- name: "pkg/lib"
color: "5319e7"
- name: "pkg/aws"
color: "5319e7"
- name: "scope/git"
color: "B61B66"
- name: "scope/infra"
color: "B61B66"
- name: "scope/front-end"
color: "B61B66"
- name: "scope/relay"
color: "B61B66"
- name: "scope/base"
color: "B61B66"
- name: "scope/back-end"
color: "B61B66"
- name: "size/xs"
color: "AD4322"
- name: "size/s"
color: "AD4322"
- name: "size/m"
color: "AD4322"
- name: "size/l"
color: "AD4322"
- name: "size/xl"
color: "AD4322"
- name: "size/xxl"
color: "AD4322"
- name: "usr/wanjohi"
color: "09469C"
- name: "usr/dependabot"
color: "09469C"
- name: "usr/unknown"
color: "09469C"

View File

@@ -1,3 +0,0 @@
## Description
**What issue are you solving (or what feature are you adding) and how are you doing it?**

View File

@@ -1,45 +0,0 @@
name-template: 'v$RESOLVED_VERSION'
tag-template: 'v$RESOLVED_VERSION'
template: |
# What's Changed
$CHANGES
**Full Changelog**: https://github.com/$OWNER/$REPOSITORY/compare/$PREVIOUS_TAG...v$RESOLVED_VERSION
categories:
- title: '⚠ Breaking Changes'
label: 'type/breaking'
- title: '🚀 New Features'
label: 'type/feat'
- title: '🐜 Bug Fixes'
label: 'type/fix'
- title: '🧰 Maintenance'
label: 'type/chore'
- title: '📖 Documentation'
label: 'type/docs'
- title: '⬆ Version Upgrades'
label: 'type/build'
collapse-after: 10
- title: 'Other changes'
collapse-after: 10
version-resolver:
major:
labels:
- 'type/breaking'
minor:
labels:
- 'type/feat'
patch:
labels:
- 'type/fix'
- 'type/build'
- 'type/docs'
- 'type/chore'
- 'type/refactor'
- 'type/ci'
- 'type/style'
- 'type/test'
exclude-labels:
- 'skip-changelog'

View File

@@ -1,93 +0,0 @@
name: Pull request auto-labeller
on:
pull_request:
types:
- labeled
- opened
- synchronize
- reopened
- ready_for_review
- edited
concurrency:
group: ${{ github.workflow }}-${{ github.ref == 'refs/heads/main' && github.run_id || github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
validate:
name: Validate PR title
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
- uses: amannn/action-semantic-pull-request@cfb60706e18bc85e8aec535e3c577abe8f70378e
id: lint_pr_title
env:
GITHUB_TOKEN: ${{ secrets.GIT_MASTER_TOKEN }}
with:
types: |-
build
chore
ci
deprecate
docs
feat
fix
perf
refactor
remove
revert
security
style
test
requireScope: false
# Ensures the subject start with an uppercase character.
subjectPattern: ^([A-Z]).+$
headerPattern: '^\s*.*?\s(\w*)(?:\(([\w$.\-*/ ]*)\))?: (.*)$'
headerPatternCorrespondence: type, scope, subject
subjectPatternError: |
The subject "{subject}" found in the pull request title "{title}"
didn't match the configured pattern. Please ensure that the subject
starts with an uppercase character
- uses: marocchino/sticky-pull-request-comment@331f8f5b4215f0445d3c07b4967662a32a2d3e31
# When the previous steps fails, the workflow would stop. By adding this
# condition you can continue the execution with the populated error message.
if: always() && (steps.lint_pr_title.outputs.error_message != null)
with:
header: pr-title-lint-error
message: |
Hey there and thank you for opening this pull request! 👋🏼
We require pull request titles to follow the [Conventional Commits specification](https://www.conventionalcommits.org/en/v1.0.0/) and it looks like your proposed title needs to be adjusted.
Additionally, the subject of the title must start with an uppercase character (e.g. feat: New `search` component).
```
${{ steps.lint_pr_title.outputs.error_message }}
```
# Delete a previous comment when the issue has been resolved
- if: ${{ steps.lint_pr_title.outputs.error_message == null }}
uses: marocchino/sticky-pull-request-comment@331f8f5b4215f0445d3c07b4967662a32a2d3e31
with:
header: pr-title-lint-error
delete: true
label:
needs: [ validate ]
runs-on: ubuntu-latest
name: Add labels
permissions:
contents: read
pull-requests: write
steps:
- name: Checkout your code
uses: actions/checkout@v4
- uses: srvaroa/labeler@v1
with:
config_path: .github/labeler.yml
use_local_config: true #FIXME:
fail_on_error: true
env:
GITHUB_TOKEN: "${{ secrets.GIT_MASTER_TOKEN }}"

40
.github/workflows/docs.yml vendored Normal file
View File

@@ -0,0 +1,40 @@
name: Build docs
on:
pull_request:
paths:
- "apps/docs/**"
- ".github/workflows/docs.yml"
push:
branches: [main]
paths:
- "apps/docs/**"
- ".github/workflows/docs.yml"
jobs:
deploy-docs:
name: Build and deploy docs
runs-on: ubuntu-latest
defaults:
run:
working-directory: "apps/docs"
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v1
with:
bun-version: latest
- name: Install dependencies
run: bun install
- name: Build Project Artifacts
run: bun run build
- name: Deploy Project Artifacts to Cloudflare
uses: cloudflare/wrangler-action@v3
with:
packageManager: bun
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
wranglerVersion: "3.93.0"
workingDirectory: "apps/docs"
command: pages deploy ./dist --project-name=${{ vars.CF_DOCS_PAGES_PROJECT_NAME }} --commit-dirty=true
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}

View File

@@ -1,33 +0,0 @@
name: GH labels maintainer
on:
push:
branches:
- 'main'
paths:
- '.github/labels.yml'
- '.github/workflows/labels.yml'
pull_request:
paths:
- '.github/labels.yml'
- '.github/workflows/labels.yml'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
labeler:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v4
-
name: Run Labeler
uses: crazy-max/ghaction-github-labeler@v5
env:
GITHUB_TOKEN: "${{ secrets.GIT_MASTER_TOKEN }}"
with:
dry-run: ${{ github.event_name == 'pull_request' }}
github-token: ${{ secrets.GIT_MASTER_TOKEN }}

View File

@@ -1,36 +1,31 @@
#Tabs not spaces, you moron :)
name: CI for netris:relay
name: Build nestri:relay
on:
pull_request:
paths:
- "relay.Dockerfile"
- "containers/relay.Containerfile"
- "packages/relay/**"
- ".github/workflows/relay.yml"
schedule:
- cron: 0 0 * * * # At the end of everyday
push:
branches: [main]
paths:
- "relay.Dockerfile"
- "containers/relay.Containerfile"
- ".github/workflows/relay.yml"
- "packages/relay/**"
tags:
- v*.*.*
release:
types: [created]
concurrency:
group: ${{ github.workflow }}-${{ github.ref == 'refs/heads/main' && github.run_id || github.event.pull_request.number || github.ref }}
cancel-in-progress: true
env:
REGISTRY: ghcr.io
IMAGE_NAME: wanjohiryan/netris
IMAGE_NAME: nestrilabs/nestri
BASE_TAG_PREFIX: relay
jobs:
build-docker-pr:
name: Build image on pr
name: Build image on PR
runs-on: ubuntu-latest
if: ${{ github.event_name == 'pull_request' }}
steps:
@@ -44,15 +39,15 @@ jobs:
name: Build Docker image
uses: docker/build-push-action@v5
with:
file: relay.Dockerfile
file: containers/relay.Containerfile
context: ./
push: false
load: true
tags: netris:relay
tags: nestri:relay
build-docker-main:
name: Build image on merge
if: ${{github.ref == 'refs/heads/main'}}
name: Build image on main
if: ${{ github.ref == 'refs/heads/main' }}
runs-on: ubuntu-latest
permissions:
contents: read
@@ -67,7 +62,7 @@ jobs:
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
password: ${{ github.token }}
-
name: Extract Container metadata
id: meta
@@ -86,7 +81,7 @@ jobs:
name: Build Docker image
uses: docker/build-push-action@v5
with:
file: relay.Dockerfile
file: containers/relay.Containerfile
context: ./
push: true
tags: ${{ steps.meta.outputs.tags }}

View File

@@ -1,16 +0,0 @@
name: Release drafter
on:
push:
branches: [ main ]
jobs:
update_release_draft:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- uses: release-drafter/release-drafter@v6
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -1,37 +1,46 @@
#Tabs not spaces, you moron :)
name: CI for netris:base
name: Build nestri:runner
on:
pull_request:
paths:
- "base.Dockerfile"
- ".github/workflows/base.yml"
- "containers/runner.Containerfile"
- "packages/scripts/**"
- "packages/server/**"
- ".github/workflows/runner.yml"
schedule:
- cron: 0 0 * * * # At the end of everyday
- cron: 7 0 * * 1,3,6 # Regularly to keep that build cache warm
push:
branches: [main]
paths:
- "base.Dockerfile"
- ".github/workflows/base.yml"
- "containers/runner.Containerfile"
- ".github/workflows/runner.yml"
- "packages/scripts/**"
- "packages/server/**"
tags:
- v*.*.*
release:
types: [created]
concurrency:
group: ${{ github.workflow }}-${{ github.ref == 'refs/heads/main' && github.run_id || github.event.pull_request.number || github.ref }}
cancel-in-progress: true
env:
REGISTRY: ghcr.io
IMAGE_NAME: wanjohiryan/netris
BASE_TAG_PREFIX: base
IMAGE_NAME: nestrilabs/nestri
BASE_TAG_PREFIX: runner
BASE_IMAGE: docker.io/cachyos/cachyos:latest
# This makes our release ci quit prematurely
# concurrency:
# group: ci-${{ github.ref }}
# cancel-in-progress: true
jobs:
build-docker-pr:
name: Build image on pr
name: Build image on PR
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
if: ${{ github.event_name == 'pull_request' }}
steps:
-
@@ -41,18 +50,25 @@ jobs:
name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3
-
name: Build Docker image
uses: docker/build-push-action@v5
name: Set Swap Space
uses: pierotofy/set-swap-space@master
with:
file: base.Dockerfile
swap-size-gb: 20
-
name: Build Docker image
uses: docker/build-push-action@v6
with:
file: containers/runner.Containerfile
context: ./
push: false
load: true
tags: netris:base
tags: nestri:runner
cache-from: type=gha,mode=max
cache-to: type=gha,mode=max
build-docker-main:
name: Build image on merge
if: ${{github.ref == 'refs/heads/main'}}
name: Build image on main
if: ${{ github.ref == 'refs/heads/main' }}
runs-on: ubuntu-latest
permissions:
contents: read
@@ -67,7 +83,7 @@ jobs:
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
password: ${{ github.token }}
-
name: Extract Container metadata
id: meta
@@ -83,11 +99,22 @@ jobs:
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}
-
name: Build Docker image
uses: docker/build-push-action@v5
name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3
-
name: Set Swap Space
uses: pierotofy/set-swap-space@master
with:
file: base.Dockerfile
swap-size-gb: 20
-
name: Build Docker image
uses: docker/build-push-action@v6
with:
file: containers/runner.Containerfile
context: ./
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha,mode=max
cache-to: type=gha,mode=max
pull: ${{ github.event_name == 'schedule' }} # Pull base image for scheduled builds

View File

@@ -1,95 +0,0 @@
#Tabs not spaces, you moron :)
name: CI for netris:server
on:
pull_request:
paths:
- "server.Dockerfile"
- ".scripts/**"
- ".github/workflows/server.yml"
schedule:
- cron: 0 0 * * * # At the end of everyday
push:
branches: [main]
paths:
- "server.Dockerfile"
- ".scripts/**"
- ".github/workflows/server.yml"
tags:
- v*.*.*
release:
types: [created]
env:
REGISTRY: ghcr.io
IMAGE_NAME: wanjohiryan/netris
BASE_TAG_PREFIX: server
concurrency:
group: ${{ github.workflow }}-${{ github.ref == 'refs/heads/main' && github.run_id || github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
build-docker-pr:
name: Build image on pr
runs-on: ubuntu-latest
if: ${{ github.event_name == 'pull_request' }}
steps:
-
name: Checkout repo
uses: actions/checkout@v4
-
name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3
-
name: Build Docker image
uses: docker/build-push-action@v5
with:
file: server.Dockerfile
context: ./
push: false
load: true
tags: netris:server
build-docker-main:
name: Build image on merge to main
if: ${{github.ref == 'refs/heads/main'}}
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
-
name: Checkout repo
uses: actions/checkout@v4
-
name: Log into registry ${{ env.REGISTRY }}
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
-
name: Extract Container metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}/${{ env.BASE_TAG_PREFIX }}
#
#tag on release, and a nightly build for 'dev'
tags: |
type=raw,value=nightly,enable={{is_default_branch}}
type=ref,event=tag
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}
-
name: Build Docker image
uses: docker/build-push-action@v5
with:
file: server.Dockerfile
context: ./
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}

View File

@@ -1,191 +0,0 @@
#Tabs not spaces, you moron :)
name: CI for netris:warp-input
on:
pull_request:
paths:
- "warp-input.Dockerfile"
- ".github/workflows/warp-input.yml"
- "bin/input/**"
schedule:
- cron: 0 0 * * * # At the end of everyday
workflow_dispatch:
push:
branches: [main]
paths:
- "warp-input.Dockerfile"
- ".github/workflows/warp-input.yml"
tags:
- v*.*.*
release:
types: [published, created]
env:
REGISTRY: ghcr.io
IMAGE_NAME: wanjohiryan/netris
BASE_TAG_PREFIX: warp-input
concurrency:
group: ${{ github.workflow }}-${{ github.ref == 'refs/heads/main' && github.run_id || github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
build-docker-pr:
name: Build image on pr
runs-on: ubuntu-latest
if: ${{ github.event_name == 'pull_request' }}
steps:
-
name: Checkout repo
uses: actions/checkout@v4
with:
submodules: recursive
-
name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3
-
name: Build Docker image
uses: docker/build-push-action@v5
with:
file: warp-input.Dockerfile
context: ./
push: false
load: true
tags: netris:warp-input
build-docker-main:
name: Build image on merge to main
if: ${{github.ref == 'refs/heads/main'}}
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
-
name: Checkout repo
uses: actions/checkout@v4
with:
submodules: recursive
-
name: Log into registry ${{ env.REGISTRY }}
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
-
name: Extract Container metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}/${{ env.BASE_TAG_PREFIX }}
#
#tag on release, and a nightly build for 'dev'
tags: |
type=raw,value=nightly,enable={{is_default_branch}}
type=ref,event=tag
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}
-
name: Build Docker image
uses: docker/build-push-action@v5
with:
file: warp-input.Dockerfile
context: ./
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-warp-input-release:
if: ${{ github.event_name == 'release' }}
defaults:
run:
working-directory: bin/input
strategy:
fail-fast: false
matrix:
settings:
- host: ubuntu-20.04
target: x86_64-unknown-linux-gnu
bundles: appimage
asset_name: warp-input-ubuntu-amd64
- host: windows-latest
target: x86_64-pc-windows-msvc
bundles: msi
asset_name: warp-input-windows-amd64
# - host: macos-latest
# target: x86_64-apple-darwin
# bundles: dmg
# asset_name: warp-input-macos-amd64
# - host: macos-latest
# target: aarch64-apple-darwin
# bundles: dmg
# asset_name: warp-input-macos-apple-silicon
# - host: ubuntu-20.04
# target: x86_64-unknown-linux-musl
# - host: ubuntu-20.04
# target: aarch64-unknown-linux-gnu
# - host: ubuntu-20.04
# target: aarch64-unknown-linux-musl
# - host: ubuntu-20.04
# target: armv7-unknown-linux-gnueabihf
name: Build warp-input on release
runs-on: ${{ matrix.settings.host }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install Rust
id: toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.settings.target }}
toolchain: stable
components: clippy, rustfmt
- name: Cache Rust Dependencies
uses: Swatinem/rust-cache@v2
with:
save-if: false
prefix-key: 'v0-rust-deps'
shared-key: ${{ matrix.settings.target }}
- name: Cargo build
run: cargo build --target ${{ matrix.settings.target }} --release
- name: Copy and rename artifacts (Linux)
if: ${{ matrix.settings.host == 'ubuntu-20.04' }}
run: |
cp target/${{ matrix.settings.target }}/release/warp-input ./warp-input
- name: Copy and rename artifacts (Windows)
if: ${{ matrix.settings.host == 'windows-latest' }}
run: |
cp "target/${{ matrix.settings.target }}/release/warp-input.exe" ./warp-input.exe
- name: Copy and rename artifacts (macOS)
if: ${{ matrix.settings.host == 'macos-latest' }}
run: |
cp target/${{ matrix.settings.target }}/release/warp-input ./warp-input
- name: Publish release for (${{ matrix.settings.host }})
if: ${{ matrix.settings.host == 'windows-latest' }}
uses: svenstaro/upload-release-action@2.9.0
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ./bin/input/warp-input.exe
asset_name: ${{ matrix.settings.asset_name }}
tag: ${{ github.ref }}
- name: Publish release for (${{ matrix.settings.host }})
if: ${{ matrix.settings.host != 'windows-latest' }}
uses: svenstaro/upload-release-action@2.9.0
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ./bin/input/warp-input
asset_name: ${{ matrix.settings.asset_name }}
tag: ${{ github.ref }}

View File

@@ -1,190 +0,0 @@
#Tabs not spaces, you moron :)
name: CI for netris:warp
on:
pull_request:
paths:
- "warp.Dockerfile"
- ".github/workflows/warp.yml"
schedule:
- cron: 0 0 * * * # At the end of everyday
workflow_dispatch:
push:
branches: [main]
paths:
- "warp.Dockerfile"
- ".github/workflows/warp.yml"
tags:
- v*.*.*
release:
types: [published, created]
env:
REGISTRY: ghcr.io
IMAGE_NAME: wanjohiryan/netris
BASE_TAG_PREFIX: warp
concurrency:
group: ${{ github.workflow }}-${{ github.ref == 'refs/heads/main' && github.run_id || github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
build-docker-pr:
name: Build image on pr
runs-on: ubuntu-latest
if: ${{ github.event_name == 'pull_request' }}
steps:
-
name: Checkout repo
uses: actions/checkout@v4
with:
submodules: recursive
-
name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3
-
name: Build Docker image
uses: docker/build-push-action@v5
with:
file: warp.Dockerfile
context: ./
push: false
load: true
tags: netris:warp
build-docker-main:
name: Build image on merge to main
if: ${{github.ref == 'refs/heads/main'}}
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
-
name: Checkout repo
uses: actions/checkout@v4
with:
submodules: recursive
-
name: Log into registry ${{ env.REGISTRY }}
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
-
name: Extract Container metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}/${{ env.BASE_TAG_PREFIX }}
#
#tag on release, and a nightly build for 'dev'
tags: |
type=raw,value=nightly,enable={{is_default_branch}}
type=ref,event=tag
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}
-
name: Build Docker image
uses: docker/build-push-action@v5
with:
file: warp.Dockerfile
context: ./
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-warp-release:
if: ${{ github.event_name == 'release' }}
defaults:
run:
working-directory: moq-server
strategy:
fail-fast: false
matrix:
settings:
- host: ubuntu-20.04
target: x86_64-unknown-linux-gnu
bundles: appimage
asset_name: warp-ubuntu-amd64
- host: windows-latest
target: x86_64-pc-windows-msvc
bundles: msi
asset_name: warp-windows-amd64
- host: macos-latest
target: x86_64-apple-darwin
bundles: dmg
asset_name: warp-macos-amd64
- host: macos-latest
target: aarch64-apple-darwin
bundles: dmg
asset_name: warp-macos-apple-silicon
# - host: ubuntu-20.04
# target: x86_64-unknown-linux-musl
# - host: ubuntu-20.04
# target: aarch64-unknown-linux-gnu
# - host: ubuntu-20.04
# target: aarch64-unknown-linux-musl
# - host: ubuntu-20.04
# target: armv7-unknown-linux-gnueabihf
name: Build warp on release
runs-on: ${{ matrix.settings.host }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install Rust
id: toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.settings.target }}
toolchain: stable
components: clippy, rustfmt
- name: Cache Rust Dependencies
uses: Swatinem/rust-cache@v2
with:
save-if: false
prefix-key: 'v0-rust-deps'
shared-key: ${{ matrix.settings.target }}
- name: Cargo build
run: cargo build --target ${{ matrix.settings.target }} --manifest-path ./moq-pub/Cargo.toml --release
- name: Copy and rename artifacts (Linux)
if: ${{ matrix.settings.host == 'ubuntu-20.04' }}
run: |
cp target/${{ matrix.settings.target }}/release/moq-pub ./warp
- name: Copy and rename artifacts (Windows)
if: ${{ matrix.settings.host == 'windows-latest' }}
run: |
cp "target/${{ matrix.settings.target }}/release/moq-pub.exe" ./warp.exe
- name: Copy and rename artifacts (macOS)
if: ${{ matrix.settings.host == 'macos-latest' }}
run: |
cp target/${{ matrix.settings.target }}/release/moq-pub ./warp
- name: Publish release for (${{ matrix.settings.host }})
if: ${{ matrix.settings.host == 'windows-latest' }}
uses: svenstaro/upload-release-action@2.9.0
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ./moq-server/warp.exe
asset_name: ${{ matrix.settings.asset_name }}
tag: ${{ github.ref }}
- name: Publish release for (${{ matrix.settings.host }})
if: ${{ matrix.settings.host != 'windows-latest' }}
uses: svenstaro/upload-release-action@2.9.0
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ./moq-server/warp
asset_name: ${{ matrix.settings.asset_name }}
tag: ${{ github.ref }}

40
.github/workflows/www.yml vendored Normal file
View File

@@ -0,0 +1,40 @@
name: Build www
on:
pull_request:
paths:
- "apps/www/**"
- ".github/workflows/www.yml"
push:
branches: [main]
paths:
- "apps/www/**"
- ".github/workflows/www.yml"
jobs:
deploy-www:
name: Build and deploy www
runs-on: ubuntu-latest
defaults:
run:
working-directory: "apps/www"
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v1
with:
bun-version: latest
- name: Install dependencies
run: bun install
- name: Build Project Artifacts
run: bun run build
- name: Deploy Project Artifacts to Cloudflare
uses: cloudflare/wrangler-action@v3
with:
packageManager: bun
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
wranglerVersion: "3.93.0"
workingDirectory: "apps/www"
command: pages deploy ./dist --project-name=${{ vars.CF_WWW_PAGES_PROJECT_NAME }} --commit-dirty=true
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}

58
.gitignore vendored Normal file
View File

@@ -0,0 +1,58 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# Dependencies
node_modules
.pnp
.pnp.js
# Local env files
.env
.env.local
.env.sst
.env.development.local
.env.test.local
.env.production.local
.idea/
# Testing
coverage
# Turbo
.turbo
# Vercel
.vercel
# Build Outputs
.next/
out/
build
dist
# Debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Misc
.DS_Store
*.pem
# sst
.sst
#Bun merging errors, EVERY time :(
bun.lockb
#tests
id_*
#Rust
target
tmp
.partykit
key_*

3
.gitmodules vendored
View File

@@ -1,3 +0,0 @@
[submodule "moq-server"]
path = moq-server
url = https://github.com/kixelated/moq-rs

View File

@@ -1,20 +0,0 @@
#This fixes the error where x11-apps in docker cannot seem to access the hosts DISPLAY server
# Error: No protocol specified
# Error: Can't open display: :10.0
#https://askubuntu.com/a/1470341 //Run it on host OS
xhost +Local:*
xhost
#Fun fact Weston won't run if you do not have Wayland running on the host (i have yet to try running with Xwayland inside the container)
#Run weston using your host's X11 display server
weston --backend=x11-backend.so
#Run inside the terminal of the weston you just created... cool right?
weston --backend=wayland-backend.so
#Run
docker run --gpus all --entrypoint /bin/bash --rm -it -v $(pwd):/games -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY --cap-add=SYS_NICE --cap-add=SYS_ADMIN recorder
docker run --gpus all --entrypoint /bin/bash --device=/dev/dri --rm -it -v $(pwd):/game --cap-add=SYS_NICE --cap-add=SYS_ADMIN ghcr.io/wanjohiryan/netris/server:nightly
ffmpeg -hide_banner -v quiet -stream_loop -1 -re -i /game/test.mp4 -an -f mp4 -movflags empty_moov+frag_every_frame+separate_moof+omit_tfhd_offset - | RUST_LOG=moq_pub=info warp --name "netris" https://fst.so:4443

View File

@@ -1,169 +0,0 @@
#!/bin/bash -e
trap "echo TRAPed signal" HUP INT QUIT TERM
# Create and modify permissions of XDG_RUNTIME_DIR
sudo -u netris mkdir -pm700 /tmp/runtime-1000
sudo chown netris:netris /tmp/runtime-1000
sudo -u netris chmod 700 /tmp/runtime-1000
# Make user directory owned by the user in case it is not
sudo chown netris:netris /home/netris || sudo chown netris:netris /home/netris/* || { echo "$(date +"[%Y-%m-%d %H:%M:%S]") Failed to change user directory permissions. There may be permission issues."; }
#Input devices ownable by our default user
export REQUIRED_DEVICES=${REQUIRED_DEVICES:-/dev/uinput /dev/input/event*}
declare -A group_map
for dev in $REQUIRED_DEVICES; do
if [ -e "$dev" ]; then
dev_group=$(stat -c "%G" "$dev")
dev_gid=$(stat -c "%g" "$dev")
if [ "$dev_group" = "UNKNOWN" ]; then
new_name="netris-gid-$dev_gid"
# We only have a GID for this group; create a named group for it
# this isn't 100% necessary but it prevents some useless noise in the console
sudo groupadd -g "$dev_gid" "$new_name"
group_map[$new_name]=1
else
# the group already exists; just add it to the list
group_map[$dev_group]=1
fi
# is this device read/writable by the group? if not, make it so
if [ "$(stat -c "%a" "$dev" | cut -c2)" -lt 6 ]; then
sudo chmod g+rw "$dev"
fi
else
echo "$(date +"[%Y-%m-%d %H:%M:%S]") Path '$dev' is not present."
fi
done
join_by() { local IFS="$1"; shift; echo "$*"; }
groups=$(join_by "," "${!group_map[@]}")
if [ "$groups" != "" ]; then
echo "$(date +"[%Y-%m-%d %H:%M:%S]") Adding user '${USER}' to groups: $groups"
sudo usermod -a -G "$groups" "${USER}"
else
echo "$(date +"[%Y-%m-%d %H:%M:%S]") Not modifying user groups ($groups)"
fi
# Remove directories to make sure the desktop environment starts
sudo rm -rf /tmp/.X* ~/.cache
# Change time zone from environment variable
sudo ln -snf "/usr/share/zoneinfo/$TZ" /etc/localtime && echo "$TZ" | sudo tee /etc/timezone >/dev/null
# Add gamescope directories to path
export PATH="${PATH:+${PATH}:}/usr/local/games:/usr/games"
# This symbolic link enables running Xorg inside a container with `-sharevts`
sudo ln -snf /dev/ptmx /dev/tty7
# Start DBus without systemd
sudo /etc/init.d/dbus start
# Install NVIDIA userspace driver components including X graphic libraries
if ! command -v nvidia-xconfig &>/dev/null; then
# Driver version is provided by the kernel through the container toolkit
export DRIVER_ARCH="$(dpkg --print-architecture | sed -e 's/arm64/aarch64/' -e 's/armhf/32bit-ARM/' -e 's/i.*86/x86/' -e 's/amd64/x86_64/' -e 's/unknown/x86_64/')"
export DRIVER_VERSION="$(head -n1 </proc/driver/nvidia/version | awk '{print $8}')"
cd /tmp
# If version is different, new installer will overwrite the existing components
if [ ! -f "/tmp/NVIDIA-Linux-${DRIVER_ARCH}-${DRIVER_VERSION}.run" ]; then
# Check multiple sources in order to probe both consumer and datacenter driver versions
curl -fsSL -O "https://international.download.nvidia.com/XFree86/Linux-${DRIVER_ARCH}/${DRIVER_VERSION}/NVIDIA-Linux-${DRIVER_ARCH}-${DRIVER_VERSION}.run" || curl -fsSL -O "https://international.download.nvidia.com/tesla/${DRIVER_VERSION}/NVIDIA-Linux-${DRIVER_ARCH}-${DRIVER_VERSION}.run" || {
echo "$(date +"[%Y-%m-%d %H:%M:%S]") Failed NVIDIA GPU driver download. Exiting."
exit 1
}
fi
# Extract installer before installing
sudo sh "NVIDIA-Linux-${DRIVER_ARCH}-${DRIVER_VERSION}.run" -x
cd "NVIDIA-Linux-${DRIVER_ARCH}-${DRIVER_VERSION}"
# Run installation without the kernel modules and host components
sudo ./nvidia-installer --silent \
--no-kernel-module \
--install-compat32-libs \
--no-nouveau-check \
--no-nvidia-modprobe \
--no-rpms \
--no-backup \
--no-check-for-alternate-installs
sudo rm -rf /tmp/NVIDIA* && cd ~
fi
# Allow starting Xorg from a pseudoterminal instead of strictly on a tty console
if [ ! -f /etc/X11/Xwrapper.config ]; then
echo -e "allowed_users=anybody\nneeds_root_rights=yes" | sudo tee /etc/X11/Xwrapper.config >/dev/null
fi
if grep -Fxq "allowed_users=console" /etc/X11/Xwrapper.config; then
sudo sed -i "s/allowed_users=console/allowed_users=anybody/;$ a needs_root_rights=yes" /etc/X11/Xwrapper.config
fi
# Remove existing Xorg configuration
if [ -f "/etc/X11/xorg.conf" ]; then
sudo rm -f "/etc/X11/xorg.conf"
fi
# Get first GPU device if all devices are available or `NVIDIA_VISIBLE_DEVICES` is not set
if [ "$NVIDIA_VISIBLE_DEVICES" == "all" ] || [ -z "$NVIDIA_VISIBLE_DEVICES" ]; then
export GPU_SELECT="$(sudo nvidia-smi --query-gpu=uuid --format=csv | sed -n 2p)"
# Get first GPU device out of the visible devices in other situations
else
export GPU_SELECT="$(sudo nvidia-smi --id=$(echo "$NVIDIA_VISIBLE_DEVICES" | cut -d ',' -f1) --query-gpu=uuid --format=csv | sed -n 2p)"
if [ -z "$GPU_SELECT" ]; then
export GPU_SELECT="$(sudo nvidia-smi --query-gpu=uuid --format=csv | sed -n 2p)"
fi
fi
if [ -z "$GPU_SELECT" ]; then
echo "$(date +"[%Y-%m-%d %H:%M:%S]") No NVIDIA GPUs detected or nvidia-container-toolkit not configured. Exiting."
exit 1
fi
# Setting `VIDEO_PORT` to none disables RANDR/XRANDR, do not set this if using datacenter GPUs
if [ "${VIDEO_PORT,,}" = "none" ]; then
export CONNECTED_MONITOR="--use-display-device=None"
# The X server is otherwise deliberately set to a specific video port despite not being plugged to enable RANDR/XRANDR, monitor will display the screen if plugged to the specific port
else
export CONNECTED_MONITOR="--connected-monitor=${VIDEO_PORT}"
fi
# Bus ID from nvidia-smi is in hexadecimal format and should be converted to decimal format (including the domain) which Xorg understands, required because nvidia-xconfig doesn't work as intended in a container
HEX_ID="$(sudo nvidia-smi --query-gpu=pci.bus_id --id="$GPU_SELECT" --format=csv | sed -n 2p)"
IFS=":." ARR_ID=($HEX_ID)
unset IFS
BUS_ID="PCI:$((16#${ARR_ID[1]}))@$((16#${ARR_ID[0]})):$((16#${ARR_ID[2]})):$((16#${ARR_ID[3]}))"
# A custom modeline should be generated because there is no monitor to fetch this information normally
export MODELINE="$(cvt -r "${SIZEW}" "${SIZEH}" "${REFRESH}" | sed -n 2p)"
# Generate /etc/X11/xorg.conf with nvidia-xconfig
sudo nvidia-xconfig --virtual="${SIZEW}x${SIZEH}" --depth="$CDEPTH" --mode="$(echo "$MODELINE" | awk '{print $2}' | tr -d '\"')" --allow-empty-initial-configuration --no-probe-all-gpus --busid="$BUS_ID" --include-implicit-metamodes --mode-debug --no-sli --no-base-mosaic --only-one-x-screen ${CONNECTED_MONITOR}
# Guarantee that the X server starts without a monitor by adding more options to the configuration
sudo sed -i '/Driver\s\+"nvidia"/a\ Option "ModeValidation" "NoMaxPClkCheck,NoEdidMaxPClkCheck,NoMaxSizeCheck,NoHorizSyncCheck,NoVertRefreshCheck,NoVirtualSizeCheck,NoExtendedGpuCapabilitiesCheck,NoTotalSizeCheck,NoDualLinkDVICheck,NoDisplayPortBandwidthCheck,AllowNon3DVisionModes,AllowNonHDMI3DModes,AllowNonEdidModes,NoEdidHDMI2Check,AllowDpInterlaced"' /etc/X11/xorg.conf
# Add custom generated modeline to the configuration
sudo sed -i '/Section\s\+"Monitor"/a\ '"$MODELINE" /etc/X11/xorg.conf
# Prevent interference between GPUs, add this to the host or other containers running Xorg as well
echo -e "Section \"ServerFlags\"\n Option \"AutoAddGPU\" \"false\"\nEndSection" | sudo tee -a /etc/X11/xorg.conf >/dev/null
# Default display is :0 across the container
export DISPLAY=":0"
# Run Xorg server with required extensions
/usr/bin/Xorg vt7 -noreset -novtswitch -sharevts -dpi "${DPI}" +extension "COMPOSITE" +extension "DAMAGE" +extension "GLX" +extension "RANDR" +extension "RENDER" +extension "MIT-SHM" +extension "XFIXES" +extension "XTEST" "${DISPLAY}" &
# Wait for X11 to start
echo "$(date +"[%Y-%m-%d %H:%M:%S]") Waiting for X socket"
until [ -S "/tmp/.X11-unix/X${DISPLAY/:/}" ]; do sleep 1; done
echo "$(date +"[%Y-%m-%d %H:%M:%S]") X socket is ready"
if [[ -z "${NAME}" ]]; then
echo "$(date +"[%Y-%m-%d %H:%M:%S]") No stream name was found, did you forget to set the env variable NAME?" && exit 1
else
/usr/bin/gpu-screen-recorder -w screen -c flv -f 60 -a "$(pactl get-default-sink).monitor" | ffmpeg -hide_banner -v quiet -i pipe:0 -c copy -f mp4 -movflags empty_moov+frag_every_frame+separate_moof+omit_tfhd_offset - | /usr/bin/warp --name "${NAME}" https://fst.so:4443 &
fi
openbox-session &
#Now we can safely run our input server without permission errors
sudo /inputtino/input-server &
/usr/games/gamescope -- mangohud glxgears > /dev/null &
echo "$(date +"[%Y-%m-%d %H:%M:%S]") Session Running. Press [Return] to exit."
read

View File

@@ -1,358 +0,0 @@
#!/bin/bash
# Version 0.0.1
#Big thanks to github/@noabody
#For his wmstart script https://github.com/noabody/unibuild/blob/master/data/wstart
#Dependencies: git, jq, curl, vulkan & wget
# top level linux steam dir
pntop="$HOME/.steam"
# steamapps subdir
pnapp="$pntop/steam/steamapps"
# proton subdir normally under top/app
pnbin="$pnapp/common"
# proton prefix subdir normally under top/app
pnpfx="$pnapp/compatdata"
# proton ge
pnpge="$pntop/root/compatibilitytools.d"
# Program Files standard subdir
progs="drive_c/Program Files"
# windows steam client subdir under progs
stcmn="Steam/steamapps/common"
# temp folder
temp="$HOME/Downloads"
# store cmdline args minus first option
clprm=("${@:2}")
xcmd=()
i_mnus=()
myprnt=()
i_syms=()
# scalable built-in programs menu
pmenu=("Command Prompt/wineconsole.exe" "Control Panel/control.exe" "Registry Editor/regedit.exe" "Task Manager/taskmgr.exe" "Windows Explorer/explorer.exe" "Wine Configuration/winecfg.exe")
# prevent shell inheritance of env vars we use
unset WINEARCH WINEDLLPATH WINEPREFIX STEAM_COMPAT_CLIENT_INSTALL_PATH STEAM_COMPAT_DATA_PATH
xarg="$1"
xnint() {
xnbin="$pnbin"
xnpfx="$pnpfx"
dpth=(4 3)
}
xpge() {
test -d "$pnpge" || mkdir -p "$pnpge"
test -d "$pnbin" || mkdir -p "$pnbin"
if [[ ! -d "$(dirname "$pnpge")" ]]; then
echo -e "Could not create folder 'compatibilitytools.d/protonge' in:\n $(dirname "$pnpge")\n because that path does not exist.\nVerify script variable 'pnpge'"
elif [[ ! -d "$pnbin" ]]; then
echo -e "Could not create sym-link 'protonge' in:\n $pnbin\n because that path does not exist.\nVerify script variable 'pnbin'"
else
gedl="$(curl -sL https://api.github.com/repos/GloriousEggroll/proton-ge-custom/releases/latest | jq -r ".tag_name")"
# gedl="$(gh release list -R GloriousEggroll/proton-ge-custom -L 1 | grep -Pio '^ge[^ ]+')"
gever="$(echo "$gedl" | grep -Pio '(?<=ge-proton).*')"
if [[ -f "$pnpge/protonge/version" ]]; then
if [[ -z "$(grep -Pio "$gever" "$pnpge/protonge/version")" ]]; then
echo -e "Available Proton GE $gever differs from installed, updating...\n"
chse=y
else
echo -e "Available Proton GE $gever matches installed, nothing to do.\n"
fi
else
echo -e "Proton GE not found, installing...\n"
chse=y
fi
fi
if [[ -n "$chse" ]]; then
wget --progress=dot:giga "$(curl -s https://api.github.com/repos/GloriousEggroll/proton-ge-custom/releases/latest | grep browser_download_url | cut -d\" -f4 | grep .tar.gz)" -P "$temp"/
rm -rf "$pnpge/protonge"
tar -xf "$temp/$gedl".tar.gz -C "$pnpge/"
mv "$pnpge"/*roton* "$pnpge/protonge"
rm -f "$temp/$gedl".tar.gz
grep -Piq "$gever" "$pnpge/protonge/version" || perl -pi -e "s|(?<=ge-proton).*|$gever|gi" "$pnpge/protonge/version"
test -h "$pnbin/protonge" || ln -sf "$pnpge/protonge" "$pnbin"
fi
}
xn64() {
xstrt="wine64"
xnldl="$xnbin/lib64:$xnbin/lib"
xndll="$xnbin/lib64/wine:$xnbin/lib/wine"
}
xn32() {
xstrt="wine"
xnldl="$xnbin/lib"
xndll="$xnbin/lib/wine"
}
w_menu() {
PS3="Please enter your choice: "
select answer in "${i_mnus[@]}"; do
for item in "${i_mnus[@]}"; do
if [[ $item == "$answer" ]]; then
break 2
fi
done
done
# repeating menu requires valid selection from array
if [[ "$answer" = "quit" ]]; then
# pop quit from end of array for menu option
exit
else
xmrtn="$answer"
fi
unset i_mnus
clear
}
xnexe() {
# menu installed wine/proton or exit
readarray -t i_mnus < <(
find -L "$xnbin" -maxdepth "${dpth[0]}" -type f -iname 'wine' ! \( -ipath '*/sbin*' \) 2>/dev/null | perl -pe "s|\Q$xnbin\E/(.*)[/]*bin/wine|\1| ; s|/$||" | sort
echo "quit"
)
if [[ ${#i_mnus[@]} -gt 2 ]]; then
clear
w_menu
xnbin="$(realpath "$xnbin/$xmrtn")"
unset xmrtn
elif [[ ${#i_mnus[@]} -eq 2 ]]; then
xnbin="$(realpath "$xnbin/${i_mnus[0]}")"
else
echo "No installed Wine/Proton found."
exit 1
fi
}
xnenv() {
# core env vars allow proper targetting of wine/proton
xpath="$xnbin/bin:$PATH"
xcmd=(env PATH="$xpath" WINEDLLPATH="$xndll" LD_LIBRARY_PATH="$xnldl" WINEPREFIX="$xnpfx")
xcmd+=(STEAM_COMPAT_DATA_PATH="${xnpfx///pfx}" STEAM_COMPAT_CLIENT_INSTALL_PATH="$pntop")
}
xlnch() {
#command line launcher
if [[ -z "$dbg" ]]; then
("${xcmd[@]}" >/dev/null 2>&1 &)
else
if [[ "$dbg" = "1" ]]; then
("${xcmd[@]}" &)
elif [[ "$dbg" = "2" ]]; then
(WINEDEBUG="warn+all" "${xcmd[@]}" &)
fi
fi
# prepend cmd with dbg=1 to see command and default debug output
# dbg=2 to see command and all debug output, dbg=? for command only
}
xbld() {
# cross-function custom prefix builder
pnpfx="$pnpfx/${clprm[0]}"
xnint
if [[ -z "${clprm[0]}" ]]; then
echo -e "\n Proton prefix name required, use an appid from Steam: (e.g. 0, 730 ) \n"
elif [[ -d "$xnpfx" ]]; then
echo -e "\n Proton Prefix exists: $xnpfx \n"
else
xnexe
echo "Creating Proton Prefix: ${clprm[0]}"
xnenv
mkdir -p "$xnpfx"
xcmd+=(STEAM_COMPAT_DATA_PATH="$xnpfx" "${xnbin%/*}/proton" "run")
xlnch
fi
}
xnpre() {
if [[ -d "$xnpfx/$progs (x86)" ]]; then
xn64
else
xn32
fi
}
xndef() {
# create default prefix cross-function
if [[ -z "$prfx" ]]; then
echo "INFO: to use a specific prefix, append prfx='your prefix' to this command"
if [[ ! -d "$xnpfx/0" ]]; then
# always create default 0 prefix
xnpfx="$xnpfx/0"
echo "Creating default prefix: $xnpfx"
mkdir -p "$xnpfx"
STEAM_COMPAT_DATA_PATH="$xnpfx" "${xnbin%/*}/proton" run >/dev/null 2>&1 &
xnpfx="$xnpfx/pfx"
else
xnpfx="$xnpfx/0"
xnpfx="$xnpfx/pfx"
fi
else
xnpfx="$xnpfx/$prfx"
if [[ ! -d "$xnpfx" ]]; then
echo "Creating default prefix: $xnpfx"
mkdir -p "$xnpfx"
STEAM_COMPAT_DATA_PATH="$xnpfx" "${xnbin%/*}/proton" run >/dev/null 2>&1 &
xnpfx="$xnpfx/pfx"
else
xnpfx="$xnpfx/pfx"
fi
fi
}
fewoth() {
# filtered list of variable type in standard paths
readarray -t i_mnus < <(
env pedir="$pedir" find "$pedir" -maxdepth 7 -type f -regextype posix-extended ! \( -ipath '*cache*' -o -ipath '*/microsoft*' -o -ipath '*/windows*' -o -ipath '*/temp*' \) ! \( -iregex '.*(capture|clokspl|helper|iexplore|install|internal|kernel|[^ ]launcher|legacypm|overlay|proxy|redist|renderer|(crash|error)reporter|serv(er|ice)|setup|streaming|tutorial|unins|update).*' \) -iname "$xflt" 2>/dev/null | perl -pe "s|\Q$pedir\E/(.*)|\1|" | sort
echo "quit"
)
}
fewexe() {
# filtered list of exe in standard paths
readarray -t i_mnus < <(
env pedir="$pedir" find "$pedir" -maxdepth 7 -type f -regextype posix-extended ! \( -ipath '*cache*' -o -ipath '*/microsoft*' -o -ipath '*/windows*' -o -ipath '*/temp*' \) ! \( -iregex '.*(capture|clokspl|helper|iexplore|install|internal|kernel|[^ ]launcher|legacypm|overlay|proxy|redist|renderer|(crash|error)reporter|serv(er|ice)|setup|streaming|tutorial|unins|update).*' \) -iname '*.exe' -exec sh -c '(readpe -h optional "$1" 2>/dev/null | grep -Piq '0x2.*gui') && (wrestool "$1" 2>/dev/null | grep -Piq 'type=icon') && echo "$1" 2>/dev/null | perl -pe "s|\Q$pedir\E/(.*)|\1|"' -- {} \; 2>/dev/null | sort
echo "quit"
)
# valid exe will have gui and icon
}
alloth() {
# unfiltered list of variable type in specified path
readarray -t i_mnus < <(
find "$pedir" -maxdepth 7 -type f -regextype posix-extended -iname "$xflt" 2>/dev/null | perl -pe "s|\Q$pedir\E/(.*)|\1|" | sort
echo "quit"
)
}
allexe() {
# unfiltered list of exe in specified path
if [[ -n "$(stat --file-system --format=%T "$(stat --format=%m "$pedir" 2>/dev/null)" 2>/dev/null | grep -Pio 'fuse')" ]]; then
readarray -t i_mnus < <(
find "$pedir" -maxdepth 7 -type f -regextype posix-extended -iname '*.exe' 2>/dev/null | perl -pe "s|\Q$pedir\E/(.*)|\1|" | sort
echo "quit"
)
# skip exe validity tests if file is on network drive
else
readarray -t i_mnus < <(
env pedir="$pedir" find "$pedir" -maxdepth 7 -type f -regextype posix-extended -iname '*.exe' -exec sh -c '(readpe -h optional "$1" 2>/dev/null | grep -Piq '0x2.*gui') && (wrestool "$1" 2>/dev/null | grep -Piq 'type=icon') && echo "$1" 2>/dev/null | perl -pe "s|\Q$pedir\E/(.*)|\1|"' -- {} \; 2>/dev/null | sort
echo "quit"
)
# perform exe validity tests if file is on local drive
fi
}
xpmn() {
# use specified exe, menu specified folder, or menu system
if [[ -f "${clprm[0]}" ]]; then
# parse 1st cmdline arg, queue if valid file
pedir="$(realpath "${clprm[0]}")"
xmrtn="$(basename "$pedir")"
pedir="$(dirname "$pedir")"
else
if [[ -d "${clprm[0]}" ]]; then
# parse 1st cmdline arg, use as path if valid
pedir="$(realpath "${clprm[0]}")"
test -z "$xflt" && allexe || alloth
else
# if no cmdline path, use prefix drive_c
pedir="$xnpfx/drive_c"
test -z "$xflt" && fewexe || fewoth
fi
# create menu, from path, of file
test ${#i_mnus[@]} -gt 1 && w_menu
fi
}
xnldr() {
# loader default to proton as applicable, otherwise wine
if [[ -z "$wn" ]]; then
xcmd+=("${xnbin%/*}/proton" "run")
else
if [[ "$wn" = "true" ]]; then
xcmd+=("$xstrt")
else
echo "unrecognised run option"
exit 1
fi
fi
}
xlyt() {
# prepare layout for launch
# 64-bit prefix, 32-bit prefix header, reset env to 32
if [[ -n "$(readpe -h optional "$pedir/$xmrtn" 2>/dev/null | grep -Pi 'magic number.*0x10b')" && -d "$xnpfx/$progs (x86)" ]]; then
xn32
xnenv
fi
xnldr
# if 1st arg is file/folder, skip it and run selection + remaining args
if [[ -e "${clprm[0]}" ]]; then
xcmd+=("$pedir/$xmrtn" "${clprm[@]:1}")
else
xcmd+=("$pedir/$xmrtn" "${clprm[@]}")
fi
}
xnset() {
# set cross-fuction
xnint
# proton menu
xnexe
# create default prefix as required
xndef
# proton prefix
xnpre
# proton env vars
xnenv
}
usage() {
echo -e "\n$(basename $0): ERROR - $*" 1>&2
echo -e "\nusage: $(basename $0)\n [-i,--install] [-b,--build] [-r,--run] \n \n (install) install proton-ge \n (build) build a custom proton prefix \n (run) run an .exe program \n \n" 1>&2
}
if [[ $# -lt 1 ]]; then
usage "one option required!"
else
case $xarg in
-i | --install)
# proton ge
xpge
;;
-p | --prefix)
# prefix builder
xbld
;;
-r | --run)
# second arg should be the prefix to use.
# run program - 1st arg valid file to run, folder to menu,
# neither (sys menu), 2nd arg... passed to exe
xnset
xpmn
if [[ -n "$xmrtn" ]]; then
xlyt
# change to exe dir before run
cd "$(dirname "$pedir/$xmrtn")"
xlnch
fi
;;
-* | \* | *)
# do_usage
usage "invalid option $1"
exit 1
;;
esac
fi
#FIXME: it won't run anything AAAArgh!

View File

@@ -1,28 +0,0 @@
[supervisord]
user=netris
nodaemon=true
loglevel=info
logfile=/tmp/supervisord.log
pidfile=/tmp/supervisord.pid
[program:entrypoint]
command=/etc/entrypoint.sh
logfile=/tmp/entrypoint.log
pidfile=/tmp/entrypoint.pid
stopsignal=INT
autostart=true
autorestart=true
redirect_stderr=true
priority=1
[program:pulseaudio]
user=netris
command=bash -c "until [ -S \"/tmp/.X11-unix/X${DISPLAY/:/}\" ]; do sleep 1; done; sudo /usr/bin/pulseaudio -k >/dev/null 2>&1 || sudo /usr/bin/pulseaudio --system --verbose --log-target=stderr --realtime=true --disallow-exit -L 'module-native-protocol-tcp auth-ip-acl=127.0.0.0/8 port=4713 auth-anonymous=1'"
environment=DISPLAY=":0"
logfile=/tmp/pulseaudio.log
pidfile=/tmp/pulseaudio.pid
stopsignal=INT
autostart=true
autorestart=true
redirect_stderr=true
priority=10

View File

@@ -1,3 +1,3 @@
{
"files.eol": "\n"
"typescript.tsdk": "node_modules/typescript/lib"
}

View File

@@ -629,8 +629,8 @@ to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
Netris: The open-source cloud gaming platform for friends
Copyright (C) 2024 Wanjohi Ryan
Nestri: Your games, Your rules
Copyright (C) 2023 WanjohiRyan
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published

167
README.md
View File

@@ -1,46 +1,32 @@
<div align="center">
<div>
<a href="https://netris.me" >
<img height="160" src="/assets/logo.png">
</a>
</div>
&nbsp;
&nbsp;
<div align="center" >
<div align="center">
<h1>
<a href="https://netris.me" >
<picture>
<source media="(prefers-color-scheme: dark)" srcset="/assets/logo-name-white.png">
<source media="(prefers-color-scheme: light)" srcset="/assets/logo-name-black.png">
<img alt="netris logo name" src="/assets/logo-name-black.png">
</picture>
<a href="https://nestri.io" >
<img src="/apps/www/public/seo/banner.png" alt="Nestri - What will you play next?">
</a>
</h1>
</div>
&nbsp;
&nbsp;
An open-source cloud gaming platform built for you to play together with your friends. <br/> A GeForce NOW alternative that can be self-hosted.<br/>
</div>
&nbsp;
&nbsp;
<div align="center" >
Nestri is an open-source, self-hosted Geforce Now alternative with Stadia's social features. <strong>Built and shaped by our gaming community.</strong>
<br/>
<br/>
</div>
<div align="center">
[![][github-release-shield]][github-release-link]
[![][discord-shield]][discord-link]
[![][github-license-shield]][github-license-link]
[![][github-stars-shield]][github-stars-link]
**Share the Netris Repository on Social Media**
**Share the Nestri Repository on Social Media**
[![][share-x-shield]][share-x-link]
[![][share-reddit-shield]][share-reddit-link]
@@ -49,102 +35,81 @@ An open-source cloud gaming platform built for you to play together with your fr
&nbsp;
&nbsp;
<div align="center" >
> **Note**
> Nestri is more closer (in feature comparison) to Jellyfin/Plex than Moonlight. Our goal is to develop a comprehensive self-hosted cloud gaming solution for your home server.
[![][image-overview]][website-link]
## Features
</div>
- Save and share your game progress easily with friends
- Simultaneously run multiple games on your GPU using Virtio-GPU Venus and/or Virgl
- Play games using either your integrated GPU or dedicated GPU
- Enjoy titles from your preferred Game Stores - Steam, Epic Games, Amazon Games, GOG.com
- Experience Android gaming
- Organize gaming sessions with friends and family through Nestri Parties
- Stream directly to YouTube and Twitch straight from your setup
- Family sharing capabilities
- Support for Controller, Touchscreen, Keyboard, and Mouse devices
## Features 🌟
## Possible Use Cases
As Netris navigates through its _experimental_ phase, we're in the process of crafting and testing a variety of features for you:
- Organize game nights or LAN parties with friends online or locally
- For game developers, showcase your proof-of-concept multiplayer games for testing without installation
- Create and manage your custom cloud-gaming platform using our robust API
- Establish a game server for your family to enjoy gaming on the go
1. **🎮 Proton-GE Compatibility:** We utilize Proton-GE for running games, offering extensive game compatibility and ensuring you can play a wide variety of titles.
## Goals
2. **⚡ QUIC Protocol:** For input and video/audio transmission, we use QUIC via [MoQ][moq-github-url] to significantly reduce latency on variable networks, ensuring crisp visuals without sacrificing data or increasing latency.
- Provide a user-friendly setup - fire and forget
- Deliver a simple and elegant interface for managing and playing your game library
- Ensure a high-quality gaming experience out-of-the-box
- Optimize for the best gaming performance right from the start
3. **🔗 Session IDs:** With a `SESSION_ID`, we seamlessly tie your game progress, achievements, and devices without the need for logging into [netris.me][website-link]. Our public CDNs, currently located in Europe (eu-north-1) and the US (us-east-1), further reduce latency for friends playing together from afar. More locations are on the way!
## Non-Goals
4. **🔄 Automatic Game Progress Sync:** Like Stadia's state share, we automatically sync your game progress based on the *.exe file you're running, allowing you to share your progress with friends via a link.
- Become a generic cloud-gaming service
5. **👫 Co-op Gameplay:** Play co-op with up to 8 people, or play single player by sharing mouse and keyboard inputs seamlessly (similar to [neko][neko-url]).
## Built With
6. **🌐 Cross-Platform Play:** Our platform is accessible on any device that can run a Chrome-based browser, including Edge, Chrome, Brave, and Arc. And you do not have to set up anything, it's all done and maintained for you.
- Cloudflare Workers
- Cloudflare Pages
- Supabase
- CrosVM (with Virtio-GPU Venus and Virgl support)
- Docker
- Qwik
- Media-Over-Quic
- AWS Route53
7. **📊 Bandwidth Optimization:** Experience hardware-accelerated `VMAF` for optimized bandwidth, ensuring the best possible video quality. [Learn More][vmaf-cuda-link]
## Known Issues
8. **🌟 ...and more:** Stay tuned as we continue to add features _sometimes inspired by platforms like Stadia_, to give you the best and most customizable gaming experience.
- CrosVM is still under development and needs to be merged
- Currently, the Intel dGPU, particularly the Arc A780, is the only tested and verified GPU
This platform is in an _experimental_ phase, and we're actively working on adding new features. Your feedback and support is very much appreciated.
## Donation
> \[!IMPORTANT]
>
> If you're excited about what we're doing and want to support our journey, consider giving us a star ⭐ on our repository. Your support fuels our progress!. \~ ✨
If you appreciate our work and wish to support the development of Nestri, consider making a donation [here](https://polar.sh/nestri/donate). Your contributions will help us improve the platform and enhance your gaming experience. Thank you for your support!
## Demo
Nestri is still in development, but here is some footage from Behind-The-Scenes
<img src="/apps/www/public/seo/code.avif" alt="Nestri - What will you play next?">
[![][image-star]][github-stars-link]
## Getting Started 🎮
Whether you're looking to self-host Netris or simply want to try it out without the need for your own GPU, we've got you covered. Choose the path that best suits your needs:
<!-- _You can always change your option later without losing game progress_ -->
| If you don't have a Nvidia GPU or prefer not to self-host, you can visit our website. No installation or set up required ! <br/> This is the perfect option for gamers looking to dive straight into the action without any setup. | [👉🏽 Get Access][website-link] |
| :---------------------------------------- | :----------------------------------------------------------------------------------------------------------------- |
| If you're interested in self-hosting Netris, continue reading for detailed instructions on how to get started. <br/> This option is ideal if you have your own Nvidia GPU and are comfortable with setting up and managing your own server. | [🛠️ Self Host Netris](#self-hosting) |
> \[!TIP]
>
> Remember, flexibility is key with Netris. You're free to switch between self-hosting and using `netris.me` whenever you like, without losing your game progress. \~ 💡
<a name="self-hosting"></a>
### Self-Hosting Netris 🔨
For those interested in self-hosting, here are is what you need to get your own Netris server up and running:
- **Nvidia GPU**: Unfortunately, this setup is exclusive to Nvidia GPUs. If you don't own one, consider renting from cloud services like AWS, GCP, or Vast.ai. We highly recommend this approach.
- **CUDA**: For GPU acceleration, CUDA version `12.0` or newer is required. Verify your CUDA installation by running `nvcc --version`.
- **Docker**: Ensure you have `docker` and `nvidia-docker` are up to date to avoid compatibility issues with CUDA. You can check your Docker version by running `docker --version` in your terminal.
- **GPU Driver**: Ensure your GPU drivers are up to date to avoid compatibility issues with CUDA. Nvidia driver version `520.56.06` or newer is required.
- **Xorg Display**: Your Nvidia GPU should not be attached to a running X display server. You can confirm this by running `nvidia-smi`.
- **Nvidia-DRM**: Make sure that the `nvidia-drm` module has been loaded and that the module is loaded with the flag `modeset=1`. Confirm this by running `sudo cat /sys/module/nvidia_drm/parameters/modeset`
> \[!TIP]
>
> Typically, if your setup meets the necessary CUDA requirements, the `nvidia-drm` module will already be loaded, particularly in AWS G4dn instances. \~ 💡
### Step-by-Step Guide
Follow these steps to get Netris up and running on your system.
> \[!IMPORTANT]
>
> Waiting on this pull request [#43][netris-pr-input] to be merged first. Sorry for the inconvenience. \~ ⚠️
[github-release-link]: https://github.com/wanjohiryan/netris/releases
[github-release-shield]: https://img.shields.io/github/v/release/wanjohiryan/netris?color=369eff&labelColor=black&logo=github&style=flat-square
[github-release-link]: https://github.com/nestriness/nestri/releases
[github-release-shield]: https://img.shields.io/github/v/release/nestriness/nestri?color=369eff&labelColor=black&logo=github&style=flat-square
[discord-shield]: https://img.shields.io/discord/1080111004698021909?color=5865F2&label=discord&labelColor=black&logo=discord&logoColor=white&style=flat-square
[discord-link]: https://discord.com/invite/Y6etn3qKZ3
[github-license-shield]: https://img.shields.io/github/license/wanjohiryan/netris?color=white&labelColor=black&style=flat-square
[github-license-link]: https://github.com/wanjohiryan/netris/blob/main/LICENSE
[github-stars-shield]: https://img.shields.io/github/stars/wanjohiryan/netris?color=ffcb47&labelColor=black&style=flat-square
[github-stars-link]: https://github.com/wanjohiryan/netris/network/stargazers
[github-license-shield]: https://img.shields.io/github/license/nestriness/nestri?color=white&labelColor=black&style=flat-square
[github-license-link]: https://github.com/nestriness/nestri/blob/main/LICENSE
[github-stars-shield]: https://img.shields.io/github/stars/nestriness/nestri?color=ffcb47&labelColor=black&style=flat-square
[github-stars-link]: https://github.com/nestriness/nestri/network/stargazers
[share-x-shield]: https://img.shields.io/badge/-share%20on%20x-black?labelColor=black&logo=x&logoColor=white&style=flat-square
[share-x-link]: https://twitter.com/intent/tweet?text=Hey%2C%20check%20out%20this%20Github%20repository.%20It%20is%20an%20open-source%20self-hosted%20Geforce%20Now%20alternative.&url=https%3A%2F%2Fgithub.com%2Fwanjohiryan%2Fnetris
[share-x-link]: https://twitter.com/intent/tweet?text=Hey%2C%20check%20out%20this%20Github%20repository.%20It%20is%20an%20open-source%20self-hosted%20Geforce%20Now%20alternative.&url=https%3A%2F%2Fgithub.com%2Fnestriness%2Fnestri
[share-reddit-shield]: https://img.shields.io/badge/-share%20on%20reddit-black?labelColor=black&logo=reddit&logoColor=white&style=flat-square
[share-reddit-link]: https://www.reddit.com/submit?title=Hey%2C%20check%20out%20this%20Github%20repository.%20It%20is%20an%20open-source%20self-hosted%20Geforce%20Now%20alternative.&url=https%3A%2F%2Fgithub.com%2Fwanjohiryan%2Fnetris
[share-reddit-link]: https://www.reddit.com/submit?title=Hey%2C%20check%20out%20this%20Github%20repository.%20It%20is%20an%20open-source%20self-hosted%20Geforce%20Now%20alternative.&url=https%3A%2F%2Fgithub.com%2Fnestriness%2Fnestri
[image-overview]: assets/banner.png
[website-link]: https://netris.me
[website-link]: https://nestri.io
[neko-url]: https://github.com/m1k1o/neko
[image-star]: assets/star-us.png
[moq-github-url]: https://quic.video
[vmaf-cuda-link]: https://developer.nvidia.com/blog/calculating-video-quality-using-nvidia-gpus-and-vmaf-cuda/
[netris-pr-input]: https://github.com/netrisdotme/netris/pull/43
[vmaf-cuda-link]: https://developer.nvidia.com/blog/calculating-video-quality-using-nvidia-gpus-and-vmaf-cuda/

14
apps/docs/.eslintrc.cjs Normal file
View File

@@ -0,0 +1,14 @@
module.exports = {
root: true,
extends: ['@nuxt/eslint-config'],
ignorePatterns: [
'dist',
'node_modules',
'.output',
'.nuxt'
],
rules: {
'vue/max-attributes-per-line': 'off',
'vue/multi-word-component-names': 'off'
}
}

12
apps/docs/.gitignore vendored Normal file
View File

@@ -0,0 +1,12 @@
node_modules
*.iml
.idea
*.log*
.nuxt
.vscode
.DS_Store
coverage
dist
sw.*
.env
.output

2
apps/docs/.npmrc Normal file
View File

@@ -0,0 +1,2 @@
shamefully-hoist=true
strict-peer-dependencies=false

87
apps/docs/RELAY.md Normal file
View File

@@ -0,0 +1,87 @@
# How to Deploy Your Own MoQ Relay on a Server
This guide will walk you through the steps to deploy your own MoQ relay on a server.
## Prerequisites
1. **Server Requirements:**
- Ensure port 443 is open for both TCP and UDP (`:443/udp & :443/tcp`).
- The server should have a minimum of **4GB RAM** and **2 vCPUs**.
- Supports ARM or AMD64 architecture.
2. **Software Requirements:**
- Docker and `docker-compose` must be installed on the server. You can use [this installation script](https://github.com/docker/docker-install) for Docker.
- Git must be installed to clone the necessary repository.
3. **Certificates:**
- You will need private and public certificates. It is recommended to use certificates from a trusted CA rather than self-signed certificates.
## Installation Steps
### Step 1: Clone the Repository
Clone the `kixelated/moq-rs` repository to your local machine:
```bash
git clone https://github.com/kixelated/moq-rs moq
```
### Step 2: Verify Port Availability
Check if port 443 is already in use on your server:
```bash
sudo netstat -tulpn | grep ':443' | grep LISTEN
```
or
```bash
sudo lsof -i -P -n | grep LISTEN | grep 443
```
If you find any processes using port 443, consider terminating them.
### Step 3: Configure Ports
Navigate to the cloned directory and edit the Docker compose file to use port 443:
```bash
cd moq
vim docker-compose.yml
```
Change the ports section from lines 34 to 35 to:
```yaml
ports:
- "443:443"
- "443:443/udp"
```
### Step 4: Prepare Certificates
Copy your generated certificates into the `moq/dev` directory and rename them:
```bash
cp cert.pem moq/dev/localhost.crt
cp key.pem moq/dev/localhost.key
```
### Step 5: Start Docker Instances
Ensure you are in the root directory of the `moq` project, then start the Docker containers:
```bash
docker compose up -d
```
### Step 6: Link Domain to Server IP
Configure your DNS settings to connect your server's IP address to your domain:
```
Record Type: A
Subdomain: relay.fst.so
IP Address: xx.xxx.xx.xxx
```
Congratulations, your MoQ server is now set up! You can verify its functionality by using the [MoQ Checker](https://nestri.pages.dev/moq/checker).

44
apps/docs/app.config.ts Normal file
View File

@@ -0,0 +1,44 @@
// https://github.com/nuxt-themes/docus/blob/main/nuxt.schema.ts
export default defineAppConfig({
docus: {
title: 'Nestri',
description: 'An open-source, self-hosted Geforce Now alternative',
image: 'https://feat-relay-hetzner.nestri.pages.dev/logo.webp',
socials: {
twitter: 'nestriness',
github: 'nestriness/nestri',
reddit: '/r/nestri',
website: {
label: 'Website',
icon: 'lucide:house',
href: 'https://nestri.io'
}
},
github: {
dir: 'apps/docs/content',
branch: 'main',
repo: 'nestri',
owner: 'nestriness',
edit: true
},
aside: {
level: 0,
collapsed: false,
exclude: []
},
main: {
padded: true,
fluid: true
},
logo: "/nestri-logo.svg",
header: {
logo: true,
showLinkIcon: true,
exclude: [],
fluid: true
},
footer: {
credits: false,
}
}
})

View File

@@ -0,0 +1,62 @@
<script setup lang="ts">
const socials = ['twitter', 'facebook', 'instagram', 'tiktok', 'youtube', 'github', 'medium', 'reddit', 'discord']
const { config } = useDocus()
const icons = computed<any>(() => {
return Object.entries(config.value.socials || {})
.map(([key, value]) => {
if (typeof value === 'object') {
return value
} else if (typeof value === 'string' && value && socials.includes(key)) {
return {
href: /^https?:\/\//.test(value) ? value : `https://${key}.com/${value}`,
icon: `fa-brands:${key}`,
label: value,
rel: 'noopener noreferrer'
}
} else {
return null
}
})
.filter(Boolean)
})
</script>
<template>
<NuxtLink
v-for="icon in icons"
:key="icon.label"
:rel="icon.rel"
:title="icon.label"
:aria-label="icon.label"
:href="icon.href"
target="_blank"
>
<Icon
v-if="icon.icon"
:name="icon.icon"
/>
</NuxtLink>
</template>
<style lang="ts" scoped>
css({
a: {
display: 'flex',
color: '{color.gray.500}',
padding: '{space.4}',
'@dark': {
color: '{color.gray.400}'
},
'&:hover': {
color: '{color.gray.700}',
'@dark': {
color: '{color.gray.200}',
}
},
}
})
</style>

View File

@@ -0,0 +1,3 @@
<template>
<img width="120" src="/img/nestri-logo-sm.svg"/>
</template>

View File

@@ -0,0 +1,70 @@
<template>
<div class="py-8">
<h2 class="text-3xl lg:text-4xl font-bold mb-12 text-gray-900">
Contributors made <span class="text-orange-500">Nestri</span>
</h2>
<div class="grid grid-cols-4 sm:grid-cols-5 md:grid-cols-8 gap-4 sm:gap-5 lg:gap-6">
<div
v-for="(contributor, index) in contributors"
:key="index"
class="pt-[100%] relative"
>
<NuxtLink
v-if="contributor.login"
:key="contributor.login"
:to="`https://github.com/${contributor.login}`"
class="absolute inset-0 flex transition-all"
:style="{
'transition-delay': `${(index % 8 + Math.floor(index / 8)) * 20}ms`
}"
>
<UTooltip class="w-full text-orange-500" :text="contributor.login">
<NuxtImg
:src="contributor.avatar_url"
provider="ipx"
densities="x1 x2"
height="80px"
width="80px"
:alt="contributor.login"
loading="lazy"
class="rounded-xl w-full h-full transition lg:hover:scale-110"
/>
</UTooltip>
<span class="inline-block rounded-t px-1 bg-gray-950 text-white absolute -bottom-2 right-0 font-medium text-sm">
<span class="font-light text-xs text-gray-400">#</span>{{ index + 1 }}
</span>
</NuxtLink>
</div>
</div>
</div>
</template>
<script setup lang="ts">
import { ref, onMounted } from 'vue'
const contributors = ref([])
// Fetch contributors data from GitHub without authentication
const fetchContributors = async () => {
try {
const response = await fetch('https://api.github.com/repos/nestriness/nestri/contributors')
if (!response.ok) throw new Error('Failed to fetch contributors')
contributors.value = await response.json()
} catch (error) {
console.error('Error fetching contributors:', error)
}
}
// Fetch contributors when component is mounted
onMounted(fetchContributors)
</script>
<style>
:hover.
</style>

View File

@@ -0,0 +1,55 @@
---
title: Home
navigation: false
layout: page
main:
fluid: false
---
:ellipsis{right=0px width=75% blur=150px}
::block-hero
---
cta:
- Get started
- /introduction/what-is-nestri
secondary:
- Open on GitHub →
- https://github.com/nestriness/nestri
---
#title
An open-source, self-hosted Geforce Now alternative.
#description
Play your favorite games on the go or with your friends on your own game cloud.
#extra
::list
- **Selfhosted** cloud gaming
- **Open Source** and **Free**
- 1.5k ⭐️ on GitHub
::
<!--#support
::terminal
---
content:
- npx nuxi@latest init -t themes/docus
- cd docs
- npm install
- npm run dev
---
::-->
::
::contributors
::

View File

@@ -0,0 +1,21 @@
# What is Nestri?
Nestri is a self-hosted cloud gaming platform that enables you to spin up dedicated gaming sessions remotely and play your own games from any device with a browser. Unlike remote desktop solutions like Parsec, which focus on streaming a desktop environment, Nestri is designed specifically for cloud gaming. It works similarly to services like NVIDIA GeForce Now, allowing you to enjoy high-performance gaming without needing to be physically near your gaming PC.
The key difference with Nestri is that its entirely self-hosted, so you have full control over the server, the games you install, and the entire setup. Nestri is ideal for gamers who prioritize privacy, flexibility, and control, offering a way to manage your own gaming infrastructure rather than relying on third-party services. As long as you have a stable internet connection and access to a web browser, you can game from virtually anywhere.
## Nestri Modules
To provide a smooth and efficient gaming experience, Nestri is composed of the following key components:
### Nestri Node
The Nestri Node is the core of your Nestri setup. It acts as the game server where you install and run your games. The Nestri Node streams gameplay from the machine its installed on, allowing you to access your games remotely. It runs on most Linux-based systems and requires an NVIDIA graphics card to ensure a high-quality gaming experience.
Since Nestri Node cannot run alongside Xorg (the graphical interface), its recommended to install it on a dedicated machine. This way, your server can focus solely on streaming your games while avoiding conflicts with your local display setup.
### Nestri Relay
The Nestri Relay is responsible for transporting the video stream from your Nestri Node to the device you're gaming on. By default, Nestri connects to the Nestri-hosted Relay, which requires no configuration and is available for all users. This simplifies the setup process, ensuring a smooth streaming experience without the need for advanced networking or SSL certificate management.
For advanced users, it's possible to self-host the relay, but this requires the setup of secure SSL certificates. This option is typically more complex and is recommended only for developers or those familiar with network configuration.

View File

@@ -0,0 +1,19 @@
# FAQ
## Is Nestri free?
Yes! Nestri offers two options: a free, self-hosted version and a paid, hosted version.
- Self-Hosted Version (Free): If you have your own server, you can install and run Nestri for free. Since Nestri is open-source, you have full access to the codebase, allowing for transparency and flexibility in your setup.
- Hosted Version (Paid): The hosted version of Nestri operates similarly to services like NVIDIA GeForce Now. With a subscription, you can play your games on Nestris infrastructure without needing any technical knowledge—just sign up, log in, and start gaming!
## Does Nestri require a high-speed internet connection?
Yes, a stable and fast internet connection is essential for a smooth gaming experience. While you dont need extremely high speeds (like 1 Gbps fiber), low latency is critical. Since cloud gaming is sensitive to delay, your device needs to connect to one of our relays with minimal lag. Ensuring a strong, stable network connection close to a relay server is important to avoid delays in gameplay, especially during fast-paced action sequences.
## Where are Nestris relays located?
Currently, we have one relay deployed in Helsinki, Finland. As we grow, we plan to add more relays to reduce latency and improve connection quality for users in different regions. Our next planned relay is in Copenhagen, Denmark. Since were a startup with a limited budget, well continue to roll out more relays as demand grows and more users join the platform.
## Is Nestri like Parsec?
No, Nestri is not like Parsec, which is used to access and game on an existing desktop remotely. Nestri is a server application designed specifically for cloud gaming. Rather than connecting to a physical Windows desktop, Nestri runs your games within a Docker or Podman container, allowing you to play remotely without needing to access a traditional desktop environment.
## Do I need a high-end server with a 4090 GPU and a 64-core CPU?
Not necessarily! Nestri doesnt have strict hardware requirements in terms of having the latest or most powerful CPU or GPU. Just as with traditional gaming, better hardware will enhance your experience with improved graphics and higher FPS. The exact specs you need will depend on the games you want to play and the performance youre aiming for. Keep in mind that, because Nestri runs games on Linux using Proton and the Gstreamer encoding, there will be a bit of additional processing required, so some extra power will be helpful.

View File

@@ -0,0 +1,2 @@
icon: ph:star-duotone
navigation.redirect: /introduction/what-is-nestri

View File

@@ -0,0 +1,9 @@
# What is Nestri Node?
Nestri Node is the core component of Nestri's self-hosted cloud-gaming solution, designed for users who want the freedom and flexibility of running their own game-streaming server. Similar to services like NVIDIA GeForce Now, Nestri allows you to play your games remotely via your browser. However, unlike other cloud-gaming platforms, Nestri is fully self-hosted, giving you complete control over your server and gaming experience.
The Nestri Node is the actual server where you install your games. Once set up, you can stream and play your games remotely from any compatible device. It runs on machines with Linux and requires an NVIDIA, AMD or an Intel graphics card .
## ⚠️ Important Note
We recommend not installing Nestri Node on your primary PC if you only intend to use it over a weekend. This is because Nestri Node cannot run simultaneously with Xorg, the display server responsible for managing the graphical user interface (GUI). This means that while Nestri Node is running, you will not be able to use an attached screen. For this reason, Nestri Node is best set up on a dedicated machine that wont be used for other tasks.

View File

@@ -0,0 +1,53 @@
# Prerequisite
To run Nestri on your own server, there are several essential preparations required before installing nestri-node. This page outlines the key requirements to get Nestri up and running smoothly.
Nestri-node supports AMD, NVIDIA, and Intel graphics cards. For optimal performance, however, we recommend using Intel or NVIDIA GPUs. Our testing has shown that these GPUs provide the best results, while AMD graphics cards may encounter limitations due to partial support for Arch Linux in AMD's AMF drivers. As a workaround, we utilize the VA-API plugin for GStreamer with AMD cards to ensure functionality.
While it might be tempting to skip this setup, we advise against it. Taking the time to prepare now will help you avoid potential issues and wasted hours later.
## Recommended host configuration
::list{type="primary"}
- **NVIDIA or Intel GPU** (AMD is supported, but not reccomended, due to lack of natively supported API-drivers in CachyOS)
- **AVX supported CPU** (If your CPU doesent support AVX, you can use our `noavx` image)
- **Fedora or Arch** based distributions ( [Debian and Ubuntu is **not** supported](/nestri-node/node-faq#can-i-run-nestri-node-on-debianubuntu) )
::
## Software Requirements
::list{type="primary"}
- **Nvidia Drivers**
- **[NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html#installing-with-apt)**
- **[Docker](https://linuxiac.com/how-to-install-docker-on-ubuntu-24-04-lts/)**
::
## Disconnect monitor
Since Nestri requires access to your GPU, then you need to unplug you screen from it.
If you want to see the Desktop and have a integrated graphicscard in your CPU, then you can connect your monitor to the motherboard.
### Change the Default Boot Target to Multi-User (Non-GUI Mode)
Ubuntu typically starts in graphical mode (using the graphical.target systemd target). You should change to the non-graphical multi-user.target, which will prevent Xorg from starting.
1. Open a terminal or access your system via SSH.
2. To check your current default target (which should be graphical.target)
```bash
systemctl get-default
```
3. Change the default target to multi-user.target (which corresponds to text mode, without Xorg):
```bash
sudo systemctl set-default multi-user.target
```
4. Reboot the system
5. Verify that Xorg is not running
```bash
nvidia-smi
```

View File

@@ -0,0 +1,101 @@
# Getting Started
::alert{type="danger"}
Nestri is in a **very early-beta phase**, so errors and bugs may occur.
::
### Step 0: Construct Your Docker Image
Checkout your branch with the latest version of nestri and build the image `<your-nestri-image>` within git root folder:
```bash
docker buildx build -t <your-nestri-image>:latest -f Containerfile.runner .
```
::alert{type="info"}
You can right now also pull the docker image from DatHorse GitHub Containter Registry with:
```bash
docker pull ghcr.io/datcaptainhorse/nestri-cachyos:latest
```
::
### Step 1: Navigate to Your Game Directory
First, change your directory to the location of your `.exe` file. For Steam games, this typically means:
```bash
cd $HOME/.steam/steam/steamapps
ls -la .
```
### Step 2: Generate a Session ID
Create a unique session ID using the following command:
```bash
echo "$(head /dev/urandom | LC_ALL=C tr -dc 'a-zA-Z0-9' | head -c 16)"
```
This command generates a random 16-character string. Be sure to note this string carefully, as you'll need it for the next step.
### Step 3: Launch the Nestri Server
With your SESSION_ID ready, insert it into the command below, replacing `<your_session_id>` with your actual session ID, also replace `<relay_url>` with your relay URL and `<your-nestri-image>` with your build nestri image or nestri remote image. Then run the command to start the Nestri server:
```bash
docker run --rm -it --shm-size=1g --gpus all -e NVIDIA_DRIVER_CAPABILITIES=all --runtime=nvidia -e RELAY_URL='<relay_url>' -e NESTRI_ROOM=<your_session_id> -e RESOLUTION=1920x1080 -e FRAMERATE=60 -e NESTRI_PARAMS='--verbose=true --video-codec=h264 --video-bitrate=4000 --video-bitrate-max=6000'--name nestri -d -v "$(pwd)":/mnt/game/ <your-nestri-image>:latest
```
### Step 4: Get Into your container
Get into your container to start your game:
```bash
sudo docker exec -it nestri bash
```
### Step 5: Installing a Launcher
For most games that are not DRM free you need a launcher. In this case use the umu launcher and optional mangohud:
```bash
pacman -S --overwrite="*" umu-launcher mangohud
```
### Step 5: Running Your Game
You have to execute your game now with nestri user. If you have a linux game just execute it with the nestri user
```bash
su nestri
source /etc/nestri/envs.sh
GAMEID=0 PROTONPATH=GE-Proton mangohud umu-run /mnt/game/<your-game.exe>
```
### Step 6: Begin Playing
Finally, construct the play URL with your session ID:
`https://nestri.io/play/<your_session_id>`
Navigate to this URL in your browser, click on the page to capture your mouse pointer, and start playing!
::alert{type="info"}
You can also use other relays/frontends depending on your choosen `<relay_url>`
For testing you can use DatHorse Relay and Frontend:
| **Placeholder** | **URL** |
| ---------------------------- | ---------- |
| `<relay_url>` | `https://relay.dathorse.com/` |
| `<frontend_url>` | `https://nestritest.dathorse.com/play/<your_session_id>` |
::
<!--
Nestri Node is easy to install using the provided installation script. Follow the steps below to get started.
## Installation
1. Download the installation script using `wget`:
```bash
wget https://github.com/nestriness/nestri/nestri-node-install.sh
```
2. Make the script executable:
```bash
chmod +x nestri-node-install.sh
```
3. Run the script to start the installation process:
```bash
./nestri-node-install.sh
```
::-->

View File

@@ -0,0 +1,2 @@
# Troubleshooting

View File

@@ -0,0 +1,22 @@
# Container CLI
The Container CLI for Nestri provides parameters to configure and manage your container environment. Use these options to set values like `relay-url`, `video resolution`, and `frame rate`. Additionally, activate `verbose` mode and logging to assist in debugging and error tracking. This documentation details each parameter to help you optimize your container setup effectively
| **Parameter** | **Type** | **Default** | **Description** |
| ---------------------------- | ---------- | --------------------- | ---------------------------------------------------------------------------------------------------- |
| `-v, --verbose` | `string` | false | Shows more logs, for issues we recommend turning it on before running nestri-server and sending the logs for debugging (i.e. `nestri-server --verbose=true > logs.txt`) |
| `-d, --debug-feed` | `string` | false | Adds a timer overlay at bottom-right in the video stream, along with spawning an X11 window on host for doing comparisons against |
| `-u, --relay-url` | `string` | https://relay.fst.so | [MoQ relay](/nestri-relay/what-is-nestri-node) endpoint URL (must begin with `https://` as MoQ __can't work with unsafe connections__) |
| `-p, --relay-path` | `string` | default generated on start if not set | namespace/path for the stream, identifies the stream (basically stream name), must be unique |
| **Video** | | | |
| `-r, --resolution ` | `string` | 1280x720 | Sets nestri virtual display + stream resolution using `WIDTHxHEIGHT` format |
| `-f, --framerate` | `integer` | 60 | Framerate for nestri virtual display + stream |
| `-g, --gpu-vendor` | `string` | | allows selecting specific GPU by vendor name (`nvidia`, `amd` or `intel`) |
| `-i, --gpu-index` | `string` | | allows selecting a GPU by it's general name, doesn't have to be full name as it's matched partially (i.e. `3060` would get you `RTX 3060` GPU, but it would also let `RTX 3060 Ti` pass) |
| `-a, --gpu-card-path` | `string` | | allows specifying GPU by `/dev/dri/cardX` or `/dev/dri/renderX` path, this won't work with the other 3 gpu parameters as it's explicitly setting the GPU |
| **Encoder** | | | |
| `-c, --encoder-vcodec` | `string` | h264 | Sets the stream video codec (`h264` or `av1`) |
| `-t, --encoder-type` | `string` | hardware | Sets whether to use GPU encoder (`hardware`), or CPU encoder (`software`, only should be used with debugging or if GPU has no encoding capabilities) |
| `-e, --encoder-name` | `string` | | forces a specific encoder by GStreamer element name (i.e. `vah264enc`) |
| `-q, --encoder-cqp` | `string` | 25 | sets the stream quality level, lower means higher quality and much more bitrate used |

View File

@@ -0,0 +1,12 @@
# Node FAQ
This FAQ is made to address common questions about Nestri Node, the container which runs your games. Whether you're curious about compatibility, setup, or performance, you'll find answers to help you get started..
## Can I run Nestri Node on Debian/Ubuntu? :icon{name="logos:ubuntu" style="opacity:100"} :icon{name="logos:debian" style="opacity:100"}
Unfortunately, it is not possible to run Nestri Node on Debian-based distributions like Ubuntu at this time. After extensive debugging efforts, we have decided to focus on platforms that currently work well, such as Fedora and Arch-based distributions. We may revisit the possibility of supporting Debian in the future, but for now, it is not supported.
## Can I run Nestri Node in a virtualized environment like Proxmox?
Yes, you can run Nestri Node in a virtualized environment, provided you passthrough your GPU to the virtual machine. However, we do not recommend this setup as virtualization may introduce additional overhead and latency. For the best performance, we recommend running Nestri Node on bare-metal hardware.
## Can I run Nestri Node on Windows-based systems?
No, the Nestri Node service does not support Windows-based systems. It can only be deployed on Linux servers.

View File

@@ -0,0 +1,2 @@
title: 'Nestri Node'
icon: heroicons-outline:bookmark-alt

View File

@@ -0,0 +1,9 @@
# What is Nestri Relay?
Nestri Relay is an essential component in the Nestri cloud-gaming ecosystem, responsible for transporting the video gameplay stream from your Nestri Node to the device youre playing on. It is built on the moq-rs protocol, designed for efficient and smooth video transmission, ensuring a low-latency gaming experience.
By default, your Nestri Node will connect to the Nestri-hosted Relay, which we manage and is available for all users. This is the simplest and most straightforward option, requiring no additional configuration on your end.
## ⚠️ Important Note
We recommend not installing Nestri Node on your primary PC if you only intend to use it over a weekend. This is because Nestri Node cannot run simultaneously with Xorg, the display server responsible for managing the graphical user interface (GUI). This means that while Nestri Node is running, you will not be able to use an attached screen. For this reason, Nestri Node is best set up on a dedicated machine that wont be used for other tasks.

View File

@@ -0,0 +1,25 @@
## Self-hosted Nestri Relay
For those who prefer full control over their infrastructure, it is possible to self-host the Nestri Relay. However, setting this up can be a bit complex, as it requires generating SSL certificates for secure communication between your Nestri Node and your gaming devices. There are three main options:
- **Let's Encrypt Certificate**: This is the **recommended option** for self-hosting and requires a domain name. You can generate a certificate using tools like **certbot** or **acme.sh**. Let's Encrypt provides free SSL certificates that are trusted by most browsers and are relatively straightforward to set up.
- **Purchased SSL Certificate**: The **easiest option** for most users is to buy an SSL certificate from a trusted Certificate Authority (CA). This option eliminates much of the hassle involved with certificate generation, as these certificates are already trusted by browsers and dont require as much manual setup.
While self-hosting offers more flexibility, most users will find the **Nestri-hosted Relay** to be the easiest and most reliable option for getting started with cloud gaming on Nestri. This hosted relay is available to everyone and requires no configuration.
---
## Prerequisites
1. **Server Requirements:**
- Ensure **port 443** is open for both **TCP and UDP** (`:443/udp & :443/tcp`).
- The server should have at least **4GB RAM** and **2 vCPUs**.
- Supports both ARM or AMD64 architecture.
2. **Software Requirements:**
- Docker and `docker-compose` must be installed on the server. You can use [this installation script](https://github.com/docker/docker-install) to set up Docker.
- Git must be installed to clone the necessary repository.
3. **Certificates:**
- You will need both private and public SSL certificates. It is recommended to use certificates from a **trusted Certificate Authority** (CA), either by using **Let's Encrypt** or purchasing a commercial SSL certificate, for secure communication. Avoid using self-signed certificates, as they can lead to compatibility issues and security warnings in browsers.

View File

@@ -0,0 +1,69 @@
## Installation Steps
### Step 1: Clone the Repository
Clone the `kixelated/moq-rs` repository to your local machine:
```bash
git clone https://github.com/kixelated/moq-rs moq
```
### Step 2: Verify Port Availability
Check if port 443 is already in use on your server:
```bash
sudo netstat -tulpn | grep ':443' | grep LISTEN
```
or
```bash
sudo lsof -i -P -n | grep LISTEN | grep 443
```
If you find any processes using port 443, consider terminating them.
### Step 3: Configure Ports
Navigate to the cloned directory and edit the Docker compose file to use port 443:
```bash
cd moq
vim docker-compose.yml
```
Change the ports section from lines 34 to 35 to:
```yaml
ports:
- "443:443"
- "443:443/udp"
```
### Step 4: Prepare Certificates
Copy your generated certificates into the `moq/dev` directory and rename them:
```bash
cp cert.pem moq/dev/localhost.crt
cp key.pem moq/dev/localhost.key
```
### Step 5: Start Docker Instances
Ensure you are in the root directory of the `moq` project, then start the Docker containers:
```bash
docker compose up -d
```
### Step 6: Link Domain to Server IP
Configure your DNS settings to connect your server's IP address to your domain:
```
Record Type: A
Subdomain: relay.fst.so
IP Address: xx.xxx.xx.xxx
```
Congratulations, your MoQ server is now set up! You can verify its functionality by using the [MoQ Checker](https://nestri.pages.dev/moq/checker).

View File

@@ -0,0 +1,42 @@
# ⚠️ Advanced users
## Generating an SSL Certificate for Nestri Relay
This guide is for developers and advanced users who wish to self-host Nestri Relay. We strongly discourage this setup for general users due to its complexity, particularly when it comes to configuring SSL certificates correctly. Using a self-signed certificate or manually generating certificates can lead to issues with browser compatibility and security warnings, making it difficult to ensure a smooth experience.
For most users, we highly recommend using the **Nestri-hosted Relay**, which requires no manual setup and is ready to use out of the box.
---
## Generating an SSL Certificate Using Terraform
If you still wish to proceed with self-hosting, we recommend using Terraform to generate a valid SSL certificate. This method provides a secure, automated way to obtain the necessary certificates for Nestri Relay.
### Usage
1. **Update the `terraform.tfvars`** file with your domain and email.
2. Run the following command to initialize the Terraform working directory:
```bash
terraform init
```
```bash
terraform plan
```
```bash
terraform apply
```
The configuration provides two sensitive outputs:
```bash
certificate_pem: The full certificate chain
private_key_pem: The private key for the certificate
```
These can be then be used in your `moq-relay` as it requires SSL/TLS certificates.
## Note
The generated certificate and key files are saved locally and ignored by git:
```git
.terraform
relay_*
```

View File

@@ -0,0 +1,4 @@
## MOQ Tester
Test your Nestri Relay, with our MOQ tester tool.
:button-link[Try MOQ Test Tool]{size="small" icon="IconStackBlitz" href="https://nestri.pages.dev/moq/checker" blank}

View File

@@ -0,0 +1,2 @@
title: 'Nestri Relay'
icon: heroicons-outline:bookmark-alt

View File

@@ -0,0 +1,3 @@
# What is this?
This is the part of the docs dedicated for the team working on Nestri

View File

@@ -0,0 +1,27 @@
# Setup
- Install bun [https://bun.sh/](https://bun.sh/)
- Generate your Cloudflare token from [here](https://dash.cloudflare.com/profile/api-tokens?permissionGroupKeys=%5B%7B%22key%22%3A%22account_settings%22%2C%22type%22%3A%22edit%22%7D%2C%7B%22key%22%3A%22dns%22%2C%22type%22%3A%22edit%22%7D%2C%7B%22key%22%3A%22memberships%22%2C%22type%22%3A%22read%22%7D%2C%7B%22key%22%3A%22user_details%22%2C%22type%22%3A%22edit%22%7D%2C%7B%22key%22%3A%22workers_kv_storage%22%2C%22type%22%3A%22edit%22%7D%2C%7B%22key%22%3A%22workers_r2%22%2C%22type%22%3A%22edit%22%7D%2C%7B%22key%22%3A%22workers_routes%22%2C%22type%22%3A%22edit%22%7D%2C%7B%22key%22%3A%22workers_scripts%22%2C%22type%22%3A%22edit%22%7D%2C%7B%22key%22%3A%22workers_tail%22%2C%22type%22%3A%22read%22%7D%5D&name=sst&accountId=*&zoneId=all)
- save it to a `.env` file like this
```
CLOUDFLARE_API_TOKEN=xxx
```
- Copy this to your `~/.aws/config` file
```
[sso-session nestri]
sso_start_url = https://nestri.awsapps.com/start
sso_region = us-east-1
[profile nestri-dev]
sso_session = nestri
sso_account_id = 535002871375
sso_role_name = AdministratorAccess
region = us-east-1
[profile nestri-production]
sso_session = nestri
sso_account_id = 209479283398
sso_role_name = AdministratorAccess
region = us-east-1
```
- You need to login once a day with `bun sso` in root

View File

@@ -0,0 +1,2 @@
title: 'Nestri Internals'
icon: heroicons-outline:bookmark-alt

14
apps/docs/nuxt.config.ts Normal file
View File

@@ -0,0 +1,14 @@
export default defineNuxtConfig({
// https://github.com/nuxt-themes/docus
extends: ['@nuxt-themes/docus'],
components: true,
devtools: { enabled: true },
modules: [// Remove it if you don't use Plausible analytics
// https://github.com/nuxt-modules/plausible
'@nuxtjs/plausible', '@nuxt/ui'],
compatibilityDate: '2024-09-29'
})

20844
apps/docs/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

22
apps/docs/package.json Normal file
View File

@@ -0,0 +1,22 @@
{
"name": "docus-starter",
"version": "0.1.0",
"private": true,
"scripts": {
"nestri.dev": "nuxi dev",
"build": "nuxi build --preset=cloudflare_pages",
"generate": "nuxi generate",
"preview": "nuxi preview",
"lint": "eslint ."
},
"devDependencies": {
"@nuxt-themes/docus": "latest",
"@nuxt/devtools": "^2.3.2",
"@nuxt/eslint-config": "^0.5.6",
"@nuxt/ui": "^2.19.2",
"@nuxtjs/plausible": "^1.0.2",
"@types/node": "^20.16.5",
"eslint": "^9.10.0",
"nuxt": "^3.16.1"
}
}

BIN
apps/docs/public/cover.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -0,0 +1 @@
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 167 44" width="167" height="44"><defs><image width="47" height="36" id="img1" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC8AAAAkCAMAAAAuPpNdAAAAAXNSR0IB2cksfwAAAEJQTFRF/1gO/1MG/1MG/1UJ/08B/08B/14X/1oQ/1oQAAAA/18Z/1oR/1oR/1kP/1MH/1MH/2ck/2Me/2Me/24v/2sq/2sqUcSXkwAAABZ0Uk5T//+f//+fp6hpACsrG3BwRmdoQUpKLmJsmB4AAAA6SURBVHicY2RgZCABMDIyj6ofUPVsJKrnJEU5UAOp6rkGWfiMqqeuet5Blt4EBln4jKqnrnph0tQDAHjbARfH6mW/AAAAAElFTkSuQmCC"/></defs><style>.a{fill:#0a0a0a}</style><use href="#img1" x="6" y="4"/><path class="a" d="m69.2 34h-5.8v-24h7.9l8.5 16.3h0.1v-16.3h5.8v24h-7.4l-9-16.8h-0.1zm28.4 0.5q-2.8 0-4.6-0.7-1.8-0.8-3-2.2-1.1-1.3-1.6-3.1-0.5-1.7-0.5-3.6 0-2.1 0.5-4 0.6-1.9 1.7-3.3 1.1-1.5 2.8-2.4 1.8-0.8 4.3-0.8 2.5 0 4.2 0.8 1.8 0.9 2.8 2.4 1.1 1.5 1.4 3.5 0.3 2-0.1 4.3l-13.9 0.2v-3.1l9.4-0.2-0.8 1.8q0.3-1.6 0-2.8-0.3-1.1-1-1.7-0.7-0.6-2-0.6-1.4 0-2.1 0.7-0.8 0.7-1.2 1.9-0.3 1.3-0.3 3 0 2.9 1 4.2 1 1.4 3 1.4 0.9 0 1.4-0.2 0.6-0.2 1-0.6 0.3-0.5 0.5-1.1 0.1-0.6 0.1-1.3l5.4 0.2q0.1 1.2-0.3 2.5-0.3 1.3-1.3 2.4-0.9 1.1-2.6 1.8-1.7 0.6-4.2 0.6zm18.7 0q-1.9 0-3.6-0.3-1.6-0.4-2.8-1.3-1.2-0.8-1.9-2.2-0.6-1.4-0.5-3.4l5.1-0.4q0.1 1.2 0.6 2 0.4 0.7 1.3 1.1 0.8 0.4 2 0.4 1.1 0 1.9-0.4 0.9-0.4 0.9-1.3 0-0.5-0.3-0.8-0.3-0.3-1.1-0.5-0.8-0.3-2.3-0.7-1.8-0.5-3.3-0.9-1.5-0.5-2.6-1.2-1-0.6-1.5-1.6-0.6-0.9-0.6-2.4 0-2 1.1-3.3 1-1.4 2.9-2.2 1.9-0.7 4.4-0.7 2.2 0 4.1 0.7 2 0.6 3 2.2 1.2 1.6 0.9 4.1l-5 0.5q0.1-1-0.3-1.8-0.4-0.7-1.2-1.1-0.7-0.4-1.8-0.4-1.3 0-2 0.5-0.6 0.4-0.6 1.1 0 0.5 0.4 0.9 0.4 0.4 1.3 0.7 0.9 0.3 2.3 0.6 1.3 0.2 2.6 0.6 1.3 0.4 2.5 1.1 1.2 0.7 1.9 1.8 0.7 1.1 0.7 2.7 0 1.8-1 3.1-0.9 1.4-2.8 2.1-1.9 0.7-4.7 0.7zm18.1 0q-3.4 0-5.1-1.7-1.6-1.8-1.6-5.4v-8h-2.1v-3.7h0.1q2.2-0.2 3.2-1.4 0.9-1.3 1.1-3.7v-0.1h3.5v4.4h4.4v4.7h-4.4v7.2q0 1.4 0.6 2 0.7 0.6 1.7 0.6 0.5 0 1.1-0.2 0.5-0.1 1-0.4v5.2q-1.1 0.3-2 0.4-0.9 0.1-1.5 0.1zm11.5-0.5h-5.8v-10.4-8.7h5v7.6h0.3q0.2-3.1 0.9-4.8 0.6-1.8 1.6-2.5 0.9-0.8 2.1-0.8 0.7 0 1.4 0.2 0.7 0.2 1.4 0.6l-0.3 6.5q-0.8-0.4-1.6-0.7-0.7-0.2-1.4-0.2-1.2 0-2 0.6-0.8 0.7-1.2 2-0.4 1.2-0.4 3zm14.5 0h-5.8v-19.1h5.8zm-2.9-20.6q-1.7 0-2.6-0.6-0.9-0.8-0.9-2.1 0-1.4 0.9-2.1 0.9-0.7 2.6-0.7 1.7 0 2.6 0.7 0.9 0.7 0.9 2.1 0 1.3-0.9 2-0.9 0.7-2.6 0.7z"/></svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View File

@@ -0,0 +1 @@
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1080 1080" width="1080" height="1080"><defs><image width="308" height="234" id="img1" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAATQAAADqCAMAAAAbHElGAAAAAXNSR0IB2cksfwAAADNQTFRF/5Bf/2wr/3tB/08B/4VQ/2Uh/9K//9K/AAAA/5xw/3tA/5Fg/2wr/5Zo/4NN/9K//9K/u/+9NwAAABF0Uk5T/f////H/HCsAVVWAgLjVOVVGDSqkAAACDElEQVR4nO3cQQrCAAxFwUaKKCK9/217hryNCDMnCG/7IXPMwdI8RFsTLRAtEC0QLRAtEC0QLRAtEC0QLRAtEC0QLRAtEC0QLRAtEC0QLRAtEC0QLRAtEC0QLRAtEC0QLRAtEC0QLRAtEC0QLRAtEC0QLRAtEC0QLRAtEC0QLRAtEC0QLRAtEC0QLRAtEC0QLRAtEC0QLRAtEC0QLRAtEC0QLZhTtLV5irY2r19f8IdEC0QLRAtEC0QLRAtEC0QLRAtEC0QLRAtEC0QLRAtEC0QLRAvmbSNYM+EFogWiBaIFogWiBaIFogWiBaIFogWiBaIFogWiBaIFogWiBaIFogWiBaIFogWiBaIFogWiBaIFogWiBaIFogWiBaIFogWiBaIFogWiBaIFogWiBaIFogWiBaIFogWiBaIFogWiBaIFogWiBaIFogWiBaIFogWiBaIFogWiBfMRbc2nvkC0QLRAtEC0QLRAtEC0QLRAtEC0QLRAtEC0QLRAtEC0QLRAtEC0YL6GlTUTXiBaIFogWiBaIFogWiBaIFogWiBaIFogWiBaIFogWiBaIFogWiBaIFogWiBaIFogWiBaIFogWiBaIFogWiBaIFogWiBaIFogWiBaIFogWiBaIFogWiBaIFogWiBaIFogWiBaIFogWiBaIFogWiBaIFogWiBaIFogWiBaMKdoa3OJtnYDtq8EmnzQ7p8AAAAASUVORK5CYII="/></defs><style>.a{fill:#0a0a0a}</style><use href="#img1" x="8" y="423"/><path class="a" d="m426 624h-38.4v-158.4h52.1l56.4 107.3h0.5v-107.3h38.4v158.4h-49l-59.5-110.9h-0.5zm187.4 3.4q-18 0-30.2-5.1-12-5.2-19.4-14.1-7.5-9.1-10.8-20.7-3.2-11.5-3.2-24.2 0-13.7 3.4-26.2 3.6-12.4 10.8-22 7.4-9.9 19-15.4 11.7-5.8 28-5.8 16.4 0 27.9 5.8 11.7 5.5 18.7 15.6 7 10.1 8.9 23.3 2.1 13.2-0.5 28.5l-91.9 1.5v-21.1l62.1-1.2-5 12.2q1.4-11-0.5-18.5-1.7-7.7-6.5-11.5-4.8-4.1-13.2-4.1-8.8 0-14.1 4.6-5.3 4.5-7.5 12.9-2.1 8.2-2.1 19.5 0 19.4 6.5 28.3 6.4 8.9 19.9 8.9 5.7 0 9.6-1.5 3.8-1.4 6.2-4 2.4-2.9 3.4-6.8 0.9-4 0.7-9.1l35.5 1.9q0.7 8-1.7 16.4-2.1 8.4-8.4 15.6-6.2 7.2-17.5 11.7-11 4.6-28.1 4.6zm124.1 0q-12.7 0-23.7-2.4-10.8-2.7-19-8.2-7.9-5.5-12.2-14.6-4.1-9.4-3.4-22.6l33.8-2.9q0.5 8 3.6 13.2 3.2 5.1 8.7 7.5 5.5 2.4 13.4 2.4 7.5 0 12.7-2.4 5.6-2.7 5.6-8.7 0-3.1-2-5-1.9-2.2-7.2-3.8-5-2-14.8-4.4-12.3-3.1-22.1-6.2-9.9-3.1-16.8-7.4-7-4.4-10.6-10.6-3.6-6.5-3.6-15.8 0-13.2 7-22.4 7.2-9.3 19.7-14.1 12.4-5.1 28.8-5.1 14.6 0 27.3 4.6 12.7 4.6 19.9 14.9 7.5 10.3 5.6 27.3l-33.2 3.2q0.8-7-1.9-11.8-2.6-5-7.7-7.4-5-2.7-12.2-2.7-8.2 0-12.7 3.1-4.3 2.9-4.3 7.5 0 3.6 2.6 6.2 2.9 2.4 8.6 4.3 6 1.7 15.4 3.9 8.2 1.7 17 4.3 8.9 2.6 16.6 7.2 7.7 4.3 12.5 11.5 4.8 7.2 4.8 18.3 0 11.7-6.5 20.6-6.5 8.9-19 13.7-12.4 4.8-30.7 4.8zm119.3-0.5q-22.3 0-33.4-11.3-10.8-11.5-10.8-35.5v-52.6h-13.9v-24.4h0.7q14.9-2 21.2-9.9 6.2-8.1 7.6-24.5v-0.4h22.8v29h29.1v31.2h-29.1v48q0 9.1 4.4 13 4.5 3.8 11 3.8 3.4 0 7-1 3.6-0.9 6.7-2.6v33.8q-7.5 2.2-13.2 2.9-5.8 0.5-10.1 0.5zm76.3-2.9h-38.6v-68.9-57.8h33.6v50.4h1.9q1.4-20.2 5.5-31.7 4.3-11.7 10.6-16.5 6.5-5.1 14.4-5.1 4.3 0 8.9 1.2 4.8 1.2 9.3 3.9l-1.9 43.2q-5.3-3.2-10.3-4.6-5.1-1.7-9.6-1.7-7.7 0-13 4.3-5.3 4.4-8.1 12.8-2.7 8.4-2.7 20.4zm96.3 0h-38.9v-126.8h38.9zm-19.7-135.8q-11.1 0-17.1-4.6-5.7-4.8-5.7-13.6 0-9.2 5.7-13.7 6-4.8 17.1-4.8 11.3 0 17 4.8 6 4.8 6 13.7 0 8.6-6 13.4-5.7 4.8-17 4.8z"/></svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

6
apps/docs/renovate.json Normal file
View File

@@ -0,0 +1,6 @@
{
"extends": ["github>nuxt/renovate-config-nuxt"],
"lockFileMaintenance": {
"enabled": true
}
}

9
apps/docs/sst-env.d.ts vendored Normal file
View File

@@ -0,0 +1,9 @@
/* This file is auto-generated by SST. Do not edit. */
/* tslint:disable */
/* eslint-disable */
/* deno-fmt-ignore-file */
/// <reference path="../../sst-env.d.ts" />
import "sst"
export {}

218
apps/docs/tokens.config.ts Normal file
View File

@@ -0,0 +1,218 @@
import { defineTheme } from 'pinceau'
export default defineTheme({
color: {
black: '#0B0A0A',
// Primary is modified lightblue
primary: {
50: '#fff6ec',
100: '#ffebd3',
200: '#ffd4a5',
300: '#ffb56d',
400: '#ff8a32',
500: '#ff680a',
600: '#ff4f01',
700: '#cc3602',
800: '#a12b0b',
900: '#82260c'
},
gray: {
50: '#FBFBFB',
100: '#F6F5F4',
200: '#ECEBE8',
300: '#DBD9D3',
400: '#ADA9A4',
500: '#97948F',
600: '#67635D',
700: '#36332E',
800: '#201E1B',
900: '#121110'
},
red: {
50: '#FFF9F8',
100: '#FFF3F0',
200: '#FFDED7',
300: '#FFA692',
400: '#FF7353',
500: '#FF3B10',
600: '#BB2402',
700: '#701704',
800: '#340A01',
900: '#1C0301'
},
blue: {
50: '#F2FAFF',
100: '#DFF3FF',
200: '#C6EAFF',
300: '#A1DDFF',
400: '#64C7FF',
500: '#1AADFF',
600: '#0069A6',
700: '#014267',
800: '#002235',
900: '#00131D'
},
green: {
50: '#ECFFF7',
100: '#DEFFF1',
200: '#C3FFE6',
300: '#86FBCB',
400: '#3CEEA5',
500: '#0DD885',
600: '#00B467',
700: '#006037',
800: '#002817',
900: '#00190F'
},
yellow: {
50: '#FFFCEE',
100: '#FFF6D3',
200: '#FFF0B1',
300: '#FFE372',
400: '#FFDC4E',
500: '#FBCA05',
600: '#CBA408',
700: '#614E02',
800: '#292100',
900: '#1B1500'
},
shadow: {
initial: '{color.gray.400}',
dark: '{color.gray.800}'
}
},
shadow: {
xs: '0px 1px 2px 0px {color.shadow}',
sm: '0px 1px 3px 0px {color.shadow}, 0px 1px 2px -1px {color.shadow}',
md: '0px 4px 6px -1px {color.shadow}, 0px 2px 4px -2px {color.shadow}',
lg: '0px 10px 15px -3px {color.shadow}, 0px 4px 6px -4px {color.shadow}',
xl: '0px 20px 25px -5px {color.shadow}, 0px 8px 10px -6px {color.shadow}',
'2xl': '0px 25px 50px -12px {color.shadow}',
none: '0px 0px 0px 0px transparent'
},
docus: {
$schema: {
title: 'All the configurable tokens from Docus.',
tags: [
'@studioIcon material-symbols:docs'
]
},
body: {
backgroundColor: {
initial: '{color.white}',
dark: '{color.black}'
},
color: {
initial: '{color.gray.800}',
dark: '{color.gray.200}'
},
fontFamily: '{font.sans}'
},
header: {
height: '64px',
logo: {
height: {
initial: '{space.6}',
sm: '{space.7}'
}
},
title: {
fontSize: '{fontSize.2xl}',
fontWeight: '{fontWeight.bold}',
color: {
static: {
initial: '{color.gray.900}',
dark: '{color.gray.100}',
},
hover: '{color.primary.500}',
}
}
},
footer: { height: { initial: '145px', sm: '100px' }, padding: '{space.4} 0' },
readableLine: '78ch',
loadingBar: {
height: '3px',
gradientColorStop1: '#00dc82',
gradientColorStop2: '#34cdfe',
gradientColorStop3: '#0047e1'
},
search: {
backdropFilter: 'blur(24px)',
input: {
borderRadius: '{radii.2xs}',
borderWidth: '1px',
borderStyle: 'solid',
borderColor: {
initial: '{color.gray.200}',
dark: 'transparent'
},
fontSize: '{fontSize.sm}',
gap: '{space.2}',
padding: '{space.2} {space.4}',
backgroundColor: {
initial: '{color.gray.200}',
dark: '{color.gray.800}'
},
},
results: {
window: {
marginX: {
initial: '0',
sm: '{space.4}'
},
borderRadius: {
initial: 'none',
sm: '{radii.xs}'
},
marginTop: {
initial: '0',
sm: '20vh'
},
maxWidth: '640px',
maxHeight: {
initial: '100%',
sm: '320px'
},
},
selected: {
backgroundColor: {
initial: '{color.gray.300}',
dark: '{color.gray.700}'
},
},
highlight: {
color: 'white',
backgroundColor: '{color.primary.500}'
}
}
}
},
typography: {
color: {
primary: {
50: '{color.primary.50}',
100: '{color.primary.100}',
200: '{color.primary.200}',
300: '{color.primary.300}',
400: '{color.primary.400}',
500: '{color.primary.500}',
600: '{color.primary.600}',
700: '{color.primary.700}',
800: '{color.primary.800}',
900: '{color.primary.900}'
},
secondary: {
50: '{color.gray.50}',
100: '{color.gray.100}',
200: '{color.gray.200}',
300: '{color.gray.300}',
400: '{color.gray.400}',
500: '{color.gray.500}',
600: '{color.gray.600}',
700: '{color.gray.700}',
800: '{color.gray.800}',
900: '{color.gray.900}'
}
}
}
})

4
apps/docs/tsconfig.json Normal file
View File

@@ -0,0 +1,4 @@
{
// "extends": "./.nuxt/tsconfig.json",
"ignoreConfigErrors": true
}

View File

@@ -1,46 +0,0 @@
{
"name": "qwik-project-name",
"scripts": {
"build": "qwik build",
"build.client": "vite build",
"build.preview": "vite build --ssr src/entry.preview.tsx",
"build.types": "tsc --incremental --noEmit",
"dev": "vite --mode ssr",
"dev.debug": "node --inspect-brk ./node_modules/vite/bin/vite.js --mode ssr --force",
"fmt": "prettier --write .",
"fmt.check": "prettier --check .",
"lint": "eslint \"src/**/*.ts*\"",
"preview": "qwik build preview && vite preview --open",
"start": "vite --open --mode ssr",
"deploy": "echo 'Run \"npm run qwik add\" to install a server adapter'",
"qwik": "qwik"
},
"devDependencies": {
"@builder.io/qwik": "^1.5.1",
"@builder.io/qwik-city": "^1.5.1",
"@types/eslint": "^8.56.5",
"@types/node": "^20.11.24",
"@typescript-eslint/eslint-plugin": "^7.1.0",
"@typescript-eslint/parser": "^7.1.0",
"eslint": "^8.57.0",
"eslint-plugin-qwik": "^1.5.1",
"prettier": "^3.2.5",
"typescript": "5.3.3",
"undici": "*",
"vite": "^5.1.4",
"vite-tsconfig-paths": "^4.2.1"
},
"trustedDependencies": [
"sharp"
],
"trustedDependencies-annotation": "Needed for bun to allow running install scripts",
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0",
"npm": ">=10.0.0",
"pnpm": ">=8.0.0",
"yarn": ">=3.0.0"
},
"engines-annotation": "Mostly required by sharp which needs a Node-API v9 compatible runtime",
"private": true,
"type": "module"
}

View File

@@ -35,8 +35,8 @@ module.exports = {
"prefer-spread": "off",
"no-case-declarations": "off",
"no-console": "off",
"@typescript-eslint/no-unused-vars": ["warn"],
"@typescript-eslint/no-unused-vars": ["error"],
"@typescript-eslint/consistent-type-imports": "warn",
"@typescript-eslint/no-unnecessary-condition": "warn",
},
};
};

8
apps/www/.gitignore vendored
View File

@@ -40,5 +40,9 @@ lerna-debug.log*
.yarn/*
!.yarn/releases
# Vercel
.vercel
# Cloudflare
functions/**/*.js
#Typescript
*.tsbuildinfo
tmp

View File

@@ -1,3 +0,0 @@
export default {
plugins: ['prettier-plugin-tailwindcss'],
}

View File

@@ -1,24 +0,0 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Launch Chrome",
"request": "launch",
"type": "chrome",
"url": "http://localhost:5173",
"webRoot": "${workspaceFolder}"
},
{
"type": "node",
"name": "dev.debug",
"request": "launch",
"skipFiles": ["<node_internals>/**"],
"cwd": "${workspaceFolder}",
"program": "${workspaceFolder}/node_modules/vite/bin/vite.js",
"args": ["--mode", "ssr", "--force"]
}
]
}

View File

@@ -1,36 +0,0 @@
{
"onRequest": {
"scope": "javascriptreact,typescriptreact",
"prefix": "qonRequest",
"description": "onRequest function for a route index",
"body": [
"export const onRequest: RequestHandler = (request) => {",
" $0",
"};",
],
},
"loader$": {
"scope": "javascriptreact,typescriptreact",
"prefix": "qloader$",
"description": "loader$()",
"body": ["export const $1 = routeLoader$(() => {", " $0", "});"],
},
"action$": {
"scope": "javascriptreact,typescriptreact",
"prefix": "qaction$",
"description": "action$()",
"body": ["export const $1 = routeAction$((data) => {", " $0", "});"],
},
"Full Page": {
"scope": "javascriptreact,typescriptreact",
"prefix": "qpage",
"description": "Simple page component",
"body": [
"import { component$ } from '@builder.io/qwik';",
"",
"export default component$(() => {",
" $0",
"});",
],
},
}

View File

@@ -1,78 +0,0 @@
{
"Qwik component (simple)": {
"scope": "javascriptreact,typescriptreact",
"prefix": "qcomponent$",
"description": "Simple Qwik component",
"body": [
"export const ${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/}} = component$(() => {",
" return <${2:div}>$4</$2>",
"});",
],
},
"Qwik component (props)": {
"scope": "typescriptreact",
"prefix": "qcomponent$ + props",
"description": "Qwik component w/ props",
"body": [
"export interface ${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/}}Props {",
" $2",
"}",
"",
"export const $1 = component$<$1Props>((props) => {",
" const ${2:count} = useSignal(0);",
" return (",
" <${3:div} on${4:Click}$={(ev) => {$5}}>",
" $6",
" </${3}>",
" );",
"});",
],
},
"Qwik signal": {
"scope": "javascriptreact,typescriptreact",
"prefix": "quseSignal",
"description": "useSignal() declaration",
"body": ["const ${1:foo} = useSignal($2);", "$0"],
},
"Qwik store": {
"scope": "javascriptreact,typescriptreact",
"prefix": "quseStore",
"description": "useStore() declaration",
"body": ["const ${1:state} = useStore({", " $2", "});", "$0"],
},
"$ hook": {
"scope": "javascriptreact,typescriptreact",
"prefix": "q$",
"description": "$() function hook",
"body": ["$(() => {", " $0", "});", ""],
},
"useVisibleTask": {
"scope": "javascriptreact,typescriptreact",
"prefix": "quseVisibleTask",
"description": "useVisibleTask$() function hook",
"body": ["useVisibleTask$(({ track }) => {", " $0", "});", ""],
},
"useTask": {
"scope": "javascriptreact,typescriptreact",
"prefix": "quseTask$",
"description": "useTask$() function hook",
"body": [
"useTask$(({ track }) => {",
" track(() => $1);",
" $0",
"});",
"",
],
},
"useResource": {
"scope": "javascriptreact,typescriptreact",
"prefix": "quseResource$",
"description": "useResource$() declaration",
"body": [
"const $1 = useResource$(({ track, cleanup }) => {",
" $0",
"});",
"",
],
},
}

View File

@@ -1,8 +1,8 @@
# Qwik City App ⚡️
- [Qwik Docs](https://qwik.builder.io/)
- [Discord](https://qwik.builder.io/chat)
- [Qwik GitHub](https://github.com/BuilderIO/qwik)
- [Qwik Docs](https://qwik.dev/)
- [Discord](https://qwik.dev/chat)
- [Qwik GitHub](https://github.com/QwikDev/qwik)
- [@QwikDev](https://twitter.com/QwikDev)
- [Vite](https://vitejs.dev/)
@@ -10,7 +10,7 @@
## Project Structure
This project is using Qwik with [QwikCity](https://qwik.builder.io/qwikcity/overview/). QwikCity is just an extra set of tools on top of Qwik to make it easier to build a full site, including directory-based routing, layouts, and more.
This project is using Qwik with [QwikCity](https://qwik.dev/qwikcity/overview/). QwikCity is just an extra set of tools on top of Qwik to make it easier to build a full site, including directory-based routing, layouts, and more.
Inside your project, you'll see the following directory structure:
@@ -24,7 +24,7 @@ Inside your project, you'll see the following directory structure:
└── ...
```
- `src/routes`: Provides the directory-based routing, which can include a hierarchy of `layout.tsx` layout files, and an `index.tsx` file as the page. Additionally, `index.ts` files are endpoints. Please see the [routing docs](https://qwik.builder.io/qwikcity/routing/overview/) for more info.
- `src/routes`: Provides the directory-based routing, which can include a hierarchy of `layout.tsx` layout files, and an `index.tsx` file as the page. Additionally, `index.ts` files are endpoints. Please see the [routing docs](https://qwik.dev/qwikcity/routing/overview/) for more info.
- `src/components`: Recommended directory for components.
@@ -32,10 +32,10 @@ Inside your project, you'll see the following directory structure:
## Add Integrations and deployment
Use the `pnpm qwik add` command to add additional integrations. Some examples of integrations includes: Cloudflare, Netlify or Express Server, and the [Static Site Generator (SSG)](https://qwik.builder.io/qwikcity/guides/static-site-generation/).
Use the `bun qwik add` command to add additional integrations. Some examples of integrations includes: Cloudflare, Netlify or Express Server, and the [Static Site Generator (SSG)](https://qwik.dev/qwikcity/guides/static-site-generation/).
```shell
pnpm qwik add # or `pnpm qwik add`
bun qwik add # or `bun qwik add`
```
## Development
@@ -43,7 +43,7 @@ pnpm qwik add # or `pnpm qwik add`
Development mode uses [Vite's development server](https://vitejs.dev/). The `dev` command will server-side render (SSR) the output during development.
```shell
npm start # or `pnpm start`
npm start # or `bun start`
```
> Note: during dev mode, Vite may request a significant number of `.js` files. This does not represent a Qwik production build.
@@ -53,7 +53,7 @@ npm start # or `pnpm start`
The preview command will create a production build of the client modules, a production build of `src/entry.preview.tsx`, and run a local server. The preview server is only for convenience to preview a production build locally and should not be used as a production server.
```shell
pnpm preview # or `pnpm preview`
bun preview # or `bun preview`
```
## Production
@@ -61,49 +61,52 @@ pnpm preview # or `pnpm preview`
The production build will generate client and server modules by running both client and server build commands. The build command will use Typescript to run a type check on the source code.
```shell
pnpm build # or `pnpm build`
bun build # or `bun build`
```
## Vercel Edge
## Cloudflare Pages
This starter site is configured to deploy to [Vercel Edge Functions](https://vercel.com/docs/concepts/functions/edge-functions), which means it will be rendered at an edge location near to your users.
## Installation
The adaptor will add a new `vite.config.ts` within the `adapters/` directory, and a new entry file will be created, such as:
Cloudflare's [wrangler](https://github.com/cloudflare/wrangler) CLI can be used to preview a production build locally. To start a local server, run:
```
└── adapters/
└── vercel-edge/
└── vite.config.ts
└── src/
└── entry.vercel-edge.tsx
bun serve
```
Additionally, within the `package.json`, the `build.server` script will be updated with the Vercel Edge build.
Then visit [http://localhost:8787/](http://localhost:8787/)
## Production build
### Deployments
To build the application for production, use the `build` command, this command will automatically run `pnpm build.server` and `pnpm build.client`:
[Cloudflare Pages](https://pages.cloudflare.com/) are deployable through their [Git provider integrations](https://developers.cloudflare.com/pages/platform/git-integration/).
```shell
pnpm build
If you don't already have an account, then [create a Cloudflare account here](https://dash.cloudflare.com/sign-up/pages). Next go to your dashboard and follow the [Cloudflare Pages deployment guide](https://developers.cloudflare.com/pages/framework-guides/deploy-anything/).
Within the projects "Settings" for "Build and deployments", the "Build command" should be `bun build`, and the "Build output directory" should be set to `dist`.
### Function Invocation Routes
Cloudflare Page's [function-invocation-routes config](https://developers.cloudflare.com/pages/platform/functions/routing/#functions-invocation-routes) can be used to include, or exclude, certain paths to be used by the worker functions. Having a `_routes.json` file gives developers more granular control over when your Function is invoked.
This is useful to determine if a page response should be Server-Side Rendered (SSR) or if the response should use a static-site generated (SSG) `index.html` file.
By default, the Cloudflare pages adaptor _does not_ include a `public/_routes.json` config, but rather it is auto-generated from the build by the Cloudflare adaptor. An example of an auto-generate `dist/_routes.json` would be:
```
{
"include": [
"/*"
],
"exclude": [
"/_headers",
"/_redirects",
"/build/*",
"/favicon.ico",
"/manifest.json",
"/service-worker.js",
"/about"
],
"version": 1
}
```
[Read the full guide here](https://github.com/BuilderIO/qwik/blob/main/starters/adapters/vercel-edge/README.md)
In the above example, it's saying _all_ pages should be SSR'd. However, the root static files such as `/favicon.ico` and any static assets in `/build/*` should be excluded from the Functions, and instead treated as a static file.
## Dev deploy
To deploy the application for development:
```shell
pnpm deploy
```
Notice that you might need a [Vercel account](https://docs.Vercel.com/get-started/) in order to complete this step!
## Production deploy
The project is ready to be deployed to Vercel. However, you will need to create a git repository and push the code to it.
You can [deploy your site to Vercel](https://vercel.com/docs/concepts/deployments/overview) either via a Git provider integration or through the Vercel CLI.
In most cases the generated `dist/_routes.json` file is ideal. However, if you need more granular control over each path, you can instead provide you're own `public/_routes.json` file. When the project provides its own `public/_routes.json` file, then the Cloudflare adaptor will not auto-generate the routes config and instead use the committed one within the `public` directory.

View File

@@ -0,0 +1,15 @@
import { cloudflarePagesAdapter } from "@builder.io/qwik-city/adapters/cloudflare-pages/vite";
import { extendConfig } from "@builder.io/qwik-city/vite";
import baseConfig from "../../vite.config";
export default extendConfig(baseConfig, () => {
return {
build: {
ssr: true,
rollupOptions: {
input: ["src/entry.cloudflare-pages.tsx", "@qwik-city-plan"],
},
},
plugins: [cloudflarePagesAdapter()],
};
});

View File

@@ -0,0 +1,23 @@
import { denoServerAdapter } from "@builder.io/qwik-city/adapters/deno-server/vite";
import { extendConfig } from "@builder.io/qwik-city/vite";
import baseConfig from "../../vite.config";
export default extendConfig(baseConfig, () => {
return {
build: {
ssr: true,
rollupOptions: {
input: ["src/entry.deno.ts", "@qwik-city-plan"],
},
minify: false,
},
plugins: [
denoServerAdapter({
ssg: {
include: ["/*"],
origin: "https://yoursite.dev",
},
}),
],
};
});

View File

@@ -1,16 +0,0 @@
import { vercelEdgeAdapter } from "@builder.io/qwik-city/adapters/vercel-edge/vite";
import { extendConfig } from "@builder.io/qwik-city/vite";
import baseConfig from "../../vite.config";
export default extendConfig(baseConfig, () => {
return {
build: {
ssr: true,
rollupOptions: {
input: ["src/entry.vercel-edge.tsx", "@qwik-city-plan"],
},
outDir: ".vercel/output/functions/_qwik-city.func",
},
plugins: [vercelEdgeAdapter()],
};
});

View File

@@ -1,6 +1,6 @@
{
"name": "my-qwik-empty-starter",
"description": "App with Routing built-in ready to create your app",
"name": "@nestri/web",
"description": "Your games. Your rules.",
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
@@ -15,44 +15,64 @@
"build": "qwik build",
"build.client": "vite build",
"build.preview": "vite build --ssr src/entry.preview.tsx",
"build.server": "vite build -c adapters/vercel-edge/vite.config.ts",
"build.server": "vite build -c adapters/cloudflare-pages/vite.config.ts",
"deno:build.server": "vite build -c adapters/deno/vite.config.ts",
"build.types": "tsc --incremental --noEmit",
"deploy": "vercel deploy",
"deploy": "wrangler pages deploy ./dist",
"dev": "vite --mode ssr",
"dev.debug": "node --inspect-brk ./node_modules/vite/bin/vite.js --mode ssr --force",
"fmt": "prettier --write .",
"fmt.check": "prettier --check .",
"lint": "eslint \"src/**/*.ts*\"",
"preview": "qwik build preview && vite preview --open",
"serve": "wrangler pages dev ./dist --compatibility-flags=nodejs_als",
"deno:serve": "deno run --allow-net --allow-read --allow-env server/entry.deno.js",
"start": "vite --open --mode ssr",
"qwik": "qwik"
},
"devDependencies": {
"@builder.io/qwik": "^1.5.1",
"@builder.io/qwik-city": "^1.5.1",
"@builder.io/partytown": "^0.8.1",
"@builder.io/qwik": "^1.8.0",
"@builder.io/qwik-city": "^1.8.0",
"@builder.io/qwik-react": "0.5.0",
"@types/eslint": "^8.56.5",
"@types/node": "^20.11.24",
"@fontsource-variable/bricolage-grotesque": "^5.0.1",
"@fontsource/geist-mono": "^5.1.0",
"@fontsource/geist-sans": "^5.1.0",
"@fontsource-variable/mona-sans": "^5.0.1",
"@modular-forms/qwik": "^0.29.0",
"@nestri/input": "*",
"@nestri/libmoq": "*",
"@nestri/sdk": "0.1.0-alpha.14",
"@nestri/ui": "*",
"@openauthjs/openauth": "*",
"@polar-sh/checkout": "^0.1.8",
"@polar-sh/sdk": "^0.21.1",
"@qwik-ui/headless": "^0.6.4",
"@types/eslint": "8.56.10",
"@types/howler": "^2.2.12",
"@types/node": "^22.5.1",
"@types/react": "^18.2.28",
"@types/react-dom": "^18.2.13",
"@typescript-eslint/eslint-plugin": "^7.1.0",
"@typescript-eslint/parser": "^7.1.0",
"autoprefixer": "^10.4.14",
"eslint": "^8.57.0",
"eslint-plugin-qwik": "^1.5.1",
"postcss": "^8.4.31",
"prettier": "^3.2.5",
"prettier-plugin-tailwindcss": "^0.5.4",
"@typescript-eslint/eslint-plugin": "7.16.1",
"@typescript-eslint/parser": "7.16.1",
"ajv": "^8.17.1",
"eslint": "8.57.0",
"eslint-plugin-qwik": "^1.8.0",
"howler": "^2.2.4",
"posthog-js": "^1.207.0",
"prettier": "3.3.3",
"react": "18.2.0",
"react-dom": "18.2.0",
"tailwindcss": "3.3.3",
"typescript": "5.3.3",
"semver": "^7.7.1",
"typescript": "5.4.5",
"undici": "*",
"vercel": "^29.1.1",
"vite": "^5.1.4",
"vite-tsconfig-paths": "^4.2.1"
"valibot": "^0.42.1",
"vite": "6.0.15",
"vite-tsconfig-paths": "^4.2.1",
"wrangler": "^3.0.0"
},
"dependencies": {
"@fontsource/geist-sans": "^5.0.2"
"@types/pako": "^2.0.3",
"pako": "^2.1.0"
}
}

9347
apps/www/pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
module.exports = {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
}
plugins: {
tailwindcss: {},
autoprefixer: {},
},
};

9
apps/www/public/_headers Normal file
View File

@@ -0,0 +1,9 @@
# https://developers.cloudflare.com/pages/platform/headers/
/*service-worker.js
Cache-Control: no-store
Content-Type: application/javascript
X-Content-Type-Options: nosniff
/build/*
Cache-Control: public, max-age=31536000, s-maxage=31536000, immutable

View File

@@ -0,0 +1 @@
# https://developers.cloudflare.com/pages/platform/redirects/

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 MiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 MiB

BIN
apps/www/public/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 365 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="48.672001"
height="36.804001"
viewBox="0 0 12.8778 9.7377253"
version="1.1"
id="svg1"
xmlns="http://www.w3.org/2000/svg">
<g id="layer1">
<path
d="m 2.093439,1.7855532 h 8.690922 V 2.2639978 H 2.093439 Z m 0,2.8440874 h 8.690922 V 5.1080848 H 2.093439 Z m 0,2.8440866 h 8.690922 V 7.952172 H 2.093439 Z"
style="font-size:12px;fill:#ff4f01;fill-opacity:1;fill-rule:evenodd;stroke:#ff4f01;stroke-width:1.66201;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 590 B

Some files were not shown because too many files have changed in this diff Show More