David Barroso
0c820d4173
feat(cli): import nhost/cli into ./cli/ ( #3506 )
...
Co-authored-by: nhost-build <98952681+nhost-build@users.noreply.github.com >
Co-authored-by: szilarddoro <szilarddoro@users.noreply.github.com >
Co-authored-by: nunopato <nunopato@users.noreply.github.com >
Co-authored-by: Nuno Pato <nunopato@gmail.com >
Co-authored-by: Szilárd Dóró <doroszilard@gmail.com >
Co-authored-by: Alex Duval <alexduval71@gmail.com >
Co-authored-by: dbarrosop <dbarrosop@users.noreply.github.com >
Co-authored-by: constance-seedstash <123984067+constance-seedstash@users.noreply.github.com >
Co-authored-by: onehassan <onehassan@users.noreply.github.com >
Co-authored-by: Ibrahim Ahmed <abeahmed2@gmail.com >
Co-authored-by: Nestor Manrique <nes.manrique@gmail.com >
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Siddhant <94226898+S1D007@users.noreply.github.com >
Co-authored-by: dbm03 <dbm03@users.noreply.github.com >
Co-authored-by: Rene Cruces <52537668+renecruces@users.noreply.github.com >
Co-authored-by: David BM <correodelnino@gmail.com >
Co-authored-by: Nikhil Iyer <iyer.h.nikhil@gmail.com >
2025-09-26 08:37:28 +02:00
David BM
72401ae1a7
chore(ci): add e2e remote schema name repository variable to CI workflow ( #3502 )
2025-09-25 19:36:16 +02:00
David Barroso
73b60a14e5
fix(ci): check for tag using the correct format ( #3495 )
...
### **PR Type**
Bug fix
___
### **Description**
- Declare `TAG_NAME` from make release-tag-name
- Use `TAG_NAME` in git tag existence check
- Update echo messages to reference correct tag
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Compute TAG_NAME"] --> B["Compute VERSION"]
B --> C["Check if tag exists"]
C -->|exists| D["Skip release preparation"]
C -->|not exists| E["Proceed with release"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>ci_update_changelog.yaml</strong><dd><code>Use TAG_NAME
for tag existence check</code>
</dd></summary>
<hr>
.github/workflows/ci_update_changelog.yaml
<ul><li>Declare <code>TAG_NAME</code> variable using make
release-tag-name<br> <li> Replace <code>${{ matrix.project }}</code>
with <code>TAG_NAME</code> in grep<br> <li> Update echo commands to
reference <code>TAG_NAME</code> correctly</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3495/files#diff-399add8ac39ae1cd7ae2f4f8ceb89290f6f43e25b7b2c499da61dd68a5cf2f16 ">+3/-2</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-09-24 17:09:16 +02:00
David Barroso
f4ce851abe
fix(ci): fixed ci_create_release.yaml ( #3493 )
...
### **PR Type**
Bug fix
___
### **Description**
- Add `cd $PROJECT` before make in CI workflow
- Ensure `make release-tag-name` runs in correct directory
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Extract VERSION"] --> B["Change to project directory"]
B --> C["Run make release-tag-name"]
C --> D["Set project_name output"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>ci_create_release.yaml</strong><dd><code>Change to
project directory before make</code>
</dd></summary>
<hr>
.github/workflows/ci_create_release.yaml
<ul><li>Insert <code>cd $PROJECT</code> before <code>make
release-tag-name</code><br> <li> Ensure <code>make</code> runs in the
repository subdirectory</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3493/files#diff-9f32bd5671fcb04c5f1b35ea33677c4704302536e0c4ff9e06b514dc9b3d4f0c ">+2/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-09-24 16:55:35 +02:00
github-actions[bot]
cc88dbc4bd
release(packages/nhost-js): nhost/nhost-js ( #3491 )
...
Automated release preparation for packages/nhost-js version
nhost/nhost-js
Changes:
- Updated CHANGELOG.md
Co-authored-by: dbarrosop <dbarrosop@users.noreply.github.com >
2025-09-24 15:47:51 +02:00
David Barroso
a6a5ecdad9
chore(docs): update README ( #3492 )
...
### **PR Type**
Documentation
___
### **Description**
- Update root README code examples
- Switch to `createClient` API and adjust auth methods
- Change GraphQL request syntax to object form
- Simplify install commands in package README
___
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>README.md</strong><dd><code>Revise root README examples
and links</code>
</dd></summary>
<hr>
README.md
<ul><li>Changed code block language to TypeScript<br> <li> Replaced
<code>NhostClient</code> with <code>createClient</code> import<br> <li>
Updated auth and GraphQL usage methods<br> <li> Updated JS/TS client
link and removed integrations section</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3492/files#diff-b335630551682c19a781afebcf4d07bf978fb1f8ac04c6bf87428ed5106870f5 ">+21/-25</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>README.md</strong><dd><code>Simplify installation
commands</code>
</dd></summary>
<hr>
packages/nhost-js/README.md
- Removed `@beta` tag from npm/yarn/pnpm install commands
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3492/files#diff-32a1491b95260b677b05569fe11db6fe14aa7b380c7ef6422041949311f103a2 ">+3/-3</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-09-24 15:42:41 +02:00
David Barroso
069896c2d9
feat(ci): finalize release workflow for the dashboard ( #3487 )
...
### **PR Type**
Enhancement
___
### **Description**
- Refactor CI release job to dedicated dashboard workflow
- Add dashboard_release workflow orchestrating release steps
- deploy-vercel, build_artifacts, push-docker, bump-cli
- Introduce reusable Docker push workflow with manifest support
___
### Diagram Walkthrough
```mermaid
flowchart LR
CIREL["ci_release: dashboard job"] --> DASHREL["dashboard_release workflow"]
DASHREL --> DV["deploy-vercel"]
DASHREL --> BA["build_artifacts"]
BA --> PD["push-docker"]
PD --> BC["bump-cli"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Configuration
changes</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>ci_release.yaml</strong><dd><code>Use dedicated
dashboard_release workflow</code>
</dd></summary>
<hr>
.github/workflows/ci_release.yaml
<ul><li>swapped wf_deploy_vercel usage for dashboard_release<br> <li>
replaced ENVIRONMENT input with VERSION<br> <li> added GH_PAT secret to
dashboard job</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3487/files#diff-456777492a189272b53f8abd0ea4e8c333b25cf1673b8b109c0a1834d874bdb5 ">+3/-2</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>dashboard_release.yaml</strong><dd><code>Add
dashboard_release workflow file</code>
</dd></summary>
<hr>
.github/workflows/dashboard_release.yaml
<ul><li>define workflow_call inputs and required secrets<br> <li>
orchestrate deploy-vercel, build_artifacts, push-docker, bump-cli<br>
<li> create CLI bump pull request via GH PAT</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3487/files#diff-f33ddb04ba86d7edd932817968a516bcff40c33dab67da25fc786a98ac0ee91e ">+105/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>wf_docker_push_image.yaml</strong><dd><code>Add
reusable Docker push workflow</code>
</dd></summary>
<hr>
.github/workflows/wf_docker_push_image.yaml
<ul><li>define Docker push reusable workflow inputs and secrets<br> <li>
checkout code, download artifacts, compute version<br> <li> push
multi-arch images and manifest to Docker registry</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3487/files#diff-a0b87bcebe9e143aeb58a882e2bcf531709c6950d6845ababf624eb125eed691 ">+79/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-09-24 14:50:55 +02:00
David Barroso
754541a24b
chore(ci): release dashboard workflow ( #3486 )
...
### **PR Type**
Other
___
### **Description**
- Reset dashboard package version to dev
___
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Configuration
changes</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>package.json</strong><dd><code>Reset dashboard package
version</code>
</dd></summary>
<hr>
dashboard/package.json
- Bump version from 2.37.0 to 0.0.0-dev
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3486/files#diff-2d8d55c799cd71f1b35e831f075f8178ed1734c4820a2ad548b4dd24d6938d7c ">+1/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-09-24 14:50:55 +02:00
David Barroso
e7978b0346
feat(ci): work on changelog and release process ( #3485 )
...
### **PR Type**
Enhancement
___
### **Description**
- Add CI release workflows
- create, update, publish workflows
- Integrate git-cliff changelog automation
- Introduce PR template guidelines
- Remove outdated config files
___
### Diagram Walkthrough
```mermaid
flowchart LR
PushMain["Push to main"] --> UpdateChangelog["ci_update_changelog"]
UpdateChangelog --> ReleasePR["Release pull request"]
ReleasePR --> CreateRelease["ci_create_release"]
CreateRelease --> GitHubRelease["GitHub Release created"]
GitHubRelease --> Deploy["ci_release deployment"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Configuration
changes</strong></td><td><details><summary>6 files</summary><table>
<tr>
<td><strong>CODEOWNERS</strong><dd><code>Remove outdated CODEOWNERS
configurations</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3485/files#diff-3d36a1bf06148bc6ba1ce2ed3d19de32ea708d955fed212c0d27c536f0bd4da7 ">+0/-14</a>
</td>
</tr>
<tr>
<td><strong>action.yaml</strong><dd><code>Remove dependency install
composite action</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3485/files#diff-342d59190b4737ee45e2062eb625ada477bcea5b4a843b25900ad55d7982f200 ">+0/-59</a>
</td>
</tr>
<tr>
<td><strong>ci_create_release.yaml</strong><dd><code>Create release
workflow on PR merge</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3485/files#diff-9f32bd5671fcb04c5f1b35ea33677c4704302536e0c4ff9e06b514dc9b3d4f0c ">+90/-0</a>
</td>
</tr>
<tr>
<td><strong>ci_release.yaml</strong><dd><code>Add post-release
deployment workflow</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3485/files#diff-456777492a189272b53f8abd0ea4e8c333b25cf1673b8b109c0a1834d874bdb5 ">+64/-0</a>
</td>
</tr>
<tr>
<td><strong>ci_update_changelog.yaml</strong><dd><code>Add changelog
update workflow on push</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3485/files#diff-399add8ac39ae1cd7ae2f4f8ceb89290f6f43e25b7b2c499da61dd68a5cf2f16 ">+90/-0</a>
</td>
</tr>
<tr>
<td><strong>cliff.toml</strong><dd><code>Add git-cliff
configuration</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3485/files#diff-e1372c8b03c40942b5d828a90975054cb8aaed3b38189f434396f922ec41a584 ">+90/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>1
files</summary><table>
<tr>
<td><strong>PULL_REQUEST_TEMPLATE.md</strong><dd><code>Add pull request
template guidelines</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3485/files#diff-18813c86948efc57e661623d7ba48ff94325c9b5421ec9177f724922dd553a35 ">+39/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Build
config</strong></td><td><details><summary>2 files</summary><table>
<tr>
<td><strong>general.makefile</strong><dd><code>Include release makefile
integration</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3485/files#diff-c9e82023881afc6d45e6190871a40f2d137adb43e368fc461560c74a50c15a5d ">+2/-0</a>
</td>
</tr>
<tr>
<td><strong>release.makefile</strong><dd><code>Add git-cliff changelog
targets</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3485/files#diff-119f857b7a496c134136ef627cb83ba58b87363125b483fe25524ab66820dcd2 ">+25/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Additional
files</strong></td><td><details><summary>3 files</summary><table>
<tr>
<td><strong>dashboard_changelog.yaml</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3485/files#diff-f500aa853d257ead7ba7e28d92191a2d18ab32a43c6e121d1e64454513a9de14 ">+0/-39</a>
</td>
</tr>
<tr>
<td><strong>nhost-js_changelog.yaml</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3485/files#diff-f89bdd0c84297962882877ff469844b0541e95cb6437c9247722704af02ca426 ">+0/-32</a>
</td>
</tr>
<tr>
<td><strong>wf_check_changelog.yaml</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3485/files#diff-099ad6009f7d08d3b6534abe4abf8c8a75f6c3761d4117751fc35093affd7456 ">+0/-64</a>
</td>
</tr>
</table></details></td></tr></tr></tbody></table>
</details>
___
2025-09-24 14:50:55 +02:00
David Barroso
894cd29d6b
chore (docs): address feedback and change reactnative tutorial to use blank template ( #3481 )
2025-09-24 14:50:55 +02:00
David Barroso
d570084d24
chore (docs): udpate graphql documentation to include example with variables ( #3478 )
...
### **PR Type**
Tests, Documentation
___
### **Description**
- Add GraphQL request test with variables support
- Update qql test to include variables option
- Extend SDK docstrings with variables usage section
- Enhance documentation with variables example
___
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Tests</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>docstrings.test.ts</strong><dd><code>Enhance tests with
variables usage</code>
</dd></summary>
<hr>
packages/nhost-js/src/graphql/__tests__/docstrings.test.ts
<ul><li>Added new "request with variables" test case<br> <li> Modified
qql test to pass variables in request<br> <li> Removed obsolete
commented test data</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3478/files#diff-c7b7dab18f108770bcff06dc83cc9a34a5ee72c5021a035129a264a968f7d5ff ">+58/-39</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>index.ts</strong><dd><code>Document variables in
GraphQL client</code>
</dd></summary>
<hr>
packages/nhost-js/src/graphql/index.ts
<ul><li>Inserted "Using Variables" section in SDK docstrings<br> <li>
Added includeCode references for variables examples<br> <li> Adjusted
snippet ranges for variable usage</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3478/files#diff-6124d7be08592679e7ba8ae19ab28f3fca0d9a8fcd04c62f130eb8038eeb29e4 ">+11/-3</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>graphql.mdx</strong><dd><code>Add variables example to
user docs</code>
</dd></summary>
<hr>
docs/reference/javascript/nhost-js/graphql.mdx
<ul><li>Added "Using Variables" section with code example<br> <li>
Demonstrated passing variables to GraphQL requests<br> <li> Updated qql
example to show variable usage</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3478/files#diff-be11be6441756582b629e0f4f6acef5c1bb59d749c3fa3202043f7cf345696a2 ">+66/-3</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-09-24 14:50:55 +02:00
David Barroso
8c71dd9db9
feat (docs): add tutorials for supported frameworks ( #3469 )
...
### **PR Type**
Enhancement
___
### **Description**
- Add cross-framework Todos CRUD examples
- Introduce file upload/download tutorials
- Provide unified AuthProvider context implementations
- Include email templates and backend actions
___
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>19
files</summary><table>
<tr>
<td><strong>Todos.tsx</strong><dd><code>Add web demo Todos CRUD
page</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-53f3b3d582fef21d5ec90cb590b73afcf09407071dba60883ed1ed7360955fc5 ">+648/-0</a>
</td>
</tr>
<tr>
<td><strong>todos.tsx</strong><dd><code>Add React Native tutorial
Todos</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-3f6be5ef4f443091687addd404fe71f219498b9db7dea992d18d78b4f1b6ffa3 ">+561/-0</a>
</td>
</tr>
<tr>
<td><strong>commonStyles.ts</strong><dd><code>Add common React Native
tutorial styles</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-bf0de16179ecc80a8e88e223c890dc2c73c30b4a9b7cadd62e910ca015ce342b ">+667/-0</a>
</td>
</tr>
<tr>
<td><strong>Todos.tsx</strong><dd><code>Add React tutorial Todos
page</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-be700e4847b0a745821f156c381e583097f2083123065a45a20611c2ba1876a7 ">+504/-0</a>
</td>
</tr>
<tr>
<td><strong>files.tsx</strong><dd><code>Add React Native tutorial file
upload</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-d116805053a943f271a3297d06d14dba39c0f5775080e67e1e9e2778c176e9da ">+454/-0</a>
</td>
</tr>
<tr>
<td><strong>Files.tsx</strong><dd><code>Add React tutorial Files
page</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-cdbca4ed68690df84463df7765dff52c85a60502f175c19519c8b42474e9282c ">+404/-0</a>
</td>
</tr>
<tr>
<td><strong>signup.tsx</strong><dd><code>Enhance signup flow with email
verification</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-262b09b9dd7234cad96fe092d7131a23451c9e50b98c126c9e36599b3a127ac6 ">+185/-141</a></td>
</tr>
<tr>
<td><strong>FilesClient.tsx</strong><dd><code>Add Next.js Files client
component</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-ea74386f232b9ae7e7957ab4eb1f0d1d6076b338173e8b1e917369fb7f1b39bb ">+359/-0</a>
</td>
</tr>
<tr>
<td><strong>TodosClient.tsx</strong><dd><code>Add Next.js Todos client
component</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-96efb4db6bd61a7faee3c383e77b092eccee1a1876770c36691e7356268cfad4 ">+368/-0</a>
</td>
</tr>
<tr>
<td><strong>AuthProvider.tsx</strong><dd><code>Implement React
AuthProvider context</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-4cc7e41420d71d448eeec4f77043e0c5bff2c606986439454dade5ffcd433e33 ">+174/-0</a>
</td>
</tr>
<tr>
<td><strong>AuthProvider.tsx</strong><dd><code>Implement RN AuthProvider
context</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-93f9f27a35d0039a64cd6889a296d04d37542aa5a777925e61e8e60ee5a6d744 ">+148/-0</a>
</td>
</tr>
<tr>
<td><strong>actions.ts</strong><dd><code>Add Next.js server actions for
Todos</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-76d57097940d3043c8e0ab29761767861b78fe86ab8a90a2d8209f1818131d31 ">+223/-0</a>
</td>
</tr>
<tr>
<td><strong>signup.tsx</strong><dd><code>Add RN signup tutorial
screen</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-153c2f0bf6b3744bb84b95e356dd78c8771206a1b22218bc4c6f90641e4143ad ">+183/-0</a>
</td>
</tr>
<tr>
<td><strong>explore.tsx</strong><dd><code>Add RN tutorial Explore
screen</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-980313b6c7f75f2ecd45fc476895bea122364d000f5988e21564bf5db73d7f57 ">+125/-0</a>
</td>
</tr>
<tr>
<td><strong>route.ts</strong><dd><code>Add Next.js file download
route</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-5c39cd02d478ad625a7cdb6df3f7b6d20a76f40488636fdd87282c66174b2bd8 ">+57/-0</a>
</td>
</tr>
<tr>
<td><strong>SignUp.tsx</strong><dd><code>Enhance demo signup with
verification state</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-75657efa0e1c29f59692ced3cd90e9c734836977900dc64015dd5d217bb263da ">+38/-3</a>
</td>
</tr>
<tr>
<td><strong>SignUpForm.tsx</strong><dd><code>Add Next.js signup client
form</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-9034cd412c47033a01e604a8250984aa1d1ecefc9884b79ebd7f7f3af17e3167 ">+89/-0</a>
</td>
</tr>
<tr>
<td><strong>SignInForm.tsx</strong><dd><code>Add Next.js signin client
form</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-c276aadee4507d515832909164d447c3c1a4870277d0adbd1f7e836f7c66259e ">+75/-0</a>
</td>
</tr>
<tr>
<td><strong>server.tsx</strong><dd><code>Add server Nhost client for
Next.js</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-9d650defc223584e4aa06ddbf1d9a97c47a5a7ec4c9589a72ac7ea5369853400 ">+89/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Configuration
changes</strong></td><td><details><summary>1 files</summary><table>
<tr>
<td><strong>_layout.tsx</strong><dd><code>Configure RN tutorial tab
navigation</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-c3b0bac088aef9f1a2d5cd2f4b51dd19fb301034668a062860a1e6a3512c15c9 ">+39/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Additional
files</strong></td><td><details><summary>101 files</summary><table>
<tr>
<td><strong>examples_tutorials_checks.yaml</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-745712dc409289d30fe4caa74de567df9cc9fac97750ae5566f93a51e48bf539 ">+94/-0</a>
</td>
</tr>
<tr>
<td><strong>docs.json</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-873ce17c654718debe2fe308a2f2279bde8663686423c51f97fab2dd0722b8d9 ">+52/-7</a>
</td>
</tr>
<tr>
<td><strong>overview.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-8c9b35da559a5de5fe14ee078573e8d487453e26ed760c03ffd7f0ad476ca24d ">+5/-5</a>
</td>
</tr>
<tr>
<td><strong>nextjs.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-a5210d45e7d33a57d43078dbe2a2ccbf0667b157291fd92c3986092d7d33ab9c ">+0/-508</a>
</td>
</tr>
<tr>
<td><strong>1-introduction.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-35413705a524a3eb2c7d096daef02d660b479fbc288674aa260e3f159988652b ">+116/-0</a>
</td>
</tr>
<tr>
<td><strong>2-protected-routes.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-d901b3a6d8a96e3070f27afb934c34365aa79aeee1505238de2cb77a9ffd8546 ">+1364/-0</a></td>
</tr>
<tr>
<td><strong>3-user-authentication.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-7b96576ad1b1b6b8e50dd3889e24df391662df1b7b51a111f0239f655135939f ">+804/-0</a>
</td>
</tr>
<tr>
<td><strong>4-graphql-operations.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-16906637a292d22c018167d45f2da67a17fe73155ca161de91c3b329fee9d399 ">+958/-0</a>
</td>
</tr>
<tr>
<td><strong>5-file-uploads.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-d6153781dbf251499f2ffeeb707102349776d788859c2da0f63c8b0a8e35c821 ">+822/-0</a>
</td>
</tr>
<tr>
<td><strong>react.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-6f5adda9f7b29d98c68cab6ec754c0bac501666a49dd635ee830789e2c812b68 ">+0/-497</a>
</td>
</tr>
<tr>
<td><strong>1-introduction.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-4dac916b2b27af668674965d9680f4ba8d2a417f7b155d4b052b1043fc71beb6 ">+116/-0</a>
</td>
</tr>
<tr>
<td><strong>2-protected-routes.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-8ab0206ae4a4c73e540cf549fdbdd9de4ed7c8d59cc88ea26a4a7ddc0a9a4460 ">+1435/-0</a></td>
</tr>
<tr>
<td><strong>3-user-authentication.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-e02466ba1abd5d457724c7508da083a94b16d700cab36384567592c7d772cbf6 ">+647/-0</a>
</td>
</tr>
<tr>
<td><strong>4-graphql-operations.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-ae759670f7bf513c66bc08952556514e7193f23eb7cc536aebf38ad79e12c02f ">+856/-0</a>
</td>
</tr>
<tr>
<td><strong>5-file-uploads.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-02dc5fa1da67b0478bb797ed99c89685be3ec4509023441fb29b730ba74fff4e ">+715/-0</a>
</td>
</tr>
<tr>
<td><strong>reactnative.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-a85b3aa1caaeaa0a2cb6219ca531f89aaf2b23b41cd424c189b3cb948af1fd57 ">+0/-443</a>
</td>
</tr>
<tr>
<td><strong>1-introduction.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-573f696fb008f0e047e97209a1595b1f5c69dd5a1fe4907b65d6883273c53096 ">+121/-0</a>
</td>
</tr>
<tr>
<td><strong>2-protected-routes.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-b4ab0ba037b62e9eb5ee10cf5f56fd1c148f1e053f95291e42113d9f924ae711 ">+1499/-0</a></td>
</tr>
<tr>
<td><strong>3-user-authentication.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-dda89bc27be58e7fa58aef9aeb937dce455f69d9566e734a10ef4e0df993ab42 ">+805/-0</a>
</td>
</tr>
<tr>
<td><strong>4-graphql-operations.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-59a46fa74310dc797cdfd6e1a34d09fd8002e9accdade9d865b898419addc2bc ">+881/-0</a>
</td>
</tr>
<tr>
<td><strong>5-file-uploads.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-cb48bca7fdd422250b2482167b9a136d76ab60d2d5efccb94fb1a022b814d449 ">+776/-0</a>
</td>
</tr>
<tr>
<td><strong>6-sign-in-with-apple.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-a4da2a574e88122505df17fcf1f9705841a8240b33f60b6fcde86e068b8b6cfe ">+684/-0</a>
</td>
</tr>
<tr>
<td><strong>1-introduction.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-1eb8289a9ffc0484d2f8f21ede882c9e892d169f36b69f2ed9af940e2d1b8faa ">+116/-0</a>
</td>
</tr>
<tr>
<td><strong>2-protected-routes.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-bff6efc64eeda0dae0d2a133ab6c9be9dfe725ee24b364b89060ec93344ad436 ">+1308/-0</a></td>
</tr>
<tr>
<td><strong>3-user-authentication.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-f6bac1bb9476f921272f61911c703529663fb6ff37217c38d1702a1c8b70171a ">+578/-0</a>
</td>
</tr>
<tr>
<td><strong>4-graphql-operations.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-3a43d1ebc0b4fd7f74699c4f33ea110bba5ffa2695e6228dccafbfa38798c633 ">+763/-0</a>
</td>
</tr>
<tr>
<td><strong>5-file-uploads.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-2244e838acdbe909772f82f66cc63800aa9dbf5fae292a40d2d4f663d6618dd4 ">+642/-0</a>
</td>
</tr>
<tr>
<td><strong>sveltekit.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-9ed4ad735d1142a65a2da2dbbd8d46c508b7aef3d032cdb102d0f329602c4ce1 ">+0/-497</a>
</td>
</tr>
<tr>
<td><strong>vue.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-f6c4215fa6909fd3accebe0691a7364d17befb8ef90da5a4aeaee83d598c0540 ">+0/-504</a>
</td>
</tr>
<tr>
<td><strong>1-introduction.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-9485f8a6ad6398b19aa7a3739af3eef5158a7d285dc5a55e8bc6c1d58970fb84 ">+116/-0</a>
</td>
</tr>
<tr>
<td><strong>2-protected-routes.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-5ba36ef4388ad18b7efc6d405e2b66a69b063d483d4521d6acb5b5da65aee97a ">+1368/-0</a></td>
</tr>
<tr>
<td><strong>3-user-authentication.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-63f56a07c48f78462b47f74420e58cb8411d46aef880cfdf24b11ddea4bb382e ">+637/-0</a>
</td>
</tr>
<tr>
<td><strong>4-graphql-operations.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-ad7a84d0c924b946d992f5277cde596fb9d42eff021b888b5a8046822afabca8 ">+828/-0</a>
</td>
</tr>
<tr>
<td><strong>5-file-uploads.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-00c26651dea4650fd77222a24b31387569067783a87d9c6715935e2bf133428e ">+720/-0</a>
</td>
</tr>
<tr>
<td><strong>auth_user_security_keys.yaml</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-385036f3c18b6efd97138842e95f992a0569f612f627e71091c10952d8d31609 ">+2/-11</a>
</td>
</tr>
<tr>
<td><strong>auth_users.yaml</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-aba47a0c058f0a0a8122dee4d7b4394c4a8997bac9d4ccea04c41f0d00819050 ">+0/-24</a>
</td>
</tr>
<tr>
<td><strong>storage_files.yaml</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-ea0619f75a1f7dd13ca80d81cc2e28529594a73fff0356dc0b1d49ee0d1cc9ad ">+17/-36</a>
</td>
</tr>
<tr>
<td><strong>tables.yaml</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-a57c35142b6c4029fad7d5c8407305a61d18078cd0e264d41286625cf5cc4d30 ">+1/-5</a>
</td>
</tr>
<tr>
<td><strong>down.sql</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-d7be59389936d96f1c3b10f2147b177d488906d2155139536fae635201859c3e ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>up.sql</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-69c6c175ba9819f7b41d6a27e78fd0390e222665c9cc95fbb7fde702f14a1f4c ">+26/-0</a>
</td>
</tr>
<tr>
<td><strong>nhost.toml</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-45587ca86b6441ceacd1318e72a60ee0c30c70c00edb0a06cf061e404998f3bc ">+4/-4</a>
</td>
</tr>
<tr>
<td><strong>actions.ts</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-a0279ec5849eb0c93ec7c2f444fbecd2b681f47d954a84da5221f72d9805c2ca ">+12/-0</a>
</td>
</tr>
<tr>
<td><strong>page.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-8fffbc65277c93c49eea289ae1174cdba0632e5a295b74668437e9b1b0669097 ">+61/-30</a>
</td>
</tr>
<tr>
<td><strong>middleware.ts</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-817666e0f29fa78d2d7f77ed93cff4efbc8d85a996ab58d0dd13ad61e47c9125 ">+5/-3</a>
</td>
</tr>
<tr>
<td><strong>App.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-849f3aa52970f348de49a27094aac4e4b8cb8cf29580cada70d37f1a04249725 ">+2/-0</a>
</td>
</tr>
<tr>
<td><strong>Navigation.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-9845c755953914963f404a14104d93cd326f78e48614ece8c4d9df3ab1600ffd ">+3/-0</a>
</td>
</tr>
<tr>
<td><strong>index.css</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-8e415aa656412ff29b45f56035e84691f3abcc924bfb5b4e3cd0c9ba5237543b ">+200/-0</a>
</td>
</tr>
<tr>
<td><strong>+page.svelte</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-00da2a0f738ffa5c66a07437c7e85cacb7780551bad7e81899d905f065bf0892 ">+29/-8</a>
</td>
</tr>
<tr>
<td><strong>main.css</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-1d2ba653024753e96f2db949f818dccba45498456146171c4a2f883b58177d2f ">+373/-0</a>
</td>
</tr>
<tr>
<td><strong>Navigation.vue</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-27e2f662a54c47023a1342005bcf92602a846ad7a59e9d7d528aa8fbf40a0250 ">+7/-0</a>
</td>
</tr>
<tr>
<td><strong>index.ts</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-3bf427bc13a501168d321cf4bd428d09d8c3a042ef3be955c7a2e99bbf5f39dd ">+7/-0</a>
</td>
</tr>
<tr>
<td><strong>SignUp.vue</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-1838012876d16508d53d0345615b91c7c6fbccca3c9333d2311ac5fcd7b4c210 ">+28/-3</a>
</td>
</tr>
<tr>
<td><strong>Todos.vue</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-3334950776983589e7061d69be930b71663329a6ba56726bcbd3f1c2352dab47 ">+466/-0</a>
</td>
</tr>
<tr>
<td><strong>Makefile</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-85a3083c78e211e9eb36d741342bcbc85a1a0c375060f45c5426b560196de27f ">+2/-2</a>
</td>
</tr>
<tr>
<td><strong>.secrets.example</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-be7a988f18be877344f8584befc094ec2e66fe7784a2007300053707ad8ec7f1 ">+16/-0</a>
</td>
</tr>
<tr>
<td><strong>Makefile</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-36623bab6fe16382fd3e61b06b9586f2b14bea7c1b492e50db14ea98935016a4 ">+7/-0</a>
</td>
</tr>
<tr>
<td><strong>README.md</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-ed02e93d01774c3796335c83badc90cbc8a2035040965031946b69c8d91db3dd ">+29/-0</a>
</td>
</tr>
<tr>
<td><strong>env-up.sh</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-b6846a8b7ff5eea35ba5ff2aac8773f526c118ef59712a750f69578f25afda54 ">+8/-0</a>
</td>
</tr>
<tr>
<td><strong>package.json</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-f0d63d57cf77fdb7f2526d10c2d32d51ed2b6d43e3495d3f8879499e0c04f04b ">+13/-0</a>
</td>
</tr>
<tr>
<td><strong>tsconfig.json</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-cad0e83f030efa9fcad494c7797838c5099909f2c2ae0de0210812b966ffa6db ">+11/-0</a>
</td>
</tr>
<tr>
<td><strong>config.yaml</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-997042f08b088725275a28a7e2d275b86e2e74f3c972800e8116785d5d0fea59 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-3c921023f82fc74f5b657cb92bc8906ea19d7eb8f746713e4fae2a5a894a8a59 ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-5f67fb54ebc23bfccd1e23fbb7dc955bad8ad9011fae19369c87bf3f4d3e58fa ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-3c21997bc2db49d5714afc007f214316d17eb69d8ea70dd1cfe558bdb47df4bf ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-e3ab8737d4a9ea68a115f28ce578b7502107f68212d92f035bb86178ccdfb6fe ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-ed34cbd1c3e612ac3124ccce382b84ea7cda7eb22051b07102b68f5c28c58e97 ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-b8cead9967aaddc7c52be376fcd54b27c6ec223445e0063729c7255ab6c4f5fc ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-295cddc1774338f5b6ba396ef5ca9a0832b9b2346703ec22abf3b3874f903cc2 ">+43/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-de3e6c264684c0dddb2f6e70dcb236fe8cb1a27789c01a11b2a707c110ce7fc2 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-ae93f5f97d52d1d42be91b50e2a44522aef884065559f993f781f1ebeaa89b66 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-13511e1d49a2796e2ee0bb2082f02ed59c49bef7f7533735e60ac62ad16cc2c6 ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-293b460447946e2de5e4ba74cf64895a4f6fff7d879bb2e555c46ad7edd857a8 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-843300abe10319ac2b6ccffdd8daf3445b8eaa839486acb95566d398cad4e053 ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-8ff22c43814b945c0a22ea9089755a144e54039bdd12a2f06a128b4b155b3e38 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-f9e07ca4b5b9ae54e1668c3dfb8ac32612df366eb7d44819163f17c792507295 ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-4f829f73c5bce9bcbb67ed1357a111cdf9974c36d2db22493067d201b35f4cdf ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-64f6273ffcec137bbad9a104cd46e6a8776915a804bb3f89c24701071cbb2c50 ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-e19bb81615465996e46da50eacac7fddf71dd8bb18200c410b1837575bd76f95 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-a202edc97b202ec41b83decb7b358a6beb89f3edef46194b576ecaada51f073d ">+43/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-c2338d16f093d53b8a86b9a859c7bef0d9ef2c83a762d46cd49ab9e2f1f2a773 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-7fff5a89330dd91d3c9781e37d8f1e1f48bfc58c686b463b7fb1f43a2d01813d ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-c9031a1f7ac5ad3d0c3c94cff2f563560c1e3c05d1acc00353e603f3dcac439e ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-847d33f3faf4a7f928445eb389ba8aa24901b9025d4bae0c38becd5e9365a881 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-3f5c827ff0c5a3270dc4c7737b0afd09327800104cb379ed2a556029eb58aef3 ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-e499fcf53b46507a64be23ae309eba07e2c3ee289be4de316bd8ee83c16ea42e ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-5a6337adab234155f13e6b7d63eac5c654d5c75f4ea207c9db16b67685ce3e43 ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-b8f9c01ea13429ca9990a95e81ac6bedb273ec41198f34903584e9a68c22c6ef ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-5bfe4c29aee11546871f9127b5c5a954f313c64d2344cd4e6cd402fe22cf0ded ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-262bf98a3f4801aff364e19a4c00bf37197764454b274faf1dbd947506b843a7 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-8a4ad52e5c3cd679ede51f7d411ca5aaf89f2f519f49c540e09408bf13823323 ">+43/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-46f8a60e052ff7b9b3d8583f83f36b826aea9c7a24af9e9998cc0b699900b3b1 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-03da104febe035cf096fccbce0dbbf32197d289de814810792a319154241200c ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-d7fff652e5e21d234b1ab733de23d179d5901ff82165ffbd9495b3a1ab1c7611 ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-a84317c8ffe3b56140c923228666555d0e9e93c34eb5a8376b08ab97e6e4ae96 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-5025ef2a43d19c4f668177eea4e8002664a22522e11fef04aabbcdb2fbff3178 ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-e941c399a4d0b15de5bf2b20e722c2e6ffc990ecdef15efc2367ae302a52ff63 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-126da45f26e2d9256a28fadd38f363277926de563e6b303027cbea24779c729c ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-4686c2e7f183e071c8ccd456189d9bd056ead4874078dba16b1a2b1e53c7e9e4 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-331385785301bc1e55cfb6a3c707e3704b32d82a38f7ccd9aa4aa834a8569df4 ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-57d1b1020e0d2e327acca4154b0e4776f3a7a5db1d6c99edae3ee45561780c6a ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>Additional files not shown</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3469/files#diff-2f328e4cd8dbe3ad193e49d92bcf045f47a6b72b1e9487d366f6b8288589b4ca "></a></td>
</tr>
</table></details></td></tr></tr></tbody></table>
</details>
___
2025-09-24 14:50:55 +02:00
David Barroso
c6006fec30
fix (docs): update quickstarts ( #3463 )
2025-09-24 14:50:55 +02:00
David Barroso
69c2954658
chore (packages/nhost-js): migrate from eslint/prettier to biome ( #3462 )
...
### **PR Type**
Other
___
### **Description**
- Migrate code formatting to Biome
- Standardize quotes and add semicolons
- Update import statements and paths
- Revise package scripts for Biome
___
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Formatting</strong></td><td><details><summary>20
files</summary><table>
<tr>
<td><strong>client.ts</strong><dd><code>Convert quotes and add
semicolons in auth client</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-4ef372e972ad443bba16fd25b9b721088c801a0d75db8102062ccbc00838a2f8 ">+1038/-873</a></td>
</tr>
<tr>
<td><strong>client.ts</strong><dd><code>Standardize quotes and
semicolons in storage client</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-4385e1bb86a6ee228b61e620357d826371939ae8cbe6ef674dcef108e2bf5ab1 ">+341/-279</a></td>
</tr>
<tr>
<td><strong>storage.test.ts</strong><dd><code>Update test imports and
formatting in storage tests</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-19d55fc74c55988fede4d554a6bc5e052987219d1d5bdadd30ef52d55d1e9d78 ">+188/-186</a></td>
</tr>
<tr>
<td><strong>docstrings.test.ts</strong><dd><code>Normalize quotes and
semicolons in GraphQL doc test</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-c7b7dab18f108770bcff06dc83cc9a34a5ee72c5021a035129a264a968f7d5ff ">+141/-136</a></td>
</tr>
<tr>
<td><strong>functions.test.ts</strong><dd><code>Format imports and
strings in functions tests</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-513ce67d4002bcaa8dc01d8133ffb3a0c39c430604ba3c2d17ec6c0f7ad6f1a9 ">+132/-128</a></td>
</tr>
<tr>
<td><strong>graphql.test.ts</strong><dd><code>Update test formatting and
import styles in GraphQL tests</code></dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-488fd58d97b84872c4b9d160ddd54d17f198d7dfe2e3508c84491bb7b2509e1e ">+124/-109</a></td>
</tr>
<tr>
<td><strong>nhost.ts</strong><dd><code>Add semicolons and unify import
quoting in main client</code> </dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-68e0323ab180717ff0de35463496ca8eb3b8fc561462459f3c9cf178aa5754d6 ">+129/-68</a></td>
</tr>
<tr>
<td><strong>enhancedFetch.test.ts</strong><dd><code>Standardize quotes
in enhanced fetch tests</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-c5e61a5e461b17c08bae579aca5ef65e6b2b333df8c770b4f380f98f24c04e8a ">+139/-122</a></td>
</tr>
<tr>
<td><strong>client.ts</strong><dd><code>Normalize import quotes and
semicolons in GraphQL client</code> </dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-cbd71dd3404704ff9d9c84273572fcac6f041532eef597de8a714249c08559c4 ">+67/-60</a>
</td>
</tr>
<tr>
<td><strong>storageBackend.ts</strong><dd><code>Add semicolons and unify
quotes in storage backend</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-22fd8793eafef0c5b0291339777a93768f83609d3b66aa56c7330d7b72b72739 ">+45/-41</a>
</td>
</tr>
<tr>
<td><strong>refreshSession.ts</strong><dd><code>Format and semicolonize
refresh session code</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-578cd1f069f1742b4a1aeabaaed852562659c6a830a4b51df0c26d52af478051 ">+65/-55</a>
</td>
</tr>
<tr>
<td><strong>nhost.test.ts</strong><dd><code>Update test quote style and
semicolons in nhost tests</code> </dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-7daa50f1e08361183e9b830443d3e5837f3f8ff111da0457d9940063c084c2a8 ">+34/-30</a>
</td>
</tr>
<tr>
<td><strong>client.ts</strong><dd><code>Unify quotes and semicolons in
functions client</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-6c8d0225c010836d4a88cf726a477821cc64d33c167654bde18178350b4d20f5 ">+47/-36</a>
</td>
</tr>
<tr>
<td><strong>fetch.ts</strong><dd><code>Standardize formatting in fetch
handler</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-d340c8b819b3e37cf227af2925bfb0ab406d8a9cba5822cbb1ed11a895ec90cc ">+45/-37</a>
</td>
</tr>
<tr>
<td><strong>docstrings.test.ts</strong><dd><code>Normalize quotes in
functions docstring tests</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-0846336621cc9854b0e8171e12133b336a72563488d217eecfa475752c2998db ">+62/-62</a>
</td>
</tr>
<tr>
<td><strong>docstrings.test.ts</strong><dd><code>Update docstring test
formatting in storage</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-fb587c97d4651f053ae6d4a33dc468aa4d24c38e98fef3225bb68561ba7fd6a4 ">+52/-50</a>
</td>
</tr>
<tr>
<td><strong>session.ts</strong><dd><code>Add semicolons and double
quotes in session decode</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-2292867bf3b27d5d5887a247376b111c659a797dc92df9365d7e6b0bc64a5868 ">+37/-35</a>
</td>
</tr>
<tr>
<td><strong>docstrings.test.ts</strong><dd><code>Format main docstring
example code</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-b97eb064c8d8cbd8197f40f06117348a994b0f6d42a73d2e0a47cbb226cb4b08 ">+35/-35</a>
</td>
</tr>
<tr>
<td><strong>middlewareUpdateSessionFromResponse.ts</strong><dd><code>Unify
quotes in session response middleware</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-a2c5449dd97df2d425297ec7f3b7628f405e3955cf46a9935afd8d1fe0ecdf7d ">+37/-27</a>
</td>
</tr>
<tr>
<td><strong>methods_ref.yaml.ts</strong><dd><code>Adjust
template-generated URL string formatting</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-f5d4c1cc3e0ab95288bfe009f15ca77360a98665cc621b7d299e8316c9e56001 ">+19/-17</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Additional
files</strong></td><td><details><summary>39 files</summary><table>
<tr>
<td><strong>project.nix</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-e456dcfd6231480081b3c9a2a95204bd061853442d5e3a38330625d01cb1a6a1 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>project.nix</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-8c4658c93f89aa3cbc7671465147938c58e14e66e3b95309b9fc4a11969a7fe4 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>fetch.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-fd8af47714fe1176997bd7e7ec7ccd42d1f57f566ae2c40dec13dd0dff098a97 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>functions.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-d0df96f3f2c99485d0a0a31007f8378177bd8f000f6dc1468c6a03a4c2750126 ">+2/-2</a>
</td>
</tr>
<tr>
<td><strong>graphql.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-be11be6441756582b629e0f4f6acef5c1bb59d749c3fa3202043f7cf345696a2 ">+43/-38</a>
</td>
</tr>
<tr>
<td><strong>storage.mdx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-58f444ba0dbbb972fc20b6aeed7ae8a4bbf57776e2cd7f498b3f3c37095dd7a6 ">+26/-28</a>
</td>
</tr>
<tr>
<td><strong>project.nix</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-f6086e59795d16f4c73cb0e5f90b986e288deb5f176c80c5c035f1703ff86760 ">+0/-4</a>
</td>
</tr>
<tr>
<td><strong>crash.ts</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-38c3348a81607f21101d8ecfc1cbaee87f9716a2e54c9be5fa301057f40bb03a ">+2/-2</a>
</td>
</tr>
<tr>
<td><strong>echo.ts</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-70d2dbad876749b22eaa28784c7796bea615e8a4e17810bf36da113dccab1a03 ">+3/-3</a>
</td>
</tr>
<tr>
<td><strong>helloworld.ts</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-b37568d59ded3a9cabaa4d97c80e5dd1dcc2716903d9e10171cc7ec4f3fb0592 ">+2/-2</a>
</td>
</tr>
<tr>
<td><strong>README.md</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-db5537429694d86082c34ac97881b7811aa1c79ee496dd79c248494698ba3b83 ">+0/-23</a>
</td>
</tr>
<tr>
<td><strong>email-confirm-change.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-0bf93b57a4a18ccfa08b72816a7eea2c14c00ce92d9a07249405805500c8bb45 ">+0/-129</a>
</td>
</tr>
<tr>
<td><strong>email-verify.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-67bf177366a960b6f068b1c8802f5c200b6ce6069f8d5e61c632aa4191b8adca ">+0/-127</a>
</td>
</tr>
<tr>
<td><strong>password-reset.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-6e2461fe97310e38e2e4eed0e20570c5a51636989b95c646661f7bc04b37dd5d ">+0/-127</a>
</td>
</tr>
<tr>
<td><strong>render-emails.ts</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-2bc9d596f730e2c72f02a1f57d6636136f898d81396493d1fcb803cae3f7351e ">+0/-82</a>
</td>
</tr>
<tr>
<td><strong>signin-otp.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-d42e2ed4843fe0bf2888e9f7cba159cd0513045f822647b39573dc100b185301 ">+0/-124</a>
</td>
</tr>
<tr>
<td><strong>signin-passwordless.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-a439b87562c1d2d60473ace46aa30e976b5b54c3c86fa6c9c1fd0b87c65149e7 ">+0/-127</a>
</td>
</tr>
<tr>
<td><strong>eslint.config.mjs</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-90fda00235d0809b221cb70446782f42cf392bba35ae6d3a4582a255e44161fd ">+0/-26</a>
</td>
</tr>
<tr>
<td><strong>jest.config.js</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-f833c7bf2eb86f6c2a0ddb4e7f4e093dfbdafa1337e7f3fcbdc4865c1b87d97d ">+13/-13</a>
</td>
</tr>
<tr>
<td><strong>package.json</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-a56af396cb39f7430957ad27d498ce3721935f5ed054cc8f15ffa864dc705618 ">+3/-10</a>
</td>
</tr>
<tr>
<td><strong>project.nix</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-8aa0f2b40e1054e08a33a0b071a6c672edbfeeb281f6c51e94dd73035014a6e9 ">+2/-6</a>
</td>
</tr>
<tr>
<td><strong>auth.test.ts</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-4c1f0d383da8b3f31cb374ae16b8ec047476e98f69f6650797ead4a6395f0f25 ">+60/-60</a>
</td>
</tr>
<tr>
<td><strong>docstrings.test.ts</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-ad0775feb478eaee0adec9dae6ce7055766b0612cc624f19b6c4f47d2ff47505 ">+41/-41</a>
</td>
</tr>
<tr>
<td><strong>index.ts</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-cf6c55f60c1ce5bf6d717a8a1ffb4c11458e936271a0406ff6d11c25010b2559 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>index.ts</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-6b258ccabf862a7fca001b4d49b3ea5a33e1cb11f28e773ae579e4ae5670ca21 ">+7/-7</a>
</td>
</tr>
<tr>
<td><strong>middlewareAttachAccessToken.ts</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-406a2ec81128d07056432f10bb888dbcaed0cfa5094fbd6133c3a6d5f710315b ">+14/-14</a>
</td>
</tr>
<tr>
<td><strong>middlewareSessionRefresh.ts</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-90c69b666c6c6262a3d9dc9a9d9a0f863b12f0167edb49cba1301fc737cbb447 ">+18/-18</a>
</td>
</tr>
<tr>
<td><strong>index.ts</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-a0c86d5e58047ce9b2bc69a03fecc0c460703b3809eabe33e69a4a649c9ebc4e ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>index.ts</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-6124d7be08592679e7ba8ae19ab28f3fca0d9a8fcd04c62f130eb8038eeb29e4 ">+6/-6</a>
</td>
</tr>
<tr>
<td><strong>index.ts</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-6c48c1026ef2c9ccad3ce59368254e9278474cf4de5fdc0cf0f8659d10064bf8 ">+9/-9</a>
</td>
</tr>
<tr>
<td><strong>index.ts</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-7a32be1b838de9664f00775a9c4b4ca11dc34cdabfc3454b3df41f3d5f49b994 ">+10/-6</a>
</td>
</tr>
<tr>
<td><strong>storage.ts</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-fc03ab2aa30e3c768df92d95608ddb18eee84b477dd1f1182ba70965e1b8f050 ">+28/-24</a>
</td>
</tr>
<tr>
<td><strong>index.ts</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-999182148616dd69a7cc1980b333d144ff91f034458107f87b1679ef9d958c97 ">+3/-3</a>
</td>
</tr>
<tr>
<td><strong>vite.config.ts</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-07972b1690be8a3a1bc3d77cd95767678bd3bcf7ef3708287475027606d59fb4 ">+26/-24</a>
</td>
</tr>
<tr>
<td><strong>vite.umd.config.ts</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-c4b34676ca804362319324b44ef2195cceee6f6a47caa078bdbe60ae437a0d98 ">+18/-18</a>
</td>
</tr>
<tr>
<td><strong>content.yaml.ts</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-d765e72738bf96a473d1f198037b7835df3870859f6c8c5a210118501526db60 ">+3/-3</a>
</td>
</tr>
<tr>
<td><strong>types.yaml.ts</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-c2463bbdf659ce7e41134cb40072f17f8cecb6bef7a9eef20012a249cecd040b ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>client.tmpl</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-0505af00753e1b8d32c18216b446cc7d297d4dfcb33401fa8330802d45f52f63 ">+8/-7</a>
</td>
</tr>
<tr>
<td><strong>main.tmpl</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3462/files#diff-fc22ab9df6555bafaf34152e651b1ee89f7115bb837ed8a7788068ba34673176 ">+1/-1</a>
</td>
</tr>
</table></details></td></tr></tr></tbody></table>
</details>
___
2025-09-24 14:50:55 +02:00
David Barroso
be6af4f157
feat: moved guides ( #3460 )
...
### **PR Type**
Enhancement
___
### **Description**
- Introduce React Apollo & React Query example projects
- Configure GraphQL codegen and generate typed hooks
- Implement `AuthProvider` for Nhost session management
- Add pages (Home, SignIn, SignUp, Profile) and components
___
### Diagram Walkthrough
```mermaid
flowchart LR
CG["Codegen Config"] -- generates --> GT["GraphQL Types & Hooks"]
AP["AuthProvider"] -- provides --> APP["App (Router)"]
GC["Apollo/Query Client"] -- used by --> APP
APP -- routes --> Home["Home Page"]
Home -- queries/mutations --> GT
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Dependencies</strong></td><td><details><summary>2
files</summary><table>
<tr>
<td><strong>graphql.ts</strong><dd><code>Add generated GraphQL types and
operations</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-f0ffc6fbc739aa455cf3967c263549e2acf4922dd63d9d2fd33ef9975d958b47 ">+6994/-0</a></td>
</tr>
<tr>
<td><strong>graphql.ts</strong><dd><code>Add generated GraphQL types and
operations</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-08b9f52995757f95a31a6d4d7bafb1f1a473ae338f9d11f343956048d13a0b58 ">+6944/-0</a></td>
</tr>
</table></details></td></tr><tr><td><strong>Configuration
changes</strong></td><td><details><summary>4 files</summary><table>
<tr>
<td><strong>apolloClient.ts</strong><dd><code>Setup Apollo client with
Nhost auth link</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-f0211d31ead8e27f200356bf615f34eee1e96ec6b068039a36b1506d32c35692 ">+53/-0</a>
</td>
</tr>
<tr>
<td><strong>queryHooks.ts</strong><dd><code>Create React Query
authenticated fetcher</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-45c18c55c9756b413c5d4b9a71bd04a53d78706eb9a2a611f2fd0a1ab7ce6b51 ">+33/-0</a>
</td>
</tr>
<tr>
<td><strong>vite.config.ts</strong><dd><code>Add Vite config for React
Apollo example</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-146d3d4bcf230a225998f3c68de6ffa9f19e16b85bb5ca882608d76e7b086566 ">+7/-0</a>
</td>
</tr>
<tr>
<td><strong>vite.config.ts</strong><dd><code>Add Vite config for React
Query example</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-22a14bf686832a47057d73f552546a1d56a1f34cd34666acf741940feca0605f ">+7/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>14
files</summary><table>
<tr>
<td><strong>AuthProvider.tsx</strong><dd><code>Implement Nhost
AuthProvider for React Apollo</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-71a439d2114fc41855bdb2041134bbc4de64f886f06f3f50ed2fd31cc61c84a5 ">+175/-0</a>
</td>
</tr>
<tr>
<td><strong>AuthProvider.tsx</strong><dd><code>Implement Nhost
AuthProvider for React Query</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-34697170eae721899cacb8faca334b60793b405b3f2ee327fecd4d6944338ed1 ">+175/-0</a>
</td>
</tr>
<tr>
<td><strong>Home.tsx</strong><dd><code>Add Home page with Apollo
queries</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-407aac78333f6d47a86500b3e0c2311f1967ce50ba1a7ef4f022b8a50c013160 ">+203/-0</a>
</td>
</tr>
<tr>
<td><strong>Home.tsx</strong><dd><code>Add Home page with React Query
hooks</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-c91862e4a735090baf145ed64f347a460446a25b8d5061b6b928b88ddb146008 ">+204/-0</a>
</td>
</tr>
<tr>
<td><strong>SignUp.tsx</strong><dd><code>Add SignUp page and
form</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-9a841d153068ba2ba45e3b00c3979eca2048037670945ff079bce6645780f447 ">+127/-0</a>
</td>
</tr>
<tr>
<td><strong>SignUp.tsx</strong><dd><code>Add SignUp page and
form</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-53b2663ba20acd8379c5dbbb671dd0c1badbb24955c7b9b7d9115843bd9ea859 ">+127/-0</a>
</td>
</tr>
<tr>
<td><strong>SignIn.tsx</strong><dd><code>Add SignIn page and
form</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-fd0d7f5b422c5c3ec70fdeb95da10479b90132a571de56307d9b44fc69aaf27b ">+120/-0</a>
</td>
</tr>
<tr>
<td><strong>SignIn.tsx</strong><dd><code>Add SignIn page and
form</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-ec047013e51fbbbc17b641287e763558c5182325be0fe86d44e439eeca6e9ad1 ">+120/-0</a>
</td>
</tr>
<tr>
<td><strong>Profile.tsx</strong><dd><code>Add Profile page
display</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-53e4cf70b4b84819e216a602241d5379b9402a2412af122b5a870ec0bc8cd6a1 ">+66/-0</a>
</td>
</tr>
<tr>
<td><strong>Profile.tsx</strong><dd><code>Add Profile page
display</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-13fbb13999bb0001387c3d9a5015974ffece9575c1e6240a21157a07090b3374 ">+66/-0</a>
</td>
</tr>
<tr>
<td><strong>Navigation.tsx</strong><dd><code>Add navigation bar
component</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-eb031d8883524edeab44c5b665a2429cffb1bac75d8f0dc1dc7bc3c42aa9c068 ">+85/-0</a>
</td>
</tr>
<tr>
<td><strong>Navigation.tsx</strong><dd><code>Add navigation bar
component</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-3d34860dbf6645315068dd62f3be52745294be2729e4dc718e40ad0125669204 ">+85/-0</a>
</td>
</tr>
<tr>
<td><strong>ProtectedRoute.tsx</strong><dd><code>Add protected route
wrapper</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-55c80a4fab944fa1c3210cce0fd0092776a01046ee9893c88c69d0c5f5f5458b ">+26/-0</a>
</td>
</tr>
<tr>
<td><strong>ProtectedRoute.tsx</strong><dd><code>Add protected route
wrapper</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-bfc4913eb77b8cbe8115f7833bfdf1aad595496f3160dbf43eabf829f0d94f5a ">+26/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Additional
files</strong></td><td><details><summary>39 files</summary><table>
<tr>
<td><strong>examples_guides_checks.yaml</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-56c96ece925a38bd3e84d3fff001760c68d40744013d2b3458ad445a686a0c36 ">+94/-0</a>
</td>
</tr>
<tr>
<td><strong>project.nix</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-f6086e59795d16f4c73cb0e5f90b986e288deb5f176c80c5c035f1703ff86760 ">+1/-3</a>
</td>
</tr>
<tr>
<td><strong>Makefile</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-85a3083c78e211e9eb36d741342bcbc85a1a0c375060f45c5426b560196de27f ">+17/-0</a>
</td>
</tr>
<tr>
<td><strong>package.json</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-4095856b4a3f808fcab300063ba57b9e84d2cd2b80e244b69d48d13ddadf161d ">+13/-0</a>
</td>
</tr>
<tr>
<td><strong>project.nix</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-65c8830b4c3074e59267275284f270f4dfa95ce2722d7634e3e3c77f66f8235e ">+105/-0</a>
</td>
</tr>
<tr>
<td><strong>README.md</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-b79af2df973af3966472409744a06f7e930008c43216cee8ea91af504bf569fe ">+391/-0</a>
</td>
</tr>
<tr>
<td><strong>biome.json</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-bee8a9ce71bf1a5641c7bc5aa57f0ca5b4ab5e6a1fc0c08067cb02caa48048a9 ">+7/-0</a>
</td>
</tr>
<tr>
<td><strong>codegen-wrapper.sh</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-3d8141868656cb3c65352257558703f27b1f73b417f8a3223a595d31ffda1b4a ">+27/-0</a>
</td>
</tr>
<tr>
<td><strong>codegen.ts</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-88f3c353c9bfd474e259a4e6a70b4425032b1d6b3c228046c36333b22bdb027e ">+44/-0</a>
</td>
</tr>
<tr>
<td><strong>index.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-e26ca0f00bc4456ef2ec04d470a864c72252bff2a9d34aa068bd6fcee9bd837c ">+13/-0</a>
</td>
</tr>
<tr>
<td><strong>package.json</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-219f91ff32e8ae8ff4fb20d06f91c0d4501d50dcaf34a4012aa0829c61eca41b ">+36/-0</a>
</td>
</tr>
<tr>
<td><strong>schema.graphql</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-1aef57e8c82d9f02e7c40f665ffbc384489beff7b299a8d30f1b2a00ba54676b ">+10143/-0</a></td>
</tr>
<tr>
<td><strong>App.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-3939716d6e04d989c77f1b141c7893b8cad49325d77146df613ea763da566029 ">+56/-0</a>
</td>
</tr>
<tr>
<td><strong>index.css</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-42378718fb21f3858c4d3ced50bff70946a0a63d6f5afabf5d29e01b9d7e58cb ">+552/-0</a>
</td>
</tr>
<tr>
<td><strong>queries.graphql</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-a72744935ef245ce03e31a475ece30582d3fa9d8295a1338d2fdf3d64f52875a ">+28/-0</a>
</td>
</tr>
<tr>
<td><strong>main.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-fe10a290150d971b54595c18a0e3b9486ddd237611225ec4fae333c893403a96 ">+33/-0</a>
</td>
</tr>
<tr>
<td><strong>Home.css</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-34b39976cc1741190f571fe587e77290bfec3f7248b8dab7cfe2ef3832f39ad0 ">+217/-0</a>
</td>
</tr>
<tr>
<td><strong>vite-env.d.ts</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-76ec290ea25ad1dd3d6a40aceb23964e6af759e9d223d0227ea7a9b4c27a4c1a ">+11/-0</a>
</td>
</tr>
<tr>
<td><strong>tsconfig.json</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-1c4ff207f3f497bf6eb395d765c67c43197a8141faf8e0b78975749d7ef8de7b ">+6/-0</a>
</td>
</tr>
<tr>
<td><strong>tsconfig.node.json</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-2c47cac1784e69cc8ee9de2b8654939b7699e627e6996135af736d086471cbda ">+4/-0</a>
</td>
</tr>
<tr>
<td><strong>README.md</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-f8cffe1a6c5ab9062008bdc81cbdbc19ff73c414e852e6cc630288c935cb85c5 ">+493/-0</a>
</td>
</tr>
<tr>
<td><strong>biome.json</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-f3c8d8d56e583f7496332f58d85b8f2fc179364af6d7b6db2050cf8f3019449d ">+7/-0</a>
</td>
</tr>
<tr>
<td><strong>codegen-wrapper.sh</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-697fec800dc8ea79d58ac3650f21d252340f04c760df18c060c24523a7324967 ">+31/-0</a>
</td>
</tr>
<tr>
<td><strong>codegen.ts</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-9b2b4b1be5005479ea56b7dbb26f8f34e9b39ab005c4df5e5547caef4bb8176e ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>index.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-6a4d60e607c923818133e58b28b06f9b749a492a500a6b2899e1f2fd991ad03b ">+13/-0</a>
</td>
</tr>
<tr>
<td><strong>package.json</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-e80d8d01acf5048bc7c1767cf248b07e67df6a13914ac02d43c8b180b0178ddc ">+35/-0</a>
</td>
</tr>
<tr>
<td><strong>schema.graphql</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-938b6a319b1d5f5234f3e80b49c3d9c429a45569fb777ef9310bdbdeb3f485e2 ">+10143/-0</a></td>
</tr>
<tr>
<td><strong>App.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-9a06f558adc00bb736ae330d10f276dd360d3b2e08814d424392470d6b19af3b ">+56/-0</a>
</td>
</tr>
<tr>
<td><strong>index.css</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-8fe80a812b88da1a00debcd607d5a7300a01558103403d6beba1c8a514d1cae0 ">+552/-0</a>
</td>
</tr>
<tr>
<td><strong>QueryProvider.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-5e3488d3b7deca24d0d26f4af88d201e7678662e6531f4e4cb511f99d32854d5 ">+27/-0</a>
</td>
</tr>
<tr>
<td><strong>queries.graphql</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-6506f25586ed4d14db727ca7ee5be4e299c29dbbfcdbcbc4f81e49a4ae9b5fb5 ">+28/-0</a>
</td>
</tr>
<tr>
<td><strong>main.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-2d90aa9771205fab3d46a5d28686eae47e929a9ec6070dc3d564d37d6324768f ">+22/-0</a>
</td>
</tr>
<tr>
<td><strong>Home.css</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-ef3665d0c09e727cc06d1d429d983c3767f8b65add4bdbe5b095d3816ebbce1d ">+217/-0</a>
</td>
</tr>
<tr>
<td><strong>vite-env.d.ts</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-c931c9d2529208b5808e22f0a18c44b7cff5e88d1592b8f472f46bcdeda844b5 ">+11/-0</a>
</td>
</tr>
<tr>
<td><strong>tsconfig.json</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-097ce507ecd096e978eb5013155ceb912fe10b0b6de8ee4a0f13ff08565e1cae ">+6/-0</a>
</td>
</tr>
<tr>
<td><strong>tsconfig.node.json</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-12b373ca0bdd9a2bc826e660ccdccc9573bd0ef54d592f2ebce0473e9568dde8 ">+4/-0</a>
</td>
</tr>
<tr>
<td><strong>flake.nix</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-206b9ce276ab5971a2489d75eb1b12999d4bf3843b7988cbe8d687cfde61dea0 ">+7/-40</a>
</td>
</tr>
<tr>
<td><strong>js.nix</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-bdae1ae0f0031ce2c2e0356df4460e40363922c9658b25c773ebfe29fe052cf9 ">+4/-1</a>
</td>
</tr>
<tr>
<td><strong>pnpm-workspace.yaml</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3460/files#diff-18ae0a0fab29a7db7aded913fd05f30a2c8f6c104fadae86c9d217091709794c ">+1/-0</a>
</td>
</tr>
</table></details></td></tr></tr></tbody></table>
</details>
___
2025-09-24 14:50:55 +02:00
David Barroso
3a41251caf
feat: added examples/demos ( #3459 )
...
### **PR Type**
Enhancement, Tests
___
### **Description**
- Add multi-framework auth demos and examples
- React Native, React, Next.js SSR, Vue, SvelteKit, Express
- Email/password, magic link, MFA, WebAuthn flows
- File upload, profile, logs viewing
___
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>18
files</summary><table>
<tr>
<td><strong>MFASettings.tsx</strong><dd><code>Add React Native MFA
settings screen</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-5d346e2efc6817f6c3de4360c27031e4d5a4f37423aedb329f645aa9ac33d6e8 ">+594/-0</a>
</td>
</tr>
<tr>
<td><strong>upload.tsx</strong><dd><code>Add React Native file upload
screen</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-3763882523f551153b1520c05a953fdd2b3e7e0c37e2db53318e6a2f05d09b9f ">+552/-0</a>
</td>
</tr>
<tr>
<td><strong>Upload.tsx</strong><dd><code>Add React SPA file upload
page</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-aadcba440d58667ce429ae0caad0695a7dddc8d91e1b8f0dc52ce6633b0eddc4 ">+444/-0</a>
</td>
</tr>
<tr>
<td><strong>SecurityKeys.tsx</strong><dd><code>Add React SPA WebAuthn
security keys</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-3f9cf11913bfd3220c4c220618b5575c6a3ed59ffa42d6d5be32c77edfc7d610 ">+404/-0</a>
</td>
</tr>
<tr>
<td><strong>client.tsx</strong><dd><code>Add Next.js SSR file upload
client</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-f6fa7dea8d8baf6d7fcefaf4517a492dbfca213afcf6b5d08d180a889947c0e5 ">+399/-0</a>
</td>
</tr>
<tr>
<td><strong>SecurityKeyClient.tsx</strong><dd><code>Add Next.js SSR
WebAuthn key client</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-c05c21b6e3c47e8d17ba69ebba93e3ccd4266e26fd4062e6de552ed98d46c603 ">+351/-0</a>
</td>
</tr>
<tr>
<td><strong>signup.tsx</strong><dd><code>Add React Native signup screen
with tabs</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-262b09b9dd7234cad96fe092d7131a23451c9e50b98c126c9e36599b3a127ac6 ">+387/-0</a>
</td>
</tr>
<tr>
<td><strong>signin.tsx</strong><dd><code>Add React Native signin screen
with MFA</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-3a4105c32f4aa4290e4fc0a12c2cc3121b4b0901c1429917087e26569c1c0a7a ">+367/-0</a>
</td>
</tr>
<tr>
<td><strong>MFASettings.tsx</strong><dd><code>Add React SPA MFA settings
component</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-e43f9e6aec21b8620c86b9cdf9986e2e8dace52d87609b1c74cf6ab9a0639d21 ">+288/-0</a>
</td>
</tr>
<tr>
<td><strong>mfa-settings.tsx</strong><dd><code>Add Next.js SSR MFA
settings client</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-75767c82cc4c7eb779f3beb7ca5c5f9b2cc090347029ab44cc7f93b8b881c85b ">+292/-0</a>
</td>
</tr>
<tr>
<td><strong>profile.tsx</strong><dd><code>Add React Native profile
screen</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-e996eb818728427e1c131ac6f3cba0bd506ad8f28486ee47c9ceb5b33dbc7869 ">+262/-0</a>
</td>
</tr>
<tr>
<td><strong>verify.tsx</strong><dd><code>Add React Native email verify
screen</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-93aeb3cfb31ac602e11e6031bb4860e81385c3c9693e5285c8f69988341cd045 ">+265/-0</a>
</td>
</tr>
<tr>
<td><strong>index.ts</strong><dd><code>Add Express server Nhost client
example</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-337bf1c26c434751c7c3e356598278e8e05482e41936a30c587cf68fd375092f ">+126/-0</a>
</td>
</tr>
<tr>
<td><strong>email-confirm-change.tsx</strong><dd><code>Add email
confirm-change template generator</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-5ee9a92531c20cb74b9a49335eb0a65cdd73efa7d8c59020ea80163bba2cec72 ">+129/-0</a>
</td>
</tr>
<tr>
<td><strong>AppleSignIn.tsx</strong><dd><code>Add Expo Apple Sign In
integration</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-8fcf005753999f7770661afbc82063eb0637a2f959f03a77a94d4eef55b1d9cf ">+112/-0</a>
</td>
</tr>
<tr>
<td><strong>render-emails.ts</strong><dd><code>Add email templates
render script</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-760314d4066ab3171a8dd9ec712e5e6b4e373f86531e66c502df06dab8f9dc7d ">+82/-0</a>
</td>
</tr>
<tr>
<td><strong>auth.ts</strong><dd><code>Add Vue demo Nhost auth
store</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-db6008d5d08993870173045b4d2e978832e91943222dad7f6093537c48277e4f ">+75/-0</a>
</td>
</tr>
<tr>
<td><strong>App.tsx</strong><dd><code>Set up React SPA routes and auth
provider</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-849f3aa52970f348de49a27094aac4e4b8cb8cf29580cada70d37f1a04249725 ">+77/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>2
files</summary><table>
<tr>
<td><strong>DateTimePicker.test.tsx</strong><dd><code>Simplify
DateTimePicker test awaits</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-c7076012eb33d6f60049710638b5ad19c2f310b8c250c79f1905be7e0a30b00a ">+12/-12</a>
</td>
</tr>
<tr>
<td><strong>useProjectLogs.test.ts</strong><dd><code>Update project logs
tests to use CoreLogService</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-13d900aa08d06962a09628136b893801ad62a96c3ff89d380c5c4b7ae92d891e ">+9/-9</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Additional
files</strong></td><td><details><summary>101 files</summary><table>
<tr>
<td><strong>examples_demos_checks.yaml</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-48c5a14a5d1da9f35b409ecc95fae8f3a319f97bffbf0020efcb8c360347dc02 ">+94/-0</a>
</td>
</tr>
<tr>
<td><strong>biome.json</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-2bc8a1f5e9380d5a187a4e90f11b4dd36c3abad6aea44c84be354a4f44cdec55 ">+43/-0</a>
</td>
</tr>
<tr>
<td><strong>LogsServiceFilter.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-a590a7298a9f040df9f26c4eb37d10fc36f47c32996f71aec47796f08c44e892 ">+8/-7</a>
</td>
</tr>
<tr>
<td><strong>DeploymentServcieLogsHeader.test.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-46fb5d0c9528168323c0e16ef4186d91fe6274b64292f43841258bdfc45dd581 ">+81/-0</a>
</td>
</tr>
<tr>
<td><strong>DeploymentServiceLogs.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-333a9783713e9a4bad1b5327e117cbe69148091abe8b9038d36132b5f4635bbe ">+3/-3</a>
</td>
</tr>
<tr>
<td><strong>DeploymentServiceLogsHeader.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-4f102c06ed32bb3d8245e415e76b0b14d2d4ae3abca6e234edf69278325c7a95 ">+3/-3</a>
</td>
</tr>
<tr>
<td><strong>useProjectLogs.ts</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-10efc67700b3f024dd03442eacd339802e951696d04caa76bd5a864bd5c7c83f ">+3/-3</a>
</td>
</tr>
<tr>
<td><strong>LogsBody.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-b628e511a7fb9b237ac691b27ab9585eed0d0803144cde66c3af7fa6f9a2dc40 ">+2/-2</a>
</td>
</tr>
<tr>
<td><strong>LogsHeader.test.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-6a348a6b3f868aac854020f2b85ff9a7cf5d61f362a5201e77681e4d5a576f20 ">+86/-0</a>
</td>
</tr>
<tr>
<td><strong>LogsHeader.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-ebb3285aa776c9c5ea8b72672c4aafd55994c6c694998bbf56ca9c56d1e77664 ">+3/-3</a>
</td>
</tr>
<tr>
<td><strong>services.ts</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-8fcdaed33322718091b613ae22c65cc3eb61972904b5af46866b160c9bbbe48c ">+13/-13</a>
</td>
</tr>
<tr>
<td><strong>logs.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-77489a68a7526d74f06d59019ad68c44728b7620637308d70fba38d6649b73fa ">+3/-3</a>
</td>
</tr>
<tr>
<td><strong>Makefile</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-80fe306cf2e39e0852a6033f331195be7942ed7fb54b2cac6bd0139cc34d1bb6 ">+17/-0</a>
</td>
</tr>
<tr>
<td><strong>APPLE_SIGN_IN_SETUP.md</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-eeb0deb7c8dae0e6b49462b92e5e7176ee11236759847ea59253375ba48d6f5f ">+95/-0</a>
</td>
</tr>
<tr>
<td><strong>README.md</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-29693cbc361101a671771703a3097f97b0ad6c344435cb3fa6d19b00c030ecac ">+169/-0</a>
</td>
</tr>
<tr>
<td><strong>README_MAGIC_LINKS.md</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-9232aee57e45778533da1f08d80d794f612f3672b4e2fc0a77c4ca6e03e27d3a ">+410/-0</a>
</td>
</tr>
<tr>
<td><strong>README_NATIVE_AUTHENTICATION.md</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-2bfce492dbe0824f4e47907f7269b57b6f8f092550647afc46cff13903a34750 ">+381/-0</a>
</td>
</tr>
<tr>
<td><strong>README_PROTECTED_ROUTES.md</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-25f106def41f290d4c471f95f4a25db4c7d411407f7937035f5e3e53ff90aa6f ">+357/-0</a>
</td>
</tr>
<tr>
<td><strong>README_SOCIAL_SIGNIN.md</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-10c036291fe61ed79d9ce5c1764f10e44b6cc57232b0b6b981c19f84760f5e8e ">+530/-0</a>
</td>
</tr>
<tr>
<td><strong>app.json</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-12f6ad4bacc187ec247d9ee19b2ed6a5b49c4304508fd3ba4321b265e0eec36f ">+53/-0</a>
</td>
</tr>
<tr>
<td><strong>_layout.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-9d1054a3d9a27191c4056537dea211e6a19610581557e756db81677e49e7b929 ">+54/-0</a>
</td>
</tr>
<tr>
<td><strong>MagicLinkForm.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-169e79f10d79f5ff7df3e910f042005f0b139246098ad4a1d2284ed450409b42 ">+158/-0</a>
</td>
</tr>
<tr>
<td><strong>NativeLoginForm.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-46f2e1cd61d0d53b7fde9a0056f78e07a317e8fe60b6b237baa0a13d6cd4a4e0 ">+93/-0</a>
</td>
</tr>
<tr>
<td><strong>ProtectedScreen.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-4c71e8ae5499fc1dda82b020fd0b1f2ce2f972d18298af69d6c3c553742d2ad0 ">+40/-0</a>
</td>
</tr>
<tr>
<td><strong>SocialLoginForm.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-2e46da6c133f57ab9748231ab7985a6704893b6d99c2981007a3cfeaeaee2b79 ">+91/-0</a>
</td>
</tr>
<tr>
<td><strong>index.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-0db4f13bb27522261f48250563b1f9d6e6cd5805c9b89caf2bce331b229a4cca ">+120/-0</a>
</td>
</tr>
<tr>
<td><strong>AsyncStorage.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-7c877423128ee8dadc8bafb89ea8a98b6c1b05130949a6c6d9f3f325a4ccacc1 ">+93/-0</a>
</td>
</tr>
<tr>
<td><strong>AuthProvider.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-72e3c353a156c42747b082a51cf6ab9e59a8b5009f8cb637d9e75fb9c31a7212 ">+110/-0</a>
</td>
</tr>
<tr>
<td><strong>utils.ts</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-4091a110ae026c9f130fb654f47381b503f7a04a1cefc3020831ecb3f0d971ad ">+44/-0</a>
</td>
</tr>
<tr>
<td><strong>mfa.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-477afc36e3e2e62727b11e6d1f77592c89d120d8dfd676a05756dcff7625825a ">+233/-0</a>
</td>
</tr>
<tr>
<td><strong>package.json</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-9d05689c57c194cb000eb7ff276476869ba4ee40a730c23e47016671d7f17521 ">+57/-0</a>
</td>
</tr>
<tr>
<td><strong>tsconfig.json</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-1d10ade4fc1aa2dce579be648ec4420554d626d814d1971a6ec8d59018eb3bc8 ">+15/-0</a>
</td>
</tr>
<tr>
<td><strong>.secrets.example</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-c47199e16c186acba1e9f82c541362d1a6ff05066299b04f61f358d636c3f5d0 ">+16/-0</a>
</td>
</tr>
<tr>
<td><strong>Makefile</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-5c1f8270d9eede9a24fa01068ede09fa13a8fca85eeda73328701b5781500ebe ">+7/-0</a>
</td>
</tr>
<tr>
<td><strong>README.md</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-9a3489ab94ccfa9504db04213d3dbb603c609abf1435e5844d911a03210c3515 ">+29/-0</a>
</td>
</tr>
<tr>
<td><strong>env-up.sh</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-de9763dc0910faec77518ee1eacfdf7a74a257b88e6055a421f37b9ca85d4280 ">+8/-0</a>
</td>
</tr>
<tr>
<td><strong>package.json</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-c602bad387df10731905ad3a49ee0a1ba256823a7e1a4b8ca262fc2f407fea4b ">+13/-0</a>
</td>
</tr>
<tr>
<td><strong>tsconfig.json</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-7635e254c708cde29d62250387c92e13e0d2a7f4180b11ba11b288a7205ed00a ">+11/-0</a>
</td>
</tr>
<tr>
<td><strong>config.yaml</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-4446c65612d85e309d41f928643d796ca2d3970f2ac122559a2c3ced6cfd5a77 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-ebd226650ec2ccfdfa181eb52ac57c538d1258efcdd5eefa6521d661014b0beb ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-f4eec235a2ce395d582333d50a2358e5b4b4758a0d6de2d80bb9b983bb5788c3 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-546c1e26f4f5a58d38dab39ffcd1f1e14ecc6867fd1bece4b6a1dd76a310fe3b ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-a62a136fad466ff5def2190737d76bdb54d3ca7c31d5ed85c0c7b9bdb4adc33a ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-c70655567313cbdee9e332a73651c1e91e33f57fe8a168cb064f4206aca66a20 ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-6a415c40c7cfaa325f53043b71d709714101b9f629f954095bcc64862abc744b ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-9fd0c953500d416a457aa8dfcfb3659a517ee82a964b860b1b8afeb8d09c098f ">+43/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-fd472f081db09177df1548bebdf3141328273c89d3e76b14e01e62bfdfbe2443 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-236393a4f47ed882febf9eb4dd24d5525bc3f20e5e474f5e34ecdff091555965 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-8f0998f6df2005ee1436d74ad2ce2cd1bf91eb053a304160130d24ac64ecfae1 ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-401c18113470ff2d38ad5b98eb3fc4fbb3aa1226c2db81b425a75eec28072607 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-3005f541570bcb879d647fbee1161de8b18981e4b07b8eac07a2250835f605a9 ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-ed0a3cf5dabcbecde2cb9e914d827ca6a92cd0818aff7b45e51e8b5bdeec27df ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-b7ec4c42b59e6f2e23f1ba196befd43d08632b13747b48c6ceaba3d6d1e38209 ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-026c60a66006fe593b8c30cba71ef52d4968f22f004c68bcde8356312de00dce ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-9e40803f1b207ababf5640dec47083efa84dfbc201e968b37730e515081a3101 ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-143e6ac6a6fff08a7d6a68f98cae196d569fe4f30fc0215633c5b653ce349181 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-613a3b66d30c6e4b93257765df35c2d0be6379b6f7ab6f3478b4731c1d21ee96 ">+43/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-6f9c1433fcaabe15051bad4b1d888203d928a30ab2da829c724d54f74ecc818f ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-1727f5ec1686c6079eb733d7f3c5cc60a6f047635241bbf4c63fc5985a78b13e ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-f65964bb501d3baeba4974daaab7c0e6edaec0645860b119633d09424deb995a ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-b911f5720caca8a68bc5ba072284c4d40e1e6b3283a2070c17e84a3d9ba55f79 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-7f1525fdd0e82fd57d181d56acb7828c5838ef635403c560b1dfb88834cc5996 ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-afb123c7657dcf08247b52027d73e4d9dcee51d0cb7e37a1de0f31200c4dc535 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-877b5d458de6de8bb1287075e3eb6a6f8aaba807ddd2db78705640512ce038a6 ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-01135b2530cf6bf46ae7398f1ed4e1a684cbfff1af5fc7dc28eacbd3b1c66caf ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-efa400ab45cf1d64d014c44c6308be2146eb1657c02f8ac7e47c9f71fb34bd4f ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-a7a3eec9c3ce1f9d763a196f2a6af166c07c3c87f05967261847cb40219814fe ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-344d73792431a98012dcfe76f75525a383827ef6f81ab1688b46ba504c34a903 ">+43/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-d01fea24e87babd4f89d3ce27578f96a35578511bebad2c0c2f2689160c0fc63 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-dd12ae6e043b5085514f43691a710f3e65a0c3df93c8847ffd9678c8fae36c08 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-fa998d4e425d971dd546898cac4d1183dd4c10d4d95f19d4f4650d322a58505c ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-1c7f1643eece2cc9fdad3cc032d60826d541d6ad9123c9674ea1de20f4ef429f ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-bd2c5decf64f436932af01d32dc08a35fb745c8aacf97952be9f8925fb94eed4 ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-f4187b87464106220110abbc03675a30e6e5154248be0880f75e7b976419e3ef ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-9d893b6b685830b2cdce2b05a925482b93c5407a7d7e2f2f76d159e55a089d6a ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-05b560e90f649549a7d98396179732b15c4af26b8df6fa5dc3b594b49eb548d0 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-2bef9e62baac1dabaf929cbb9113ad6c5711eb8ba364defebefd9cb9e65703e8 ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-d0ca2cbd1895c7841755f2f8bb109ba17f6018a53f6615ab45445660c947742d ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-2df8e46ef47cbebf23bfe3bba1e963ebc93d1bde4c09d6bc18cafd008810fe11 ">+43/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-21ce711d17cbc8006a363b11e33f0b9009b3c7c7ba6885e9b6fccb64755ac0cd ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-692abf5d4051aa5afc5342cdd36c24879777744678ea1cf6a1a246f2d4cb60ea ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-1443b315ed3da71a04c3d532a46dd6fc837cbf67a9813d6d9b7dcaad4fe8f617 ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-b034b26b4c5e31f76049c742cf80148731a686744a3dd0e440399521ad2491d9 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-52643cd4c649348b055c9659cda85a7570f974c47aaa7af473814cea851fb9a7 ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-c1538ae90cc62160dbcb4be240cef50eaf241b88ce4cb391e5851e8b346d73bf ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-5e695a8cb0adf5ff5a530a922bc8f5b52d00972a99951f2bd690e4f44ccefae8 ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-532dbd0e9c1f0d9d76715a27d174745824cfc68d0f7e499afa7e7e2c150b8d19 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-07b82a5305d283da9c6781f44a88c0ff4131b575fe5ee78a15d69abf6bd91b87 ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-9b9ee0fb48f9f8815980bfe94d7d93d41bb9f1511cad6852a6d4f7e9192faf47 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-d3755355865e28005c894a10824920696b06e64e7c1c8765268908d56aa12261 ">+43/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-d5c3314a4bfa1667da59c2072178f80a4654ac0f10f714b378496a69b6e21dcd ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-a0fda535693ff92e05311d4a63884ae0063e90eadeba20e958a7f9da51016ec5 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-de84bf86da7ce4481559b7037412128a4928746589b35575b9dd811c9f50b391 ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-d17f4b74ce523c6ed011f1d7a3426dcbe430716a50803ee2afdb0f81e5d047fe ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>README.md</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-3266bd27efc68f506fa6c7d9ab41567c63a9fabf3d2d247f5719be551efbf250 ">+23/-0</a>
</td>
</tr>
<tr>
<td><strong>email-verify.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-80cd5ff8c6c8b4f7a588058618ed27b3316304b1786a92ea8ffbb4c3fda96ac5 ">+127/-0</a>
</td>
</tr>
<tr>
<td><strong>password-reset.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-cef64f7d4eab756b7c68477e4fcc323cf8197832c92fd07e65f24dc71c9e3e80 ">+127/-0</a>
</td>
</tr>
<tr>
<td><strong>signin-otp.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-a2a5f9edf38127ed8168a60248e51e6ba1b4026fe7e8366111f28e0502749e6f ">+125/-0</a>
</td>
</tr>
<tr>
<td><strong>signin-passwordless.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-38ef73aa255432a72a30ab3e63da415b26598ce7b267a1e39957c26aefac1d88 ">+127/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-1c287ea5a500ae373cd8c021d07dc0f3994db71077e892d7b5761baf5c2ef037 ">+8/-0</a>
</td>
</tr>
<tr>
<td><strong>Additional files not shown</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3459/files#diff-2f328e4cd8dbe3ad193e49d92bcf045f47a6b72b1e9487d366f6b8288589b4ca "></a></td>
</tr>
</table></details></td></tr></tr></tbody></table>
</details>
___
2025-09-24 14:50:55 +02:00
David Barroso
c6af08fde4
rebase
2025-09-24 14:50:55 +02:00
David Barroso
63d73e639c
chore (nixops): move to the repo ( #3449 )
2025-09-24 14:50:55 +02:00
David Barroso
8112625a0a
chore (docs): update reference documentation for new SDK ( #3448 )
2025-09-24 14:50:55 +02:00
David Barroso
bbf1f6c11d
chore (dashboard): use nhost-js in the workspace ( #3446 )
...
### **PR Type**
Enhancement
___
### **Description**
- Replace @nhost/nhost-js-beta with @nhost/nhost-js
- Update import paths across multiple files
- Modify build process to include nhost-js
- Adjust GitHub workflow configurations
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["@nhost/nhost-js-beta"] --> B["@nhost/nhost-js"]
B --> C["Update imports"]
B --> D["Modify build process"]
B --> E["Update workflows"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>11
files</summary><table>
<tr>
<td><strong>useGithubAuthentication.ts</strong><dd><code>Update import
path for SignInProviderParams</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3446/files#diff-fad4875e0f07391dadcfc7e2dd481cafd5172dbb740c47e56fa75beb271618e1 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>useAppClient.ts</strong><dd><code>Update import path for
NhostClient and related types</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3446/files#diff-0aa83222c0e0eac6f0058070de2b199e5e78514cbba405eb98d3693329a93e65 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>createApolloClient.ts</strong><dd><code>Update import path
for NhostClient type</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3446/files#diff-6a34c5ed967837282403b4cfdf06e13e5effb32da891d682580b8174d047a454 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>AuthContext.ts</strong><dd><code>Update import path for
Session type</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3446/files#diff-1d4349638224a893f63b774d63a586880993cd3f25bbac14ab292ed79c4ccdf2 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>AuthProvider.tsx</strong><dd><code>Update import path for
Session type</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3446/files#diff-f892f5e3f5cbd580bf98d8ee1ed1856db61068f0e1dd44f90d93cbda98007af9 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>NhostContext.ts</strong><dd><code>Update import path for
NhostClient type</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3446/files#diff-329c728bcc3c746e90de94752b414361866cf66e63a5cc4ab7e39f0b5d3a0746 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>NhostProvider.tsx</strong><dd><code>Update import path for
NhostClient type</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3446/files#diff-a55dded8ccfbb390905487d9c46fcbe7dd0285ccf9a040d0b8c04642c39aa642 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>mocks.ts</strong><dd><code>Update import path for Session
type</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3446/files#diff-d1ef12c0f15123bb4e23a0c513fc3d9b5c16af421c71c2909fde3717e09a9d89 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>tokenQuery.ts</strong><dd><code>Update import path for
Session type</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3446/files#diff-c86f0dec25fa37d82ed9765646ffaa9812f3b8b6f36d74056ab9e2dbe3416d0a ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>testUtils.tsx</strong><dd><code>Update import path for
createServerClient</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3446/files#diff-78f29250407edf853a353b48242d3cee59aa5724f38a60bb23bebdfc1ea2f9b5 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>nhost.ts</strong><dd><code>Update import paths for
createClient and session types</code> </dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3446/files#diff-3b1c138cd29a3002d1440ca1e438eeaecef10e3f98958e5985e1a133c0e51314 ">+2/-2</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Configuration
changes</strong></td><td><details><summary>6 files</summary><table>
<tr>
<td><strong>project.nix</strong><dd><code>Modify build process to
include nhost-js package</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3446/files#diff-e456dcfd6231480081b3c9a2a95204bd061853442d5e3a38330625d01cb1a6a1 ">+9/-3</a>
</td>
</tr>
<tr>
<td><strong>codegen_changelog.yaml</strong><dd><code>Update paths
triggering the workflow</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3446/files#diff-9ec3a4e9f1cac55592749fc8a4f8dc140fd6d59340f9e74ee01744e1c5a230e1 ">+6/-1</a>
</td>
</tr>
<tr>
<td><strong>dashboard_changelog.yaml</strong><dd><code>Expand paths
triggering the workflow</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3446/files#diff-f500aa853d257ead7ba7e28d92191a2d18ab32a43c6e121d1e64454513a9de14 ">+24/-6</a>
</td>
</tr>
<tr>
<td><strong>dashboard_checks.yaml</strong><dd><code>Expand paths
triggering the workflow</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3446/files#diff-a8a8acdeffa4fff6d4fabd436cc1c2c377cda640d5028bd3dfcec5ef5df6e33f ">+23/-4</a>
</td>
</tr>
<tr>
<td><strong>nhost-js_changelog.yaml</strong><dd><code>Update paths and
workflow references</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3446/files#diff-f89bdd0c84297962882877ff469844b0541e95cb6437c9247722704af02ca426 ">+3/-4</a>
</td>
</tr>
<tr>
<td><strong>nhost-js_checks.yaml</strong><dd><code>Update paths
triggering the workflow</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3446/files#diff-4d839ed910ed156389855fb82fc583c1bafccef3691c01ba5170bf4dc4fcc19c ">+2/-3</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Dependencies</strong></td><td><details><summary>1
files</summary><table>
<tr>
<td><strong>package.json</strong><dd><code>Replace @nhost/nhost-js-beta
with workspace:^ version</code> </dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3446/files#diff-2d8d55c799cd71f1b35e831f075f8178ed1734c4820a2ad548b4dd24d6938d7c ">+1/-1</a>
</td>
</tr>
</table></details></td></tr></tr></tbody></table>
</details>
___
2025-09-24 14:50:55 +02:00
David Barroso
d37f31fc41
feat (nhost-js): move beta to nhost repo ( #3443 )
...
Enhancement
___
- Add auto-generated API clients for auth, storage, graphql, functions
- Include NhostClient wrapper in `src/nhost.ts`
- Add middleware for session refresh and token attachment
- Provide extensive tests and email template generators
___
```mermaid
flowchart LR
A["createClient"] --> B["AuthClient"]
A --> C["StorageClient"]
A --> D["GraphQLClient"]
A --> E["FunctionsClient"]
B --> F["sessionRefreshMiddleware"]
B --> G["attachAccessTokenMiddleware"]
B --> H["updateSessionFromResponseMiddleware"]
A --> I["NhostClient"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>12
files</summary><table>
<tr>
<td><strong>client.ts</strong><dd><code>Add auto-generated
authentication API client</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-4ef372e972ad443bba16fd25b9b721088c801a0d75db8102062ccbc00838a2f8 ">+3178/-0</a></td>
</tr>
<tr>
<td><strong>client.ts</strong><dd><code>Add auto-generated storage API
client</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-4385e1bb86a6ee228b61e620357d826371939ae8cbe6ef674dcef108e2bf5ab1 ">+1016/-0</a></td>
</tr>
<tr>
<td><strong>client.ts</strong><dd><code>Add auto-generated GraphQL API
client</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-cbd71dd3404704ff9d9c84273572fcac6f041532eef597de8a714249c08559c4 ">+180/-0</a>
</td>
</tr>
<tr>
<td><strong>client.ts</strong><dd><code>Add auto-generated functions API
client</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-6c8d0225c010836d4a88cf726a477821cc64d33c167654bde18178350b4d20f5 ">+141/-0</a>
</td>
</tr>
<tr>
<td><strong>nhost.ts</strong><dd><code>Introduce NhostClient
orchestrating all services</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-68e0323ab180717ff0de35463496ca8eb3b8fc561462459f3c9cf178aa5754d6 ">+433/-0</a>
</td>
</tr>
<tr>
<td><strong>index.ts</strong><dd><code>Export fetch utilities and
types</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-6b258ccabf862a7fca001b4d49b3ea5a33e1cb11f28e773ae579e4ae5670ca21 ">+47/-0</a>
</td>
</tr>
<tr>
<td><strong>middlewareAttachAccessToken.ts</strong><dd><code>Middleware
to attach auth token</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-406a2ec81128d07056432f10bb888dbcaed0cfa5094fbd6133c3a6d5f710315b ">+67/-0</a>
</td>
</tr>
<tr>
<td><strong>middlewareSessionRefresh.ts</strong><dd><code>Middleware to
refresh session token</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-90c69b666c6c6262a3d9dc9a9d9a0f863b12f0167edb49cba1301fc737cbb447 ">+77/-0</a>
</td>
</tr>
<tr>
<td><strong>middlewareUpdateSessionFromResponse.ts</strong><dd><code>Middleware
to persist session from responses</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-a2c5449dd97df2d425297ec7f3b7628f405e3955cf46a9935afd8d1fe0ecdf7d ">+91/-0</a>
</td>
</tr>
<tr>
<td><strong>storage.ts</strong><dd><code>Implement session storage with
subscriptions</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-fc03ab2aa30e3c768df92d95608ddb18eee84b477dd1f1182ba70965e1b8f050 ">+106/-0</a>
</td>
</tr>
<tr>
<td><strong>session.ts</strong><dd><code>Decode and type user JWT
session</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-2292867bf3b27d5d5887a247376b111c659a797dc92df9365d7e6b0bc64a5868 ">+83/-0</a>
</td>
</tr>
<tr>
<td><strong>index.ts</strong><dd><code>Export main SDK entry and URL
generator</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-6c48c1026ef2c9ccad3ce59368254e9278474cf4de5fdc0cf0f8659d10064bf8 ">+55/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>7
files</summary><table>
<tr>
<td><strong>methods_ref.yaml.ts</strong><dd><code>Add codegen test data
for storage methods</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-f5d4c1cc3e0ab95288bfe009f15ca77360a98665cc621b7d299e8316c9e56001 ">+1009/-0</a></td>
</tr>
<tr>
<td><strong>docstrings.test.ts</strong><dd><code>Add GraphQL client
documentation tests</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-c7b7dab18f108770bcff06dc83cc9a34a5ee72c5021a035129a264a968f7d5ff ">+376/-0</a>
</td>
</tr>
<tr>
<td><strong>storage.test.ts</strong><dd><code>Add storage client
integration tests</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-19d55fc74c55988fede4d554a6bc5e052987219d1d5bdadd30ef52d55d1e9d78 ">+258/-0</a>
</td>
</tr>
<tr>
<td><strong>functions.test.ts</strong><dd><code>Add functions client
integration tests</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-513ce67d4002bcaa8dc01d8133ffb3a0c39c430604ba3c2d17ec6c0f7ad6f1a9 ">+169/-0</a>
</td>
</tr>
<tr>
<td><strong>graphql.test.ts</strong><dd><code>Add GraphQL client
integration tests</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-488fd58d97b84872c4b9d160ddd54d17f198d7dfe2e3508c84491bb7b2509e1e ">+199/-0</a>
</td>
</tr>
<tr>
<td><strong>enhancedFetch.test.ts</strong><dd><code>Add enhancedFetch
middleware tests</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-c5e61a5e461b17c08bae579aca5ef65e6b2b333df8c770b4f380f98f24c04e8a ">+214/-0</a>
</td>
</tr>
<tr>
<td><strong>docstrings.test.ts</strong><dd><code>Add main usage
documentation tests</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-b97eb064c8d8cbd8197f40f06117348a994b0f6d42a73d2e0a47cbb226cb4b08 ">+135/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Configuration
changes</strong></td><td><details><summary>1 files</summary><table>
<tr>
<td><strong>vite.config.ts</strong><dd><code>Configure Vite library
build outputs</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-07972b1690be8a3a1bc3d77cd95767678bd3bcf7ef3708287475027606d59fb4 ">+43/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Additional
files</strong></td><td><details><summary>101 files</summary><table>
<tr>
<td><strong>codegen_changelog.yaml</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-9ec3a4e9f1cac55592749fc8a4f8dc140fd6d59340f9e74ee01744e1c5a230e1 ">+16/-0</a>
</td>
</tr>
<tr>
<td><strong>codegen_checks.yaml</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-a0832a0d24c56aeff885d0163d2d0a54af9dd042dfbbe0fd5eba7c9997de7089 ">+71/-0</a>
</td>
</tr>
<tr>
<td><strong>dashboard_changelog.yaml</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-f500aa853d257ead7ba7e28d92191a2d18ab32a43c6e121d1e64454513a9de14 ">+26/-0</a>
</td>
</tr>
<tr>
<td><strong>dashboard_checks.yaml</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-a8a8acdeffa4fff6d4fabd436cc1c2c377cda640d5028bd3dfcec5ef5df6e33f ">+0/-1</a>
</td>
</tr>
<tr>
<td><strong>gen_codeql-analysis.yml</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-1966962fce5fe923e067079cd74ef10ea43a99f60b5c251f33d204fc4d99d1e8 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>gen_schedule_update_deps.yaml</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-ae003e22c1e5cbf186e1749d77dec35965e521d2583ba8cf45fcb1c8f300e177 ">+1/-3</a>
</td>
</tr>
<tr>
<td><strong>nhost-js_changelog.yaml</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-f89bdd0c84297962882877ff469844b0541e95cb6437c9247722704af02ca426 ">+34/-0</a>
</td>
</tr>
<tr>
<td><strong>nhost-js_checks.yaml</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-4d839ed910ed156389855fb82fc583c1bafccef3691c01ba5170bf4dc4fcc19c ">+84/-0</a>
</td>
</tr>
<tr>
<td><strong>wf_build_artifacts.yaml</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-63d6f3e2e5894df4d88cf2c82b3d0c90e7b0b7c8ca9da25a3d46f35f15270fb0 ">+1/-2</a>
</td>
</tr>
<tr>
<td><strong>wf_check.yaml</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-c2ecea6736037ba6304681d744d612d44d7681788d2fbc58ce223cf52ecefa43 ">+1/-2</a>
</td>
</tr>
<tr>
<td><strong>wf_check_changelog.yaml</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-099ad6009f7d08d3b6534abe4abf8c8a75f6c3761d4117751fc35093affd7456 ">+64/-0</a>
</td>
</tr>
<tr>
<td><strong>wf_dashboard_e2e_staging.yaml</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-a7fa29d56c482bdb946a35ffa66002731a16f69b2278e5f10244051fd9ff0e3a ">+1/-2</a>
</td>
</tr>
<tr>
<td><strong>wf_deploy_vercel.yaml</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-2cefabe2c777ef34c091ee0f8d44ece60e4121814fa8cc38fe05d929fea197bc ">+1/-2</a>
</td>
</tr>
<tr>
<td><strong>.golangci.yaml</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-9917ddc9f1c3304218f7269265b746d997c5c0615478177b5fceecd33ef47cb5 ">+94/-0</a>
</td>
</tr>
<tr>
<td><strong>README.md</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-6d79915225209d5e0cfd0fab415e6b47444150b9325de5ec7fc711e17b83eba1 ">+29/-0</a>
</td>
</tr>
<tr>
<td><strong>README.md</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-4d443b583548a9a0ad49d07bf78df8b48c80a5e9b0d34b9ad3e0ea47afd51843 ">+58/-0</a>
</td>
</tr>
<tr>
<td><strong>base.json</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-a30fff7b85a22862eb523e2235373014ce9d8412cc38f07af6f6e544338fb8d8 ">+34/-0</a>
</td>
</tr>
<tr>
<td><strong>frontend.json</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-13a93670eb5748484a6233ccb1d6823fcb2a98adc9cd43e5c41ed45b59a7623c ">+25/-0</a>
</td>
</tr>
<tr>
<td><strong>library.json</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-76d2855ab23ffd9b57974823f228e96ae4edc664ce3f409ed70a467d3e4f6ecd ">+30/-0</a>
</td>
</tr>
<tr>
<td><strong>node.json</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-122859777dca6e7ce0d8c8ea00fc2d64a9568cfb2646fc9ca22741169445988c ">+23/-0</a>
</td>
</tr>
<tr>
<td><strong>vite.json</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-b07613487a22297799a78f6acfbbdb31013138490f500f9e5e57c0393e8b6773 ">+14/-0</a>
</td>
</tr>
<tr>
<td><strong>project.nix</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-e456dcfd6231480081b3c9a2a95204bd061853442d5e3a38330625d01cb1a6a1 ">+2/-2</a>
</td>
</tr>
<tr>
<td><strong>flake.nix</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-206b9ce276ab5971a2489d75eb1b12999d4bf3843b7988cbe8d687cfde61dea0 ">+17/-1</a>
</td>
</tr>
<tr>
<td><strong>go.mod</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-33ef32bf6c23acb95f5902d7097b7a1d5128ca061167ec0716715b0b9eeaa5f6 ">+17/-2</a>
</td>
</tr>
<tr>
<td><strong>go.sum</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-3295df7234525439d778f1b282d146a4f1ff6b415248aaac074e8042d9f42d63 ">+27/-1</a>
</td>
</tr>
<tr>
<td><strong>node_modules.nix</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-0e19dd1f3b075831004f05cbbad45f86cb31ea96e46cab75840719782e4a8977 ">+14/-3</a>
</td>
</tr>
<tr>
<td><strong>package.json</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-7ae45ad102eab3b6d7e7896acd08c427a9b25b346470d7bc6507b6481575d519 ">+16/-3</a>
</td>
</tr>
<tr>
<td><strong>.prettierignore</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-23eddcec7f8cea827569c56f44bf9281373cfaf6ba044c41933e67bac086e553 ">+3/-0</a>
</td>
</tr>
<tr>
<td><strong>CHANGELOG.md</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-b6200685d3e776a9e74d320e54959fe992d1a3c534df1634013979b6685438ba ">+29/-0</a>
</td>
</tr>
<tr>
<td><strong>Makefile</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-a4285b4628ee4e3a8e950a7091d4769d9fc0f89783483cff01382a468f583eb0 ">+17/-0</a>
</td>
</tr>
<tr>
<td><strong>README.md</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-32a1491b95260b677b05569fe11db6fe14aa7b380c7ef6422041949311f103a2 ">+88/-0</a>
</td>
</tr>
<tr>
<td><strong>auth.yaml</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-0fd48ea2c8ccee113366e748ddb97e75dd5eb9bc58385ce6b1ac1578dcbc54fb ">+2548/-0</a></td>
</tr>
<tr>
<td><strong>storage.yaml</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-5aabac204944eab4fe6fdd2e6c47c215f74df04347f737cb6c68c10b24c3de2e ">+1186/-0</a></td>
</tr>
<tr>
<td><strong>.secrets.example</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-825388a18ee7fa60325f209d3c4141df481e1245ef2d944482b8b84a95611533 ">+4/-0</a>
</td>
</tr>
<tr>
<td><strong>crash.ts</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-38c3348a81607f21101d8ecfc1cbaee87f9716a2e54c9be5fa301057f40bb03a ">+5/-0</a>
</td>
</tr>
<tr>
<td><strong>echo.ts</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-70d2dbad876749b22eaa28784c7796bea615e8a4e17810bf36da113dccab1a03 ">+49/-0</a>
</td>
</tr>
<tr>
<td><strong>helloworld.ts</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-b37568d59ded3a9cabaa4d97c80e5dd1dcc2716903d9e10171cc7ec4f3fb0592 ">+19/-0</a>
</td>
</tr>
<tr>
<td><strong>package.json</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-6310cb8549b62daf0fd2e22c5549e5cd777483509808651c44b99368dbed7e26 ">+16/-0</a>
</td>
</tr>
<tr>
<td><strong>tsconfig.json</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-534d28a667fcd2c10da5a5c1bfccbeca59d82555ee6db474dd3a1743d82eebb3 ">+7/-0</a>
</td>
</tr>
<tr>
<td><strong>config.yaml</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-0774c4ff3547464cf6fcb5074b6c62e0b03e5cf2c17caf984e9016f762a4b15a ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-9a02c811fff048cc400216bcdfc59c8202818855ea2c35797d1459c50ac9562d ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-7229d13b3c44f9d7c70e9c70aff01e065a411441d507faa33c34b1df9202581c ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-311e8703438930dd999b29ac6ce901e9f19688d8f341cacc0630880e2b7e7cf1 ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-8ff0e787057342c2674d033c1f329c6b7d4b983e67bfa7028c9bd7dbd6f5ef95 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-85a0fbd068e697a07716b2f327589c7688a197538d7feae9d664fdd628f1ee4c ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-a8acfab7fce4f1838b46a1711f204a8b04c112d9098039952cf3a8c3c4d898ea ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-98bb8bf7ea61df723bb0fbe205c9144ef84852e7010347a90fdbc349ade9db9d ">+43/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-d52770dd6b829b6135e07ee3405f67a28a5b827bad3d601e88e5c8583ece51f6 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-95f78669412b72ce1ee651e1dd5c329288f2d9c67fffe20788302e1c8e9e955a ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-63bfa6f9d4bb884071932aa283cdaf3563c2a177b4060aafd99075acfa05f38f ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-d531e84efb5e05786d850aa6e212c16f89fb233af5bac7d0c4113c6250c144b6 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-98076a584be7db55cfd4d92ec3f20d1f88d9d3d881e81deccef383cbfd4a4047 ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-63827d0319a9d1c10474b3903df66ae1ad1affa8c9fe205ea24e4e4e1ff40654 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-e28f2c9ba5d6848999325e90fad5beb479581a374be81ce3f369de08c811a1f5 ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-526c658236db49eb75e18f36ef172c56ff543ac1b0737860c866f8b52d9bd565 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-c28e94423ba8964f22a65c32d734970fff83b141c987d1bf674fe5d5501a6a06 ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-9479f2a3dbbf14571470fecfe9bd5e9c29879e6087f543de618f5c1f41bf60c7 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-0535f56f36dee6fb906aab7c8f253f94583debf74ee6f3f993c4f71c8f641a11 ">+43/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-ec9321ee05ebec833b58833792edd57b2d884530bd4b27ab475883badcc98470 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-49fde11f74c8c34a9665206f7f5bb5f08fabb997b4c455c4780328e0df472d47 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-47a77657f3ac07d413eb85a8d174991bb20090ace909ae7f83081ccbae3974b6 ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-1d0f311231edfc6d4484bb8d2b9dbe0dd40a923071f4ebd5e8db900064919987 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-df66051d6fa91604c084d7bb995ea734474ee7cf9dfd239e1e0d52a7814f89c1 ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-b33b21342a328ed795793feb82655b2e7753eddc1f017519ece05053e4b3af54 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-a608203615c0a0aef08d8d3ac2c848e4491e81c158e9fa107a787149500304d7 ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-1ce8a9f999a052d4af99c53980b1f6e52324664f4651d5b7e0665312f133b3b7 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-5e8b522bf33bd3cba00ae0d555e24c679ce3bbc4869d930fe850529f3b7489c3 ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-6994443cfe2326b3d000ae3d8c5422a51f708f9cd2b49bf3f6c2cef6b9d28e9a ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-e91a5315961a4d59925c55a913d866422d0e80dde508223c1e7eee40010319ab ">+43/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-e18bf884ce429cca39399b1ad533cad88c83316b4ada5263096f37ba86242aaf ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-96f4d39c000ecf61576d638efe27813ca3050a8d8d663e7c191362a48f42d495 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-7637885d255e32f85e9e2bc799084249b1c3b46e46913b9cd3b8ecbb3e9ba9b0 ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-efc96bb60e6337122c86898884dc55ef5a89da7033e388775ef719346a7d4220 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-cf9e7d4ccffeb2a75ac9b592b496c32d3fe55ef8924cf727e2833b80dc84e561 ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-bb0618c7dedf0d6f47b3d6d98d8ab4ec5a9c37781958fb303d9f24c1ab958fe4 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-c3977f6b1de50fa3322f7479faef37b4fdfbf2f5845c67cf212e911539bc3b9e ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-f31b21b32a2c84d5b8cf306703f8ae9a946dc1c624d532e37b8599da049cc69e ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-ea310f1bd63e356ddd1ffa017aaac70cfae5da292b67aac4fe79c1b777319f04 ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-7669f7091403361bb88442de48c9e2a9658e154bb5692102b0e82319e6337f39 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-6ba271e14c45373f8cef9187ebd6ffd0ad9c44e238532ccf63cbe826249a19b1 ">+43/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-6b326112e1aa4cfbc000b91c3b6378bc8ae36e48840a081a830c94c51f8a4500 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-2c5702df1f1375c48883364c0f2fb986b250be8ce1556b8d029ddcd55ff90714 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-c9ab69c5172e80137a2e77ba58394790ed15824f094e5504c876d90e441a9d28 ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-2bd5c6d47472860c78b7fece329c2c2f77004943090f7b1844068e5400b3a0d2 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-e095798c1d0a20b895153394a89384a7e76a4be72127cf820a5b789c2427e9cf ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-604842630cf27fec737fe06d8e10d867b4bfde7847784840cdc3d8637f3c3116 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-e062419844aa5d1efff234153f0b16e72a267631c878fcd9af4de1a25f4bbb1a ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-55e24992a9892fd6d5cf6eeacd42d43ea6ade99977b82ce345a6409201566b2a ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-3f884d5151b3f8f8e22f7cf60abb36474959597e92bb056e33a292c1cc6be597 ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-6a3f00a85e4f72b8ed55225102d0863539e73f876f6d29ec60f99fead969d883 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-6b4505927b8e2abbf0b0925d981e1703cf5ea557b1534c07dbf912310d391021 ">+43/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-28828a2828bc3e41f9956a22e695d0f1e96a997db47106b83886a4ecd2e1354a ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-09f683d3491ec520132dbbe2610bfa59c5ed81682b5175b347cd11ad1019ae9f ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>body.html</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-d1b04ce22cfa7bf33673c06ff30673fd18cff5467093c3f1e4435a08136aaeb1 ">+52/-0</a>
</td>
</tr>
<tr>
<td><strong>subject.txt</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-2d991a9036664feca0f30b513c231551ba7d0667809410b8a6703a7298ba2b2f ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>README.md</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-db5537429694d86082c34ac97881b7811aa1c79ee496dd79c248494698ba3b83 ">+23/-0</a>
</td>
</tr>
<tr>
<td><strong>email-confirm-change.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-0bf93b57a4a18ccfa08b72816a7eea2c14c00ce92d9a07249405805500c8bb45 ">+129/-0</a>
</td>
</tr>
<tr>
<td><strong>email-verify.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-67bf177366a960b6f068b1c8802f5c200b6ce6069f8d5e61c632aa4191b8adca ">+127/-0</a>
</td>
</tr>
<tr>
<td><strong>password-reset.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-6e2461fe97310e38e2e4eed0e20570c5a51636989b95c646661f7bc04b37dd5d ">+127/-0</a>
</td>
</tr>
<tr>
<td><strong>render-emails.ts</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-2bc9d596f730e2c72f02a1f57d6636136f898d81396493d1fcb803cae3f7351e ">+82/-0</a>
</td>
</tr>
<tr>
<td><strong>Additional files not shown</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3443/files#diff-2f328e4cd8dbe3ad193e49d92bcf045f47a6b72b1e9487d366f6b8288589b4ca "></a></td>
</tr>
</table></details></td></tr></tr></tbody></table>
</details>
___
2025-09-24 14:50:55 +02:00
David Barroso
0367dfae00
feat (general): clean repository ( #3432 )
...
Co-authored-by: robertkasza <167509084+robertkasza@users.noreply.github.com >
Co-authored-by: Nuno Pato <nunopato@gmail.com >
Co-authored-by: David BM <correodelnino@gmail.com >
2025-09-24 14:50:55 +02:00
github-actions[bot]
6ad1cfcb13
chore: update versions ( #3476 )
...
This PR was opened by the [Changesets
release](https://github.com/changesets/action ) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.
# Releases
## @nhost/dashboard@2.37 .0
### Minor Changes
- cc98f33 : fix: rename filename typo
### Patch Changes
- 25c0ffa : fix (dashboard): Parse tablename correctly into SQL query
- 8812d9d : feat (dsashboard): Simplyfy column and row controls in
database view
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-09-23 15:14:19 +02:00
robertkasza
25c0ffa83b
fix (dashboard): Parse tablename correctly into SQL query ( #3483 )
...
### **PR Type**
Bug fix, Tests
___
### **Description**
- Fix SQL identifier placeholder to parse table names correctly
- Add `toPascalCase` utility and use in E2E tests
- Update create-table test to assert `id` column header
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["toPascalCase utility"] --> B["create-table.test uses PascalCase"]
B --> C["prepareTable creates table"]
C --> D["fetchTable uses %I placeholders"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Tests</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>create-table.test.ts</strong><dd><code>Update E2E test
to use PascalCase table names</code>
</dd></summary>
<hr>
dashboard/e2e/database/create-table.test.ts
<ul><li>Imported <code>toPascalCase</code> from utils<br> <li> Switched
tableName generation from snakeCase to PascalCase<br> <li> Added
assertion for <code>id</code> column presence</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3483/files#diff-1e7aa9f3e379ca90a94b82c14be48e2c98a722d85ee1b0785a082b7076d8e58c ">+3/-2</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>utils.ts</strong><dd><code>Add toPascalCase utility
function</code>
</dd></summary>
<hr>
dashboard/e2e/utils.ts
<ul><li>Introduced <code>toPascalCase</code> function for string
conversion<br> <li> Default divider set to space for word splitting</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3483/files#diff-490448aa83585151d8c61d698273c43486fdcac6a5d28a9b7e5be2729bbffd12 ">+7/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Bug fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>fetchTable.ts</strong><dd><code>Use identifier
placeholders in SQL query generation</code>
</dd></summary>
<hr>
dashboard/src/features/orgs/projects/database/dataGrid/hooks/useTableQuery/fetchTable.ts
<ul><li>Replaced <code>%1$s</code> with <code>%1$I</code> identifier
placeholders<br> <li> Ensures proper REGCLASS SQL parsing for table
names</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3483/files#diff-a58cb7660972ff84991cdd9777de5cf0834485072cbd421f8809638227c36820 ">+1/-1</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Configuration
changes</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>mean-cheetahs-greet.md</strong><dd><code>Add changeset
for SQL table parsing fix</code>
</dd></summary>
<hr>
.changeset/mean-cheetahs-greet.md
<ul><li>Added changeset entry for dashboard patch version<br> <li>
Documented SQL table name parsing fix</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3483/files#diff-601e4fafd8d53cc5c99ed7e520180b2310cfa3ac5eb0d256c28cd5f7d8aaedc3 ">+5/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-09-23 10:30:55 +02:00
David BM
cc98f33440
fix (dashboard): typo in test filename ( #3482 )
...
### **PR Type**
Tests
___
### **Description**
- Add comprehensive tests for `DeploymentServiceLogsHeader`
- Mock project hook and GraphQL service label query
- Simulate user selecting service and submitting regex
- Validate `onSubmit` callback invocation
___
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Tests</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>DeploymentServiceLogsHeader.test.tsx</strong><dd><code>Add
DeploymentServiceLogsHeader tests</code>
</dd></summary>
<hr>
dashboard/src/features/orgs/projects/deployments/components/DeploymentServiceLogs/DeploymentServiceLogsHeader.test.tsx
<ul><li>New test file for <code>DeploymentServiceLogsHeader</code>
component<br> <li> Mocks <code>useProject</code> hook and GraphQL
<code>useGetServiceLabelValuesQuery</code><br> <li> Sets up MSW server
and environment variables<br> <li> Simulates UI interactions and asserts
<code>onSubmit</code> call</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3482/files#diff-952e9bf5cf78ce4bfc41a326f001a2fc4d781571bfa6ee8e441d3c50ff6ad495 ">[link]</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-09-19 18:12:02 +02:00
robertkasza
8812d9dcaf
feat (dsashboard): Simplyfy column and row controls in database view ( #3474 )
...
### **PR Type**
Enhancement
___
### **Description**
- Remove insert column functionality from DataBrowser grid
- Simplify controls: only "Insert row" button remains
- Clean DataGridBody: remove row placeholders and column insertion
- Remove unused props and imports across components
___
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>DataBrowserGrid.tsx</strong><dd><code>Remove insert
column control from DataBrowserGrid</code>
</dd></summary>
<hr>
dashboard/src/features/orgs/projects/database/dataGrid/components/DataBrowserGrid/DataBrowserGrid.tsx
<ul><li>Removed <code>onInsertColumnClick</code> prop in
<code>controls</code><br> <li> Kept only <code>onInsertRowClick</code>
handler</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3474/files#diff-5910fd8730fbe65c60aa5f54031989a7868e944d5958f69535e5684b72ca1396 ">+0/-3</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>DataBrowserGridControls.tsx</strong><dd><code>Simplify
insert controls to only row</code>
</dd></summary>
<hr>
dashboard/src/features/orgs/projects/database/dataGrid/components/DataBrowserGridControls/DataBrowserGridControls.tsx
<ul><li>Removed dropdown menu and <code>onInsertColumnClick</code>
logic<br> <li> Simplified UI to single "Insert row" button<br> <li>
Cleared unused imports (<code>Dropdown</code>, <code>RowIcon</code>,
<code>ColumnIcon</code>)</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3474/files#diff-640ce3e15c8d5f35d8bbe74792c59493afe5bc69873d2a40f81233da2b02661c ">+7/-65</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>DataGrid.tsx</strong><dd><code>Remove onInsertRow prop
forwarding</code>
</dd></summary>
<hr>
dashboard/src/features/orgs/projects/storage/dataGrid/components/DataGrid/DataGrid.tsx
- Deleted forwarding of `onInsertRow` prop to `DataGridBody`
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3474/files#diff-3bc6476aed14d8e4f26134fa452d22c41b6d3ecb0989871a8a99230a82496474 ">+0/-1</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>DataGridBody.tsx</strong><dd><code>Remove row insertion
placeholders</code>
</dd></summary>
<hr>
dashboard/src/features/orgs/projects/storage/dataGrid/components/DataGridBody/DataGridBody.tsx
<ul><li>Deleted <code>InsertPlaceholderTableRow</code> component and
row-insert code<br> <li> Simplified empty state rendering without insert
slots<br> <li> Removed unused imports and key-generation logic</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3474/files#diff-e5cdb81b2c99dbd7b9a669a63ed503f6964e9c0bc91ca2c0e61df5334eaa7a1b ">+61/-143</a></td>
</tr>
<tr>
<td>
<details>
<summary><strong>DataGridHeader.tsx</strong><dd><code>Drop column
insertion button</code>
</dd></summary>
<hr>
dashboard/src/features/orgs/projects/storage/dataGrid/components/DataGridHeader/DataGridHeader.tsx
<ul><li>Removed insert column button and <code>PlusIcon</code>
import<br> <li> Cleaned up unused <code>Box</code> and
<code>Button</code> imports</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3474/files#diff-3f5f16ea95a730255a07806c96b55fd4946c92eebcb869cdf83ad92bfe034b4c ">+0/-18</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Configuration
changes</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>nine-mayflies-explain.md</strong><dd><code>Add patch
changeset</code>
</dd></summary>
<hr>
.changeset/nine-mayflies-explain.md
- Added patch changeset metadata for `@nhost/dashboard`
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3474/files#diff-c48e1f5b21fee902cf64b303567874f26103414d9c1e8a51d9e09d9600eba3ab ">+5/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-09-17 14:42:05 +02:00
github-actions[bot]
bf17981596
chore: update versions ( #3453 )
...
This PR was opened by the [Changesets
release](https://github.com/changesets/action ) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.
# Releases
## @nhost/dashboard@2.36 .0
### Minor Changes
- a30da08 : feat (dashboard): add custom types to column types
### Patch Changes
- 73a7ba8 : fix (dashboard): Show errors in row permission rule form
- 397bfc9 : fix (dashboard): Parse foreign key relations correctly
- 2f4b376 : fix (dashboard): allow permission variables with in operator
- 88836f3 : fix (dashboard): use correct fallback endpoint for migration
in the CLI
- ba3c49e : fix (dashboard): Show nested relationships in row permissions
- 92e71a6 : fix: minor fixes to csp
- 81716d9 : fix (dashboard): Show validation error on save when editing
database columns
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-09-16 13:41:37 +02:00
robertkasza
2f4b3768c7
fix (dashboard): allow permission variables with in operator ( #3461 )
...
### **PR Type**
Bug fix, Tests, Enhancement
___
### **Description**
- Refactor FancyMultiSelect to controlled component
- Enhance RuleValueInput `_in` operator for system variables
- Add unit tests for RuleValueInput variable selection
- Include `Allowed-Ids` in permission variables list
___
### Diagram Walkthrough
```mermaid
flowchart LR
FV["Form value"]
GD["getDefaultValueForMultiSelect"]
FMS["FancyMultiSelect"]
OC["handleOnChange"]
SV["setValue"]
FV -- "parsed by" --> GD
GD -- "initializes" --> FMS
FMS -- "user selects" --> OC
OC -- "updates" --> SV
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>fancy-multi-select.tsx</strong><dd><code>Make
FancyMultiSelect controlled and test-friendly</code>
</dd></summary>
<hr>
dashboard/src/components/ui/v3/fancy-multi-select.tsx
<ul><li>Export <code>Option</code> type<br> <li> Use controlled
<code>value</code> instead of <code>defaultValue</code><br> <li> Sync
selected via <code>useEffect</code> on <code>value</code> changes<br>
<li> Add <code>data-testid</code> to badge span</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3461/files#diff-6e6a7965a2c8e30e9a2c021a5009ff79e71de73892b86a3468d3474163dfeb03 ">+13/-5</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>getAllPermissionVariables.ts</strong><dd><code>Add
Allowed-Ids system variable</code>
</dd></summary>
<hr>
dashboard/src/features/orgs/projects/permissions/settings/utils/getAllPermissionVariables/getAllPermissionVariables.ts
- Include `Allowed-Ids` as system variable
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3461/files#diff-9973106a26aa99d744772d8dfb09281b3f4f2cdaa3f865b2510f47fb9061089c ">+6/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Bug fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>RuleValueInput.tsx</strong><dd><code>Enhance
RuleValueInput for in-operator variables</code>
</dd></summary>
<hr>
dashboard/src/features/orgs/projects/database/dataGrid/components/RuleGroupEditor/RuleValueInput.tsx
<ul><li>Import <code>Option</code> type<br> <li> Add
<code>getDefaultValueForMultiSelect</code> util<br> <li> Implement
<code>handleOnChange</code> for permission variables<br> <li> Switch
<code>FancyMultiSelect</code> to use controlled props</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3461/files#diff-e3198b245b5963e81e4566758b7d60c8d2784a7ca0ad0b17b354b33074ef1bb0 ">+57/-11</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Tests</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>RuleValueInput.test.tsx</strong><dd><code>Add tests for
RuleValueInput selection logic</code>
</dd></summary>
<hr>
dashboard/src/features/orgs/projects/database/dataGrid/components/RuleGroupEditor/RuleValueInput.test.tsx
<ul><li>Add tests for <code>_in</code> operator variable selection<br>
<li> Mock project and permissions hooks<br> <li> Verify system and
custom variable behaviors</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3461/files#diff-cbb7789d45602230164e65506d0b2132b420b0cddead70ab8b012b0bb5897162 ">+170/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Miscellaneous</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>signup.tsx</strong><dd><code>Cleanup console logs in
signup page</code>
</dd></summary>
<hr>
dashboard/src/pages/signup.tsx
- Remove debugging `console.log` statements
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3461/files#diff-fc2b5989e3bbafda1d3d8b2317d24c39ef2b8cec0c4dc410170fa2da13464f68 ">+0/-4</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Configuration
changes</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>dry-snails-type.md</strong><dd><code>Add changelog for
permission variables fix</code>
</dd></summary>
<hr>
.changeset/dry-snails-type.md
- Add changeset entry for dashboard patch
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3461/files#diff-ccdfc53a10fb172936e239d895569a94a5413d1f8a6d1d81270bcd4051ba64e1 ">+5/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-09-16 13:38:25 +02:00
robertkasza
73a7ba82ae
fix (dashboard): Show errors in row permission rule form ( #3471 )
...
### **PR Type**
Bug fix, Tests, Enhancement
___
### **Description**
- Improve row permission form error handling
- Integrate `FormField` for validation feedback
- Update tests using `TestUserEvent.fireClickEvent`
- Extend MSW mocks for metadata and table queries
___
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Tests</strong></td><td><details><summary>5
files</summary><table>
<tr>
<td><strong>TransferProjectDialog.test.tsx</strong><dd><code>Replace
`asyncFireEvent` with `TestUserEvent.fireClickEvent`</code></dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3471/files#diff-d4ebdb8af76a7c9e73606708718c3448445545259ad553d73b6d322408e3eb8c ">+3/-16</a>
</td>
</tr>
<tr>
<td><strong>RowPermissionSection.test.tsx</strong><dd><code>Add
comprehensive tests for row permissions section</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3471/files#diff-2a32fbb9eda12ec8eb93746c5c8b171e8ae20d18e661a5e2eb0c4996fee8376b ">+211/-0</a>
</td>
</tr>
<tr>
<td><strong>hasuraMetadataQuery.ts</strong><dd><code>Add
`hasuraColumnMetadataQuery` mock endpoint</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3471/files#diff-2828f4a1163f0d281abf2517e76fc9dd393bb870478aea874019a42f9c4b7ac3 ">+260/-0</a>
</td>
</tr>
<tr>
<td><strong>tableQuery.ts</strong><dd><code>Extend actor table mock with
column and row data</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3471/files#diff-fdb6ad2a7e58c374f3a6772219e7f7e72ca2927def74ec75893b064caba12639 ">+40/-0</a>
</td>
</tr>
<tr>
<td><strong>testUtils.tsx</strong><dd><code>Add `fireClickEvent` helper
to `TestUserEvent`</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3471/files#diff-78f29250407edf853a353b48242d3cee59aa5724f38a60bb23bebdfc1ea2f9b5 ">+13/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>4
files</summary><table>
<tr>
<td><strong>ColumnAutocomplete.tsx</strong><dd><code>Add `className`
prop and merge via `cn`</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3471/files#diff-c89efa530042890e7d6277c2e3c763cb7c9b9fc1d7c14c62839f4cf7c42528f7 ">+6/-1</a>
</td>
</tr>
<tr>
<td><strong>RowPermissionsSection.tsx</strong><dd><code>Refactor filter
logic and default row check type</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3471/files#diff-663956d9adae1f6255151599b1cbd6ad03fea1246e87ab89329fcddcdbec2b20 ">+12/-28</a>
</td>
</tr>
<tr>
<td><strong>RuleEditorRow.tsx</strong><dd><code>Wrap column input with
`FormField` and error styling</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3471/files#diff-a7a1d2aa882735a2b9cfb41e95b05c6777d706570eec5deec6bf5d2381a51252 ">+47/-28</a>
</td>
</tr>
<tr>
<td><strong>RuleValueInput.tsx</strong><dd><code>Introduce
`RuleInputWrapper` with validation messages</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3471/files#diff-e3198b245b5963e81e4566758b7d60c8d2784a7ca0ad0b17b354b33074ef1bb0 ">+43/-6</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Bug
fix</strong></td><td><details><summary>1 files</summary><table>
<tr>
<td><strong>OperatorComboBox.tsx</strong><dd><code>Reset value and clear
errors on operator change</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3471/files#diff-bf3aa91fe39fe48522262f0f908b7d151ce75cb005ec50fe38c2429d0e81ddb1 ">+4/-5</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Configuration
changes</strong></td><td><details><summary>1 files</summary><table>
<tr>
<td><strong>vitest.config.ts</strong><dd><code>Enable silent logging in
Vitest config</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3471/files#diff-09548f3bfb7c005a1d2f3d9d7f1f5d00c608d821572250400d92eda63ae7251a ">+1/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>1
files</summary><table>
<tr>
<td><strong>brave-fans-sit.md</strong><dd><code>Add changeset for
dashboard patch release</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3471/files#diff-25c255427ffb291f4e9d7ab56622f3fee8bc9ea2ca0b38242d9b7e41273bea88 ">+5/-0</a>
</td>
</tr>
</table></details></td></tr></tr></tbody></table>
</details>
___
2025-09-16 10:45:39 +02:00
robertkasza
ba3c49e443
fix (dashboard): Show nested relationships in row permissions ( #3473 )
...
### **PR Type**
Bug fix, Tests, Enhancement
___
### **Description**
- Add MSW mock for nested relationship metadata
- Add test verifying nested relationships display
- Simplify `CommandList` rendering logic
- Introduce `fireClickEvent` helper in tests
___
### Diagram Walkthrough
```mermaid
flowchart LR
metadata["\"MSW nested metadata mock\""]
component["\"ColumnAutocomplete component\""]
ui["\"Displays nested relationship options\""]
metadata -- "provides nested data" --> component
component -- "renders options" --> ui
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Tests</strong></td><td><details><summary>4
files</summary><table>
<tr>
<td><strong>ColumnAutocomplete.test.tsx</strong><dd><code>Add nested
relationship test and router mock</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3473/files#diff-2da9237ad932fa46d684a3c8fe3afb6686af561e136e6aea5fa588f3979e131e ">+76/-12</a>
</td>
</tr>
<tr>
<td><strong>hasuraMetadataQuery.ts</strong><dd><code>Add
`hasuraRelationShipsMetadataQuery` mock</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3473/files#diff-2828f4a1163f0d281abf2517e76fc9dd393bb870478aea874019a42f9c4b7ac3 ">+98/-0</a>
</td>
</tr>
<tr>
<td><strong>tableQuery.ts</strong><dd><code>Add `town` table MSW mock
data</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3473/files#diff-fdb6ad2a7e58c374f3a6772219e7f7e72ca2927def74ec75893b064caba12639 ">+42/-1</a>
</td>
</tr>
<tr>
<td><strong>testUtils.tsx</strong><dd><code>Add `fireClickEvent` helper
method</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3473/files#diff-78f29250407edf853a353b48242d3cee59aa5724f38a60bb23bebdfc1ea2f9b5 ">+13/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>1
files</summary><table>
<tr>
<td><strong>ColumnAutocomplete.tsx</strong><dd><code>Simplify
CommandList and support nested relationships</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3473/files#diff-c89efa530042890e7d6277c2e3c763cb7c9b9fc1d7c14c62839f4cf7c42528f7 ">+45/-85</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Formatting</strong></td><td><details><summary>1
files</summary><table>
<tr>
<td><strong>useTableQuery.ts</strong><dd><code>Remove extra blank line
in hook implementation</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3473/files#diff-13ce245133be3c4bbcd9fe302cacd42e3e8472dc57d8ce27371e59818240d942 ">+1/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Configuration
changes</strong></td><td><details><summary>1 files</summary><table>
<tr>
<td><strong>new-eels-run.md</strong><dd><code>Add changeset for nested
relationships fix</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3473/files#diff-5ed65e898211e2d9e7614fed8b4bccc0c501b0767a564baaace82ca7bd185d36 ">+5/-0</a>
</td>
</tr>
</table></details></td></tr></tr></tbody></table>
</details>
___
2025-09-16 08:33:08 +02:00
robertkasza
88836f3b1f
fix (dashboard): use correct fallback endpoint for migration in the CLI ( #3472 )
...
### **PR Type**
Bug fix
___
### **Description**
- Remove `/apis/migrate` suffix in migration fetch URLs
- Update default fallback Hasura migrations API endpoint
- Add changeset entry for migration endpoint fix
___
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><details><summary>9 files</summary><table>
<tr>
<td><strong>createColumnMigration.ts</strong><dd><code>Remove
`/apis/migrate` suffix from fetch URL</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3472/files#diff-806e4808866ca6ba76c359ef8ae68346cd83f8bec034f6057210b86c2cfd11ec ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>createTableMigration.ts</strong><dd><code>Remove
`/apis/migrate` suffix from fetch URL</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3472/files#diff-e033710673c18c205655684e8a930963aff2363f314faa8d7dd36bd645e8a3f6 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>deleteColumnMigration.ts</strong><dd><code>Remove
`/apis/migrate` suffix from fetch URL</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3472/files#diff-b0c2fc34ff94579ef93ee14aae60a6d2df3d2986014d8740f56508f321dec8cb ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>deleteTableMigration.ts</strong><dd><code>Remove
`/apis/migrate` suffix from fetch URL</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3472/files#diff-2e192aca09dca7ff2a9cb105daa94330629e1fccfdf9a1bdee9fdba510c23abd ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>managePermissionMigration.ts</strong><dd><code>Remove
`/apis/migrate` suffix from fetch URL</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3472/files#diff-6618ac02347ee4e55aaeacece7894330d86f9716d8fbd9a907a11c9a977461d2 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>trackForeignKeyRelationsMigration.ts</strong><dd><code>Remove
`/apis/migrate` suffix from fetch URL</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3472/files#diff-8562c65950e2ff578d8db135790713bbff282ff6a61ff98bb5558a51944927d2 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>trackTableMigration.ts</strong><dd><code>Remove
`/apis/migrate` suffix from fetch URL</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3472/files#diff-c7cb8539796fe51acbde04b83f33bbce0474284e3a3840d65eb8cd9b21f951bc ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>updateColumnMigration.ts</strong><dd><code>Remove
`/apis/migrate` suffix from fetch URL</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3472/files#diff-11cb8c97ec6d26491538e7032840513127cb4044b9ff3a8890e3602c4ae4a6c6 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>updateTableMigration.ts</strong><dd><code>Remove
`/apis/migrate` suffix from fetch URL</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3472/files#diff-7817a436afa62e58c14d5b0570093de17b57c8abc5b17ad7f191465b75a86cb2 ">+1/-1</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Configuration
changes</strong></td><td><details><summary>1 files</summary><table>
<tr>
<td><strong>env.ts</strong><dd><code>Update default Hasura migrations
API URL</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3472/files#diff-38801f053432e037993a6c8359ff512d7a6cfa9579597b92449f12c05c9c14e9 ">+1/-1</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>1
files</summary><table>
<tr>
<td><strong>neat-coins-hide.md</strong><dd><code>Add changeset for
migration endpoint fix</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3472/files#diff-198c242704f17162fd3bc020b3e0284494eb752bb0c27866953742a2c08f2026 ">+5/-0</a>
</td>
</tr>
</table></details></td></tr></tr></tbody></table>
</details>
___
2025-09-12 15:48:57 +02:00
robertkasza
81716d9d9c
fix (dashboard): Show validation error on save when editing database columns ( #3464 )
...
### **PR Type**
Bug fix
___
### **Description**
- Simplify useFormState name path
- Fix error path in ColumnErrorMessage
- Include patch changeset for dashboard
___
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>ColumnEditorRow.tsx</strong><dd><code>Simplify
useFormState name path</code>
</dd></summary>
<hr>
dashboard/src/features/orgs/projects/database/dataGrid/components/BaseTableForm/ColumnEditorRow/ColumnEditorRow.tsx
<ul><li>Removed redundant <code>columns</code> entry from field name
array<br> <li> Targets errors specifically for column name field</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3464/files#diff-264f067037cfa5d08dbb97964a9ddb8f6296129441682b78f6984c37051ea3f8 ">+1/-1</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>ColumnEditorTable.tsx</strong><dd><code>Fix error
message path usage</code>
</dd></summary>
<hr>
dashboard/src/features/orgs/projects/database/dataGrid/components/BaseTableForm/ColumnEditorTable.tsx
<ul><li>Check <code>errors.columns.root.message</code> instead of
<code>errors.columns.message</code><br> <li> Ensure correct validation
message in HelperText</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3464/files#diff-4cff130e7f375bf59ccc86eef6c1b48336a35691edd2a3197f37a143680a75d6 ">+2/-2</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Configuration
changes</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>unlucky-terms-hang.md</strong><dd><code>Add dashboard
patch changeset</code>
</dd></summary>
<hr>
.changeset/unlucky-terms-hang.md
<ul><li>Add changeset entry for dashboard patch release<br> <li> Note
validation error display fix</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3464/files#diff-e19c29a8792be84bdda0217bdef2838fb92eda3de38c4800313a70818207987a ">+5/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-09-11 15:54:28 +02:00
robertkasza
a30da08e9b
feat (dashboard): add custom types to column types ( #3442 )
...
### **PR Type**
Enhancement
___
### **Description**
- Add custom column types to database tables
- Improve handling of user-defined data types
- Update UI components for custom type support
- Refactor column type normalization and validation
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Column Type Handling"] -- "Extend" --> B["Custom Types"]
B -- "Update" --> C["UI Components"]
B -- "Refactor" --> D["Type Normalization"]
D -- "Improve" --> E["Data Validation"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>15
files</summary><table>
<tr>
<td><strong>Autocomplete.tsx</strong><dd><code>Enhance Autocomplete
component for custom types</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3442/files#diff-b185666714ca832d5c45c366618b79862f6b4f03e4f7657c78afa38a52e7c4c2 ">+27/-3</a>
</td>
</tr>
<tr>
<td><strong>BaseColumnForm.tsx</strong><dd><code>Update BaseColumnForm
to support custom column types</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3442/files#diff-9750f922830f8637c2d1b81c5e40128bc4fca7a9349a5314e421353d73bf6f38 ">+43/-16</a>
</td>
</tr>
<tr>
<td><strong>ColumnEditorRow.tsx</strong><dd><code>Modify ColumnEditorRow
to handle custom types</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3442/files#diff-264f067037cfa5d08dbb97964a9ddb8f6296129441682b78f6984c37051ea3f8 ">+37/-10</a>
</td>
</tr>
<tr>
<td><strong>DataBrowserGrid.tsx</strong><dd><code>Update DataBrowserGrid
to display full data type</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3442/files#diff-5910fd8730fbe65c60aa5f54031989a7868e944d5958f69535e5684b72ca1396 ">+6/-11</a>
</td>
</tr>
<tr>
<td><strong>DatabaseRecordInputGroup.tsx</strong><dd><code>Adjust
DatabaseRecordInputGroup for custom types</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3442/files#diff-52b5499e9afc3c5e4929046b487de649d421dda3250a4131462ec710575abc12 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>prepareCreateColumnQuery.ts</strong><dd><code>Modify
prepareCreateColumnQuery for custom types</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3442/files#diff-9b3695fb28760e86fc966e2149082b798664f145a8b64ef66184e55a905f5071 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>prepareCreateTableQuery.ts</strong><dd><code>Adjust
prepareCreateTableQuery for custom types</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3442/files#diff-1458307108df70f7037fa516ccab3a028533cf23f752778fcb09ed8d326530e5 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>fetchTable.ts</strong><dd><code>Modify fetchTable to include
full data type</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3442/files#diff-a58cb7660972ff84991cdd9777de5cf0834485072cbd421f8809638227c36820 ">+36/-28</a>
</td>
</tr>
<tr>
<td><strong>prepareUpdateColumnQuery.ts</strong><dd><code>Adjust
prepareUpdateColumnQuery for custom types</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3442/files#diff-ef957000505e4ba437656c38b4371d4041471ce5a4c193ef381aa55e0c51c308 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>dataBrowser.ts</strong><dd><code>Update type definitions for
custom column types</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3442/files#diff-33c6810dbd7e2910c86a15009467a348f064380b0e1dd787ef320b4e7543403b ">+2/-3</a>
</td>
</tr>
<tr>
<td><strong>index.ts</strong><dd><code>Add new utility for normalizing
column types</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3442/files#diff-df62570fe4a332639b789274e3db4ea98cc695bc306f6dc1692851280bdb2fde ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>normalizeColumnType.ts</strong><dd><code>Implement
normalizeColumnType utility function</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3442/files#diff-6bc7935091971eb83f99ba700e11f7214599d4d86e41f96d0d8295bdd6441d8f ">+11/-0</a>
</td>
</tr>
<tr>
<td><strong>normalizeDatabaseColumn.ts</strong><dd><code>Modify
normalizeDatabaseColumn to use new utility</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3442/files#diff-e00d1c71fcbc63286896b597ce820388987e0a7edb005bda8a13bb0c0813434b ">+2/-1</a>
</td>
</tr>
<tr>
<td><strong>postgresqlConstants.ts</strong><dd><code>Update PostgreSQL
type constants and groups</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3442/files#diff-b497da90feca5bff94b0d38b69e519d171d43acc292098054d672a73a89b4717 ">+6/-8</a>
</td>
</tr>
<tr>
<td><strong>DataGridTextCell.tsx</strong><dd><code>Adjust
DataGridTextCell for custom type handling</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3442/files#diff-d1ed74fe8eb7a61053dfe908966311e13915ad2127ee107b62f725d6c5282492 ">+1/-1</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>5
files</summary><table>
<tr>
<td><strong>prepareCreateTableQuery.test.ts</strong><dd><code>Update
tests for custom column type support</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3442/files#diff-348ba7ca6fc037a9d0de76a24efc36846c634d82755bbf33dd5062a7face06ec ">+232/-198</a></td>
</tr>
<tr>
<td><strong>prepareUpdateColumnQuery.test.ts</strong><dd><code>Update
tests for custom column type changes</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3442/files#diff-65420c7003a95c03b31fc4b0e45f6a22387f81c1ce8e41a2d7cb89cc44dbda26 ">+557/-494</a></td>
</tr>
<tr>
<td><strong>prepareUpdateTableQuery.test.ts</strong><dd><code>Update
tests for custom column type support</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3442/files#diff-57c2f882497d653700d68905bb54c891592a6bf302040d3008d624900f1bdf64 ">+2/-2</a>
</td>
</tr>
<tr>
<td><strong>getInputType.test.ts</strong><dd><code>Update tests for
input type handling</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3442/files#diff-01a507828b9440cd99bd0722ab5b577d8dd1774f2320168ad88222138960e831 ">+3/-3</a>
</td>
</tr>
<tr>
<td><strong>normalizeDatabaseColumn.test.ts</strong><dd><code>Update
tests for database column normalization</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3442/files#diff-a451c29ffa35243d4dbb462e3a048088c514f8056effedf782fcc57d5235e338 ">+5/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>1
files</summary><table>
<tr>
<td><strong>rich-dragons-attend.md</strong><dd><code>Add changeset for
custom column types feature</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3442/files#diff-bb90b20cf816a7c7bfc628f9daae90b9deff5d8c00f36361190d6147b46fb6be ">+5/-0</a>
</td>
</tr>
</table></details></td></tr></tr></tbody></table>
</details>
___
2025-09-08 14:24:43 +02:00
robertkasza
397bfc948c
fix (dashboard): Parse foreign key relations correctly ( #3458 )
...
### **PR Type**
Bug fix, Tests
___
### **Description**
- Pass updated table name to refetch queries
- Extend `onSubmit` callbacks with `tableName`
- Strip quotes from foreign key column names
- Add and restructure tests for extractor
___
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>DataBrowserSidebar.tsx</strong><dd><code>Update
refetchQueries with new tableName</code>
</dd></summary>
<hr>
dashboard/src/features/orgs/projects/database/dataGrid/components/DataBrowserSidebar/DataBrowserSidebar.tsx
<ul><li>Accept <code>tableName</code> in <code>onSubmit</code>
callback<br> <li> Use <code>tableName</code> for
<code>refetchQueries</code> key</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3458/files#diff-3a9ff7af4a31fbf7e501a77399b2b35306d9e635b021c93f1bc13fc4e225219c ">+2/-2</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>EditTableForm.tsx</strong><dd><code>Extend onSubmit to
receive tableName</code>
</dd></summary>
<hr>
dashboard/src/features/orgs/projects/database/dataGrid/components/EditTableForm/EditTableForm.tsx
<ul><li>Change <code>onSubmit</code> prop to accept
<code>tableName</code><br> <li> Pass <code>updatedTable.name</code> to
<code>onSubmit</code></ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3458/files#diff-e628e74884ed048e1498960b80ad4d2a9fa6b4e05c89545c404e0ed50b43e50a ">+2/-2</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>extractForeignKeyRelation.ts</strong><dd><code>Strip
quotes from extracted column names</code>
</dd></summary>
<hr>
dashboard/src/features/orgs/projects/database/dataGrid/utils/extractForeignKeyRelation/extractForeignKeyRelation.ts
- Remove surrounding parentheses and double quotes from `columnName`
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3458/files#diff-ff940d21b4207265ccae2acaa2e5b8d2a0edc01fd51f14d1c0f6beed43596c49 ">+1/-1</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Tests</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>extractForeignKeyRelation.test.ts</strong><dd><code>Restructure
extractor tests and add cases</code>
</dd></summary>
<hr>
dashboard/src/features/orgs/projects/database/dataGrid/utils/extractForeignKeyRelation/extractForeignKeyRelation.test.ts
<ul><li>Group tests under <code>describe</code> blocks<br> <li> Add test
for capital-letter column names<br> <li> Consolidate no-action
scenarios</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3458/files#diff-9f5bd2c96f0cdcb925343201e389d2d57d8f1fb2adf7daf522338939c613f426 ">+126/-109</a></td>
</tr>
</table></td></tr><tr><td><strong>Configuration
changes</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>cold-toys-bow.md</strong><dd><code>Add changelog for
foreign key fix</code>
</dd></summary>
<hr>
.changeset/cold-toys-bow.md
- Add dashboard patch changelog entry
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3458/files#diff-fe0a7d0ca4fb132b472a16dacc0ebc4ade0b69f3280d10ac4c9b35c955ccdce3 ">+5/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-09-04 11:00:52 +02:00
robertkasza
0d183761ae
fix (dashboard): allow any service to be filtered ( #3452 )
...
### **PR Type**
Bug fix, Enhancement
___
### **Description**
- Allow filtering logs by any service
- Refactor log service constants and types
- Update tests for new service filtering
- Improve DateTimePicker component tests
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Old Service Enum"] --> B["Dynamic Service List"]
C["Fixed Service Labels"] --> D["Flexible Service Labels"]
E["Limited Service Filter"] --> F["Any Service Filter"]
G["DateTimePicker Tests"] --> H["Improved DateTimePicker Tests"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Tests</strong></td><td><details><summary>4
files</summary><table>
<tr>
<td><strong>DateTimePicker.test.tsx</strong><dd><code>Improve
DateTimePicker component tests</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3452/files#diff-c7076012eb33d6f60049710638b5ad19c2f310b8c250c79f1905be7e0a30b00a ">+12/-12</a>
</td>
</tr>
<tr>
<td><strong>DeploymentServcieLogsHeader.test.tsx</strong><dd><code>Add
tests for DeploymentServiceLogsHeader</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3452/files#diff-46fb5d0c9528168323c0e16ef4186d91fe6274b64292f43841258bdfc45dd581 ">+81/-0</a>
</td>
</tr>
<tr>
<td><strong>useProjectLogs.test.ts</strong><dd><code>Update
useProjectLogs tests for new service handling</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3452/files#diff-13d900aa08d06962a09628136b893801ad62a96c3ff89d380c5c4b7ae92d891e ">+9/-9</a>
</td>
</tr>
<tr>
<td><strong>LogsHeader.test.tsx</strong><dd><code>Add tests for
LogsHeader with new service handling</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3452/files#diff-6a348a6b3f868aac854020f2b85ff9a7cf5d61f362a5201e77681e4d5a576f20 ">+86/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>8
files</summary><table>
<tr>
<td><strong>LogsServiceFilter.tsx</strong><dd><code>Update
LogsServiceFilter to support any service</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3452/files#diff-a590a7298a9f040df9f26c4eb37d10fc36f47c32996f71aec47796f08c44e892 ">+8/-7</a>
</td>
</tr>
<tr>
<td><strong>DeploymentServiceLogs.tsx</strong><dd><code>Update
DeploymentServiceLogs to use CoreLogService</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3452/files#diff-333a9783713e9a4bad1b5327e117cbe69148091abe8b9038d36132b5f4635bbe ">+3/-3</a>
</td>
</tr>
<tr>
<td><strong>DeploymentServiceLogsHeader.tsx</strong><dd><code>Refactor
DeploymentLogsHeader to use CoreLogService</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3452/files#diff-4f102c06ed32bb3d8245e415e76b0b14d2d4ae3abca6e234edf69278325c7a95 ">+3/-3</a>
</td>
</tr>
<tr>
<td><strong>useProjectLogs.ts</strong><dd><code>Refactor useProjectLogs
to handle any service</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3452/files#diff-10efc67700b3f024dd03442eacd339802e951696d04caa76bd5a864bd5c7c83f ">+3/-3</a>
</td>
</tr>
<tr>
<td><strong>LogsBody.tsx</strong><dd><code>Update LogsBody to use
CORE_LOG_SERVICE_TO_LABEL</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3452/files#diff-b628e511a7fb9b237ac691b27ab9585eed0d0803144cde66c3af7fa6f9a2dc40 ">+2/-2</a>
</td>
</tr>
<tr>
<td><strong>LogsHeader.tsx</strong><dd><code>Refactor LogsHeader to
support any service</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3452/files#diff-ebb3285aa776c9c5ea8b72672c4aafd55994c6c694998bbf56ca9c56d1e77664 ">+3/-3</a>
</td>
</tr>
<tr>
<td><strong>services.ts</strong><dd><code>Rename AvailableLogsService to
CoreLogService</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3452/files#diff-8fcdaed33322718091b613ae22c65cc3eb61972904b5af46866b160c9bbbe48c ">+13/-13</a>
</td>
</tr>
<tr>
<td><strong>logs.tsx</strong><dd><code>Update logs page to use
CoreLogService</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3452/files#diff-77489a68a7526d74f06d59019ad68c44728b7620637308d70fba38d6649b73fa ">+3/-3</a>
</td>
</tr>
</table></details></td></tr></tr></tbody></table>
</details>
___
2025-09-01 15:41:55 +02:00
robertkasza
1902a114ec
chore: update nextjs version because of vulnerabilities ( #3454 )
...
### **PR Type**
Enhancement
___
### **Description**
- Bump Next.js to v14.2.31 across multiple packages
- Update dependency to address vulnerabilities
___
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Dependencies</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>package.json</strong><dd><code>Bump Next.js in
dashboard</code>
</dd></summary>
<hr>
dashboard/package.json
- Updated `next` version from ^14.2.30 to ^14.2.31
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3454/files#diff-2d8d55c799cd71f1b35e831f075f8178ed1734c4820a2ad548b4dd24d6938d7c ">+1/-1</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>package.json</strong><dd><code>Bump Next.js in example
app</code>
</dd></summary>
<hr>
examples/nextjs/package.json
- Updated `next` version from ^14.2.30 to ^14.2.31
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3454/files#diff-23044c563f1173db6464d127497c342c8f7f90722764a37749681bf455a515e0 ">+1/-1</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>package.json</strong><dd><code>Bump Next.js in
quickstart</code>
</dd></summary>
<hr>
examples/quickstarts/nextjs-server-components/package.json
- Updated `next` version from ^14.2.30 to ^14.2.31
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3454/files#diff-04889f3402d5191034459febd340282af1c718175c3b0b14ff03fb2ab46cf9b3 ">+1/-1</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>package.json</strong><dd><code>Bump Next.js in core
package</code>
</dd></summary>
<hr>
packages/nextjs/package.json
- Updated `next` version from ^14.2.30 to ^14.2.31 in devDependencies
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3454/files#diff-e5237f683dda3354b835c7c7c94b9759db2c743d4ba94d47d7f8b8e0b2bfb442 ">+1/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-09-01 09:29:36 +02:00
David Barroso
92e71a61f9
fix (dashboard): minor fixes to csp ( #3451 )
...
### **PR Type**
Enhancement
___
### **Description**
- Update CSP header in next.config.js
- Add googletagmanager.com to script-src
- Include github.com in img-src sources
- Create changeset for @nhost/dashboard patch
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["CSP Header"] --> B["Script Sources"]
A --> C["Image Sources"]
B -->|"Add"| D["googletagmanager.com"]
C -->|"Add"| E["github.com"]
F["Changeset"] -->|"Create"| G["@nhost/dashboard patch"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>next.config.js</strong><dd><code>Update Content
Security Policy header</code>
</dd></summary>
<hr>
dashboard/next.config.js
<ul><li>Added googletagmanager.com to script-src in CSP header<br> <li>
Included github.com in img-src sources in CSP header</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3451/files#diff-398ac9b04404f14166a89845539399764fecd520ad3e6f0119f8730c0eefa94a ">+2/-2</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>tough-cougars-guess.md</strong><dd><code>Add changeset
for dashboard CSP fixes</code>
</dd></summary>
<hr>
.changeset/tough-cougars-guess.md
<ul><li>Created new changeset file for @nhost/dashboard patch<br> <li>
Added description: "fix: minor fixes to csp"</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3451/files#diff-b4cee951d07c9b505baf4378636ebef623043f7fec62382e2f2b11218d4a384a ">+5/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-09-01 08:38:15 +02:00
github-actions[bot]
9790bcfe3e
chore: update versions ( #3421 )
...
This PR was opened by the [Changesets
release](https://github.com/changesets/action ) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.
# Releases
## @nhost/hasura-storage-js@2.9.0
### Minor Changes
- 2f5bc04 : fix (hasura-storage-js/docs): use correct way of specifying
metadata\[] in formData
## @nhost/apollo@9.0.1
### Patch Changes
- @nhost/nhost-js@3.3.1
## @nhost/react-apollo@18.0.2
### Patch Changes
- @nhost/apollo@9.0.1
- @nhost/react@3.11 .2
## @nhost/react-urql@15.0.2
### Patch Changes
- @nhost/react@3.11 .2
## @nhost/nextjs@2.3.1
### Patch Changes
- @nhost/react@3.11 .2
## @nhost/nhost-js@3.3.1
### Patch Changes
- Updated dependencies [2f5bc04 ]
- @nhost/hasura-storage-js@2.9.0
## @nhost/react@3.11 .2
### Patch Changes
- @nhost/nhost-js@3.3.1
## @nhost/vue@2.9.8
### Patch Changes
- @nhost/nhost-js@3.3.1
## @nhost/dashboard@2.35 .0
### Minor Changes
- 7633d04 : feat (dashbord): Allow composite primary keys
- c4f383f : fix: dashboard: don't allow for upgrading to starter
- 4c6400f : fix: handle redirect to verify email page if sign in with
github
- 7f0db21 : feat: added entraid support
- 412692c : chore (dashboard): Turn on strictNullChecks config
### Patch Changes
- 1708578 : fix (dashboard): Update navbar after org and project
operations
- 34ede5c : fix: enable csp again
- 96228df : chore (dashboard): update nhost-js to the latest version
- d8c5117 : fix (dashboard): Allow creating tables without primary key
- 89f6fe6 : chore (docker-example): update dashboard image version
- e8a3789 : fix (dashboard): scroll to active element in navbar when
navigating
## @nhost/docs@2.35 .0
### Minor Changes
- 2f5bc04 : fix (hasura-storage-js/docs): use correct way of specifying
metadata\[] in formData
- 7f0db21 : feat: added entraid support
### Patch Changes
- 06b47e0 : fix: fixes to changes in mintlify breaking our docs
- d98e73e : fix: workaround for mintlify breaking our docs again
## @nhost-examples/node-storage@0.3.0
### Minor Changes
- 2f5bc04 : fix (hasura-storage-js/docs): use correct way of specifying
metadata\[] in formData
### Patch Changes
- @nhost/nhost-js@3.3.1
## @nhost-examples/cli@0.3.24
### Patch Changes
- @nhost/nhost-js@3.3.1
## @nhost-examples/codegen-react-apollo@0.9.1
### Patch Changes
- @nhost/react@3.11 .2
- @nhost/react-apollo@18.0.2
## @nhost-examples/codegen-react-query@0.9.1
### Patch Changes
- @nhost/react@3.11 .2
## @nhost-examples/codegen-react-urql@0.8.1
### Patch Changes
- @nhost/react@3.11 .2
- @nhost/react-urql@15.0.2
## @nhost-examples/docker-compose@0.4.1
### Patch Changes
- 89f6fe6 : chore (docker-example): update dashboard image version
## @nhost-examples/multi-tenant-one-to-many@2.2.25
### Patch Changes
- @nhost/nhost-js@3.3.1
## @nhost-examples/nextjs@0.5.1
### Patch Changes
- @nhost/react@3.11 .2
- @nhost/react-apollo@18.0.2
- @nhost/nextjs@2.3.1
## @nhost-examples/nextjs-server-components@0.7.1
### Patch Changes
- @nhost/nhost-js@3.3.1
## @nhost-examples/sveltekit@0.8.3
### Patch Changes
- @nhost/nhost-js@3.3.1
## @nhost-examples/react-apollo@1.6.3
### Patch Changes
- @nhost/react@3.11 .2
- @nhost/react-apollo@18.0.2
## @nhost-examples/react-gqty@1.6.3
### Patch Changes
- @nhost/react@3.11 .2
## @nhost-examples/react-native@0.1.11
### Patch Changes
- @nhost/react@3.11 .2
- @nhost/react-apollo@18.0.2
## @nhost-examples/vue-apollo@0.12 .3
### Patch Changes
- @nhost/nhost-js@3.3.1
- @nhost/apollo@9.0.1
- @nhost/vue@2.9.8
## @nhost-examples/vue-quickstart@0.6.3
### Patch Changes
- @nhost/apollo@9.0.1
- @nhost/vue@2.9.8
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-08-29 16:48:22 +02:00
robertkasza
811b48eccf
fix (dashboard): Disable segment ( #3450 )
...
### **PR Type**
Enhancement, Bug fix
___
### **Description**
- Disable Segment analytics across the dashboard
- Remove anonId from authentication processes
- Adjust Google Ads initialization with logging
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Segment Analytics"] -- "Disabled" --> B["Dashboard"]
C["Authentication"] -- "Remove anonId" --> D["Auth Flows"]
E["Google Ads"] -- "Add logging" --> F["Initialization"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>useGithubAuthentication.ts</strong><dd><code>Remove
Segment anonId from GitHub authentication</code>
</dd></summary>
<hr>
dashboard/src/features/auth/AuthProviders/Github/hooks/useGithubAuthentication/useGithubAuthentication.ts
<ul><li>Removed import of <code>getAnonId</code> from Segment<br> <li>
Removed <code>anonId</code> from metadata in authentication options</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3450/files#diff-fad4875e0f07391dadcfc7e2dd481cafd5172dbb740c47e56fa75beb271618e1 ">+0/-2</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>useOnSignUpWithPasswordHandler.ts</strong><dd><code>Remove
Segment anonId from email/password sign-up</code>
</dd></summary>
<hr>
dashboard/src/features/auth/SignUp/SignUpTabs/SignUpWithEmailAndPassword/hooks/useOnSignUpWithPasswordHandler.ts
<ul><li>Removed import of <code>getAnonId</code> from Segment<br> <li>
Removed <code>anonId</code> from metadata in sign-up options</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3450/files#diff-d1a80c5b1076129735ffff9ea879ca8c8fe88e548d06e98a1fb6bfd7147dae01 ">+0/-2</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>useSignupWithSecurityKeyHandler.ts</strong><dd><code>Remove
Segment anonId from security key sign-up</code>
</dd></summary>
<hr>
dashboard/src/features/auth/SignUp/SignUpTabs/SignUpWithSecurityKey/hooks/useSignupWithSecurityKeyHandler.ts
<ul><li>Removed import of <code>getAnonId</code> from Segment<br> <li>
Removed <code>metadata</code> object with <code>anonId</code> from
sign-up options</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3450/files#diff-cef4f710ea89c67e27e9fe77db2d2ebc6d774657e0671b21b7353f3e927126bd ">+0/-3</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>SignUpWithGithub.tsx</strong><dd><code>Remove anonId
prop from GitHub sign-up button</code>
</dd></summary>
<hr>
dashboard/src/features/auth/SignUp/SignUpWithGithub/SignUpWithGithub.tsx
- Removed `withAnonId` prop from `GithubAuthButton` component
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3450/files#diff-65c6f6a23464efe4dcf80b48c1b781c9cf0f0f374b47862820344d6e87d40552 ">+0/-1</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>segment.ts</strong><dd><code>Disable Segment analytics
globally</code>
</dd></summary>
<hr>
dashboard/src/lib/segment.ts
<ul><li>Removed imports for <code>isPlatform</code> and
<code>isDevOrStaging</code><br> <li> Set <code>disable</code> option to
<code>true</code> for Segment analytics</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3450/files#diff-a23427ba42161ffe844159b21f2901e32e6518c61895d5b0e90c653df6876d0c ">+1/-3</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>signup.tsx</strong><dd><code>Add logging to Google Ads
initialization</code>
</dd></summary>
<hr>
dashboard/src/pages/signup.tsx
<ul><li>Added console log statements for Google Ads initialization<br>
<li> Added ESLint disable comments for console logs</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3450/files#diff-fc2b5989e3bbafda1d3d8b2317d24c39ef2b8cec0c4dc410170fa2da13464f68 ">+4/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-08-29 16:40:02 +02:00
robertkasza
57987ed3a9
fix (dashboard): update packages because of vulnerability ( #3447 )
...
### **PR Type**
Enhancement, Bug fix
___
### **Description**
- Update package dependencies to address vulnerabilities
- Add new security overrides for `tmp` and `devalue`
- Enhance overall project security and stability
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["package.json"] --> B["Update Dependencies"]
B --> C["Add Security Overrides"]
C --> D["tmp >= 0.2.4"]
C --> E["devalue >= 5.3.2"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Dependencies</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>package.json</strong><dd><code>Update package.json with
new security overrides</code>
</dd></summary>
<hr>
package.json
<ul><li>Added security override for <code>tmp</code> package (version >=
0.2.4)<br> <li> Added security override for <code>devalue</code> package
(version >= 5.3.2)<br> <li> Updated existing security overrides</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3447/files#diff-7ae45ad102eab3b6d7e7896acd08c427a9b25b346470d7bc6507b6481575d519 ">+3/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-08-28 08:12:20 +02:00
David Barroso
7f0db210ba
feat (dashboard/docs): added entraid support ( #3440 )
...
### **PR Type**
Enhancement, Documentation
___
### **Description**
- Added Entra ID support for authentication
- Deprecated Azure AD in favor of Entra ID
- Updated documentation for Entra ID integration
- Modified GraphQL schema to include Entra ID
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Azure AD"] -->|Deprecated| B["Entra ID"]
B -->|Added| C["Authentication Methods"]
D["GraphQL Schema"] -->|Updated| E["Include Entra ID"]
F["Documentation"] -->|Updated| G["Entra ID Guide"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Documentation</strong></td><td><details><summary>6
files</summary><table>
<tr>
<td><strong>AzureADProviderSettings.tsx</strong><dd><code>Update Azure
AD description to indicate deprecation</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3440/files#diff-6150a6fccfbe403a8349cd1393f783bad24c0937fad3fe5514d16f1ad0a06ded ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>neat-paws-flash.md</strong><dd><code>Add changeset for Entra
ID support</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3440/files#diff-05455eeb0f3e19db8a47bda2fbc8d620bdff1a9abe0e40a415dd1a89fdf03284 ">+6/-0</a>
</td>
</tr>
<tr>
<td><strong>docs.json</strong><dd><code>Add Entra ID to documentation
navigation</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3440/files#diff-873ce17c654718debe2fe308a2f2279bde8663686423c51f97fab2dd0722b8d9 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>overview.mdx</strong><dd><code>Add Entra ID to OAuth
providers list</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3440/files#diff-fcb8a858a73ee17bb801d63453716d58b940d7b1e51f48c5fb184e34971866f2 ">+2/-0</a>
</td>
</tr>
<tr>
<td><strong>sign-in-azuread.mdx</strong><dd><code>Add deprecation
warning for Azure AD</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3440/files#diff-1dc8d804f0d233fb4a540f9bfa2ce768de2d1164645240923a2ab6f22c7efc39 ">+2/-0</a>
</td>
</tr>
<tr>
<td><strong>sign-in-entraid.mdx</strong><dd><code>Add new documentation
for Entra ID sign-in</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3440/files#diff-3abbff0cd035a60ceda760d1f82c74ff93bd3567897d2bbef7c421e8d28cfe20 ">+47/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>5
files</summary><table>
<tr>
<td><strong>EntraIDProviderSettings.tsx</strong><dd><code>Add new Entra
ID provider settings component</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3440/files#diff-5153daa8ad16e43f0246a74b57935910415c968fb14a149e0c38eef3beae7329 ">+225/-0</a>
</td>
</tr>
<tr>
<td><strong>index.ts</strong><dd><code>Create index file for Entra ID
provider settings</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3440/files#diff-942638473827ec8cea7e0530dd0b45cd41fbfed4c8535b4b45a2ba44d17b98ca ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>sign-in-methods.tsx</strong><dd><code>Add Entra ID provider
to sign-in methods page</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3440/files#diff-e9726f37d2b20d7802e29c8d9b202e6ccce35ce82a4993fb9bc0a22ea5601d5f ">+2/-0</a>
</td>
</tr>
<tr>
<td><strong>graphql.ts</strong><dd><code>Update GraphQL schema to
include Entra ID types</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3440/files#diff-fbd5db84b560b1c91675004448c6c7fa0dcbfb28b9eb05d53b03e6cb7b83ebac ">+43/-1</a>
</td>
</tr>
<tr>
<td><strong>getSignInMethods.graphql</strong><dd><code>Update GraphQL
query to include Entra ID fields</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3440/files#diff-31ad2ccce8e92a85c9e8e22285150a9e0bc042d2dd449706d9ef44aca8606ee9 ">+6/-0</a>
</td>
</tr>
</table></details></td></tr></tr></tbody></table>
</details>
___
2025-08-26 15:42:02 +02:00
robertkasza
d8c5117046
fix (dashboard): Allow creating tables without primary key ( #3441 )
...
### **PR Type**
Bug fix
___
### **Description**
- Allow creating database tables without primary key
- Update logic to handle empty primary key values
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Table Creation"] --> B["Primary Key Check"]
B -- "Empty" --> C["Skip Primary Key"]
B -- "Not Empty" --> D["Add Primary Key"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>prepareCreateTableQuery.ts</strong><dd><code>Update
primary key check in table creation query</code>
</dd></summary>
<hr>
dashboard/src/features/orgs/projects/database/dataGrid/hooks/useCreateTableMutation/prepareCreateTableQuery.ts
<ul><li>Modified condition to check for non-empty primary key<br> <li>
Uses <code>isNotEmptyValue</code> function to validate primary key</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3441/files#diff-1458307108df70f7037fa516ccab3a028533cf23f752778fcb09ed8d326530e5 ">+1/-1</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>little-coats-call.md</strong><dd><code>Add changeset
for dashboard patch update</code>
</dd></summary>
<hr>
.changeset/little-coats-call.md
<ul><li>Added changeset file for patch update<br> <li> Describes fix for
creating tables without primary key</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3441/files#diff-782525094e927c8b62cb39945fd4ac9fcad89cf89b8f4eebe3c4dfc5b911744e ">+5/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-08-26 15:18:19 +02:00
robertkasza
7633d04121
feat (dashboard): Allow composite keys ( #3424 )
...
### **PR Type**
Enhancement
___
### **Description**
- Allow composite primary keys in tables
- Update UI to support multiple primary keys
- Modify backend logic for primary key handling
- Adjust tests for new primary key functionality
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Single Primary Key"] -- "Extend to" --> B["Composite Primary Keys"]
B -- "Update" --> C["UI Components"]
B -- "Modify" --> D["Backend Logic"]
B -- "Adjust" --> E["Tests"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Tests</strong></td><td><details><summary>7
files</summary><table>
<tr>
<td><strong>create-table.test.ts</strong><dd><code>Update tests for
composite primary keys</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3424/files#diff-1e7aa9f3e379ca90a94b82c14be48e2c98a722d85ee1b0785a082b7076d8e58c ">+38/-8</a>
</td>
</tr>
<tr>
<td><strong>delete-table.test.ts</strong><dd><code>Modify delete table
tests for new primary key structure</code> </dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3424/files#diff-9e8c87f8e8f11bcfa2b7b2e5cf9dffe54a0fdeb3385ccb82b74e4e1c18fb9c43 ">+3/-3</a>
</td>
</tr>
<tr>
<td><strong>permissions-table.test.ts</strong><dd><code>Adjust
permissions table tests for composite keys</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3424/files#diff-f4b586f5b8f3bb97ddf64f8f38c461ac0424e101789f61e325d1b80bb8dc1047 ">+2/-2</a>
</td>
</tr>
<tr>
<td><strong>PrimaryKeyRow.test.tsx</strong><dd><code>Add tests for
PrimaryKeyRow component</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3424/files#diff-19ffdca665913249d140f824acdd7e3742daf7cc9efb4ebd4dd6e69c2e74dff0 ">+105/-0</a>
</td>
</tr>
<tr>
<td><strong>PrimaryKeySelect.test.tsx</strong><dd><code>Add tests for
PrimaryKeySelect component</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3424/files#diff-3502ffb4e30888c495a7aac784a9f018ab42e3b374b8716b92c72165f9ea52b7 ">+159/-0</a>
</td>
</tr>
<tr>
<td><strong>prepareCreateTableQuery.test.ts</strong><dd><code>Update
create table query tests for composite keys</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3424/files#diff-348ba7ca6fc037a9d0de76a24efc36846c634d82755bbf33dd5062a7face06ec ">+6/-6</a>
</td>
</tr>
<tr>
<td><strong>prepareUpdateTableQuery.test.ts</strong><dd><code>Adjust
update table query tests for new primary key structure</code></dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3424/files#diff-57c2f882497d653700d68905bb54c891592a6bf302040d3008d624900f1bdf64 ">+7/-7</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>13
files</summary><table>
<tr>
<td><strong>utils.ts</strong><dd><code>Update utility functions to
support multiple primary keys</code></dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3424/files#diff-490448aa83585151d8c61d698273c43486fdcac6a5d28a9b7e5be2729bbffd12 ">+12/-8</a>
</td>
</tr>
<tr>
<td><strong>IconButton.tsx</strong><dd><code>Add disabled prop to
IconButton interface</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3424/files#diff-b83e92498e35096782ffeaafbae74794026da0f75d0a48c489efd23e3b255b6d ">+3/-1</a>
</td>
</tr>
<tr>
<td><strong>BaseTableForm.tsx</strong><dd><code>Refactor BaseTableForm
for composite primary keys</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3424/files#diff-33e0bcf77738162f71af2ab673966d2e61d1e270ad09179c23e2d29d18582f80 ">+11/-10</a>
</td>
</tr>
<tr>
<td><strong>ColumnEditorRow.tsx</strong><dd><code>Update ColumnEditorRow
for new primary key structure</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3424/files#diff-4bbb8e759f348b872cff14e3d2f0339f1e7138b4b71d75c2d7b2bc58333b18ce ">+1/-54</a>
</td>
</tr>
<tr>
<td><strong>PrimaryKeyRow.tsx</strong><dd><code>Implement PrimaryKeyRow
component for multiple primary keys</code></dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3424/files#diff-8dcde8064e12fdfc7d5361ab791644e8a17383b18ded898969ca84d54f24920a ">+45/-0</a>
</td>
</tr>
<tr>
<td><strong>PrimaryKeySelect.tsx</strong><dd><code>Implement
PrimaryKeySelect component for composite keys</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3424/files#diff-f2e73f580c635656112d25f47243027e936e8cc09edd43597b21132517207c5b ">+92/-0</a>
</td>
</tr>
<tr>
<td><strong>index.ts</strong><dd><code>Add index file for PrimaryKeyRow
component</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3424/files#diff-e0def2b671d157fb86f15f7ef5e47d4155119ae8be4c153da46d6907611ebe6c ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>PrimaryKeySelect.tsx</strong><dd><code>Remove old
PrimaryKeySelect component</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3424/files#diff-a72fdfc5e09e373d8bc16bd33f39bf9f59b8ea3e39702c5f0d0e0f5f67da92ae ">+0/-49</a>
</td>
</tr>
<tr>
<td><strong>RemoveButton.tsx</strong><dd><code>Implement RemoveButton
component for primary keys</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3424/files#diff-99f91e5bded6fc202a11683c619572d9e4c4a38fe7c3a63b88093c0757a9f5de ">+63/-0</a>
</td>
</tr>
<tr>
<td><strong>CreateTableForm.tsx</strong><dd><code>Update CreateTableForm
for composite primary keys</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3424/files#diff-ccbaedba43e2b50ee80f458d1ff1dc37739dae73f266e1f18aeaebb427be1c4c ">+12/-2</a>
</td>
</tr>
<tr>
<td><strong>EditTableForm.tsx</strong><dd><code>Modify EditTableForm to
handle multiple primary keys</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3424/files#diff-e628e74884ed048e1498960b80ad4d2a9fa6b4e05c89545c404e0ed50b43e50a ">+25/-6</a>
</td>
</tr>
<tr>
<td><strong>prepareUpdateTableQuery.ts</strong><dd><code>Refactor update
table query preparation for composite keys</code></dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3424/files#diff-24dec66b099f48969413c6744a5b69e18e06f3c3df41ed7c712b4a0f31994f5c ">+28/-12</a>
</td>
</tr>
<tr>
<td><strong>dataBrowser.ts</strong><dd><code>Update DatabaseTable
interface for composite primary keys</code></dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3424/files#diff-33c6810dbd7e2910c86a15009467a348f064380b0e1dd787ef320b4e7543403b ">+1/-1</a>
</td>
</tr>
</table></details></td></tr></tr></tbody></table>
</details>
___
2025-08-26 08:29:28 +02:00
robertkasza
e8a378906a
fix (dashboard): scroll to active element in navbar when navigating ( #3431 )
...
### **PR Type**
Bug fix, Enhancement
___
### **Description**
- Scroll to active element in navbar when navigating
- Update react-complex-tree package to version 2.6.0
- Fix database slug in ProjectPagesComboBox component
- Improve NavTree component styling and focus handling
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Navbar Navigation"] --> B["Scroll to Active"]
A --> C["Update react-complex-tree"]
D["Database Slug"] --> E["Fix in ProjectPagesComboBox"]
F["NavTree Component"] --> G["Improve Styling"]
F --> H["Enhance Focus Handling"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>ProjectPagesComboBox.tsx</strong><dd><code>Fix database
slug in ProjectPagesComboBox</code>
</dd></summary>
<hr>
dashboard/src/components/layout/Header/ProjectPagesComboBox.tsx
- Fixed database slug by removing leading slash
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3431/files#diff-70b3af41358f0a22b83e502409a70a0df15e8946d958dbaee4c32b6ebdb38cf6 ">+1/-1</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>NavTree.tsx</strong><dd><code>Enhance NavTree styling
and focus handling</code>
</dd></summary>
<hr>
dashboard/src/components/layout/MainNav/NavTree.tsx
<ul><li>Improved styling for focused items using object syntax<br> <li>
Enhanced readability and maintainability of className conditional</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3431/files#diff-84209ba4cfca6eccb21d8aaaad77bf1af5a18675e6ba077b36acd8977e4c2569 ">+4/-2</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>PinnedMainNav.tsx</strong><dd><code>Implement scroll to
active element in navbar</code>
</dd></summary>
<hr>
dashboard/src/components/layout/MainNav/PinnedMainNav.tsx
<ul><li>Added attribute filter to MutationObserver for class changes<br>
<li> Improved scrolling to active element when navigating</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3431/files#diff-0fbc67c16a16e263b51e46ada3fbaccc041074f31f541bf663ae3b4b5f2a2a17 ">+2/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>rude-carrots-unite.md</strong><dd><code>Add changeset
for navbar navigation fix</code>
</dd></summary>
<hr>
.changeset/rude-carrots-unite.md
<ul><li>Added changeset file for patch update<br> <li> Described fix for
scrolling to active element in navbar</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3431/files#diff-c1f5c9ca73815ce214e78fa0a5fc675cc4b33f5dc31a136b067e36aa097cd83c ">+5/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Dependencies</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>package.json</strong><dd><code>Update
react-complex-tree dependency</code>
</dd></summary>
<hr>
dashboard/package.json
- Updated react-complex-tree package from 2.4.5 to 2.6.0
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3431/files#diff-2d8d55c799cd71f1b35e831f075f8178ed1734c4820a2ad548b4dd24d6938d7c ">+1/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-08-25 12:21:41 +02:00
David Barroso
34ede5cf2c
fix (dashboard): enable csp again ( #3439 )
...
### **PR Type**
Enhancement, Security
___
### **Description**
- Re-enable Content Security Policy (CSP) for production
- Disable CSP headers in development environment
- Improve security configuration in Next.js
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Environment Check"] --> B{"Is Production?"}
B -->|Yes| C["Apply CSP"]
B -->|No| D["Skip CSP"]
C --> E["Apply Other Security Headers"]
D --> E
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Security</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>next.config.js</strong><dd><code>Conditional CSP
application based on environment</code>
</dd></summary>
<hr>
dashboard/next.config.js
<ul><li>Added environment check for CSP application<br> <li> Re-enabled
Content-Security-Policy header<br> <li> Removed commented-out CSP
code</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3439/files#diff-398ac9b04404f14166a89845539399764fecd520ad3e6f0119f8730c0eefa94a ">+8/-4</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-08-25 09:50:45 +02:00
David Barroso
2deeb39a28
chore (ci): encrypt traces ( #3437 )
...
### **PR Type**
Enhancement, Other
___
### **Description**
- Implement encryption for Playwright reports
- Update artifact upload process for encrypted reports
- Remove file name transformation step
- Adjust conditional checks for report handling
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Playwright Test Failure"] --> B["Encrypt Report"]
B --> C["Upload Encrypted Artifact"]
C --> D["Secure Storage"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>ci.yaml</strong><dd><code>Implement encryption and
streamline Playwright report handling</code></dd></summary>
<hr>
.github/workflows/ci.yaml
<ul><li>Added step to encrypt Playwright report using OpenSSL<br> <li>
Updated artifact upload to use encrypted report<br> <li> Removed file
name transformation step<br> <li> Adjusted conditional checks for report
handling</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3437/files#diff-944291df2c9c06359d37cc8833d182d705c9e8c3108e7cfe132d61a06e9133dd ">+15/-10</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-08-22 12:52:55 +02:00
David Barroso
d98e73e57e
fix (docs): workaround for mintlify breaking our docs again ( #3436 )
...
### **PR Type**
Bug fix, Documentation
___
### **Description**
- Fix Mintlify documentation breaking issue
- Update file naming convention for JWKS endpoint
- Adjust docs.json to reflect new file name
- Add metadata to JWKS endpoint documentation file
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Mintlify breaking issue"] --> B["File renaming"]
B --> C["docs.json update"]
B --> D["Metadata addition"]
C --> E["Fixed documentation"]
D --> E
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>docs.json</strong><dd><code>Update JWKS endpoint file
reference in docs.json</code>
</dd></summary>
<hr>
docs/docs.json
<ul><li>Updated file path for JWKS endpoint documentation<br> <li>
Changed <code>get-.well-known-jwks.json</code> to
<code>get-.well-known-jwks_json</code></ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3436/files#diff-873ce17c654718debe2fe308a2f2279bde8663686423c51f97fab2dd0722b8d9 ">+1/-1</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>get-.well-known-jwks_json.mdx</strong><dd><code>Add
metadata to JWKS endpoint documentation file</code>
</dd></summary>
<hr>
docs/reference/auth/get-.well-known-jwks_json.mdx
<ul><li>Added frontmatter metadata to the file<br> <li> Included title
and OpenAPI reference for the JWKS endpoint</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3436/files#diff-70bc360afe951a74a46fadda220916c5248dde71aeb2b99e2d641e748d501524 ">[link]</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-08-22 09:24:17 +02:00
David BM
4c6400fc52
fix (dashboard): GitHub verify email redirect ( #3434 )
2025-08-20 10:35:38 +02:00
Nuno Pato
c4f383f695
fix: dashboard: show correct plan prices ( #3428 )
...
### **PR Type**
Bug fix
___
### **Description**
- Fixed pricing display for subscription plans
- Prevented upgrading to starter plan
- Updated logic for free plan identification
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Subscription Plan Component"] --> B["Price Display"]
A --> C["Plan Upgrade"]
B --> D["Use `plan.isFree` instead of `isFreeOrg`"]
C --> E["Restrict upgrade to starter"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>SubscriptionPlan.tsx</strong><dd><code>Update free plan
detection and price display</code>
</dd></summary>
<hr>
dashboard/src/features/orgs/components/billing/SubscriptionPlan/SubscriptionPlan.tsx
<ul><li>Changed condition for displaying 'Free' from
<code>isFreeOrg</code> to <code>plan.isFree</code><br> <li> Updated
price display logic in the subscription plan component</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3428/files#diff-019ca573844d1ba21be90b471b34eba018fc67ccbf75f2553629ddf88df76442 ">+1/-1</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>great-bugs-leave.md</strong><dd><code>Add changeset for
dashboard upgrade restriction</code>
</dd></summary>
<hr>
.changeset/great-bugs-leave.md
<ul><li>Added changeset file to document the fix<br> <li> Specified
minor version bump for @nhost/dashboard<br> <li> Described preventing
upgrade to starter plan</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3428/files#diff-d56bbd02d48d41200f98557eea49718cfe3112464530309ad30a4eecef370ad3 ">+5/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
---------
Co-authored-by: robertkasza <167509084+robertkasza@users.noreply.github.com >
2025-08-19 16:53:23 +00:00
robertkasza
1708578f8f
fix (dashboard): Update navbar after org and project operations ( #3433 )
...
### **PR Type**
Bug fix, Enhancement
___
### **Description**
- Update navbar after organization and project operations
- Remove unnecessary useMemo and refetch calls
- Improve UI responsiveness in upgrade process
- Add changeset for patch version bump
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["NavTree Component"] -- "Remove useMemo" --> B["Improved Performance"]
C["FinishUpgradeOrganizationProcess"] -- "Remove refetchOrgs" --> D["Optimized Upgrade Flow"]
E["Changeset"] -- "Add patch version" --> F["Version Control"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>NavTree.tsx</strong><dd><code>Optimize NavTree
rendering by removing useMemo</code>
</dd></summary>
<hr>
dashboard/src/components/layout/MainNav/NavTree.tsx
<ul><li>Removed useMemo hook for navTree calculation<br> <li> Directly
call buildNavTreeData function with org</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3433/files#diff-84209ba4cfca6eccb21d8aaaad77bf1af5a18675e6ba077b36acd8977e4c2569 ">+4/-6</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>FinishUpgradeOrganizationProcess.tsx</strong><dd><code>Streamline
organization upgrade process</code>
</dd></summary>
<hr>
dashboard/src/features/orgs/components/billing/FinishUpgradeOrganizationProcess/FinishUpgradeOrganizationProcess.tsx
<ul><li>Removed useOrgs hook and refetchOrgs call<br> <li> Set
hideCloseButton initial state to true<br> <li> Removed unnecessary await
for refetchOrgs</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3433/files#diff-2a9235457a5f0ad0a0202ea35f52026d05bb27fc791b1d9907dc8fc4535be40b ">+1/-4</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>few-fans-collect.md</strong><dd><code>Add changeset for
dashboard patch update</code>
</dd></summary>
<hr>
.changeset/few-fans-collect.md
<ul><li>Added new changeset file for patch version bump<br> <li>
Included description of navbar update fix</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3433/files#diff-940a7e02c1f101b3625857992e7f2ed8a9b64993a72c41e06bdcd6f6f017364c ">+5/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-08-19 15:11:02 +02:00
robertkasza
96228dfe69
chore (dashboard): update nhost-js to the latest version ( #3423 )
...
### **PR Type**
Enhancement
___
### **Description**
- Update `@nhost/nhost-js` to version 5.0.0-beta.9
- Add changeset for patch update to `@nhost/dashboard`
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Old Version"] -- "Update" --> B["New Version"]
B -- "Patch" --> C["@nhost/dashboard"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>hip-zebras-brake.md</strong><dd><code>Add changeset for
dashboard patch update</code>
</dd></summary>
<hr>
.changeset/hip-zebras-brake.md
<ul><li>Add new changeset file for patch update<br> <li> Specify update
for <code>@nhost/dashboard</code> package</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3423/files#diff-f09c9c310fdc68df24300582060be3d86c38f269a9fa8fb1a9cccc60b3ac407b ">+5/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Dependencies</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>package.json</strong><dd><code>Update nhost-js
dependency version</code>
</dd></summary>
<hr>
dashboard/package.json
<ul><li>Update <code>@nhost/nhost-js-beta</code> from version
5.0.0-beta.8 to 5.0.0-beta.9</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3423/files#diff-2d8d55c799cd71f1b35e831f075f8178ed1734c4820a2ad548b4dd24d6938d7c ">+1/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-08-14 10:30:48 +02:00
David Barroso
2f5bc04e0c
fix (hasura-storage-js/docs): use correct way of specifying metadata[] in formData ( #3418 )
...
### **PR Type**
Bug fix
___
### **Description**
- Fix metadata[] specification in formData for file uploads
- Use Blob with JSON.stringify for metadata[] in multiple files
- Update documentation and example code for correct usage
- Ensure compatibility across different environments (browser/Node.js)
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Old metadata[] handling"] --> B["New metadata[] handling"]
B --> C["Use Blob"]
C --> D["JSON.stringify"]
D --> E["Set content type"]
E --> F["Empty filename"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>hasura-storage-api.ts</strong><dd><code>Update
metadata[] handling in file upload</code>
</dd></summary>
<hr>
packages/hasura-storage-js/src/hasura-storage-api.ts
<ul><li>Replace direct JSON.stringify with Blob for metadata[]<br> <li>
Set content type to 'application/json'<br> <li> Add empty string as
third argument for filename</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3418/files#diff-b57b3bb982394c4bc702c400e0798bb62a3371fdc13c91754d68ce5a5d0e7afc ">+5/-1</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>upload-file.mdx</strong><dd><code>Update documentation
for correct metadata[] usage</code>
</dd></summary>
<hr>
docs/reference/storage/upload-file.mdx
<ul><li>Update example code for correct metadata[] usage<br> <li> Use
Blob with JSON.stringify for metadata[]<br> <li> Set content type and
add empty filename</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3418/files#diff-d0a3eae50a19e63cf2d66ab4f644104fa20a946b24122254ec4a368f847292d1 ">+9/-5</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>uploadFormData.mjs</strong><dd><code>Update example
code for correct metadata[] handling</code>
</dd></summary>
<hr>
examples/node-storage/src/uploadFormData.mjs
<ul><li>Update example code for multiple file uploads<br> <li> Use Blob
with JSON.stringify for each metadata[] entry<br> <li> Set content type
and add empty filename for each entry</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3418/files#diff-409940e89eec273da12632fa6eaf09fa331c8806ef03882543616282921e12c4 ">+10/-2</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-08-13 14:16:56 +02:00
David Barroso
06b47e0fb9
fix (docs): fixes to changes in mintlify breaking our docs ( #3422 )
...
### **PR Type**
Bug fix, Documentation
___
### **Description**
- Update Mintlify dependency to fix documentation issues
- Adjust CSS for better display of hero section
- Ensure proper styling in both light and dark modes
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Mintlify Update"] --> B["CSS Adjustments"]
B --> C["Hero Section Display"]
B --> D["Light/Dark Mode Styling"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>style.css</strong><dd><code>Enhance hero section
display and mode-specific styling</code>
</dd></summary>
<hr>
docs/style.css
<ul><li>Added <code>display: inline-block;</code> to hero section h1<br>
<li> Adjusted styling for welcome-hero and welcome-get-started
sections<br> <li> Ensured proper color contrast in light and dark
modes</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3422/files#diff-4dde236d1a1b6f7a24be281ce9e8212368612d66a631fa592bfe18653f57c601 ">+2/-1</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Dependencies</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>package.json</strong><dd><code>Update Mintlify
dependency to latest version</code>
</dd></summary>
<hr>
docs/package.json
- Updated Mintlify dependency from version 4.0.476 to 4.2.67
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3422/files#diff-adfa337ce44dc2902621da20152a048dac41878cf3716dfc4cc56d03aa212a56 ">+1/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-08-13 10:38:55 +02:00
robertkasza
412692c2f6
chore (dashboard): turn on null checks ( #3390 )
2025-08-12 15:45:49 +02:00
robertkasza
89f6fe6346
chore (docker-example): update dashboard image version ( #3420 )
...
### **PR Type**
Enhancement, Documentation
___
### **Description**
- Update dashboard image version in docker-compose.yaml
- Improve DialogTitle styling in SubscriptionPlan component
- Add changeset for version bump documentation
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Docker Compose"] --> B["Dashboard Image"]
B --> C["Version 2.34.0"]
D["SubscriptionPlan Component"] --> E["DialogTitle Styling"]
F["Changeset"] --> G["Version Documentation"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>docker-compose.yaml</strong><dd><code>Update dashboard
image version in docker-compose</code>
</dd></summary>
<hr>
examples/docker-compose/docker-compose.yaml
- Update `nhost/dashboard` image version from 2.20.0 to 2.34.0
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3420/files#diff-47a924f5ea105a2a42b2c421901d43cf1f834a94be0c2f2f868d29dd8990b060 ">+1/-1</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>SubscriptionPlan.tsx</strong><dd><code>Enhance
DialogTitle styling in SubscriptionPlan component</code></dd></summary>
<hr>
dashboard/src/features/orgs/components/billing/SubscriptionPlan/SubscriptionPlan.tsx
<ul><li>Add <code>className="pr-3"</code> to DialogTitle in
SubscriptionPlan component<br> <li> Improve layout of DialogTitle by
wrapping content</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3420/files#diff-019ca573844d1ba21be90b471b34eba018fc67ccbf75f2553629ddf88df76442 ">+3/-1</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>quick-kangaroos-perform.md</strong><dd><code>Add
changeset for version documentation</code>
</dd></summary>
<hr>
.changeset/quick-kangaroos-perform.md
<ul><li>Add new changeset file for version bump documentation<br> <li>
Include patch updates for docker-compose example and dashboard</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3420/files#diff-713b8652a6e08329df8c0d54a9e596ab60c2bc6c376cd8684dcaae5fc2af36da ">+6/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-08-12 13:21:25 +02:00
github-actions[bot]
2e34d7b9d0
chore: update versions ( #3383 )
...
This PR was opened by the [Changesets
release](https://github.com/changesets/action ) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.
# Releases
## @nhost/nextjs@2.3.0
### Minor Changes
- b8cb491 : fix: update dependencies to fix vulnerabilities
## @nhost/dashboard@2.34 .0
### Minor Changes
- 7eb9539 : feat (dashboard): Allow upgrading free organizations
- 129ec1e : feat: dashboard: new onboarding
- 59249e5 : fix: elevate permissions in password reset
- 5e9ddb4 : fix: show Run service name in logs page
- 4ffff86 : fix (dashboard): Disable settings pages when config server
env variable is not set
- b8cb491 : fix: update dependencies to fix vulnerabilities
- 5565451 : fix: support page, can scroll all the way down in Chrome for
iOS
- f7d7080 : chore: dashboard: add gtag
### Patch Changes
- 181c0ab : fix (dashboard): Fix upgrade project e2e tests
- 56c87da : fix (dashboard): Use the correct http method when conneting
to new github
- 00132bd : fix (dashboard): Clear isSigningOut variable on Signin page
- 66e0cc8 : fix (dashboard): Check if user is logged in before
redirecting
- 9c0a118 : chore (dashboard): Add RetryLink to ApolloClient
- df6b85e : fix (dashboard): fix password reset redirect url
- ec24567 : fix (dashboard): Add content-type header
- 57b2615 : chore (dashboard): refactor redirect behaviour
- cffa161 : fix (dashboard): disable settings in the header when
self-hosting
- 85316e8 : fix (dashboard): Remove second loading indicator on projects
page
- 47ab341 : fix (dashboard): Fix announcement layout when title is too
short
## @nhost/docs@2.34 .0
### Minor Changes
- 40439b9 : chore: updated postgres extension and added new custom claims
default option
### Patch Changes
- 906620a : fix: functions: added response payload limit
## @nhost-examples/codegen-react-apollo@0.9.0
### Minor Changes
- b8cb491 : fix: update dependencies to fix vulnerabilities
## @nhost-examples/codegen-react-query@0.9.0
### Minor Changes
- b8cb491 : fix: update dependencies to fix vulnerabilities
## @nhost-examples/codegen-react-urql@0.8.0
### Minor Changes
- b8cb491 : fix: update dependencies to fix vulnerabilities
## @nhost-examples/nextjs@0.5.0
### Minor Changes
- b8cb491 : fix: update dependencies to fix vulnerabilities
### Patch Changes
- Updated dependencies [b8cb491 ]
- @nhost/nextjs@2.3.0
## @nhost-examples/nextjs-server-components@0.7.0
### Minor Changes
- b8cb491 : fix: update dependencies to fix vulnerabilities
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-08-12 09:37:10 +02:00
robertkasza
66e0cc8261
fix (dashboard): Check if user is logged in before redirecting ( #3419 )
...
### **PR Type**
Bug fix
___
### **Description**
- Check user authentication before redirecting
- Prevent unnecessary redirects for unauthenticated users
- Update logic in OrganizationGuard and ProjectLayoutContent
- Add isUserLoggedIn check in IndexPage component
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["User Authentication"] --> B["isUserLoggedIn"]
B --> C{"Redirect?"}
C -->|Yes| D["Authenticated Redirect"]
C -->|No| E["No Redirect"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>OrganizationGuard.tsx</strong><dd><code>Add
authentication check in OrganizationGuard</code>
</dd></summary>
<hr>
dashboard/src/features/orgs/layout/OrgLayout/OrganizationGuard.tsx
<ul><li>Import useAuth hook<br> <li> Add isUserLoggedIn check<br> <li>
Update useEffect dependency array<br> <li> Modify return statement
condition</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3419/files#diff-669e7f622ceecf34bb28a6ede2ac6539facfe3d4660bcaa4c984a9589faca925 ">+7/-3</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>ProjectLayoutContent.tsx</strong><dd><code>Implement
user authentication check in ProjectLayoutContent</code></dd></summary>
<hr>
dashboard/src/features/orgs/layout/OrgLayout/ProjectLayoutContent.tsx
<ul><li>Import useAuth hook<br> <li> Add isUserLoggedIn check<br> <li>
Update useEffect and conditional rendering</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3419/files#diff-52f5b39f2a0a081aa2291ad760536d8a9ffe7f5864548386145ee3538f696051 ">+7/-3</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>index.tsx</strong><dd><code>Add authentication check
for IndexPage navigation</code>
</dd></summary>
<hr>
dashboard/src/pages/index.tsx
<ul><li>Import useAuth hook<br> <li> Add isUserLoggedIn check<br> <li>
Update navigateToSlug function</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3419/files#diff-4eefa54204aa396da4d4d2f1d633d42d1b8ef86987f6e8c9b63d81df1ea6a273 ">+5/-1</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>mighty-kids-double.md</strong><dd><code>Add changeset
for dashboard authentication fix</code>
</dd></summary>
<hr>
.changeset/mighty-kids-double.md
- Add changeset for patch update
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3419/files#diff-4dd245d6c055671cb8c786660c718b305c9dab10ce06dbedc6498660b5288581 ">+5/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-08-12 08:38:32 +02:00
robertkasza
7eb9539807
feat (dashboard): Allow upgrading free organizations ( #3411 )
...
### **PR Type**
Enhancement, Bug fix
___
### **Description**
- Allow upgrading free organizations to paid plans
- Refactor transfer project dialog and related components
- Update billing estimate and subscription plan components
- Fix issues in e2e tests and dialog components
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Free Org"] -- "Upgrade" --> B["Paid Org"]
C["Transfer Dialog"] -- "Refactor" --> D["New Components"]
E["Billing UI"] -- "Update" --> F["New Features"]
G["E2E Tests"] -- "Fix" --> H["Improved Reliability"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody></tr></tbody></table>
</details>
___
2025-08-11 16:03:39 +02:00
David Barroso
906620a755
fix (docs): functions: added response payload limit ( #3416 )
...
### **PR Type**
Documentation
___
### **Description**
- Added response payload limit information
- Clarified execution timeout limits by project tier
- Improved structure of limits section in documentation
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Functions Limits"] --> B["Execution Timeout"]
A --> C["Response Payload"]
B --> D["Tier-specific timeouts"]
C --> E["6MB hard limit"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>cool-toes-impress.md</strong><dd><code>Add changeset
for functions documentation update</code>
</dd></summary>
<hr>
.changeset/cool-toes-impress.md
<ul><li>Added changeset file for documentation update<br> <li> Specified
patch version bump for '@nhost/docs'<br> <li> Described fix for
functions response payload limit</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3416/files#diff-d179a096272bba7079ed913f34451eb4187870b60a373a5511a4da5609debf23 ">+5/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>overview.mdx</strong><dd><code>Update Functions limits
documentation with payload limit</code> </dd></summary>
<hr>
docs/products/functions/overview.mdx
<ul><li>Added new "Response Payload" subsection under "Limits"<br> <li>
Introduced 6MB hard limit for response payloads<br> <li> Restructured
"Limits" section with "Execution Timeout" subsection</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3416/files#diff-c1e4e354976e7a602620f2540bb357b7d4d73853f8310342a75e1e14d4fd35f3 ">+6/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-08-11 09:03:16 +02:00
David BM
5e9ddb41d2
fix (dashboard): show run service name in logs page ( #3415 )
2025-08-08 10:38:06 +02:00
robertkasza
00132bd961
fix (dashboard): Clear isSigningOut variable on Signin page ( #3410 )
...
### **PR Type**
Bug fix
___
### **Description**
- Clear isSigningOut variable on Signin page
- Add clearIsSigningOut function to AuthContext
- Implement clearIsSigningOut in AuthProvider
- Use clearIsSigningOut in signin page useEffect
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["AuthContext"] -- "Add clearIsSigningOut" --> B["AuthProvider"]
B -- "Implement clearIsSigningOut" --> C["Signin Page"]
C -- "Use clearIsSigningOut" --> D["Clear isSigningOut"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Debugging</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>AuthenticatedLayout.tsx</strong><dd><code>Add debug
logging in AuthenticatedLayout</code>
</dd></summary>
<hr>
dashboard/src/components/layout/AuthenticatedLayout/AuthenticatedLayout.tsx
<ul><li>Added console.log for debugging isPlatform, isLoading, and
<br>isSigningOut states</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3410/files#diff-2d69ccffd267658f76d77a864cdece93fc222e08f6025955795fc6f4697f60e7 ">+1/-1</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Bug fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>signin.tsx</strong><dd><code>Implement isSigningOut
state clearing on Signin page</code>
</dd></summary>
<hr>
dashboard/src/pages/signin.tsx
<ul><li>Import useAuth hook and useEffect<br> <li> Add useEffect to
clear isSigningOut state on component mount<br> <li> Destructure
clearIsSigningOut from useAuth</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3410/files#diff-c9910994be6666834a2367da879d20e614b99d3a78f8a86b7ce50495d3d9b096 ">+11/-1</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>AuthContext.ts</strong><dd><code>Add clearIsSigningOut
to AuthContext</code>
</dd></summary>
<hr>
dashboard/src/providers/Auth/AuthContext.ts
<ul><li>Add clearIsSigningOut function to AuthContextType<br> <li>
Include clearIsSigningOut in default AuthContext value</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3410/files#diff-1d4349638224a893f63b774d63a586880993cd3f25bbac14ab292ed79c4ccdf2 ">+2/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>AuthProvider.tsx</strong><dd><code>Implement
clearIsSigningOut in AuthProvider</code>
</dd></summary>
<hr>
dashboard/src/providers/Auth/AuthProvider.tsx
<ul><li>Implement clearIsSigningOut function in AuthProvider<br> <li>
Add clearIsSigningOut to the context value object</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3410/files#diff-f892f5e3f5cbd580bf98d8ee1ed1856db61068f0e1dd44f90d93cbda98007af9 ">+3/-1</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>clever-dots-complain.md</strong><dd><code>Add changeset
for isSigningOut fix</code>
</dd></summary>
<hr>
.changeset/clever-dots-complain.md
<ul><li>Add changeset file for patch update to @nhost/dashboard<br> <li>
Describe the fix for clearing isSigningOut variable on Signin page</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3410/files#diff-8563ec1e5900b174de179ab1c698749d29cf958785a1562a5cee74381793d2b5 ">+5/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-08-06 15:06:13 +02:00
robertkasza
57b26152e4
chore (dashboard): refactor redirect behaviour ( #3403 )
...
### **PR Type**
Enhancement, Bug fix
___
### **Description**
- Refactor redirect behavior in dashboard
- Implement OrganizationGuard for project access control
- Add ProjectLayoutContent for improved layout management
- Update tests for new components and hooks
- Fix minor issues in existing components
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["AuthenticatedLayout"] --> B["OrganizationGuard"]
B --> C["ProjectLayoutContent"]
C --> D["Project-specific components"]
E["useNotFoundRedirect"] --> F["404 Redirect"]
G["useProjectWithState"] --> H["Project Data"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody></tr></tbody></table>
</details>
___
2025-08-05 08:40:37 +02:00
David BM
5565451f18
fix (dashboard): support page, can scroll all the way down in Chrome for iOS ( #3408 )
...
### **PR Type**
Bug fix
___
### **Description**
- Fixed scrolling issue on support page for Chrome iOS
- Changed container height from 'h-screen' to 'h-full'
- Added changeset for version tracking
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Support Page"] -- "Height Change" --> B["Full Scrolling"]
C["Changeset"] -- "Version Update" --> D["@nhost/dashboard"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>index.tsx</strong><dd><code>Adjust support page
container height for better scrolling</code></dd></summary>
<hr>
dashboard/src/pages/support/index.tsx
<ul><li>Changed container height from 'h-screen' to 'h-full'<br> <li>
Allows full scrolling on Chrome for iOS</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3408/files#diff-64adb32f73092cbba8aedac54225398c237222d9ba03a702bbe9d676edcde49c ">+1/-1</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>stupid-phones-act.md</strong><dd><code>Add changeset
for version tracking</code>
</dd></summary>
<hr>
.changeset/stupid-phones-act.md
<ul><li>Added new changeset file<br> <li> Specifies minor version bump
for '@nhost/dashboard'<br> <li> Describes the fix for support page
scrolling</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3408/files#diff-d1565f8c90f9f343f6fa81c720ab14a81c4842c292ec51ff531089f121539d45 ">+5/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-08-01 09:21:34 +02:00
Nuno Pato
4b18e02ad2
fix: dashboard: don't upgrade to starter ( #3407 )
...
### **PR Type**
Enhancement
___
### **Description**
- Disable upgrade to Starter plan
- Add visual cues for disabled Starter plan
- Improve user interface for plan selection
- Enhance accessibility and user experience
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Plan Selection"] --> B["Identify Starter Plan"]
B --> C["Disable Starter Option"]
C --> D["Visual Feedback"]
D --> E["Improved UX"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>SubscriptionPlan.tsx</strong><dd><code>Disable and
style Starter plan in subscription selection</code>
</dd></summary>
<hr>
dashboard/src/features/orgs/components/billing/components/SubscriptionPlan/SubscriptionPlan.tsx
<ul><li>Added logic to identify Starter plan<br> <li> Disabled radio
button for Starter plan<br> <li> Applied opacity and cursor styles to
Starter plan<br> <li> Refactored plan mapping for better
readability</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3407/files#diff-2a5f070869055286b669e382b18d656935752803b9a1ef13390ac028c2a48ac4 ">+8/-4</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-07-31 14:19:41 +00:00
robertkasza
181c0ab19d
fix (dashboard): Fix upgrade project e2e tests ( #3406 )
...
### **PR Type**
Bug fix, Tests
___
### **Description**
- Fix upgrade project e2e tests in dashboard
- Add organization type selection in upgrade process
- Update header class in AuthenticatedLayout component
- Include changeset for patch update
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["E2E Test"] -- "Add org type selection" --> B["Upgrade Process"]
C["AuthenticatedLayout"] -- "Update header class" --> D["UI Improvement"]
E["Changeset"] -- "Document patch" --> F["Version Control"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Tests</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>upgrade-project.test.ts</strong><dd><code>Add
organization type selection in upgrade test</code>
</dd></summary>
<hr>
dashboard/e2e/upgrade-project/upgrade-project.test.ts
<ul><li>Add steps to select organization type<br> <li> Choose 'Personal
Project' as the organization type<br> <li> Improve test flow for project
upgrade process</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3406/files#diff-8bafbe707eb1dff0c5ae24d6b0a514ff6e80889237de6c89ec330a93be138a12 ">+3/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>AuthenticatedLayout.tsx</strong><dd><code>Modify Header
className in AuthenticatedLayout</code>
</dd></summary>
<hr>
dashboard/src/components/layout/AuthenticatedLayout/AuthenticatedLayout.tsx
- Update Header className to include 'hello_there'
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3406/files#diff-2d69ccffd267658f76d77a864cdece93fc222e08f6025955795fc6f4697f60e7 ">+1/-1</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>big-bananas-roll.md</strong><dd><code>Add changeset for
dashboard patch update</code>
</dd></summary>
<hr>
.changeset/big-bananas-roll.md
<ul><li>Add changeset file for patch update<br> <li> Document fix for
upgrade project e2e tests</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3406/files#diff-9836e12d0310159dc3168434b43ceceb42848b00601bf39e57811090c73d06ff ">+5/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-07-31 10:58:04 +02:00
robertkasza
939a158917
chore (dashboard): re-enable upgrade project e2e tests ( #3401 )
...
### **PR Type**
Enhancement, Tests
___
### **Description**
- Re-enable upgrade project e2e tests for dashboard
- Remove temporary comment disabling the tests
- Adjust CI workflow to include upgrade tests
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Disabled Tests"] -- "Re-enable" --> B["Upgrade Project E2E Tests"]
B -- "Include in" --> C["CI Workflow"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>ci.yaml</strong><dd><code>Re-enable Dashboard upgrade
project e2e tests in CI</code>
</dd></summary>
<hr>
.github/workflows/ci.yaml
<ul><li>Removed comments disabling upgrade project e2e tests<br> <li>
Re-enabled the "Run Upgrade project Dashboard e2e tests" step<br> <li>
Kept the timeout and filter conditions unchanged</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3401/files#diff-944291df2c9c06359d37cc8833d182d705c9e8c3108e7cfe132d61a06e9133dd ">+4/-5</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-07-30 15:27:43 +02:00
robertkasza
9c0a118721
chore (dashboard): Add RetryLink to ApolloClient ( #3400 )
...
### **User description**
The default config for the RetryLink:
```
new RetryLink({
delay: {
initial: 300,
max: Infinity,
jitter: true
},
attempts: {
max: 5,
retryIf: (error, _operation) => !!error
}
});
```
Source:
https://www.apollographql.com/docs/react/api/link/apollo-link-retry
___
### **PR Type**
Enhancement
___
### **Description**
- Added RetryLink to ApolloClient for improved network resilience
- Implemented in dashboard's createApolloClient function
- RetryLink added to Apollo link chain
- Updated changeset for @nhost/dashboard patch
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["ApolloClient"] --> B["Link Chain"]
B --> C["RetryLink"]
C --> D["SplitLink"]
D --> E["WSLink/HTTPLink"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>createApolloClient.ts</strong><dd><code>Integrate
RetryLink into ApolloClient configuration</code>
</dd></summary>
<hr>
dashboard/src/providers/Apollo/createApolloClient.ts
<ul><li>Imported RetryLink from '@apollo/client/link/retry'<br> <li>
Created new RetryLink instance<br> <li> Added RetryLink to the Apollo
link chain</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3400/files#diff-6a34c5ed967837282403b4cfdf06e13e5effb32da891d682580b8174d047a454 ">+3/-1</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>rude-days-punch.md</strong><dd><code>Add changeset for
RetryLink implementation</code>
</dd></summary>
<hr>
.changeset/rude-days-punch.md
<ul><li>Added new changeset file for @nhost/dashboard patch<br> <li>
Described the addition of RetryLink to ApolloClient</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3400/files#diff-300eb74204e13134d44e55fc0870c7eabc8e0b9ba17a470ed31d3156d247dcf6 ">+5/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-07-30 13:42:08 +02:00
Nuno Pato
129ec1edfc
feat: dashboard: new onboarding ( #3398 )
...
### **PR Type**
Enhancement
___
### **Description**
- New onboarding flow onboarding flow implemented
- Sign-up and sign-in pages redesigned
- Organization creation process updated
- Project creation step added to onboarding
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Sign Up"] --> B["Create Organization"]
B --> C["Choose Plan"]
C --> D["Create Project"]
D --> E["Dashboard"]
F["Sign In"] --> G["New Design"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody></tr></tbody></table>
</details>
___
---------
Co-authored-by: robertkasza <robert.kasza@bishop-co.com >
Co-authored-by: David BM <correodelnino@gmail.com >
2025-07-30 10:07:09 +00:00
David Barroso
40439b9987
chore (docs): updated postgres extension and added new custom claims default option ( #3404 )
...
### **PR Type**
Enhancement, Documentation
___
### **Description**
- Updated Postgres extensions list and versions
- Added new pg_search extension documentation
- Included custom claims default option
- Minor configuration and formatting improvements
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Postgres Extensions"] --> B["Update List"]
A --> C["Add pg_search"]
D["Auth Configuration"] --> E["Add Default Claim"]
F["Documentation"] --> G["Improve Formatting"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>short-jars-report.md</strong><dd><code>Add changeset
for version update and feature description</code> </dd></summary>
<hr>
.changeset/short-jars-report.md
<ul><li>Added new changeset file for version bump<br> <li> Described
changes to Postgres extension and custom claims</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3404/files#diff-838f283f217157a822d8a4879498f51f7a62b1a1fd09ed59d7af6580a9ff252b ">+5/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>extensions.mdx</strong><dd><code>Update Postgres
extensions list and add pg_search documentation</code></dd></summary>
<hr>
docs/products/database/extensions.mdx
<ul><li>Updated Postgres extensions list with new versions<br> <li>
Improved table formatting for better readability<br> <li> Added
documentation for new pg_search extension<br> <li> Updated TimescaleDB
version and removed duplicate code</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3404/files#diff-6bab5da4b9a2b7c2ff6ae4ba02a390b3e676e42daef3326ae4d11f15c2010682 ">+90/-69</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>configuring-postgres.mdx</strong><dd><code>Add
trackIoTiming configuration option</code>
</dd></summary>
<hr>
docs/products/database/configuring-postgres.mdx
- Added `trackIoTiming = 'on'` to Postgres configuration
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3404/files#diff-891bd26b1fc421114ceaee627a356c370d19aad610c867b5e633b20e8aa2ba02 ">+1/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>permissions.mdx</strong><dd><code>Add default value for
custom claim in auth configuration</code> </dd></summary>
<hr>
docs/products/graphql/permissions.mdx
- Added default value for custom claim 'organization-id'
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3404/files#diff-c99129721a462916c7ba5ea9f9cccd3f3b00b39af45add04d25b24dc07003779 ">+1/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-07-30 10:42:49 +02:00
robertkasza
cffa161da7
fix (dashboard): disable settings in the header when self-hosting ( #3402 )
...
### **PR Type**
Bug fix
___
### **Description**
- Disable settings in header for self-hosted environments
- Implement `useSettingsDisabled` hook for conditional rendering
- Update project pages array with new disabled logic
- Add changeset for patch version bump
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["useSettingsDisabled Hook"] --> B["ProjectPagesComboBox"]
B --> C["Settings Option"]
C --> D{"isSettingsDisabled?"}
D -->|Yes| E["Disabled"]
D -->|No| F["Enabled"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>ProjectPagesComboBox.tsx</strong><dd><code>Implement
settings disabling logic in ProjectPagesComboBox</code></dd></summary>
<hr>
dashboard/src/components/layout/Header/ProjectPagesComboBox.tsx
<ul><li>Import <code>useSettingsDisabled</code> hook<br> <li> Add
<code>isSettingsDisabled</code> state<br> <li> Update
<code>Settings</code> option in <code>projectPages</code> array<br> <li>
Add <code>isSettingsDisabled</code> to dependency array</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3402/files#diff-70b3af41358f0a22b83e502409a70a0df15e8946d958dbaee4c32b6ebdb38cf6 ">+5/-2</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>strange-lamps-compare.md</strong><dd><code>Add
changeset for dashboard patch update</code>
</dd></summary>
<hr>
.changeset/strange-lamps-compare.md
<ul><li>Add changeset file for patch version bump<br> <li> Include fix
description for dashboard</ul>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3402/files#diff-2d8ba8119648f723ea41f6aea003922f65ebe43b604902bbe2f3697bf91aebcf ">+5/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
2025-07-25 15:21:58 +02:00
robertkasza
4ffff86752
fix (dashboard): disable settings when there is no config server env variable present ( #3394 )
...
### **PR Type**
Bug fix, Enhancement
___
### **Description**
- Disable settings when no config server variable
- Improve platform-specific page handling
- Enhance error handling and loading states
- Refactor environment variable checks
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Environment Check"] --> B["Settings Visibility"]
A --> C["Platform-specific Pages"]
D["Error Handling"] --> E["Loading States"]
F["Code Refactoring"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody></tr></tbody></table>
</details>
___
---------
Co-authored-by: David Barroso <dbarrosop@dravetech.com >
2025-07-25 13:05:04 +02:00
Gayathri-K-Binoy
f9e170e958
chore (docs): fix typos ( #3396 )
2025-07-25 10:46:53 +02:00
robertkasza
b8cb491ab1
fix: update dependencies to fix vulnerabilities ( #3399 )
...
### **PR Type**
Enhancement, Bug fix
___
### **Description**
- Update dependencies to address vulnerabilities
- Improve DTS plugin configuration in Vite
- Update Next.js and GraphQL Codegen CLI
- Add resolutions for security patches
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Security Updates"] --> B["Dependency Upgrades"]
B --> C["Next.js 14.2.30"]
B --> D["GraphQL Codegen CLI 5.0.7"]
A --> E["Vite DTS Plugin 4.5.4"]
E --> F["Improved DTS Configuration"]
A --> G["Additional Resolutions"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody></tr></tbody></table>
</details>
___
2025-07-23 13:55:15 +02:00
David BM
59249e5161
fix (dashboard): elevate permissions in password reset ( #3392 )
...
### **PR Type**
Bug fix, Enhancement
___
### **Description**
- Refactored password reset to use elevated permissions hook
- Improved error and success handling in password reset flow
- Added a changeset documenting the permission elevation fix
- Removed direct toast usage from password reset logic
___
### **Changes diagram**
```mermaid
flowchart LR
A["Reset Password Page"] -- "calls" --> B["useActionWithElevatedPermissions"]
B -- "handles" --> C["Password Change Action"]
C -- "on success" --> D["Redirect to Home"]
C -- "shows" --> E["Success/Error Message"]
```
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>reset.tsx</strong><dd><code>Refactor password reset to
use elevated permissions hook</code> </dd></summary>
<hr>
dashboard/src/pages/password/reset.tsx
<li>Replaced direct password change logic with
<br><code>useActionWithElevatedPermissions</code> hook<br> <li>
Centralized success and error handling via the hook<br> <li> Removed
direct toast notifications from the component<br> <li> Streamlined
password reset submission logic
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3392/files#diff-0b60d94b63e36ce54a4dafb098322e11b9a130defb0f48984f8b3e71461e8011 ">+10/-15</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>lemon-papayas-act.md</strong><dd><code>Add changeset
for password reset permission fix</code>
</dd></summary>
<hr>
.changeset/lemon-papayas-act.md
<li>Added a changeset documenting the permission elevation fix in
password <br>reset
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3392/files#diff-bae78ce46846e38b416ebbc4b599670fbe5384c8c850b9d97b3a8924f2d60327 ">+5/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-07-16 14:36:28 +02:00
robertkasza
df6b85e98c
fix (dashboard): fix password reset redirect url ( #3391 )
...
### **PR Type**
Bug fix, Enhancement
___
### **Description**
- Fixed password reset redirect to use absolute URL.
- Removed duplicate sign-up tabs and extra legal text.
- Added direct sign-in prompt for existing users.
- Added changeset entry for the patch update.
___
### **Changes diagram**
```mermaid
flowchart LR
A["Password reset redirect (relative)"] -- "Changed to absolute URL" --> B["Password reset redirect (absolute)"]
C["Sign-up page with tabs and legal text"] -- "Removed tabs & extra legal text" --> D["Sign-up page with sign-in prompt"]
E["No changeset for fix"] -- "Added changeset entry" --> F["Patch changeset for dashboard"]
```
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>new.tsx</strong><dd><code>Use absolute URL for password
reset redirect</code>
</dd></summary>
<hr>
dashboard/src/pages/password/new.tsx
<li>Changed password reset redirect to use absolute URL.<br> <li>
Ensures correct redirect after password reset email.
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3391/files#diff-153045bbcb44ce952fbd9ee585c63109891973ab4d1ecc1e1b5edf8f981b1259 ">+1/-1</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>signup.tsx</strong><dd><code>Streamlined sign-up page
and added sign-in prompt</code>
</dd></summary>
<hr>
dashboard/src/pages/signup.tsx
<li>Removed <code>SignUpTabs</code> and duplicate legal text.<br> <li>
Added prompt for existing users to sign in.<br> <li> Simplified and
clarified sign-up page UI.
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3391/files#diff-fc2b5989e3bbafda1d3d8b2317d24c39ef2b8cec0c4dc410170fa2da13464f68 ">+4/-19</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>serious-eagles-rule.md</strong><dd><code>Added
changeset for password reset redirect fix</code>
</dd></summary>
<hr>
.changeset/serious-eagles-rule.md
<li>Added changeset entry for password reset redirect fix.<br> <li>
Documents patch update for dashboard package.
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3391/files#diff-058395bb4a26b44e46054945b2710688aebefcb9ad898396af1cac658e20b049 ">+5/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-07-16 14:03:32 +02:00
robertkasza
85316e822f
fix (dashboard): Remove second loading indicator on projects page ( #3380 )
...
### **PR Type**
Bug fix
___
### **Description**
- Removed redundant loading indicator from projects page
- Refactored `ProjectsGrid` to accept projects as props
- Updated data fetching to use `useGetProjectsQuery` by org slug
- Cleaned up unused queries and code for project listing
___
### **Changes diagram**
```mermaid
flowchart LR
A["ProjectsGrid fetches projects internally"] -- "Old" --> B["ProjectsGrid receives projects as props"]
C["Redundant loading indicator in ProjectsGrid"] -- "Removed" --> D["Single loading indicator in OrgProjects"]
E["useGetOrganizationProjectsQuery (by orgId)"] -- "Removed" --> F["useGetProjectsQuery (by orgSlug)"]
```
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Miscellaneous</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>AuthenticatedLayout.tsx</strong><dd><code>Clean up
commented authentication check code</code>
</dd></summary>
<hr>
dashboard/src/components/layout/AuthenticatedLayout/AuthenticatedLayout.tsx
- Removed commented-out code related to authentication check
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3380/files#diff-2d69ccffd267658f76d77a864cdece93fc222e08f6025955795fc6f4697f60e7 ">+0/-4</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>projects-grid.tsx</strong><dd><code>Refactor
ProjectsGrid to accept projects as props</code>
</dd></summary>
<hr>
dashboard/src/features/orgs/components/projects/projects-grid/projects-grid.tsx
<li>Refactored <code>ProjectsGrid</code> to accept <code>projects</code>
as a prop<br> <li> Removed internal data fetching and loading/error
handling<br> <li> Cleaned up unused imports and variables
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3380/files#diff-fb28557d0c8fd3a64ab16de7da710e3a28383313ca2cda956fe1e20e30d798a0 ">+6/-25</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>index.tsx</strong><dd><code>Centralize project data
fetching and loading indicator</code>
</dd></summary>
<hr>
dashboard/src/pages/orgs/[orgSlug]/projects/index.tsx
<li>Moved project data fetching to page level using
<code>useGetProjectsQuery</code><br> <li> Passed projects to
<code>ProjectsGrid</code> as props<br> <li> Unified loading indicator to
a single location<br> <li> Switched layout to
<code>AuthenticatedLayout</code>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3380/files#diff-ce8db7e0b0ee79801594d021e81a77be72836ad592917a16fef83d33a09ae993 ">+14/-9</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Dependencies</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>graphql.ts</strong><dd><code>Remove deprecated
GetOrganizationProjectsQuery code</code>
</dd></summary>
<hr>
dashboard/src/utils/__generated__/graphql.ts
<li>Removed all code related to
<code>GetOrganizationProjectsQuery</code><br> <li> Cleaned up unused
query types and hooks
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3380/files#diff-fbd5db84b560b1c91675004448c6c7fa0dcbfb28b9eb05d53b03e6cb7b83ebac ">+0/-45</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>getOrganizationProjects.gql</strong><dd><code>Remove
unused getOrganizationProjects GraphQL query</code>
</dd></summary>
<hr>
dashboard/src/gql/organizations/getOrganizationProjects.gql
- Deleted unused GraphQL query for organization projects by orgId
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3380/files#diff-a14720e1bd3604e4bc853664e28bfaf5ecedef945dc58eea0ae1acc71f8b5d2b ">+0/-5</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>tame-suits-rest.md</strong><dd><code>Add changeset for
dashboard loading indicator fix</code>
</dd></summary>
<hr>
.changeset/tame-suits-rest.md
- Added changeset entry for dashboard patch fix
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3380/files#diff-e294197b031340c88e9faf8c8a3f2fa3e8795927376dce8e5e15458f55b64301 ">+5/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-07-14 10:36:17 +02:00
Nuno Pato
f7d7080dad
chore: dashboard: add gtag ( #3388 )
...
### **PR Type**
Enhancement
___
### **Description**
- Integrates Google Tag Manager (gtag) into the signup page
- Dynamically injects Google Ads script with error handling
- Cleans up injected script on component unmount
- Adds a changeset entry for the dashboard package
___
### **Changes diagram**
```mermaid
flowchart LR
SignUpPage["SignUpPage component"]
useEffect["useEffect hook"]
Script["Inject Google Ads script"]
gtag["Initialize gtag & dataLayer"]
Cleanup["Remove script on unmount"]
SignUpPage -- "mounts" --> useEffect
useEffect -- "sets up" --> gtag
useEffect -- "injects" --> Script
useEffect -- "cleans up" --> Cleanup
```
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>signup.tsx</strong><dd><code>Integrate Google Tag
Manager script in signup page</code>
</dd></summary>
<hr>
dashboard/src/pages/signup.tsx
<li>Adds useEffect to inject Google Ads gtag script<br> <li> Initializes
global gtag and dataLayer if not present<br> <li> Handles script
loading, error, and cleanup on unmount
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3388/files#diff-fc2b5989e3bbafda1d3d8b2317d24c39ef2b8cec0c4dc410170fa2da13464f68 ">+47/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>thin-steaks-poke.md</strong><dd><code>Add changeset for
dashboard gtag enhancement</code>
</dd></summary>
<hr>
.changeset/thin-steaks-poke.md
- Adds a changeset entry for the dashboard package update
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3388/files#diff-57d0a66dc101feb0260a2285ccf8dacb4d90fc478d721b4a4432f169ce11270b ">+5/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-07-11 13:13:13 +00:00
robertkasza
ec24567d83
fix (dashboard): Add content-type header ( #3385 )
...
### **PR Type**
Bug fix
___
### **Description**
- Add `Content-Type: application/json` header to GitHub app installation
request
- Ensure correct content type for POST request in dashboard
- Add changeset entry documenting the bug fix
- Improve API compatibility for GitHub app installation endpoint
___
### **Changes diagram**
```mermaid
flowchart LR
A["GitHub App Installation Request"] -- "Add Content-Type header" --> B["API Endpoint"]
B -- "Processes JSON body correctly" --> C["Improved Compatibility"]
```
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>index.tsx</strong><dd><code>Add Content-Type header to
GitHub app installation POST request</code></dd></summary>
<hr>
dashboard/src/pages/github-app-installation/index.tsx
<li>Add <code>Content-Type: application/json</code> header to POST
request<br> <li> Ensure API receives correct content type for JSON body
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3385/files#diff-617a35daae6c458b9fe6374fe3d72a1f0c17f1975d2180ebed76d6945f8ced3c ">+3/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>spicy-camels-work.md</strong><dd><code>Add changeset
entry for Content-Type header fix</code>
</dd></summary>
<hr>
.changeset/spicy-camels-work.md
- Add changeset entry describing the bug fix for dashboard
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3385/files#diff-ed215958071054c894c74606f2d96e18e5cc478183f88bebee13bce9e186e975 ">+5/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-07-03 19:15:32 +02:00
robertkasza
56c87dad64
fix (dashboard): Use the correct http method when connecting to new github installation ( #3384 )
...
### **PR Type**
Bug fix
___
### **Description**
- Fixes HTTP method to 'POST' for GitHub app installation API call
- Adds a changeset entry documenting the bug fix
___
### **Changes diagram**
```mermaid
flowchart LR
A["GitHub App Installation API Call"] -- "method: GET (incorrect)" --> B["Error/Failure"]
A -- "method: POST (correct)" --> C["Successful Installation"]
```
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>index.tsx</strong><dd><code>Use POST method for GitHub
app installation API call</code>
</dd></summary>
<hr>
dashboard/src/pages/github-app-installation/index.tsx
<li>Sets HTTP method to 'POST' in fetch call for GitHub app
installation<br> <li> Ensures correct API interaction when connecting
new GitHub <br>installation
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3384/files#diff-617a35daae6c458b9fe6374fe3d72a1f0c17f1975d2180ebed76d6945f8ced3c ">+1/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>big-students-crash.md</strong><dd><code>Add changeset
entry for GitHub installation bug fix</code>
</dd></summary>
<hr>
.changeset/big-students-crash.md
- Adds a patch changeset describing the HTTP method bug fix
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3384/files#diff-114feb4f179f3533e5546f1cdaddfeb232268b6147c41edfa2f1f387a9320085 ">+5/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-07-03 18:16:10 +02:00
robertkasza
47ab341ce4
fix (dashboard): Fix announcement layout when title is too short ( #3382 )
...
### **User description**
Before:

After:

___
### **PR Type**
Bug fix, Enhancement
___
### **Description**
- Fixed announcement layout for short titles in AnnouncementsTray.
- Updated announcement list to use hardcoded sample data.
- Improved flexbox styling for announcement items.
- Added a changeset entry for the patch release.
___
### **Changes diagram**
```mermaid
flowchart LR
AnnouncementsTray["AnnouncementsTray.tsx"]
Styling["Flexbox layout fix"]
SampleData["Hardcoded announcements data"]
Changeset[".changeset/wet-sheep-bake.md"]
AnnouncementsTray -- "uses" --> SampleData
AnnouncementsTray -- "applies" --> Styling
AnnouncementsTray -- "documented in" --> Changeset
```
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>AnnouncementsTray.tsx</strong><dd><code>Fix
announcement layout and use sample data in
AnnouncementsTray</code></dd></summary>
<hr>
dashboard/src/features/orgs/components/members/components/AnnouncementsTray/AnnouncementsTray.tsx
<li>Replaced dynamic announcement fetching with hardcoded sample
data.<br> <li> Fixed flexbox layout for announcement items to handle
short titles.<br> <li> Improved visual alignment and spacing in the
announcement list.
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3382/files#diff-88fdcce3e90fa9e4d172858ae702855f86e6ece724ba443d8a6ed918999a1630 ">+52/-2</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>wet-sheep-bake.md</strong><dd><code>Add changeset for
announcement layout fix</code>
</dd></summary>
<hr>
.changeset/wet-sheep-bake.md
- Added a changeset entry describing the announcement layout fix.
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3382/files#diff-45895b0cd41c7cf29b27780adee81b07c63884cfe2bc7d9fb589e1017bbba61e ">+5/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-07-03 16:38:04 +02:00
github-actions[bot]
5fed49e05b
chore: update versions ( #3370 )
...
This PR was opened by the [Changesets
release](https://github.com/changesets/action ) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.
# Releases
## @nhost/hasura-storage-js@2.8.0
### Minor Changes
- aee9a80 : chore: update typescript version to the latest
## @nhost/nhost-js@3.3.0
### Minor Changes
- aee9a80 : chore: update typescript version to the latest
### Patch Changes
- Updated dependencies [aee9a80 ]
- @nhost/hasura-storage-js@2.8.0
## @nhost/apollo@9.0.0
### Patch Changes
- Updated dependencies [aee9a80 ]
- @nhost/nhost-js@3.3.0
## @nhost/react-apollo@18.0.1
### Patch Changes
- @nhost/apollo@9.0.0
- @nhost/react@3.11 .1
## @nhost/react-urql@15.0.1
### Patch Changes
- @nhost/react@3.11 .1
## @nhost/nextjs@2.2.9
### Patch Changes
- @nhost/react@3.11 .1
## @nhost/react@3.11 .1
### Patch Changes
- Updated dependencies [aee9a80 ]
- @nhost/nhost-js@3.3.0
## @nhost/vue@2.9.7
### Patch Changes
- Updated dependencies [aee9a80 ]
- @nhost/nhost-js@3.3.0
## @nhost/dashboard@2.33 .0
### Minor Changes
- aee9a80 : chore: update typescript version to the latest
- 5ef3f76 : chore (dashboard): Use the new SDK in the Dashboard
### Patch Changes
- 9ed8ce8 : fix (dashboard): Request new Mfa ticket after an invalid totp
when signing in
- fd3b5c7 : fix (dashboard): Limit new project's name to a maximum of 32
charachters in E2E tests
## @nhost/docs@2.33 .0
### Minor Changes
- 4ca9641 : feat: added cloud development documentation
## @nhost-examples/cli@0.3.23
### Patch Changes
- Updated dependencies [aee9a80 ]
- @nhost/nhost-js@3.3.0
## @nhost-examples/codegen-react-apollo@0.8.2
### Patch Changes
- @nhost/react@3.11 .1
- @nhost/react-apollo@18.0.1
## @nhost-examples/codegen-react-query@0.8.2
### Patch Changes
- @nhost/react@3.11 .1
## @nhost-examples/codegen-react-urql@0.7.2
### Patch Changes
- @nhost/react@3.11 .1
- @nhost/react-urql@15.0.1
## @nhost-examples/multi-tenant-one-to-many@2.2.24
### Patch Changes
- Updated dependencies [aee9a80 ]
- @nhost/nhost-js@3.3.0
## @nhost-examples/nextjs@0.4.9
### Patch Changes
- @nhost/react@3.11 .1
- @nhost/react-apollo@18.0.1
- @nhost/nextjs@2.2.9
## @nhost-examples/node-storage@0.2.23
### Patch Changes
- Updated dependencies [aee9a80 ]
- @nhost/nhost-js@3.3.0
## @nhost-examples/nextjs-server-components@0.6.2
### Patch Changes
- Updated dependencies [aee9a80 ]
- @nhost/nhost-js@3.3.0
## @nhost-examples/sveltekit@0.8.2
### Patch Changes
- Updated dependencies [aee9a80 ]
- @nhost/nhost-js@3.3.0
## @nhost-examples/react-apollo@1.6.2
### Patch Changes
- @nhost/react@3.11 .1
- @nhost/react-apollo@18.0.1
## @nhost-examples/react-gqty@1.6.2
### Patch Changes
- @nhost/react@3.11 .1
## @nhost-examples/react-native@0.1.10
### Patch Changes
- @nhost/react@3.11 .1
- @nhost/react-apollo@18.0.1
## @nhost-examples/vue-apollo@0.12 .2
### Patch Changes
- Updated dependencies [aee9a80 ]
- @nhost/nhost-js@3.3.0
- @nhost/apollo@9.0.0
- @nhost/vue@2.9.7
## @nhost-examples/vue-quickstart@0.6.2
### Patch Changes
- @nhost/apollo@9.0.0
- @nhost/vue@2.9.7
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-07-01 13:00:12 +02:00
robertkasza
aee9a80ac8
chore: update typescript to latest version ( #3376 )
...
### **PR Type**
Enhancement, Other
___
### **Description**
- Update TypeScript to version 5.8.3
- Upgrade react-merge-refs to version 3.0.2
- Refactor import syntax for mergeRefs
- Update tsconfig settings for modern JavaScript
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>11
files</summary><table>
<tr>
<td><strong>ControlledAutocomplete.tsx</strong><dd><code>Update import
syntax for mergeRefs</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3376/files#diff-e1bbef866e556facc768a4239b443e193f460321689e368fcaae31c1a7c90478 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>ControlledCheckbox.tsx</strong><dd><code>Update import and
type reference for mergeRefs</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3376/files#diff-6f7d29735900a65f96663da4719bf151c5c98224c0a4e39d84b9e5e1db6b8c42 ">+2/-2</a>
</td>
</tr>
<tr>
<td><strong>ControlledSelect.tsx</strong><dd><code>Update import and
type reference for mergeRefs</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3376/files#diff-4dda68ad8ea568203b515c9cb81eabd05109f55b10e96712924744aba8c22468 ">+2/-2</a>
</td>
</tr>
<tr>
<td><strong>ControlledSwitch.tsx</strong><dd><code>Update import syntax
for mergeRefs</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3376/files#diff-173b17a003d4d330b2a7157258d0d34cbbbac6ae10840245294f22a8e6ef89ed ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>Checkbox.tsx</strong><dd><code>Update ForwardedRef type for
Checkbox component</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3376/files#diff-16e6ada0fb8f9c0ecaa00fcfc61c166d0c4c051efe5345d58ee5e4ab618ca0c5 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>Input.tsx</strong><dd><code>Update import syntax for
mergeRefs</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3376/files#diff-16643cae2ae39d51faa2ed4d7e045f4ec2af31ec5f91768cff742e0364400cb1 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>Radio.tsx</strong><dd><code>Update ForwardedRef type for
Radio component</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3376/files#diff-cab2e6a6d80963fb89d93b52ac228ab8f2e2d9d60d3d2567547da562e922ac63 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>LogsServiceFilter.tsx</strong><dd><code>Update ForwardedRef
type for LogsServiceFilter</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3376/files#diff-a590a7298a9f040df9f26c4eb37d10fc36f47c32996f71aec47796f08c44e892 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>ReferencedSchemaSelect.tsx</strong><dd><code>Update
ForwardedRef type for ReferencedSchemaSelect</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3376/files#diff-450038e1607012a27e047ef0fa3e7c3ba58a4be7750940aa21c7166713b15c76 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>DataGrid.tsx</strong><dd><code>Update import syntax for
mergeRefs</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3376/files#diff-3bc6476aed14d8e4f26134fa452d22c41b6d3ecb0989871a8a99230a82496474 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>DataGridBooleanCell.tsx</strong><dd><code>Update
useDataGridCell generic type</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3376/files#diff-b700eacab9c73b147e248ce58d47a208c1e499124a20444efd73db7ecb68505f ">+1/-1</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>1
files</summary><table>
<tr>
<td><strong>getAllocatedResources.test.ts</strong><dd><code>Remove
replicas property from test cases</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3376/files#diff-c7db4fcf0770eb6e4eba76db64b1c705404538a3c204ea212028cad591c6d85a ">+0/-2</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Configuration
changes</strong></td><td><details><summary>4 files</summary><table>
<tr>
<td><strong>tsconfig.base.json</strong><dd><code>Update TypeScript
compiler options for ES2022</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3376/files#diff-1542b47836923af953e9f14d4db6843171edb79232ba834276394b4ed3035c63 ">+4/-15</a>
</td>
</tr>
<tr>
<td><strong>tsconfig.json</strong><dd><code>Update TypeScript target and
adjust paths</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3376/files#diff-9c3967d850eef2a3a17b5169df09de68ecb0f24ec46f0a9dd1b3ca7c6da7a384 ">+9/-4</a>
</td>
</tr>
<tr>
<td><strong>tsconfig.json</strong><dd><code>Add typeRoots to compiler
options</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3376/files#diff-aa2c7a9ede2c1897e087efac48742cf228b8af42e73dec31ec6403461b98c63a ">+6/-1</a>
</td>
</tr>
<tr>
<td><strong>tsconfig.json</strong><dd><code>Add typeRoots to compiler
options</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3376/files#diff-6b59df76b8f353267e50f13e5fdd23ff7490a417bdc9b7e9f4e94aaafa448dcd ">+7/-2</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Dependencies</strong></td><td><details><summary>2
files</summary><table>
<tr>
<td><strong>package.json</strong><dd><code>Upgrade react-merge-refs to
version 3.0.2</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3376/files#diff-2d8d55c799cd71f1b35e831f075f8178ed1734c4820a2ad548b4dd24d6938d7c ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>package.json</strong><dd><code>Upgrade TypeScript to version
5.8.3</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3376/files#diff-7ae45ad102eab3b6d7e7896acd08c427a9b25b346470d7bc6507b6481575d519 ">+2/-2</a>
</td>
</tr>
</table></details></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-07-01 11:07:17 +02:00
robertkasza
5ef3f76ea0
chore (dashboard): use new sdk on the dashboard ( #3374 )
...
### **PR Type**
Enhancement, Bug fix
___
### **Description**
- Migrate from @nhost/nextjs to @nhost/nhost-js-beta
- Update authentication flow and components
- Refactor Apollo client and GraphQL operations
- Implement new session management and storage
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Error
handling</strong></td><td><details><summary>1 files</summary><table>
<tr>
<td><strong>MfaOtpForm.tsx</strong><dd><code>Refactor MFA OTP form error
handling</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-88ee3610a0658d5eead85db025a5e91e74a4d2f2a836adf7eb44ff80888a613b ">+11/-9</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>66
files</summary><table>
<tr>
<td><strong>AccountMenu.tsx</strong><dd><code>Update account menu to use
new SDK hooks</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-57e70c7e6a22a5ab5271b2f36a54eabf544d9f62cd18dae83e2e89b125e77e0c ">+10/-10</a>
</td>
</tr>
<tr>
<td><strong>AuthenticatedLayout.tsx</strong><dd><code>Refactor
authenticated layout with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-2d69ccffd267658f76d77a864cdece93fc222e08f6025955795fc6f4697f60e7 ">+15/-13</a>
</td>
</tr>
<tr>
<td><strong>MobileNav.tsx</strong><dd><code>Update mobile navigation to
use new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-88408885daaec8805bd085b53462c9f2d95db32f7e523912837a8167211b4fb2 ">+14/-8</a>
</td>
</tr>
<tr>
<td><strong>UnauthenticatedLayout.tsx</strong><dd><code>Refactor
unauthenticated layout with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-54ee5ad9c01e99ffb05218020a6b97d091cd97cc53ad27e950480a3e675f2220 ">+2/-2</a>
</td>
</tr>
<tr>
<td><strong>ErrorToast.tsx</strong><dd><code>Update error toast to use
new SDK hooks</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-189ba99303a20e964b5e3f3d6f1cf95c6376780a59604d1dee98aa84d9a2a9dc ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>DisableMfaButton.tsx</strong><dd><code>Refactor MFA disable
button with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-8548174093cd8b3bcd754b630c0bcc946e7cdc80176f8e0f0540fd60c9e47486 ">+17/-18</a>
</td>
</tr>
<tr>
<td><strong>MfaQRCodeAndTOTPSecret.tsx</strong><dd><code>Update MFA
enable process with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-91870bba41e6e807ced8d185a9d61282540ca82741a938b12f20c4f452bdabf8 ">+30/-29</a>
</td>
</tr>
<tr>
<td><strong>useMfaEnabled.ts</strong><dd><code>Refactor MFA enabled hook
with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-31d2af339a8dd32beff8cce79962fa0dd23b6c89687b21aa75663ebeccb0b154 ">+3/-3</a>
</td>
</tr>
<tr>
<td><strong>CreatePATForm.tsx</strong><dd><code>Update PAT creation form
with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-75aecb06ebb3e3cd0de6bf253af6966e245e46e9b739314d49073ba2c80a3a90 ">+6/-6</a>
</td>
</tr>
<tr>
<td><strong>DeleteAccount.tsx</strong><dd><code>Refactor account
deletion with new SDK hooks</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-3d84927ffa4b91d986ff6c6f601b3476503220e1c1d8cde25ebf72c8d0ed6b9e ">+4/-3</a>
</td>
</tr>
<tr>
<td><strong>DisplayNameSetting.tsx</strong><dd><code>Update display name
setting with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-a1daec18d5c3196aee5b2c5303db5654724f8d37cfa427594951a4d02fbe32db ">+4/-2</a>
</td>
</tr>
<tr>
<td><strong>EmailSetting.tsx</strong><dd><code>Refactor email setting
with new SDK hooks</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-98bdf4ebec67ab2b4cd475c9df16a39a66505da961a8448eb5e41a33544dcb38 ">+4/-3</a>
</td>
</tr>
<tr>
<td><strong>useOnChangePasswordHandler.ts</strong><dd><code>Update
password change handler with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-be0c02de792e4ba1b71258eb3992bbc531bc37658cbad0e01e2db4419a9285f1 ">+4/-4</a>
</td>
</tr>
<tr>
<td><strong>useOnAddNewSecurityKeyHandler.ts</strong><dd><code>Refactor
security key addition with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-3514a6d1514269a83f37fc25e9cb24add9d5d74f9cf3341293c0e0f2a4c2e286 ">+10/-2</a>
</td>
</tr>
<tr>
<td><strong>useRemoveSecurityKey.ts</strong><dd><code>Update security
key removal with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-5683e00a14f39018d8fe58a3116c2a8ea6d2f2a83abb2177bbf0ee8ddf0f97b5 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>SocialProvidersSettings.tsx</strong><dd><code>Refactor
social providers settings with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-82d7c0c9eb3a23586998b6eadff9e56b123b14d03179212ca82439d3bdcd6e96 ">+14/-5</a>
</td>
</tr>
<tr>
<td><strong>useActionWithElevatedPermissions.ts</strong><dd><code>Update
elevated permissions hook with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-3390879c4a0cd70aa1db6672a1607c5c2444c0bf653b711d73eda8ee466aa61a ">+10/-16</a>
</td>
</tr>
<tr>
<td><strong>useElevatedPermissions.ts</strong><dd><code>Refactor
elevated permissions hook with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-c1e4f573300c771149cc2e59918c9acf2ae5f8a6680800a899707c70800ba144 ">+11/-10</a>
</td>
</tr>
<tr>
<td><strong>useGetSecurityKeys.ts</strong><dd><code>Update security keys
fetching with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-1f9fed870cab61f15e304342e4913edab0f5537eeb6230070de4b4f7173fa138 ">+3/-3</a>
</td>
</tr>
<tr>
<td><strong>useGithubAuthentication.ts</strong><dd><code>Refactor GitHub
authentication with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-fad4875e0f07391dadcfc7e2dd481cafd5172dbb740c47e56fa75beb271618e1 ">+16/-8</a>
</td>
</tr>
<tr>
<td><strong>SignInWithSecurityKey.tsx</strong><dd><code>Update security
key sign-in with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-dc892fd3d9fd3cc7efca35c813cea43c63aa691b1d55d376ac69a2d75065bde9 ">+9/-3</a>
</td>
</tr>
<tr>
<td><strong>VerifyEmailDialog.tsx</strong><dd><code>Refactor email
verification dialog for security key</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-24699641924d25d9b2d72b7df5da44d837e1c1e5c77b9f4b00f7c07d12c72c42 ">+4/-10</a>
</td>
</tr>
<tr>
<td><strong>useSignInWithSecurityKey.ts</strong><dd><code>Update
security key sign-in hook with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-14ce9eae9e1ec03512bdd55198fbce47a81ce8ce769d002164926d2cc76e91aa ">+34/-21</a>
</td>
</tr>
<tr>
<td><strong>MfaSignInOtpForm.tsx</strong><dd><code>Refactor MFA OTP form
for sign-in</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-91eba232beb0543b1e972ed9a21a0be797ed94b720487834bb3316a5dbd732f5 ">+1/-2</a>
</td>
</tr>
<tr>
<td><strong>SignInWithEmailAndPassword.tsx</strong><dd><code>Update
email/password sign-in with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-a2b70644663baf4f6f2cdffd846d4d743a5ca1f2a64c4b278b6f04c6c5c92161 ">+34/-12</a>
</td>
</tr>
<tr>
<td><strong>SignInWithEmailAndPasswordForm.tsx</strong><dd><code>Refactor
email/password sign-in form with loading state</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-a07fd6bd20c97d0c9c875e690cd3a80068fc58f74d3579feb210e189d32f5031 ">+5/-2</a>
</td>
</tr>
<tr>
<td><strong>useOnSignInWithEmailAndPasswordHandler.ts</strong><dd><code>Update
email/password sign-in handler with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-1a253bfc02c3267ab1c6b58c07aa06142b7e711d613b672c8420ff2861b12d27 ">+35/-37</a>
</td>
</tr>
<tr>
<td><strong>useRequestNewMfaTicket.ts</strong><dd><code>Refactor MFA
ticket request with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-64a3a91cf75c8faf5bf6a9fdd23978659d68888744a92f82602b1a2f7290c1f6 ">+12/-11</a>
</td>
</tr>
<tr>
<td><strong>useOnSignUpWithPasswordHandler.ts</strong><dd><code>Update
email/password sign-up handler with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-d1a80c5b1076129735ffff9ea879ca8c8fe88e548d06e98a1fb6bfd7147dae01 ">+14/-19</a>
</td>
</tr>
<tr>
<td><strong>useSignupWithSecurityKeyHandler.ts</strong><dd><code>Refactor
security key sign-up with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-cef4f710ea89c67e27e9fe77db2d2ebc6d774657e0671b21b7353f3e927126bd ">+24/-17</a>
</td>
</tr>
<tr>
<td><strong>CreateOrgFormDialog.tsx</strong><dd><code>Update
organization creation dialog with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-9a1ed9e851328393b81356d80ade3509016aa55c254ed1f4deb692b0bd96f02e ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>TransferProjectForm.tsx</strong><dd><code>Refactor project
transfer form with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-3324c79d8b4d48777467132ba0f13a95d4b0f1a9fbb4df9fd7f67735ac40cbbd ">+2/-2</a>
</td>
</tr>
<tr>
<td><strong>Soc2Download.tsx</strong><dd><code>Update SOC2 report
download with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-3768eb3fc718d4780028c34b5c76388e8d93cbbac94868f82c1a262fb9cc1100 ">+12/-19</a>
</td>
</tr>
<tr>
<td><strong>AnnouncementsTray.tsx</strong><dd><code>Refactor
announcements tray with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-88fdcce3e90fa9e4d172858ae702855f86e6ece724ba443d8a6ed918999a1630 ">+2/-2</a>
</td>
</tr>
<tr>
<td><strong>NotificationsTray.tsx</strong><dd><code>Update notifications
tray with new SDK hooks</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-8b559ee1d3176203e8a4e1588924d57944d09d792117ed578b27cd5401ee5d4f ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>OrgMember.tsx</strong><dd><code>Refactor organization member
component with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-a50b1baab968a7d3bd1459ba01107a13bd25e5077b6ad49a0d7e9dd88992276a ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>useFinishOrgCreation.ts</strong><dd><code>Update
organization creation finish hook with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-3b8bf7608ab36d8ab0df895e400f0d2d9e29fad2055b40b33d8d9912a27c99c3 ">+2/-2</a>
</td>
</tr>
<tr>
<td><strong>useIsOrgAdmin.ts</strong><dd><code>Refactor organization
admin check with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-216a850dad38e829d0a8892c34d87426cd68f10c92f4c647673667dbbd11464d ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>MessageBox.tsx</strong><dd><code>Update dev assistant
message box with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-d4dd97b5a55f8246836226333d35a1c18c2907e47bdd2654707ed43ac54f2fb8 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>ApplicationInfo.tsx</strong><dd><code>Refactor application
info component with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-7372ad22d70c3c354d8e0dd442eb7e49f70f65a386b934b6eee7f8c4b89c3a3f ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>ApplicationPausedBanner.tsx</strong><dd><code>Update paused
application banner with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-fa94285530f7118d9f27a2d9088f5cf6ba71879d14957d91eb01dba16b6b6f1c ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>RemoveApplicationModal.tsx</strong><dd><code>Refactor
application removal modal with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-e454a42c12dcbfcfaa463ab3421037408634e3a539f460525c79d68adfc118ab ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>useAppPausedReason.ts</strong><dd><code>Update app paused
reason hook with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-51d220574b3da84f08d2cb134682172ed11b908c4d855ccc8d9de30805921a00 ">+2/-2</a>
</td>
</tr>
<tr>
<td><strong>useCheckProvisioning.ts</strong><dd><code>Refactor
provisioning check hook with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-e1758bb8d3381f814d6619dc33eee8b36e39d2fcb6486d5c8cc3c46bbe62c555 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>useIsCurrentUserOwner.ts</strong><dd><code>Update current
user ownership check with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-3941cc4f23c66f12e94850e88e05ca142a627ab2d9ec797ff757dab679c58c0f ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>useProjectRedirectWhenReady.ts</strong><dd><code>Refactor
project redirect hook with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-a234bc908266de3091b23b5134a01fd769f96759eb52aa108d2ad4b796b0303f ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>ResetDatabasePasswordSettings.tsx</strong><dd><code>Update
database password reset with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-46fc60a26a2de3efb98e9778b1c6e82d62823ae5c7534037eb120728cba26288 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>DeploymentListItem.tsx</strong><dd><code>Refactor deployment
list item with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-2a548c457ff2ab8fc1bee326a6a3b5eae9d0d6eb18f5ae95bbdb437c3f6b0a73 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>SystemEnvironmentVariableSettings.tsx</strong><dd><code>Update
system environment variables with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-b952daa2a34e49a14c5a471477fa2d50583091e420d88a3b941503b092d18e5c ">+7/-4</a>
</td>
</tr>
<tr>
<td><strong>BaseDirectorySettings.tsx</strong><dd><code>Refactor base
directory settings with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-50bcccdf949a19ce69fa86acdd63b5291fa2beaba07191a62c87d40ea5b94e88 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>DeploymentBranchSettings.tsx</strong><dd><code>Update
deployment branch settings with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-d8fc80cc734f593c686f873536856bf9103efb1115ca865709bbeb7bd940895e ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>useAppClient.ts</strong><dd><code>Refactor app client hook
with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-0aa83222c0e0eac6f0058070de2b199e5e78514cbba405eb98d3693329a93e65 ">+13/-6</a>
</td>
</tr>
<tr>
<td><strong>useCurrentOrg.tsx</strong><dd><code>Update current
organization hook with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-97e1dbde4beece374834d5e81dd56fddeb5f1756a3358f6afecf88df93f6b0b0 ">+60/-3</a>
</td>
</tr>
<tr>
<td><strong>useOrgs.ts</strong><dd><code>Refactor organizations hook
with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-995629b13bac07ec5c0e79caa8f5f8df19fc842d1b8cfe8fd2b1fcd9448868c4 ">+5/-6</a>
</td>
</tr>
<tr>
<td><strong>useProject.ts</strong><dd><code>Update project hook with new
SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-ef96f340af7a87a1fc60c42d8f4de846a2a54fde830a9461c64cfbc99dc11128 ">+8/-10</a>
</td>
</tr>
<tr>
<td><strong>useProjectLogs.ts</strong><dd><code>Update project logs hook
with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-10efc67700b3f024dd03442eacd339802e951696d04caa76bd5a864bd5c7c83f ">+2/-3</a>
</td>
</tr>
<tr>
<td><strong>useProjectWithState.ts</strong><dd><code>Refactor project
with state hook using new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-4fa0e580d9f12e35ff5d2751597bf443bd055cd1c854cf6b356110724d424188 ">+7/-7</a>
</td>
</tr>
<tr>
<td><strong>DataGridPreviewCell.tsx</strong><dd><code>Update data grid
preview cell with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-d7bffe5896d2c9bac505fa9675790c59549d4fb35a2ad0cce903cc0aa31a8321 ">+7/-3</a>
</td>
</tr>
<tr>
<td><strong>FilesDataGrid.tsx</strong><dd><code>Refactor files data grid
with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-18c8df727e1a4fc6a94d03bd4a3a7a8cb3ad44d754803c4c7988c1c00a4b7caf ">+20/-15</a>
</td>
</tr>
<tr>
<td><strong>FilesDataGridControls.tsx</strong><dd><code>Update files
data grid controls with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-b85b40168e9c149331a68cb1a0cbec570c75233fa34385945e094b8f4c032974 ">+15/-30</a>
</td>
</tr>
<tr>
<td><strong>useAccessToken.ts</strong><dd><code>Add new hook for
accessing token with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-1e7322930841a7ee092650eedafab9b83a8eb2d376aa299f3dfd790304a7ad21 ">+9/-0</a>
</td>
</tr>
<tr>
<td><strong>useDecodedAccessToken.ts</strong><dd><code>Add new hook for
decoding access token</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-ff3f112dfd0dae55404d17d972f5309d9a8cf0859222061e1c6f10e52c442390 ">+28/-0</a>
</td>
</tr>
<tr>
<td><strong>useElevateEmail.ts</strong><dd><code>Add new hook for email
elevation with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-b38d4c8f500fe9f40d4649e78907fc2f8691bd950b377e85be9142226b2b3460 ">+26/-0</a>
</td>
</tr>
<tr>
<td><strong>useHasuraClaims.ts</strong><dd><code>Add new hook for Hasura
claims with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-f5352373468a509527f74db8d16a632905284009ed386ea50cd9fb7f42817431 ">+11/-0</a>
</td>
</tr>
<tr>
<td><strong>useUserData.ts</strong><dd><code>Add new hook for user data
with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-3e3f3684aba10abe1d06d0be625a8077efe2e7d6a17b79d5ecddd43cfc190224 ">+12/-0</a>
</td>
</tr>
<tr>
<td><strong>index.ts</strong><dd><code>Remove old remote application
GraphQL client hook</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-d2d725306920bf5413fc010843e4ca13570b225febb200330e8c6902ae0b085c ">+0/-1</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>1
files</summary><table>
<tr>
<td><strong>useProjectLogs.test.ts</strong><dd><code>Refactor project
logs test with new SDK</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3374/files#diff-13d900aa08d06962a09628136b893801ad62a96c3ff89d380c5c4b7ae92d891e ">+19/-31</a>
</td>
</tr>
</table></details></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-06-30 14:31:29 +02:00
David Barroso
4ca9641304
feat (docs): added cloud development documentation ( #3377 )
2025-06-25 23:24:10 +02:00
robertkasza
fd3b5c77e4
fix (dashboard): Limit new project name to a max of 32 chars ( #3371 )
...
### **PR Type**
Bug fix, Tests
___
### **Description**
- Limit new project name to 32 characters in E2E tests
- Update project creation test in upgrade-project.test.ts
- Add changeset for @nhost/dashboard patch
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>upgrade-project.test.ts</strong><dd><code>Limit project
name length in E2E test</code>
</dd></summary>
<hr>
dashboard/e2e/upgrade-project/upgrade-project.test.ts
<li>Modify project name generation to limit to 32 characters<br> <li>
Use <code>slice(0, 32)</code> on faker-generated project name
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3371/files#diff-8bafbe707eb1dff0c5ae24d6b0a514ff6e80889237de6c89ec330a93be138a12 ">+1/-1</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>weak-bottles-stare.md</strong><dd><code>Add changeset
for project name length fix</code>
</dd></summary>
<hr>
.changeset/weak-bottles-stare.md
<li>Add new changeset file for @nhost/dashboard patch<br> <li> Document
fix for limiting project name to 32 characters
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3371/files#diff-352316104f52e31fc130d1016f300d58c243319c6e6e434c9bc6912402117d6a ">+5/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-06-18 15:50:56 +02:00
robertkasza
9ed8ce8a5e
fix (dashboard): request new mfa ticket after error when signing in ( #3369 )
...
### **PR Type**
Bug fix
___
### **Description**
- Request new MFA ticket after invalid TOTP
- Improve error handling in MFA flow
- Add comprehensive tests for MfaOtpForm
- Refactor SignInWithEmailAndPassword component
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Tests</strong></td><td><details><summary>1
files</summary><table>
<tr>
<td><strong>MfaOtpForm.test.tsx</strong><dd><code>Add comprehensive
tests for MfaOtpForm component</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3369/files#diff-0a0a9d4aa607a60fb4f38712686101d583426536ff6c177ea625cf8ce1946971 ">+519/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>5
files</summary><table>
<tr>
<td><strong>MfaOtpForm.tsx</strong><dd><code>Implement MFA ticket
renewal and improve error handling</code> </dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3369/files#diff-88ee3610a0658d5eead85db025a5e91e74a4d2f2a836adf7eb44ff80888a613b ">+39/-12</a>
</td>
</tr>
<tr>
<td><strong>MfaSignInOtpForm.tsx</strong><dd><code>Add
requestNewMfaTicket prop to MfaSignInOtpForm</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3369/files#diff-91eba232beb0543b1e972ed9a21a0be797ed94b720487834bb3316a5dbd732f5 ">+7/-2</a>
</td>
</tr>
<tr>
<td><strong>SignInWithEmailAndPassword.tsx</strong><dd><code>Implement
requestNewMfaTicket function and pass to
MfaSignInOtpForm</code></dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3369/files#diff-a2b70644663baf4f6f2cdffd846d4d743a5ca1f2a64c4b278b6f04c6c5c92161 ">+20/-4</a>
</td>
</tr>
<tr>
<td><strong>useOnSignInWithEmailAndPasswordHandler.ts</strong><dd><code>Add
emailPasswordRef to store credentials for MFA renewal</code></dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3369/files#diff-1a253bfc02c3267ab1c6b58c07aa06142b7e711d613b672c8420ff2861b12d27 ">+19/-2</a>
</td>
</tr>
<tr>
<td><strong>useRequestNewMfaTicket.ts</strong><dd><code>Create new hook
for requesting new MFA ticket</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3369/files#diff-64a3a91cf75c8faf5bf6a9fdd23978659d68888744a92f82602b1a2f7290c1f6 ">+28/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Bug
fix</strong></td><td><details><summary>1 files</summary><table>
<tr>
<td><strong>email.tsx</strong><dd><code>Fix page title for sign-in
page</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3369/files#diff-b5d7db4460066bc114cb766771612d6f908bd6e440f40de98e4ac311a26b50cd ">+1/-1</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>1
files</summary><table>
<tr>
<td><strong>lovely-days-whisper.md</strong><dd><code>Add changeset for
MFA ticket renewal fix</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3369/files#diff-1d7e7e258210abb910bb9c392731a3195ffca03024082c4b357e61c475dd3e3f ">+5/-0</a>
</td>
</tr>
</table></details></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-06-18 14:02:18 +02:00
Ivan Kuznetsov
e7762cb2b5
fix (examples/nextjs-server-components): added missing await ( #3364 )
2025-06-17 11:53:38 +02:00
gssakash-nhost
e353d99de8
feat (examples/react-apollo): add more social providers ( #3339 )
...
### **User description**
___
### **PR Type**
Enhancement
___
### **Description**
- **Added OAuth Integrations**
Enabled OAuth for Spotify, Twitch, GitLab, Bitbucket, WorkOS, Discord,
AzureAD, Facebook, Strava, Windows Live, and Twitter.
- **Enhanced UI**
Added login buttons for each provider.
- **Updated Configuration**
Configured OAuth settings in `nhost.toml` and updated the authentication
version as necessary.
- **Included Example Credentials**
Added client credentials to `.secrets.example` for easy setup.
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>oauth-links.tsx</strong><dd><code>Add Spotify OAuth
button to login options</code>
</dd></summary>
<hr>
examples/react-apollo/src/components/auth/oauth-links.tsx
<li>Imported Spotify icon from react-simple-icons<br> <li> Added Spotify
to useProviderLink hook<br> <li> Implemented Spotify login button with
styling
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3339/files#diff-f5999fa99948c7a83619e69ab669da87ca10146ad5742f93112e21b00932bc0e ">+14/-2</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Configuration
changes</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>nhost.toml</strong><dd><code>Enable Spotify OAuth in
e2e test project</code>
</dd></summary>
<hr>
dashboard/e2e/e2e-tests-project/nhost/nhost.toml
- Enabled Spotify OAuth method
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3339/files#diff-9803f45ffb53ea1df64006a0bb2d3cb01ae0a3104f021945c546e97ee0e63f9e ">+1/-1</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>.secrets.example</strong><dd><code>Add Spotify
credentials to secrets example</code>
</dd></summary>
<hr>
examples/react-apollo/.secrets.example
- Added placeholders for Spotify client ID and secret
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3339/files#diff-8df9deedb2d447b8e687d9bddcdeb89e013380307483034c4fc8973354877703 ">+2/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>nhost.toml</strong><dd><code>Configure Spotify OAuth in
example project</code>
</dd></summary>
<hr>
examples/react-apollo/nhost/nhost.toml
<li>Enabled Spotify OAuth method<br> <li> Added configuration for
Spotify client ID and secret
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3339/files#diff-268d6c8dddd6990d60d62c1c923955c4e0e7549a80f0f5856192f889378416a0 ">+3/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
---------
Co-authored-by: David Barroso <dbarrosop@dravetech.com >
2025-06-13 11:06:43 +02:00
David Barroso
c4d289a4d5
chore (docs): added limits section ( #3367 )
...
### **PR Type**
Documentation, Enhancement
___
### **Description**
- Added new 'Limits' section to Functions overview
- Detailed function execution timeout limits by project tier
- Included custom timeout option for Enterprise tier
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>overview.mdx</strong><dd><code>Add Function Execution
Timeout Limits Section</code>
</dd></summary>
<hr>
docs/products/functions/overview.mdx
<li>Added new 'Limits' section after deployment information<br> <li>
Listed function execution timeout limits for different project tiers<br>
<li> Included Starter, Pro, Teams, and Enterprise tier limits<br> <li>
Mentioned custom timeout values for Enterprise tier
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3367/files#diff-c1e4e354976e7a602620f2540bb357b7d4d73853f8310342a75e1e14d4fd35f3 ">+9/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-06-12 14:24:32 +02:00
github-actions[bot]
e2065e22df
chore: update versions ( #3360 )
...
This PR was opened by the [Changesets
release](https://github.com/changesets/action ) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.
# Releases
## @nhost/dashboard@2.32 .0
### Minor Changes
- 736862c : fix: update link to base directory docs in git settings
- ea99fb3 : chore: dashboard: improve messaging when git connected
### Patch Changes
- d738884 : chore (dashboard): Add link about antivirus integration
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-06-10 14:17:38 +02:00
robertkasza
d738884d7d
chore (dashboard): Add link about antivirus integration ( #3363 )
...
### **PR Type**
Enhancement, Documentation
___
### **Description**
- Add antivirus integration documentation link
- Update HasuraStorageAVSettings component
- Create changeset for dashboard patch
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>HasuraStorageAVSettings.tsx</strong><dd><code>Add
antivirus documentation link to settings component</code>
</dd></summary>
<hr>
dashboard/src/features/orgs/projects/storage/settings/components/StorageAVSettings/HasuraStorageAVSettings.tsx
- Add `docsLink` prop to component with antivirus documentation URL
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3363/files#diff-8670582543f3e6a6b3352202b89823cd68828328a987107e6c538e962347e781 ">+1/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>pink-grapes-cheat.md</strong><dd><code>Add changeset
for dashboard antivirus link update</code>
</dd></summary>
<hr>
.changeset/pink-grapes-cheat.md
<li>Create new changeset file for dashboard patch<br> <li> Add
description for antivirus integration link addition
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3363/files#diff-08b9cb5cc1ddca46a96721dbb3e6982d1833985dc4342ec17b9c1e7dfefa7cb4 ">+5/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-06-10 13:46:09 +02:00
robertkasza
b50404566f
feat (dashboard): Add logs view to deployment page ( #3352 )
...
### **PR Type**
Enhancement, Documentation
___
### **Description**
- Add logs view to deployment page
- Refactor logs components for reusability
- Improve log filtering and service selection
- Update GraphQL queries and fragments
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>22
files</summary><table>
<tr>
<td><strong>LogsRegexFilter.tsx</strong><dd><code>Add reusable
LogsRegexFilter component</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3352/files#diff-349fe23e29895116a6e03cd9277c455860af99f3690cc267b2cc7a07628c2530 ">+87/-0</a>
</td>
</tr>
<tr>
<td><strong>index.ts</strong><dd><code>Export LogsRegexFilter
component</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3352/files#diff-7fa93132c67731a94b80233a459cab4e83f6c9f3f5adaa21661876bc4c4240bd ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>LogsServiceFilter.tsx</strong><dd><code>Add reusable
LogsServiceFilter component</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3352/files#diff-a590a7298a9f040df9f26c4eb37d10fc36f47c32996f71aec47796f08c44e892 ">+69/-0</a>
</td>
</tr>
<tr>
<td><strong>index.ts</strong><dd><code>Export LogsServiceFilter
component</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3352/files#diff-e75bdc4d69b5725a63a6867b58a41fe4a9892d20c528f91382342959954e6ec7 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>DeploymentDetails.tsx</strong><dd><code>Create
DeploymentDetails component with logs view</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3352/files#diff-e95736b80d6545cd9bab82a81263adef8e9c39f8428eae50420e4b65339b774b ">+161/-0</a>
</td>
</tr>
<tr>
<td><strong>DeploymentInfo.tsx</strong><dd><code>Add DeploymentInfo
component for log timestamps</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3352/files#diff-37a0e29e73146c3434fe95b0aa93b93f51db32211b2f2646e7248f7ac2dce1a6 ">+38/-0</a>
</td>
</tr>
<tr>
<td><strong>DeploymentServiceLogs.tsx</strong><dd><code>Implement
DeploymentServiceLogs component</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3352/files#diff-333a9783713e9a4bad1b5327e117cbe69148091abe8b9038d36132b5f4635bbe ">+59/-0</a>
</td>
</tr>
<tr>
<td><strong>DeploymentServiceLogsHeader.tsx</strong><dd><code>Create
DeploymentServiceLogsHeader component</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3352/files#diff-4f102c06ed32bb3d8245e415e76b0b14d2d4ae3abca6e234edf69278325c7a95 ">+81/-0</a>
</td>
</tr>
<tr>
<td><strong>index.tsx</strong><dd><code>Export DeploymentServiceLogs
component</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3352/files#diff-acd5fadae2f4f5f8a9de9717237d93ada3da2c3502bda78cfab123b9b8b4e8f3 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>index.ts</strong><dd><code>Export useDeployment
hook</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3352/files#diff-d45a44082ae4d2d5148c908d077ff69b69cf6ebcd8389e21f5381842cd1896f5 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>useDeployment.ts</strong><dd><code>Implement useDeployment
hook</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3352/files#diff-e733d29eeab1252ca05a48aa009938205b5f9b0b5e3f90535b6159c1e7ec9137 ">+59/-0</a>
</td>
</tr>
<tr>
<td><strong>index.ts</strong><dd><code>Export useProjectLogs
hook</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3352/files#diff-ae67977c734fbd0f10114658db5b715c09eb8cfe5ae720a96ae7692905e9071e ">+2/-0</a>
</td>
</tr>
<tr>
<td><strong>useProjectLogs.ts</strong><dd><code>Implement useProjectLogs
hook</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3352/files#diff-10efc67700b3f024dd03442eacd339802e951696d04caa76bd5a864bd5c7c83f ">+122/-0</a>
</td>
</tr>
<tr>
<td><strong>LogsBody.tsx</strong><dd><code>Update LogsBody
component</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3352/files#diff-b628e511a7fb9b237ac691b27ab9585eed0d0803144cde66c3af7fa6f9a2dc40 ">+49/-31</a>
</td>
</tr>
<tr>
<td><strong>LogsHeader.tsx</strong><dd><code>Refactor LogsHeader
component</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3352/files#diff-ebb3285aa776c9c5ea8b72672c4aafd55994c6c694998bbf56ca9c56d1e77664 ">+12/-125</a></td>
</tr>
<tr>
<td><strong>LogsServiceFilter.tsx</strong><dd><code>Remove
LogsServiceFilter component</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3352/files#diff-52634b3870eb08646192600c3ec6bb2737750327dcfa5c08435d99a108fb057c ">+0/-29</a>
</td>
</tr>
<tr>
<td><strong>LogsRangeSelector.tsx</strong><dd><code>Update
LogsRangeSelector component</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3352/files#diff-46dd7c795a79e4b443213ed10089651423d13e5c776ca72e3a95ae5e0f7f63c8 ">+14/-11</a>
</td>
</tr>
<tr>
<td><strong>services.ts</strong><dd><code>Add custom templates fetcher
service</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3352/files#diff-8fcdaed33322718091b613ae22c65cc3eb61972904b5af46866b160c9bbbe48c ">+2/-0</a>
</td>
</tr>
<tr>
<td><strong>[deploymentId].tsx</strong><dd><code>Update deployment
details page</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3352/files#diff-fbf95e7970ecb8157795fe4d1803c6913b1ba78183fa8a9b0ca9b9e4e9eccba2 ">+3/-144</a>
</td>
</tr>
<tr>
<td><strong>logs.tsx</strong><dd><code>Refactor logs page to use new
hooks</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3352/files#diff-77489a68a7526d74f06d59019ad68c44728b7620637308d70fba38d6649b73fa ">+9/-119</a>
</td>
</tr>
<tr>
<td><strong>graphql.ts</strong><dd><code>Update generated GraphQL
types</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3352/files#diff-fbd5db84b560b1c91675004448c6c7fa0dcbfb28b9eb05d53b03e6cb7b83ebac ">+75/-23</a>
</td>
</tr>
<tr>
<td><strong>deployments.graphql</strong><dd><code>Update GraphQL queries
and fragments</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3352/files#diff-c8c4668b1999c73e78eb706631ce9d0e0e41debf66e616350436af4ae3095b76 ">+31/-22</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>3
files</summary><table>
<tr>
<td><strong>useDeployment.test.ts</strong><dd><code>Add tests for
useDeployment hook</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3352/files#diff-37c7c86c6c93931c8794f241db0605267d1a051786972c1ab763ca0fe94f2b2b ">+183/-0</a>
</td>
</tr>
<tr>
<td><strong>updateQuery.test.ts</strong><dd><code>Add tests for
updateQuery function</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3352/files#diff-9eeaaad41f9097bab3be3769f17e4de74c642d5a2313899df3663e1bd3856b30 ">+324/-0</a>
</td>
</tr>
<tr>
<td><strong>useProjectLogs.test.ts</strong><dd><code>Add tests for
useProjectLogs hook</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3352/files#diff-13d900aa08d06962a09628136b893801ad62a96c3ff89d380c5c4b7ae92d891e ">+328/-0</a>
</td>
</tr>
</table></details></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-06-10 12:01:45 +02:00
Emory Mercera
8caf3daa54
Improve sentence flow of paragraph. ( #3359 )
...
Improve sentence flow of paragraph.
2025-06-10 11:08:27 +02:00
Calvin
8a07613cbe
fix(examples/docker-compose): fix postgres persistent data storage path ( #3346 )
2025-06-10 11:08:21 +02:00
David BM
736862c9cc
fix (dashboard): update link to base directory docs in git settings ( #3358 )
...
### **PR Type**
Bug fix
___
### **Description**
- Update link to base directory docs in git settings
- Correct URL for base directory documentation
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>BaseDirectorySettings.tsx</strong><dd><code>Update Base
Directory Documentation Link</code>
</dd></summary>
<hr>
dashboard/src/features/orgs/projects/git/settings/components/BaseDirectorySettings/BaseDirectorySettings.tsx
<li>Updated <code>docsLink</code> prop with correct URL for base
directory <br>documentation
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3358/files#diff-50bcccdf949a19ce69fa86acdd63b5291fa2beaba07191a62c87d40ea5b94e88 ">+1/-1</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>rich-cups-nail.md</strong><dd><code>Add Changeset for
Documentation Link Update</code>
</dd></summary>
<hr>
.changeset/rich-cups-nail.md
<li>Added changeset file for minor version bump<br> <li> Described fix
for updating base directory docs link
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3358/files#diff-d085c64fa4e5869bd8d8aa20ef902840240daf6463c463f5a2ae9001932e961b ">+5/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-06-06 16:12:41 +02:00
Nuno Pato
ea99fb31d7
chore: dashboard: improve messaging then git connected ( #3348 )
...
### **PR Type**
Enhancement, Documentation
___
### **Description**
- Improved GitHub connection messaging in SettingsLayout
- Updated DataBrowserSidebar for GitHub-connected projects
- Added 'graphite' to READ_ONLY_SCHEMAS list
- Created changeset for dashboard version bump
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>SettingsLayout.tsx</strong><dd><code>Redesign GitHub
connection alert in SettingsLayout</code>
</dd></summary>
<hr>
dashboard/src/features/orgs/layout/SettingsLayout/SettingsLayout.tsx
<li>Redesigned GitHub connection alert<br> <li> Changed alert severity
from warning to info<br> <li> Improved text content and styling<br> <li>
Added link to configuration overlays documentation
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3348/files#diff-aa21cda513a125d8cefc5e7b5e1c755128aa904657350abf0ce1cde21e27ca75 ">+36/-30</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>DataBrowserSidebar.tsx</strong><dd><code>Update GitHub
connection message in DataBrowserSidebar</code>
</dd></summary>
<hr>
dashboard/src/features/orgs/projects/database/dataGrid/components/DataBrowserSidebar/DataBrowserSidebar.tsx
<li>Updated GitHub connection message in DataBrowserSidebar<br> <li>
Simplified text and added InfoIcon<br> <li> Improved layout and styling
of the message
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3348/files#diff-3a9ff7af4a31fbf7e501a77399b2b35306d9e635b021c93f1bc13fc4e225219c ">+5/-7</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Configuration
changes</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>common.ts</strong><dd><code>Add 'graphite' to
READ_ONLY_SCHEMAS constant</code>
</dd></summary>
<hr>
dashboard/src/utils/constants/common/common.ts
- Added 'graphite' to READ_ONLY_SCHEMAS list
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3348/files#diff-91900e60832d94013a6834c72bb53bb89419ad2412d9f46aa16b60ff4090d0a6 ">+1/-1</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>rich-pillows-teach.md</strong><dd><code>Add changeset
for dashboard version bump</code>
</dd></summary>
<hr>
.changeset/rich-pillows-teach.md
<li>Created changeset file for minor version bump<br> <li> Added
description of changes for @nhost/dashboard
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3348/files#diff-80c4d9304d4ac2cca6acd40a4909dd85be2d333b64c3a8a25d84bfa6201d9122 ">+5/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
---------
Co-authored-by: robertkasza <167509084+robertkasza@users.noreply.github.com >
2025-06-05 21:01:23 +00:00
github-actions[bot]
70433187cc
chore: update versions ( #3355 )
...
This PR was opened by the [Changesets
release](https://github.com/changesets/action ) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.
# Releases
## @nhost/hasura-auth-js@2.12 .0
### Minor Changes
- 39b10a2 : feat (dashboard): Add multi-factor authentication
## @nhost/react@3.11 .0
### Minor Changes
- 39b10a2 : feat (dashboard): Add multi-factor authentication
- 4b84780 : feat (dashboard): Add Webauthn to dashboard
### Patch Changes
- @nhost/nhost-js@3.2.9
## @nhost/apollo@8.0.9
### Patch Changes
- @nhost/nhost-js@3.2.9
## @nhost/react-apollo@18.0.0
### Patch Changes
- Updated dependencies [39b10a2 ]
- Updated dependencies [4b84780 ]
- @nhost/react@3.11 .0
- @nhost/apollo@8.0.9
## @nhost/react-urql@15.0.0
### Patch Changes
- Updated dependencies [39b10a2 ]
- Updated dependencies [4b84780 ]
- @nhost/react@3.11 .0
## @nhost/nextjs@2.2.8
### Patch Changes
- Updated dependencies [39b10a2 ]
- Updated dependencies [4b84780 ]
- @nhost/react@3.11 .0
## @nhost/nhost-js@3.2.9
### Patch Changes
- Updated dependencies [39b10a2 ]
- @nhost/hasura-auth-js@2.12 .0
## @nhost/vue@2.9.6
### Patch Changes
- @nhost/nhost-js@3.2.9
## @nhost/dashboard@2.31 .0
### Minor Changes
- 39b10a2 : feat (dashboard): Add multi-factor authentication
- 4b84780 : feat (dashboard): Add Webauthn to dashboard
### Patch Changes
- 61eb6cd : fix (dashboard): Fix update project e2e test
- @nhost/react-apollo@18.0.0
- @nhost/nextjs@2.2.8
## @nhost-examples/cli@0.3.22
### Patch Changes
- @nhost/nhost-js@3.2.9
## @nhost-examples/codegen-react-apollo@0.8.1
### Patch Changes
- Updated dependencies [39b10a2 ]
- Updated dependencies [4b84780 ]
- @nhost/react@3.11 .0
- @nhost/react-apollo@18.0.0
## @nhost-examples/codegen-react-query@0.8.1
### Patch Changes
- Updated dependencies [39b10a2 ]
- Updated dependencies [4b84780 ]
- @nhost/react@3.11 .0
## @nhost-examples/codegen-react-urql@0.7.1
### Patch Changes
- Updated dependencies [39b10a2 ]
- Updated dependencies [4b84780 ]
- @nhost/react@3.11 .0
- @nhost/react-urql@15.0.0
## @nhost-examples/multi-tenant-one-to-many@2.2.23
### Patch Changes
- @nhost/nhost-js@3.2.9
## @nhost-examples/nextjs@0.4.8
### Patch Changes
- Updated dependencies [39b10a2 ]
- Updated dependencies [4b84780 ]
- @nhost/react@3.11 .0
- @nhost/react-apollo@18.0.0
- @nhost/nextjs@2.2.8
## @nhost-examples/node-storage@0.2.22
### Patch Changes
- @nhost/nhost-js@3.2.9
## @nhost-examples/nextjs-server-components@0.6.1
### Patch Changes
- @nhost/nhost-js@3.2.9
## @nhost-examples/sveltekit@0.8.1
### Patch Changes
- @nhost/nhost-js@3.2.9
## @nhost-examples/react-apollo@1.6.1
### Patch Changes
- Updated dependencies [39b10a2 ]
- Updated dependencies [4b84780 ]
- @nhost/react@3.11 .0
- @nhost/react-apollo@18.0.0
## @nhost-examples/react-gqty@1.6.1
### Patch Changes
- Updated dependencies [39b10a2 ]
- Updated dependencies [4b84780 ]
- @nhost/react@3.11 .0
## @nhost-examples/react-native@0.1.9
### Patch Changes
- Updated dependencies [39b10a2 ]
- Updated dependencies [4b84780 ]
- @nhost/react@3.11 .0
- @nhost/react-apollo@18.0.0
## @nhost-examples/vue-apollo@0.12 .1
### Patch Changes
- @nhost/nhost-js@3.2.9
- @nhost/apollo@8.0.9
- @nhost/vue@2.9.6
## @nhost-examples/vue-quickstart@0.6.1
### Patch Changes
- @nhost/apollo@8.0.9
- @nhost/vue@2.9.6
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-06-05 12:39:48 +02:00
robertkasza
39b10a2e9f
feat (dashboard): Add mfa ( #3342 )
...
### **PR Type**
Enhancement
___
### **Description**
- Add multi-factor authentication (MFA) to dashboard
- Implement MFA OTP form and QR code generation
- Create MFA settings and activation components
- Update sign-in process to support MFA
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>19
files</summary><table>
<tr>
<td><strong>MfaOtpForm.tsx</strong><dd><code>Create reusable MFA OTP
form component</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3342/files#diff-88ee3610a0658d5eead85db025a5e91e74a4d2f2a836adf7eb44ff80888a613b ">+61/-0</a>
</td>
</tr>
<tr>
<td><strong>index.ts</strong><dd><code>Export MfaOtpForm
component</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3342/files#diff-9c1deb50c3a92ca5494be705635984a97e1b41b07cd0847168a4eeddf0e375d0 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>AccountMfaSettings.tsx</strong><dd><code>Implement MFA
settings component</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3342/files#diff-4eb33e0f23780eaf93fd7d86850b263d83b05dc2d7a3f6ed9e30d1ca811f17af ">+32/-0</a>
</td>
</tr>
<tr>
<td><strong>GenerateMfaQRCodeButton.tsx</strong><dd><code>Create button
to generate MFA QR code</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3342/files#diff-7310648a5e879bb76ba6c3136fe555ed3bbdacddc33eef4ce8fc9c21a547ec82 ">+50/-0</a>
</td>
</tr>
<tr>
<td><strong>MfaQRCode.tsx</strong><dd><code>Implement MFA QR code
generation component</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3342/files#diff-0c60d61f12b47e421c67c389c66399da76af4b32241610fe94c6635353e57da2 ">+49/-0</a>
</td>
</tr>
<tr>
<td><strong>useActivateMfa.ts</strong><dd><code>Create hook for MFA
activation</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3342/files#diff-0ae70fc9df5a3a6828f7a266db8036107ce9ea705cd318d3a1c4b7304d8522ba ">+46/-0</a>
</td>
</tr>
<tr>
<td><strong>useMfaEnabled.ts</strong><dd><code>Create hook to check MFA
status</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3342/files#diff-31d2af339a8dd32beff8cce79962fa0dd23b6c89687b21aa75663ebeccb0b154 ">+17/-0</a>
</td>
</tr>
<tr>
<td><strong>index.ts</strong><dd><code>Export AccountMfaSettings
component</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3342/files#diff-8c530fc016dd3569f2b7ec7e9085b99c99922ed077357bec562b8c9acaead24a ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>SecurityKeyList.tsx</strong><dd><code>Update import path for
useGetSecurityKeys</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3342/files#diff-966a157d381be33bc876e76b28f804e80cae6edb1aa088e78f883063966be3ba ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>useOnAddNewSecurityKeyHandler.ts</strong><dd><code>Update
import paths for hooks</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3342/files#diff-3514a6d1514269a83f37fc25e9cb24add9d5d74f9cf3341293c0e0f2a4c2e286 ">+2/-2</a>
</td>
</tr>
<tr>
<td><strong>useRemoveSecurityKey.ts</strong><dd><code>Update import
paths for hooks</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3342/files#diff-5683e00a14f39018d8fe58a3116c2a8ea6d2f2a83abb2177bbf0ee8ddf0f97b5 ">+2/-2</a>
</td>
</tr>
<tr>
<td><strong>useElevatedPermissions.ts</strong><dd><code>Create hook for
elevated permissions</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3342/files#diff-c1e4f573300c771149cc2e59918c9acf2ae5f8a6680800a899707c70800ba144 ">[link]</a>
</td>
</tr>
<tr>
<td><strong>useGetSecurityKeys.ts</strong><dd><code>Create hook to fetch
security keys</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3342/files#diff-1f9fed870cab61f15e304342e4913edab0f5537eeb6230070de4b4f7173fa138 ">[link]</a>
</td>
</tr>
<tr>
<td><strong>MfaSignInOtpForm.tsx</strong><dd><code>Create MFA sign-in
OTP form component</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3342/files#diff-91eba232beb0543b1e972ed9a21a0be797ed94b720487834bb3316a5dbd732f5 ">+26/-0</a>
</td>
</tr>
<tr>
<td><strong>SignInWithEmailAndPassword.tsx</strong><dd><code>Update
sign-in component to support MFA</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3342/files#diff-a2b70644663baf4f6f2cdffd846d4d743a5ca1f2a64c4b278b6f04c6c5c92161 ">+16/-0</a>
</td>
</tr>
<tr>
<td><strong>SignInWithEmailAndPasswordForm.tsx</strong><dd><code>Implement
sign-in form with MFA support</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3342/files#diff-a07fd6bd20c97d0c9c875e690cd3a80068fc58f74d3579feb210e189d32f5031 ">+91/-0</a>
</td>
</tr>
<tr>
<td><strong>useOnSignInWithEmailAndPasswordHandler.ts</strong><dd><code>Create
hook for sign-in with MFA</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3342/files#diff-1a253bfc02c3267ab1c6b58c07aa06142b7e711d613b672c8420ff2861b12d27 ">+56/-0</a>
</td>
</tr>
<tr>
<td><strong>useSignInWithEmailAndPasswordForm.ts</strong><dd><code>Create
hook for sign-in form validation</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3342/files#diff-b908e474c0fb54db9c922d9fef7cf1ef6c4ccb0dd7519da0c45a18e5bb26ed40 ">+30/-0</a>
</td>
</tr>
<tr>
<td><strong>index.ts</strong><dd><code>Export SignInWithEmailAndPassword
component</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3342/files#diff-d3fd195b5ca8ece9eac446129e8501793e5bd6e5c167ed36c8c6d0adc1723fda ">+1/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Additional
files</strong></td><td><details><summary>8 files</summary><table>
<tr>
<td><strong>mighty-onions-crash.md</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3342/files#diff-834d585225de297c20c9e325a231c6d3a72227fc1d8cc84b0c1f8fe0dbb1c523 ">+7/-0</a>
</td>
</tr>
<tr>
<td><strong>getActiveMfaType.gql</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3342/files#diff-ac5aa6c409363b550d15aace147448c5e267a3cf0fb7f86faf5060f8cbe35302 ">+5/-0</a>
</td>
</tr>
<tr>
<td><strong>index.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3342/files#diff-61a48d15d3a2e29160a6d91cd01501ac94cf9f70995c6a84fbb6d6e2c2d4fca1 ">+4/-0</a>
</td>
</tr>
<tr>
<td><strong>email.tsx</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3342/files#diff-b5d7db4460066bc114cb766771612d6f908bd6e440f40de98e4ac311a26b50cd ">+16/-152</a></td>
</tr>
<tr>
<td><strong>graphql.ts</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3342/files#diff-fbd5db84b560b1c91675004448c6c7fa0dcbfb28b9eb05d53b03e6cb7b83ebac ">+80/-35</a>
</td>
</tr>
<tr>
<td><strong>enable-mfa.ts</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3342/files#diff-8ed0174991b707a5c54f54ec881656403b4409cd0e3d7004045a80dbeb7b4444 ">+1/-4</a>
</td>
</tr>
<tr>
<td><strong>index.ts</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3342/files#diff-1cee8646d2cfba37d6ce6a6e9a8d16f8caba0b99fc3a1ad0cb997ed8c7384d2e ">+7/-1</a>
</td>
</tr>
<tr>
<td><strong>useSignInEmailPassword.ts</strong></td>
<td><a
href="https://github.com/nhost/nhost/pull/3342/files#diff-107884d4022cd6c01459f001fa97d2b2ce11566a2c88c8deaec4727c1af44aba ">+6/-8</a>
</td>
</tr>
</table></details></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-06-05 11:38:49 +02:00
robertkasza
4b8478004e
feat (dashboard): Add Webauthn to dashboard ( #3320 )
2025-06-05 10:28:42 +02:00
robertkasza
61eb6cdc2d
fix (dashboard): fix e2e test ( #3354 )
...
### **PR Type**
Bug fix, Tests
___
### **Description**
- Refactored e2e test for project upgrade
- Removed unnecessary 'await' keywords
- Added step to save payment information
- Commented out local dashboard image build and tests
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>upgrade-project.test.ts</strong><dd><code>Refactor and
enhance upgrade project e2e test</code>
</dd></summary>
<hr>
dashboard/e2e/upgrade-project/upgrade-project.test.ts
<li>Removed redundant 'await' keywords<br> <li> Added step to save
payment information<br> <li> Simplified assertions and variable
assignments<br> <li> Minor code cleanup and formatting
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3354/files#diff-8bafbe707eb1dff0c5ae24d6b0a514ff6e80889237de6c89ec330a93be138a12 ">+18/-16</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Configuration
changes</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>ci.yaml</strong><dd><code>Modify CI workflow to focus
on specific tests</code>
</dd></summary>
<hr>
.github/workflows/ci.yaml
<li>Commented out local dashboard image build step<br> <li> Removed
Nhost CLI installation and local tests<br> <li> Disabled general e2e
tests run
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3354/files#diff-944291df2c9c06359d37cc8833d182d705c9e8c3108e7cfe132d61a06e9133dd ">+21/-21</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-06-05 09:17:46 +02:00
github-actions[bot]
14187d381f
chore: update versions ( #3332 )
...
This PR was opened by the [Changesets
release](https://github.com/changesets/action ) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.
# Releases
## @nhost/dashboard@2.30 .0
### Minor Changes
- f6947a2 : fix: fetch job-backup services logs using Live filter
- 44a3e6b : fix: collapsed main navigation sidebar overlaps mobile navbar
- 99b78f1 : feat: dashboard: add download button for soc2 report
- 9acae7d : fix: e2e tests, stop on error when refreshing metadata
### Patch Changes
- 31e636a : fix (dashboard): Use the correct payload to reset metadata
before the e2e tests
## @nhost/docs@2.32 .0
### Minor Changes
- df51c3e : fix: added installation instructions for the CLI
### Patch Changes
- 4d835c4 : fix: remove nodejs18
- 2aa81a6 : fix (docs): fix audit
## @nhost-examples/nextjs-server-components@0.6.0
### Minor Changes
- 6ee2d1f : fix: proper use of onError in middleware
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-06-03 18:33:21 +00:00
Nuno Pato
99b78f147e
feat: dashboard: add download button for soc2 report ( #3349 )
...
### **PR Type**
Enhancement
___
### **Description**
- Add SOC2 report download button for eligible organizations
- Implement Soc2Download component with error handling
- Update settings page to include Soc2Download component
- Add environment variable for SOC2 report file ID
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>Soc2Download.tsx</strong><dd><code>Implement
Soc2Download Component</code>
</dd></summary>
<hr>
dashboard/src/features/orgs/components/general/components/Soc2Download/Soc2Download.tsx
<li>Create Soc2Download component with download functionality<br> <li>
Implement eligibility check for Team and Enterprise plans<br> <li> Add
error handling and user feedback for download process<br> <li> Design UI
for SOC2 report download section
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3349/files#diff-3768eb3fc718d4780028c34b5c76388e8d93cbbac94868f82c1a262fb9cc1100 ">+88/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>index.ts</strong><dd><code>Export Soc2Download
Component</code>
</dd></summary>
<hr>
dashboard/src/features/orgs/components/general/components/Soc2Download/index.ts
- Export Soc2Download component as default
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3349/files#diff-6c2a578aa4d31c64a57076a451d5bc1b5144f3ea25f5d37f1b52a0080a92f42a ">+1/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>settings.tsx</strong><dd><code>Add Soc2Download to
Settings Page</code>
</dd></summary>
<hr>
dashboard/src/pages/orgs/[orgSlug]/settings.tsx
<li>Import Soc2Download component<br> <li> Add Soc2Download component to
OrgSettings page
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3349/files#diff-cb1b8a7cd77683034723d5f9a8ac429959db814ea2916ceaf0a3a5a5dae1515b ">+2/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>spicy-walls-joke.md</strong><dd><code>Add Changeset for
SOC2 Download Feature</code>
</dd></summary>
<hr>
.changeset/spicy-walls-joke.md
<li>Add changeset for minor version bump<br> <li> Describe feature
addition for SOC2 report download
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3349/files#diff-071df030006660706aa82d8a7cb94423abdc0b687bccbf6668dfbcd0dde43725 ">+5/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Configuration
changes</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>.env.example</strong><dd><code>Add SOC2 Report File ID
Environment Variable</code>
</dd></summary>
<hr>
dashboard/.env.example
- Add NEXT_PUBLIC_SOC2_REPORT_FILE_ID environment variable
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3349/files#diff-b47cf46119af2f0298d96e5657e53e57161833e8b02d87526ac5c1ed9393d477 ">+3/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-06-03 15:04:05 +00:00
robertkasza
2aa81a6cb9
fix (docs): fix audit ( #3351 )
...
### **PR Type**
Bug fix, Documentation
___
### **Description**
- Update audit-ci.jsonc to allow CVE-2025-48068 for 'next'
- Add new security patches in package.json
- Create changeset for @nhost/docs patch
- Improve documentation and audit compliance
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>yellow-drinks-sort.md</strong><dd><code>Add changeset
for @nhost/docs patch</code>
</dd></summary>
<hr>
.changeset/yellow-drinks-sort.md
<li>Add new changeset file for @nhost/docs<br> <li> Specify patch
version update<br> <li> Include fix message for documentation audit
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3351/files#diff-217398d60b2d9d1a3e219e315bd0d9f9fee076071dcdc83e5d649491689a11f0 ">+5/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Configuration
changes</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>audit-ci.jsonc</strong><dd><code>Update audit-ci.jsonc
allowlist for security exception</code>
</dd></summary>
<hr>
audit-ci.jsonc
- Add allowlist entry for CVE-2025-48068 in 'next' path
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3351/files#diff-4ede69da2a1704e53e08b8d647a315c202f037cc9277f16c94176d9622d261c6 ">+1/-1</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Dependencies</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>package.json</strong><dd><code>Update package.json with
new security patches</code>
</dd></summary>
<hr>
package.json
<li>Add new security patches for undici and tar-fs<br> <li> Update
existing security patch versions<br> <li> Adjust formatting for
consistency
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3351/files#diff-7ae45ad102eab3b6d7e7896acd08c427a9b25b346470d7bc6507b6481575d519 ">+4/-2</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-06-03 16:01:52 +02:00
David BM
a1edaf18ea
fix: update requirements in DEVELOPERS.md ( #3345 )
...
### **User description**
Update requirements for development to Node.js 20
___
### **PR Type**
Documentation
___
### **Description**
- Update Node.js requirement to v20 or later
- Remove mention of Node.js v16 support
- Simplify Node.js version requirement section
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>DEVELOPERS.md</strong><dd><code>Update Node.js version
requirement</code>
</dd></summary>
<hr>
DEVELOPERS.md
<li>Updated Node.js requirement to v20 or later<br> <li> Removed mention
of Node.js v16 support<br> <li> Simplified Node.js version requirement
section
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3345/files#diff-bd017515eb79a7fb7569b1d15e8963ea380123d4fdf779978dd4b3ab7500fd10 ">+1/-3</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
Co-authored-by: David Barroso Murcia <davidbm@air-m4.local >
2025-05-22 12:14:15 +02:00
David Barroso
4d835c4b9c
fix (docs): remove nodejs18 ( #3343 )
...
### **PR Type**
Documentation
___
### **Description**
- Remove Node.js 18 runtime from supported versions
- Update documentation to reflect current runtimes
- Remove Node.js 18 configuration example
- Add changeset for patch update to @nhost/docs
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>brave-garlics-act.md</strong><dd><code>Add changeset
for removing Node.js 18</code>
</dd></summary>
<hr>
.changeset/brave-garlics-act.md
<li>Add new changeset file for @nhost/docs patch update<br> <li>
Describe fix to remove Node.js 18
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3343/files#diff-af4dedaee65af3f90491e3eea21a6996fec17988247ad9779ed1b623f386eba6 ">+5/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>runtimes.mdx</strong><dd><code>Update runtimes
documentation to remove Node.js 18</code>
</dd></summary>
<hr>
docs/products/functions/runtimes.mdx
<li>Remove Node.js 18 from list of supported runtimes<br> <li> Delete
Node.js 18 configuration example<br> <li> Update supported versions to
Node.js 20 and 22
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3343/files#diff-41cc586838cadca39a91bf32878fb7cc5473d5815dec595547a4089684b5d489 ">+0/-9</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-05-20 22:19:18 +02:00
David BM
44a3e6bd41
fix (dashboard): collapsed main navigation sidebar overlaps mobile navbar ( #3341 )
2025-05-20 22:05:58 +02:00
Dimitri POSTOLOV
6ee2d1f5bf
fix (examples/nextjs-server-components): proper use of onError in middleware ( #3330 )
...
onError should be returned since it can contain `NextResponse.redirect`
like in the example
e87505c564/examples/quickstarts/nextjs-server-components/src/middleware.ts (L5-L7)
---------
Co-authored-by: David Barroso <dbarrosop@dravetech.com >
2025-05-19 11:21:06 +02:00
Calvin
df51c3e64e
fix (docs): added installation instructions for the CLI ( #3329 )
...
Co-authored-by: David Barroso <dbarrosop@dravetech.com >
2025-05-16 09:01:45 +02:00
David BM
9acae7d1c4
fix (dashboard ci): stop playwright e2e tests run after first failure ( #3334 )
...
### **PR Type**
Bug fix, Enhancement
___
### **Description**
- Reload metadata for Graphite's remote schemas in e2e tests
- Add 'reload_remote_schemas' parameter to metadata reload
- Include Changeset for version tracking
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>refresh-metadata.setup.ts</strong><dd><code>Add
Graphite remote schema to metadata reload</code>
</dd></summary>
<hr>
dashboard/e2e/setup/refresh-metadata.setup.ts
<li>Add 'reload_remote_schemas' parameter with value ['graphite']<br>
<li> Include Graphite remote schema in metadata reload
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3334/files#diff-e32371f0138a80b833384d09a2b1fcc0de848b555823c16c0e9a96ed441edc8a ">+1/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>wild-stingrays-help.md</strong><dd><code>Add changeset
for dashboard version update</code>
</dd></summary>
<hr>
.changeset/wild-stingrays-help.md
<li>Create new changeset file<br> <li> Specify minor version bump for
'@nhost/dashboard'<br> <li> Add description of the fix
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3334/files#diff-b5a0c57a4f2bd08515f9feef3c38804e7f948ffb4b76418f6549131f61cf20fd ">+5/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-05-15 18:03:29 +02:00
David BM
f6947a2194
fix (dashboard): logs page, fetch job-backup services logs using Live filter ( #3333 )
...
### **User description**
Adds `job-backup.+` regex pattern to the service filter in the logs
subscription, to match any job-backup services
___
### **PR Type**
Bug fix, Enhancement
___
### **Description**
- Fix logs fetching for job-backup services
- Implement regex pattern for job-backup service filter
- Improve live log subscription functionality
- Add changeset for version tracking
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>logs.tsx</strong><dd><code>Improve log fetching for
job-backup services</code>
</dd></summary>
<hr>
dashboard/src/pages/orgs/[orgSlug]/projects/[appSubdomain]/logs.tsx
<li>Modify service filter in logs subscription<br> <li> Implement regex
pattern 'job-backup.+' for job-backup services<br> <li> Enhance
conditional logic for service filtering
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3333/files#diff-77489a68a7526d74f06d59019ad68c44728b7620637308d70fba38d6649b73fa ">+4/-1</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>hungry-waves-destroy.md</strong><dd><code>Add changeset
for version tracking</code>
</dd></summary>
<hr>
.changeset/hungry-waves-destroy.md
<li>Add new changeset file<br> <li> Specify minor version bump for
@nhost/dashboard<br> <li> Document fix for job-backup services logs
fetching
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3333/files#diff-45dd073b01febac00c055bb63f51182ff043ee7a5df2c12058232caf2d2a31ca ">+5/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-05-14 13:55:11 +02:00
robertkasza
31e636a9c8
fix (dashboard): Use the correct payload to reset metadata before e2 tests ( #3331 )
...
### **PR Type**
Bug fix, Tests
___
### **Description**
- Fix metadata reset payload in e2e tests
- Improve error handling and logging for metadata consistency
- Add changeset for patch version bump
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>refresh-metadata.setup.ts</strong><dd><code>Refactor
metadata reset and improve consistency checks</code>
</dd></summary>
<hr>
dashboard/e2e/setup/refresh-metadata.setup.ts
<li>Updated payload for metadata reset (removed
<code>reload_remote_schemas</code>, set <br><code>reload_sources</code>
to false)<br> <li> Enhanced error handling and logging for metadata
consistency<br> <li> Added detailed console logging for inconsistent
metadata
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3331/files#diff-e32371f0138a80b833384d09a2b1fcc0de848b555823c16c0e9a96ed441edc8a ">+10/-3</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>lemon-flies-live.md</strong><dd><code>Add changeset for
dashboard patch update</code>
</dd></summary>
<hr>
.changeset/lemon-flies-live.md
<li>Added changeset file for patch version bump<br> <li> Described fix
for metadata reset in e2e tests
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3331/files#diff-25789650a83994d924e29e67aafc8011da8f98e2178211207de1ef049d53e4f6 ">+5/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-05-13 13:18:29 +02:00
github-actions[bot]
0fdff345ac
chore: update versions ( #3327 )
...
This PR was opened by the [Changesets
release](https://github.com/changesets/action ) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.
# Releases
## @nhost/dashboard@2.29 .0
### Minor Changes
- c97b43f : fix: update vite to address vulnerability audit
- a0931e2 : fix: improve logs time range and filter selection
- c0635ae : feat (dashboard): Add information about that free
organization cannot be upgraded.
- e87505c : fix: can downsize postgres storage capacity using local
dashboard
## @nhost-examples/codegen-react-apollo@0.8.0
### Minor Changes
- c97b43f : fix: update vite to address vulnerability audit
## @nhost-examples/codegen-react-query@0.8.0
### Minor Changes
- c97b43f : fix: update vite to address vulnerability audit
## @nhost-examples/codegen-react-urql@0.7.0
### Minor Changes
- c97b43f : fix: update vite to address vulnerability audit
## @nhost-examples/sveltekit@0.8.0
### Minor Changes
- c97b43f : fix: update vite to address vulnerability audit
## @nhost-examples/react-apollo@1.6.0
### Minor Changes
- c97b43f : fix: update vite to address vulnerability audit
### Patch Changes
- 97db637 : fix: fix settings
## @nhost-examples/react-gqty@1.6.0
### Minor Changes
- c97b43f : fix: update vite to address vulnerability audit
## @nhost-examples/vue-apollo@0.12 .0
### Minor Changes
- c97b43f : fix: update vite to address vulnerability audit
## @nhost-examples/vue-quickstart@0.6.0
### Minor Changes
- c97b43f : fix: update vite to address vulnerability audit
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-05-12 20:05:18 +00:00
David Barroso
97db63791b
fix (examples/react-apollo): fix settings ( #3301 )
...
### **PR Type**
Enhancement, Configuration changes
___
### **Description**
- Update auth settings in nhost.toml
- Remove rate limiting configurations
- Remove SMTP provider settings
- Add changeset for patch version bump
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>lazy-years-kneel.md</strong><dd><code>Add changeset for
patch version bump</code>
</dd></summary>
<hr>
.changeset/lazy-years-kneel.md
<li>Add new changeset file for patch version bump<br> <li> Specify
'@nhost-examples/react-apollo' package<br> <li> Include fix description
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3301/files#diff-019ff1fe3f65a591a01a6cbc0fa05c44c065e2611417ac0b3dcf6bd5a6eda7c2 ">+5/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Configuration
changes</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>nhost.toml</strong><dd><code>Update Nhost configuration
settings</code>
</dd></summary>
<hr>
examples/react-apollo/nhost/nhost.toml
<li>Change auth.elevatedPrivileges.mode to 'recommended'<br> <li> Remove
auth.rateLimit configurations<br> <li> Remove provider.smtp settings<br>
<li> Update allowed URLs for auth redirections
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3301/files#diff-268d6c8dddd6990d60d62c1c923955c4e0e7549a80f0f5856192f889378416a0 ">+1/-30</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-05-12 19:30:59 +02:00
David BM
a0931e282f
fix (dashboard): logs persist time range selector, fix validation ( #3300 )
...
### **User description**
Resolves #3154
___
### **PR Type**
Bug fix, Enhancement
___
### **Description**
- Fix logs search functionality with selected service filter
- Implement persistent time range selector
- Add interval-based date range selection
- Improve form validation and submission logic
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>LogsDatePicker.tsx</strong><dd><code>Enhance
LogsDatePicker with form context integration</code>
</dd></summary>
<hr>
dashboard/src/features/orgs/projects/logs/components/LogsDatePicker/LogsDatePicker.tsx
<li>Import LogsFilterFormValues type and useFormContext hook<br> <li>
Add setValue function from form context<br> <li> Implement
handleDateChange to update selected date and reset interval<br> <li>
Update DatePicker onChange to use new handleDateChange function
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3300/files#diff-0768cb2a5cee4ab57a64580c34213950a042a9893b5da51b8886e166cb7a9060 ">+9/-3</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>LogsHeader.tsx</strong><dd><code>Improve LogsHeader
with interval support and form handling</code></dd></summary>
<hr>
dashboard/src/features/orgs/projects/logs/components/LogsHeader/LogsHeader.tsx
<li>Add interval to validation schema and form default values<br> <li>
Implement interval-based date recalculation in handleSubmit<br> <li>
Update form mode to 'onChange' for real-time validation<br> <li> Modify
useEffect to trigger submission on service change
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3300/files#diff-ebb3285aa776c9c5ea8b72672c4aafd55994c6c694998bbf56ca9c56d1e77664 ">+27/-3</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>LogsRangeSelector.tsx</strong><dd><code>Enhance
LogsRangeSelector with interval selection and UI
updates</code></dd></summary>
<hr>
dashboard/src/features/orgs/projects/logs/components/LogsRangeSelector/LogsRangeSelector.tsx
<li>Add interval handling in LogsToDatePickerLiveButton<br> <li>
Implement interval setting in handleIntervalChange function<br> <li>
Update Button variant based on selected interval<br> <li> Add interval
to useWatch hook for reactive updates
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3300/files#diff-46dd7c795a79e4b443213ed10089651423d13e5c776ca72e3a95ae5e0f7f63c8 ">+9/-2</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-05-12 18:31:58 +02:00
David BM
e87505c564
fix (dashboard): downsize postgres using local dashboard ( #3292 )
...
### **User description**
Fixes #3265
___
### **PR Type**
Bug fix, Enhancement
___
### **Description**
- Fix PostgreSQL version parsing for empty strings
- Enable downsizing Postgres in local dashboard
- Improve handling of free project and platform checks
- Update refetch queries with optional chaining
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>useGetPostgresVersion.ts</strong><dd><code>Fix
PostgreSQL version parsing for empty strings</code>
</dd></summary>
<hr>
dashboard/src/features/orgs/projects/database/common/hooks/useGetPostgresVersion/useGetPostgresVersion.ts
<li>Add fallback to empty string for <code>version</code> in
<br><code>splitPostgresMajorMinorVersions</code>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3292/files#diff-1836b93836a54ca5a8fd4d9fe64ec944a0ef37dfcb81909225115ba2a6d98928 ">+1/-1</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>index.tsx</strong><dd><code>Update refetch queries with
optional chaining</code>
</dd></summary>
<hr>
dashboard/src/pages/orgs/[orgSlug]/projects/[appSubdomain]/settings/index.tsx
- Add optional chaining for `userData.id` in refetch queries
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3292/files#diff-b4185be97a505e25badcdefe31ea86fa9d69f72264c4bb35eae17fba936a3d47 ">+8/-2</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>DatabaseStorageCapacity.tsx</strong><dd><code>Improve
database storage capacity handling and UI</code>
</dd></summary>
<hr>
dashboard/src/features/orgs/projects/database/settings/components/DatabaseStorageCapacity/DatabaseStorageCapacity.tsx
<li>Add <code>isEmptyValue</code> check for <code>org</code> object<br>
<li> Introduce <code>shouldShowUpdateCapacityWarning</code> variable<br>
<li> Modify <code>submitDisabled</code> logic for non-platform
environments<br> <li> Update conditional rendering of
<code>DatabaseStorageCapacityWarning</code>
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3292/files#diff-097a59d13b44816051386182a444eadfe2dcacd69b88c121af6733d7eca3ee43 ">+16/-3</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-05-08 14:02:09 +02:00
robertkasza
c0635ae1c7
feat (dashboard): Add information about that free organization cannot be upgraded ( #3316 )
...
### **PR Type**
Enhancement
___
### **Description**
- Add info about free org upgrade limitations
- Introduce new 'NewOrgButton' component
- Update UI for subscription plan section
- Improve text link component functionality
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>InfoAlert.tsx</strong><dd><code>Enhance AlertTitle
styling</code>
</dd></summary>
<hr>
dashboard/src/features/orgs/components/InfoAlert/InfoAlert.tsx
- Added 'font-semibold' class to AlertTitle
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3316/files#diff-4b78a2f0e1c6c2f6b37e430bc6cad016e884bb34735bd6aaebac906743748d7b ">+1/-1</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>SubscriptionPlan.tsx</strong><dd><code>Update
subscription plan UI and add free org info</code>
</dd></summary>
<hr>
dashboard/src/features/orgs/components/billing/components/SubscriptionPlan/SubscriptionPlan.tsx
<li>Added InfoAlert for free organizations<br> <li> Introduced
NewOrgButton component<br> <li> Updated layout and styling of
subscription plan section<br> <li> Replaced Link component with TextLink
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3316/files#diff-2a5f070869055286b669e382b18d656935752803b9a1ef13390ac028c2a48ac4 ">+32/-30</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>TextLink.tsx</strong><dd><code>Enhance TextLink
component with optional icon</code>
</dd></summary>
<hr>
dashboard/src/features/orgs/projects/common/components/TextLink/TextLink.tsx
<li>Added optional icon to TextLink component<br> <li> Introduced
withIcon prop for flexibility
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3316/files#diff-2f49ce51c83fab712173974ec09621f291ef56a7ad056df587c1bfd525ae6983 ">+4/-1</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>good-frogs-share.md</strong><dd><code>Add changeset for
dashboard feature</code>
</dd></summary>
<hr>
.changeset/good-frogs-share.md
- Added changeset file for version bump
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3316/files#diff-ff1c12916da9254a5d59fef39d5220a0ccdd20a7e66e1436a860da9a014d31ee ">+5/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-05-07 13:31:01 +02:00
robertkasza
d2a9a9ae1d
fix: update labeler config ( #3328 )
...
### **PR Type**
Enhancement
___
### **Description**
- Update labeler configuration for all categories
- Standardize format using 'any' key for all rules
- Remove redundant 'any' key for documentation category
- Maintain existing category definitions and file patterns
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Configuration
changes</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>labeler.yml</strong><dd><code>Standardize and simplify
labeler configuration</code>
</dd></summary>
<hr>
.github/labeler.yml
<li>Standardized all rules using 'any' key<br> <li> Removed redundant
'any' key for documentation<br> <li> Maintained existing category
definitions and file patterns<br> <li> Simplified overall configuration
structure
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3328/files#diff-a22c263686553013feaeb0677d26eeb0b8778a756c4311c1fce13384258026aa ">+8/-9</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-05-07 10:00:34 +02:00
David BM
c97b43f149
fix (ci): update vite to solve vulnerability audit ( #3323 )
...
### **PR Type**
Bug fix, Enhancement
___
### **Description**
- Update Vite to address vulnerability audit
- Upgrade Vite in multiple project dependencies
- Update package overrides for security
- Add changeset for minor version bumps
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Documentation</strong></td><td><details><summary>1
files</summary><table>
<tr>
<td><strong>chatty-kids-exist.md</strong><dd><code>Add changeset for
minor version updates</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3323/files#diff-22d27113acb695bcdab878d71e0e553a23f87070faeb4672ce09bf2108c56064 ">+13/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Dependencies</strong></td><td><details><summary>10
files</summary><table>
<tr>
<td><strong>package.json</strong><dd><code>Update Vite to
v5.4.19</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3323/files#diff-2d8d55c799cd71f1b35e831f075f8178ed1734c4820a2ad548b4dd24d6938d7c ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>package.json</strong><dd><code>Update Vite to
v5.4.19</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3323/files#diff-83675898dc6ed88838763232d022f6e100e07d71681cc8a1f02aee99ee3f229b ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>package.json</strong><dd><code>Update Vite to
v5.4.19</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3323/files#diff-9fb3a23f389ab1d192d7e018d2acbe512bd8792278662101401caa98692735db ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>package.json</strong><dd><code>Update Vite to
v5.4.19</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3323/files#diff-cb7094614884e8cd2c8fb67dadedb1887c46c31b888840def0b7042273bfbb28 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>package.json</strong><dd><code>Update Vite to
v6.2.7</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3323/files#diff-6288951fff74ec246c9cc023b7b7e3e9aad31423891bc4ea25b5d84a5f5b061f ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>package.json</strong><dd><code>Update Vite to
v5.4.19</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3323/files#diff-d95dc3391741287366ea2e61f70e9ccc64452e0d22b1db91d6bf524f5aa4331c ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>package.json</strong><dd><code>Update Vite to
v5.4.19</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3323/files#diff-8a3e5ed0f618f15211c31f700e0da998e2eae58f60353624b7a7e637bd63b153 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>package.json</strong><dd><code>Update Vite to
v5.4.19</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3323/files#diff-fc4298d3512fdd9a3d871f9f182fe871c8beccd1580f864a271ddfb32005feef ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>package.json</strong><dd><code>Update Vite to
v5.4.19</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3323/files#diff-85166d1137e29a5275f991e1e94a0c9d5b83ac7504463ba76f9187b2b750c895 ">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>package.json</strong><dd><code>Update Vite and adjust
overrides</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3323/files#diff-7ae45ad102eab3b6d7e7896acd08c427a9b25b346470d7bc6507b6481575d519 ">+4/-4</a>
</td>
</tr>
</table></details></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
---------
Co-authored-by: robertkasza <robert.kasza@bishop-co.com >
2025-05-06 14:39:39 +02:00
github-actions[bot]
2026bb7a9c
chore: update versions ( #3298 )
...
This PR was opened by the [Changesets
release](https://github.com/changesets/action ) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.
# Releases
## @nhost/apollo@8.0.8
### Patch Changes
- @nhost/nhost-js@3.2.8
## @nhost/react-apollo@17.0.4
### Patch Changes
- @nhost/apollo@8.0.8
- @nhost/react@3.10 .4
## @nhost/react-urql@14.0.4
### Patch Changes
- @nhost/react@3.10 .4
## @nhost/hasura-auth-js@2.11 .1
### Patch Changes
- 5ff4dd6 : fix (hasura-auth-js|hasura-storage-js): update e2e config for
packages
## @nhost/hasura-storage-js@2.7.1
### Patch Changes
- 5ff4dd6 : fix (hasura-auth-js|hasura-storage-js): update e2e config for
packages
## @nhost/nextjs@2.2.7
### Patch Changes
- d9eb906 : fix: update vite and nextjs because of vulnerability
- @nhost/react@3.10 .4
## @nhost/nhost-js@3.2.8
### Patch Changes
- Updated dependencies [5ff4dd6 ]
- @nhost/hasura-storage-js@2.7.1
- @nhost/hasura-auth-js@2.11 .1
## @nhost/react@3.10 .4
### Patch Changes
- @nhost/nhost-js@3.2.8
## @nhost/vue@2.9.5
### Patch Changes
- @nhost/nhost-js@3.2.8
## @nhost/dashboard@2.28 .0
### Minor Changes
- 8552678 : feat: dashboard: add additional events to segment
- 0bf2808 : chore: refresh metadata before end-to-end tests
- 72a365c : fix: correct graphql page roles dropdown's source
- cef6471 : fix: dashboard: add anonid to user's metadata
### Patch Changes
- d9eb906 : fix: update vite and nextjs because of vulnerability
- 233232b : feat (dashboard): improve Upgrade project dialog
- Updated dependencies [d9eb906 ]
- @nhost/nextjs@2.2.7
- @nhost/react-apollo@17.0.4
## @nhost/docs@2.31 .0
### Minor Changes
- b302dbd : feat: added sveltekit quickstart
### Patch Changes
- 5e96230 : fix: fixing mintlify breaking our docs
## @nhost-examples/cli@0.3.21
### Patch Changes
- @nhost/nhost-js@3.2.8
## @nhost-examples/codegen-react-apollo@0.7.1
### Patch Changes
- d9eb906 : fix: update vite and nextjs because of vulnerability
- @nhost/react@3.10 .4
- @nhost/react-apollo@17.0.4
## @nhost-examples/codegen-react-query@0.7.1
### Patch Changes
- d9eb906 : fix: update vite and nextjs because of vulnerability
- @nhost/react@3.10 .4
## @nhost-examples/codegen-react-urql@0.6.1
### Patch Changes
- d9eb906 : fix: update vite and nextjs because of vulnerability
- @nhost/react@3.10 .4
- @nhost/react-urql@14.0.4
## @nhost-examples/multi-tenant-one-to-many@2.2.22
### Patch Changes
- @nhost/nhost-js@3.2.8
## @nhost-examples/nextjs@0.4.7
### Patch Changes
- fad7f64 : chore: fix typo
- d9eb906 : fix: update vite and nextjs because of vulnerability
- Updated dependencies [d9eb906 ]
- @nhost/nextjs@2.2.7
- @nhost/react@3.10 .4
- @nhost/react-apollo@17.0.4
## @nhost-examples/node-storage@0.2.21
### Patch Changes
- @nhost/nhost-js@3.2.8
## @nhost-examples/nextjs-server-components@0.5.6
### Patch Changes
- d9eb906 : fix: update vite and nextjs because of vulnerability
- @nhost/nhost-js@3.2.8
## @nhost-examples/sveltekit@0.7.1
### Patch Changes
- f8243f9 : chore (examples/svelte): update @sveltejs/kit
- d9eb906 : fix: update vite and nextjs because of vulnerability
- @nhost/nhost-js@3.2.8
## @nhost-examples/react-apollo@1.5.1
### Patch Changes
- d9eb906 : fix: update vite and nextjs because of vulnerability
- efd68c3 : chore (react-apollo): use preview build instead of local dev
server for e2e tests
- @nhost/react@3.10 .4
- @nhost/react-apollo@17.0.4
## @nhost-examples/react-gqty@1.5.1
### Patch Changes
- d9eb906 : fix: update vite and nextjs because of vulnerability
- @nhost/react@3.10 .4
## @nhost-examples/react-native@0.1.8
### Patch Changes
- @nhost/react@3.10 .4
- @nhost/react-apollo@17.0.4
## @nhost-examples/vue-apollo@0.11 .1
### Patch Changes
- d9eb906 : fix: update vite and nextjs because of vulnerability
- @nhost/nhost-js@3.2.8
- @nhost/apollo@8.0.8
- @nhost/vue@2.9.5
## @nhost-examples/vue-quickstart@0.5.1
### Patch Changes
- d9eb906 : fix: update vite and nextjs because of vulnerability
- @nhost/apollo@8.0.8
- @nhost/vue@2.9.5
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-04-28 13:56:36 +00:00
David Barroso
1bc1e30f5e
chore (ci): send message to discord ( #3317 )
...
### **PR Type**
Enhancement
___
### **Description**
- Add Discord notifications for dashboard deployment status
- Implement success and failure notifications separately
- Include deployment details in Discord messages
- Use tsickert/discord-webhook action for notifications
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>deploy-dashboard.yaml</strong><dd><code>Implement
Discord notifications for deployment status</code>
</dd></summary>
<hr>
.github/workflows/deploy-dashboard.yaml
<li>Added success notification step using Discord webhook<br> <li> Added
failure notification step using Discord webhook<br> <li> Both
notifications include deployment status, trigger user, and git
<br>ref<br> <li> Used different embed colors for success (green) and
failure (red)
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3317/files#diff-634642357deb8c43286f58a5b454c8f10aeab2fb9937c9cb0c4300ac84dc00cf ">+28/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-04-28 14:37:33 +02:00
Nuno Pato
85526782f2
feat: dashboard: add additional segment events ( #3313 )
...
### **PR Type**
Enhancement
___
### **Description**
- Added Segment analytics tracking for key actions
- Implemented event tracking for project upgrades
- Added tracking for organization invites
- Included analytics for GitHub project connections
- Implemented tracking for new project creation
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>UpgradeProjectDialogContent.tsx</strong><dd><code>Add
Segment tracking for project upgrades</code>
</dd></summary>
<hr>
dashboard/src/features/orgs/components/common/TransferOrUpgradeProjectDialog/UpgradeProjectDialogContent.tsx
<li>Imported useCurrentOrg and analytics<br> <li> Added Segment tracking
for 'Project Upgraded' event<br> <li> Included detailed project and
organization data in the event
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3313/files#diff-ced98d2b8b0e83e41fd9bd569a6dd3fb5c4013861d3352628e63abe0c285d2ba ">+20/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>PendingInvites.tsx</strong><dd><code>Implement Segment
tracking for organization invites</code>
</dd></summary>
<hr>
dashboard/src/features/orgs/components/members/components/PendingInvites/PendingInvites.tsx
<li>Imported analytics from Segment<br> <li> Added tracking for
'Organization Invite Sent' event<br> <li> Included organization and
invitee details in the event
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3313/files#diff-dec81af68d9403085c09185e0153335ddf7d629f64f626cae394108bcb42d685 ">+11/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>EditRepositorySettingsModal.tsx</strong><dd><code>Add
Segment tracking for GitHub project connections</code>
</dd></summary>
<hr>
dashboard/src/features/orgs/projects/git/common/components/EditRepositorySettingsModal/EditRepositorySettingsModal.tsx
<li>Imported analytics from Segment<br> <li> Added tracking for 'Project
Connected to GitHub' event<br> <li> Included project and repository
details in the event
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3313/files#diff-eb88f4f79aa0286c7f1d06ff73908f34009e7e9e8b982f54866f157fd81c5c3a ">+12/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>new.tsx</strong><dd><code>Implement Segment tracking
for new project creation</code>
</dd></summary>
<hr>
dashboard/src/pages/orgs/[orgSlug]/projects/new.tsx
<li>Imported analytics from Segment<br> <li> Added tracking for 'Project
Created' event<br> <li> Included project, organization, and region
details in the event
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3313/files#diff-ef97470126e3edc146dda51337aaec556387e2f8a37afa70810d1dc94958f4fd ">+10/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>hungry-terms-retire.md</strong><dd><code>Add changeset
for Segment analytics feature</code>
</dd></summary>
<hr>
.changeset/hungry-terms-retire.md
<li>Added changeset file for minor version bump<br> <li> Described
feature addition of Segment events
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3313/files#diff-3accee3677ac6171593ed474c4c867ce1d27b490b69c9fd738f1cff121791ba9 ">+5/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-04-28 11:14:51 +00:00
Russians tortured my 18yo friend Ivan bc of ukr flag in mobile phone
fad7f640de
fix (examples/nextjs): typo ( #3309 )
...
Co-authored-by: David Barroso <dbarrosop@dravetech.com >
2025-04-28 09:58:08 +02:00
robertkasza
5ff4dd6e40
fix (packages): update storage/auth e2e config ( #3306 )
...
### **PR Type**
Enhancement, Tests
___
### **Description**
- Update e2e configuration for hasura-auth-js and hasura-storage-js
- Modify CI workflow for package-specific Nhost CLI shutdown
- Adjust test scripts in package.json files
- Add changeset for patch updates
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>fluffy-shoes-cross.md</strong><dd><code>Add changeset
for auth and storage package updates</code>
</dd></summary>
<hr>
.changeset/fluffy-shoes-cross.md
<li>Add new changeset file for patch updates<br> <li> Specify changes
for @nhost/hasura-storage-js and @nhost/hasura-auth-js
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3306/files#diff-bfec01342bb3adca8f892b1223015496f20919e642eb0cd4f2fc42f4a659f93b ">+6/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>ci.yaml</strong><dd><code>Update CI workflow for
package-specific Nhost CLI shutdown</code></dd></summary>
<hr>
.github/workflows/ci.yaml
<li>Add new step to stop Nhost CLI for specific packages<br> <li> Ensure
Nhost CLI stops even if previous steps fail
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3306/files#diff-944291df2c9c06359d37cc8833d182d705c9e8c3108e7cfe132d61a06e9133dd ">+6/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Tests</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>package.json</strong><dd><code>Modify test scripts for
hasura-auth-js package</code>
</dd></summary>
<hr>
packages/hasura-auth-js/package.json
<li>Update ci:test script to use vite.config.e2e.json<br> <li> Remove
Nhost CLI shutdown from ci:test script
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3306/files#diff-69ad7e7b51fc8532cb472f319780be5355e41c386f1cc223ce929369c3b87500 ">+1/-1</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>package.json</strong><dd><code>Update test script for
hasura-storage-js package</code>
</dd></summary>
<hr>
packages/hasura-storage-js/package.json
- Remove Nhost CLI shutdown from ci:test script
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3306/files#diff-eca15b254298d1b63d7c80b470d31e046d63ae93b1f09eb6dc3959e3a326560d ">+1/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-04-25 18:21:09 +02:00
David BM
0bf28085b7
chore (dashboard CI): refresh hasura metadata before e2e tests ( #3314 )
2025-04-25 17:40:29 +02:00
Alexander Mart
b302dbd27d
docs: add sveltekit quickstart ( #3302 )
...
Co-authored-by: David Barroso <dbarrosop@dravetech.com >
Co-authored-by: Nuno Pato <nunopato@gmail.com >
2025-04-24 14:04:48 +02:00
David BM
72a365c5fc
fix (dashboard): correct graphql role dropdown source ( #3291 )
2025-04-21 18:19:09 +02:00
David Barroso
d11363a74c
chore (observability): make alerts less sensitive ( #3310 )
...
### **PR Type**
Enhancement
___
### **Description**
- Increase alert sensitivity time from 5m to 15m
- Change NoData state to Alerting for most rules
- Modify execErrState to Alerting or OK
- Adjust noDataState for specific alert rules
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Configuration
changes</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>rules_nhost.yaml</strong><dd><code>Adjust alert
sensitivity and error handling configurations</code></dd></summary>
<hr>
observability/grafana/rules_nhost.yaml
<li>Increased 'for' duration from 5m to 15m for multiple alerts<br> <li>
Changed 'noDataState' from NoData to Alerting for most rules<br> <li>
Modified 'execErrState' to Alerting or OK depending on the rule<br> <li>
Adjusted 'noDataState' for specific alert rules (e.g., OK to Alerting)
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3310/files#diff-27165812186176e21d13a35136e43511b837700a599d3a00c61a1f6b36c55af2 ">+13/-13</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-04-20 13:59:31 +02:00
David BM
1bc2fabe59
chore (CI): skip CI runs on documentation change ( #3307 )
...
### **User description**
Skips CI running if we only changed under `docs/`
___
### **PR Type**
Enhancement
___
### **Description**
- Skip CI runs for changes in 'docs/' directory
- Update CI workflow configuration in GitHub Actions
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Configuration
changes</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>ci.yaml</strong><dd><code>Update CI workflow to ignore
documentation changes</code>
</dd></summary>
<hr>
.github/workflows/ci.yaml
<li>Add 'docs/**' to paths-ignore for push and pull_request events<br>
<li> Prevent CI from running on documentation-only changes
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3307/files#diff-944291df2c9c06359d37cc8833d182d705c9e8c3108e7cfe132d61a06e9133dd ">+2/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-04-16 15:35:41 +02:00
robertkasza
f8243f9434
chore (examples/svelte): update @sveltejs/kit ( #3305 )
...
### **PR Type**
Enhancement, Documentation
___
### **Description**
- Update @sveltejs/kit to version 2.20.6
- Add changeset for @nhost-examples/sveltekit patch
- Update package resolutions for security
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>neat-eggs-chew.md</strong><dd><code>Add changeset for
sveltekit example update</code>
</dd></summary>
<hr>
.changeset/neat-eggs-chew.md
<li>Add new changeset file for @nhost-examples/sveltekit<br> <li>
Specify patch update for the package<br> <li> Include description of the
change
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3305/files#diff-f07ba45e000aecdb0b0c45fbc4a50ccc0749e7755fdd86d630b9025cdde187ee ">+5/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Dependencies</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>package.json</strong><dd><code>Update @sveltejs/kit
dependency version</code>
</dd></summary>
<hr>
examples/quickstarts/sveltekit/package.json
- Update @sveltejs/kit from 2.11.1 to 2.20.6
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3305/files#diff-6288951fff74ec246c9cc023b7b7e3e9aad31423891bc4ea25b5d84a5f5b061f ">+1/-1</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Configuration
changes</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>package.json</strong><dd><code>Add security resolution
for @sveltejs/kit</code>
</dd></summary>
<hr>
package.json
- Add resolution for @sveltejs/kit >= 2.20.6
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3305/files#diff-7ae45ad102eab3b6d7e7896acd08c427a9b25b346470d7bc6507b6481575d519 ">+2/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-04-16 12:48:40 +02:00
robertkasza
d9eb90604d
fix: update vite and nextjs because of vulnerability ( #3303 )
...
### **PR Type**
Bug fix
___
### **Description**
- Update Vite and Next.js versions for security
- Add new version constraints for Vite and Next.js
- Create changeset for patch updates to multiple packages
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>neat-mugs-bake.md</strong><dd><code>Add changeset for
Vite and Next.js updates</code>
</dd></summary>
<hr>
.changeset/neat-mugs-bake.md
<li>Add new changeset file for patch updates<br> <li> List affected
packages including dashboard and examples<br> <li> Describe fix as
updating Vite and Next.js
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3303/files#diff-6ec609b553758bab0278f440f07a0af9e742df25dbdc038b6212bb683f88eb59 ">+13/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Dependencies</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>package.json</strong><dd><code>Update dependency
version constraints</code>
</dd></summary>
<hr>
package.json
<li>Add new version constraint for Next.js (>=14.2.26)<br> <li> Update
Vite version constraints (>=5.4.18 and >=6.2.6)<br> <li> Remove outdated
Vite version constraint
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3303/files#diff-7ae45ad102eab3b6d7e7896acd08c427a9b25b346470d7bc6507b6481575d519 ">+4/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-04-16 09:17:12 +02:00
Nuno Pato
cef647194d
fix: dashboard: add anonid to user's metadata ( #3282 )
...
### **PR Type**
Enhancement
___
### **Description**
- Add anonymous ID to user metadata during signup
- Integrate Segment analytics for anonymous ID retrieval
- Update GitHub sign-in to include anonymous ID
- Add changeset for version bump and changelog
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>signup.tsx</strong><dd><code>Integrate anonymous ID in
signup process</code>
</dd></summary>
<hr>
dashboard/src/pages/signup.tsx
<li>Import Segment analytics<br> <li> Add state for anonymous ID<br>
<li> Fetch anonymous ID on component mount<br> <li> Include anonymous ID
in email and GitHub signup
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3282/files#diff-fc2b5989e3bbafda1d3d8b2317d24c39ef2b8cec0c4dc410170fa2da13464f68 ">+19/-1</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>tall-eggs-battle.md</strong><dd><code>Add changeset for
dashboard update</code>
</dd></summary>
<hr>
.changeset/tall-eggs-battle.md
<li>Add changeset file for version bump<br> <li> Describe change as
adding anonid to user's metadata
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3282/files#diff-26ba0d1f688299d031611809f726356bdec0104a9264ec7dcca0757985023a58 ">+5/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-04-10 14:29:56 +00:00
robertkasza
efd68c3f92
chore (react-apollo): run e2e on preview instead of dev server ( #3295 )
...
### **PR Type**
Enhancement
___
### **Description**
- Run e2e tests on preview build instead of dev server
- Update Playwright configuration for better test reliability
- Add new script for building and previewing in one step
- Improve clean and install process with new script
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>playwright.config.ts</strong><dd><code>Update
Playwright config for preview build and improved
tracing</code></dd></summary>
<hr>
examples/react-apollo/playwright.config.ts
<li>Changed webServer command from 'pnpm dev' to 'pnpm
build:preview'<br> <li> Updated trace option from 'on-first-retry' to
'retain-on-failure'
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3295/files#diff-b22b77d29b0086af8ed742e35817880023261afccab0a6a41093e2a6d58715aa ">+2/-2</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>package.json</strong><dd><code>Add build:preview script
and specify preview port</code>
</dd></summary>
<hr>
examples/react-apollo/package.json
<li>Added port 3000 to preview script<br> <li> Introduced new
'build:preview' script combining build and preview
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3295/files#diff-d95dc3391741287366ea2e61f70e9ccc64452e0d22b1db91d6bf524f5aa4331c ">+2/-1</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>package.json</strong><dd><code>Add clean:install script
for project maintenance</code>
</dd></summary>
<hr>
package.json
- Added new 'clean:install' script for cleaning and reinstalling
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3295/files#diff-7ae45ad102eab3b6d7e7896acd08c427a9b25b346470d7bc6507b6481575d519 ">+1/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-04-10 15:51:05 +02:00
robertkasza
233232b06f
feat (dashboard): improve upgrade project ( #3257 )
...
### **PR Type**
Enhancement, Tests
___
### **Description**
- Introduced `TransferOrUpgradeProjectDialog` to unify transfer and
upgrade dialogs.
- Enhanced project upgrade flow with new components and logic.
- Added comprehensive tests for the new upgrade and transfer
functionalities.
- Replaced `TransferProjectDialog` with `TransferOrUpgradeProjectDialog`
across the codebase.
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Miscellaneous</strong></td><td><details><summary>2
files</summary><table>
<tr>
<td><strong>SelectOrgAndProject.tsx</strong><dd><code>Removed unused
import statement.</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3257/files#diff-7d86c6e5bc51696bf1aa421c920e01a1447699456c37b025bdc407050c7b5613 ">+0/-1</a>
</td>
</tr>
<tr>
<td><strong>OverviewTopBar.tsx</strong><dd><code>Updated import for
`UpgradeProjectDialog`.</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3257/files#diff-560ae107ed8e458fa4b4a226b9f5c24e24b042b5f9bcea9317c78e75929faa4b ">+1/-1</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>16
files</summary><table>
<tr>
<td><strong>UpgradeToProBanner.tsx</strong><dd><code>Updated to use
`TransferOrUpgradeProjectDialog`.</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3257/files#diff-f38fc14d24ec6ee22f9a100cc473c641dcdc66284d41d030c456bf505094ed9d ">+2/-2</a>
</td>
</tr>
<tr>
<td><strong>StripeEmbeddedForm.tsx</strong><dd><code>Wrapped
`EmbeddedCheckoutProvider` with a scrollable container.</code></dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3257/files#diff-d8e63f9bdc9c2c672a4caabd406bf77bec4e4988e716d2b9e101182a863eb495 ">+10/-8</a>
</td>
</tr>
<tr>
<td><strong>TransferProject.tsx</strong><dd><code>Replaced
<code>TransferProjectDialog</code> with
<code>TransferOrUpgradeProjectDialog</code>.</code></dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3257/files#diff-bb5ac90e4fcb5841e3fef912beec1b1dbe83b273eea7a9e39fb258ff0361e7e3 ">+2/-2</a>
</td>
</tr>
<tr>
<td><strong>FinishOrgCreationProcess.tsx</strong><dd><code>Refactored to
use <code>useFinishOrgCreation</code> hook for dynamic status
<br>handling.</code></dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3257/files#diff-7602855e6aaab1dd3810c866acbedd5b9eb22c271806969eb9a3435f1c76ca8d ">+13/-5</a>
</td>
</tr>
<tr>
<td><strong>FinishOrgCreation.tsx</strong><dd><code>Simplified
`FinishOrgCreation` component logic.</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3257/files#diff-9e3ccc4f3c0168746e53b68211d07391593712d5d74847861248cfa7da31dd7d ">+4/-5</a>
</td>
</tr>
<tr>
<td><strong>TransferOrUpgradeProjectDialog.tsx</strong><dd><code>Introduced
`TransferOrUpgradeProjectDialog` component.</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3257/files#diff-06d6ae707f06c0db49a8930a8756195899ece09f08affa44aeadedce4b208948 ">+105/-0</a>
</td>
</tr>
<tr>
<td><strong>TransferProjectDialogContent.tsx</strong><dd><code>Added
`TransferProjectDialogContent` for transfer logic.</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3257/files#diff-3f66f2e8af0175d1c3f9d4940b8dc965fefa18967c8f4977739ac73000708763 ">+100/-0</a>
</td>
</tr>
<tr>
<td><strong>TransferProjectForm.tsx</strong><dd><code>Added
`TransferProjectForm` for organization selection and
transfer.</code></dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3257/files#diff-3324c79d8b4d48777467132ba0f13a95d4b0f1a9fbb4df9fd7f67735ac40cbbd ">+186/-0</a>
</td>
</tr>
<tr>
<td><strong>UpgradeProjectDialogContent.tsx</strong><dd><code>Added
`UpgradeProjectDialogContent` for project upgrade flow.</code></dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3257/files#diff-ced98d2b8b0e83e41fd9bd569a6dd3fb5c4013861d3352628e63abe0c285d2ba ">+96/-0</a>
</td>
</tr>
<tr>
<td><strong>index.ts</strong><dd><code>Exported
`TransferOrUpgradeProjectDialog`.</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3257/files#diff-bd61908ca8ab41f1a88cdcc3bafe4264b1e8120d7f65ff64f158631dd4e65a58 ">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>NotificationsTray.tsx</strong><dd><code>Added router
readiness check in `NotificationsTray`.</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3257/files#diff-8b559ee1d3176203e8a4e1588924d57944d09d792117ed578b27cd5401ee5d4f ">+3/-1</a>
</td>
</tr>
<tr>
<td><strong>useFinishOrgCreation.ts</strong><dd><code>Added router
readiness check to `useFinishOrgCreation`.</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3257/files#diff-3b8bf7608ab36d8ab0df895e400f0d2d9e29fad2055b40b33d8d9912a27c99c3 ">+1/-2</a>
</td>
</tr>
<tr>
<td><strong>ApplicationPaused.tsx</strong><dd><code>Replaced
<code>TransferProjectDialog</code> with
<code>TransferOrUpgradeProjectDialog</code>.</code></dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3257/files#diff-14afdf5ac20f058c26563a6992a3751f11cf173eec27206001262b5d1b3b979f ">+2/-2</a>
</td>
</tr>
<tr>
<td><strong>UpgradeNotification.tsx</strong><dd><code>Updated to use
`TransferOrUpgradeProjectDialog`.</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3257/files#diff-f712e65a6e88f2731fc5597117f716594311087f8090e3e8f5f76e1a67c95188 ">+2/-2</a>
</td>
</tr>
<tr>
<td><strong>UpgradeProjectDialog.tsx</strong><dd><code>Updated to use
`TransferOrUpgradeProjectDialog` for upgrades.</code></dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3257/files#diff-7bfab4ad088dbc503c1304f5620e22e02f70602bf14ba6b495969b882b2eb30e ">+2/-2</a>
</td>
</tr>
<tr>
<td><strong>verify.tsx</strong><dd><code>Refactored to use
`FinishOrgCreationProcess` with hooks.</code> </dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3257/files#diff-5fa0ea2519bed6649a8aa98826526945868bd7a925c5ce5edb3fd14e81273947 ">+1/-5</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>2
files</summary><table>
<tr>
<td><strong>TransferOrUpgradeProjectDialog.test.tsx</strong><dd><code>Added
tests for `TransferOrUpgradeProjectDialog`.</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3257/files#diff-1b274953c536fcd901f72765ab134a34641442655988bde5595f63265a9e7ce9 ">+155/-12</a></td>
</tr>
<tr>
<td><strong>NotificationsTray.test.tsx</strong><dd><code>Added tests for
router readiness in `NotificationsTray`.</code> </dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3257/files#diff-727f6debec6a102557407e55c56363e0c75486e30a732158f85c81ada892f77c ">+39/-4</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Cleanup</strong></td><td><details><summary>2
files</summary><table>
<tr>
<td><strong>TransferProjectDialog.tsx</strong><dd><code>Removed
deprecated `TransferProjectDialog`.</code>
</dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3257/files#diff-b68d4641a67e07a8bf8c14e1f705059c564e1bca53e591783581af27a488d86e ">+0/-306</a>
</td>
</tr>
<tr>
<td><strong>index.ts</strong><dd><code>Removed export for deprecated
`TransferProjectDialog`.</code> </dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3257/files#diff-ed023a2c08c77e3693789305cf9b9f2cd871090acf7b0775c7d7434903710c42 ">+0/-1</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>1
files</summary><table>
<tr>
<td><strong>tame-planes-sleep.md</strong><dd><code>Added changeset for
project upgrade dialog improvements.</code> </dd></td>
<td><a
href="https://github.com/nhost/nhost/pull/3257/files#diff-c83c4e28de9a00c1ee2cb4ad9867d2c42415c01c80e990205c351e6f5c8a6f83 ">+5/-0</a>
</td>
</tr>
</table></details></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-04-10 15:15:25 +02:00
David Barroso
5e962300f6
fix (docs): fixing mintlify breaking our docs ( #3297 )
2025-04-10 13:23:31 +02:00
Nuno Pato
048b3389e6
chore: docs: add segment analytics ( #3294 )
...
### **PR Type**
Enhancement
___
### **Description**
- Added Segment analytics integration to documentation
- Configured Segment key in docs.json file
___
### **Changes walkthrough** 📝
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Configuration
changes</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>docs.json</strong><dd><code>Configure Segment analytics
in docs.json</code>
</dd></summary>
<hr>
docs/docs.json
<li>Added 'integrations' object with Segment configuration<br> <li>
Included Segment API key for analytics tracking
</details>
</td>
<td><a
href="https://github.com/nhost/nhost/pull/3294/files#diff-873ce17c654718debe2fe308a2f2279bde8663686423c51f97fab2dd0722b8d9 ">+5/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
___
> <details> <summary> Need help?</summary><li>Type <code>/help how to
...</code> in the comments thread for any questions about PR-Agent
usage.</li><li>Check out the <a
href="https://qodo-merge-docs.qodo.ai/usage-guide/ ">documentation</a>
for more information.</li></details>
2025-04-08 12:17:05 +00:00