Compare commits

...

1457 Commits

Author SHA1 Message Date
Hassan Ben Jobrane
262828f9a1 Merge pull request #2318 from nhost/changeset-release/main
chore: update versions
2023-10-12 16:36:06 +01:00
github-actions[bot]
12f9726ad7 chore: update versions 2023-10-12 13:40:33 +00:00
Hassan Ben Jobrane
845937b552 Merge pull request #2317 from nhost/fix/apollo-integration
fix: integrations: apollo: correct accessToken nullability test
2023-10-12 14:37:49 +01:00
Hassan Ben Jobrane
f777a3380a chore: add changeset 2023-10-12 10:26:00 +01:00
Hassan Ben Jobrane
5081372cab fix: integrations: apollo: correct accessToken nullability test 2023-10-12 10:23:09 +01:00
Hassan Ben Jobrane
82212345c8 Merge pull request #2311 from nhost/changeset-release/main
chore: update versions
2023-10-11 13:54:25 +01:00
Hassan Ben Jobrane
32d3f167c5 Merge pull request #2313 from nhost/fix/quickstarts
fix: quickstarts: toml node version and tsconfig moduleResolution
2023-10-11 12:37:38 +01:00
github-actions[bot]
3d5f1ea922 chore: update versions 2023-10-11 10:24:24 +00:00
Hassan Ben Jobrane
97841ee5e8 Merge pull request #2312 from nhost/fix/dashboard/run-tab
fix: dashboard: disable run tab when developing locally
2023-10-11 11:21:38 +01:00
Hassan Ben Jobrane
4f3a615ebe fix: quickstarts: fix backend functions node version 2023-10-11 10:14:09 +01:00
Hassan Ben Jobrane
8e8197691c fix: quickstarts: change module resolution to node 2023-10-11 10:13:40 +01:00
Hassan Ben Jobrane
e10389ecf6 chore: add changeset 2023-10-11 10:08:11 +01:00
Hassan Ben Jobrane
cbdf6affec fix(dashboard): disable run services tab in local dev mode 2023-10-11 10:07:02 +01:00
Hassan Ben Jobrane
d19406e694 Merge pull request #2309 from nhost/fix/integration/apollo
fix: integrations: apollo: set accessToken to null after TOKEN_CHANGED event on sign-out
2023-10-10 16:24:39 +01:00
Hassan Ben Jobrane
cffc5dc65b Merge pull request #2310 from nhost/chore/ci/stop-dashboard-releases
chore: ci: stop @nhost/dashboard github releases
2023-10-10 16:24:01 +01:00
Hassan Ben Jobrane
2b5cb58553 chore: ci: stop @nhost/dashboard github releases 2023-10-10 16:03:37 +01:00
Hassan Ben Jobrane
7459a9413e chore: add changeset 2023-10-10 15:43:28 +01:00
Hassan Ben Jobrane
56871cc9f7 fix: integrations: apollo: set accessToken to null after TOKEN_CHANGED event on signout 2023-10-10 13:38:04 +01:00
Hassan Ben Jobrane
8f4d66e52d Merge pull request #2308 from nhost/changeset-release/main
chore: update versions
2023-10-10 13:31:53 +01:00
github-actions[bot]
315a820073 chore: update versions 2023-10-10 12:04:28 +00:00
Hassan Ben Jobrane
ca57ad2cbd Merge pull request #2301 from nhost/feat/quickstarts/sveltekit
feat(quickstarts): sveltekit <--> nhost
2023-10-10 13:00:14 +01:00
Hassan Ben Jobrane
40259344eb Merge pull request #2306 from nhost/chore/providers-updated-notice
chore(dashboard): show oauth providers update notice
2023-10-10 12:45:12 +01:00
Hassan Ben Jobrane
4749f60a08 chore: add changeset 2023-10-09 20:12:04 +01:00
Hassan Ben Jobrane
ac1888514d chore: update readme for sveltekit quickstart 2023-10-09 19:52:44 +01:00
Hassan Ben Jobrane
49b4af439b feat: signup/signin via webauthn 2023-10-09 19:23:50 +01:00
Hassan Ben Jobrane
61e03d6c70 chore: make sure deprication notice is under a project 2023-10-09 16:48:01 +01:00
Hassan Ben Jobrane
bec0fce497 chore: add deprication banner 2023-10-09 15:00:58 +01:00
Hassan Ben Jobrane
c01568a7dd chore: add changeset 2023-10-09 14:28:40 +01:00
Hassan Ben Jobrane
e934216a82 chore: bring back providers update alert 2023-10-09 14:26:41 +01:00
Hassan Ben Jobrane
701d6b8c84 feat: sveltekit: add delete pat 2023-10-07 19:47:05 +01:00
Hassan Ben Jobrane
e158e2440a wip: sveltekit: add echo and pat pages 2023-10-07 19:22:29 +01:00
Hassan Ben Jobrane
fbaa657001 wip: sveltekit: refresh access token + create/delete todos 2023-10-05 17:08:55 +01:00
Hassan Ben Jobrane
559db6d0ec wip: sveltekit: auth + todos(create) 2023-10-05 12:48:59 +01:00
Hassan Ben Jobrane
4c844930f1 wip: update: sveltekit 2023-10-04 16:58:59 +01:00
Hassan Ben Jobrane
3ef503ff81 Merge pull request #2298 from nhost/changeset-release/main
chore: update versions
2023-10-04 16:47:51 +02:00
github-actions[bot]
bfcfd236ea chore: update versions 2023-10-04 14:13:38 +00:00
Hassan Ben Jobrane
bfa7033506 Merge pull request #2296 from nhost/feat/query-announcements
feat: dashboard: query announcements
2023-10-04 16:09:48 +02:00
Hassan Ben Jobrane
78c29fcf0e feat: filter expired announcements 2023-10-04 14:40:22 +01:00
Hassan Ben Jobrane
f1b934ed22 chore: remove old announcement provider 2023-10-04 10:52:20 +01:00
Hassan Ben Jobrane
914369c53f feat: add announcements list component 2023-10-03 20:18:41 +01:00
Hassan Ben Jobrane
af379b967e chore: clean up commented code 2023-10-03 17:43:24 +01:00
Hassan Ben Jobrane
c3efb7ec84 chore: add changeset 2023-10-03 17:41:35 +01:00
Hassan Ben Jobrane
27cbd48c8c feat(dashboard): query latest announcement from platform 2023-10-03 17:40:50 +01:00
Hassan Ben Jobrane
236996a903 Merge pull request #2293 from nhost/changeset-release/main
chore: update versions
2023-10-02 13:01:48 +02:00
github-actions[bot]
5d0936bb93 chore: update versions 2023-10-02 10:38:35 +00:00
Hassan Ben Jobrane
733c212f2d Merge pull request #2291 from nhost/chore/announcement/node18
chore: node18 announcement
2023-10-02 12:35:53 +02:00
Hassan Ben Jobrane
8b47549189 Merge pull request #2286 from nhost/chore/ci/disable-github-releases
chore(ci): set createGithubReleases to false
2023-10-02 12:26:10 +02:00
Hassan Ben Jobrane
3c9c1025ce Merge pull request #2287 from nhost/fix/vue-sdk/nested-unref
fix(vue-sdk): correctly unref arrays
2023-10-02 12:25:14 +02:00
Hassan Ben Jobrane
3e46d3873c chore: add changeset 2023-10-02 10:50:46 +01:00
Hassan Ben Jobrane
4cf8820d72 chore: open announcement link in a new tab 2023-10-02 10:39:15 +01:00
Hassan Ben Jobrane
02a11184fb chore: change announcement link 2023-10-02 10:38:04 +01:00
Hassan Ben Jobrane
7214d47cc7 chore: add changeset 2023-09-30 17:54:42 +01:00
Hassan Ben Jobrane
238b77baad fix(vue): correctly unref arrays 2023-09-30 17:53:05 +01:00
Hassan Ben Jobrane
81b8e538b4 chore(ci): set createGithubReleases to false 2023-09-29 17:12:21 +01:00
Hassan Ben Jobrane
563a37e58d Merge pull request #2285 from nhost/changeset-release/main
chore: update versions
2023-09-29 18:05:40 +02:00
github-actions[bot]
bff23720ee chore: update versions 2023-09-29 15:43:43 +00:00
Hassan Ben Jobrane
02cbaeffd2 Merge pull request #2225 from nhost/feat/examples/nextjs-server-components
feat: quickstarts: draft for using server components
2023-09-29 17:40:52 +02:00
Hassan Ben Jobrane
9eb814c79a chore: update readme 2023-09-29 15:57:53 +01:00
Hassan Ben Jobrane
ebc5913bb3 chore: naming consistency 2023-09-29 15:57:53 +01:00
Hassan Ben Jobrane
4fe4a16964 chore: add changeset 2023-09-29 15:57:53 +01:00
Hassan Ben Jobrane
92c475b7a7 chore: add missing refreshToken 2023-09-29 15:57:52 +01:00
Hassan Ben Jobrane
679b34b031 chore: cleanup 2023-09-29 15:57:52 +01:00
Hassan Ben Jobrane
d3186aefbd refactor: extract session middleware into helper function 2023-09-29 15:57:52 +01:00
Hassan Ben Jobrane
fdecac9d69 refactor: add high order component for protected pages 2023-09-29 15:57:52 +01:00
Hassan Ben Jobrane
5077283028 chore: merge oauth handling in middleware 2023-09-29 15:57:52 +01:00
Hassan Ben Jobrane
f5f662aad1 chore: refactor server actions 2023-09-29 15:57:52 +01:00
Hassan Ben Jobrane
735b779af7 chore: clean up database setup 2023-09-29 15:57:52 +01:00
Hassan Ben Jobrane
4418d6abcf chore: cleanup 2023-09-29 15:57:52 +01:00
Hassan Ben Jobrane
049e315c30 fix: set correct path on cookie on oauth signin 2023-09-29 15:57:52 +01:00
Hassan Ben Jobrane
764597538b fix: make sure that hasura-storage-js works on EdgeRuntime 2023-09-29 15:57:52 +01:00
Hassan Ben Jobrane
c8aea785cc fix: tweak todo item layout 2023-09-29 15:57:52 +01:00
Hassan Ben Jobrane
e0e44b2ff4 fix: set same path for session cookie 2023-09-29 15:57:52 +01:00
Hassan Ben Jobrane
12280f7c87 feat: pat list pagination 2023-09-29 15:57:52 +01:00
Hassan Ben Jobrane
732a4f40ca wip 2023-09-29 15:57:52 +01:00
Hassan Ben Jobrane
d67fd599e4 feat: todos CRUD 2023-09-29 15:57:52 +01:00
Hassan Ben Jobrane
a41231927a feat: add signin with pat 2023-09-29 15:57:52 +01:00
Hassan Ben Jobrane
42ec665950 fix: return refreshToken in getAuthenticationResult 2023-09-29 15:57:52 +01:00
Hassan Ben Jobrane
7225712a30 chore: update hasura auth 2023-09-29 15:57:52 +01:00
Hassan Ben Jobrane
6593fdd9bb fix: make sure refreshToken is returned after signin/signup 2023-09-29 15:57:52 +01:00
Hassan Ben Jobrane
40039fece5 Revert "refactor: make sure to return refresh token"
This reverts commit b31b358ca1898bb4173954b8b33059d92cc8c126.
2023-09-29 15:57:52 +01:00
Hassan Ben Jobrane
e5fcfb3cd5 refactor: make sure to return refresh token 2023-09-29 15:57:52 +01:00
Hassan Ben Jobrane
218ec314fb feat(quickstarts): refactor and organize signup/signin 2023-09-29 15:57:52 +01:00
Hassan Ben Jobrane
9367e91d45 feat: examples: add other sign in methods
Add sign in with google and webauthn
2023-09-29 15:57:52 +01:00
Hassan Ben Jobrane
06c640be2c chore: delete unnecessary files 2023-09-29 15:57:52 +01:00
Hassan Ben Jobrane
ae45be9816 feat(quickstarts): draft for using server components 2023-09-29 15:57:52 +01:00
Hassan Ben Jobrane
ec4be590d8 Merge pull request #2284 from nhost/chore/ci/fix-release
chore: ci: fix release worflow
2023-09-29 16:56:12 +02:00
Hassan Ben Jobrane
5c51653aa0 chore: fix release worflow 2023-09-29 13:29:44 +01:00
Hassan Ben Jobrane
7348c15ad1 Merge pull request #2281 from nhost/changeset-release/main
chore: update versions
2023-09-29 13:48:59 +02:00
Hassan Ben Jobrane
44831e32a7 Merge pull request #2282 from nhost/chore/ci/fix-release-workflow
chore(ci): fix release workflow
2023-09-29 13:47:21 +02:00
Hassan Ben Jobrane
ee0f837762 chore(ci): fix release workflow 2023-09-29 12:32:05 +01:00
github-actions[bot]
e040979e91 chore: update versions 2023-09-29 10:59:27 +00:00
Hassan Ben Jobrane
68100d63b9 Merge pull request #2267 from nhost/changeset-release/main
chore: update versions
2023-09-29 12:56:45 +02:00
github-actions[bot]
9b800046d7 chore: update versions 2023-09-29 10:37:52 +00:00
Hassan Ben Jobrane
807d8574b6 Merge pull request #2280 from nhost/feat/dashboard/multiline-variables-input
feat(dashboard): make env value input multiline
2023-09-29 12:34:59 +02:00
Hassan Ben Jobrane
77028e4eef Merge pull request #2265 from nhost/chore/ci/disable-changeset-github-releases
chore(ci): disable automatic GitHub releases
2023-09-29 12:34:36 +02:00
Hassan Ben Jobrane
e0d32aab33 Merge pull request #2235 from nhost/chore/ci/release/recorder-steps
chore(ci): run publish to vercel before docker build
2023-09-29 12:34:16 +02:00
Hassan Ben Jobrane
75c4c8ae36 chore: add changeset 2023-09-29 11:14:53 +01:00
Hassan Ben Jobrane
1d90639e46 feat: make env value input multiline 2023-09-29 11:12:35 +01:00
David Barroso
765b398b21 chore(docs): added jit settings documentation (#2274)
Solves #2273
2023-09-29 10:44:32 +02:00
David Barroso
30aae1557c chore(docs): minor fix to performance documentation (#2272) 2023-09-29 10:44:02 +02:00
David Barroso
a3efc1d131 chore (docs): added storage/antivirus documentation (#2268)
Rearranged the storage section a bit and added:

https://docs-git-docs-storage-nhost.vercel.app/storage/av
2023-09-28 07:27:57 +02:00
David Barroso
612d754965 chore: docs: added more docs (#2264)
https://docs-git-docs-postgres-nhost.vercel.app/database/settings
https://docs-git-docs-postgres-nhost.vercel.app/database/extensions
https://docs-git-docs-postgres-nhost.vercel.app/graphql/settings
https://docs-git-docs-postgres-nhost.vercel.app/database/performance

---------

Co-authored-by: Hassan Ben Jobrane <hsanbenjobrane@gmail.com>
2023-09-28 07:27:15 +02:00
Hassan Ben Jobrane
b2e5f30379 Merge pull request #2269 from nhost/fix/docs/mermaid-theme
fix(docs): mermaid diagrams dark mode
2023-09-27 16:28:53 +01:00
Hassan Ben Jobrane
3b3e83a218 chore: add changeset 2023-09-27 15:42:48 +01:00
Hassan Ben Jobrane
0d5231f1a1 fix(docs): correct rendering of mermaid diagrams in dark mode 2023-09-27 15:41:59 +01:00
Hassan Ben Jobrane
1a8332a3ca Merge pull request #2266 from nhost/fix/settings/compute-resources
fix: make sure dedicated resources pricing follows total resources
2023-09-27 10:06:48 +01:00
Hassan Ben Jobrane
7418105de2 chore: remove commented code 2023-09-26 19:29:48 +01:00
Hassan Ben Jobrane
425d485f85 chore: add changeset 2023-09-26 17:09:08 +01:00
Hassan Ben Jobrane
d8d25b3ea0 fix: make sure dedicated resources pricing follows total resources on the top section 2023-09-26 17:06:51 +01:00
Hassan Ben Jobrane
320513f6f5 chore(ci): disable automatic GitHub releases 2023-09-26 16:34:18 +01:00
Hassan Ben Jobrane
b37053376d Merge pull request #2261 from nhost/changeset-release/main
chore: update versions
2023-09-22 12:00:44 +01:00
github-actions[bot]
c21ba4aebd chore: update versions 2023-09-22 10:46:59 +00:00
Hassan Ben Jobrane
58948c50d4 Merge pull request #2260 from nhost/fix/graphql/remove-unused-fields
fix: dashboard: remove unused fields
2023-09-22 11:44:23 +01:00
Hassan Ben Jobrane
ae324f67fa chore: add changeset 2023-09-22 11:33:51 +01:00
Hassan Ben Jobrane
acabf2b168 fix(dashboard): remove unused fields 2023-09-22 11:31:57 +01:00
Hassan Ben Jobrane
73cb65b9be Merge pull request #2255 from nhost/changeset-release/main
chore: update versions
2023-09-21 14:48:34 +01:00
github-actions[bot]
5e7c8395c2 chore: update versions 2023-09-21 11:33:11 +00:00
David Barroso
c2837209e6 chore: added codeql to CI (#2252) 2023-09-21 13:30:29 +02:00
Hassan Ben Jobrane
638710ea29 Merge pull request #2257 from nhost/fix/run/service-details
fix: dashboard: run: show correct private registry
2023-09-21 12:29:42 +01:00
Hassan Ben Jobrane
a79fddbafb fix(dashboard/run): remove image prop 2023-09-21 11:23:39 +01:00
Hassan Ben Jobrane
ab6a8f2add Merge pull request #2256 from nhost/feat/dashboard/query-software-versions
feat: dashboard: query software versions from platform
2023-09-21 11:12:52 +01:00
Hassan Ben Jobrane
69a5661bcf fix(dashboard/run): remove unused image prop 2023-09-21 10:37:18 +01:00
Hassan Ben Jobrane
0886118f9d Merge pull request #2254 from nhost/chore/run/remove-feature-flag
chore: remove run feature flag
2023-09-21 10:31:09 +01:00
Hassan Ben Jobrane
34fc08ca7c chore: add changeset 2023-09-21 10:18:05 +01:00
Hassan Ben Jobrane
153de22713 fix(dashboard): show correct private registry when showing service details 2023-09-21 10:16:52 +01:00
Hassan Ben Jobrane
bf4a1f6c2a chore: add changeset 2023-09-20 15:26:22 +01:00
Hassan Ben Jobrane
2a67d0f872 feat(dashboard): fetch Storage versions from platform 2023-09-20 15:23:17 +01:00
Hassan Ben Jobrane
b156c7b72e feat(dashboard): fetch Auth versions from platform 2023-09-20 15:22:55 +01:00
Hassan Ben Jobrane
b484b04ae2 feat(dashboard): fetch Hasura versions from platform 2023-09-20 15:18:40 +01:00
Hassan Ben Jobrane
2e55c7f46a feat(dashboard): fetch postgres versions from platform 2023-09-20 14:06:19 +01:00
Hassan Ben Jobrane
2d983e6ab1 feat(dashboard): codegen graphql query for getting software versions 2023-09-20 14:05:41 +01:00
Hassan Ben Jobrane
df5b4302c3 chore: add changeset 2023-09-20 12:12:42 +01:00
Hassan Ben Jobrane
828aed2df9 chore: remove run feature flag 2023-09-20 12:12:42 +01:00
Hassan Ben Jobrane
310df10892 Merge pull request #2251 from nhost/chore/replace-feedback
chore(dashboard): replace feedback form with contact us
2023-09-20 12:08:52 +01:00
Hassan Ben Jobrane
555fba4400 chore: re-arrange text content 2023-09-20 11:43:27 +01:00
Hassan Ben Jobrane
885d10620a chore: add changeset 2023-09-20 11:24:20 +01:00
Hassan Ben Jobrane
a8370f5aaa chore: fix nav test 2023-09-20 11:03:43 +01:00
Hassan Ben Jobrane
bd07905846 chore(dashboard): replace feedback form with contact us 2023-09-19 19:25:53 +01:00
Nuno Pato
47a2164549 Merge pull request #2250 from nhost/changeset-release/main
chore: update versions
2023-09-19 16:57:24 +00:00
github-actions[bot]
a96c79de00 chore: update versions 2023-09-19 16:42:43 +00:00
Nuno Pato
596d0666fc Merge pull request #2249 from nhost/chore/docs-run-public-beta
chore: docs: Run is now in public beta
2023-09-19 16:40:04 +00:00
Nuno Pato
9aaa407d29 Run is now in public beta 2023-09-19 16:01:57 +00:00
Hassan Ben Jobrane
1767b2f105 Merge pull request #2248 from nhost/changeset-release/main
chore: update versions
2023-09-18 20:17:34 +01:00
github-actions[bot]
c99c5c4191 chore: update versions 2023-09-18 19:03:08 +00:00
Hassan Ben Jobrane
d845da2503 Merge pull request #2246 from nhost/fix/one-click-install
fix: run: center the loading indicator
2023-09-18 20:00:37 +01:00
Hassan Ben Jobrane
9f1ba1686c Merge pull request #2247 from nhost/feat/run/delete-service-confirmation-dialog
feat: run: delete service confirmation dialog
2023-09-18 19:57:21 +01:00
Hassan Ben Jobrane
48b09a58ff fix: typo
Co-authored-by: Nuno Pato <nunopato@gmail.com>
2023-09-18 18:54:37 +01:00
Hassan Ben Jobrane
2169908883 chore: add changeset 2023-09-18 18:48:06 +01:00
Hassan Ben Jobrane
ed16c8b5de chore: add changeset 2023-09-18 18:45:11 +01:00
Hassan Ben Jobrane
c618503376 feat(run): add a confirmation dialog when deleting a run service 2023-09-18 18:45:03 +01:00
Hassan Ben Jobrane
f306c3940c fix: center the loading indicator 2023-09-18 16:53:15 +01:00
Hassan Ben Jobrane
ef125216bb Merge pull request #2242 from nhost/changeset-release/main
chore: update versions
2023-09-15 17:33:37 +01:00
github-actions[bot]
fb43fefb5c chore: update versions 2023-09-15 16:22:32 +00:00
Hassan Ben Jobrane
73744c90f0 Merge pull request #2241 from nhost/feat/node18-announcement
feat: add node18 announcement banner
2023-09-15 17:19:27 +01:00
Hassan Ben Jobrane
9fbea9787e chore: add changeset 2023-09-15 16:47:21 +01:00
Hassan Ben Jobrane
e5f54bc197 feat: add node18 announcement banner 2023-09-15 16:43:59 +01:00
Hassan Ben Jobrane
10a6ae4853 Merge pull request #2233 from nhost/changeset-release/main
chore: update versions
2023-09-13 17:11:54 +01:00
github-actions[bot]
d6ca1c7cfd chore: update versions 2023-09-13 13:59:01 +00:00
Hassan Ben Jobrane
bb85a95eda Merge pull request #2236 from nhost/fix/run/subdomain-optional
fix: run: handle subdomain nullability
2023-09-13 14:56:22 +01:00
Hassan Ben Jobrane
e84acf4692 chore: add changeset 2023-09-13 13:06:05 +01:00
Hassan Ben Jobrane
2f20a70a28 fix(run): subdomain is not set when creating a new service 2023-09-13 13:00:18 +01:00
Hassan Ben Jobrane
e622ca0d83 chore(ci): run publish to vercel before docker build 2023-09-12 15:09:34 +01:00
David Barroso
819e1e97dc chore (docs): update fqdn format for nhost run (#2232) 2023-09-12 14:54:39 +02:00
Hassan Ben Jobrane
7c1cca0a43 Merge pull request #2231 from nhost/changeset-release/main
chore: update versions
2023-09-12 13:09:07 +01:00
github-actions[bot]
0f51f4e868 chore: update versions 2023-09-12 12:05:55 +00:00
Hassan Ben Jobrane
97a6fcead9 Merge pull request #2230 from nhost/feat/run/copy-urls-dialog
feat(run): add dialog to copy service urls
2023-09-12 13:03:17 +01:00
Hassan Ben Jobrane
b7c799d62c chore: add changeset 2023-09-12 12:04:41 +01:00
Hassan Ben Jobrane
18b14b27fd refactor: pass service data directly to the details dialog 2023-09-12 12:01:20 +01:00
Hassan Ben Jobrane
67a867c93a feat: add dialog to copy service urls 2023-09-11 19:52:51 +01:00
David Barroso
0a1fb12467 feat: observability: add egress/requests metrics to general dashboard (#2227) 2023-09-06 18:03:25 +02:00
Hassan Ben Jobrane
78467ee348 Merge pull request #2219 from nhost/changeset-release/main
chore: update versions
2023-09-04 11:58:34 +01:00
github-actions[bot]
c24eef0db9 chore: update versions 2023-09-04 10:24:35 +00:00
Hassan Ben Jobrane
2159b8171e Merge pull request #2218 from nhost/fix/format-functions-execution
fix: dashboard: usage stats
2023-09-04 11:21:25 +01:00
Hassan Ben Jobrane
8903e6abd9 chore: add changeset 2023-09-02 15:18:54 +01:00
Hassan Ben Jobrane
7290260990 fix: show correct egress volume limit 2023-09-02 15:15:43 +01:00
Hassan Ben Jobrane
06529a1ea4 fix: round up functions duration 2023-09-02 15:14:29 +01:00
Hassan Ben Jobrane
607d89e2aa Merge pull request #2215 from nhost/changeset-release/main
chore: update versions
2023-09-01 19:13:41 +01:00
github-actions[bot]
0cca72311c chore: update versions 2023-09-01 15:26:44 +00:00
Hassan Ben Jobrane
a6525b6467 Merge pull request #2214 from nhost/feat/update-usage-metrics
feat(dashboard): update usage metrics
2023-09-01 16:24:06 +01:00
Hassan Ben Jobrane
387be37b6e chore: remove redundant egress card 2023-09-01 15:30:01 +01:00
Hassan Ben Jobrane
c8fd8bbcc7 fix: update storage upper limit for pro plan 2023-09-01 13:01:27 +01:00
Hassan Ben Jobrane
bfb34bad00 fix: use correct value for functions duration 2023-09-01 12:28:19 +01:00
Hassan Ben Jobrane
666a75a233 chore: add changeset 2023-09-01 12:26:41 +01:00
Hassan Ben Jobrane
3b050217df feat(dashboard): tweak usage metrics 2023-09-01 12:25:15 +01:00
Hassan Ben Jobrane
0ed4481615 feat(dashboard): update usage metrics 2023-09-01 11:14:49 +01:00
Hassan Ben Jobrane
ac3f12c878 Merge pull request #2211 from nhost/changeset-release/main
chore: update versions
2023-08-31 12:29:34 +01:00
github-actions[bot]
65cabb089f chore: update versions 2023-08-31 11:01:17 +00:00
Hassan Ben Jobrane
2905beb0a1 Merge pull request #2212 from nhost/fix/hasura-storage-js-edge-runtime
fix(hasura-storage-js): swap fetch when running on edge runtime
2023-08-31 11:58:43 +01:00
Hassan Ben Jobrane
83fee54460 chore: add changeset 2023-08-31 11:11:44 +01:00
Hassan Ben Jobrane
82898b6dae fix(hasura-storage-js): swap fetch when running on edge runtime 2023-08-31 11:09:37 +01:00
Hassan Ben Jobrane
500f76a38d Merge pull request #2208 from nhost/fix/user-auth-locales
fix: remove hardcoded locales
2023-08-30 10:31:43 +01:00
Hassan Ben Jobrane
5e1e80aa8b chore: add changeset 2023-08-29 20:05:29 +01:00
Hassan Ben Jobrane
6d0a126907 fix: remove hardcoded locales 2023-08-29 13:32:12 +01:00
Hassan Ben Jobrane
1b7dcf2121 Merge pull request #2207 from nhost/changeset-release/main
chore: update versions
2023-08-28 16:40:51 +01:00
github-actions[bot]
2b9205b6cf chore: update versions 2023-08-28 15:16:01 +00:00
Hassan Ben Jobrane
bdc4d4a88c Merge pull request #2206 from nhost/fix/stripe-graphql-js
fix(stripe-graphql-js): fix stripe GraphQL extension export issue in serverless functions
2023-08-28 16:12:13 +01:00
Hassan Ben Jobrane
45759c4d4c chore: add changeset 2023-08-28 15:49:17 +01:00
Hassan Ben Jobrane
5f9886577a fix: import 2023-08-28 15:47:49 +01:00
Hassan Ben Jobrane
fa65496327 fix(stripe-extension): return yoga instance instead of node http server 2023-08-28 15:24:56 +01:00
Hassan Ben Jobrane
03777680c1 chore: add STRIPE_SECRET_KEY 2023-08-26 16:51:31 +01:00
Hassan Ben Jobrane
72c81207ff Merge pull request #2201 from nhost/chore/add-missing-changeset
chore: add missing changeset
2023-08-24 16:47:41 +01:00
Hassan Ben Jobrane
5ca2a394e8 chore: sync version in package.json 2023-08-24 16:30:18 +01:00
Hassan Ben Jobrane
e63b8da58a chore: add missing changeset 2023-08-24 16:27:38 +01:00
Hassan Ben Jobrane
bf8543cd34 Merge pull request #2195 from nhost/changeset-release/main
chore: update versions
2023-08-24 13:57:34 +01:00
github-actions[bot]
8a557bbd02 chore: update versions 2023-08-24 12:21:34 +00:00
Hassan Ben Jobrane
327e30b859 Merge pull request #2200 from nhost/chore/ignore-version-update-sveltekit-example
chore: sveltekit-example: changeset ignore dep version update
2023-08-24 13:18:25 +01:00
Hassan Ben Jobrane
bbfaf9732b chore: sveltekit-example: ignore changeset dep version update 2023-08-24 12:44:16 +01:00
Hassan Ben Jobrane
c064a53256 Merge pull request #2199 from nhost/chore/fix-dep-version
chore: fix dep version for sveltekit example
2023-08-24 12:03:57 +01:00
Hassan Ben Jobrane
ebda86f1f0 chore: sync lockfile 2023-08-24 11:53:41 +01:00
Hassan Ben Jobrane
8948be9d3d chore: fix dep version for sveltekit example 2023-08-24 11:50:47 +01:00
Hassan Ben Jobrane
54e9b141f1 Merge pull request #2191 from nhost/dbarroso/react-example
chore: react-apollo-example: add profile to allowedUrls
2023-08-24 10:56:45 +01:00
Hassan Ben Jobrane
dba71483df chore: add changeset 2023-08-24 10:41:58 +01:00
Hassan Ben Jobrane
77ef68232a Merge pull request #2197 from nhost/fix/webauthn-error-handling
fix(hasura-auth-js): make sure CodifiedError works on non v8 browsers
2023-08-24 10:26:46 +01:00
Hassan Ben Jobrane
8fbc7f9f95 Merge pull request #2198 from nhost/chore/remove-facebook-login
chore(react-apollo-example): remove facebook login
2023-08-24 10:26:31 +01:00
Hassan Ben Jobrane
ca9f0f6ae9 chore: show error toast when adding a security key fails 2023-08-23 23:48:45 +01:00
Hassan Ben Jobrane
e819903f1b chore: add changeset 2023-08-23 17:00:30 +01:00
Hassan Ben Jobrane
f780b17581 chore: remove facebook login from react apollo example 2023-08-23 16:59:44 +01:00
Hassan Ben Jobrane
032c0bd217 chore: add changeset 2023-08-23 16:51:14 +01:00
Hassan Ben Jobrane
5d278709cb fix(hasura-auth-js): make sure CodifiedError works on non v8 browsers 2023-08-23 16:25:57 +01:00
Hassan Ben Jobrane
3a012e089a Merge pull request #2182 from nhost/feat/add-sveltekit-example
feat: add sveltekit example
2023-08-23 12:14:38 +01:00
Hassan Ben Jobrane
7aed620e12 chore: fix tests 2023-08-23 11:39:29 +01:00
Hassan Ben Jobrane
d9fd1a54a5 Merge pull request #2192 from nhost/changeset-release/main
chore: update versions
2023-08-23 11:19:48 +01:00
github-actions[bot]
a19b85c8ac chore: update versions 2023-08-23 09:45:31 +00:00
Hassan Ben Jobrane
4e1aaca0ee Merge pull request #2194 from nhost/feat/toggle-av
feat: toggle av
2023-08-23 10:42:20 +01:00
Hassan Ben Jobrane
34ef37cdce Merge pull request #2190 from dddenis/fix/storage-upload-status-error
fix(hasura-storage-js): fix upload response status code check
2023-08-23 10:40:29 +01:00
Hassan Ben Jobrane
5d6b655cb1 fix: make sure AV turns off correctly 2023-08-23 01:40:01 +01:00
Hassan Ben Jobrane
074a0fa111 chore: add changeset 2023-08-22 18:32:34 +01:00
Hassan Ben Jobrane
403d839fca chore: cleanup 2023-08-22 18:30:26 +01:00
Hassan Ben Jobrane
4e3098240b feat(settings): add toggle av settings 2023-08-22 18:28:27 +01:00
Hassan Ben Jobrane
dd0a5cf3c1 chore: fix lock file 2023-08-22 16:55:28 +01:00
Hassan Ben Jobrane
5187fd3a4b chore: dashboard tests 2023-08-22 16:49:26 +01:00
Hassan Ben Jobrane
d8dfd6bf80 Revert "chore: add missing dep for vitest"
This reverts commit 6ea6ad61db.
2023-08-22 16:16:20 +01:00
Hassan Ben Jobrane
6ea6ad61db chore: add missing dep for vitest 2023-08-22 16:04:24 +01:00
Hassan Ben Jobrane
fd0b904ed4 chore: fix dashboard e2e tests 2023-08-22 15:41:36 +01:00
Hassan Ben Jobrane
8989e314a6 fix: ignore conflict with linting and sveltekit build 2023-08-22 14:40:18 +01:00
Hassan Ben Jobrane
5b5a1219c5 fix: make sure linting runs correctly 2023-08-22 14:31:45 +01:00
Hassan Ben Jobrane
07fda9bbb3 Merge pull request #2193 from nhost/fix/distinguish-not-uploaded-files
fix: grey out not uploaded files
2023-08-22 13:11:52 +01:00
Hassan Ben Jobrane
2fa828fef1 chore: cleanup .gitignore file 2023-08-22 13:10:59 +01:00
Hassan Ben Jobrane
d5ec69ac37 chore(examples-sveltekit): add a basic test 2023-08-22 13:07:06 +01:00
Hassan Ben Jobrane
4a7ede11e9 chore: add changeset 2023-08-22 11:33:42 +01:00
Hassan Ben Jobrane
482ae4c4f1 fix: grey not uploaded files 2023-08-22 11:25:23 +01:00
Denis Goncharenko
08fe4cd65f fix(hasura-storage-js): update upload response error details 2023-08-22 11:34:41 +02:00
Hassan Ben Jobrane
5781721bca Merge pull request #2188 from nhost/feat/one-click-run-service
feat: add support for template run services
2023-08-22 10:18:54 +01:00
Denis Goncharenko
39de0063bf chore: add changeset 2023-08-21 20:49:56 +02:00
Hassan Ben Jobrane
202b647234 chore: add changeset 2023-08-21 15:45:43 +01:00
Hassan Ben Jobrane
51c163a268 fix: copy complete link to config 2023-08-21 15:43:46 +01:00
Hassan Ben Jobrane
6e802c9938 fix: handle the case where the config is not set in the URL 2023-08-21 13:38:38 +01:00
Hassan Ben Jobrane
9a46104e37 feat: replace project selector with a searchable list 2023-08-21 13:26:27 +01:00
Hassan Ben Jobrane
655b317c39 fix: keep image field when copying config to clipboard 2023-08-21 13:25:57 +01:00
Hassan Ben Jobrane
d3ad7c9d4a fix: handle error when navigating back when service form is still open 2023-08-21 13:25:01 +01:00
David Barroso
09fc852c3a asd 2023-08-21 13:13:41 +02:00
Hassan Ben Jobrane
ece08d3efd feat: add ability to copy current service config from the editor 2023-08-21 10:47:54 +01:00
Hassan Ben Jobrane
3493442c2d fix: fix command import when value is null 2023-08-21 10:47:26 +01:00
Denis Goncharenko
632a79b9e4 fix(hasura-storage-js): fix upload response status code check 2023-08-20 14:15:24 +02:00
Hassan Ben Jobrane
4a4d85757a fix: use serviceId to determine whether to create or update service 2023-08-19 19:33:45 +01:00
Hassan Ben Jobrane
88a01004b7 feat: parse base64 encoded config from query param 2023-08-19 18:50:46 +01:00
David Barroso
73230eb35a chore: fix and deploy react example (#2183) 2023-08-19 07:57:42 +02:00
Hassan Ben Jobrane
27e1c90624 fix: change env to dynamic 2023-08-18 18:26:09 +01:00
Hassan Ben Jobrane
1cc53d550a chore: add changeset 2023-08-18 18:04:12 +01:00
Hassan Ben Jobrane
22d3f71e02 fix: make sure to include lib folder in sveltekit example 2023-08-18 17:58:29 +01:00
Hassan Ben Jobrane
010b816866 chore: fix README 2023-08-18 17:36:10 +01:00
Hassan Ben Jobrane
4a6e62e673 feat: add sveltekit example 2023-08-18 17:16:13 +01:00
Hassan Ben Jobrane
5cf9dd9bc2 Merge pull request #2173 from nhost/changeset-release/main
chore: update versions
2023-08-14 11:34:45 +01:00
github-actions[bot]
27e74c10d7 chore: update versions 2023-08-10 11:05:13 +00:00
Hassan Ben Jobrane
bd807a5ee1 Merge pull request #2171 from nhost/feat/run-pricing
feat: add pricing info and confirmation dialog
2023-08-10 12:01:04 +01:00
Hassan Ben Jobrane
4093e03a13 Merge pull request #2170 from nhost/feat/multiline-env-input
fix: nhost run enhancements
2023-08-10 12:00:53 +01:00
Hassan Ben Jobrane
29076d0304 Merge pull request #2169 from nhost/fix/null-values-services-form
fix(services): handle null values when editing a service
2023-08-10 12:00:43 +01:00
Hassan Ben Jobrane
ab83fa6b5e fix: make sure vCPUs are shown correctly 2023-08-09 16:20:45 +01:00
Hassan Ben Jobrane
b20761e976 chore: add changeset 2023-08-09 14:55:31 +01:00
Hassan Ben Jobrane
a445e5b786 feat: add pricing info and confirmation dialog 2023-08-09 14:53:05 +01:00
Hassan Ben Jobrane
90df6d81d8 chore: add changeset 2023-08-08 18:04:16 +01:00
Hassan Ben Jobrane
aa85084675 chore: add changeset 2023-08-08 18:02:35 +01:00
Hassan Ben Jobrane
07ad470c0c fix: query service logs correctly 2023-08-08 18:00:25 +01:00
Hassan Ben Jobrane
fa6b58a9c5 feat: enable multiline support for environment value input 2023-08-08 17:50:07 +01:00
Hassan Ben Jobrane
acf55376ba fix(services): handle null values when editing a service 2023-08-08 15:42:09 +01:00
Hassan Ben Jobrane
b0a9798b04 Merge pull request #2168 from nhost/changeset-release/main
chore: update versions
2023-08-08 11:17:25 +01:00
github-actions[bot]
3952e87f01 chore: update versions 2023-08-07 17:53:16 +00:00
Hassan Ben Jobrane
b95ccf873d Merge pull request #2167 from nhost/fix/announcement-banner-text
fix: make announcement text white in dark mode
2023-08-07 18:50:41 +01:00
Hassan Ben Jobrane
8d7f84b8da chore: add changeset 2023-08-07 18:33:17 +01:00
Hassan Ben Jobrane
bd1b69bd75 fix: make announcement text white in dark mode 2023-08-07 12:17:18 +01:00
Hassan Ben Jobrane
84d5436634 Merge pull request #2165 from nhost/changeset-release/main
chore: update versions
2023-08-07 12:09:08 +01:00
github-actions[bot]
2325766c1d chore: update versions 2023-08-04 16:06:40 +00:00
Hassan Ben Jobrane
2c355eaae4 Merge pull request #2162 from nhost/fix/dedicated-resources-modal
fix: show zero values when dedicated resources is disabled
2023-08-04 17:03:08 +01:00
Hassan Ben Jobrane
9e26ed767e Merge pull request #2161 from nhost/fix/announcement-banner
fix: make announcement close properly
2023-08-04 17:02:58 +01:00
Hassan Ben Jobrane
abdb6c56f4 chore: increase e2e CI timeout 2023-08-03 17:18:03 +01:00
Hassan Ben Jobrane
3b75bfce27 chore: add changeset 2023-08-03 17:03:01 +01:00
Hassan Ben Jobrane
f498190758 chore: add changeset 2023-08-03 17:00:10 +01:00
Hassan Ben Jobrane
b4158fa513 fix: show zero values when dedicated resources is disabled 2023-08-03 16:54:12 +01:00
Hassan Ben Jobrane
3d1a177632 fix: make announcement close properly 2023-08-03 15:17:06 +01:00
Hassan Ben Jobrane
0675a213b5 Merge pull request #2155 from nhost/changeset-release/main
chore: update versions
2023-08-01 14:28:53 +01:00
github-actions[bot]
a8ff383490 chore: update versions 2023-08-01 13:09:10 +00:00
David Barroso
960d815f68 chore(docs): added Nhost Run documentation (#2125)
Co-authored-by: Nuno Pato <nunopato@gmail.com>
2023-08-01 15:05:56 +02:00
Hassan Ben Jobrane
edf2b4e93f Merge pull request #2150 from nhost/feat/tweak-copy-service-form
feat(services): consistent naming for compute
2023-08-01 14:04:22 +01:00
Hassan Ben Jobrane
fe240542a4 Merge pull request #2152 from nhost/fix/services-form
fix(services): fix when config is null
2023-08-01 14:04:09 +01:00
Hassan Ben Jobrane
c7752c0657 Merge pull request #2154 from nhost/feat/run-announcement
feat(run): add annoucement for nhost run
2023-08-01 14:03:55 +01:00
Hassan Ben Jobrane
d1e2b1c75a chore: tweak announcement copy 2023-08-01 14:03:25 +01:00
Hassan Ben Jobrane
bcdab66bf8 chore: add changeset 2023-08-01 13:26:43 +01:00
Hassan Ben Jobrane
7636f40030 chore: remove unused 2023-08-01 13:25:28 +01:00
Hassan Ben Jobrane
e643bd3620 chore: add changeset 2023-08-01 13:23:13 +01:00
Hassan Ben Jobrane
311c7756d7 chore: add changeset 2023-08-01 13:21:17 +01:00
David Barroso
f967a2e596 chore(docs): added note about storage not being able to be downsized (#2153) 2023-08-01 14:16:16 +02:00
Hassan Ben Jobrane
4c4b253a71 chore: fix lockfile 2023-08-01 13:07:16 +01:00
Hassan Ben Jobrane
0f5f8c0d90 chore: revert lockfile 2023-08-01 13:00:37 +01:00
Hassan Ben Jobrane
37a7fc05d5 feat(run): add annoucement for nhost run 2023-08-01 12:37:23 +01:00
Hassan Ben Jobrane
bf93d87b36 fix(services): fix when config is null 2023-07-31 18:46:39 +01:00
Hassan Ben Jobrane
efb3dc7294 feat(services): consistent naming for compute 2023-07-27 17:24:42 +01:00
Hassan Ben Jobrane
42bd7807b2 Merge pull request #2148 from nhost/chore/increase-ci-timeout
chore: increase timeout for Publish to Docker Hub
2023-07-25 16:08:34 +01:00
Hassan Ben Jobrane
eea59bd202 chore: increase timeout for Publish to Docker Hub 2023-07-25 15:36:15 +01:00
Hassan Ben Jobrane
7248eb733f Merge pull request #2146 from nhost/changeset-release/main
chore: update versions
2023-07-25 13:12:50 +01:00
github-actions[bot]
fceb6a4a89 chore: update versions 2023-07-25 11:52:49 +00:00
Hassan Ben Jobrane
b10eca09a8 Merge pull request #2126 from nhost/renovate/turbo-monorepo
chore(deps): update dependency turbo to v1.10.11
2023-07-25 12:49:57 +01:00
Hassan Ben Jobrane
4799b65e96 Merge pull request #2144 from nhost/feat/add-run-services-to-logs
feat: add run/services to the logs
2023-07-25 12:24:13 +01:00
Hassan Ben Jobrane
067eb9d6a9 Merge pull request #2143 from nhost/feat/change-grafana-url
feat: change grafana url to point to dashboards
2023-07-25 12:24:03 +01:00
Hassan Ben Jobrane
219d5ecdcf Merge pull request #2140 from nhost/fix/create-service-form
fix: tweaking the create service form
2023-07-25 12:23:47 +01:00
Hassan Ben Jobrane
9073182d51 chore: add changeset 2023-07-25 12:20:15 +01:00
Hassan Ben Jobrane
bdb5783e79 chore: sync turbo version in Dockerfile 2023-07-25 12:19:09 +01:00
Hassan Ben Jobrane
ece717d6e0 chore: add changeset 2023-07-25 12:01:53 +01:00
Hassan Ben Jobrane
b135ef695c chore: add changeset 2023-07-25 11:38:00 +01:00
Hassan Ben Jobrane
82b3353110 chore: add changeset 2023-07-25 11:34:20 +01:00
Hassan Ben Jobrane
3f165a85e3 fix: grafana urls in generateAppServiceUrl.test 2023-07-25 11:14:58 +01:00
renovate[bot]
aa4018909f chore(deps): update dependency turbo to v1.10.11 2023-07-24 23:03:50 +00:00
Hassan Ben Jobrane
98397e3ccd feat: add run/services to the logs 2023-07-24 18:00:22 +01:00
Hassan Ben Jobrane
911e7112c9 feat: change grafana url to point to dashboards 2023-07-24 17:32:46 +01:00
Hassan Ben Jobrane
e62402ecfc feat(services): add toolip content 2023-07-24 10:24:24 +01:00
Hassan Ben Jobrane
9190dd726d Merge pull request #2138 from nhost/changeset-release/main
chore: update versions
2023-07-23 21:31:33 +01:00
github-actions[bot]
ae093283d0 chore: update versions 2023-07-23 20:13:51 +00:00
Hassan Ben Jobrane
875327fbea Merge pull request #2136 from tawsbob/bug/users-page-limit
fix: back to previous limit
2023-07-23 21:11:11 +01:00
Hassan Ben Jobrane
3d5c34f4ce chore: add changeset 2023-07-23 20:53:14 +01:00
Dellean Santos
58c2a20532 fix: back to previous limit 2023-07-23 16:17:10 -03:00
Hassan Ben Jobrane
6c90cb5024 fix: make command optional and set min replicas 0 2023-07-22 19:58:34 +01:00
Hassan Ben Jobrane
7e37570587 Merge pull request #2133 from nhost/chore/ci-trigger-release-manually
chore(ci): add support for triggering release manually
2023-07-21 19:27:04 +01:00
Hassan Ben Jobrane
87d225a840 chore(ci): trigger release manually 2023-07-21 19:08:34 +01:00
Hassan Ben Jobrane
7b0de27c80 Merge pull request #2132 from nhost/changeset-release/main
chore: update versions
2023-07-21 17:43:45 +01:00
github-actions[bot]
564fc76195 chore: update versions 2023-07-21 16:24:17 +00:00
Hassan Ben Jobrane
2ed4f40c12 Merge pull request #2120 from nhost/feat/services
feat: services
2023-07-21 17:21:44 +01:00
Hassan Ben Jobrane
d67a023e21 feat(services): block services for free apps 2023-07-21 16:51:58 +01:00
Hassan Ben Jobrane
c99d117d1c chore: add changeset 2023-07-21 15:40:08 +01:00
Hassan Ben Jobrane
a497a6ba0a feat(services): mod port url if values are empty 2023-07-21 12:57:18 +01:00
Hassan Ben Jobrane
160cd08cc7 feat(services): fix e2e nav test 2023-07-21 10:35:51 +01:00
Hassan Ben Jobrane
120151c40c feat(services): run pnpm install 2023-07-20 19:14:47 +01:00
Hassan Ben Jobrane
9dc16f29b3 feat(services): add services pagination 2023-07-20 19:10:10 +01:00
Hassan Ben Jobrane
964fc5644a feat(services): put services behind a feature flag 2023-07-20 19:09:48 +01:00
Hassan Ben Jobrane
2f907fc68f feat(services): tweak service form on mobile 2023-07-20 12:41:35 +01:00
Hassan Ben Jobrane
fe6cadc2cd feat(services): tweak services list 2023-07-20 11:40:45 +01:00
Hassan Ben Jobrane
338c8e5a80 feat(services): fix command on initialData 2023-07-19 17:55:47 +01:00
Hassan Ben Jobrane
e6f3a1a39d feat(services): tweak compute section 2023-07-19 16:20:52 +01:00
Hassan Ben Jobrane
a168faeb69 feat(services): tweak service form 2023-07-19 14:00:25 +01:00
Hassan Ben Jobrane
b1628c59b5 feat(services): refactor command field 2023-07-19 13:36:37 +01:00
Hassan Ben Jobrane
32a2f5db9a feat(services): fix replicas form section 2023-07-19 11:57:10 +01:00
Hassan Ben Jobrane
818a48f74d feat(services): refactor edit service 2023-07-19 10:58:56 +01:00
Hassan Ben Jobrane
bed377d05f feat(services): add service details page 2023-07-18 16:19:48 +01:00
Hassan Ben Jobrane
709a616cfa feat(services): fix e2e nav item count 2023-07-17 19:59:24 +01:00
Hassan Ben Jobrane
860e2d877c feat(services): fix linter errors 2023-07-17 19:40:21 +01:00
Hassan Ben Jobrane
5c6b2f88b9 fix: export component properly 2023-07-17 18:43:41 +01:00
Hassan Ben Jobrane
f151a0e872 feat(services): tweaks + show URL for ports/image 2023-07-17 17:01:28 +01:00
Hassan Ben Jobrane
4a84bbb410 feat(service): tweaks + add service details page 2023-07-17 16:10:18 +01:00
Hassan Ben Jobrane
fa3a50e323 feat(service): add GiB to storage capacity field 2023-07-16 23:48:48 +01:00
Hassan Ben Jobrane
398152358c feat(service): tweak compute form section 2023-07-16 23:43:44 +01:00
Hassan Ben Jobrane
34ae9046f3 feat(services): add fetch and delete services 2023-07-16 23:32:24 +01:00
Hassan Ben Jobrane
a478689587 feat(services): fix compute section 2023-07-14 19:54:24 +01:00
Hassan Ben Jobrane
9dbc0607dc feat(services): hook up create service to the api 2023-07-14 19:43:08 +01:00
Hassan Ben Jobrane
7455efdd53 feat(services): tweak create service form 2023-07-14 15:20:14 +01:00
Hassan Ben Jobrane
d0aff6141f feat(services): add info tooltip to each section 2023-07-14 13:59:41 +01:00
Hassan Ben Jobrane
aed0c4f82a feat(services): add create service form 2023-07-14 12:20:34 +01:00
Hassan Ben Jobrane
74d4276c1a feat(services): add new page for services 2023-07-13 11:55:20 +01:00
Hassan Ben Jobrane
1e98130aa1 Merge pull request #2113 from nhost/changeset-release/main
chore: update versions
2023-07-12 20:34:35 +01:00
github-actions[bot]
52e9b510da chore: update versions 2023-07-12 19:22:34 +00:00
Hassan Ben Jobrane
ece197eb6b Merge pull request #2116 from nhost/renovate/prettier-plugin-tailwindcss-0.x
chore(deps): update dependency prettier-plugin-tailwindcss to ^0.4.0
2023-07-12 20:20:50 +01:00
Hassan Ben Jobrane
d14e112bff chore: add changeset 2023-07-12 17:29:12 +01:00
renovate[bot]
83884f04a5 chore(deps): update dependency prettier-plugin-tailwindcss to ^0.4.0 2023-07-12 16:10:24 +00:00
Hassan Ben Jobrane
977de21e86 Merge pull request #2117 from nhost/chore/add-hasura-auth-version
chore: add hasura-auth version 0.20.2
2023-07-12 17:07:27 +01:00
Hassan Ben Jobrane
462a60a8f8 chore: fix hasura-auth version 2023-07-12 16:45:01 +01:00
Hassan Ben Jobrane
9aa4371ef4 chore: add changeset 2023-07-12 16:45:01 +01:00
Hassan Ben Jobrane
f0feddd83f chore: add hasura-auth version 0.20.2 2023-07-12 16:45:01 +01:00
Hassan Ben Jobrane
0748cab125 Merge pull request #2087 from nhost/renovate/vite-plugin-dts-3.x
chore(deps): update dependency vite-plugin-dts to v3
2023-07-12 16:41:59 +01:00
Hassan Ben Jobrane
27885491ee chore: fix test project subdomain 2023-07-12 13:55:14 +01:00
Hassan Ben Jobrane
a36bdbf907 chore: uncomment setting preview URL 2023-07-12 13:53:42 +01:00
Hassan Ben Jobrane
d3e8bb94ae chore: add changeset 2023-07-11 16:39:26 +01:00
Hassan Ben Jobrane
645595ee43 Revert "chore: increase playwright timeout"
This reverts commit 72d1e94cb3.
2023-07-11 16:36:46 +01:00
Hassan Ben Jobrane
4d82bc5609 Revert "chore: playwright: increase number of workers"
This reverts commit b4c10f9f8a.
2023-07-11 16:17:30 +01:00
Hassan Ben Jobrane
fdf1e555d8 chore: ci: comment Fetch Dashboard Preview URL 2023-07-11 16:13:50 +01:00
Hassan Ben Jobrane
90c694cbba chore: ci: Comment step Set Dashboard Preview URL 2023-07-11 15:51:03 +01:00
Hassan Ben Jobrane
3262fa7b37 chore: teardown: run playwright in slowMo 2023-07-11 15:09:25 +01:00
Hassan Ben Jobrane
ab43fe567f chore: fix inserting sql in hasura page 2023-07-11 14:47:21 +01:00
Hassan Ben Jobrane
b4c10f9f8a chore: playwright: increase number of workers 2023-07-11 14:26:22 +01:00
Hassan Ben Jobrane
f4c6e7cfab chore: bring back raw_sql fill 2023-07-11 13:58:41 +01:00
Hassan Ben Jobrane
72d1e94cb3 chore: increase playwright timeout 2023-07-11 13:36:44 +01:00
Hassan Ben Jobrane
82d221a48d Revert "chore: increase CI e2e timeout"
This reverts commit 3fe46771b9.
2023-07-11 11:57:36 +01:00
Hassan Ben Jobrane
3fe46771b9 chore: increase CI e2e timeout 2023-07-11 11:06:09 +01:00
Hassan Ben Jobrane
a1c487aa21 chore: fix lock file 2023-07-11 01:55:39 +01:00
Hassan Ben Jobrane
cf455608e2 chore: fix e2e tests 2023-07-11 01:40:17 +01:00
Hassan Ben Jobrane
5dac12dd41 chore: use node v18 2023-07-10 18:15:22 +01:00
Hassan Ben Jobrane
2389b46e0d chore: update node to v18 2023-07-10 16:40:41 +01:00
renovate[bot]
6fe2d22d0e chore(deps): update dependency vite-plugin-dts to v3 2023-07-10 15:23:12 +00:00
Hassan Ben Jobrane
0b439149e4 Merge pull request #2106 from nhost/renovate/pluralize-0.x
chore(deps): update dependency @types/pluralize to ^0.0.30
2023-07-10 16:19:28 +01:00
Hassan Ben Jobrane
a9d7da8af7 chore: add changeset 2023-07-10 16:09:14 +01:00
renovate[bot]
3ecc21a45e chore(deps): update dependency @types/pluralize to ^0.0.30 2023-07-10 14:30:41 +00:00
Hassan Ben Jobrane
aa19e85cdc Merge pull request #2088 from nhost/renovate/turbo-monorepo
chore(deps): update dependency turbo to v1.10.7
2023-07-10 15:28:49 +01:00
Hassan Ben Jobrane
26c650227d Merge pull request #2111 from nhost/fix/tweak-config-warning
fix: tweak warning in dark mode
2023-07-10 15:16:25 +01:00
Hassan Ben Jobrane
face99ccde chore: add changeset 2023-07-10 15:07:25 +01:00
Hassan Ben Jobrane
49bcc525ad chore: bump turbo version in Dockerfile 2023-07-10 15:07:25 +01:00
renovate[bot]
533563c893 chore(deps): update dependency turbo to v1.10.7 2023-07-10 15:07:25 +01:00
Hassan Ben Jobrane
cfe527307e chore: add changeset 2023-07-10 15:05:22 +01:00
Hassan Ben Jobrane
1e36c6706d Revert "chore: use node 18 for GH actions"
This reverts commit 6e40b114fc.
2023-07-10 15:01:46 +01:00
Hassan Ben Jobrane
6e40b114fc chore: use node 18 for GH actions 2023-07-10 13:58:11 +01:00
Hassan Ben Jobrane
77acf1385d Revert "chore: increase ci timeout"
This reverts commit cec7edd2d5.
2023-07-10 12:23:22 +01:00
Hassan Ben Jobrane
cec7edd2d5 chore: increase ci timeout 2023-07-10 10:50:55 +01:00
Hassan Ben Jobrane
9dbbdb3121 fix: show only when a repo is connected 2023-07-07 19:24:09 +01:00
Hassan Ben Jobrane
79d2602648 fix: tweak warning in dark mode 2023-07-07 18:52:24 +01:00
Hassan Ben Jobrane
b0363a4f4c Merge pull request #2110 from nhost/changeset-release/main
chore: update versions
2023-07-07 17:18:43 +01:00
github-actions[bot]
17045b2018 chore: update versions 2023-07-07 16:07:03 +00:00
Hassan Ben Jobrane
c49cc11862 Merge pull request #2108 from nhost/feat/fix-hasura-storage-file-upload
fix(hasura-storage-js): fix file upload
2023-07-07 17:05:33 +01:00
Hassan Ben Jobrane
c83fe7d776 chore(e2e): change e2e tests timeout 2023-07-07 16:48:49 +01:00
Hassan Ben Jobrane
235b4c7405 chore: wrap secret values in quotes 2023-07-07 16:08:24 +01:00
Hassan Ben Jobrane
c2c0fbd33a chore(e2e): increase timeout 2023-07-07 15:19:02 +01:00
Hassan Ben Jobrane
300e3f49e0 chore: add changeset 2023-07-07 14:21:12 +01:00
Hassan Ben Jobrane
a95a77886b fix(hasura-storage-js): fix file upload 2023-07-07 10:44:42 +01:00
Stephan van Opstal
1f3f683202 Update serverless-functions.mdx (#2105)
Please correct me if I'm wrong but I believe the endpoints in the docs
are wrong.
2023-07-07 08:36:57 +02:00
github-actions[bot]
4c67fd23c4 chore: update versions (#2101)
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@0.19.0

### Minor Changes

- 9c61c69a7: chore(dashboard):add postgres 14.6-20230705-1 to the
version selector

### Patch Changes

-   47bda15ff: feat(settings): add warning to pull config

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-07-06 20:15:13 +02:00
Hassan Ben Jobrane
93d8d71e34 Merge pull request #2102 from nhost/feat/pull-config-warning
feat(settings): add warning to pull config
2023-07-06 15:06:08 +01:00
Hassan Ben Jobrane
47bda15ff2 chore: add changeset 2023-07-06 14:39:27 +01:00
Hassan Ben Jobrane
4563488b5d feat(settings): show alert when there's a repo 2023-07-06 14:35:31 +01:00
Hassan Ben Jobrane
8fd35f3fea feat(settings): add warning to pull config 2023-07-06 14:26:14 +01:00
David Barroso
9c61c69a7b chore(dashboard):add postgres 14.6-20230705-1 to the version selector (#2100) 2023-07-06 15:24:06 +02:00
github-actions[bot]
030ad4621e chore: update versions (#2098)
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@0.18.0

### Minor Changes

- ee0b9b8ed: chore(dashboard):add hasura v2.28.2 and v2.29.0 to the
version selector

## @nhost/docs@0.4.0

### Minor Changes

-   c6fa8da6d: fix(docs): remove outdated reference/cli

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-07-06 13:34:58 +02:00
David Barroso
ee0b9b8edc chore(dashboard):add hasura v2.28.2 and v2.29.0 to the version selector (#2097) 2023-07-06 13:21:53 +02:00
David Barroso
c6fa8da6df fix(docs): remove outdated reference/cli (#2093)
Fixes nhost/cli/issues/734
2023-07-06 12:21:14 +02:00
github-actions[bot]
dd9dedc226 chore: update versions (#2086) 2023-06-30 10:12:55 +02:00
Hassan Ben Jobrane
5638a91240 Merge pull request #2080 from nhost/renovate/tsconfig-docusaurus-2.x
chore(deps): update dependency @tsconfig/docusaurus to v2
2023-06-29 18:19:00 +01:00
Hassan Ben Jobrane
cdefbdebee chore: remove unchanged packages from changeset 2023-06-29 17:09:27 +01:00
Hassan Ben Jobrane
923abd3655 chore: add changeset 2023-06-29 17:02:26 +01:00
renovate[bot]
ef28540f9a chore(deps): update dependency @tsconfig/docusaurus to v2 2023-06-29 15:10:11 +00:00
Szilárd Dóró
d54e4cdd4e fix(hasura-storage-js): allow using custom buckets for upload (#2085)
This PR is a fix for the [issue mentioned on our Discord
channel](https://discord.com/channels/552499021260914688/1123893547955933214/1123893547955933214).
It wasn't caused by the latest hasura-storage-js release.
2023-06-29 17:07:29 +02:00
David Barroso
4a00963602 feat(observability): added graph with restarts (#2084) 2023-06-29 13:57:37 +02:00
github-actions[bot]
7ea9b890c8 chore: update versions (#2083)
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@0.17.19

### Patch Changes

-   f866120a6: fix(users): use the password length from the config

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-06-29 11:19:53 +02:00
Szilárd Dóró
f866120a65 fix(dashboard): use dynamic validation schema for password editing (#2082)
Fixes #2081
2023-06-29 10:52:40 +02:00
github-actions[bot]
472559276c chore: update versions (#2079)
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.2.0

### Minor Changes

- 2cdb13b3e: fix(upload): allow specifying `id` and `name` only when not
using `form-data`

## @nhost/apollo@5.2.13

### Patch Changes

-   @nhost/nhost-js@2.2.11

## @nhost/react-apollo@5.0.30

### Patch Changes

-   @nhost/apollo@5.2.13
-   @nhost/react@2.0.26

## @nhost/react-urql@2.0.27

### Patch Changes

-   @nhost/react@2.0.26

## @nhost/nextjs@1.13.32

### Patch Changes

-   @nhost/react@2.0.26

## @nhost/nhost-js@2.2.11

### Patch Changes

-   Updated dependencies [2cdb13b3e]
    -   @nhost/hasura-storage-js@2.2.0

## @nhost/react@2.0.26

### Patch Changes

-   @nhost/nhost-js@2.2.11

## @nhost/vue@1.13.31

### Patch Changes

-   @nhost/nhost-js@2.2.11

## @nhost/dashboard@0.17.18

### Patch Changes

-   @nhost/react-apollo@5.0.30
-   @nhost/nextjs@1.13.32

## @nhost-examples/node-storage@0.0.3

### Patch Changes

- 2cdb13b3e: fix(upload): allow specifying `id` and `name` only when not
using `form-data`
    -   @nhost/nhost-js@2.2.11

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-06-27 16:50:56 +02:00
Szilárd Dóró
2cdb13b3ef fix(hasura-storage-js): streamline file upload API (#2072)
Fixes #2071

This PR changes the API of the `hasura-storage-js` SDK slightly.

Before:
```ts
const formData = new FormData();

// first file
formData.append('file[]', '<file>');

// second file
formData.append('file[]', '<file>');

const { fileMetadata, error } = await nhost.storage.upload({
  formData,
  id: '<custom-uuid>', // ID doesn't make sense anymore when uploading multiple files
  name: '<custom-name>', // Name doesn't make sense anymore when uploading multiple files
});
```

Now:
```ts
const formData = new FormData();

// first file
formData.append('file[]', '<file>', '<custom-name>');
formData.append('metadata[]', JSON.stringify({ id: '<custom-uuid>' }))

// second file
formData.append('file[]', '<file>', '<custom-name>');
formData.append('metadata[]', JSON.stringify({ id: '<custom-uuid>' }))

const { fileMetadata, error } = await nhost.storage.upload({ formData });

// Access the metadata of upload files via fileMetadata.processedFiles
```

The `id` and `name` attributes can only be specified if you want to
upload a single file:

```ts
const file = event.target.files[0];

const { fileMetadata, error } = await nhost.storage.upload({
  file,
  id: '<custom-id>',
  name: '<custom-name>',
});

// Access the metadata of the upload file via fileMetadata
```
2023-06-27 16:20:17 +02:00
github-actions[bot]
a41124c5e0 chore: update versions (#2077)
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/google-translation@0.0.6

### Patch Changes

-   a5305e6b5: docs: update old URLs to the new format

## @nhost/dashboard@0.17.17

### Patch Changes

-   ea7b102c0: fix(pat): highlight expired tokens

## @nhost/docs@0.3.4

### Patch Changes

-   a5305e6b5: docs: update old URLs to the new format

## @nhost-examples/seed-data-storage@0.0.4

### Patch Changes

-   a5305e6b5: docs: update old URLs to the new format

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-06-27 12:59:50 +02:00
Hassan Ben Jobrane
6ecffa81ae Merge pull request #2078 from nhost/fix/highlight-expired-tokens
fix(pat): highlight expired tokens
2023-06-27 11:46:19 +01:00
Hassan Ben Jobrane
ea7b102c07 chroe: add changeset 2023-06-27 11:31:03 +01:00
Hassan Ben Jobrane
e9daf92830 chore: fix code formatting 2023-06-27 10:09:29 +01:00
Hassan Ben Jobrane
9e4ad76e7f style: use darker color 2023-06-27 10:00:34 +01:00
Szilárd Dóró
0fd65db563 chore(dashboard): extend readme (#2076) 2023-06-27 09:19:07 +02:00
Hassan Ben Jobrane
146fbb84b9 fix: highlight expired tokens 2023-06-26 17:57:48 +01:00
Szilárd Dóró
b51c18fedb Merge pull request #2075 from nhost/docs/fix-old-urls
fix(docs): use modern URLs
2023-06-26 16:43:12 +02:00
Szilárd Dóró
a5305e6b56 chore: add changeset 2023-06-26 16:31:36 +02:00
Szilárd Dóró
aa88ef2e5c fix(docs): use correct functions URL 2023-06-26 16:08:58 +02:00
Szilárd Dóró
ee6b3c9ac8 fix(docs): use modern URLs 2023-06-26 16:06:49 +02:00
Szilárd Dóró
79fd86acc5 Merge pull request #2074 from nhost/fix/e2e-timeout
fix(ci): timeout long running e2e tests
2023-06-26 15:43:03 +02:00
Szilárd Dóró
c2cbeddcb8 fix(ci): timeout long running e2e tests 2023-06-26 15:34:36 +02:00
Szilárd Dóró
62b2de59d4 Merge pull request #2073 from nhost/changeset-release/main
chore: update versions
2023-06-25 17:50:18 +02:00
github-actions[bot]
2a760593db chore: update versions 2023-06-25 15:34:14 +00:00
Szilárd Dóró
9288873ce8 Merge pull request #2070 from nhost/renovate/react-monorepo
chore(deps): update react monorepo
2023-06-25 17:32:26 +02:00
Szilárd Dóró
47014be8e3 Merge pull request #2065 from nhost/renovate/turbo-monorepo
chore(deps): update dependency turbo to v1.10.6
2023-06-25 15:37:07 +02:00
Szilárd Dóró
49719f7a84 fix: don't break build 2023-06-25 15:23:22 +02:00
Szilárd Dóró
b3b64a3b74 chore: sync versions and add changeset 2023-06-25 15:21:13 +02:00
Szilárd Dóró
3a56c12df4 chore(dashboard): bump turbo to v1.10.6 2023-06-25 15:15:46 +02:00
renovate[bot]
5b15a4f235 chore(deps): update react monorepo 2023-06-25 13:13:47 +00:00
renovate[bot]
83303017c3 chore(deps): update dependency turbo to v1.10.6 2023-06-25 13:12:39 +00:00
Szilárd Dóró
e0739a5883 Merge pull request #2067 from nhost/renovate/graphiql-react-0.x
fix(deps): update dependency @graphiql/react to ^0.18.0
2023-06-25 15:10:36 +02:00
Szilárd Dóró
0a5a841cc8 fix: don't break builds 2023-06-25 14:57:31 +02:00
Szilárd Dóró
3309835f06 chore: revert PNPM version in flake.nix 2023-06-25 14:05:35 +02:00
Szilárd Dóró
32b221f944 chore: add changeset 2023-06-25 14:02:47 +02:00
renovate[bot]
e8a99badb8 fix(deps): update dependency @graphiql/react to ^0.18.0 2023-06-25 11:54:28 +00:00
Szilárd Dóró
1ea6e01963 Merge pull request #2066 from nhost/renovate/tj-actions-changed-files-37.x
chore(deps): update tj-actions/changed-files action to v37
2023-06-25 13:54:11 +02:00
Szilárd Dóró
958dec5dfe Merge pull request #2060 from nhost/changeset-release/main
chore: update versions
2023-06-25 13:50:55 +02:00
renovate[bot]
09257fbfb2 chore(deps): update tj-actions/changed-files action to v37 2023-06-24 17:15:19 +00:00
github-actions[bot]
61e3497a13 chore: update versions 2023-06-24 17:12:27 +00:00
Szilárd Dóró
a7b4e5606d Merge pull request #2069 from nhost/fix/security-keys
fix(webauthn): don't break webauthn form on save
2023-06-24 19:11:12 +02:00
Szilárd Dóró
34d77c9db1 fix(webauthn): don't break webauthn form on save 2023-06-24 18:54:06 +02:00
Szilárd Dóró
4f1efd28a6 Merge pull request #2058 from nhost/renovate/graphql-16.x
chore(deps): update dependency graphql to v16.7.1
2023-06-23 16:00:02 +02:00
Szilárd Dóró
07a45fde0e chore: add changeset 2023-06-23 14:30:07 +02:00
renovate[bot]
9d0380eef3 chore(deps): update dependency graphql to v16.7.1 2023-06-23 12:12:53 +00:00
Szilárd Dóró
ce3ec36b0a Merge pull request #2059 from nhost/fix/404
fix(dashboard): don't redirect to 404 page
2023-06-23 14:10:21 +02:00
Szilárd Dóró
b62a9d19b5 chore(dashboard): improve verbosity of variables 2023-06-23 13:02:32 +02:00
Szilárd Dóró
c1472079c5 Merge pull request #2057 from nhost/renovate/turbo-monorepo
chore(deps): update dependency turbo to v1.10.5
2023-06-23 12:23:29 +02:00
Szilárd Dóró
dd36971798 chore(pnpm): revert pnpm-lock file 2023-06-23 12:17:08 +02:00
Szilárd Dóró
6199c1c555 fix(dashboard): don't redirect to 404 page 2023-06-23 12:11:22 +02:00
Szilárd Dóró
f41fdc12af chore: bump turbo in the Dockerfile, add changeset 2023-06-23 10:23:43 +02:00
renovate[bot]
fc419ffa4d chore(deps): update dependency turbo to v1.10.5 2023-06-22 19:20:02 +00:00
Szilárd Dóró
b7c102e876 Merge pull request #2056 from nhost/changeset-release/main
chore: update versions
2023-06-21 16:01:32 +02:00
github-actions[bot]
873fc36e61 chore: update versions 2023-06-21 13:29:42 +00:00
Szilárd Dóró
29743f0b71 Merge pull request #2053 from nhost/renovate/react-monorepo
chore(deps): update react monorepo and `@storybook/testing-library`
2023-06-21 15:28:22 +02:00
Szilárd Dóró
d904ca2bbf Merge branch 'renovate/react-monorepo' of https://github.com/nhost/nhost into renovate/react-monorepo 2023-06-21 10:29:52 +02:00
Szilárd Dóró
80b22724de chore(deps): bump @storybook/testing-library 2023-06-21 10:29:38 +02:00
renovate[bot]
80e49f4459 chore(deps): update react monorepo 2023-06-21 07:58:56 +00:00
David Barroso
b3d5ead508 chore(docs): fix stripe reference to env vars (#2054) 2023-06-21 09:55:45 +02:00
renovate[bot]
77dcb8c964 chore(deps): update react monorepo 2023-06-19 16:30:54 +00:00
Szilárd Dóró
3488da9dfd Merge pull request #2052 from nhost/changeset-release/main
chore: update versions
2023-06-19 10:13:57 +02:00
github-actions[bot]
0e68a1fdfd chore: update versions 2023-06-16 12:39:47 +00:00
Szilárd Dóró
8797b2bd17 Merge pull request #2051 from nhost/renovate/commander-11.x
fix(deps): update dependency commander to v11
2023-06-16 14:38:37 +02:00
Szilárd Dóró
5ef0b31573 chore: add changeset 2023-06-16 11:20:58 +02:00
renovate[bot]
86e5e0fb50 fix(deps): update dependency commander to v11 2023-06-16 01:45:29 +00:00
Szilárd Dóró
c2d589dd29 Merge pull request #2049 from nhost/changeset-release/main
chore: update versions
2023-06-15 11:34:48 +02:00
github-actions[bot]
4b807d8134 chore: update versions 2023-06-15 09:16:08 +00:00
Szilárd Dóró
ccdabb707f Merge pull request #2048 from nhost/fix/system-env-var-copy
chore(docs): update environment variable docs
2023-06-15 11:14:40 +02:00
Szilárd Dóró
364bc87fd3 docs: update custom env vars section 2023-06-15 10:48:43 +02:00
Szilárd Dóró
cc02902cbb chore: docs: update env var docs 2023-06-15 10:42:00 +02:00
Szilárd Dóró
0e838b9406 Merge pull request #2043 from nhost/changeset-release/main
chore: update versions
2023-06-15 09:47:18 +02:00
Szilárd Dóró
37ebf7d8e2 Merge pull request #2044 from nhost/chore/update-developers-guide
chore: update DEVELOPERS.md
2023-06-15 09:37:53 +02:00
github-actions[bot]
e23af24bdd chore: update versions 2023-06-15 07:29:50 +00:00
Szilárd Dóró
90eb53cf19 Merge pull request #2045 from nhost/fix/storybook-and-tests
fix(dashboard): don't break storybook and don't show warnings during tests
2023-06-15 09:28:21 +02:00
Szilárd Dóró
7e516d7630 Merge pull request #2046 from nhost/fix/functions-and-graphql-header
fix(nhost-js): pass access token to underlying clients
2023-06-15 08:39:01 +02:00
Szilárd Dóró
0861e41e70 fix: dashboard: correct typo in the readme 2023-06-15 08:38:41 +02:00
Szilárd Dóró
057e7e2572 chore: dashboard: update README 2023-06-14 21:30:43 +02:00
Szilárd Dóró
5a4e237a29 fix(nhost-js): pass access token to underlying clients 2023-06-14 21:17:46 +02:00
Szilárd Dóró
c7501c70ae fix: pin playwright to 1.31.0 2023-06-14 18:57:27 +02:00
Szilárd Dóró
6a45c1abad fix: dashboard: don't break storybook 2023-06-14 15:29:53 +02:00
Szilárd Dóró
660d339e14 fix: dashboard: prevent warnings during tests 2023-06-14 15:29:37 +02:00
Szilárd Dóró
3dca08595d Merge pull request #2038 from nhost/fix/token-reload
fix(hasura-auth-js): prevent infinite token refresh
2023-06-14 14:38:22 +02:00
Szilárd Dóró
7c501c4e4f chore: add section about selecting versions 2023-06-14 14:36:17 +02:00
github-actions[bot]
b9316bb668 chore: update versions (#2041)
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@0.17.11

### Patch Changes

- bd4d0c270: chore(dashboard):add postgres 14.6-20230613-1 to the
version selector

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-06-14 14:29:07 +02:00
Szilárd Dóró
5e1d5b737c chore: extend DEVELOPERS.md with changeset info 2023-06-14 14:27:08 +02:00
David Barroso
bd4d0c2708 chore(dashboard):add postgres 14.6-20230613-1 to the version selector (#2039) 2023-06-14 14:15:12 +02:00
Szilárd Dóró
1d04ad6306 fix: hasura-auth-js: don't break unit tests 2023-06-14 12:01:13 +02:00
Szilárd Dóró
a4fa5f6f59 fix: don't break unit tests 2023-06-14 10:06:31 +02:00
Szilárd Dóró
7e973d568a fix: hasura-auth-js: prevent infinite token refresh 2023-06-14 09:46:58 +02:00
Szilárd Dóró
d81c52209b Merge pull request #2036 from nhost/chore/bump-nhost-cli
chore(nix): bump Nhost CLI and Node.js versions
2023-06-13 16:05:04 +02:00
Szilárd Dóró
72744b3082 chore: remove duplicate nhost package 2023-06-13 14:43:04 +02:00
Szilárd Dóró
ff4efe2712 chore: bump Node version in workspace 2023-06-13 14:42:28 +02:00
Szilárd Dóró
2982b90469 chore: bump Nhost CLI version 2023-06-13 14:35:21 +02:00
Szilárd Dóró
428a5df038 Merge pull request #2034 from nhost/changeset-release/main
chore: update versions
2023-06-13 13:40:44 +02:00
github-actions[bot]
f79bf784b5 chore: update versions 2023-06-13 11:27:56 +00:00
Szilárd Dóró
3b7449ac08 Merge pull request #2035 from nhost/fix/reset-password
fix(dashboard): don't break the password reset flow
2023-06-13 13:26:46 +02:00
Szilárd Dóró
37bbfdb7ae fix: use system colors when storage is empty 2023-06-13 13:24:30 +02:00
Szilárd Dóró
eb570d2d09 fix: don't break linter 2023-06-13 13:22:09 +02:00
Szilárd Dóró
c8c2a10b2d fix: dashboard: don't break the password reset flow 2023-06-13 13:09:36 +02:00
Szilárd Dóró
92c79eb2fb Merge pull request #2033 from nhost/renovate/react-monorepo
chore(deps): update react monorepo
2023-06-13 10:29:58 +02:00
Szilárd Dóró
e70b45498d chore: add changeset 2023-06-13 09:57:17 +02:00
renovate[bot]
2e1ecfa731 chore(deps): update react monorepo 2023-06-13 06:40:47 +00:00
Szilárd Dóró
8d323a7762 Merge pull request #2031 from nhost/changeset-release/main
chore: update versions
2023-06-13 08:38:01 +02:00
github-actions[bot]
8aa0ff936a chore: update versions 2023-06-13 06:05:58 +00:00
Szilárd Dóró
c6806d60c7 Merge pull request #1995 from nhost/chore/remove-password-input
chore(dashboard): remove password input from project creation
2023-06-13 08:04:39 +02:00
Szilárd Dóró
a13eb25ebc Merge pull request #2021 from nhost/renovate/react-monorepo 2023-06-12 16:59:13 +02:00
Szilárd Dóró
228d8a0686 fix: don't break build 2023-06-12 16:07:08 +02:00
Szilárd Dóró
0de1bc7ce3 Merge branch 'main' into renovate/react-monorepo 2023-06-12 16:01:01 +02:00
Szilárd Dóró
6a94cad04b Merge pull request #2018 from nhost/renovate/vitest-monorepo
chore(deps): update vitest monorepo to ^0.32.0
2023-06-12 15:49:22 +02:00
Szilárd Dóró
8643d25cc8 Merge branch 'renovate/react-monorepo' of https://github.com/nhost/nhost into renovate/react-monorepo 2023-06-12 15:28:54 +02:00
Szilárd Dóró
e820f11dda Merge branch 'renovate/vitest-monorepo' of https://github.com/nhost/nhost into renovate/vitest-monorepo 2023-06-12 15:24:50 +02:00
Szilárd Dóró
3555ab2b71 chore: add changeset and swap coverage dependency 2023-06-12 15:23:40 +02:00
renovate[bot]
6e41d58131 chore(deps): update vitest monorepo to ^0.32.0 2023-06-12 13:15:35 +00:00
renovate[bot]
6cf3beae1c chore(deps): update dependency @types/react to v18.2.11 2023-06-12 13:14:46 +00:00
Szilárd Dóró
022b76e784 chore: add changeset 2023-06-12 15:13:41 +02:00
Szilárd Dóró
2fbe88f806 Merge pull request #2032 from nhost/feat/download-backups
feat(dashboard): add download button to backups
2023-06-12 15:12:19 +02:00
Szilárd Dóró
9457bc32ca chore: dashboard: simplify restoration modal 2023-06-12 14:07:42 +02:00
Szilárd Dóró
3de2639ae9 feat: dashboard: add Hasura v2.27.0-ce to the version selector 2023-06-12 13:22:23 +02:00
Szilárd Dóró
c43e549224 feat: dashboard: add download button to backups 2023-06-12 13:12:42 +02:00
renovate[bot]
fc6fe5007b chore(deps): update vitest monorepo to ^0.32.0 2023-06-12 10:44:57 +00:00
renovate[bot]
829febf33b chore(deps): update dependency @types/react to v18.2.11 2023-06-12 10:44:09 +00:00
David Barroso
ae99ba14b9 docs: added documentation on overlays (#2004) 2023-06-12 12:41:43 +02:00
Szilárd Dóró
a158dc3a17 Merge pull request #2030 from nhost/chore/bump-turbo-pnpm
chore: bump turbo and pnpm
2023-06-12 11:59:06 +02:00
Szilárd Dóró
8420550990 chore: bump turbo and pnpm 2023-06-12 11:41:19 +02:00
Szilárd Dóró
156667cdbd Merge pull request #2027 from nhost/chore/gh-actions-node
fix: revert Node to v16
2023-06-12 11:20:02 +02:00
Szilárd Dóró
7d388a8c91 fix: revert Node to v16 2023-06-12 10:41:26 +02:00
Szilárd Dóró
d32a2fceae Merge pull request #2026 from nhost/changeset-release/main
chore: update versions
2023-06-12 10:07:52 +02:00
github-actions[bot]
d690eb86bb chore: update versions 2023-06-12 07:21:55 +00:00
Szilárd Dóró
d91271cce1 Merge pull request #2020 from luciodale/main
Add missing fields to JWTClaims interface
2023-06-12 09:19:51 +02:00
Szilárd Dóró
1e74a2da85 Merge pull request #2008 from nhost/feat/config-parity
feat(dashboard): bring the dashboard closer to the config
2023-06-12 09:02:54 +02:00
Szilárd Dóró
bc8837b961 chore: remove unnecessary changeset 2023-06-12 08:58:53 +02:00
Lucio D'Alessandro
78fdad8404 Add changeset 2023-06-07 20:10:43 +02:00
Szilárd Dóró
2e8a72d445 fix: remove incomplete sign-in providers 2023-06-07 14:55:08 +02:00
Szilárd Dóró
ce1ae32772 chore: add explanation to Hasura Logs 2023-06-07 14:16:29 +02:00
Szilárd Dóró
b51455d324 fix: use unique input IDs 2023-06-07 13:43:26 +02:00
Szilárd Dóró
28a305d9be chore: add changeset 2023-06-07 11:33:13 +02:00
Lucio D'Alessandro
e23bf4500d Add missing fields to JWTClaims interface 2023-06-07 11:07:11 +02:00
Szilárd Dóró
d0457fe5c3 chore: add changeset 2023-06-07 09:57:30 +02:00
Szilárd Dóró
766d1e1c5a feat: add support for password length config 2023-06-07 09:55:52 +02:00
Szilárd Dóró
44d460cd01 Merge pull request #2017 from nhost/changeset-release/main
chore: update versions
2023-06-06 17:07:25 +02:00
github-actions[bot]
adf934c871 chore: update versions 2023-06-06 14:52:48 +00:00
Szilárd Dóró
0a963486e2 Merge pull request #2016 from nhost/docs/use-correct-sample-urls
docs: use correct sample URLs for custom client
2023-06-06 16:51:37 +02:00
Szilárd Dóró
227d1704f2 docs: use correct sample URLs for custom client 2023-06-06 15:55:41 +02:00
Szilárd Dóró
2baef92988 feat: add support for pool size configuration 2023-06-06 15:41:16 +02:00
Szilárd Dóró
2a10da128d feat: add support for log level settings 2023-06-06 15:31:30 +02:00
Szilárd Dóró
62a51c9fc7 feat: add bitbucket, gitlab and strava support 2023-06-06 15:20:41 +02:00
Szilárd Dóró
58977b173b Merge branch 'main' into feat/config-parity 2023-06-06 14:50:45 +02:00
Szilárd Dóró
b5e5dcf6de chore: bump Node to v18 in CI 2023-06-06 14:39:23 +02:00
Szilárd Dóró
157e1b74b8 Merge pull request #2015 from nhost/changeset-release/main
chore: update versions
2023-06-06 14:10:14 +02:00
github-actions[bot]
b3a475c60f chore: update versions 2023-06-06 12:04:51 +00:00
Szilárd Dóró
3d62871db1 Merge pull request #2014 from nhost/fix/pat-section
fix(dashboard): don't break account settings page
2023-06-06 14:01:53 +02:00
Szilárd Dóró
4f0368b95f fix: don't break account settings page 2023-06-06 13:50:13 +02:00
Szilárd Dóró
0385093111 fix: use correct gravatar value 2023-06-06 13:19:50 +02:00
Szilárd Dóró
463cb50c27 Merge pull request #2011 from nhost/changeset-release/main 2023-06-06 11:40:03 +02:00
Szilárd Dóró
a50174a0a1 feat: add support for changing enabled APIs 2023-06-06 11:19:32 +02:00
Szilárd Dóró
21cbe7487e chore: fix typos 2023-06-06 10:43:24 +02:00
Szilárd Dóró
6e4b34126e feat: add support for enabling/disabling remote schema permissions 2023-06-06 10:40:59 +02:00
Szilárd Dóró
fd3a1a44ef feat: add support for Hasura Dev Mode settings 2023-06-06 10:34:38 +02:00
Szilárd Dóró
66e6021dc0 feat: add support for enabling / disabling the console 2023-06-06 10:27:32 +02:00
Szilárd Dóró
57fdba70e0 feat: add Hasura Allow List configuration 2023-06-06 10:08:23 +02:00
github-actions[bot]
676c11f814 chore: update versions 2023-06-06 07:27:04 +00:00
Szilárd Dóró
d8442a290b Merge pull request #2010 from nhost/chore/lower-max-resources
chore(dashboard): lower the max allowed resources per service
2023-06-06 09:25:53 +02:00
Szilárd Dóró
0db333353b chore: add message to resources 2023-06-05 16:30:53 +02:00
Szilárd Dóró
7ea8120723 Merge pull request #2009 from nhost/docs/custom-urls
docs: add section about using custom URLs
2023-06-05 16:27:33 +02:00
Szilárd Dóró
64a8f41d03 chore: add changeset 2023-06-05 16:18:30 +02:00
Szilárd Dóró
8e12ded94b chore: lower the maximum allowed resources 2023-06-05 16:17:06 +02:00
Szilárd Dóró
564ce1ac2d docs: add section about custom URLs 2023-06-05 16:03:50 +02:00
Szilárd Dóró
b024817eb5 docs: add docs about using custom URLs 2023-06-05 15:55:36 +02:00
Szilárd Dóró
24f98630fd Merge branch 'main' into feat/config-parity 2023-06-05 14:58:57 +02:00
Szilárd Dóró
c1b024cf53 Merge pull request #2006 from nhost/fix/example-visibility
fix: make node-storage example private
2023-06-05 14:51:18 +02:00
Szilárd Dóró
dbacbf140b fix: make node-storage example private 2023-06-05 14:22:17 +02:00
Szilárd Dóró
eda9e57583 feat: add support for Hasura CORS domain settings 2023-06-05 14:20:15 +02:00
Szilárd Dóró
0a9af5075c Merge pull request #2005 from nhost/changeset-release/main
chore: update versions
2023-06-05 13:41:52 +02:00
Szilárd Dóró
f92d9d1fd2 feat: support for access and refresh token config 2023-06-05 13:32:33 +02:00
github-actions[bot]
15168539d8 chore: update versions 2023-06-05 11:13:57 +00:00
Szilárd Dóró
0d74217a4c Merge pull request #2003 from nhost/chore/node-18-upgrade
fix(hasura-storage-js): don't break when using Node 18
2023-06-05 13:12:10 +02:00
Szilárd Dóró
9721527324 chore: improve storage example 2023-06-05 10:48:15 +02:00
Szilárd Dóró
fd4d024bfc feat: add Nhost to the storage example 2023-06-05 10:46:29 +02:00
Szilárd Dóró
c994c8f05b Merge pull request #2000 from nhost/changeset-release/main
chore: update versions
2023-06-05 10:08:26 +02:00
Szilárd Dóró
4c00a796eb fix: don't break builds 2023-06-05 09:50:30 +02:00
github-actions[bot]
2d3a77af76 chore: update versions 2023-06-05 07:06:47 +00:00
Szilárd Dóró
ef05d69889 Merge pull request #2002 from nhost/fix/deployment-timestamp
fix(dashboard): use correct timestamps for deployments
2023-06-05 09:05:02 +02:00
Szilárd Dóró
9b1d0f7a5b fix: use correct timestamps 2023-06-02 16:25:32 +02:00
Szilárd Dóró
07abea4c16 fix: make storage work with Node 18+
feat: add Node.js storage example
2023-06-02 16:19:10 +02:00
David Barroso
8733961026 docs: added entry about seeds (#2001) 2023-06-02 14:51:19 +02:00
Szilárd Dóró
dfa8776b2b chore: show loading state 2023-06-02 11:18:28 +02:00
Szilárd Dóró
1b9f15cb67 chore: improve password reset UX 2023-06-02 11:14:19 +02:00
Szilárd Dóró
b683615269 chore: confirm route change on database form 2023-06-02 10:53:33 +02:00
Szilárd Dóró
3dc97f17ae Merge pull request #1998 from nhost/renovate/react-monorepo
chore(deps): update dependency @types/react to v18.2.8
2023-06-02 10:48:46 +02:00
Szilárd Dóró
6d2963ffa7 chore: add changeset 2023-06-02 10:26:38 +02:00
renovate[bot]
d1ec8c0781 chore(deps): update dependency @types/react to v18.2.8 2023-06-02 07:29:45 +00:00
Szilárd Dóró
8b205e9c08 Merge pull request #1994 from nhost/fix/react-apollo-e2e
fix(ci): don't break E2E tests and Docker image creation
2023-06-02 09:27:28 +02:00
David Barroso
e2792cd453 docs: cli: added documentation for jsonpatches (#1996) 2023-06-02 09:00:02 +02:00
Szilárd Dóró
a60ca2f6f5 chore: update info message, update reset button 2023-06-01 16:45:10 +02:00
Szilárd Dóró
14a2ead79f chore: unify Alert component's styling 2023-06-01 16:24:29 +02:00
Szilárd Dóró
b625a6b4d4 chore: cleanup unused code 2023-06-01 16:24:12 +02:00
Szilárd Dóró
fd12aa0a8d chore: remove password input 2023-06-01 16:23:57 +02:00
Szilárd Dóró
8871267b91 chore: downgrade pnpm to 8.5.1 2023-06-01 14:50:18 +02:00
Szilárd Dóró
e3001ba4a5 chore: add changeset 2023-06-01 14:21:49 +02:00
Szilárd Dóró
1133b76a7e fix: don't break react-apollo example e2e tests 2023-06-01 14:21:12 +02:00
Szilárd Dóró
9b8a19a316 Merge pull request #1987 from nhost/changeset-release/main
chore: update versions
2023-06-01 13:57:05 +02:00
github-actions[bot]
26b8519add chore: update versions 2023-06-01 11:33:06 +00:00
Szilárd Dóró
f372b167d9 Merge pull request #1988 from nhost/chore/bump-deps
chore(deps): bump `@types/react`, `turbo` and `tj-actions/changed-files`
2023-06-01 13:31:48 +02:00
Szilárd Dóró
fbaea49b28 fix: ignore secrets correctly 2023-06-01 13:24:39 +02:00
Szilárd Dóró
0b4a2041e2 Merge branch 'main' into chore/bump-deps 2023-06-01 13:24:14 +02:00
Szilárd Dóró
444206b0f7 Merge pull request #1993 from nhost/chore/allow-empty-secrets-env-vars
chore(dashboard): allow empty secrets and environment variables
2023-06-01 13:23:38 +02:00
Szilárd Dóró
624ef79110 chore: bump turbo to v1.10.1 2023-06-01 13:19:09 +02:00
Szilárd Dóró
711ef45815 Merge branch 'chore/bump-deps' of https://github.com/nhost/nhost into chore/bump-deps 2023-06-01 13:17:46 +02:00
Szilárd Dóró
21e13db05a chore: add changeset 2023-06-01 13:17:44 +02:00
Szilárd Dóró
a1862b80ba chore: bump turbo, @types/react and tj-actions/changed-files 2023-06-01 13:17:43 +02:00
Szilárd Dóró
42e8d102e9 Merge pull request #1985 from nhost/fix/ci
fix(ci): use new CLI
2023-06-01 13:16:21 +02:00
Szilárd Dóró
aa3c629892 chore: add changeset 2023-06-01 12:49:25 +02:00
Szilárd Dóró
f016afed5d chore: bump pnpm version 2023-06-01 12:12:54 +02:00
Szilárd Dóró
9d4ee99553 fix: don't break E2E tests 2023-06-01 12:10:04 +02:00
Szilárd Dóró
6cbe1f662f fix: don't break E2E tests 2023-06-01 11:37:56 +02:00
Szilárd Dóró
abd9c88e5a Revert "fix: use correct mailhog URL in tests"
This reverts commit 788090e917.
2023-06-01 10:40:04 +02:00
Szilárd Dóró
27e5ef8f5a fix: use correct mailhog URL in tests 2023-06-01 10:34:50 +02:00
Szilárd Dóró
788090e917 fix: use correct mailhog URL in tests 2023-06-01 10:34:10 +02:00
Szilárd Dóró
f16433ae67 chore: allow empty secrets and environment variables 2023-06-01 10:17:14 +02:00
Szilárd Dóró
33e3bba700 fix: don't break E2E tests 2023-06-01 10:12:38 +02:00
Szilárd Dóró
517bb6930a chore: bump CLI version in all examples 2023-06-01 09:09:25 +02:00
Szilárd Dóró
4b17964e8d fix: simplify CI 2023-06-01 08:53:50 +02:00
Szilárd Dóró
ebc016377b fix: use proper dummy JWT secret 2023-06-01 08:45:55 +02:00
Szilárd Dóró
eae670f4d1 fix: don't start nhost up in the background 2023-06-01 08:42:55 +02:00
Szilárd Dóró
c642649853 chore: revert insecure curl requests 2023-06-01 08:26:16 +02:00
David Barroso
095f2c73b9 fix: update nhost's upgrade command (#1989) 2023-05-31 17:54:43 +02:00
Szilárd Dóró
42753d2b1f chore: add changeset 2023-05-31 16:00:42 +02:00
Szilárd Dóró
328c0a6600 chore: bump turbo, @types/react and tj-actions/changed-files 2023-05-31 15:59:52 +02:00
Szilárd Dóró
93101430c8 fix: temporarily allow insecure URL for curl 2023-05-31 15:53:28 +02:00
Szilárd Dóró
c14738b8c1 fix: use dummy .secrets file 2023-05-31 15:53:28 +02:00
Szilárd Dóró
683ef4f2fe fix: use dummy .secrets file 2023-05-31 15:53:28 +02:00
Szilárd Dóró
528f02874c fix: use dummy .secrets file 2023-05-31 15:53:28 +02:00
Szilárd Dóró
5f72ba57d3 chore: upgrade the Nhost app in packages/nhost-js 2023-05-31 15:53:27 +02:00
Szilárd Dóró
e71e3af530 fix: use CLI v1.0.1 2023-05-31 15:53:27 +02:00
Szilárd Dóró
aa05cd4b61 fix: temp CLI version change 2023-05-31 15:53:27 +02:00
Szilárd Dóró
bd87a36c6e update CLI install script 2023-05-31 15:53:27 +02:00
Szilárd Dóró
9c88947b86 change CLI version in CI 2023-05-31 15:53:27 +02:00
Szilárd Dóró
1b03ce7259 fix test CLI action 2023-05-31 15:53:27 +02:00
Szilárd Dóró
de1137a876 update CLI commands 2023-05-31 15:53:27 +02:00
Szilárd Dóró
770c4d1801 fix: don't break CI because of new Nhost CLI 2023-05-31 15:53:26 +02:00
Szilárd Dóró
60e25b3425 Merge pull request #1984 from nhost/chore/under-the-hood-improvements-pt-3
chore(dashboard): under the hood improvements
2023-05-31 15:50:06 +02:00
Szilárd Dóró
f4d2a305a5 Merge pull request #1980 from nhost/changeset-release/main
chore: update versions
2023-05-31 14:56:02 +02:00
Szilárd Dóró
01eeef9de7 chore: add changeset 2023-05-31 10:50:44 +02:00
Szilárd Dóró
f395375cd0 chore: @/ui -> @/components/ui
also improve ESLint rules
2023-05-31 10:48:40 +02:00
Szilárd Dóró
ae3599d2b4 chore: update codegen, simplify types 2023-05-31 10:40:51 +02:00
David Barroso
9a3c782fcb fix: update to new subcommand structure (#1983) 2023-05-31 10:30:56 +02:00
Szilárd Dóró
28c1633695 chore: remove unused hook 2023-05-31 10:27:56 +02:00
Szilárd Dóró
66822f8673 chore: nest remaining unnested utils 2023-05-31 10:26:19 +02:00
Szilárd Dóró
86b82bf5cf chore: simplify utils structure 2023-05-31 10:24:17 +02:00
Szilárd Dóró
f77454a848 chore: move utility function to features 2023-05-31 09:40:15 +02:00
Szilárd Dóró
3426000edf chore: simplify project structure 2023-05-31 09:33:21 +02:00
Szilárd Dóró
7bd9da909c chore: move components from the common folder 2023-05-31 09:26:42 +02:00
Szilárd Dóró
fcb84bfb3d chore: simplify component structure 2023-05-31 09:12:30 +02:00
Szilárd Dóró
991e4c0cc5 chore: move files to the features folder 2023-05-31 09:07:25 +02:00
github-actions[bot]
a7f03bc6ce chore: update versions 2023-05-31 06:53:53 +00:00
Szilárd Dóró
5684fdbf0b Merge pull request #1977 from nhost/chore/under-the-hood-improvements-pt-2
chore(dashboard): under the hood improvements
2023-05-31 08:52:34 +02:00
Nuno Pato
39980e6c54 Merge pull request #1979 from nhost/blog/config
update docs on cli
2023-05-30 16:50:18 +00:00
Nuno Pato
5b959cce0e asd 2023-05-30 16:25:15 +00:00
Nuno Pato
117098d8da config blog post 2023-05-30 15:20:36 +00:00
Szilárd Dóró
1fce4ca93d fix: don't break linter step 2023-05-30 15:45:04 +02:00
Szilárd Dóró
6a74a97cd0 Merge pull request #1978 from nhost/changeset-release/main
chore: update versions
2023-05-30 15:07:59 +02:00
Szilárd Dóró
7446fb30db fix: don't break build 2023-05-30 15:00:17 +02:00
github-actions[bot]
291185e609 chore: update versions 2023-05-30 12:43:56 +00:00
Szilárd Dóró
b1a2dd6ab3 Merge remote-tracking branch 'origin/main' into chore/under-the-hood-improvements-pt-2 2023-05-30 14:43:44 +02:00
Szilárd Dóró
d3f965048a Merge pull request #1976 from nhost/feat/enable-secrets
feat(dashboard): enable secrets
2023-05-30 14:42:39 +02:00
Szilárd Dóró
9acecfd638 chore: simplify file structure 2023-05-30 14:37:00 +02:00
Szilárd Dóró
134773be86 chore: break down UIContext 2023-05-30 14:31:12 +02:00
Szilárd Dóró
88a4983f2e chore: add changeset 2023-05-30 14:21:27 +02:00
Szilárd Dóró
7526f573c3 Merge remote-tracking branch 'origin/main' into chore/under-the-hood-improvements-pt-2 2023-05-30 14:21:18 +02:00
Szilárd Dóró
9b0d4dde50 feat: enable secrets 2023-05-30 14:16:20 +02:00
Szilárd Dóró
9934514dde chore: nest unnested hooks and utils 2023-05-30 13:07:46 +02:00
Szilárd Dóró
c7084d1759 chore: misc cleanup 2023-05-30 12:43:11 +02:00
Szilárd Dóró
f0a122d39b chore: remove unused components 2023-05-30 12:32:53 +02:00
Szilárd Dóró
34f1795e40 chore: update remaining default exports 2023-05-30 12:32:15 +02:00
Szilárd Dóró
2032494b27 chore: update provider exports 2023-05-30 12:30:10 +02:00
Szilárd Dóró
b5dce47370 chore: update secret components 2023-05-30 12:25:10 +02:00
Szilárd Dóró
60f1a03d33 chore: update roles components' exports 2023-05-30 12:24:02 +02:00
Szilárd Dóró
881b2d752c chore: update environment variable imports 2023-05-30 12:22:59 +02:00
Szilárd Dóró
db293808f3 chore: update BasePermissionVariableForm imports 2023-05-30 12:22:17 +02:00
Szilárd Dóró
7414b39f48 chore: update BaseEnvironmentVariableForm imports 2023-05-30 12:18:16 +02:00
Szilárd Dóró
7ebc555e4c chore: update ErrorMessage imports 2023-05-30 12:17:05 +02:00
Szilárd Dóró
830e627da1 chore: update import paths 2023-05-30 12:15:46 +02:00
Szilárd Dóró
176e3d5ea6 chore: update import paths 2023-05-30 11:35:45 +02:00
Szilárd Dóró
759aa9c221 chore: update Box imports 2023-05-30 11:28:27 +02:00
Szilárd Dóró
3acfd032bd chore: update Text imports 2023-05-30 11:25:59 +02:00
Szilárd Dóró
b77711000a chore: nest the remaining unnested components 2023-05-30 11:23:09 +02:00
Szilárd Dóró
79fa77f28f chore: remove unused components, update avatars 2023-05-30 11:19:33 +02:00
Szilárd Dóró
bd6fe2f85f chore: move Resource settings components 2023-05-30 11:03:13 +02:00
Szilárd Dóró
acb8a4f187 chore: remove default Button export 2023-05-30 11:00:19 +02:00
Nuno Pato
06d6ae0e86 Merge pull request #1971 from nhost/changeset-release/main
chore: update versions
2023-05-28 01:22:55 +00:00
github-actions[bot]
1777c147b2 chore: update versions 2023-05-26 18:59:45 +00:00
Nuno Pato
9d784b82c8 Merge pull request #1969 from nhost/chore/add-postgres-latest-version
chore: add latest postgres image
2023-05-26 18:58:30 +00:00
Nuno Pato
15d84a1966 chore: add latest postgres image 2023-05-26 16:52:52 +00:00
Nuno Pato
8a1a1e06aa Merge pull request #1963 from nhost/dbarroso/functions-metrics
chore: docs: update info about metrics to mention functions
2023-05-26 10:17:43 +00:00
David Barroso
eb1d7137cf fix link 2023-05-26 11:02:09 +02:00
David Barroso
cf55e8e111 chore: ammend functions dashboard (#1964) 2023-05-25 19:25:30 +02:00
David Barroso
b47c797d73 asd 2023-05-25 14:50:25 +02:00
David Barroso
dafc4b2635 chore: docs: update info about metrics to mention functions 2023-05-25 14:49:45 +02:00
Szilárd Dóró
97cfb5c514 chore: remove unnecessary components 2023-05-25 14:08:38 +02:00
David Barroso
0ccd9c82b1 feat: observability: added dashboard for metrics (#1961) 2023-05-25 13:29:55 +02:00
Szilárd Dóró
f0be842325 chore: create v1 folder for old UI components 2023-05-25 12:39:28 +02:00
Szilárd Dóró
30a0fd1698 chore: create folders for basic components 2023-05-25 12:34:01 +02:00
Szilárd Dóró
ce45f3b707 chore: move icons to the correct place 2023-05-25 12:23:07 +02:00
Szilárd Dóró
8b9df13725 chore: move generic components 2023-05-25 12:11:58 +02:00
Szilárd Dóró
8f31258d11 chore: move data grid components and hooks 2023-05-25 12:04:46 +02:00
Szilárd Dóró
877f857010 chore: improve hook structure 2023-05-25 11:46:49 +02:00
Szilárd Dóró
5773521b03 chore: move workspace-related components 2023-05-25 11:29:20 +02:00
Szilárd Dóró
549dd83f3e chore: partially move workspace-related components 2023-05-25 11:19:38 +02:00
Szilárd Dóró
e72c19c9da chore: move logs-related components 2023-05-25 11:08:28 +02:00
Szilárd Dóró
70d5dcf170 chore: move graphql-related files 2023-05-25 10:48:05 +02:00
Szilárd Dóró
c439174821 chore: move project-related components 2023-05-25 10:36:24 +02:00
Szilárd Dóró
2f7b2532ea chore: move backup and project-related components 2023-05-25 10:28:09 +02:00
Szilárd Dóró
faa21af7fb chore: move deployment-related files 2023-05-25 10:19:17 +02:00
Szilárd Dóró
a5fdc46a57 chore: move database utils 2023-05-25 10:10:36 +02:00
Szilárd Dóró
04e8728753 chore: move common project-related hooks 2023-05-25 10:09:34 +02:00
Szilárd Dóró
34cf922643 chore: cleanup Git related files 2023-05-25 10:07:56 +02:00
Szilárd Dóró
0dd1883815 Merge pull request #1954 from nhost/changeset-release/main
chore: update versions
2023-05-24 09:43:17 +02:00
github-actions[bot]
01ba429007 chore: update versions 2023-05-23 14:38:21 +00:00
Szilárd Dóró
fdf5b3035c Merge pull request #1951 from nhost/feat/pat-ui
feat(dashboard): add support for personal access tokens
2023-05-23 16:37:07 +02:00
Szilárd Dóró
ae52ca6303 fix: don't break tests 2023-05-23 15:52:36 +02:00
Szilárd Dóró
428222bf5f chore: revert "Note" to "Name" 2023-05-23 15:42:47 +02:00
Szilárd Dóró
090ee51854 Merge branch 'main' into feat/pat-ui 2023-05-23 15:34:42 +02:00
Szilárd Dóró
766c8431f1 Merge pull request #1944 from nhost/chore/under-the-hood-improvements
chore(dashboard): under the hood improvements
2023-05-23 15:31:45 +02:00
Szilárd Dóró
4c62617472 chore: add changeset 2023-05-23 15:10:45 +02:00
Szilárd Dóró
01f3cbb07a chore: update import paths 2023-05-23 15:09:20 +02:00
Szilárd Dóró
62f5d8b69e Merge branch 'main' into chore/under-the-hood-improvements 2023-05-23 14:37:57 +02:00
Szilárd Dóró
88e2c05afc Merge pull request #1947 from nhost/renovate/fontsource-inter-5.x
fix(deps): bump @fontsource monorepo to v5
2023-05-23 14:04:34 +02:00
Szilárd Dóró
f1edbfdbf1 chore: improve PAT table 2023-05-23 13:56:15 +02:00
Szilárd Dóró
a9943eef3f chore: remove unused codegen plugin 2023-05-23 12:42:29 +02:00
Szilárd Dóró
431e61a684 Merge branch 'main' into renovate/fontsource-inter-5.x 2023-05-23 12:40:44 +02:00
Szilárd Dóró
87e7f7d4f5 fix: revert to 365 days 2023-05-23 12:39:20 +02:00
Szilárd Dóró
5aab6b1896 fix: don't break tests 2023-05-23 11:11:29 +02:00
Szilárd Dóró
e4e216da6d chore: update PAT form structure 2023-05-23 11:07:59 +02:00
Szilárd Dóró
cd8ccdf59a Merge remote-tracking branch 'origin/main' into feat/pat-ui 2023-05-23 10:27:26 +02:00
Szilárd Dóró
9421dda73d Merge pull request #1953 from nhost/changeset-release/main
chore: update versions
2023-05-23 10:20:13 +02:00
github-actions[bot]
f13dc75993 chore: update versions 2023-05-23 08:16:17 +00:00
Szilárd Dóró
0a8b42d371 Merge pull request #1939 from nhost/feat/service-versions
feat(dashboard): add service version selectors
2023-05-23 10:15:03 +02:00
Szilárd Dóró
bd59d61e94 chore: update available Hasura Storage versions 2023-05-23 09:46:27 +02:00
Szilárd Dóró
349622fca2 chore: update available Hasura versions 2023-05-23 09:43:41 +02:00
Szilárd Dóró
dfe8588a94 chore: simplify account settings structure 2023-05-23 09:40:33 +02:00
Szilárd Dóró
0167df5534 chore: update settings layout 2023-05-23 09:30:37 +02:00
Szilárd Dóró
7c790b3afe fix: don't use test.only 2023-05-22 20:57:06 +02:00
Szilárd Dóró
1b3a8a1638 chore: add tests for PAT 2023-05-22 17:38:19 +02:00
Szilárd Dóró
99edd0129a chore: add changeset 2023-05-22 16:26:15 +02:00
Szilárd Dóró
cfb759c34a feat: finalize PAT support 2023-05-22 16:25:49 +02:00
Szilárd Dóró
6c5a645876 feat: add support for listing PATs 2023-05-22 16:10:56 +02:00
Szilárd Dóró
db459b09ec feat: add support for PAT creation 2023-05-22 15:57:37 +02:00
Szilárd Dóró
e4fa63a571 feat: start working on PAT settings 2023-05-22 15:37:15 +02:00
Szilárd Dóró
4ce552c8eb feat: restore password change feature 2023-05-22 15:03:10 +02:00
Szilárd Dóró
b847c6d003 feat: prepare account settings page 2023-05-22 14:42:27 +02:00
Szilárd Dóró
daab7d8eeb Merge branch 'main' into feat/service-versions 2023-05-22 13:29:08 +02:00
Szilárd Dóró
1b4f074dfd chore: update Hasura version selector 2023-05-22 13:15:41 +02:00
Szilárd Dóró
cca7075721 fix: use tailwind classes in features 2023-05-22 12:26:18 +02:00
Szilárd Dóró
4c1b96ccc6 Merge branch 'main' into chore/under-the-hood-improvements 2023-05-22 11:53:08 +02:00
Szilárd Dóró
809a2d35f8 Merge pull request #1940 from nhost/changeset-release/main
chore: update versions
2023-05-22 11:51:04 +02:00
Szilárd Dóró
084b7ce6d2 Merge branch 'main' into feat/service-versions 2023-05-22 09:41:39 +02:00
github-actions[bot]
e17ec7fce7 chore: update versions 2023-05-22 07:26:27 +00:00
Szilárd Dóró
241175b158 Merge pull request #1935 from nhost/renovate/prettier-plugin-tailwindcss-0.x
chore(deps): update dependency prettier-plugin-tailwindcss to ^0.3.0
2023-05-22 09:14:39 +02:00
Szilárd Dóró
9b209ef419 update pnpm-lock file 2023-05-22 09:07:45 +02:00
Szilárd Dóró
a86d17c81f Merge branch 'renovate/fontsource-inter-5.x' of https://github.com/nhost/nhost into renovate/fontsource-inter-5.x 2023-05-22 09:07:32 +02:00
Szilárd Dóró
cc047b719a chore: bump @fontsource monorepo 2023-05-22 09:06:09 +02:00
renovate[bot]
889b071134 fix(deps): update dependency @fontsource/inter to v5 2023-05-22 07:04:25 +00:00
Szilárd Dóró
51ceaf2696 Merge pull request #1950 from nhost/fix/nextjs-react-error
fix(nextjs): don't break Next.js when using SignedIn/SignedOut
2023-05-22 09:00:26 +02:00
renovate[bot]
eee3f5723e fix(deps): update dependency @fontsource/inter to v5 2023-05-21 16:50:23 +00:00
Szilárd Dóró
490b77cde4 Merge pull request #1949 from nhost/fix/local-infinite-loop
fix(dashboard): don't enter an infinite loop in local mode
2023-05-21 18:14:05 +02:00
Szilárd Dóró
7fea29a8b4 chore: add changeset 2023-05-21 18:13:34 +02:00
Szilárd Dóró
1a34e011ad fix: don't break Next.js when using SignedIn/SignedOut 2023-05-21 18:08:42 +02:00
Szilárd Dóró
395839f449 chore: check service URL when creating client 2023-05-21 16:34:00 +02:00
Szilárd Dóró
399009d66a fix(gql): don't enter an infinite loop when fetching remote app data 2023-05-21 16:31:57 +02:00
Szilárd Dóró
12eb236c4a chore: add changeset 2023-05-19 17:14:22 +02:00
Szilárd Dóró
2218e5cd5b Merge branch 'main' into renovate/prettier-plugin-tailwindcss-0.x 2023-05-19 17:12:36 +02:00
Szilárd Dóró
2dcf1b38c6 Merge pull request #1945 from nhost/fix/404-not-found
fix(dashboard): don't redirect to 404 on project creation
2023-05-19 16:16:13 +02:00
Szilárd Dóró
412520ac10 fix: don't break tests 2023-05-19 15:32:27 +02:00
Szilárd Dóró
ad49c92879 fix: trigger project list refetch properly 2023-05-19 15:31:17 +02:00
Szilárd Dóró
13dd57eeb4 Merge pull request #1943 from nhost/fix/deployment-sorting
fix(dashboard): sync deployment sorting
2023-05-19 15:27:44 +02:00
Szilárd Dóró
1345741b11 fix: don't redirect to 404 2023-05-19 15:26:20 +02:00
Szilárd Dóró
3cb63a6da9 chore: move overview files to the features folder 2023-05-19 14:36:08 +02:00
Szilárd Dóró
985f648204 chore: simplify folder structure 2023-05-19 13:47:21 +02:00
Szilárd Dóró
bbc3aa8896 fix: don't hide custom option 2023-05-19 13:44:05 +02:00
Szilárd Dóró
3d51de4a60 chore: move hooks to the features folder 2023-05-19 12:15:42 +02:00
Szilárd Dóró
b46afa37c6 chore: simplify folder structure 2023-05-19 12:10:08 +02:00
Szilárd Dóró
8ad6358d76 chore: delete unnecessary hook 2023-05-19 12:01:16 +02:00
Szilárd Dóró
f73f8366e4 chore: move every database code to features 2023-05-19 11:58:45 +02:00
renovate[bot]
511615f176 chore(deps): update dependency prettier-plugin-tailwindcss to ^0.3.0 2023-05-19 09:51:56 +00:00
Szilárd Dóró
1198c201f1 Merge pull request #1922 from nhost/renovate/turbo-1.x
chore(deps): update dependency turbo to v1.9.8
2023-05-19 11:48:43 +02:00
Szilárd Dóró
cab803e5b7 chore: move data browser files to features 2023-05-19 11:10:36 +02:00
Szilárd Dóró
59fea65eb6 feat: migrate storage-related files to features 2023-05-19 10:44:58 +02:00
Szilárd Dóró
f9b81a2ae9 chore: bump version in the Dockerfile as well 2023-05-19 10:34:21 +02:00
Szilárd Dóró
23bac2d29c Merge branch 'main' into feat/service-versions 2023-05-19 10:27:55 +02:00
Szilárd Dóró
78739f77b1 feat: add support for project status indicator 2023-05-19 09:59:33 +02:00
Szilárd Dóró
dff0894f37 Revert "fix: sync deployment sorting"
This reverts commit 80f3645d57.
2023-05-19 09:38:04 +02:00
Szilárd Dóró
80f3645d57 fix: sync deployment sorting 2023-05-19 09:27:24 +02:00
Szilárd Dóró
7ddb9a654e fix: sync deployment sorting 2023-05-19 09:10:44 +02:00
Szilárd Dóró
71f3be15d8 Merge pull request #1941 from nhost/chore/under-the-hood-improvements
chore(dashboard): under the hood improvements
2023-05-19 09:03:46 +02:00
Szilárd Dóró
96a9070836 chore: loosen eslint rules 2023-05-18 17:07:15 +02:00
Szilárd Dóró
329e5a91b9 fix: use the correct deployment ordering 2023-05-18 16:01:44 +02:00
Szilárd Dóró
6d559d6e23 chore: under the hood improvements 2023-05-18 11:39:22 +02:00
renovate[bot]
f4f1450d06 chore(deps): update dependency turbo to v1.9.8 2023-05-18 08:22:54 +00:00
Szilárd Dóró
a1eea9df7d Merge pull request #1932 from nhost/renovate/docusaurus-monorepo
fix(deps): update docusaurus monorepo to v2.4.1
2023-05-18 10:16:23 +02:00
Szilárd Dóró
26f2b665e6 Merge pull request #1924 from nhost/feat/pat
feat(hasura-auth-js): add support for personal access tokens
2023-05-18 10:14:12 +02:00
Szilárd Dóró
8989202692 chore: improve variable name 2023-05-18 10:09:03 +02:00
Szilárd Dóró
2ae463f11f fix: don't break builds 2023-05-18 10:06:43 +02:00
Szilárd Dóró
18a786e880 feat: add storage settings page 2023-05-18 10:03:15 +02:00
Szilárd Dóró
c88fbe1e17 feat: allow changing db version
chore: reorganize features folder
2023-05-18 09:50:36 +02:00
Szilárd Dóró
78c7109c46 chore: add changeset 2023-05-18 08:54:41 +02:00
Szilárd Dóró
c7b968868a feat: use hardcoded images instead 2023-05-17 16:47:40 +02:00
Szilárd Dóró
77a3473166 feat: add support for version autocomplete 2023-05-17 13:51:39 +02:00
renovate[bot]
224a5cc805 fix(deps): update docusaurus monorepo to v2.4.1 2023-05-17 11:05:58 +00:00
David Barroso
59125b3c77 Merge pull request #1937 from nhost/dbarroso/react-apollo-example-update
chore: update react-apollo example's dependencies
2023-05-17 13:02:09 +02:00
Szilárd Dóró
91e2affa6f chore: use cache-and-network fetch policy 2023-05-17 12:52:52 +02:00
Szilárd Dóró
a8d747976b feat: add support for changing hasura images 2023-05-17 11:23:44 +02:00
Szilárd Dóró
5b69e3efd8 fix: don't break builds 2023-05-17 10:41:27 +02:00
Szilárd Dóró
c9a444d048 chore: sync playwright versions 2023-05-17 10:21:03 +02:00
Szilárd Dóró
fc16fd5452 fix: refresh auth settings on page change 2023-05-17 10:04:19 +02:00
David Barroso
2eeac45718 asd 2023-05-17 09:54:44 +02:00
Szilárd Dóró
afc9de7994 chore: create dedicated hook 2023-05-17 09:40:36 +02:00
David Barroso
fe8ca8aba6 Update examples/react-apollo/package.json
Co-authored-by: Szilárd Dóró <doroszilard@icloud.com>
2023-05-17 09:32:13 +02:00
David Barroso
086ee46b08 chore: update react-apollo example's dependencies 2023-05-17 09:21:25 +02:00
Szilárd Dóró
37c1c18b43 feat: fetch docker images from lambda 2023-05-16 16:50:23 +02:00
Szilárd Dóró
67078b9a72 feat: add support for selecting Auth version 2023-05-16 16:22:55 +02:00
Szilárd Dóró
203bc97f51 feat: add useSignInPAT to @nhost/vue 2023-05-16 14:42:55 +02:00
Szilárd Dóró
b24af44aac feat: add support for refreshTokenId 2023-05-16 12:54:51 +02:00
Szilárd Dóró
cdaa6d4e73 chore: remove hash function 2023-05-16 12:16:35 +02:00
Szilárd Dóró
09e2c8f5c7 feat: add hash function 2023-05-16 11:24:52 +02:00
Szilárd Dóró
4581677830 chore: update docs 2023-05-16 09:37:51 +02:00
Szilárd Dóró
7bfa6c9f93 fix: use correct hasura-auth image 2023-05-16 08:59:17 +02:00
Szilárd Dóró
80ef430d70 feat: add personal access token docs 2023-05-16 08:51:22 +02:00
Szilárd Dóró
bad8af0fd1 Merge branch 'main' into feat/pat 2023-05-16 08:35:24 +02:00
Szilárd Dóró
69caa34c43 Merge pull request #1934 from nhost/changeset-release/main
chore: update versions
2023-05-16 08:34:38 +02:00
github-actions[bot]
1d898e2893 chore: update versions 2023-05-15 18:43:10 +00:00
Szilárd Dóró
e87621cbde Merge pull request #1936 from nhost/fix/security-key-url
fix(hasura-auth-js): make the call to the correct endpoint
2023-05-15 20:41:59 +02:00
Szilárd Dóró
0d6fc42158 fix: make the call to the correct endpoint 2023-05-15 19:46:26 +02:00
Szilárd Dóró
f6fbee6b13 Merge pull request #1933 from nhost/fix/project-rename-prevent-404
fix(dashboard): don't redirect to 404 on project rename
2023-05-15 16:59:00 +02:00
Szilárd Dóró
1230b72222 fix: don't redirect to 404 on project rename 2023-05-15 16:05:45 +02:00
Szilárd Dóró
6cc7704555 Merge pull request #1931 from nhost/changeset-release/main
chore: update versions
2023-05-15 15:47:22 +02:00
github-actions[bot]
c0954dec09 chore: update versions 2023-05-15 13:30:42 +00:00
Szilárd Dóró
6c25480a7a Merge pull request #1929 from nhost/fix/build-targets
chore: change build target to ES2019
2023-05-15 15:29:32 +02:00
Szilárd Dóró
da03bf390c chore: change build target to ES2019 2023-05-15 11:09:00 +02:00
Szilárd Dóró
3b513be9f2 Merge pull request #1926 from nhost/changeset-release/main
chore: update versions
2023-05-12 16:55:46 +02:00
github-actions[bot]
e450e9d636 chore: update versions 2023-05-12 14:27:16 +00:00
Szilárd Dóró
ed1ee10879 Merge pull request #1925 from nhost/fix/postgres-connection-string
fix(dashboard): show correct postgres connection string
2023-05-12 16:25:51 +02:00
Szilárd Dóró
a6120bf366 feat: update API
chore: fix tests
2023-05-12 14:59:07 +02:00
Szilárd Dóró
349aac369e chore: add changeset 2023-05-12 14:23:54 +02:00
Szilárd Dóró
5a84362c80 fix: construct postgres connection string 2023-05-12 14:23:05 +02:00
Szilárd Dóró
b23dc058a6 Merge branch 'main' into feat/pat 2023-05-12 14:14:09 +02:00
Szilárd Dóró
ad0dda7493 feat: extend nhost.auth.createPAT with id 2023-05-12 14:09:57 +02:00
Szilárd Dóró
4063507d59 chore: improve CLI example 2023-05-12 14:01:11 +02:00
Szilárd Dóró
f59a77b1c8 Merge pull request #1923 from nhost/changeset-release/main
chore: update versions
2023-05-12 10:25:12 +02:00
github-actions[bot]
30686bc4ce chore: update versions 2023-05-12 08:03:41 +00:00
Szilárd Dóró
0c4ac8d368 Merge pull request #1919 from nhost/chore/update-staging-urls
chore(dashboard): change URL construction
2023-05-12 10:02:32 +02:00
Szilárd Dóró
85439307a9 feat: finalize CLI example 2023-05-12 09:34:22 +02:00
Szilárd Dóró
0d8baa4065 feat: allow PAT creation through the example 2023-05-12 08:56:56 +02:00
Szilárd Dóró
7da0e5e256 Merge pull request #1918 from nhost/changeset-release/main
chore: update versions
2023-05-11 15:30:16 +02:00
Szilárd Dóró
4bca94425e chore: add useful information to the README 2023-05-11 15:26:15 +02:00
Szilárd Dóró
9f948385c0 feat: improve readability, add book relationship 2023-05-11 15:23:59 +02:00
Szilárd Dóró
294c504b61 chore: update pnpm-lock file 2023-05-11 15:10:28 +02:00
Szilárd Dóró
1469ec2969 Merge branch 'main' into feat/pat 2023-05-11 15:09:31 +02:00
github-actions[bot]
8229101efe chore: update versions 2023-05-11 13:07:57 +00:00
Szilárd Dóró
afad1778f8 Merge pull request #1895 from nhost/renovate/react-monorepo
chore(deps): update react monorepo
2023-05-11 15:06:23 +02:00
Szilárd Dóró
28fc7b84c7 chore: update changeset 2023-05-11 13:38:39 +02:00
Szilárd Dóró
3f478a4e3c chore: include vitest in the bump, add changeset 2023-05-11 13:37:34 +02:00
Szilárd Dóró
aa54666941 fix: don't break builds 2023-05-11 12:53:45 +02:00
Szilárd Dóró
20fb69faba chore: change URL construction 2023-05-11 12:46:49 +02:00
renovate[bot]
1caeb2a548 chore(deps): update react monorepo 2023-05-11 10:12:59 +00:00
Szilárd Dóró
6356c5a2c8 Merge pull request #1906 from nhost/chore/bump-pnpm
chore: bump `pnpm` and `turbo` version
2023-05-11 12:10:10 +02:00
Szilárd Dóró
6ec1dd3248 chore: bump lock file again 2023-05-11 11:07:27 +02:00
Szilárd Dóró
8a4b5031dc Merge branch 'main' into chore/bump-pnpm 2023-05-11 11:06:57 +02:00
Szilárd Dóró
4790fee41f Merge pull request #1916 from nhost/changeset-release/main
chore: update versions
2023-05-11 09:26:44 +02:00
github-actions[bot]
0a8033812d chore: update versions 2023-05-11 06:56:16 +00:00
Szilárd Dóró
2b56ffc29e Merge pull request #1915 from nhost/fix/project-redirects
fix(dashboard): redirect an invalid project to the 404 page
2023-05-11 08:54:58 +02:00
Szilárd Dóró
aa9b926cd7 Merge branch 'main' into fix/project-redirects 2023-05-10 17:21:18 +02:00
Szilárd Dóró
575404ad62 Merge pull request #1917 from nhost/fix/imports
fix(dashboard): don't break builds
2023-05-10 17:20:37 +02:00
Szilárd Dóró
3f6dfc7bcd fix: don't break builds 2023-05-10 17:19:32 +02:00
Szilárd Dóró
682e64d7a3 fix: don't break build 2023-05-10 16:51:59 +02:00
Szilárd Dóró
30cee4f86c Merge branch 'main' into fix/project-redirects 2023-05-10 16:51:06 +02:00
Szilárd Dóró
29dcc8c63e Merge pull request #1911 from nhost/fix/non-owner-functionality
fix(dashboard): restrict non-owner functionality
2023-05-10 16:47:06 +02:00
Szilárd Dóró
d926f15676 fix: redirect an invalid project to the 404 page 2023-05-10 16:46:16 +02:00
Szilárd Dóró
726c33d1b2 feat: finalize CLI example 2023-05-10 16:41:49 +02:00
Szilárd Dóró
11b9cfbc0d feat: add an example CLI tool to showcase PATs 2023-05-10 15:35:54 +02:00
Szilárd Dóró
d4a0aad2dd Merge pull request #1913 from nhost/changeset-release/main
chore: update versions
2023-05-10 14:24:09 +02:00
github-actions[bot]
1030813279 chore: update versions 2023-05-10 11:50:46 +00:00
Nuno Pato
917a14aa40 Merge pull request #1912 from nhost/docs/add-metrics
Add section on Metrics to the documentation
2023-05-10 11:49:27 +00:00
Szilárd Dóró
6381d1b095 Merge pull request #1893 from nhost/feat/metrics-page 2023-05-10 13:43:34 +02:00
Nuno Pato
8dbdc0bf50 asd 2023-05-10 11:32:34 +00:00
Nuno Pato
8c072a4c6e asd 2023-05-10 10:10:38 +00:00
Nuno Pato
fe341519f7 Add section on Metrics to the documentation 2023-05-10 10:09:12 +00:00
Szilárd Dóró
ea09384064 fix: update import paths 2023-05-10 10:45:20 +02:00
Szilárd Dóró
49b9972885 chore: add changeset 2023-05-10 10:42:35 +02:00
Szilárd Dóró
98c541ee52 feat: introduce useIsCurrentUserOwner hook
- chore: improve file structure
2023-05-10 10:41:35 +02:00
Szilárd Dóró
79aaa91e67 chore: update hasura-auth version 2023-05-09 17:19:40 +02:00
Szilárd Dóró
df4d24320a chore: update example metadata 2023-05-09 14:33:49 +02:00
Szilárd Dóró
757c888656 Merge pull request #1910 from nhost/changeset-release/main
chore: update versions
2023-05-09 11:40:16 +02:00
github-actions[bot]
7c13eb5f9b chore: update versions 2023-05-09 09:17:43 +00:00
Szilárd Dóró
a84608e086 Merge pull request #1907 from nhost/fix/upgrade
fix(dashboard): unpause after upgrading a paused project to pro
2023-05-09 11:13:44 +02:00
Szilárd Dóró
e43c079b9c feat: poll project state after unpausing with upgrade 2023-05-09 10:50:34 +02:00
Szilárd Dóró
3f396a9ebb chore: add changesets 2023-05-08 19:28:42 +02:00
Szilárd Dóró
6ed605beb8 fix: update desiredState on plan change 2023-05-08 17:58:06 +02:00
Szilárd Dóró
edd223d29c fix: don't go to 404 page unnecessarily 2023-05-08 17:47:04 +02:00
Szilárd Dóró
baa3ef794e feat(examples): add PAT example 2023-05-08 17:03:49 +02:00
Szilárd Dóró
da7ffbe523 feat: add useSignInPAT hook 2023-05-08 16:04:00 +02:00
Szilárd Dóró
15a985e079 fix: don't break dashboard build 2023-05-08 15:29:29 +02:00
Szilárd Dóró
8ff00a4258 chore(ci): bump pnpm version to v8.4.0 2023-05-08 15:19:53 +02:00
Szilárd Dóró
7e27d7c0a1 chore: update changeset, bump turbo version 2023-05-08 15:17:42 +02:00
Szilárd Dóró
49f9b8372a chore: bump pnpm version to v8.4.0 2023-05-08 15:09:29 +02:00
Szilárd Dóró
3ca70554c8 feat: add support for PAT sign in 2023-05-08 14:34:12 +02:00
Szilárd Dóró
077b200510 Merge branch 'main' into feat/pat 2023-05-08 14:04:11 +02:00
Szilárd Dóró
925bf0f13f Merge pull request #1905 from nhost/changeset-release/main
chore: update versions
2023-05-08 13:51:55 +02:00
github-actions[bot]
30d35f9607 chore: update versions 2023-05-08 10:10:25 +00:00
Szilárd Dóró
755aa56f12 Merge pull request #1904 from nhost/fix/package-json-types
chore: add `types` to `package.json`
2023-05-08 12:09:11 +02:00
Szilárd Dóró
4c7e7c57a9 fix: don't break tests 2023-05-08 10:29:13 +02:00
Szilárd Dóró
36708e2853 Merge pull request #1903 from hrmoller/fix/wrong-linking-in-docs
Fixed linking to wrong destination in docs
2023-05-08 10:26:31 +02:00
Szilárd Dóró
90c6031189 chore: add types to package.json 2023-05-08 09:54:27 +02:00
Martin Møller
f044dbdb10 Fixed linking to wrong destination 2023-05-05 08:03:50 +02:00
Szilárd Dóró
c2f3bce5f9 Merge pull request #1902 from nhost/chore/probot-improvements
chore: refine probot config
2023-05-04 16:20:59 +02:00
Szilárd Dóró
22d9877b97 chore: update probot config 2023-05-04 16:04:09 +02:00
Szilárd Dóró
628e96dcc3 Merge pull request #1901 from nhost/chore/probot-stale
chore: add probot/stale configuration
2023-05-04 15:32:50 +02:00
Szilárd Dóró
3e9d3c42b6 fix: disable exemptLabels 2023-05-04 15:20:23 +02:00
Szilárd Dóró
a1e7b87c38 add probot/stale configuration 2023-05-04 15:08:37 +02:00
David Barroso
1bd800359e Merge pull request #1894 from nhost/dbarroso/obs-dash-improv
fix: observability: filter pod metrics
2023-05-03 12:59:07 +02:00
David Barroso
54a204a34e fix: observability: filter pod metrics 2023-05-03 10:09:27 +02:00
Szilárd Dóró
b17e8d6f3c fix: don't break e2e tests 2023-05-03 10:00:29 +02:00
Szilárd Dóró
12e2855f01 chore: update description and prevent free access
- bump `jsdom` to v22
- increase test timeout
2023-05-03 09:57:11 +02:00
Szilárd Dóró
c1080d9e63 fix: don't break the UI 2023-05-03 09:38:48 +02:00
Szilárd Dóró
e4972b8307 feat: add Grafana page 2023-05-03 09:35:06 +02:00
Szilárd Dóró
2e7ec0697e Merge pull request #1881 from nhost/changeset-release/main
chore: update versions
2023-05-02 21:06:46 +02:00
github-actions[bot]
2d9baec9d4 chore: update versions 2023-05-02 18:56:49 +00:00
Szilárd Dóró
7a7750be0b Merge pull request #1892 from nhost/fix/disable-downgrade
fix: disallow downgrading through the UI
2023-05-02 20:55:24 +02:00
Szilárd Dóró
0f34f0c6b9 fix: disallow downgrading 2023-05-02 15:31:39 +02:00
Nestor Manrique
d05253183a Merge pull request #1883 from nhost/nestor/fix-grafana-dashboard-datasource
fix: use dashboard externally exported version
2023-05-02 13:15:40 +02:00
Nestor Manrique
65df016bbc fix: fix datasource config 2023-04-28 17:28:43 +02:00
David Barroso
3e6ee1ae97 Merge pull request #1882 from nhost/dbarroso/observability-dashboard
feat: added project metrics observability dashboard
2023-04-28 14:32:55 +02:00
David Barroso
6042ed101f feat: added project metrics observability dashboard 2023-04-28 11:49:33 +02:00
Szilárd Dóró
384bce59bf Merge pull request #1859 from nhost/renovate/react-monorepo
chore(deps): update react monorepo
2023-04-28 09:59:24 +02:00
Szilárd Dóró
8da291ad4d chore: add changeset 2023-04-28 09:42:13 +02:00
renovate[bot]
f94eb3c467 chore(deps): update react monorepo 2023-04-27 18:07:47 +00:00
Szilárd Dóró
9baf3f4ac7 Merge pull request #1876 from nhost/changeset-release/main
chore: update versions
2023-04-27 20:00:27 +02:00
github-actions[bot]
9c406548e3 chore: update versions 2023-04-27 17:47:36 +00:00
Szilárd Dóró
1c08cd1949 Merge pull request #1878 from nhost/fix/local-users-page 2023-04-27 19:46:28 +02:00
Szilárd Dóró
adc828a582 fix: don't enter an infinite loop 2023-04-27 17:45:04 +02:00
Szilárd Dóró
2f220db84a extend machine with PAT sign in 2023-04-27 17:06:26 +02:00
Szilárd Dóró
f1ec6b9a93 Merge pull request #1871 from nhost/docs/local-development-migration
docs: add migration info
2023-04-27 16:37:40 +02:00
Szilárd Dóró
233b7e383e Merge pull request #1873 from nhost/changeset-release/main
chore: update versions
2023-04-27 16:06:05 +02:00
github-actions[bot]
7ea469a1e3 chore: update versions 2023-04-27 13:46:37 +00:00
Szilárd Dóró
ebd218c180 Merge pull request #1855 from nhost/feat/resource-replicas
feat(dashboard): Service Replicas
2023-04-27 15:45:31 +02:00
Nuno Pato
5ab1626f73 Merge pull request #1869 from nhost/docs/add-service-replicas
docs: add service replicas
2023-04-27 13:35:53 +00:00
Nuno Pato
444c3b86ca asd 2023-04-27 13:34:35 +00:00
Szilárd Dóró
7238412341 Merge pull request #1872 from nhost/chore/remove-backend-url
chore(dashboard): remove deprecated environment variable
2023-04-27 14:36:09 +02:00
Szilárd Dóró
f6639ae05c chore: add changeset 2023-04-27 13:54:27 +02:00
Szilárd Dóró
d8ceccec5d chore: add changeset 2023-04-27 13:41:11 +02:00
Szilárd Dóró
6db257d4c7 chore: remove deprecated backend URL 2023-04-27 13:40:41 +02:00
Szilárd Dóró
93dab2d183 docs: add migration info 2023-04-27 11:56:41 +02:00
Nuno Pato
dfc18368be asd 2023-04-26 18:09:42 +00:00
Nuno Pato
f7c6e80bf2 asd 2023-04-26 17:38:53 +00:00
Nuno Pato
573cac1431 asd 2023-04-26 17:23:11 +00:00
Nuno Pato
d72ae3f362 docs: add service replicas 2023-04-26 00:42:16 +00:00
Szilárd Dóró
49ec7ec385 fix: mobile improvements, improved validation 2023-04-25 15:30:38 +02:00
Szilárd Dóró
7d2b4083c2 chore: reorder components, update labels 2023-04-24 17:24:54 +02:00
Szilárd Dóró
696b493745 chore: increase test timeout 2023-04-24 16:23:51 +02:00
Szilárd Dóró
15a117a861 feat: improve cost calculation 2023-04-24 15:48:20 +02:00
Szilárd Dóró
e7ff1f79f8 feat: add information about replicas 2023-04-24 14:29:20 +02:00
Szilárd Dóró
33c7368a2e chore: update validation error message 2023-04-24 11:40:05 +02:00
Szilárd Dóró
664c182c8e fix: use font-medium for confirmation labels 2023-04-24 11:36:48 +02:00
Szilárd Dóró
c1ab4e0a77 chore: improve validation messages 2023-04-24 11:36:10 +02:00
Szilárd Dóró
4a4bd61757 chore: update tooltip label 2023-04-24 11:16:51 +02:00
Szilárd Dóró
b6d05289be fix: don't fail tests 2023-04-24 11:13:39 +02:00
Szilárd Dóró
5857458ca5 chore: improve resources form validation 2023-04-24 11:09:00 +02:00
Szilárd Dóró
2fb1145fe0 chore: add changeset 2023-04-24 10:22:44 +02:00
Szilárd Dóró
546d710102 Merge branch 'main' into feat/resource-replicas 2023-04-24 10:21:04 +02:00
Szilárd Dóró
7756103476 Merge pull request #1861 from nhost/changeset-release/main 2023-04-24 09:38:50 +02:00
github-actions[bot]
fef9456c12 chore: update versions 2023-04-23 19:36:24 +00:00
Szilárd Dóró
2d6d56f6b0 Merge pull request #1860 from nhost/fix/project-details
fix(dashboard): filter projects by workspace
2023-04-23 21:35:16 +02:00
Szilárd Dóró
f54be0fefd fix: don't break unit tests 2023-04-23 19:27:36 +02:00
Szilárd Dóró
4e76d388ab fix: remove unused query parameter 2023-04-23 16:42:33 +02:00
Szilárd Dóró
84b84ab785 fix: filter projects by workspace 2023-04-23 16:34:39 +02:00
Szilárd Dóró
ed66769688 Merge branch 'main' into feat/resource-replicas 2023-04-21 14:31:51 +02:00
Szilárd Dóró
899732f280 Merge pull request #1852 from nhost/changeset-release/main
chore: update versions
2023-04-21 13:40:09 +02:00
github-actions[bot]
037b566e39 chore: update versions 2023-04-21 11:23:53 +00:00
Szilárd Dóró
829f20c83c Merge pull request #1856 from nhost/renovate/vitejs-plugin-react-4.x
chore(deps): update dependency @vitejs/plugin-react to v4
2023-04-21 13:22:44 +02:00
Szilárd Dóró
f1b5a944a3 chore: add changeset 2023-04-21 11:42:44 +02:00
renovate[bot]
5ccb764ae5 chore(deps): update dependency @vitejs/plugin-react to v4 2023-04-21 09:38:43 +00:00
Szilárd Dóró
ef2b639734 Merge pull request #1839 from nhost/renovate/vueuse-core-10.x
fix(deps): update dependency @vueuse/core to v10
2023-04-21 11:36:00 +02:00
Szilárd Dóró
a5b895a827 chore: add changeset 2023-04-21 11:14:13 +02:00
renovate[bot]
b441b4bae2 fix(deps): update dependency @vueuse/core to v10 2023-04-21 09:02:30 +00:00
Szilárd Dóró
a6c67c1e4c Merge pull request #1836 from nhost/renovate/react-monorepo
chore(deps): update dependency @types/react to v18.0.37
2023-04-21 10:54:19 +02:00
Szilárd Dóró
7f1785ac0f chore: add changeset 2023-04-21 10:21:02 +02:00
Szilárd Dóró
a0298e0bdb chore: increase test timeout, improve stability 2023-04-20 16:40:42 +02:00
Szilárd Dóró
3fd94b1cdf chore: improve validation, fix tests 2023-04-20 16:08:37 +02:00
Szilárd Dóró
61d5f7d616 feat: make use of replicas from API 2023-04-20 14:56:52 +02:00
Szilárd Dóró
cde9a0a715 chore: extend tests, improve validation 2023-04-20 14:50:12 +02:00
Szilárd Dóró
eae6349b04 feat: add new pricing to confirmation dialog 2023-04-20 14:19:53 +02:00
Szilárd Dóró
211b930b84 chore: fix after effects of the new data structure 2023-04-20 13:53:06 +02:00
Szilárd Dóró
4ae463074b chore: simplify form data structure 2023-04-20 13:19:59 +02:00
Szilárd Dóró
1c5a4746f7 chore: improve validation error 2023-04-20 11:35:25 +02:00
Szilárd Dóró
d6ae1fa44a feat: resource validation when replicas > 1 2023-04-20 10:28:31 +02:00
Szilárd Dóró
a3abb81b37 feat: add replica slider to services 2023-04-19 15:57:57 +02:00
renovate[bot]
ec74e7fe98 chore(deps): update dependency @types/react to v18.0.37 2023-04-19 12:53:55 +00:00
Szilárd Dóró
6713c198c6 Merge pull request #1833 from nhost/renovate/turbo-1.x
chore(deps): update dependency turbo to v1.9.3
2023-04-19 14:52:03 +02:00
renovate[bot]
35a6b9cf47 chore(deps): update dependency turbo to v1.9.3 2023-04-19 09:32:19 +00:00
Szilárd Dóró
79f97fad76 Merge pull request #1838 from nhost/renovate/graphql-request-6.x
fix(deps): update dependency graphql-request to v6
2023-04-19 11:29:16 +02:00
Szilárd Dóró
2faf79077d chore: add changeset 2023-04-19 11:07:46 +02:00
Szilárd Dóró
4972b6feb6 chore: sync versions, update codegen 2023-04-19 11:07:15 +02:00
Szilárd Dóró
23d5861c4c Merge pull request #1837 from rikardwissing/fix/wait-for-valid-token
Wait for valid token or sign out before establishing connection.
2023-04-19 09:31:56 +02:00
renovate[bot]
098ac5a71c fix(deps): update dependency graphql-request to v6 2023-04-18 18:54:27 +00:00
Nuno Pato
3a15329cfd Merge pull request #1849 from nhost/docs/add-compute-section
add compute section to the docs
2023-04-18 13:20:39 +00:00
Nuno Pato
c3e798aa1d asd 2023-04-18 13:15:40 +00:00
Szilárd Dóró
eec5e6a93d Merge pull request #1843 from nhost/changeset-release/main
chore: update versions
2023-04-18 15:10:41 +02:00
Nuno Pato
d964b689cd move compute resources to position 1 2023-04-18 09:37:28 +00:00
Nuno Pato
1e080c1af5 add compute section to the docs 2023-04-18 09:35:01 +00:00
github-actions[bot]
177bba7ec0 chore: update versions 2023-04-18 07:27:56 +00:00
Szilárd Dóró
a593b45dc2 Merge pull request #1845 from nhost/chore/dashboard-update-nomenclature-compute
chore: dashboard: update nomenclature for compute
2023-04-18 09:24:46 +02:00
Szilárd Dóró
b384fb8bd8 chore: merge changesets 2023-04-17 20:58:38 +02:00
Nuno Pato
abd8620ded "Resources" -> "Compute" 2023-04-17 16:58:45 +00:00
Szilárd Dóró
e62ccdcaae Merge pull request #1844 from nhost/fix/resource-memory-limit
fix(dashboard): use correct vCPUs and memory after reset
2023-04-17 14:17:49 +02:00
Szilárd Dóró
46d01b09d6 chore: use constants 2023-04-17 13:45:59 +02:00
Szilárd Dóró
ff74e712f8 fix: use correct vCPUs and memory after reset 2023-04-17 13:38:47 +02:00
Szilárd Dóró
770794ccad Merge pull request #1709 from nhost/feat/resource-sliders
feat(dashboard): Resource Sliders
2023-04-17 13:03:04 +02:00
Szilárd Dóró
aa80d1795d chore: update initial resource ratio 2023-04-17 09:28:17 +02:00
Szilárd Dóró
eaa7720c65 fix: fix tests 2023-04-17 09:17:34 +02:00
Szilárd Dóró
7f447d1182 fix: don't break the initial UI 2023-04-17 08:43:23 +02:00
Szilárd Dóró
5d3dd84762 Merge branch 'main' into feat/resource-sliders 2023-04-17 08:36:55 +02:00
Szilárd Dóró
c625317342 Merge pull request #1841 from nhost/changeset-release/main
chore: update versions
2023-04-17 08:36:12 +02:00
Rikard Wissing
117398f5dc Add changeset 2023-04-16 15:00:50 +01:00
Rikard Wissing
4e421eb4bd Refactor a bit 2023-04-16 14:55:51 +01:00
Rikard Wissing
771447b089 Remove log 2023-04-16 14:52:35 +01:00
github-actions[bot]
8ab75a4146 chore: update versions 2023-04-14 09:54:44 +00:00
Szilárd Dóró
607f465616 Merge pull request #1840 from nhost/chore/use-dialog-hook
chore(dashboard): unify payment dialog management
2023-04-14 11:50:15 +02:00
Szilárd Dóró
668c877130 chore: add changeset 2023-04-14 11:17:32 +02:00
Szilárd Dóró
4bd870eb96 chore: relocate BillingPaymentMethodForm 2023-04-14 11:15:58 +02:00
Szilárd Dóró
39b3161d91 fix: use up-to-date card information 2023-04-14 10:31:27 +02:00
Szilárd Dóró
ae090a6585 chore: unify modal management for payments 2023-04-13 16:53:30 +02:00
Rikard Wissing
be4831ae62 Update integrations/apollo/src/index.ts
Co-authored-by: Szilárd Dóró <doroszilard@gmail.com>
2023-04-13 15:10:14 +02:00
Szilárd Dóró
4fb0c18c32 Merge branch 'main' into feat/resource-sliders 2023-04-13 14:56:03 +02:00
Szilárd Dóró
22cdd7f8d7 Merge pull request #1834 from nhost/changeset-release/main
chore: update versions
2023-04-13 14:38:10 +02:00
github-actions[bot]
f3a91a1f76 chore: update versions 2023-04-13 11:09:10 +00:00
Szilárd Dóró
1e9b92fcf8 Merge pull request #1835 from nhost/chore/remove-user-context
chore(dashboard): cleanup unused code
2023-04-13 13:07:30 +02:00
Szilárd Dóró
6cc56066c2 chore: update changeset 2023-04-13 11:44:38 +02:00
Rikard Wissing
99e80cea44 Wait for valid token 2023-04-12 23:45:38 +02:00
Szilárd Dóró
f2f1c01e3b chore: refactor memory steps 2023-04-12 17:43:44 +02:00
Szilárd Dóró
2c0f98e85c Merge branch 'main' into feat/resource-sliders 2023-04-12 14:43:12 +02:00
Szilárd Dóró
a3ad84925c chore: cleanup additional GraphQL operations 2023-04-12 14:36:11 +02:00
Szilárd Dóró
b8611b6a1c chore: cleanup unused GraphQL operations 2023-04-12 14:25:41 +02:00
Szilárd Dóró
a0e3030005 chore: cleanup UIContext 2023-04-12 14:01:41 +02:00
Szilárd Dóró
0cf1f1d938 Merge branch 'main' into chore/remove-user-context 2023-04-12 13:32:25 +02:00
Szilárd Dóró
88f026066f Merge pull request #1830 from rikardwissing/patch-1
Add generateLinks instead of link and onError args
2023-04-12 13:26:13 +02:00
Szilárd Dóró
185bef878d fix: accommodate dashboard test 2023-04-12 11:56:03 +02:00
Szilárd Dóró
a1c7b00e74 chore: add changeset 2023-04-12 11:55:29 +02:00
Szilárd Dóró
6da4562e79 chore: format code 2023-04-12 11:55:22 +02:00
Szilárd Dóró
e44cfcb2f2 Merge branch 'patch-1' of https://github.com/rikardwissing/nhost into pr/1830 2023-04-12 11:50:32 +02:00
Rikard Wissing
23fabaf8a6 Check for undefined 2023-04-12 11:48:48 +02:00
Szilárd Dóró
f4dca9836f fix: block UI when user is not available 2023-04-12 11:34:47 +02:00
Szilárd Dóró
f2704ea149 chore: improve query refetch 2023-04-12 11:30:34 +02:00
Szilárd Dóró
dd1b053212 fix: don't break provisioning page 2023-04-12 10:46:37 +02:00
Szilárd Dóró
d4ccc65655 chore: add changeset 2023-04-12 10:41:23 +02:00
Szilárd Dóró
2c2570fc82 chore: cleanup unused hooks 2023-04-12 10:40:49 +02:00
Rikard Wissing
a60f26966b Update integrations/apollo/src/index.ts
Co-authored-by: Szilárd Dóró <doroszilard@gmail.com>
2023-04-12 09:52:19 +02:00
Rikard Wissing
a988de2d61 Update integrations/apollo/src/index.ts
Co-authored-by: Szilárd Dóró <doroszilard@gmail.com>
2023-04-12 09:51:58 +02:00
Rikard Wissing
de54ca460e Update integrations/apollo/src/index.ts
Co-authored-by: Szilárd Dóró <doroszilard@gmail.com>
2023-04-12 09:51:48 +02:00
Szilárd Dóró
afdffab743 Merge pull request #1831 from nhost/fix/functions-response
fix(nhost-js): don't suppress error messages
2023-04-12 09:46:02 +02:00
Szilárd Dóró
4c61520397 chore: add changeset 2023-04-12 09:09:09 +02:00
Szilárd Dóró
f02cd444d5 fix: don't break builds 2023-04-11 17:38:10 +02:00
Szilárd Dóró
7f45a51aca fix: don't break build 2023-04-11 17:30:21 +02:00
Szilárd Dóró
08e70b9df9 fix: don't suppress error messages 2023-04-11 17:21:40 +02:00
Szilárd Dóró
32f92489a4 Merge pull request #1829 from nhost/changeset-release/main
chore: update versions
2023-04-11 15:58:09 +02:00
Szilárd Dóró
20a83362ee fix: don't break builds 2023-04-11 15:28:23 +02:00
Szilárd Dóró
20b800c3e4 Merge branch 'main' into feat/resource-sliders 2023-04-11 15:24:28 +02:00
github-actions[bot]
94c9cd151a chore: update versions 2023-04-11 13:13:16 +00:00
Szilárd Dóró
0e9eb18052 Merge pull request #1827 from nhost/renovate/react-monorepo
chore(deps): update dependency @types/react to v18.0.34
2023-04-11 15:11:46 +02:00
Szilárd Dóró
bfaa5b4c4a Merge branch 'main' into pr/1830 2023-04-11 14:57:39 +02:00
Szilárd Dóró
52ec6fe70c Merge pull request #1826 from nhost/renovate/glob-10.x
fix(deps): update dependency glob to v10
2023-04-11 14:45:48 +02:00
Szilárd Dóró
43b1b1442c chore: sync @types/react and @types/react-dom 2023-04-11 14:45:26 +02:00
Szilárd Dóró
b06239cc14 chore: add changeset 2023-04-11 14:30:35 +02:00
renovate[bot]
73dde87a65 fix(deps): update dependency glob to v10 2023-04-11 10:58:36 +00:00
renovate[bot]
7e7d810b74 chore(deps): update dependency @types/react to v18.0.34 2023-04-11 10:58:08 +00:00
Szilárd Dóró
b6b2403562 Merge pull request #1825 from nhost/renovate/rimraf-5.x
chore(deps): update dependency rimraf to v5
2023-04-11 12:54:11 +02:00
Szilárd Dóró
9a1f095a45 chore: add changeset 2023-04-11 12:13:55 +02:00
Rikard Wissing
a1a00b33ad Make backwards compatible
There is a behavioral change because of how customLink was implemented before. But I think this is the intended behavior.
2023-04-11 11:49:24 +02:00
renovate[bot]
a3b1ffe77c chore(deps): update dependency rimraf to v5 2023-04-11 09:42:50 +00:00
Szilárd Dóró
4f22ab3a99 Merge pull request #1816 from nhost/chore/current-project-hook
chore(dashboard): cleanup home page
2023-04-11 11:39:55 +02:00
Rikard Wissing
a269f4ca3f Add generateLinks instead of link and onError args
Breaking change, but makes it more versatile.
Not tested
2023-04-11 11:16:15 +02:00
Szilárd Dóró
411cb65ba4 chore: add changeset 2023-04-11 11:14:35 +02:00
Szilárd Dóró
f691c1f753 Merge pull request #1824 from nhost/renovate/vitest-monorepo
chore(deps): update vitest monorepo to ^0.30.0
2023-04-11 10:33:09 +02:00
Szilárd Dóró
b299cfc943 chore: add changeset 2023-04-11 08:38:55 +02:00
renovate[bot]
6157680963 chore(deps): update vitest monorepo to ^0.30.0 2023-04-09 15:40:35 +00:00
Szilárd Dóró
1d4bdfa88b fix integration tests 2023-04-06 18:43:10 +02:00
Szilárd Dóró
2755fc43b9 fix linter error 2023-04-06 17:18:01 +02:00
Szilárd Dóró
0c80d141aa fix: don't break integration tests 2023-04-06 16:55:31 +02:00
Szilárd Dóró
f285883c88 chore: improve integration tests 2023-04-06 16:48:29 +02:00
Szilárd Dóró
39f9a325d3 chore: delete old useCurrentWorkspaceAndApplication hook 2023-04-06 16:26:52 +02:00
Szilárd Dóró
e8f66e346f chore: migrate more components to new hook 2023-04-06 16:16:39 +02:00
Szilárd Dóró
98c0535fc9 chore: migrate more components to new hook 2023-04-06 15:55:49 +02:00
Szilárd Dóró
7a61c2e976 chore: migrate more components to new hook 2023-04-06 15:49:14 +02:00
Szilárd Dóró
a15a4db210 fix: revert locale related changes 2023-04-06 15:25:38 +02:00
Szilárd Dóró
11fcb8c72f Merge branch 'main' into chore/current-project-hook 2023-04-06 15:18:08 +02:00
Szilárd Dóró
a8a20cf5e2 Merge pull request #1820 from nhost/changeset-release/main 2023-04-06 14:37:59 +02:00
github-actions[bot]
2f84bf3251 chore: update versions 2023-04-06 12:22:20 +00:00
Szilárd Dóró
368e0371e9 Merge pull request #1818 from nhost/feat/improved-error-state
feat(dashboard): improved error state
2023-04-06 14:21:08 +02:00
Szilárd Dóró
adb5209133 Merge branch 'main' into feat/improved-error-state 2023-04-06 14:00:07 +02:00
Szilárd Dóró
63bf405cdd Merge pull request #1800 from Glenas7/docs/local-development-guide
Update local URLs to new format
2023-04-06 13:48:40 +02:00
Szilárd Dóró
d613d66a0a Merge pull request #1819 from nhost/fix/revert-i18n-lib
fix(dashboard): revert i18n library to improve performance
2023-04-06 13:36:21 +02:00
Szilárd Dóró
e7cb5070cd fix: use updated URLs everywhere 2023-04-06 13:28:55 +02:00
Szilárd Dóró
ee50051802 chore: remove unused next-translate-plugin 2023-04-06 13:08:53 +02:00
Szilárd Dóró
20e7bb4747 fix: remove translation 2023-04-06 13:08:06 +02:00
Szilárd Dóró
ba0d57ee91 fix: revert i18n library 2023-04-06 12:56:53 +02:00
Szilárd Dóró
98093c9023 Update dashboard/locales/en/overview.json
Co-authored-by: Nuno Pato <nunopato@gmail.com>
2023-04-06 12:28:08 +02:00
Szilárd Dóró
2fda299736 fix comment 2023-04-06 12:14:02 +02:00
Szilárd Dóró
3328ed059e chore: add changeset 2023-04-06 11:42:20 +02:00
Szilárd Dóró
cfb7199b79 feat: show error message on project overview 2023-04-06 11:41:09 +02:00
Szilárd Dóró
1ad4bfe815 fix readme 2023-04-06 09:26:44 +02:00
Szilárd Dóró
25859fc421 Merge pull request #1812 from nhost/changeset-release/main
chore: update versions
2023-04-06 09:22:15 +02:00
github-actions[bot]
5a9e7a43c8 chore: update versions 2023-04-06 06:45:13 +00:00
Szilárd Dóró
2739ff90c4 Merge pull request #1811 from nhost/feat/metrics
feat(dashboard): Show Metrics
2023-04-06 08:43:45 +02:00
Szilárd Dóró
93910f27e1 chore: partially migrate components to useCurrentWorkspaceAndProject 2023-04-05 16:00:09 +02:00
Szilárd Dóró
04e2d19dda fix: fix issue plaguing sign outs for a while now 2023-04-05 14:21:11 +02:00
Szilárd Dóró
a2175f6df7 chore: cleanup unused files 2023-04-05 13:54:50 +02:00
Szilárd Dóró
18d415a8fd feat: rework project list 2023-04-05 12:54:20 +02:00
Szilárd Dóró
2a4623c582 Merge pull request #1815 from nhost/renovate/peter-evans-create-pull-request-5.x
chore(deps): update peter-evans/create-pull-request action to v5
2023-04-05 11:11:26 +02:00
Szilárd Dóró
19b7835d92 fix: remove empty test file 2023-04-05 11:04:04 +02:00
Szilárd Dóró
efbd272298 fix: use separator for sizes 2023-04-05 10:32:52 +02:00
Szilárd Dóró
98546d24e1 chore: improve number formatting 2023-04-05 10:28:59 +02:00
Szilárd Dóró
fe2c0cf81f Merge branch 'main' into feat/metrics 2023-04-05 09:30:37 +02:00
renovate[bot]
b28a04c48e chore(deps): update peter-evans/create-pull-request action to v5 2023-04-05 07:29:01 +00:00
Szilárd Dóró
a014913523 Merge pull request #1810 from nhost/renovate/react-monorepo
chore(deps): update dependency @types/react to v18.0.33
2023-04-05 09:28:22 +02:00
Szilárd Dóró
706c9dc3fb chore: add changeset 2023-04-04 18:45:17 +02:00
Szilárd Dóró
fe08faad4a feat: introduce i18n lib 2023-04-04 18:34:26 +02:00
Szilárd Dóró
6719ce92ea feat: add tooltip to metrics 2023-04-04 14:32:35 +02:00
Szilárd Dóró
52c6f09bdd chore: simplify pending UI 2023-04-04 13:57:36 +02:00
Szilárd Dóró
f337a19875 chore: add test 2023-04-04 13:42:38 +02:00
renovate[bot]
d62c909901 chore(deps): update dependency @types/react to v18.0.33 2023-04-04 11:02:39 +00:00
Szilárd Dóró
99f8f6b370 chore: add changeset 2023-04-04 13:01:02 +02:00
Szilárd Dóró
644d94a175 Merge pull request #1803 from nhost/renovate/next-seo-6.x
fix(deps): update dependency next-seo to v6
2023-04-04 13:00:36 +02:00
Szilárd Dóró
05ab111aa4 chore: remove postgres usage 2023-04-04 12:59:31 +02:00
Szilárd Dóró
64cf0acd4a Merge pull request #1792 from nhost/renovate/turbo-1.x
chore(deps): update dependency turbo to v1.8.8
2023-04-04 11:57:19 +02:00
Szilárd Dóró
3d5d530555 chore: improve usage panel 2023-04-04 11:51:06 +02:00
Szilárd Dóró
5e0920ba7c chore: add changeset 2023-04-04 10:12:36 +02:00
Szilárd Dóró
9bf6c3b8c4 feat: add egress volume to metrics 2023-04-03 21:21:36 +02:00
Szilárd Dóró
b25a223d90 feat: add metrics to the project overview 2023-04-03 17:33:58 +02:00
renovate[bot]
748aa443f4 fix(deps): update dependency next-seo to v6 2023-04-03 14:38:59 +00:00
renovate[bot]
684123e5d6 chore(deps): update dependency turbo to v1.8.8 2023-04-03 14:37:37 +00:00
Szilárd Dóró
fa045eed15 Merge pull request #1808 from nhost/changeset-release/main
chore: update versions
2023-04-03 16:35:43 +02:00
github-actions[bot]
61c0583b6d chore: update versions 2023-04-03 13:56:32 +00:00
Szilárd Dóró
1343a6f252 Merge pull request #1806 from nhost/fix/failed-subscriptions
fix: don't open unnecessary connections
2023-04-03 15:55:27 +02:00
Szilárd Dóró
0d73e87a83 fix: don't open unnecessary connections 2023-04-03 15:14:28 +02:00
Szilárd Dóró
1ee0d332bf Merge pull request #1797 from nhost/changeset-release/main
chore: update versions
2023-04-03 13:50:27 +02:00
github-actions[bot]
130ce49c76 chore: update versions 2023-04-03 10:06:30 +00:00
Szilárd Dóró
6be6d6475a Merge pull request #1804 from nhost/fix/date-input
fix(dashboard): don't break logs page
2023-04-03 11:58:37 +02:00
Szilárd Dóró
177b146b93 Merge pull request #1799 from nhost/renovate/urql-4.x
chore(deps): update dependency urql to v4
2023-04-03 11:39:47 +02:00
Szilárd Dóró
3cb673000a fix: don't break logs page 2023-04-03 11:38:34 +02:00
Szilárd Dóró
09cf5d4b39 chore: add changeset 2023-04-03 10:07:16 +02:00
Szilárd Dóró
48c0061a0b Merge pull request #1772 from wollerman/patch-2
Update serverless-functions to link to event trigger docs
2023-04-03 09:47:01 +02:00
Szilárd Dóró
0795d1c6a1 chore: move new text 2023-04-03 09:34:02 +02:00
renovate[bot]
45a23dd1bf chore(deps): update dependency urql to v4 2023-04-03 07:30:32 +00:00
Szilárd Dóró
bb8e3454df Merge pull request #1790 from nhost/renovate/react-monorepo
chore(deps): update dependency @types/react to v18.0.32
2023-04-03 09:28:01 +02:00
Szilárd Dóró
6a290bb297 chore: add changeset 2023-04-03 09:10:03 +02:00
renovate[bot]
80baec7356 chore(deps): update dependency @types/react to v18.0.32 2023-04-02 09:44:20 +00:00
Glenas7
feb195fd65 Update local URLs to new format
With the change of local URLs to the subdomain format with "local" as subdiomain and no region, I believe these URLs should be updated here.
2023-04-01 11:19:57 +02:00
Szilárd Dóró
baaa510309 fix: add price to GQL 2023-03-31 15:28:59 +02:00
Szilárd Dóró
a84aa5ad68 Merge branch 'main' into feat/resource-sliders 2023-03-31 15:19:09 +02:00
Szilárd Dóró
8e43297564 Merge pull request #1798 from nhost/feat/project-creator
feat(dashboard): show project creator
2023-03-31 14:49:16 +02:00
Szilárd Dóró
bb8eb9e387 fix: fix assertion in test 2023-03-31 13:55:05 +02:00
Szilárd Dóró
5b0dc6cb19 fix: use optional chaining in overview header 2023-03-31 13:45:58 +02:00
Szilárd Dóró
826112afd0 fix: don't show upgrade button for pro projects 2023-03-31 13:32:16 +02:00
Szilárd Dóró
97105c390d chore: remove test file 2023-03-31 13:26:59 +02:00
Szilárd Dóró
8e3707ff2c Merge branch 'main' into feat/project-creator 2023-03-31 13:25:32 +02:00
Szilárd Dóró
7453bf3b6a chore: add changeset 2023-03-31 13:25:25 +02:00
Szilárd Dóró
bd739383d2 Merge pull request #1796 from nhost/chore/improved-auth-tests
chore(tests): improve auth page tests
2023-03-31 13:19:44 +02:00
Szilárd Dóró
f75e2e41db chore: prefix email addresses 2023-03-31 10:48:54 +02:00
Szilárd Dóró
7328491be0 feat: add relative time to creator info 2023-03-30 20:37:53 +02:00
Szilárd Dóró
11b4d12f12 Merge pull request #1794 from nhost/changeset-release/main
chore: update versions
2023-03-30 19:56:33 +02:00
Szilárd Dóró
6c24d56b1d fix: remove test.only 2023-03-30 17:41:14 +02:00
Szilárd Dóró
0a523f4b45 feat: add project creator to overviews 2023-03-30 17:37:21 +02:00
Szilárd Dóró
12301e6551 fix: use correct @nhost/apollo version 2023-03-30 15:57:43 +02:00
Szilárd Dóró
8440d0389e chore: restructure auth tests 2023-03-30 15:55:58 +02:00
Szilárd Dóró
c166dad0f8 chore: add changeset 2023-03-30 13:49:14 +02:00
Szilárd Dóró
e31d39b3d2 feat: incorporate global setup in projects 2023-03-30 13:44:34 +02:00
Szilárd Dóró
090f9cef86 chore: extend user management tests 2023-03-30 13:35:06 +02:00
github-actions[bot]
74e52cac2d chore: update versions 2023-03-30 09:07:41 +00:00
Szilárd Dóró
f17823760a Merge pull request #1795 from nhost/fix/presigned-urls
fix: don't alter URLs when no transformation parameters are available
2023-03-30 11:06:32 +02:00
Szilárd Dóró
bb8803a1e3 fix: don't alter URLs 2023-03-30 10:41:57 +02:00
Szilárd Dóró
b846291331 Merge pull request #1793 from nhost/fix/export-issue
fix: don't use conflicting names
2023-03-30 10:07:24 +02:00
Szilárd Dóró
2b2fb94f00 chore: add type checking step 2023-03-30 09:42:23 +02:00
Szilárd Dóró
551760c4f0 fix: don't break builds 2023-03-30 09:37:39 +02:00
Szilárd Dóró
5ae5a8e77d fix: don't break builds 2023-03-30 09:31:54 +02:00
Szilárd Dóró
56aae0c964 fix: don't break builds 2023-03-30 09:28:34 +02:00
Szilárd Dóró
a0e093d77b fix: don't use conflicting names 2023-03-30 09:16:30 +02:00
Szilárd Dóró
5e82e1b3da Merge pull request #1784 from nhost/changeset-release/main
chore: update versions
2023-03-29 09:20:48 +02:00
github-actions[bot]
e618b705e7 chore: update versions 2023-03-28 15:52:47 +00:00
Szilárd Dóró
a232c9f0f6 Merge pull request #1789 from nhost/fix/azuread-description
fix(dashboard): use correct description for Azure AD
2023-03-28 17:50:51 +02:00
Szilárd Dóró
bf4644ea10 fix: use correct description for Azure AD 2023-03-28 16:52:54 +02:00
Szilárd Dóró
0aca907ea4 Merge pull request #1788 from nhost/fix/azuread-provider-name
fix: correct typos in Azure AD
2023-03-28 16:25:59 +02:00
Szilárd Dóró
394f4c4174 fix: correct typos in Azure AD 2023-03-28 16:25:26 +02:00
Szilárd Dóró
8fef08a150 Merge pull request #1786 from nhost/renovate/turbo-1.x
chore(deps): update dependency turbo to v1.8.6
2023-03-28 16:16:57 +02:00
Szilárd Dóró
1bd2c37301 chore: bump turbo in the Dockerfile 2023-03-28 15:54:37 +02:00
renovate[bot]
5cdb70bd81 chore(deps): update dependency turbo to v1.8.6 2023-03-28 12:01:36 +00:00
Szilárd Dóró
1a5f80e1b6 Merge pull request #1785 from nhost/renovate/react-monorepo
chore(deps): update dependency @types/react to v18.0.30
2023-03-28 13:59:29 +02:00
Szilárd Dóró
59e0cb00c5 Merge pull request #1787 from nhost/feat/azuread-provider 2023-03-28 12:25:42 +02:00
Szilárd Dóró
406b0f2cb7 Merge pull request #1163 from dipakparmar/feat/dashboard-azuread-settings
feat(dashboard): add azure ad provider settings
2023-03-28 10:52:17 +02:00
Szilárd Dóró
d329b6218f chore: add changeset 2023-03-28 10:46:50 +02:00
Szilárd Dóró
335b58670e Merge branch 'renovate/react-monorepo' of https://github.com/nhost/nhost into renovate/react-monorepo 2023-03-28 10:43:08 +02:00
renovate[bot]
efa2d89067 chore(deps): update dependency @types/react to v18.0.30 2023-03-28 08:35:55 +00:00
Szilárd Dóró
77ce4bd738 Merge pull request #1783 from nhost/fix/random-words
fix(tests): avoid name collision in database tests
2023-03-28 10:33:33 +02:00
Szilárd Dóró
017adea700 chore: update comment 2023-03-28 10:04:38 +02:00
Dipak Parmar
378284faa8 chore(dashboard): remove docs and title for now from azuread component
Signed-off-by: Dipak Parmar <hi@dipak.tech>
2023-03-27 23:44:40 -07:00
renovate[bot]
e5e2d114b1 chore(deps): update dependency @types/react to v18.0.30 2023-03-27 19:03:37 +00:00
Szilárd Dóró
5e3dbdeb7d Merge pull request #1781 from nhost/renovate/react-monorepo
chore(deps): update dependency @types/react to v18.0.29
2023-03-27 20:55:47 +02:00
Szilárd Dóró
98b777491a fix: improve flaky tests 2023-03-27 18:13:10 +02:00
Szilárd Dóró
71de870cb0 fix: use admin secret as env var 2023-03-27 17:29:09 +02:00
Szilárd Dóró
74d4deba28 feat: cleanup public schema after tests 2023-03-27 17:00:07 +02:00
Szilárd Dóró
cb248f0d30 chore: add changeset 2023-03-27 15:44:08 +02:00
Szilárd Dóró
09e4f1eb34 fix: avoid duplicate table names in tests 2023-03-27 15:16:40 +02:00
Szilárd Dóró
19818e2b59 Merge pull request #1777 from nhost/changeset-release/main
chore: update versions
2023-03-27 12:03:16 +02:00
Szilárd Dóró
6e1f03eaee chore: accomodate changes to API 2023-03-27 11:57:24 +02:00
github-actions[bot]
b3eeec82ef chore: update versions 2023-03-27 09:38:55 +00:00
Szilárd Dóró
34ff254696 Merge pull request #1782 from nhost/renovate/sharp-0.x
fix(deps): update dependency sharp to ^0.32.0
2023-03-27 11:37:33 +02:00
Szilárd Dóró
867c807699 chore: add changeset 2023-03-27 11:21:42 +02:00
Szilárd Dóró
1c4806bf51 chore: add changeset 2023-03-27 11:17:41 +02:00
renovate[bot]
2fb82ec97d fix(deps): update dependency sharp to ^0.32.0 2023-03-27 07:50:45 +00:00
renovate[bot]
d0673d7825 chore(deps): update dependency @types/react to v18.0.29 2023-03-27 07:50:19 +00:00
Dipak Parmar
106f23dcfa fixdashboard-settings): remove extra whitespace azuread provider import in settings
Signed-off-by: Dipak Parmar <hi@dipak.tech>
2023-03-27 00:48:56 -07:00
Szilárd Dóró
0c994a9651 Merge pull request #1779 from nhost/renovate/pnpm-find-workspace-dir-6.x
fix(deps): update dependency @pnpm/find-workspace-dir to v6
2023-03-27 09:48:14 +02:00
Dipak Parmar
83ef755822 feat(dashboard-settings): update azuread provider settings component
Signed-off-by: Dipak Parmar <hi@dipak.tech>
2023-03-27 00:47:09 -07:00
Dipak Parmar
b7703ffd70 feat(graphql): add azuread to signinmethods query
Signed-off-by: Dipak Parmar <hi@dipak.tech>
2023-03-27 00:46:30 -07:00
Szilárd Dóró
4713cecfc2 chore: add changeset 2023-03-27 09:26:44 +02:00
Dipak Parmar
340ea5b115 chore: merge branch 'main' into feat/dashboard-azuread-settings
* main: (1322 commits)
  chore(ci): adjust preview fetcher
  chore: add changeset
  fix: fetch valid previews only
  fix: use correct Vercel token
  fix: use staging project ID
  chore: use dynamic test URL
  fix(deps): update docusaurus monorepo to v2.4.0
  chore(hasura-storage-js): improve presignedUrl test
  fix: remove test.only call
  chore: add tests for table deletion
  chore: update versions
  fix: potential subscription fix
  Fix import in docs
  fix: remove `test.only` call
  chore: add remaining table creation tests
  chore: add foreign key constraint test
  chore: add extra database UI tests
  chore: restructure tests, add basic table creation test
  chore: update versions
  chore: add changeset
  ...

Signed-off-by: Dipak Parmar <hi@dipak.tech>
2023-03-26 19:16:40 -07:00
renovate[bot]
f79eebadbf fix(deps): update dependency @pnpm/find-workspace-dir to v6 2023-03-24 21:30:22 +00:00
Szilárd Dóró
ac174b5e51 Merge pull request #1780 from nhost/chore/vercel-preview-fetcher 2023-03-24 17:07:43 +01:00
Szilárd Dóró
dc9ddfc9ae chore(ci): adjust preview fetcher 2023-03-24 16:30:29 +01:00
Szilárd Dóró
3bdd9f570c Merge pull request #1773 from nhost/chore/dashboard-delete-table-tests
chore(dashboard): tests for table deletion
2023-03-24 15:52:25 +01:00
Szilárd Dóró
94477be998 Merge pull request #1778 from nhost/chore/fetch-preview-url
chore: use dynamic test URL
2023-03-24 15:51:47 +01:00
Szilárd Dóró
568577e8ca Merge pull request #1774 from nhost/renovate/docusaurus-monorepo
fix(deps): update docusaurus monorepo to v2.4.0
2023-03-24 15:38:23 +01:00
Szilárd Dóró
e93b06ab8f chore: add changeset 2023-03-24 15:37:08 +01:00
Szilárd Dóró
c75bf46ba1 fix: fetch valid previews only 2023-03-24 15:24:36 +01:00
Szilárd Dóró
63a1fd09b5 fix: use correct Vercel token 2023-03-24 15:09:42 +01:00
Szilárd Dóró
630d44ad6e fix: use staging project ID 2023-03-24 14:55:26 +01:00
Szilárd Dóró
d7db521974 chore: use dynamic test URL 2023-03-24 14:16:05 +01:00
renovate[bot]
90e4053f0a fix(deps): update docusaurus monorepo to v2.4.0 2023-03-24 09:57:19 +00:00
Szilárd Dóró
4191b933c9 Merge branch 'main' into feat/resource-sliders 2023-03-24 10:57:01 +01:00
Szilárd Dóró
8e9d5d1b38 Merge pull request #1775 from nhost/fix/storage-sdk-tests
chore(hasura-storage-js): improve presignedUrl test
2023-03-24 10:54:51 +01:00
Szilárd Dóró
43c86fef14 chore(hasura-storage-js): improve presignedUrl test 2023-03-24 10:25:18 +01:00
Szilárd Dóró
6b97340cf4 fix: remove test.only call 2023-03-23 16:14:49 +01:00
Szilárd Dóró
1605756362 chore: add tests for table deletion 2023-03-23 16:05:21 +01:00
Szilárd Dóró
6437544384 Merge pull request #1771 from nhost/changeset-release/main
chore: update versions
2023-03-23 14:20:16 +01:00
Matt Wollerman
776eca3fb5 Update serverless-functions to link to event trigger docs 2023-03-23 09:06:20 -04:00
github-actions[bot]
b4dcd1996d chore: update versions 2023-03-23 13:01:48 +00:00
Szilárd Dóró
7fb73dbb1b Merge pull request #1770 from nhost/fix/subscription-errors
fix(apollo): retry subscriptions on error
2023-03-23 14:00:11 +01:00
Szilárd Dóró
a66b11d245 Merge pull request #1769 from st3phan/patch-1
Fix import in docs for SignedIn component
2023-03-23 13:23:35 +01:00
Szilárd Dóró
912ed76c64 fix: potential subscription fix 2023-03-23 12:30:14 +01:00
Szilárd Dóró
b47c0d1af7 Merge pull request #1765 from nhost/chore/dashboard-db-tests
chore(dashboard): tests for table creation
2023-03-23 09:36:27 +01:00
Stephan van Opstal
b97ab2be2f Fix import in docs 2023-03-22 21:46:58 +01:00
Szilárd Dóró
f12cb666ff fix: remove test.only call 2023-03-22 15:42:05 +01:00
Szilárd Dóró
c3b2b1cd02 chore: add remaining table creation tests 2023-03-22 15:40:39 +01:00
Szilárd Dóró
c0b71102d4 chore: add foreign key constraint test 2023-03-22 15:32:18 +01:00
Szilárd Dóró
5f68ae95c4 chore: add extra database UI tests 2023-03-22 15:22:49 +01:00
Szilárd Dóró
2d1b7bb292 chore: restructure tests, add basic table creation test 2023-03-22 14:57:33 +01:00
Szilárd Dóró
ee154d4eca Merge pull request #1764 from nhost/changeset-release/main
chore: update versions
2023-03-22 14:21:18 +01:00
github-actions[bot]
58ef9bbe02 chore: update versions 2023-03-22 12:49:02 +00:00
Szilárd Dóró
f3f35beefd Merge pull request #1758 from nhost/renovate/turbo-1.x
chore(deps): update dependency turbo to v1.8.5
2023-03-22 13:47:44 +01:00
Szilárd Dóró
d31330e6c0 Merge pull request #1762 from nhost/renovate/react-error-boundary-4.x
fix(deps): update dependency react-error-boundary to v4
2023-03-22 13:47:30 +01:00
Szilárd Dóró
c3dda79d95 Merge branch 'renovate/react-error-boundary-4.x' of https://github.com/nhost/nhost into renovate/react-error-boundary-4.x 2023-03-22 13:11:13 +01:00
Szilárd Dóró
7c1273725d chore: add changeset 2023-03-22 13:11:01 +01:00
renovate[bot]
70be0e1ab4 fix(deps): update dependency react-error-boundary to v4 2023-03-22 12:08:14 +00:00
renovate[bot]
4f5870cfd7 chore(deps): update dependency turbo to v1.8.5 2023-03-22 12:07:47 +00:00
Szilárd Dóró
623607476e Merge branch 'main' into renovate/react-error-boundary-4.x 2023-03-22 13:07:31 +01:00
Szilárd Dóró
1e232713d9 Merge pull request #1763 from nhost/chore/improve-e2e
chore(tests): improve E2E tests
2023-03-22 13:05:43 +01:00
Szilárd Dóró
1ed647c4e9 fix: fix lint and test jobs 2023-03-22 12:50:12 +01:00
Szilárd Dóró
b666a173b1 fix: use correct name for the build script 2023-03-22 12:15:48 +01:00
Szilárd Dóró
caba147b32 chore: add changeset 2023-03-22 12:07:44 +01:00
Szilárd Dóró
ca365fc8e7 cleanup cypress 2023-03-22 12:06:46 +01:00
Szilárd Dóró
d88cdedb26 migrated file upload e2e tests 2023-03-22 11:39:17 +01:00
Szilárd Dóró
1de08cecaf migrate password change e2e tests 2023-03-22 11:21:38 +01:00
Szilárd Dóró
47bb997036 migrate email change e2e tests 2023-03-22 11:15:20 +01:00
Szilárd Dóró
4e4d962f30 migrate apollo e2e tests 2023-03-22 11:05:46 +01:00
Szilárd Dóró
883fb82c77 migrate sign-in tests 2023-03-22 10:46:11 +01:00
Szilárd Dóró
c9f5634ac2 chore: migrate sign in e2e tests 2023-03-21 18:25:19 +01:00
renovate[bot]
6ee9a589fb fix(deps): update dependency react-error-boundary to v4 2023-03-21 17:21:51 +00:00
Szilárd Dóró
e2d733cf34 chore: migrate passwordless e2e tests 2023-03-21 16:45:19 +01:00
Szilárd Dóró
a0d7327c8d chore: migrate sign up tests 2023-03-21 16:33:56 +01:00
Szilárd Dóró
c7c8a20334 chore: port some tests to playwright 2023-03-21 16:10:37 +01:00
Szilárd Dóró
cca8de5805 Merge pull request #1760 from nhost/fix/dashboard-e2e-workflow
fix dashboard e2e workflow
2023-03-21 13:42:10 +01:00
Szilárd Dóró
8c065c42d6 fix: remove dashboard-e2e job 2023-03-21 13:19:31 +01:00
Szilárd Dóró
210af3a3e8 merge ci and e2e workflows 2023-03-21 12:52:01 +01:00
Szilárd Dóró
fbb12a8079 update workflow triggers 2023-03-21 12:44:37 +01:00
Szilárd Dóró
77692ac40e remove unnecessary job from e2e workflow 2023-03-21 11:57:49 +01:00
Szilárd Dóró
2c2a42a8e8 fix test script 2023-03-21 11:51:22 +01:00
Szilárd Dóró
a8466798a3 Merge pull request #1761 from nhost/changeset-release/main
chore: update versions
2023-03-21 11:47:58 +01:00
Szilárd Dóró
a45c0970bb pin playwright version 2023-03-21 11:46:30 +01:00
Szilárd Dóró
9bf30a1ccc fix e2e script 2023-03-21 11:35:12 +01:00
github-actions[bot]
99d3d82c72 chore: update versions 2023-03-21 10:23:53 +00:00
Szilárd Dóró
43acb3fb50 Merge pull request #1757 from nhost/renovate/hookform-resolvers-3.x
fix(deps): update dependency @hookform/resolvers to v3
2023-03-21 11:22:15 +01:00
Szilárd Dóró
ba9ef13ba3 update workflow 2023-03-21 11:21:28 +01:00
Szilárd Dóró
cea507a271 fix: install browsers before e2e tests 2023-03-21 11:07:24 +01:00
Szilárd Dóró
9130ab1230 chore(deps): bump yup and @hookform/resolvers 2023-03-21 10:58:44 +01:00
Szilárd Dóró
27acdd6f56 fix: add missing env vars 2023-03-21 10:43:55 +01:00
Szilárd Dóró
dcdacd73ec fix: fix dashboard e2e workflow 2023-03-21 10:24:10 +01:00
Szilárd Dóró
9c9966a30f Merge pull request #1759 from diecknet/patch-1
fix DevDependencies parameter for @types/express
2023-03-21 10:22:50 +01:00
Andreas Dieckmann
5a23e7a0a8 fix DevDependencies parameter for @types/express
it's `-D` not `-d`
2023-03-20 22:18:40 +01:00
renovate[bot]
47500fac39 fix(deps): update dependency @hookform/resolvers to v3 2023-03-20 18:24:31 +00:00
Szilárd Dóró
cf2264ce1d Merge branch 'main' into feat/resource-sliders 2023-03-20 16:25:34 +01:00
Szilárd Dóró
cbbf53c05b Merge pull request #1756 from nhost/feat/playwright
chore(dashboard): prepare E2E testing framework
2023-03-20 16:02:27 +01:00
Szilárd Dóró
11bd011860 fix: correct CI workflows 2023-03-20 15:02:36 +01:00
Szilárd Dóró
e3c0c47777 fix: correct tests 2023-03-20 14:03:27 +01:00
Szilárd Dóró
d825404b54 Merge branch 'main' into feat/playwright 2023-03-20 13:45:17 +01:00
Szilárd Dóró
02dd9dd8c0 Merge branch 'main' into feat/resource-sliders 2023-03-20 12:41:38 +01:00
Szilárd Dóró
d46d77ee71 Merge pull request #1751 from Glenas7/docs/google-oauth-guide
Added Javascript origins step to docs
2023-03-20 12:20:35 +01:00
Szilárd Dóró
a292482705 Update docs/docs/authentication/sign-in-methods/4-google.mdx 2023-03-20 12:20:27 +01:00
Szilárd Dóró
8a4ca41172 Merge pull request #1754 from nhost/changeset-release/main
chore: update versions
2023-03-20 11:33:21 +01:00
github-actions[bot]
fd3ce98600 chore: update versions 2023-03-20 10:08:17 +00:00
Szilárd Dóró
04f36a0491 Merge pull request #1669 from nhost/new-create-app-mutation
feat(dashboard): Limit Free Projects
2023-03-20 11:05:30 +01:00
Szilárd Dóró
5e2ecb4d1e Merge pull request #1749 from nhost/changeset-release/main
chore: update versions
2023-03-20 10:00:29 +01:00
Glenas7
eca9e551e8 Added Javascript origins step 2023-03-18 21:30:46 +01:00
github-actions[bot]
52ebbef762 chore: update versions 2023-03-17 15:01:14 +00:00
Szilárd Dóró
82faa4ca0a Merge pull request #1748 from nhost/fix/presigned-url-params
fix(hasura-storage-js): allow image transformation parameters in `getPresignedUrl`
2023-03-17 15:58:38 +01:00
Szilárd Dóró
d06a21764a fix unit tests 2023-03-17 15:10:15 +01:00
Szilárd Dóró
8b54d290a5 Merge pull request #1747 from nhost/changeset-release/main
chore: update versions
2023-03-17 14:51:41 +01:00
Szilárd Dóró
4cfa6bbe1e chore: update changeset 2023-03-17 14:12:48 +01:00
Szilárd Dóró
614f213e26 feat: allow image transformation parameters in getPresignedUrl 2023-03-17 14:11:17 +01:00
github-actions[bot]
4eebf51821 chore: update versions 2023-03-17 11:29:52 +00:00
Szilárd Dóró
9a52298aa7 Merge pull request #1746 from nhost/fix/data-grid-date-cell
fix(dashboard): show correct date in data grid
2023-03-17 12:28:34 +01:00
Szilárd Dóró
099eebe602 Merge pull request #1745 from nhost/fix/disable-new-users
fix(dashboard): disable new users
2023-03-17 12:20:38 +01:00
Szilárd Dóró
7cce8652e7 chore: update response message for pausing 2023-03-17 12:20:16 +01:00
Szilárd Dóró
f2e2323801 fix: refresh list when deleting app 2023-03-17 12:09:41 +01:00
Szilárd Dóró
4e16de6db2 chore: cleanup, improve error messages 2023-03-17 12:01:11 +01:00
Szilárd Dóró
798e591b1d fix: show correct date in data grid 2023-03-17 10:19:39 +01:00
Szilárd Dóró
b48bc034ca chore: add changeset 2023-03-17 10:01:26 +01:00
Szilárd Dóró
f57819230b fix: disable new users 2023-03-17 10:00:25 +01:00
Szilárd Dóró
3d8067ff7b fix: show pausing only for free projects
- improve project list
2023-03-17 09:44:02 +01:00
Szilárd Dóró
0fa4b428a9 chore: change function to string 2023-03-16 15:04:13 +01:00
Szilárd Dóró
8c5864340e fix: fix build error 2023-03-16 14:57:25 +01:00
Szilárd Dóró
c131100af9 chore: fetch free and live apps separately 2023-03-16 14:52:35 +01:00
Szilárd Dóró
e363fef8cf fix: refetch projects after delete/pause 2023-03-16 13:11:28 +01:00
Szilárd Dóró
d8072101c8 feat: added pause section to settings 2023-03-16 13:03:11 +01:00
Szilárd Dóró
afbba531a1 Merge branch 'main' into new-create-app-mutation 2023-03-16 10:28:02 +01:00
Szilárd Dóró
4b6df8b9d6 Merge pull request #1731 from nhost/changeset-release/main
chore: update versions
2023-03-16 10:23:45 +01:00
Szilárd Dóró
a2af5a674d fix(deps): fix @nhost/apollo version 2023-03-16 09:55:43 +01:00
github-actions[bot]
c33c1fd6b9 chore: update versions 2023-03-16 08:37:32 +00:00
Szilárd Dóró
041d9b98e3 Merge pull request #1741 from nhost/renovate/stripe-react-stripe-js-2.x
fix(deps): update dependency @stripe/react-stripe-js to v2
2023-03-16 09:37:26 +01:00
Szilárd Dóró
e4b4940397 Merge pull request #1730 from nhost/chore/remove-axios-deprecation
fix: remove `useAxios`, restore autogenerated docs
2023-03-16 09:36:09 +01:00
renovate[bot]
be91f4ed2a fix(deps): update dependency @stripe/react-stripe-js to v2 2023-03-13 22:14:47 +00:00
Siarhei Lipchyk
ec6ba846cf Merge pull request #1732 from nhost/chore/dashboard-hasura-admin-secret
Allow to override hasura admin secret in docker
2023-03-13 10:01:47 +01:00
Szilárd Dóró
a9e9fc4305 chore: extend tests 2023-03-10 16:57:21 +01:00
Szilárd Dóró
d4ff25df0f fix: adjust warning color 2023-03-10 14:19:10 +01:00
Siarhei Lipchyk
d8d8394b3b Allow to override hasura admin secret in docker 2023-03-10 13:11:02 +01:00
Szilárd Dóró
f051a121b2 Merge pull request #1729 from nhost/fix/sdk-backend-url 2023-03-10 12:37:48 +01:00
Szilárd Dóró
c547b490e5 chore: improved overview tests 2023-03-10 11:46:12 +01:00
Szilárd Dóró
4f4449b855 Merge remote-tracking branch 'origin/main' into feat/playwright 2023-03-10 11:28:13 +01:00
Szilárd Dóró
6ed46ce2d4 fix(docs): fix broken link 2023-03-10 11:15:22 +01:00
Szilárd Dóró
bfb4c1a6cc fix docs and remove useAxios 2023-03-10 11:04:51 +01:00
Szilárd Dóró
776c8f9237 Merge pull request #1721 from nhost/changeset-release/main
chore: update versions
2023-03-10 11:03:55 +01:00
github-actions[bot]
c0773d82e9 chore: update versions 2023-03-10 09:38:58 +00:00
Siarhei Lipchyk
c46b1383f2 Merge pull request #1724 from nhost/fix/dashboard-docker-entrypoint
Fix default values for placeholders
2023-03-10 10:37:46 +01:00
Siarhei Lipchyk
beed2eba21 Fix default values for placeholders 2023-03-10 10:36:01 +01:00
Szilárd Dóró
70f9610041 Merge pull request #1723 from nhost/fix/provisioning-status-indicator
fix(dashboard): miscellaneous fixes
2023-03-10 10:23:22 +01:00
Szilárd Dóró
e91de1088d chore: remove unused helper 2023-03-10 10:22:56 +01:00
Szilárd Dóró
ce1ee40dab fix: deprecate backendUrl, allow other params 2023-03-10 10:22:11 +01:00
Szilárd Dóró
bd7929f5ed revert provisioning status changes 2023-03-10 09:35:36 +01:00
Szilárd Dóró
2c8559a319 fix(dashboard): misc fixes 2023-03-09 15:54:17 +01:00
Szilárd Dóró
bd5ea5ee3a Merge pull request #1722 from nhost/chore/renovate-ci
chore(ci): remove renovate changeset automation
2023-03-09 13:09:59 +01:00
Szilárd Dóró
3538dbac39 chore(ci): remove renovate changeset automation 2023-03-09 11:12:06 +01:00
Szilárd Dóró
03b5cda69a Merge pull request #1700 from nhost/renovate/graphiql-react-0.x
fix(deps): update dependency @graphiql/react to ^0.17.0
2023-03-09 11:08:04 +01:00
Szilárd Dóró
4329d04854 chore: bump graphiql dependencies 2023-03-09 10:41:46 +01:00
Szilárd Dóró
ca50c5ce0c Merge remote-tracking branch 'origin/main' into renovate/graphiql-react-0.x 2023-03-09 10:25:37 +01:00
Szilárd Dóró
3d74374780 fix: update codegen 2023-03-09 10:22:43 +01:00
Szilárd Dóró
7063af678c Merge remote-tracking branch 'origin/main' into feat/resource-sliders 2023-03-09 10:14:33 +01:00
Szilárd Dóró
a3271ed014 Merge pull request #1719 from nhost/changeset-release/main
chore: update versions
2023-03-09 10:14:06 +01:00
github-actions[bot]
d4fc99a77c chore: update versions 2023-03-09 08:20:32 +00:00
Szilárd Dóró
d90fcf3c24 Merge pull request #1713 from nhost/chore/mimir-cleanup
chore(dashboard): mimir migration cleanup
2023-03-09 09:19:06 +01:00
Szilárd Dóró
2b44a1cf27 chore: add tests, fix flaky tests
- fix a UI glitch where values jumped after reset
2023-03-08 16:33:02 +01:00
Szilárd Dóró
c4f60b3645 feat: fetch plan independently 2023-03-08 15:44:30 +01:00
Szilárd Dóró
f86f658aa5 feat: improve upgrade / downgrade experience 2023-03-08 13:54:35 +01:00
Szilárd Dóró
bd02bd3f3e fix: cpu -> vcpu and selected -> available 2023-03-08 13:41:50 +01:00
Szilárd Dóró
a133faa797 chore: added submission tests 2023-03-08 11:24:17 +01:00
Szilárd Dóró
bb0269691d Merge remote-tracking branch 'origin/main' into feat/resource-sliders 2023-03-08 10:23:48 +01:00
Szilárd Dóró
8d6171d22d chore: move test-related stuff 2023-03-07 17:23:09 +01:00
Szilárd Dóró
fff178d79f fix: fix unit tests 2023-03-07 16:59:15 +01:00
Szilárd Dóró
5e5e454ae7 chore: remove inputs from total resources 2023-03-07 16:34:40 +01:00
Szilárd Dóró
ce005f6d9e Merge remote-tracking branch 'origin/main' into feat/resource-sliders 2023-03-07 15:37:42 +01:00
Szilárd Dóró
001b3dccec chore: update codegen 2023-03-07 14:50:26 +01:00
Szilárd Dóró
cbb1fc5bc8 chore: cleanup GraphQL operations 2023-03-07 11:23:55 +01:00
Szilárd Dóró
85889ee882 chore: add changeset 2023-03-07 10:23:33 +01:00
Szilárd Dóró
351873059e fix: use correct colors in light mode 2023-03-07 10:09:00 +01:00
Szilárd Dóró
8ccfc10522 fix: fix inner slider behaviour 2023-03-07 10:05:25 +01:00
Szilárd Dóró
82b02ca70b feat: improve slider appearance 2023-03-07 09:12:28 +01:00
Szilárd Dóró
14fc132040 fix: show footer when downgrading 2023-03-06 17:02:54 +01:00
Szilárd Dóró
a35da349ed fix: fix tests and prevent error when plan is missing 2023-03-06 16:48:43 +01:00
Szilárd Dóró
302e1d9d33 feat: retrieve plan info from the project 2023-03-06 16:18:42 +01:00
Szilárd Dóró
0db40184e8 fix: show values correctly after saving resources 2023-03-06 15:38:07 +01:00
Szilárd Dóró
d38649494e chore: added tests 2023-03-06 15:14:30 +01:00
Szilárd Dóró
5f22f1b5e5 chore: restructure to support tests
- added network requests to retrieve computation info
2023-03-06 14:13:48 +01:00
Szilárd Dóró
494f93a4bf chore: change terminology RAM -> Memory 2023-03-06 10:28:40 +01:00
Szilárd Dóró
84c8af232c fix: don't nest p in p 2023-03-03 16:54:21 +01:00
Szilárd Dóró
7f101d54da feat: add pricing placeholders 2023-03-03 16:53:28 +01:00
Szilárd Dóró
75b497412e fix: reset error, fix RAM label 2023-03-03 16:16:09 +01:00
Szilárd Dóró
5bd774afbb chore: improve readability 2023-03-03 16:11:54 +01:00
Szilárd Dóró
cdfe203fe4 Merge remote-tracking branch 'origin/main' into feat/resource-sliders 2023-03-03 15:37:45 +01:00
Szilárd Dóró
4c7d32e944 fix: resource labels 2023-03-03 15:35:17 +01:00
Szilárd Dóró
447c622fc0 fix: remove unnecessary inputs from services 2023-03-03 15:33:01 +01:00
Szilárd Dóró
03f22aed72 chore: improved resource constants 2023-03-03 15:21:15 +01:00
Szilárd Dóró
ede5abf2ac fix: use correct width for inner slider rail 2023-03-03 15:09:33 +01:00
Szilárd Dóró
0bdd1d0e0c fix: fixed top slider vlaidation 2023-03-03 14:19:08 +01:00
Szilárd Dóró
61de7b21fd feat: improve slider rails 2023-03-03 14:00:57 +01:00
Szilárd Dóró
4b6ead1b17 feat: add validation to top slider 2023-03-03 13:18:57 +01:00
Szilárd Dóró
0b193e6310 feat: create form fragments 2023-03-03 12:15:29 +01:00
Szilárd Dóró
b21a5403fe feat: add sections for services, improve slider 2023-03-03 11:15:01 +01:00
renovate[bot]
0ec3abf47c fix(deps): update dependency @graphiql/react to ^0.17.0 2023-03-03 00:19:25 +00:00
Johan Eliasson
ae19105302 cleanup 2023-03-02 21:32:34 +01:00
Johan Eliasson
730a482598 optimization 2023-03-02 21:25:43 +01:00
Szilárd Dóró
e8320be941 feat: initial Resource page code 2023-03-02 16:23:23 +01:00
Johan Eliasson
253dd235ca added changeset 2023-03-01 09:43:00 +01:00
Johan Eliasson
991e8f2d15 removed unused code 2023-02-28 19:57:51 +01:00
Johan Eliasson
e500e87022 review fixes 2023-02-28 19:15:25 +01:00
Johan Eliasson
c684d0307b Update dashboard/src/utils/CONSTANTS.ts
Co-authored-by: Szilárd Dóró <doroszilard@icloud.com>
2023-02-28 16:59:35 +01:00
Johan Eliasson
2d657b9c29 styled 2023-02-28 13:42:22 +01:00
Johan Eliasson
f46d96bafc query fix 2023-02-27 17:33:26 +01:00
Johan Eliasson
8261743bd3 show warning if max free projects has been created by the user already 2023-02-27 10:44:52 +01:00
Johan Eliasson
34cf1d79a0 readability 2023-02-26 15:01:07 +01:00
Johan Eliasson
9d4542b3db revert back 2023-02-26 14:51:14 +01:00
Johan Eliasson
bb5dbdf5a3 small cleanup 2023-02-26 14:49:44 +01:00
Johan Eliasson
2801b03bf4 removed unused code 2023-02-26 09:57:46 +01:00
Johan Eliasson
8298d458d5 cleanup 2023-02-26 09:56:58 +01:00
Johan Eliasson
6e9b941b89 handle slug server side 2023-02-26 09:54:00 +01:00
Johan Eliasson
5dd25941e5 update 2023-02-26 09:25:40 +01:00
Szilárd Dóró
cfcb97b8ee chore(actions): update workflow 2023-02-22 11:04:59 +01:00
Szilárd Dóró
a1ffad77eb chore(dashboard): move sign in to global setup
- add test skeletons for the Overview
2023-02-20 17:19:46 +01:00
Szilárd Dóró
de4d59da99 feat(dashboard): add Playwright to the dashboard 2023-02-20 15:44:45 +01:00
Dipak Parmar
ce4b655c55 fix: correct typos 2022-11-22 19:47:21 -08:00
Dipak Parmar
dc57d31ec9 fix: correct extra space in azureadprovidersettings dir 2022-11-22 19:45:38 -08:00
Dipak Parmar
ea29fd6b73 feat(dashboard-settings): add azuread provider to settings 2022-11-21 20:30:53 -08:00
Dipak Parmar
d8e4073957 feat(dashboard-settings): add azuread provider settings component 2022-11-21 20:29:34 -08:00
Dipak Parmar
3f399a54a3 feat(graphql): add azuread to signinmethods query 2022-11-21 20:28:50 -08:00
2155 changed files with 68384 additions and 31925 deletions

View File

@@ -5,6 +5,5 @@
"linked": [],
"access": "restricted",
"baseBranch": "main",
"updateInternalDependencies": "patch",
"ignore": []
}
"updateInternalDependencies": "patch"
}

View File

@@ -14,7 +14,7 @@ runs:
steps:
- uses: pnpm/action-setup@v2.2.4
with:
version: 7.17.0
version: 8.6.2
run_install: false
- name: Get pnpm cache directory
id: pnpm-cache-dir
@@ -23,15 +23,13 @@ runs:
- uses: actions/cache@v3
id: pnpm-cache
with:
path: |
${{ steps.pnpm-cache-dir.outputs.dir }}
~/.cache/Cypress
path: ${{ steps.pnpm-cache-dir.outputs.dir }}
key: ${{ runner.os }}-node-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: ${{ runner.os }}-node-
- name: Use Node.js 16
- name: Use Node.js v18
uses: actions/setup-node@v3
with:
node-version: 16
node-version: 18
- shell: bash
name: Install packages
run: pnpm install --frozen-lockfile

View File

@@ -49,21 +49,9 @@ runs:
if: ${{ inputs.start == 'true' }}
shell: bash
working-directory: ${{ inputs.path }}
run: nhost dev --no-browser &
- name: Wait for the app to be ready
id: wait
if: ${{ inputs.start == 'true' && inputs.wait == 'true' }}
shell: bash
working-directory: ${{ inputs.path }}
continue-on-error: true
run: |
curl -sSf --connect-timeout 3 \
--max-time 5 \
--retry 300 \
--retry-delay 1 \
--retry-max-time 300 \
--retry-connrefused \
'http://localhost:9695' > /dev/null
cp .secrets.example .secrets
nhost up
- name: Log on failure
if: steps.wait.outcome == 'failure'
shell: bash

16
.github/stale.yml vendored Normal file
View File

@@ -0,0 +1,16 @@
# Configuration for probot-stale - https://github.com/probot/stale
daysUntilStale: 180
daysUntilClose: 7
limitPerRun: 30
onlyLabels: []
exemptLabels: []
exemptProjects: false
exemptMilestones: false
exemptAssignees: false
staleLabel: stale
markComment: >
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Thank you
for your contributions.

View File

@@ -10,6 +10,7 @@ on:
- '**.md'
- '!.changeset/**'
- 'LICENSE'
workflow_dispatch:
env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
@@ -41,6 +42,7 @@ jobs:
commit: 'chore: update versions'
title: 'chore: update versions'
publish: pnpm run release
createGithubReleases: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
@@ -61,12 +63,39 @@ jobs:
uses: ./.github/workflows/dashboard.yaml
secrets: inherit
publish-vercel:
name: Publish to Vercel
runs-on: ubuntu-latest
needs:
- test
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Install Node and dependencies
uses: ./.github/actions/install-dependencies
with:
TURBO_TOKEN: ${{ env.TURBO_TOKEN }}
TURBO_TEAM: ${{ env.TURBO_TEAM }}
- name: Setup Vercel CLI
run: pnpm add -g vercel
- name: Trigger a Vercel deployment
env:
VERCEL_ORG_ID: ${{ secrets.DASHBOARD_VERCEL_TEAM_ID }}
VERCEL_PROJECT_ID: ${{ secrets.DASHBOARD_VERCEL_PROJECT_ID }}
run: |
vercel pull --environment=production --token=${{ secrets.DASHBOARD_VERCEL_DEPLOY_TOKEN }}
vercel build --prod --token=${{ secrets.DASHBOARD_VERCEL_DEPLOY_TOKEN }}
vercel deploy --prebuilt --prod --token=${{ secrets.DASHBOARD_VERCEL_DEPLOY_TOKEN }}
publish-docker:
name: Publish to Docker Hub
runs-on: ubuntu-latest
needs:
- test
- version
- publish-vercel
steps:
- name: Checkout repository
uses: actions/checkout@v3
@@ -99,7 +128,7 @@ jobs:
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build and push to Docker Hub
uses: docker/build-push-action@v4
timeout-minutes: 60
timeout-minutes: 90
with:
context: .
file: ./dashboard/Dockerfile
@@ -112,42 +141,6 @@ jobs:
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
push: true
- name: Create GitHub Release
uses: taiki-e/create-gh-release-action@v1
with:
changelog: dashboard/CHANGELOG.md
token: ${{ secrets.GITHUB_TOKEN }}
prefix: ${{ env.DASHBOARD_PACKAGE }}@
ref: refs/tags/${{ env.DASHBOARD_PACKAGE }}@${{ needs.version.outputs.dashboardVersion }}
- name: Remove tag on failure
if: failure()
run: git push --delete origin ${{ env.DASHBOARD_PACKAGE }}@${{ needs.version.outputs.dashboardVersion }}
publish-vercel:
name: Publish to Vercel
runs-on: ubuntu-latest
needs:
- publish-docker
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Install Node and dependencies
uses: ./.github/actions/install-dependencies
with:
TURBO_TOKEN: ${{ env.TURBO_TOKEN }}
TURBO_TEAM: ${{ env.TURBO_TEAM }}
- name: Setup Vercel CLI
run: pnpm add -g vercel
- name: Trigger a Vercel deployment
env:
VERCEL_ORG_ID: ${{ secrets.DASHBOARD_VERCEL_TEAM_ID }}
VERCEL_PROJECT_ID: ${{ secrets.DASHBOARD_VERCEL_PROJECT_ID }}
run: |
vercel pull --environment=production --token=${{ secrets.DASHBOARD_VERCEL_DEPLOY_TOKEN }}
vercel build --prod --token=${{ secrets.DASHBOARD_VERCEL_DEPLOY_TOKEN }}
vercel deploy --prebuilt --prod --token=${{ secrets.DASHBOARD_VERCEL_DEPLOY_TOKEN }}
bump-cli:
name: Bump Dashboard version in the Nhost CLI
@@ -169,7 +162,7 @@ jobs:
EXPRESSION='s/"'$IMAGE':[0-9]\+\.[0-9]\+\.[0-9]\+"/"'$IMAGE':'$VERSION'"/g'
find ./ -type f -exec sed -i -e $EXPRESSION {} \;
- name: Create Pull Request
uses: peter-evans/create-pull-request@v4
uses: peter-evans/create-pull-request@v5
with:
token: ${{ secrets.GH_PAT }}
commit-message: 'chore: bump nhost/dashboard to ${{ needs.version.outputs.dashboardVersion }}'

View File

@@ -19,6 +19,12 @@ env:
NEXT_PUBLIC_ENV: dev
NEXT_TELEMETRY_DISABLED: 1
NEXT_PUBLIC_NHOST_BACKEND_URL: http://localhost:1337
NHOST_TEST_DASHBOARD_URL: ${{ vars.NHOST_TEST_DASHBOARD_URL }}
NHOST_TEST_WORKSPACE_NAME: ${{ vars.NHOST_TEST_WORKSPACE_NAME }}
NHOST_TEST_PROJECT_NAME: ${{ vars.NHOST_TEST_PROJECT_NAME }}
NHOST_TEST_USER_EMAIL: ${{ secrets.NHOST_TEST_USER_EMAIL }}
NHOST_TEST_USER_PASSWORD: ${{ secrets.NHOST_TEST_USER_PASSWORD }}
NHOST_TEST_PROJECT_ADMIN_SECRET: ${{ secrets.NHOST_TEST_PROJECT_ADMIN_SECRET }}
jobs:
build:
@@ -37,7 +43,7 @@ jobs:
BUILD: 'all'
- name: Check if the pnpm lockfile changed
id: changed-lockfile
uses: tj-actions/changed-files@v35
uses: tj-actions/changed-files@v37
with:
files: pnpm-lock.yaml
# * Determine a pnpm filter argument for packages that have been modified.
@@ -60,47 +66,6 @@ jobs:
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
e2e:
name: 'e2e (${{ matrix.package.path }})'
needs: build
if: ${{ needs.build.outputs.matrix != '[]' && needs.build.outputs.matrix != '' }}
strategy:
# * Don't cancel other matrices when one fails
fail-fast: false
matrix:
package: ${{ fromJson(needs.build.outputs.matrix) }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
# * Install Node and dependencies. Package dependencies won't be downloaded again as they have been cached by the `build` job.
- name: Install Node and dependencies
uses: ./.github/actions/install-dependencies
with:
TURBO_TOKEN: ${{ env.TURBO_TOKEN }}
TURBO_TEAM: ${{ env.TURBO_TEAM }}
# * Install Nhost CLI if a `nhost/config.yaml` file is found
- name: Install Nhost CLI
if: hashFiles(format('{0}/nhost/config.yaml', matrix.package.path)) != ''
uses: ./.github/actions/nhost-cli
# * Run the `ci` script of the current package of the matrix. Dependencies build is cached by Turborepo
- name: Run e2e test
run: pnpm --filter="${{ matrix.package.name }}" run e2e
- id: file-name
if: ${{ failure() }}
name: Tranform package name into a valid file name
run: |
PACKAGE_FILE_NAME=$(echo "${{ matrix.package.name }}" | sed 's/@//g; s/\//-/g')
echo "fileName=$PACKAGE_FILE_NAME" >> $GITHUB_OUTPUT
# * Run this step only if the previous step failed, and some Cypress screenshots/videos exist
- name: Upload Cypress videos and screenshots
if: ${{ failure() && hashFiles(format('{0}/cypress/screenshots/**', matrix.package.path), format('{0}/cypress/videos/**', matrix.package.path)) != ''}}
uses: actions/upload-artifact@v3
with:
name: cypress-${{ steps.file-name.outputs.fileName }}
path: |
${{format('{0}/cypress/screenshots/**', matrix.package.path)}}
${{format('{0}/cypress/videos/**', matrix.package.path)}}
unit:
name: Unit tests
needs: build
@@ -141,3 +106,58 @@ jobs:
# * Run every `lint` script in the workspace . Dependencies build is cached by Turborepo
- name: Lint
run: pnpm run lint:all
e2e:
name: 'E2E (Package: ${{ matrix.package.path }})'
needs: build
if: ${{ needs.build.outputs.matrix != '[]' && needs.build.outputs.matrix != '' }}
strategy:
# * Don't cancel other matrices when one fails
fail-fast: false
matrix:
package: ${{ fromJson(needs.build.outputs.matrix) }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
# * Install Node and dependencies. Package dependencies won't be downloaded again as they have been cached by the `build` job.
- name: Install Node and dependencies
uses: ./.github/actions/install-dependencies
with:
TURBO_TOKEN: ${{ env.TURBO_TOKEN }}
TURBO_TEAM: ${{ env.TURBO_TEAM }}
# * Install Nhost CLI if a `nhost/config.yaml` file is found
- name: Install Nhost CLI
if: hashFiles(format('{0}/nhost/config.yaml', matrix.package.path)) != ''
uses: ./.github/actions/nhost-cli
- name: Fetch Dashboard Preview URL
id: fetch-dashboard-preview-url
uses: zentered/vercel-preview-url@v1.1.9
if: github.ref_name != 'main'
env:
VERCEL_TOKEN: ${{ secrets.DASHBOARD_VERCEL_DEPLOY_TOKEN }}
GITHUB_REF: ${{ github.ref_name }}
GITHUB_REPOSITORY: ${{ github.repository }}
with:
vercel_team_id: ${{ secrets.DASHBOARD_VERCEL_TEAM_ID }}
vercel_project_id: ${{ secrets.DASHBOARD_STAGING_VERCEL_PROJECT_ID }}
vercel_state: BUILDING,READY,INITIALIZING
- name: Set Dashboard Preview URL
if: steps.fetch-dashboard-preview-url.outputs.preview_url != ''
run: echo "NHOST_TEST_DASHBOARD_URL=https://${{ steps.fetch-dashboard-preview-url.outputs.preview_url }}" >> $GITHUB_ENV
# * Run the `ci` script of the current package of the matrix. Dependencies build is cached by Turborepo
- name: Run e2e tests
timeout-minutes: 15
run: pnpm --filter="${{ matrix.package.name }}" run e2e
- id: file-name
if: ${{ failure() }}
name: Transform package name into a valid file name
run: |
PACKAGE_FILE_NAME=$(echo "${{ matrix.package.name }}" | sed 's/@//g; s/\//-/g')
echo "fileName=$PACKAGE_FILE_NAME" >> $GITHUB_OUTPUT
# * Run this step only if the previous step failed, and Playwright generated a report
- name: Upload Playwright Report
if: ${{ failure() && hashFiles(format('{0}/playwright-report/**', matrix.package.path)) != ''}}
uses: actions/upload-artifact@v3
with:
name: playwright-${{ steps.file-name.outputs.fileName }}
path: ${{format('{0}/playwright-report/**', matrix.package.path)}}

56
.github/workflows/codeql-analysis.yml vendored Normal file
View File

@@ -0,0 +1,56 @@
name: "CodeQL"
on:
push: {}
pull_request: {}
schedule:
- cron: '20 23 * * 3'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ 'javascript' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
# Learn more about CodeQL language support at https://git.io/codeql-language-support
steps:
- name: Checkout repository
uses: actions/checkout@v4
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v2
# Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language
#- run: |
# make bootstrap
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2

View File

@@ -9,6 +9,7 @@ env:
NEXT_PUBLIC_ENV: dev
NEXT_TELEMETRY_DISABLED: 1
NEXT_PUBLIC_NHOST_BACKEND_URL: http://localhost:1337
jobs:
build:
name: Build

View File

@@ -1,89 +0,0 @@
name: Renovate
on:
pull_request:
branches: [main]
types: [closed]
paths-ignore:
- 'assets/**'
- '**.md'
- 'LICENSE'
env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: nhost
jobs:
renovate-changeset:
name: Add changeset
if: github.event.pull_request.merged == true && startsWith(github.head_ref, 'renovate/')
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
token: ${{ secrets.GH_PAT }}
# * Install Node and dependencies. Package downloads will be cached for the next jobs.
- name: Install Node and dependencies
uses: ./.github/actions/install-dependencies
with:
TURBO_TOKEN: ${{ env.TURBO_TOKEN }}
TURBO_TEAM: ${{ env.TURBO_TEAM }}
BUILD: 'none'
- name: Determine bumps
id: bumps
run: |
LAST_NON_PR_SHA=$(git log --no-merges main origin/${{ github.head_ref }} --format=format:%h -- | head -2 | tail -1)
echo "result<<EOF" >> $GITHUB_OUTPUT
pnpm recursive list --depth -1 --parseable \
--filter='!nhost-root' \
--filter=[$LAST_NON_PR_SHA] \
| xargs -I@ jq ".name" @/package.json \
| sort \
| uniq -u \
| awk '$0=$0": patch"' \
>> $GITHUB_OUTPUT
echo 'EOF' >> $GITHUB_OUTPUT
- name: Install dictionary
if: steps.bumps.outputs.result != ''
run: sudo apt-get install wbritish
- name: Generate changeset file name
id: file_name
if: steps.bumps.outputs.result != ''
run: |
FILE_NAME=$(shuf -n 3 /usr/share/dict/words | tr '\n' '-' | sed 's/-$//' | sed 's/'"'"'s//g' | tr '[:upper:]' '[:lower:]')
echo "result=./.changeset/${FILE_NAME}.md" >> $GITHUB_OUTPUT
- name: Create changeset file
if: steps.bumps.outputs.result != ''
run: |
cat <<EOF > ${{ steps.file_name.outputs.result }}
---
${{ steps.bumps.outputs.result }}
---
${{ github.event.pull_request.title }}
EOF
- name: Create Pull Request
id: cpr
uses: peter-evans/create-pull-request@v4
with:
token: ${{ secrets.GH_PAT }}
commit-message: ${{ github.event.pull_request.title }}
branch: renovate-changesets
delete-branch: true
title: 'chore: create changesest from Renovate bumps'
labels: |
dependencies
body: |
This PR creates the changesets from the Renovate dependencies that have been merged to main.
- name: Enable Pull Request Automerge
if: steps.cpr.outputs.pull-request-operation == 'created'
uses: peter-evans/enable-pull-request-automerge@v2
with:
token: ${{ secrets.GH_PAT }}
pull-request-number: ${{ steps.cpr.outputs.pull-request-number }}
- name: Auto approve
if: steps.cpr.outputs.pull-request-operation == 'created'
uses: juliangruber/approve-pull-request-action@v2
with:
github-token: ${{ secrets.GH_PAT }}
number: ${{ steps.cpr.outputs.pull-request-number }}

View File

@@ -28,7 +28,7 @@ jobs:
path: packages/nhost-js
start: true
- name: should be running
run: curl -sSf 'http://localhost:9695' > /dev/null
run: curl -sSf 'https://local.hasura.nhost.run' > /dev/null
stop:
runs-on: ubuntu-latest
@@ -48,28 +48,6 @@ jobs:
exit 1
fi
wait:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install the Nhost CLI and start the application
uses: ./.github/actions/nhost-cli
with:
path: packages/nhost-js
start: true
wait: false
- name: should not be ready
run: curl -sSf -o /dev/null 'http://localhost:9695' > /dev/null && exit 1 || true
- name: should eventually be ready
run: |
curl -sSf --connect-timeout 3 \
--max-time 5 \
--retry 300 \
--retry-delay 1 \
--retry-max-time 300 \
--retry-connrefused \
'http://localhost:9695' > /dev/null
config:
runs-on: ubuntu-latest
steps:
@@ -79,14 +57,10 @@ jobs:
with:
path: packages/nhost-js
start: true
config: |
services:
auth:
image: nhost/hasura-auth:0.15.0
- name: should find the injected hasura-auth version
run: |
VERSION=$(curl -sSf 'http://localhost:1337/v1/auth/version')
EXPECTED_VERSION='{"version":"v0.15.0"}'
VERSION=$(curl -sSf 'https://local.auth.nhost.run/v1/version')
EXPECTED_VERSION='{"version":"v0.20.1"}'
if [ "$VERSION" != "$EXPECTED_VERSION" ]; then
echo "Expected version $EXPECTED_VERSION but got $VERSION"
exit 1
@@ -99,6 +73,6 @@ jobs:
- name: Install the Nhost CLI
uses: ./.github/actions/nhost-cli
with:
version: v0.8.10
version: v1.0.1
- name: should find the correct version
run: nhost version | head -n 1 | grep v0.8.10 || exit 1
run: nhost --version | head -n 1 | grep v1.0.1 || exit 1

8
.gitignore vendored
View File

@@ -19,19 +19,17 @@ logs/
coverage/
dist/
umd/
lib/
node_modules/
tmp/
.docz/
.pnpm-store
.turbo
.env
.secrets
out/
# Custom
*.min.js
*.map
todo.md
# Config files that are not part of the repository root anymore. Should be removed in the future.
/.eslintignore
@@ -61,3 +59,7 @@ todo.md
# Nhost CLI data
.nhost
# Nix
.envrc
.direnv/

View File

@@ -2,5 +2,6 @@
"editor.codeActionsOnSave": {
"source.organizeImports": true
},
"eslint.workingDirectories": ["./dashboard"]
"eslint.workingDirectories": ["./dashboard"],
"typescript.tsdk": "node_modules/typescript/lib"
}

View File

@@ -1,16 +1,37 @@
# Developer guide
# Developer Guide
## Requirements
- This repository works with **Node 16**
### Node.js v18
- We use [pnpm](https://pnpm.io/) as a package manager to speed up development and builds, and as a basis for our monorepo. You need to make sure it's installed on your machine. There are [several ways to install it](https://pnpm.io/installation), but the easiest way is with `npm`:
_⚠️ Node.js v16 is also supported for the time being but support will be dropped in the near future_.
### [pnpm](https://pnpm.io/) package manager
The easiest way to install `pnpm` if it's not installed on your machine yet is to use `npm`:
```sh
$ npm install -g pnpm
```
- Our tests and examples use the Nhost CLI, to run the backend services locally. You can follow the installation instructions in [our documentation](https://docs.nhost.io/get-started/cli-workflow/install-cli).
### [Nhost CLI](https://docs.nhost.io/cli)
- The CLI is primarily used for running the E2E tests
- Please refer to the [installation guide](https://docs.nhost.io/get-started/cli-workflow/install-cli) if you have not installed it yet
## File Structure
The repository is organized as a monorepo, with the following structure (only relevant folders are shown):
```
assets/ # Assets used in the README
config/ # Configuration files for the monorepo
dashboard/ # Dashboard
docs/ # Documentation website
examples/ # Example projects
packages/ # Core packages
integrations/ # These are packages that rely on the core packages
```
## Get started
@@ -31,25 +52,25 @@ $ pnpm install
### Development
Although package references are correctly updated on the fly for TypeScript, example projects won't
see the changes because they are depending on the build output. To fix this, you can run packages
in development mode.
Although package references are correctly updated on the fly for TypeScript, example projects and the dashboard won't see the changes because they are depending on the build output. To fix this, you can run packages in development mode.
Running packages in development mode is as simple as:
Running packages in development mode from the root folder is as simple as:
```sh
$ pnpm dev
```
Our packages are linked together using [PNPM's workspace](https://pnpm.io/workspaces) feature. Vite automatically detects changes in the dependencies and rebuilds everything, so that the changes are immediately reflected in the other packages.
Our packages are linked together using [PNPM's workspace](https://pnpm.io/workspaces) feature. Next.js and Vite automatically detect changes in the dependencies and rebuild everything, so the changes will be reflected in the examples and the dashboard.
### Use examples
**Note:** It's possible that Next.js or Vite throw an error when you run `pnpm dev`. Restarting the process should fix it.
### Use Examples
Examples are a great way to test your changes in practice. Make sure you've `pnpm dev` running in your terminal and then run an example.
Let's follow the instructions to run [react-apollo example](https://github.com/nhost/nhost/blob/main/examples/react-apollo/README.md).
## Run the documentation website locally
## Edit Documentation
The easier way to contribute to our documentation is to go to the `docs` folder and follow the [instructions to start local development](https://github.com/nhost/nhost/blob/main/docs/README.md):
@@ -60,9 +81,9 @@ $ pnpm install
$ pnpm start
```
## Run test suites
## Run Test Suites
### Unit tests
### Unit Tests
You can run the unit tests with the following command from the repository root:
@@ -70,7 +91,7 @@ You can run the unit tests with the following command from the repository root:
$ pnpm test
```
### End-to-end tests
### E2E Tests
Each package that defines end-to-end tests embeds their own Nhost configuration, that will be automatically when running the tests. As a result, you must make sure you are not running the Nhost CLI before running the tests.
@@ -83,24 +104,60 @@ $ pnpm e2e
## Changesets
If you've made changes to the packages, you must describe those changes so that they can be reflected in the next release.
We use [changesets](https://github.com/changesets/changesets) to support our versioning and release workflows. When you submit a pull request, a bot checks if some changesets are present, and if not, it directs you to add them.
We use [changesets](https://github.com/changesets/changesets) to support our versioning and release workflows. When you submit a pull request, a bot checks if changesets are present, and if not, it asks you to add them.
The most comprehensive way to add a changeset is to run the following command in the repository root:
To create a changeset, run the following command from the repository root:
```sh
$ pnpm changeset
```
This will create a file in the `.changeset` directory. You can edit it to give more details about the change you just made.
This command will guide you through the process of creating a changeset. It will create a file in the `.changeset` directory.
You can take a look at the changeset documentation: [How to add a changeset](https://github.com/changesets/changesets/blob/main/docs/adding-a-changeset.md).
## Committing changes
### Selecting the Version
You'll notice that `git commit` takes a few seconds to run. We set a commit hook that scans the changes in the code, automatically generates documentation from the inline [TSDoc](https://tsdoc.org/) annotations, and adds these generated documentation files to the commit. They automatically update the [reference documentation](https://docs.nhost.io/reference).
When you create a changeset, you will be asked to select the version of the package that you are bumping. The versioning scheme is as follows:
- **major**
- For breaking changes (e.g: changing the function signature, etc.)
- Should be avoided as much as possible as it will require users to update their code. Instead, consider supporting both the old and the new API simultaneously for a while.
- For example: `v1.5.8` -> `v2.0.0`
- **minor**
- For new features (e.g: adding a new page to the dashboard, etc.)
- For example: `v1.5.8` -> `v1.6.0`
- **patch**
- For bug fixes (e.g: fixing a typo, etc.)
- For example: `v1.5.8` -> `v1.5.9`
<!-- ## Good practices
- lint
- prettier
- documentation -->
### Writing Good Changesets
A concise summary that describes the changes should be added to each PR. This summary will be used as the changeset description.
The following structure is used for describing changes:
- **The type of the change**:
- fix
- feat
- chore
- docs
- **The scope of the change** (_broader scopes (e.g: dashboard, hasura-storage-js, etc.) are not recommended as GitHub Releases already contain which project is being bumped_):
- projects
- deployments
- deps
- etc.
- **A short summary of the changes that were made**
**Examples:**
- `fix(deployments): use correct timestamp for deployment details`
- `chore(deps): bump @types/react to v18.2.8`
- `feat(secrets): enable secrets`
- etc.
You can always take a look at examples of changesets in the [GitHub Releases section](https://github.com/nhost/nhost/releases).

View File

@@ -34,7 +34,7 @@ Nhost consists of open source software:
- Authentication: [Hasura Auth](https://github.com/nhost/hasura-auth/)
- Storage: [Hasura Storage](https://github.com/nhost/hasura-storage)
- Serverless Functions: Node.js (JavaScript and TypeScript)
- [Nhost CLI](https://docs.nhost.io/reference/cli) for local development
- [Nhost CLI](https://docs.nhost.io/cli) for local development
## Architecture of Nhost
@@ -97,7 +97,7 @@ Nhost is frontend agnostic, which means Nhost works with all frontend frameworks
# Resources
- Start developing locally with the [Nhost CLI](https://docs.nhost.io/reference/cli)
- Start developing locally with the [Nhost CLI](https://docs.nhost.io/cli)
## Nhost Clients

View File

@@ -23,8 +23,8 @@ module.exports = {
'e2e/**/*.ts',
'e2e/**/*.d.ts'
],
plugins: ['@typescript-eslint', 'cypress'],
extends: ['plugin:cypress/recommended'],
plugins: ['@typescript-eslint'],
extends: [],
parserOptions: {
ecmaVersion: 2020,
sourceType: 'module'

View File

@@ -36,6 +36,7 @@ export default defineConfig({
}
},
build: {
target: 'es2019',
sourcemap: true,
lib: {
entry,

View File

@@ -7,7 +7,8 @@ import baseLibConfig from './vite.lib.config'
export default defineConfig({
...baseLibConfig,
optimizeDeps: {
include: ['react/jsx-runtime']
include: ['react/jsx-runtime'],
exclude: ['react-hook-form']
},
plugins: [react({ jsxRuntime: 'classic' }), ...baseLibConfig.plugins]
})

View File

@@ -8,7 +8,11 @@ module.exports = {
tsconfigRootDir: __dirname,
project: './tsconfig.json',
},
ignorePatterns: ['**/.eslintrc.js', '**/prettier.config.js'],
ignorePatterns: [
'**/.eslintrc.js',
'**/prettier.config.js',
'**/next.config.js',
],
rules: {
'react/react-in-jsx-scope': 'off',
'react/jsx-props-no-spreading': 'off',
@@ -21,9 +25,9 @@ module.exports = {
'error',
{ allowArrowFunctions: true, allowFunctions: true },
],
'import/prefer-default-export': 'off',
'import/no-extraneous-dependencies': ['error', { devDependencies: true }],
curly: ['error', 'all'],
'no-restricted-exports': 'off',
'no-undef': 'off',
'no-use-before-define': 'off',
'@typescript-eslint/no-use-before-define': [
@@ -62,21 +66,11 @@ module.exports = {
{
group: ['..*'],
message:
'Please use absolute imports instead. (e.g: @/ui/, @/hooks/, etc.)',
},
{
group: ['@/components/ui', '@/components/ui/*'],
message:
'Please use shorthand imports instead. (e.g: @/ui/ActivityIndicator, @/ui/Button, etc.)',
},
{
group: ['@/components/ui/v2*'],
message:
'Please use shorthand imports instead. (e.g: @/ui/v2/ActivityIndicator, @/ui/v2/Button, etc.)',
'Please use absolute imports instead. (e.g: @/components/, @/hooks/, etc.)',
},
{
group: ['@testing-library/react*'],
message: 'Please use @/utils/testUtils instead.',
message: 'Please use @/tests/testUtils instead.',
},
],
},

View File

@@ -49,4 +49,9 @@ tailwind.json
.idea
# Do not ignore Logs page
!src/**/logs*
!src/**/logs*
/test-results/
/playwright-report/
/playwright/.cache/
storageState.json
e2e/.auth/*

View File

@@ -2,13 +2,14 @@ import '@fontsource/inter';
import '@fontsource/inter/500.css';
import '@fontsource/inter/700.css';
import { CssBaseline, ThemeProvider } from '@mui/material';
import { NhostClient, NhostProvider } from '@nhost/nextjs';
import { NhostApolloProvider } from '@nhost/react-apollo';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import { Buffer } from 'buffer';
import { initialize, mswDecorator } from 'msw-storybook-addon';
import { RouterContext } from 'next/dist/shared/lib/router-context';
import { createTheme } from '../src/components/ui/v2/createTheme';
import '../src/styles/globals.css';
import createTheme from '../src/theme/createTheme';
global.Buffer = Buffer;
@@ -51,10 +52,15 @@ export const decorators = [
(Story) => (
<NhostApolloProvider
fetchPolicy="cache-first"
graphqlUrl="http://localhost:1337/v1/graphql"
graphqlUrl="https://local.graphql.nhost.run/v1"
>
<Story />
</NhostApolloProvider>
),
(Story) => (
<NhostProvider nhost={new NhostClient({ subdomain: 'local' })}>
<Story />
</NhostProvider>
),
mswDecorator,
];

View File

@@ -1,5 +1,657 @@
# @nhost/dashboard
## 0.20.25
### Patch Changes
- @nhost/react-apollo@5.0.38
## 0.20.24
### Patch Changes
- e10389ecf: fix(dashboard): disable run tab when developing locally
- @nhost/react-apollo@5.0.37
## 0.20.23
### Patch Changes
- c01568a7d: chore(dashboard): show alert to update oauth providers
## 0.20.22
### Patch Changes
- c3efb7ec8: feat(dashboard): query latest announcement from platform
## 0.20.21
### Patch Changes
- 3e46d3873: chore: update link to node18 announcement
## 0.20.20
### Patch Changes
- @nhost/react-apollo@5.0.36
- @nhost/nextjs@1.13.38
## 0.20.19
### Patch Changes
- 75c4c8ae3: feat(dashboard): make env value input multiline
## 0.20.18
### Patch Changes
- 425d485f8: fix(dashboard): make sure dedicated resources pricing follows total resources
## 0.20.17
### Patch Changes
- ae324f67f: fix(dashboard): remove unused graphql fields
## 0.20.16
### Patch Changes
- df5b4302c: chore(dashboard): remove run feature flag
- bf4a1f6c2: feat(dashboard): fetch auth, postgres, hasura and storage versions from dashboard
- 34fc08ca7: fix(dashboard/run): show correct private registry in service details
- 885d10620: chore(dashboard): change feedback to contact us
## 0.20.15
### Patch Changes
- ed16c8b5d: feat(run): add a confirmation dialog when deleting a run service
- 216990888: fix(run): center loading indicator when selecting a project
## 0.20.14
### Patch Changes
- 9fbea9787: feat: add node18 announcement
## 0.20.13
### Patch Changes
- e84acf469: fix(run): handle subdomain undefined error when creating a new service
## 0.20.12
### Patch Changes
- b7c799d62: feat(run): add dialog to copy registry and URLs
## 0.20.11
### Patch Changes
- 8903e6abd: fix(dashboard): show correct egress limit in usage stats
## 0.20.10
### Patch Changes
- 666a75a23: feat(dashboard): add functions execution time and egress volume to usage stats
## 0.20.9
### Patch Changes
- 5e1e80aa8: fix(dashboard): show correct locales in user details
- @nhost/react-apollo@5.0.35
- @nhost/nextjs@1.13.37
## 0.20.8
### Patch Changes
- @nhost/react-apollo@5.0.34
- @nhost/nextjs@1.13.36
## 0.20.7
### Patch Changes
- 4a7ede11e: fix: distinguish files that were not uploaded
- 202b64723: feat(nhost-run): add support for one-click-install run services
- 074a0fa11: feat(dashboard): add settings toggle to enable/disable antivirus
- @nhost/react-apollo@5.0.33
- @nhost/nextjs@1.13.35
## 0.20.6
### Patch Changes
- b20761e97: feat(services): add pricing info and confirmation dialog
- 90df6d81d: fix(services): handle null values when editing a service
- aa8508467: fix: query service logs correctly
feat: enable multiline support for environment value input
## 0.20.5
### Patch Changes
- 8d7f84b8d: fix: make announcement adapt to theme
## 0.20.4
### Patch Changes
- 3b75bfce2: fix: make announcement close properly
- f49819075: fix: show correct values when dedicated resources are disabled
## 0.20.3
### Patch Changes
- e643bd362: fix(services): fix errors when config is null
- bcdab66bf: feat: add annoucement for nhost run
- f967a2e59: added note about storage not being able to be downsized
- 311c7756d: chore(services): consistent naming for compute
## 0.20.2
### Patch Changes
- 9073182d5: chore(dashboard): bump `turbo` to 1.10.11
- ece717d6e: feat(logs): show services in the logs page
- 82b335311: feat(metrics): change grafana link to point to the dashboards
- b135ef695: fix(services): set command as optional and set min replicas to 0
## 0.20.1
### Patch Changes
- 3d5c34f4c: fix(auth): fix users pagination limit
## 0.20.0
### Minor Changes
- c99d117d1: feat(services): add support for custom services
## 0.19.2
### Patch Changes
- face99ccd: chore(deps): bump turbo version
- cfe527307: style: tweak pull config warning in dark mode
- a9d7da8af: chore(deps): update dependency @types/pluralize to ^0.0.30
- 9aa4371ef: chore: add hasura-auth version 0.21.2
- d14e112bf: chore(deps): update dependency prettier-plugin-tailwindcss to ^0.4.0
- d3e8bb94a: chore(deps): update dependency vite-plugin-dts to v3
## 0.19.1
### Patch Changes
- @nhost/react-apollo@5.0.32
- @nhost/nextjs@1.13.34
## 0.19.0
### Minor Changes
- 9c61c69a7: chore(dashboard):add postgres 14.6-20230705-1 to the version selector
### Patch Changes
- 47bda15ff: feat(settings): add warning to pull config
## 0.18.0
### Minor Changes
- ee0b9b8ed: chore(dashboard):add hasura v2.28.2 and v2.29.0 to the version selector
## 0.17.20
### Patch Changes
- @nhost/react-apollo@5.0.31
- @nhost/nextjs@1.13.33
## 0.17.19
### Patch Changes
- f866120a6: fix(users): use the password length from the config
## 0.17.18
### Patch Changes
- @nhost/react-apollo@5.0.30
- @nhost/nextjs@1.13.32
## 0.17.17
### Patch Changes
- ea7b102c0: fix(pat): highlight expired tokens
## 0.17.16
### Patch Changes
- b3b64a3b7: chore(deps): bump `@types/react` to `v18.2.14` and `@types/react-dom` to `v18.2.6`
- 32b221f94: chore(deps): bump `graphiql` to `v3`
- 3a56c12df: chore(deps): bump `turbo` to `v1.10.6`
- Updated dependencies [b3b64a3b7]
- @nhost/react-apollo@5.0.29
- @nhost/nextjs@1.13.31
## 0.17.15
### Patch Changes
- f41fdc12a: chore(deps): bump `turbo` to `1.10.5`
- 6199c1c55: fix(projects): don't redirect to 404 page
- Updated dependencies [07a45fde0]
- @nhost/react-apollo@5.0.28
- @nhost/nextjs@1.13.30
## 0.17.14
### Patch Changes
- 80b22724d: chore(deps): bump `@types/react` to `v18.2.13`, `@types/react-dom` to `v18.2.6` and `@storybook/testing-library` to `v0.2.0`
## 0.17.13
### Patch Changes
- cc02902cb: chore(docs): update environment variable documentation
## 0.17.12
### Patch Changes
- 660d339e1: fix(storybook): don't break storybook
- 660d339e1: fix(tests): prevent warnings during tests
- @nhost/react-apollo@5.0.27
- @nhost/nextjs@1.13.29
## 0.17.11
### Patch Changes
- bd4d0c270: chore(dashboard):add postgres 14.6-20230613-1 to the version selector
## 0.17.10
### Patch Changes
- c8c2a10b2: fix(database): don't break the password reset flow
- e70b45498: chore(deps): bump `@types/react` to `v18.2.12` and `@types/react-dom` to `v18.2.5`
## 0.17.9
### Patch Changes
- 842055099: chore(deps): bump `turbo` to `v1.10.3` and `pnpm` to `v8.6.2`
- fd12aa0a8: chore(projects): remove the postgres password input from the project creation screen
- 022b76e78: chore(deps): bump `@types/react` to `v18.2.11`
- 3555ab2b7: chore(deps): bump `vitest` monorepo to `v0.32.0`
- c43e54922: feat(backups): add download button to backups
## 0.17.8
### Patch Changes
- d0457fe5c: feat(settings): improve the dashboard and config parity
- @nhost/react-apollo@5.0.26
- @nhost/nextjs@1.13.28
## 0.17.7
### Patch Changes
- 4f0368b95: fix(account): don't break account settings page
## 0.17.6
### Patch Changes
- 64a8f41d0: chore(resources): lower the maximum allowed resources per service
## 0.17.5
### Patch Changes
- @nhost/react-apollo@5.0.25
- @nhost/nextjs@1.13.27
## 0.17.4
### Patch Changes
- 9b1d0f7a5: fix(deployments): use correct timestamp for deployment details
- 6d2963ffa: chore(deps): bump `@types/react` to `v18.2.8`
- 8871267b9: chore(deps): downgrade `pnpm` to `v8.5.1` because of no Turborepo support
## 0.17.3
### Patch Changes
- 01eeef9de: chore(misc): under the hood improvements
- 21e13db05: chore(deps): bump `@types/react` to `v18.2.7` and `turbo` to `v1.10.1`
- f16433ae6: chore(secrets): allow empty secrets and environment variables
- aa3c62989: chore(cli): bump Nhost CLI version to v1.0
- @nhost/react-apollo@5.0.24
- @nhost/nextjs@1.13.26
## 0.17.2
### Patch Changes
- 88a4983f: chore(misc): under the hood improvements
## 0.17.1
### Patch Changes
- 9b0d4dde: feat(secrets): enable secrets
## 0.17.0
### Minor Changes
- 15d84a19: Add postgres 14.6-20230525
## 0.16.14
### Patch Changes
- 4c626174: chore: updated import paths, improved directory structure
- cc047b71: chore(deps): bump `@fontsource` monorepo to `v5.0.0`
- 99edd012: feat(account): add support for personal access tokens
## 0.16.13
### Patch Changes
- 78c7109c: feat(settings): allow selecting service versions
## 0.16.12
### Patch Changes
- 399009d6: fix(gql): don't enter an infinite loop when fetching remote app data
- 329e5a91: fix(deployments): use the same sorting of deployments everywhere
- 6d559d6e: chore(settings): add under the hood improvements to the settings page
- 12eb236c: chore(deps): bump `prettier-plugin-tailwindcss` to `v0.3.0`
- f9b81a2a: chore(deps): bump `turbo` to `v1.9.8`
- 1345741b: fix(projects): don't redirect to 404 on project creation
- Updated dependencies [7fea29a8]
- @nhost/react-apollo@5.0.23
- @nhost/nextjs@1.13.25
## 0.16.11
### Patch Changes
- 1230b722: fix(projects): don't redirect to 404 on when the project is renamed
- @nhost/react-apollo@5.0.22
- @nhost/nextjs@1.13.24
## 0.16.10
### Patch Changes
- Updated dependencies [da03bf39]
- @nhost/react-apollo@5.0.21
- @nhost/nextjs@1.13.23
## 0.16.9
### Patch Changes
- 349aac36: fix(settings): use region domain when constructing the postgres connection string
## 0.16.8
### Patch Changes
- 20fb69fa: chore(projects): change the way how API URLs are constructed
## 0.16.7
### Patch Changes
- 49f9b837: chore(docker): bump `pnpm` to `v8.4.0` and `turbo` to `v1.9.3`
- 3f478a4e: chore(deps): bump `vitest` to `v0.31.0`, `@types/react` to `v18.2.6` and `@types/react-dom` to `v18.2.4`
## 0.16.6
### Patch Changes
- d926f156: fix(projects): redirect to 404 when an invalid project is opened
- 49b99728: fix(projects): disable features for non-owner members of workspaces
## 0.16.5
### Patch Changes
- 12e2855f: chore(deps): bump `jsdom` to v22
- e4972b83: feat(metrics): add Grafana page
## 0.16.4
### Patch Changes
- 3f396a9e: fix(projects): unpause after upgrading a paused project to pro
- 3f396a9e: fix(projects): don't redirect to 404 page after project creation
## 0.16.3
### Patch Changes
- Updated dependencies [90c60311]
- @nhost/react-apollo@5.0.20
- @nhost/nextjs@1.13.22
## 0.16.2
### Patch Changes
- 0f34f0c6: fix(projects): disallow downgrading to free plan
- 8da291ad: chore(deps): bump `@types/react` to v18.2.0 and `@types/react-dom` to v18.2.1
## 0.16.1
### Patch Changes
- adc828a5: fix(gql): don't enter an infinite loop when fetching remote app data
## 0.16.0
### Minor Changes
- 2fb1145f: feat(compute): add support for replicas
### Patch Changes
- d8ceccec: chore(env): remove deprecated `NHOST_BACKEND_URL` environment variable
## 0.15.2
### Patch Changes
- 84b84ab7: fix(projects): filter projects by workspace
## 0.15.1
### Patch Changes
- 2faf7907: chore(deps): bump `graphql-request` to v6
- f1b5a944: chore(deps): bump `@vitejs/plugin-react` to v4
- 7f1785ac: chore(deps): bump `@types/react` to v18.0.37
- @nhost/react-apollo@5.0.19
## 0.15.0
### Minor Changes
- 85889ee8: feat(dashboard): add Compute management to the settings
## 0.14.8
### Patch Changes
- 668c8771: chore(dialogs): unify dialog management of payment dialogs
## 0.14.7
### Patch Changes
- d4ccc656: chore: cleanup unused code
- @nhost/react-apollo@5.0.18
- @nhost/nextjs@1.13.21
## 0.14.6
### Patch Changes
- b299cfc9: chore(deps): bump `vitest` to v0.30.0
- 411cb65b: chore(projects): refactor workspace and project hooks
- 43b1b144: chore(deps): bump `@types/react` to v18.0.34 and `@types/react-dom` to v18.0.11
- Updated dependencies [43b1b144]
- @nhost/react-apollo@5.0.17
- @nhost/nextjs@1.13.20
## 0.14.5
### Patch Changes
- ba0d57ee: fix(i18n): revert i18n library
- 3328ed05: feat(projects): improve overview when there is an error
## 0.14.4
### Patch Changes
- 5e0920ba: chore(deps): bump `next-seo` to v6
- 706c9dc3: chore(deps): bump `@types/react` to 18.0.33
- 99f8f6b3: feat(metrics): show metrics on the overview
## 0.14.3
### Patch Changes
- @nhost/react-apollo@5.0.16
## 0.14.2
### Patch Changes
- 3cb67300: fix(logs): don't break UI when clearing time picker
- 7453bf3b: feat(projects): show project creator info
- c166dad0: chore(tests): improve auth page tests
- 6a290bb2: chore(deps): bump `@types/react` to 18.0.32
## 0.14.1
### Patch Changes
- @nhost/react-apollo@5.0.15
- @nhost/nextjs@1.13.19
## 0.14.0
### Minor Changes
- 6e1f03ea: feat(dashboard): add support for the Azure AD provider
### Patch Changes
- 1bd2c373: chore(deps): bump `turbo` to 1.8.6
- d329b621: chore(deps): bump `@types/react` to 18.0.30
- cb248f0d: fix(tests): avoid name collision in database tests
- 867c8076: chore(deps): bump `@types/react` to 18.0.29
## 0.13.10
### Patch Changes
- e93b06ab: fix(dashboard): remove left margin from workspace list on mobile
- 1c4806bf: chore(deps): bump `sharp` to 0.32.0
- @nhost/react-apollo@5.0.14
- @nhost/nextjs@1.13.18
## 0.13.9
### Patch Changes
- 912ed76c: chore(dashboard): bump `@apollo/client` to 3.7.10
- Updated dependencies [912ed76c]
- @nhost/react-apollo@5.0.13
## 0.13.8
### Patch Changes
- 7c127372: chore(dashboard): bump `react-error-boundary` to v4
## 0.13.7
### Patch Changes
- 9130ab12: chore(dashboard): bump `yup` to v1 and `@hookform/resolvers` to v3
## 0.13.6
### Patch Changes
- 253dd235: using new mutation to create projects + refactor Create Project page.
## 0.13.5
### Patch Changes
- @nhost/react-apollo@5.0.12
- @nhost/nextjs@1.13.17
## 0.13.4
### Patch Changes
- b48bc034: fix(dashboard): disable new users
- 798e591b: fix(dashboard): show correct date in data grid
## 0.13.3
### Patch Changes
- bfb4c1a6: chore(dashboard): remove `useAxios` property
- d8d8394b: Dashboard: allow to override hasura admin secret in docker
- Updated dependencies [ce1ee40d]
- @nhost/nextjs@1.13.16
- @nhost/react-apollo@5.0.11
## 0.13.2
### Patch Changes
- beed2eba: Fix docker entrypoint for dashboard
- 2c8559a3: fix(dashboard): refresh project list after deleting a project
- 4329d048: chore(dashboard): bump `graphiql` dependencies
## 0.13.1
### Patch Changes
- cbb1fc5b: chore(dashboard): cleanup GraphQL operations
## 0.13.0
### Minor Changes

View File

@@ -3,7 +3,7 @@ RUN apk add --no-cache libc6-compat
RUN apk update
WORKDIR /app
RUN yarn global add turbo@1.8.3
RUN yarn global add turbo@1.10.11
COPY . .
RUN turbo prune --scope="@nhost/dashboard" --docker
@@ -20,6 +20,7 @@ ENV NEXT_PUBLIC_ENV dev
ENV NEXT_PUBLIC_NHOST_PLATFORM false
# placeholders for URLs, will be replaced on runtime by entrypoint script
ENV NEXT_PUBLIC_NHOST_ADMIN_SECRET __NEXT_PUBLIC_NHOST_ADMIN_SECRET__
ENV NEXT_PUBLIC_NHOST_AUTH_URL __NEXT_PUBLIC_NHOST_AUTH_URL__
ENV NEXT_PUBLIC_NHOST_FUNCTIONS_URL __NEXT_PUBLIC_NHOST_FUNCTIONS_URL__
ENV NEXT_PUBLIC_NHOST_GRAPHQL_URL __NEXT_PUBLIC_NHOST_GRAPHQL_URL__
@@ -28,7 +29,7 @@ ENV NEXT_PUBLIC_NHOST_HASURA_CONSOLE_URL __NEXT_PUBLIC_NHOST_HASURA_CONSOLE_URL_
ENV NEXT_PUBLIC_NHOST_HASURA_MIGRATIONS_API_URL __NEXT_PUBLIC_NHOST_HASURA_MIGRATIONS_API_URL__
ENV NEXT_PUBLIC_NHOST_HASURA_API_URL __NEXT_PUBLIC_NHOST_HASURA_API_URL__
RUN yarn global add pnpm@7.17.0
RUN yarn global add pnpm@8.6.2
COPY .gitignore .gitignore
COPY --from=pruner /app/out/json/ .
COPY --from=pruner /app/out/pnpm-*.yaml .

View File

@@ -3,17 +3,33 @@
This is the Nhost Dashboard, a web application that allows you to manage your Nhost projects.
To get started, you need to have an Nhost project. If you don't have one, you can [create a project here](https://app.nhost.io).
First, install the dependencies:
```bash
pnpm install
```
Then, build the packages that are used by the Nhost Dashboard:
```bash
pnpm -w build
```
Finally, run the development server:
```bash
pnpm dev
```
Open [http://localhost:3000](http://localhost:3000) to see the result in your browser.
## Environment
### Setup Environment Variables
Depending on the environment you wish to target you can configure environment variables in `.env.<target_environment>.local`.
- `.env.development`: This file is used if you run `nhost dev`
- `.env.development`: This file is used if you run `nhost up`
- `.env.development.local`: This file is used if you run `pnpm dev`. It takes precedence over `.env.local` if available.
- `.env.production.local`: This file is used if you run `pnpm build`. It takes precedence over `.env.local` if available.
- `.env.local`: This file is used if you run either `pnpm dev` or `pnpm build`.
@@ -27,7 +43,7 @@ You can connect the Nhost Dashboard to your **locally running** Nhost backend in
First, you need to run the following command to start your backend locally:
```bash
cd <your_nhost_project> && nhost dev
cd <your_nhost_project> && nhost up
```
You can connect the Nhost Dashboard to your locally running backend by setting the following environment variables in `.env.development.local`:
@@ -54,6 +70,12 @@ Components are documented using [Storybook](https://storybook.js.org/). To run S
pnpm storybook
```
By default, Storybook will run on port `6006`. You can change this by passing the `--port` flag:
```bash
pnpm storybook --port 6007
```
### General Environment Variables
| Name | Description |
@@ -64,16 +86,15 @@ pnpm storybook
### Environment Variables for Local Development and Self-Hosting
| Name | Description |
| ---- | ----------- |
| `NEXT_PUBLIC_NHOST_AUTH_URL` | The URL of the Auth service. When working locally, point it to the Auth service started by the CLI. When self-hosting, point it to the self-hosted Auth service. |
| `NEXT_PUBLIC_NHOST_FUNCTIONS_URL` | The URL of the Functions service. When working locally, point it to the Functions service started by the CLI. When self-hosting, point it to the self-hosted Functions service. |
| `NEXT_PUBLIC_NHOST_GRAPHQL_URL` | The URL of the GraphQL service. When working locally, point it to the GraphQL service started by the CLI. When self-hosting, point it to the self-hosted GraphQL service. |
| `NEXT_PUBLIC_NHOST_STORAGE_URL` | The URL of the Storage service. When working locally, point it to the Storage service started by the CLI. When self-hosting, point it to the self-hosted Storage service. |
| `NEXT_PUBLIC_NHOST_HASURA_CONSOLE_URL` | The URL of the Hasura Console. When working locally, point it to the Hasura Console started by the CLI. When self-hosting, point it to the self-hosted Hasura Console. |
| `NEXT_PUBLIC_NHOST_HASURA_MIGRATIONS_API_URL` | The URL of Hasura's Migrations service. When working locally, point it to the Migrations service started by the CLI. |
| `NEXT_PUBLIC_NHOST_HASURA_API_URL` | The URL of Hasura's Schema and Metadata API. When working locally, point it to the Schema and Metadata API started by the CLI. When self-hosting, point it to the self-hosted Schema and Metadata API. |
| Name | Description |
| --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `NEXT_PUBLIC_NHOST_AUTH_URL` | The URL of the Auth service. When working locally, point it to the Auth service started by the CLI. When self-hosting, point it to the self-hosted Auth service. |
| `NEXT_PUBLIC_NHOST_FUNCTIONS_URL` | The URL of the Functions service. When working locally, point it to the Functions service started by the CLI. When self-hosting, point it to the self-hosted Functions service. |
| `NEXT_PUBLIC_NHOST_GRAPHQL_URL` | The URL of the GraphQL service. When working locally, point it to the GraphQL service started by the CLI. When self-hosting, point it to the self-hosted GraphQL service. |
| `NEXT_PUBLIC_NHOST_STORAGE_URL` | The URL of the Storage service. When working locally, point it to the Storage service started by the CLI. When self-hosting, point it to the self-hosted Storage service. |
| `NEXT_PUBLIC_NHOST_HASURA_CONSOLE_URL` | The URL of the Hasura Console. When working locally, point it to the Hasura Console started by the CLI. When self-hosting, point it to the self-hosted Hasura Console. |
| `NEXT_PUBLIC_NHOST_HASURA_MIGRATIONS_API_URL` | The URL of Hasura's Migrations service. When working locally, point it to the Migrations service started by the CLI. |
| `NEXT_PUBLIC_NHOST_HASURA_API_URL` | The URL of Hasura's Schema and Metadata API. When working locally, point it to the Schema and Metadata API started by the CLI. When self-hosting, point it to the self-hosted Schema and Metadata API. |
### Other Environment Variables
@@ -93,7 +114,7 @@ pnpm storybook
| Name | Description |
| -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `react/react-in-jsx-scope` | Disabled because we don't need to import `React` anymore. |
| `react/jsx-props-no-spreading` | Disabled because we heavily rely on props spreading in our `@/ui/v2` components. |
| `react/jsx-props-no-spreading` | Disabled because we heavily rely on props spreading in our `@/components/ui/v2` components. |
| `react/require-default-props` | Disabled because we use TypeScript instead of PropTypes. |
| `react-hooks/exhaustive-deps` | Because we already had several rule violations when proper ESLint rules were introduced, we changed this rule to a warning. |
| `import/extensions` | JS / TS files should be imported without file extensions. |
@@ -102,7 +123,6 @@ pnpm storybook
| `import/order` | Until we have a better auto-formatter, we disable this rule. |
| `import/no-extraneous-dependencies` | `devDependencies` should be excluded from the list of disallowed imports. |
| `curly` | By default it only enforces curly braces for multi-line blocks, but it should be enforced for single-line blocks as well. |
| `no-restricted-exports` | `export { default } from './module'` is used heavily in `@/ui/v2` which is a restricted export by default. |
| `@typescript-eslint/no-use-before-define` | Order of type references should be ignored. |
| `no-undef` | [Official TypeScript ESLint packages](https://github.com/typescript-eslint/typescript-eslint/issues/4671#issuecomment-1065948494) are turning off this rule. |
| `@typescript-eslint/no-shadow` | TypeScript specific implementation of `no-shadow`. |
@@ -111,3 +131,43 @@ pnpm storybook
| `@typescript-eslint/consistent-type-imports` | Enforces `import type { Type } from 'module'` syntax. It prevents false positive circular dependency errors. |
| `@typescript-eslint/naming-convention` | Enforces a consistent naming convention. |
| `no-restricted-imports` | Enforces absolute imports and consistent import paths for components from `src/components/ui` folder. |
### Unit Tests
Unit tests are written using [Vitest](https://vitest.dev/). To run the tests, run the following command:
```bash
pnpm test
```
### End-to-End Tests
Most of the end-to-end tests require access to an Nhost test user and a live project. You can register a user and create a test project on the [Nhost Dashboard](https://app.nhost.io/).
Next, you need to create a project. Create a `.env.test` file with the following variables:
```
NHOST_TEST_DASHBOARD_URL=<test_dashboard_url>
NHOST_TEST_USER_EMAIL=<test_user_email>
NHOST_TEST_USER_PASSWORD=<test_user_password>
NHOST_TEST_WORKSPACE_NAME=<test_workspace_name>
NHOST_TEST_PROJECT_NAME=<test_project_name>
NHOST_TEST_PROJECT_ADMIN_SECRET=<test_project_admin_secret>
```
**Required Variables**:
- `NHOST_TEST_DASHBOARD_URL`: The URL to run the tests against (e.g: http://localhost:3000 or https://staging.app.nhost.io)
- `NHOST_TEST_USER_EMAIL`: Email address of the test user that owns the test project
- `NHOST_TEST_USER_PASSWORD`: Password of the test user that owns the test project
- `NHOST_TEST_WORKSPACE_NAME`: Name of the workspace that contains the test project
- `NHOST_TEST_PROJECT_NAME`: Name of the test project
- `NHOST_TEST_PROJECT_ADMIN_SECRET`: Admin secret of the test project
Make sure to copy the workspace and project information from the [Nhost Dashboard](https://app.nhost.io/).
End-to-end tests are written using [Playwright](https://playwright.dev/). To run the tests, run the following command:
```bash
pnpm e2e
```

View File

@@ -3,15 +3,17 @@
set -euo pipefail
# read URLs from env variables (with defaults)
NEXT_PUBLIC_NHOST_AUTH_URL="${NEXT_PUBLIC_NHOST_AUTH_URL:-"http://localhost:1337/v1/auth"}"
NEXT_PUBLIC_NHOST_FUNCTIONS_URL="${NEXT_PUBLIC_NHOST_FUNCTIONS_URL:-"http://localhost:1337/v1/functions"}"
NEXT_PUBLIC_NHOST_GRAPHQL_URL="${NEXT_PUBLIC_NHOST_GRAPHQL_URL:-"http://localhost:1337/v1/graphql"}"
NEXT_PUBLIC_NHOST_STORAGE_URL="${NEXT_PUBLIC_NHOST_STORAGE_URL:-"http://localhost:1337/v1/storage"}"
NEXT_PUBLIC_NHOST_HASURA_CONSOLE_URL="${NEXT_PUBLIC_NHOST_HASURA_CONSOLE_URL:-"http://localhost:9695"}"
NEXT_PUBLIC_NHOST_HASURA_MIGRATIONS_API_URL="${NEXT_PUBLIC_NHOST_HASURA_MIGRATIONS_API_URL:-"http://localhost:9693"}"
NEXT_PUBLIC_NHOST_HASURA_API_URL="${NEXT_PUBLIC_NHOST_HASURA_API_URL:-"http://localhost:8080"}"
NEXT_PUBLIC_NHOST_ADMIN_SECRET="${NEXT_PUBLIC_NHOST_ADMIN_SECRET:-nhost-admin-secret}"
NEXT_PUBLIC_NHOST_AUTH_URL="${NEXT_PUBLIC_NHOST_AUTH_URL:-http://localhost:1337/v1/auth}"
NEXT_PUBLIC_NHOST_FUNCTIONS_URL="${NEXT_PUBLIC_NHOST_FUNCTIONS_URL:-http://localhost:1337/v1/functions}"
NEXT_PUBLIC_NHOST_GRAPHQL_URL="${NEXT_PUBLIC_NHOST_GRAPHQL_URL:-http://localhost:1337/v1/graphql}"
NEXT_PUBLIC_NHOST_STORAGE_URL="${NEXT_PUBLIC_NHOST_STORAGE_URL:-http://localhost:1337/v1/storage}"
NEXT_PUBLIC_NHOST_HASURA_CONSOLE_URL="${NEXT_PUBLIC_NHOST_HASURA_CONSOLE_URL:-http://localhost:9695}"
NEXT_PUBLIC_NHOST_HASURA_MIGRATIONS_API_URL="${NEXT_PUBLIC_NHOST_HASURA_MIGRATIONS_API_URL:-http://localhost:9693}"
NEXT_PUBLIC_NHOST_HASURA_API_URL="${NEXT_PUBLIC_NHOST_HASURA_API_URL:-http://localhost:8080}"
# replace placeholders
find dashboard -type f -exec sed -i "s~__NEXT_PUBLIC_NHOST_ADMIN_SECRET__~${NEXT_PUBLIC_NHOST_ADMIN_SECRET}~g" {} +
find dashboard -type f -exec sed -i "s~__NEXT_PUBLIC_NHOST_AUTH_URL__~${NEXT_PUBLIC_NHOST_AUTH_URL}~g" {} +
find dashboard -type f -exec sed -i "s~__NEXT_PUBLIC_NHOST_FUNCTIONS_URL__~${NEXT_PUBLIC_NHOST_FUNCTIONS_URL}~g" {} +
find dashboard -type f -exec sed -i "s~__NEXT_PUBLIC_NHOST_GRAPHQL_URL__~${NEXT_PUBLIC_NHOST_GRAPHQL_URL}~g" {} +

View File

@@ -0,0 +1,51 @@
import { faker } from '@faker-js/faker';
import type { Page } from '@playwright/test';
import { expect, test } from '@playwright/test';
let page: Page;
test.beforeAll(async ({ browser }) => {
page = await browser.newPage();
});
test.beforeEach(async () => {
await page.goto('/');
});
test.afterAll(async () => {
await page.close();
});
test('should be able to create then delete a personal access token', async () => {
await page.waitForLoadState('networkidle');
await page.getByRole('banner').getByRole('button').last().click();
await page.getByRole('link', { name: /account settings/i }).click();
await page
.getByRole('button', { name: /create personal access token/i })
.click();
const patName = faker.lorem.slug(3);
await page.getByRole('textbox', { name: /name/i }).fill(patName);
await page.getByRole('button', { name: /expiration/i }).click();
await page.getByRole('option', { name: /7 days/i }).click();
await page.getByRole('button', { name: /create/i }).click();
await expect(
page.getByText(
/this token will not be shown again. make sure to copy it now./i,
),
).toBeVisible();
await page.getByRole('button', { name: /close/i }).click();
await expect(page.getByText(patName)).toBeVisible();
await page
.getByRole('button', { name: `More options for ${patName}`, exact: true })
.click();
await page.getByRole('menuitem', { name: /delete/i }).click();
await page.getByRole('button', { name: /delete/i }).click();
await expect(page.getByText(patName)).not.toBeVisible();
});

View File

@@ -0,0 +1,50 @@
import {
TEST_PROJECT_NAME,
TEST_PROJECT_SLUG,
TEST_WORKSPACE_SLUG,
} from '@/e2e/env';
import { createUser, generateTestEmail, openProject } from '@/e2e/utils';
import { faker } from '@faker-js/faker';
import test, { expect } from '@playwright/test';
test('should be able to ban and unban a user', async ({ page }) => {
await page.goto('/');
await openProject({
page,
projectName: TEST_PROJECT_NAME,
workspaceSlug: TEST_WORKSPACE_SLUG,
projectSlug: TEST_PROJECT_SLUG,
});
await page
.getByRole('navigation', { name: /main navigation/i })
.getByRole('link', { name: /auth/i })
.click();
await page.waitForURL(`/${TEST_WORKSPACE_SLUG}/${TEST_PROJECT_SLUG}/users`);
const email = generateTestEmail();
const password = faker.internet.password();
await createUser({ page, email, password });
await page
.getByRole('button', { name: `View ${email}`, exact: true })
.click();
await page.getByRole('button', { name: /actions/i }).click();
await page.getByRole('menuitem', { name: /ban user/i }).click();
await expect(
page.getByText(/user has been banned successfully./i),
).toBeVisible();
await expect(page.locator('form').getByText(/^banned$/i)).toBeVisible();
await page.getByRole('button', { name: /actions/i }).click();
await page.getByRole('menuitem', { name: /unban user/i }).click();
await expect(
page.getByText(/user has been unbanned successfully./i),
).toBeVisible();
await expect(page.locator('form').getByText(/^banned$/i)).not.toBeVisible();
});

View File

@@ -0,0 +1,65 @@
import {
TEST_PROJECT_NAME,
TEST_PROJECT_SLUG,
TEST_WORKSPACE_SLUG,
} from '@/e2e/env';
import { createUser, generateTestEmail, openProject } from '@/e2e/utils';
import { faker } from '@faker-js/faker';
import type { Page } from '@playwright/test';
import test, { expect } from '@playwright/test';
let page: Page;
test.beforeAll(async ({ browser }) => {
page = await browser.newPage();
});
test.beforeEach(async () => {
await page.goto('/');
await openProject({
page,
projectName: TEST_PROJECT_NAME,
workspaceSlug: TEST_WORKSPACE_SLUG,
projectSlug: TEST_PROJECT_SLUG,
});
await page
.getByRole('navigation', { name: /main navigation/i })
.getByRole('link', { name: /auth/i })
.click();
await page.waitForURL(`/${TEST_WORKSPACE_SLUG}/${TEST_PROJECT_SLUG}/users`);
});
test.afterAll(async () => {
await page.close();
});
test('should create a user', async () => {
const email = generateTestEmail();
const password = faker.internet.password();
await createUser({ page, email, password });
await expect(
page.getByRole('button', { name: `View ${email}`, exact: true }),
).toBeVisible();
});
test('should not be able to create a user with an existing email', async () => {
const email = generateTestEmail();
const password = faker.internet.password();
await createUser({ page, email, password });
await expect(
page.getByRole('button', { name: `View ${email}`, exact: true }),
).toBeVisible();
await createUser({ page, email, password });
await expect(
page.getByRole('dialog').getByText(/email already in use/i),
).toBeVisible();
});

View File

@@ -0,0 +1,96 @@
import {
TEST_PROJECT_NAME,
TEST_PROJECT_SLUG,
TEST_WORKSPACE_SLUG,
} from '@/e2e/env';
import { createUser, generateTestEmail, openProject } from '@/e2e/utils';
import { faker } from '@faker-js/faker';
import type { Page } from '@playwright/test';
import test, { expect } from '@playwright/test';
let page: Page;
test.beforeAll(async ({ browser }) => {
page = await browser.newPage();
});
test.beforeEach(async () => {
await page.goto('/');
await openProject({
page,
projectName: TEST_PROJECT_NAME,
workspaceSlug: TEST_WORKSPACE_SLUG,
projectSlug: TEST_PROJECT_SLUG,
});
await page
.getByRole('navigation', { name: /main navigation/i })
.getByRole('link', { name: /auth/i })
.click();
await page.waitForURL(`/${TEST_WORKSPACE_SLUG}/${TEST_PROJECT_SLUG}/users`);
});
test.afterAll(async () => {
await page.close();
});
test('should be able to delete a user', async () => {
const email = generateTestEmail();
const password = faker.internet.password();
await createUser({ page, email, password });
await expect(
page.getByRole('button', { name: `View ${email}`, exact: true }),
).toBeVisible();
await page
.getByRole('button', { name: `More options for ${email}`, exact: true })
.click();
await page.getByRole('menuitem', { name: /delete user/i }).click();
await expect(page.getByRole('dialog')).toBeVisible();
await expect(
page.getByRole('heading', { name: /delete user/i }),
).toBeVisible();
await expect(
page.getByText(`Are you sure you want to delete the "${email}" user?`),
).toBeVisible();
await page.getByRole('button', { name: /delete/i, exact: true }).click();
await expect(page.getByRole('dialog')).not.toBeVisible();
await expect(
page.getByRole('button', { name: `View ${email}`, exact: true }),
).not.toBeVisible();
});
test('should be able to delete a user from the details page', async () => {
const email = generateTestEmail();
const password = faker.internet.password();
await createUser({ page, email, password });
await page
.getByRole('button', { name: `View ${email}`, exact: true })
.click();
await page.getByRole('button', { name: /actions/i }).click();
await page.getByRole('menuitem', { name: /delete user/i }).click();
await expect(page.getByRole('dialog')).toBeVisible();
await expect(
page.getByRole('heading', { name: /delete user/i }),
).toBeVisible();
await expect(
page.getByText(`Are you sure you want to delete the "${email}" user?`),
).toBeVisible();
await page.getByRole('button', { name: /delete/i, exact: true }).click();
await expect(
page.getByRole('button', { name: `View ${email}`, exact: true }),
).not.toBeVisible();
});

View File

@@ -0,0 +1,103 @@
import {
TEST_PROJECT_NAME,
TEST_PROJECT_SLUG,
TEST_WORKSPACE_SLUG,
} from '@/e2e/env';
import { createUser, generateTestEmail, openProject } from '@/e2e/utils';
import { faker } from '@faker-js/faker';
import type { Page } from '@playwright/test';
import { expect, test } from '@playwright/test';
let page: Page;
test.beforeAll(async ({ browser }) => {
page = await browser.newPage();
});
test.beforeEach(async () => {
await page.goto('/');
await openProject({
page,
projectName: TEST_PROJECT_NAME,
workspaceSlug: TEST_WORKSPACE_SLUG,
projectSlug: TEST_PROJECT_SLUG,
});
await page
.getByRole('navigation', { name: /main navigation/i })
.getByRole('link', { name: /auth/i })
.click();
await page.waitForURL(`/${TEST_WORKSPACE_SLUG}/${TEST_PROJECT_SLUG}/users`);
});
test.afterAll(async () => {
await page.close();
});
test('should be able to verify the email of a user', async () => {
const email = generateTestEmail();
const password = faker.internet.password();
await createUser({ page, email, password });
await page
.getByRole('button', { name: `View ${email}`, exact: true })
.click();
await expect(
page.getByRole('checkbox', { name: /email verified/i }),
).not.toBeChecked();
await page.getByRole('checkbox', { name: /email verified/i }).check();
await page.getByRole('button', { name: /save/i }).click();
await expect(
page.getByText(/user settings have been updated successfully./i),
).toBeVisible();
await page
.getByRole('button', { name: `View ${email}`, exact: true })
.click();
await expect(
page.getByRole('checkbox', { name: /email verified/i }),
).toBeChecked();
});
test('should be able to verify the phone number of a user', async () => {
const email = generateTestEmail();
const password = faker.internet.password();
const phoneNumber = faker.phone.number();
await createUser({ page, email, password });
await page
.getByRole('button', { name: `View ${email}`, exact: true })
.click();
await expect(
page.getByRole('checkbox', { name: /phone number verified/i }),
).toBeDisabled();
await page.getByRole('textbox', { name: /phone number/i }).fill(phoneNumber);
await page.getByRole('checkbox', { name: /phone number verified/i }).check();
await page.getByRole('button', { name: /save/i }).click();
await expect(
page.getByText(/user settings have been updated successfully./i),
).toBeVisible();
await page
.getByRole('button', { name: `View ${email}`, exact: true })
.click();
await expect(
page.getByRole('textbox', { name: /phone number/i }),
).toHaveValue(phoneNumber);
await expect(
page.getByRole('checkbox', { name: /phone number verified/i }),
).toBeChecked();
});

View File

@@ -0,0 +1,280 @@
import {
TEST_PROJECT_NAME,
TEST_PROJECT_SLUG,
TEST_WORKSPACE_SLUG,
} from '@/e2e/env';
import { openProject, prepareTable } from '@/e2e/utils';
import { faker } from '@faker-js/faker';
import type { Page } from '@playwright/test';
import { expect, test } from '@playwright/test';
import { snakeCase } from 'snake-case';
let page: Page;
test.beforeAll(async ({ browser }) => {
page = await browser.newPage();
});
test.beforeEach(async () => {
await page.goto('/');
await openProject({
page,
projectName: TEST_PROJECT_NAME,
workspaceSlug: TEST_WORKSPACE_SLUG,
projectSlug: TEST_PROJECT_SLUG,
});
await page
.getByRole('navigation', { name: /main navigation/i })
.getByRole('link', { name: /database/i })
.click();
});
test.afterAll(async () => {
await page.close();
});
test('should create a simple table', async () => {
await page.getByRole('button', { name: /new table/i }).click();
await expect(page.getByText(/create a new table/i)).toBeVisible();
const tableName = snakeCase(faker.lorem.words(3));
await prepareTable({
page,
name: tableName,
primaryKey: 'id',
columns: [
{ name: 'id', type: 'uuid', defaultValue: 'gen_random_uuid()' },
{ name: 'title', type: 'text' },
],
});
// create table
await page.getByRole('button', { name: /create/i }).click();
await page.waitForURL(
`/${TEST_WORKSPACE_SLUG}/${TEST_PROJECT_SLUG}/database/browser/default/public/${tableName}`,
);
await expect(
page.getByRole('link', { name: tableName, exact: true }),
).toBeVisible();
});
test('should create a table with unique constraints', async () => {
await page.getByRole('button', { name: /new table/i }).click();
await expect(page.getByText(/create a new table/i)).toBeVisible();
const tableName = snakeCase(faker.lorem.words(3));
await prepareTable({
page,
name: tableName,
primaryKey: 'id',
columns: [
{ name: 'id', type: 'uuid', defaultValue: 'gen_random_uuid()' },
{ name: 'title', type: 'text', unique: true },
{ name: 'isbn', type: 'text', unique: true },
],
});
// create table
await page.getByRole('button', { name: /create/i }).click();
await page.waitForURL(
`/${TEST_WORKSPACE_SLUG}/${TEST_PROJECT_SLUG}/database/browser/default/public/${tableName}`,
);
await expect(
page.getByRole('link', { name: tableName, exact: true }),
).toBeVisible();
});
test('should create a table with nullable columns', async () => {
await page.getByRole('button', { name: /new table/i }).click();
await expect(page.getByText(/create a new table/i)).toBeVisible();
const tableName = snakeCase(faker.lorem.words(3));
await prepareTable({
page,
name: tableName,
primaryKey: 'id',
columns: [
{ name: 'id', type: 'uuid', defaultValue: 'gen_random_uuid()' },
{ name: 'title', type: 'text', nullable: true },
{ name: 'description', type: 'text', nullable: true },
],
});
// create table
await page.getByRole('button', { name: /create/i }).click();
await page.waitForURL(
`/${TEST_WORKSPACE_SLUG}/${TEST_PROJECT_SLUG}/database/browser/default/public/${tableName}`,
);
await expect(
page.getByRole('link', { name: tableName, exact: true }),
).toBeVisible();
});
test('should create a table with an identity column', async () => {
await page.getByRole('button', { name: /new table/i }).click();
await expect(page.getByText(/create a new table/i)).toBeVisible();
const tableName = snakeCase(faker.lorem.words(3));
await prepareTable({
page,
name: tableName,
primaryKey: 'id',
columns: [
{ name: 'id', type: 'int4' },
{ name: 'title', type: 'text', nullable: true },
{ name: 'description', type: 'text', nullable: true },
],
});
await page.getByRole('button', { name: /identity/i }).click();
await page.getByRole('option', { name: /id/i }).click();
// create table
await page.getByRole('button', { name: /create/i }).click();
await page.waitForURL(
`/${TEST_WORKSPACE_SLUG}/${TEST_PROJECT_SLUG}/database/browser/default/public/${tableName}`,
);
await expect(
page.getByRole('link', { name: tableName, exact: true }),
).toBeVisible();
});
test('should create table with foreign key constraint', async () => {
await page.getByRole('button', { name: /new table/i }).click();
await expect(page.getByText(/create a new table/i)).toBeVisible();
const firstTableName = snakeCase(faker.lorem.words(3));
await prepareTable({
page,
name: firstTableName,
primaryKey: 'id',
columns: [
{ name: 'id', type: 'uuid', defaultValue: 'gen_random_uuid()' },
{ name: 'name', type: 'text' },
],
});
// create table
await page.getByRole('button', { name: /create/i }).click();
await page.waitForURL(
`/${TEST_WORKSPACE_SLUG}/${TEST_PROJECT_SLUG}/database/browser/default/public/${firstTableName}`,
);
await page.getByRole('button', { name: /new table/i }).click();
await expect(page.getByText(/create a new table/i)).toBeVisible();
const secondTableName = snakeCase(faker.lorem.words(3));
await prepareTable({
page,
name: secondTableName,
primaryKey: 'id',
columns: [
{ name: 'id', type: 'uuid', defaultValue: 'gen_random_uuid()' },
{ name: 'title', type: 'text' },
{ name: 'author_id', type: 'uuid' },
],
});
await page.getByRole('button', { name: /add foreign key/i }).click();
// select column in current table
await page
.getByRole('button', { name: /column/i })
.first()
.click();
await page.getByRole('option', { name: /author_id/i }).click();
// select reference schema
await page.getByRole('button', { name: /schema/i }).click();
await page.getByRole('option', { name: /public/i }).click();
// select reference table
await page.getByRole('button', { name: /table/i }).click();
await page.getByRole('option', { name: firstTableName, exact: true }).click();
// select reference column
await page
.getByRole('button', { name: /column/i })
.nth(1)
.click();
await page.getByRole('option', { name: /id/i }).click();
await page.getByRole('button', { name: /add/i }).click();
await expect(
page.getByText(`public.${firstTableName}.id`, { exact: true }),
).toBeVisible();
// create table
await page.getByRole('button', { name: /create/i }).click();
await page.waitForURL(
`/${TEST_WORKSPACE_SLUG}/${TEST_PROJECT_SLUG}/database/browser/default/public/${secondTableName}`,
);
await expect(
page.getByRole('link', { name: secondTableName, exact: true }),
).toBeVisible();
});
test('should not be able to create a table with a name that already exists', async () => {
await page.getByRole('button', { name: /new table/i }).click();
await expect(page.getByText(/create a new table/i)).toBeVisible();
const tableName = snakeCase(faker.lorem.words(3));
await prepareTable({
page,
name: tableName,
primaryKey: 'id',
columns: [
{ name: 'id', type: 'uuid', defaultValue: 'gen_random_uuid()' },
{ name: 'name', type: 'text' },
],
});
// create table
await page.getByRole('button', { name: /create/i }).click();
await page.waitForURL(
`/${TEST_WORKSPACE_SLUG}/${TEST_PROJECT_SLUG}/database/browser/default/public/${tableName}`,
);
await page.getByRole('button', { name: /new table/i }).click();
await expect(page.getByText(/create a new table/i)).toBeVisible();
await prepareTable({
page,
name: tableName,
primaryKey: 'id',
columns: [
{ name: 'id', type: 'uuid', defaultValue: 'gen_random_uuid()' },
{ name: 'title', type: 'text' },
{ name: 'author_id', type: 'uuid' },
],
});
// create table
await page.getByRole('button', { name: /create/i }).click();
await expect(
page.getByText(/error: a table with this name already exists/i),
).toBeVisible();
});

View File

@@ -0,0 +1,165 @@
import {
TEST_PROJECT_NAME,
TEST_PROJECT_SLUG,
TEST_WORKSPACE_SLUG,
} from '@/e2e/env';
import { deleteTable, openProject, prepareTable } from '@/e2e/utils';
import { faker } from '@faker-js/faker';
import type { Page } from '@playwright/test';
import { expect, test } from '@playwright/test';
import { snakeCase } from 'snake-case';
let page: Page;
test.beforeAll(async ({ browser }) => {
page = await browser.newPage();
});
test.beforeEach(async () => {
await page.goto('/');
await openProject({
page,
projectName: TEST_PROJECT_NAME,
workspaceSlug: TEST_WORKSPACE_SLUG,
projectSlug: TEST_PROJECT_SLUG,
});
await page
.getByRole('navigation', { name: /main navigation/i })
.getByRole('link', { name: /database/i })
.click();
});
test.afterAll(async () => {
await page.close();
});
test('should delete a table', async () => {
const tableName = snakeCase(faker.lorem.words(3));
await page.getByRole('button', { name: /new table/i }).click();
await prepareTable({
page,
name: tableName,
primaryKey: 'id',
columns: [
{ name: 'id', type: 'uuid', defaultValue: 'gen_random_uuid()' },
{ name: 'title', type: 'text' },
],
});
await page.getByRole('button', { name: /create/i }).click();
await page.waitForURL(
`/${TEST_WORKSPACE_SLUG}/${TEST_PROJECT_SLUG}/database/browser/default/public/${tableName}`,
);
await deleteTable({
page,
name: tableName,
});
// navigate to next URL
await page.waitForURL(
`/${TEST_WORKSPACE_SLUG}/${TEST_PROJECT_SLUG}/database/browser/default/public/**`,
);
await expect(
page.getByRole('link', { name: tableName, exact: true }),
).not.toBeVisible();
});
test('should not be able to delete a table if other tables have foreign keys referencing it', async () => {
await page.getByRole('button', { name: /new table/i }).click();
await expect(page.getByText(/create a new table/i)).toBeVisible();
const firstTableName = snakeCase(faker.lorem.words(3));
await prepareTable({
page,
name: firstTableName,
primaryKey: 'id',
columns: [
{ name: 'id', type: 'uuid', defaultValue: 'gen_random_uuid()' },
{ name: 'name', type: 'text' },
],
});
// create table
await page.getByRole('button', { name: /create/i }).click();
await page.waitForURL(
`/${TEST_WORKSPACE_SLUG}/${TEST_PROJECT_SLUG}/database/browser/default/public/${firstTableName}`,
);
await page.getByRole('button', { name: /new table/i }).click();
await expect(page.getByText(/create a new table/i)).toBeVisible();
const secondTableName = snakeCase(faker.lorem.words(3));
await prepareTable({
page,
name: secondTableName,
primaryKey: 'id',
columns: [
{ name: 'id', type: 'uuid', defaultValue: 'gen_random_uuid()' },
{ name: 'title', type: 'text' },
{ name: 'author_id', type: 'uuid' },
],
});
await page.getByRole('button', { name: /add foreign key/i }).click();
// select column in current table
await page
.getByRole('button', { name: /column/i })
.first()
.click();
await page.getByRole('option', { name: /author_id/i }).click();
// select reference schema
await page.getByRole('button', { name: /schema/i }).click();
await page.getByRole('option', { name: /public/i }).click();
// select reference table
await page.getByRole('button', { name: /table/i }).click();
await page.getByRole('option', { name: firstTableName, exact: true }).click();
// select reference column
await page
.getByRole('button', { name: /column/i })
.nth(1)
.click();
await page.getByRole('option', { name: /id/i }).click();
await page.getByRole('button', { name: /add/i }).click();
await expect(
page.getByText(`public.${firstTableName}.id`, { exact: true }),
).toBeVisible();
// create table
await page.getByRole('button', { name: /create/i }).click();
await page.waitForURL(
`/${TEST_WORKSPACE_SLUG}/${TEST_PROJECT_SLUG}/database/browser/default/public/${secondTableName}`,
);
await expect(
page.getByRole('link', { name: secondTableName, exact: true }),
).toBeVisible();
// try to delete the first table that is referenced by the second table
await deleteTable({
page,
name: firstTableName,
});
await expect(
page.getByText(
/constraint [a-zA-Z_]+ on table [a-zA-Z_]+ depends on table [a-zA-Z_]+/i,
),
).toBeVisible();
});

48
dashboard/e2e/env.ts Normal file
View File

@@ -0,0 +1,48 @@
import slugify from 'slugify';
/**
* URL of the dashboard to test against.
*/
export const TEST_DASHBOARD_URL = process.env.NHOST_TEST_DASHBOARD_URL;
/**
* Name of the workspace to test against.
*/
export const TEST_WORKSPACE_NAME = process.env.NHOST_TEST_WORKSPACE_NAME;
/**
* Slugified name of the workspace to test against.
*/
export const TEST_WORKSPACE_SLUG = slugify(TEST_WORKSPACE_NAME, {
lower: true,
strict: true,
});
/**
* Name of the project to test against.
*/
export const TEST_PROJECT_NAME = process.env.NHOST_TEST_PROJECT_NAME;
/**
* Slugified name of the project to test against.
*/
export const TEST_PROJECT_SLUG = slugify(TEST_PROJECT_NAME, {
lower: true,
strict: true,
});
/**
* Hasura admin secret of the test project to use.
*/
export const TEST_PROJECT_ADMIN_SECRET =
process.env.NHOST_TEST_PROJECT_ADMIN_SECRET;
/**
* Email of the test account to use.
*/
export const TEST_USER_EMAIL = process.env.NHOST_TEST_USER_EMAIL;
/**
* Password of the test account to use.
*/
export const TEST_USER_PASSWORD = process.env.NHOST_TEST_USER_PASSWORD;

View File

@@ -0,0 +1,122 @@
import {
TEST_PROJECT_NAME,
TEST_PROJECT_SLUG,
TEST_WORKSPACE_NAME,
TEST_WORKSPACE_SLUG,
} from '@/e2e/env';
import { openProject } from '@/e2e/utils';
import type { Page } from '@playwright/test';
import { expect, test } from '@playwright/test';
let page: Page;
test.beforeAll(async ({ browser }) => {
page = await browser.newPage();
await page.goto('/');
await openProject({
page,
projectName: TEST_PROJECT_NAME,
workspaceSlug: TEST_WORKSPACE_SLUG,
projectSlug: TEST_PROJECT_SLUG,
});
});
test.afterAll(async () => {
await page.close();
});
test('should show a sidebar with menu items', async () => {
const navLocator = page.getByRole('navigation', { name: /main navigation/i });
await expect(navLocator).toBeVisible();
await expect(navLocator.getByRole('list').getByRole('listitem')).toHaveCount(
12,
);
await expect(
navLocator.getByRole('link', { name: /overview/i }),
).toBeVisible();
await expect(
navLocator.getByRole('link', { name: /database/i }),
).toBeVisible();
await expect(
navLocator.getByRole('link', { name: /graphql/i }),
).toBeVisible();
await expect(navLocator.getByRole('link', { name: /hasura/i })).toBeVisible();
await expect(navLocator.getByRole('link', { name: /auth/i })).toBeVisible();
await expect(
navLocator.getByRole('link', { name: /storage/i }),
).toBeVisible();
await expect(
navLocator.getByRole('link', { name: /deployments/i }),
).toBeVisible();
await expect(
navLocator.getByRole('link', { name: /backups/i }),
).toBeVisible();
await expect(navLocator.getByRole('link', { name: /logs/i })).toBeVisible();
await expect(
navLocator.getByRole('link', { name: /metrics/i }),
).toBeVisible();
await expect(
navLocator.getByRole('link', { name: /settings/i }),
).toBeVisible();
});
test('should show a header with a logo, the workspace name, and the project name', async () => {
await expect(
page.getByRole('banner').getByRole('link', { name: TEST_WORKSPACE_NAME }),
).toBeVisible();
await expect(
page.getByRole('banner').getByRole('link', { name: TEST_PROJECT_NAME }),
).toBeVisible();
});
test("should show the project's name, the Upgrade button and the Settings button", async () => {
await expect(
page.getByRole('heading', { name: TEST_PROJECT_NAME }),
).toBeVisible();
await expect(page.getByText(/starter/i)).toBeVisible();
await expect(page.getByRole('button', { name: /upgrade/i })).toBeVisible();
await expect(
page.getByRole('main').getByRole('link', { name: /settings/i }),
).toBeVisible();
});
test("should show the project's region and subdomain", async () => {
await expect(page.locator('p:has-text("Region") + div p').nth(0)).toHaveText(
/frankfurt \(eu-central-1\)/i,
);
await expect(
page.locator('p:has-text("Subdomain") + div p').nth(0),
).toHaveText(/[a-z]{20}/i);
});
test('should not have a GitHub repository connected', async () => {
await expect(
page.getByRole('button', { name: /connect to github/i }),
).toBeVisible();
});
test('should show metrics', async () => {
await expect(page.getByText(/cpu usage seconds\d+/i)).toBeVisible();
await expect(page.getByText(/total requests\d+/i)).toBeVisible();
await expect(page.getByText(/function invocations\d+/i)).toBeVisible();
await expect(
page.getByText(/egress volume\d+(\.\d+)? [a-zA-Z]+/i),
).toBeVisible();
await expect(page.getByText(/logs\d+(\.\d+)? [a-zA-Z]+/i)).toBeVisible();
});
test('should show proper limits for the free project', async () => {
await expect(
page.getByText(/database\d+(\.\d+)? [a-zA-Z]+ of \d+(\.\d+)? [a-zA-Z]+/i),
).toBeVisible();
await expect(
page.getByText(/storage\d+(\.\d+)? [a-zA-Z]+ of \d+(\.\d+)? [a-zA-Z]+/i),
).toBeVisible();
await expect(page.getByText(/users[0-9]+ of [0-9]+/i)).toBeVisible();
await expect(page.getByText(/functions[0-9]+ of [0-9]+/i)).toBeVisible();
});

View File

@@ -0,0 +1,20 @@
import {
TEST_DASHBOARD_URL,
TEST_USER_EMAIL,
TEST_USER_PASSWORD,
} from '@/e2e/env';
import { test as setup } from '@playwright/test';
setup('authenticate user', async ({ page }) => {
await page.goto('/');
await page.waitForURL('/signin');
await page.getByRole('link', { name: /continue with email/i }).click();
await page.waitForURL('/signin/email');
await page.getByLabel('Email').fill(TEST_USER_EMAIL);
await page.getByLabel('Password').fill(TEST_USER_PASSWORD);
await page.getByRole('button', { name: /sign in/i }).click();
await page.waitForURL(TEST_DASHBOARD_URL);
await page.context().storageState({ path: 'e2e/.auth/user.json' });
});

189
dashboard/e2e/utils.ts Normal file
View File

@@ -0,0 +1,189 @@
import { faker } from '@faker-js/faker';
import type { Page } from '@playwright/test';
/**
* Open a project by navigating to the project's overview page.
*
* @param page - The Playwright page object.
* @param workspaceSlug - The slug of the workspace that contains the project.
* @param projectSlug - The slug of the project to open.
* @param projectName - The name of the project to open.
* @returns A promise that resolves when the project is opened.
*/
export async function openProject({
page,
projectName,
workspaceSlug,
projectSlug,
}: {
page: Page;
workspaceSlug: string;
projectSlug: string;
projectName: string;
}) {
await page.getByRole('link', { name: projectName }).click();
await page.waitForURL(`/${workspaceSlug}/${projectSlug}`);
}
/**
* Prepares a table by filling out the form.
*
* @param page - The Playwright page object.
* @param name - The name of the table to create.
* @param columns - The columns to create in the table.
* @returns A promise that resolves when the table is prepared.
*/
export async function prepareTable({
page,
name: tableName,
primaryKey,
columns,
}: {
page: Page;
name: string;
primaryKey: string;
columns: Array<{
name: string;
type: string;
nullable?: boolean;
unique?: boolean;
defaultValue?: string;
}>;
}) {
if (!columns.some(({ name }) => name === primaryKey)) {
throw new Error('Primary key must be one of the columns.');
}
await page.getByRole('textbox', { name: /name/i }).first().fill(tableName);
await Promise.all(
columns.map(
async (
{ name: columnName, type, nullable, unique, defaultValue },
index,
) => {
// set name
await page.getByPlaceholder(/name/i).nth(index).fill(columnName);
// set type
await page
.getByRole('table')
.getByRole('combobox', { name: /type/i })
.nth(index)
.type(type);
await page
.getByRole('table')
.getByRole('option', { name: type })
.first()
.click();
// optionally set default value
if (defaultValue) {
await page
.getByRole('table')
.getByRole('combobox', { name: /default value/i })
.nth(index)
.type(defaultValue);
await page
.getByRole('table')
.getByRole('option', { name: defaultValue })
.first()
.click();
}
// optionally check unique
if (unique) {
await page
.getByRole('checkbox', { name: /unique/i })
.nth(index)
.check();
}
// optionally check nullable
if (nullable) {
await page
.getByRole('checkbox', { name: /nullable/i })
.nth(index)
.check();
}
// add new column if not last
if (index < columns.length - 1) {
await page.getByRole('button', { name: /add column/i }).click();
}
},
),
);
// select the first column as primary key
await page.getByRole('button', { name: /primary key/i }).click();
await page.getByRole('option', { name: primaryKey, exact: true }).click();
}
/**
* Deletes a table with the given name.
*
* @param page - The Playwright page object.
* @param name - The name of the table to delete.
* @returns A promise that resolves when the table is deleted.
*/
export async function deleteTable({
page,
name,
}: {
page: Page;
name: string;
}) {
const tableLink = page.getByRole('link', {
name,
exact: true,
});
await tableLink.hover();
await page
.getByRole('listitem')
.filter({ hasText: name })
.getByRole('button')
.click();
await page.getByRole('menuitem', { name: /delete table/i }).click();
await page.getByRole('button', { name: /delete/i }).click();
}
/**
* Creates a new user.
*
* @param page - The Playwright page object.
* @param email - The email of the user to create.
* @param password - The password of the user to create.
* @returns A promise that resolves when the user is created.
*/
export async function createUser({
page,
email,
password,
}: {
page: Page;
email: string;
password: string;
}) {
await page
.getByRole('button', { name: /create user/i })
.first()
.click();
await page.getByRole('textbox', { name: /email/i }).fill(email);
await page.getByRole('textbox', { name: /password/i }).fill(password);
await page.getByRole('button', { name: /create/i, exact: true }).click();
}
/**
* Generates a test email address with the given prefix (if provided).
*
* @param prefix - The prefix to use for the email address. (Default: `Nhost_Test_`)
*/
export function generateTestEmail(prefix: string = 'Nhost_Test_') {
const email = faker.internet.email();
return [prefix, email].join('');
}

View File

@@ -0,0 +1,71 @@
import {
TEST_DASHBOARD_URL,
TEST_PROJECT_ADMIN_SECRET,
TEST_PROJECT_NAME,
TEST_PROJECT_SLUG,
TEST_WORKSPACE_SLUG,
} from '@/e2e/env';
import { openProject } from '@/e2e/utils';
import { chromium } from '@playwright/test';
async function globalTeardown() {
const browser = await chromium.launch({ slowMo: 1000 });
const context = await browser.newContext({
baseURL: TEST_DASHBOARD_URL,
storageState: 'e2e/.auth/user.json',
});
const page = await context.newPage();
await page.goto('/');
await openProject({
page,
projectName: TEST_PROJECT_NAME,
workspaceSlug: TEST_WORKSPACE_SLUG,
projectSlug: TEST_PROJECT_SLUG,
});
const pagePromise = context.waitForEvent('page');
await page.getByRole('link', { name: /hasura/i }).click();
await page.getByRole('link', { name: /open hasura/i }).click();
const hasuraPage = await pagePromise;
await hasuraPage.waitForLoadState();
const adminSecretInput = hasuraPage.getByPlaceholder(/enter admin-secret/i);
// note: a more ideal way would be to paste from clipboard, but Playwright
// doesn't support that yet
await adminSecretInput.fill(TEST_PROJECT_ADMIN_SECRET);
await adminSecretInput.press('Enter');
// note: getByRole doesn't work here
await hasuraPage.locator('a', { hasText: /data/i }).click();
await hasuraPage.getByRole('link', { name: /sql/i }).click();
// Set the value of the Ace code editor using JavaScript evaluation in the browser context
await hasuraPage.evaluate(() => {
const editor = ace.edit('raw_sql');
editor.setValue(`
DO $$ DECLARE
tablename text;
BEGIN
FOR tablename IN
SELECT table_name FROM information_schema.tables
WHERE table_schema = 'public'
LOOP
EXECUTE 'DROP TABLE IF EXISTS public.' || quote_ident(tablename) || ' CASCADE';
END LOOP;
END $$;
`);
});
await hasuraPage.getByRole('button', { name: /run!/i }).click();
await hasuraPage.getByText(/sql executed!/i).waitFor();
}
export default globalTeardown;

View File

@@ -1,5 +1,5 @@
schema:
- http://localhost:1337/v1/graphql:
- https://local.graphql.nhost.run/v1:
headers:
x-hasura-admin-secret: nhost-admin-secret
generates:

View File

@@ -0,0 +1,5 @@
query InitQuery {
root {
enableServices
}
}

5
dashboard/hypertune.json Normal file
View File

@@ -0,0 +1,5 @@
{
"projectId": 2596,
"token": "U2FsdGVkX19+V8BJnVR0xLEC+42OW5qZl/A0i6beAaRmJoIhFh5Yf6eIKBzLbV9h",
"outputDirectoryPath": "src/hypertune"
}

View File

@@ -1,6 +1,6 @@
{
"name": "@nhost/dashboard",
"version": "0.13.0",
"version": "0.20.25",
"private": true,
"scripts": {
"preinstall": "npx only-allow pnpm",
@@ -8,28 +8,29 @@
"build": "next build --no-lint",
"analyze": "ANALYZE=true pnpm build --no-lint",
"start": "next start",
"lint": "next lint --max-warnings 2",
"lint": "next lint --max-warnings 0",
"test": "vitest",
"codegen": "graphql-codegen --config graphql.config.yaml --errors-only",
"nhost:dev": "nhost dev -d",
"format": "prettier --write \"src/**/*.{js,ts,tsx,jsx,json,md}\" --plugin-search-dir=.",
"storybook": "start-storybook -p 6006 -s public",
"build-storybook": "build-storybook"
"build-storybook": "build-storybook",
"install-browsers": "pnpm dlx playwright@1.31.0 install --with-deps",
"e2e": "pnpm install-browsers && pnpm dlx playwright@1.31.0 test"
},
"dependencies": {
"@apollo/client": "^3.7.3",
"@apollo/client": "^3.7.10",
"@codemirror/language": "^6.3.0",
"@emotion/cache": "^11.10.5",
"@emotion/react": "^11.10.5",
"@emotion/server": "^11.4.0",
"@emotion/styled": "^11.10.5",
"@fontsource/inter": "^4.5.14",
"@fontsource/roboto-mono": "^4.5.8",
"@graphiql/react": "^0.15.0",
"@graphiql/toolkit": "^0.8.0",
"@fontsource/inter": "^5.0.0",
"@fontsource/roboto-mono": "^5.0.0",
"@graphiql/react": "^0.18.0",
"@graphiql/toolkit": "^0.8.2",
"@headlessui/react": "^1.6.5",
"@heroicons/react": "^1.0.6",
"@hookform/resolvers": "^2.9.10",
"@hookform/resolvers": "^3.0.0",
"@mui/base": "^5.0.0-alpha.106",
"@mui/material": "^5.10.14",
"@mui/system": "^5.10.14",
@@ -37,7 +38,7 @@
"@nhost/nextjs": "workspace:*",
"@nhost/react-apollo": "workspace:*",
"@segment/snippet": "^4.15.3",
"@stripe/react-stripe-js": "^1.10.0",
"@stripe/react-stripe-js": "^2.0.0",
"@stripe/stripe-js": "^1.35.0",
"@tailwindcss/forms": "^0.5.3",
"@tanstack/react-query": "^4.16.1",
@@ -48,45 +49,48 @@
"clsx": "^1.2.1",
"date-fns": "^2.29.3",
"generate-password": "^1.7.0",
"graphiql": "^2.2.0",
"graphiql": "^3.0.0",
"graphql": "^16.6.0",
"graphql-request": "^4.3.0",
"graphql-request": "^6.0.0",
"graphql-tag": "^2.12.6",
"graphql-ws": "^5.11.2",
"hypertune": "^1.4.4",
"just-kebab-case": "^4.1.1",
"lodash.debounce": "^4.0.8",
"next": "^12.3.1",
"next-seo": "^5.14.1",
"next-seo": "^6.0.0",
"node-pg-format": "^1.3.5",
"pluralize": "^8.0.0",
"prettysize": "^2.0.0",
"react": "18.2.0",
"react-dom": "18.2.0",
"react-error-boundary": "^3.1.4",
"react-error-boundary": "^4.0.0",
"react-hook-form": "^7.42.1",
"react-hot-toast": "^2.4.0",
"react-intersection-observer": "^9.5.2",
"react-is": "18.2.0",
"react-loading-skeleton": "^2.2.0",
"react-merge-refs": "^1.1.0",
"react-syntax-highlighter": "^15.4.5",
"react-table": "^7.8.0",
"sharp": "^0.31.2",
"sharp": "^0.32.0",
"shell-quote": "^1.8.1",
"slugify": "^1.6.5",
"stripe": "^10.17.0",
"tailwind-merge": "^1.8.0",
"utility-types": "^3.10.0",
"validator": "^13.7.0",
"yup": "^0.32.11",
"yup": "^1.0.2",
"yup-password": "^0.2.2"
},
"devDependencies": {
"@babel/core": "^7.20.2",
"@faker-js/faker": "^7.6.0",
"@graphql-codegen/cli": "^3.0.0",
"@graphql-codegen/typescript": "^3.0.0",
"@graphql-codegen/typescript-graphql-request": "^4.5.1",
"@graphql-codegen/typescript-operations": "^3.0.0",
"@graphql-codegen/typescript-react-apollo": "^3.3.1",
"@next/bundle-analyzer": "^12.3.1",
"@playwright/test": "1.31.0",
"@storybook/addon-actions": "^6.5.14",
"@storybook/addon-essentials": "^6.5.14",
"@storybook/addon-interactions": "^6.5.14",
@@ -95,27 +99,32 @@
"@storybook/builder-webpack5": "^6.5.14",
"@storybook/manager-webpack5": "^6.5.14",
"@storybook/react": "^6.5.14",
"@storybook/testing-library": "^0.0.13",
"@storybook/testing-library": "^0.2.0",
"@testing-library/dom": "^9.0.0",
"@testing-library/jest-dom": "^5.16.5",
"@testing-library/react": "^14.0.0",
"@testing-library/user-event": "^14.4.3",
"@types/ace": "^0.0.48",
"@types/bcryptjs": "^2.4.2",
"@types/jest": "^29.5.3",
"@types/lodash.debounce": "^4.0.7",
"@types/node": "^16.11.7",
"@types/pluralize": "^0.0.29",
"@types/react": "18.0.28",
"@types/react-dom": "18.0.11",
"@types/pluralize": "^0.0.30",
"@types/react": "^18.2.14",
"@types/react-dom": "^18.2.6",
"@types/react-table": "^7.7.12",
"@types/shell-quote": "^1.7.1",
"@types/testing-library__jest-dom": "^5.14.5",
"@types/validator": "^13.7.10",
"@typescript-eslint/eslint-plugin": "^5.43.0",
"@typescript-eslint/parser": "^5.43.0",
"@vitejs/plugin-react": "^3.0.0",
"@vitest/coverage-c8": "^0.29.0",
"@vitejs/plugin-react": "^4.0.0",
"@vitest/coverage-v8": "^0.32.0",
"autoprefixer": "^10.4.13",
"babel-loader": "^8.3.0",
"babel-plugin-transform-remove-console": "^6.9.4",
"csstype": "^3.0.10",
"dotenv": "^16.0.3",
"encoding": "^0.1.13",
"eslint": "^8.28.0",
"eslint-config-airbnb": "19.0.4",
@@ -126,7 +135,7 @@
"eslint-plugin-jsx-a11y": "^6.6.1",
"eslint-plugin-react": "^7.31.11",
"eslint-plugin-react-hooks": "^4.6.0",
"jsdom": "^21.0.0",
"jsdom": "^22.0.0",
"lint-staged": ">=13",
"msw": "^1.0.1",
"msw-storybook-addon": "^1.6.3",
@@ -134,17 +143,17 @@
"postcss": "^8.4.19",
"prettier": "^2.7.1",
"prettier-plugin-organize-imports": "^3.2.0",
"prettier-plugin-tailwindcss": "^0.2.0",
"prettier-plugin-tailwindcss": "^0.4.0",
"react-date-fns-hooks": "^0.9.4",
"require-from-string": "^2.0.2",
"snake-case": "^3.0.4",
"storybook-addon-next-router": "^4.0.1",
"tailwindcss": "^3.1.2",
"ts-node": "^10.9.1",
"tsconfig-paths-webpack-plugin": "^4.0.0",
"vite": "^4.0.2",
"vite-tsconfig-paths": "^4.0.3",
"vitest": "^0.29.0",
"webpack": "^5.75.0"
"vitest": "^0.32.0"
},
"browserslist": {
"production": [
@@ -161,4 +170,4 @@
"msw": {
"workerDirectory": "public"
}
}
}

View File

@@ -0,0 +1,38 @@
import { defineConfig, devices } from '@playwright/test';
import dotenv from 'dotenv';
import path from 'path';
dotenv.config({ path: path.resolve(__dirname, '.env.test') });
export default defineConfig({
testDir: './e2e',
timeout: 30 * 1000,
expect: {
timeout: 5000,
},
fullyParallel: true,
forbidOnly: !!process.env.CI,
retries: process.env.CI ? 2 : 0,
workers: process.env.CI ? 1 : undefined,
reporter: 'html',
globalTeardown: require.resolve('./global-teardown'),
use: {
actionTimeout: 0,
trace: 'on-first-retry',
baseURL: process.env.NHOST_TEST_DASHBOARD_URL,
},
projects: [
{
name: 'setup',
testMatch: ['**/setup/*.setup.ts'],
},
{
name: 'chromium',
use: {
...devices['Desktop Chrome'],
storageState: 'e2e/.auth/user.json',
},
dependencies: ['setup'],
},
],
});

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none"><path fill="#2684FF" fill-rule="evenodd" d="M3.41 4.393a.563.563 0 0 1 .434-.195l16.416.003a.562.562 0 0 1 .563.652l-2.388 14.66a.562.562 0 0 1-.563.472H6.417a.765.765 0 0 1-.748-.639L3.281 4.851a.562.562 0 0 1 .13-.458Zm6.832 10.282h3.656l.886-5.173H9.252l.99 5.173Z" clip-rule="evenodd"/><path fill="url(#a)" d="M20.063 9.502h-5.279l-.886 5.173h-3.656l-4.317 5.124a.762.762 0 0 0 .492.186h11.458a.562.562 0 0 0 .563-.473l1.625-10.01Z"/><defs><linearGradient id="a" x1="16.692" x2="10.594" y1="7.717" y2="16.375" gradientUnits="userSpaceOnUse"><stop offset=".18" stop-color="#0052CC"/><stop offset="1" stop-color="#2684FF"/></linearGradient></defs></svg>

After

Width:  |  Height:  |  Size: 730 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none"><path fill="#E24329" fill-rule="evenodd" d="m12 19.996 3.223-9.917H8.777L12 19.995Z" clip-rule="evenodd"/><path fill="#FC6D26" fill-rule="evenodd" d="m12 19.996-3.223-9.917H4.261L12 19.996Z" clip-rule="evenodd"/><path fill="#FCA326" fill-rule="evenodd" d="m4.262 10.079-.98 3.013a.667.667 0 0 0 .243.746L12 19.996l-7.738-9.917Z" clip-rule="evenodd"/><path fill="#E24329" fill-rule="evenodd" d="M4.261 10.079h4.517L6.837 4.106a.333.333 0 0 0-.635 0l-1.94 5.973Z" clip-rule="evenodd"/><path fill="#FC6D26" fill-rule="evenodd" d="m12 19.996 3.222-9.917h4.516L12 19.996Z" clip-rule="evenodd"/><path fill="#FCA326" fill-rule="evenodd" d="m19.738 10.079.98 3.013a.667.667 0 0 1-.243.746L12 19.996l7.738-9.917Z" clip-rule="evenodd"/><path fill="#E24329" fill-rule="evenodd" d="M19.739 10.079h-4.517l1.941-5.973a.334.334 0 0 1 .635 0l1.94 5.973Z" clip-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 941 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none"><path fill="#FE7203" d="M4.125 5.25c0-.621.504-1.125 1.125-1.125h13.5c.621 0 1.125.504 1.125 1.125v13.5c0 .621-.504 1.125-1.125 1.125H5.25a1.125 1.125 0 0 1-1.125-1.125V5.25Z"/><path fill="url(#a)" d="M4.125 5.25c0-.621.504-1.125 1.125-1.125h13.5c.621 0 1.125.504 1.125 1.125v13.5c0 .621-.504 1.125-1.125 1.125H5.25a1.125 1.125 0 0 1-1.125-1.125V5.25Z"/><path fill="#fff" fill-rule="evenodd" d="m10.917 12.787 2.461 4.43 2.363-4.43h-1.477l-.886 1.674-.984-1.674h-1.477Z" clip-rule="evenodd" opacity=".6"/><path fill="#fff" fill-rule="evenodd" d="m11.213 6.586 3.051 6.201H8.063l3.15-6.201Zm0 3.74 1.18 2.461h-2.46l1.28-2.46Z" clip-rule="evenodd"/><defs><linearGradient id="a" x1="12" x2="12" y1="4.125" y2="19.875" gradientUnits="userSpaceOnUse"><stop stop-color="#FB2F01" stop-opacity="0"/><stop offset="1" stop-color="#FB2F01"/></linearGradient></defs></svg>

After

Width:  |  Height:  |  Size: 935 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.3 KiB

View File

@@ -1,25 +1 @@
<svg width="72" height="72" viewBox="0 0 72 72" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0 8C0 3.58172 3.58172 0 8 0H64C68.4183 0 72 3.58172 72 8V64C72 68.4183 68.4183 72 64 72H8C3.58172 72 0 68.4183 0 64V8Z" fill="#1EB4D4"/>
<path d="M0 8C0 3.58172 3.58172 0 8 0H64C68.4183 0 72 3.58172 72 8V64C72 68.4183 68.4183 72 64 72H8C3.58172 72 0 68.4183 0 64V8Z" fill="url(#paint0_linear_1_85)" fill-opacity="0.2"/>
<g filter="url(#filter0_d_1_85)">
<circle cx="36" cy="39" r="16" fill="#35BCD8"/>
</g>
<path fill-rule="evenodd" clip-rule="evenodd" d="M51.3994 17.2212C52.831 21.3475 52.831 26.737 51.7362 29.3896C51.1889 30.6948 51.1467 32.2106 51.5678 33.558C52.1152 35.2001 52.4099 36.9264 52.4099 38.7791C52.4099 48.0001 44.9573 55.3685 35.7783 55.2001C27.0625 55.0738 19.6941 47.6633 19.4836 38.9896C19.4415 37.0948 19.7362 35.2001 20.3257 33.5159C20.7889 32.1685 20.7889 30.6948 20.2415 29.3896C19.1889 26.7791 19.1467 21.3896 20.5783 17.1791C20.9152 16.4212 22.0941 16.6738 22.0941 17.4738V17.7685C22.3467 21.7685 23.8625 24.1685 26.052 24.9685C26.3889 25.137 26.8099 25.0948 27.1467 24.8843C29.7152 23.3264 32.7046 22.358 35.9467 22.358C39.1889 22.358 42.2204 23.2843 44.7467 24.8843C45.1257 25.137 45.6731 25.137 46.0099 24.9685C48.1573 23.9159 49.5889 21.7685 49.8415 17.8106V17.5159C49.8836 16.7159 51.0204 16.4633 51.3994 17.2212ZM36.1994 26.2738C29.1257 26.1054 23.3152 31.9159 23.4836 39.0317C23.5678 45.7264 29.0836 51.158 35.7362 51.3264C42.852 51.4106 48.6204 45.6422 48.4941 38.5685C48.3678 31.8738 42.8941 26.358 36.1994 26.2738ZM34.9362 32.8844L37.8836 37.4318L40.7468 41.9792C40.9152 42.2318 40.9994 42.5265 40.9994 42.8213C40.9994 43.3686 40.7047 43.8739 40.2415 44.1686C39.6941 44.5055 38.9783 44.5055 38.431 44.1265C38.2204 44.0002 38.052 43.8739 37.9678 43.6634L36.3257 41.3055C36.1994 41.0528 35.9047 41.0528 35.6941 41.2634L33.3783 43.9581C33.0836 44.2528 32.7047 44.4634 32.2415 44.4634C31.8626 44.4634 31.4415 44.3371 31.1468 44.0844C30.5152 43.495 30.4731 42.4844 31.0626 41.8528L34.1783 38.4423C34.3047 38.2318 34.3889 37.9371 34.2204 37.6844L32.2415 34.5686C32.0731 34.316 31.9889 34.0213 31.9889 33.7265C31.9889 33.1792 32.2836 32.6739 32.7468 32.3792C33.5047 31.916 34.4731 32.1265 34.9362 32.8844Z" fill="white"/>
<defs>
<filter id="filter0_d_1_85" x="17" y="23" width="38" height="41" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feMorphology radius="4" operator="erode" in="SourceAlpha" result="effect1_dropShadow_1_85"/>
<feOffset dy="6"/>
<feGaussianBlur stdDeviation="3.5"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0.231373 0 0 0 0 0.278431 0 0 0 0.25 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_1_85"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_1_85" result="shape"/>
</filter>
<linearGradient id="paint0_linear_1_85" x1="0" y1="0" x2="72" y2="72" gradientUnits="userSpaceOnUse">
<stop stop-color="white"/>
<stop offset="1" stop-color="white" stop-opacity="0"/>
</linearGradient>
</defs>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="72" height="72" fill="none"><path fill="#1EB4D4" d="M0 8a8 8 0 0 1 8-8h56a8 8 0 0 1 8 8v56a8 8 0 0 1-8 8H8a8 8 0 0 1-8-8V8Z"/><path fill="url(#a)" fill-opacity=".2" d="M0 8a8 8 0 0 1 8-8h56a8 8 0 0 1 8 8v56a8 8 0 0 1-8 8H8a8 8 0 0 1-8-8V8Z"/><g filter="url(#b)"><circle cx="36" cy="39" r="16" fill="#35BCD8"/></g><path fill="#fff" fill-rule="evenodd" d="M51.4 17.221c1.431 4.127 1.431 9.516.336 12.169-.547 1.305-.59 2.82-.168 4.168.547 1.642.842 3.368.842 5.221 0 9.221-7.453 16.59-16.632 16.421-8.715-.126-16.084-7.537-16.294-16.21-.043-1.895.252-3.79.842-5.474.463-1.347.463-2.821-.085-4.126-1.052-2.61-1.094-8 .337-12.21.337-.759 1.516-.506 1.516.294v.294c.253 4 1.768 6.4 3.958 7.2.337.169.758.127 1.095-.084 2.568-1.558 5.558-2.526 8.8-2.526 3.242 0 6.273.926 8.8 2.526.379.253.926.253 1.263.084 2.147-1.052 3.579-3.2 3.832-7.157v-.295c.042-.8 1.178-1.053 1.557-.295Zm-15.2 9.053c-7.074-.169-12.885 5.642-12.716 12.758.084 6.694 5.6 12.126 12.252 12.294 7.116.085 12.884-5.684 12.758-12.758-.126-6.694-5.6-12.21-12.295-12.294Zm-1.264 6.61 2.948 4.548 2.863 4.547c.168.253.252.547.252.842 0 .548-.294 1.053-.758 1.348a1.662 1.662 0 0 1-1.81-.042c-.21-.127-.379-.253-.463-.464l-1.642-2.357c-.127-.253-.421-.253-.632-.043l-2.316 2.695c-.294.295-.673.505-1.136.505-.38 0-.8-.126-1.095-.379a1.59 1.59 0 0 1-.084-2.231l3.115-3.41c.127-.211.21-.506.042-.759l-1.978-3.115a1.518 1.518 0 0 1-.253-.843c0-.547.295-1.052.758-1.347.758-.463 1.726-.252 2.19.505Z" clip-rule="evenodd"/><defs><linearGradient id="a" x1="0" x2="72" y1="0" y2="72" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><filter id="b" width="38" height="41" x="17" y="23" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" result="hardAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feMorphology in="SourceAlpha" radius="4" result="effect1_dropShadow_1_85"/><feOffset dy="6"/><feGaussianBlur stdDeviation="3.5"/><feComposite in2="hardAlpha" operator="out"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0.231373 0 0 0 0 0.278431 0 0 0 0.25 0"/><feBlend in2="BackgroundImageFix" result="effect1_dropShadow_1_85"/><feBlend in="SourceGraphic" in2="effect1_dropShadow_1_85" result="shape"/></filter></defs></svg>

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -1,94 +0,0 @@
import MaintenanceAlert from '@/components/common/MaintenanceAlert';
import RetryableErrorBoundary from '@/components/common/RetryableErrorBoundary';
import Container from '@/components/layout/Container';
import { features } from '@/components/overview/features';
import { frameworks } from '@/components/overview/frameworks';
import OverviewDeployments from '@/components/overview/OverviewDeployments';
import OverviewDocumentation from '@/components/overview/OverviewDocumentation';
import OverviewMigration from '@/components/overview/OverviewMigration';
import OverviewProjectInfo from '@/components/overview/OverviewProjectInfo';
import OverviewRepository from '@/components/overview/OverviewRepository';
import OverviewTopBar from '@/components/overview/OverviewTopBar';
import OverviewUsage from '@/components/overview/OverviewUsage';
import useIsPlatform from '@/hooks/common/useIsPlatform';
import { useCurrentWorkspaceAndApplication } from '@/hooks/useCurrentWorkspaceAndApplication';
import Divider from '@/ui/v2/Divider';
export default function ApplicationLive() {
const isPlatform = useIsPlatform();
const { currentApplication } = useCurrentWorkspaceAndApplication();
const isProjectUsingRDS = currentApplication?.featureFlags.some(
(feature) => feature.name === 'fleetcontrol_use_rds',
);
if (!isPlatform) {
return (
<Container>
<OverviewTopBar />
<div className="grid grid-cols-1 gap-12 lg:grid-cols-3">
<div className="order-2 grid grid-flow-row gap-12 lg:order-1 lg:col-span-2">
<OverviewDocumentation
title="Pick your favorite framework and start learning"
description="Nhost integrates smoothly with all of the frameworks you already know."
cardElements={frameworks}
/>
<OverviewDocumentation
title="Platform Documentation"
description="More in-depth documentation for key features."
cardElements={features}
/>
</div>
<div className="order-1 grid grid-flow-row content-start gap-8 lg:order-2 lg:col-span-1 lg:gap-12">
<OverviewProjectInfo />
<Divider />
<OverviewUsage />
</div>
</div>
</Container>
);
}
return (
<Container>
<MaintenanceAlert />
<OverviewTopBar />
<div className="grid grid-cols-1 gap-12 pt-3 lg:grid-cols-3">
<div className="order-2 grid grid-flow-row gap-12 lg:order-1 lg:col-span-2">
<RetryableErrorBoundary>
<OverviewDeployments />
</RetryableErrorBoundary>
<OverviewDocumentation
title="Pick your favorite framework and start learning"
description="Nhost integrates smoothly with all of the frameworks you already know."
cardElements={frameworks}
/>
<OverviewDocumentation
title="Platform Documentation"
description="More in-depth documentation for key features."
cardElements={features}
/>
</div>
<div className="order-1 grid grid-flow-row content-start gap-8 lg:order-2 lg:col-span-1 lg:gap-12">
{isProjectUsingRDS && (
<>
<OverviewMigration />
<Divider />
</>
)}
<OverviewProjectInfo />
<Divider />
<OverviewRepository />
<Divider />
<OverviewUsage />
</div>
</div>
</Container>
);
}

View File

@@ -1,206 +0,0 @@
import { useDialog } from '@/components/common/DialogProvider';
import Container from '@/components/layout/Container';
import ProjectStatusInfo from '@/components/project/ProjectStatusInfo';
import useProjectRedirectWhenReady from '@/hooks/common/useProjectRedirectWhenReady';
import { useCurrentWorkspaceAndApplication } from '@/hooks/useCurrentWorkspaceAndApplication';
import { useInterval } from '@/hooks/useInterval';
import { ApplicationStatus } from '@/types/application';
import { Alert } from '@/ui/Alert';
import Button from '@/ui/v2/Button';
import Link from '@/ui/v2/Link';
import Text from '@/ui/v2/Text';
import { discordAnnounce } from '@/utils/discordAnnounce';
import { triggerToast } from '@/utils/toast';
import {
useInsertFeatureFlagMutation,
useUpdateApplicationMutation,
} from '@/utils/__generated__/graphql';
import { useUserEmail } from '@nhost/nextjs';
import { useEffect, useState } from 'react';
/**
* Number of minutes to wait before enabling the "Cancel Migration" button.
*/
const MIGRATION_CANCEL_TIMEOUT_MINUTES = 15;
function MigrationDialog() {
const { closeAlertDialog } = useDialog();
const { currentApplication } = useCurrentWorkspaceAndApplication();
const [countdownTimer, setCountdownTimer] = useState(-1);
const minutes = Math.floor(countdownTimer / 60);
const seconds = Math.floor(countdownTimer % 60);
const countdownActive = countdownTimer > 0;
useEffect(() => {
if (typeof window === 'undefined') {
return;
}
const rawTimestamp = localStorage.getItem(
`migration-${currentApplication?.id}`,
);
if (!rawTimestamp) {
return;
}
const timestamp = new Date(rawTimestamp);
const timeDifference =
timestamp.getTime() +
1000 * 60 * MIGRATION_CANCEL_TIMEOUT_MINUTES -
Date.now();
if (timeDifference < 0) {
setCountdownTimer(0);
return;
}
setCountdownTimer(timeDifference / 1000);
}, [currentApplication?.id]);
useInterval(
() =>
setCountdownTimer((prev) => {
if (prev === 0) {
return 0;
}
return prev - 1;
}),
1000,
);
useEffect(() => {
if (countdownTimer !== 0 || typeof window === 'undefined') {
return;
}
localStorage.removeItem(`migration-${currentApplication.id}`);
}, [countdownTimer, currentApplication.id]);
const [updateApplication] = useUpdateApplicationMutation({
refetchQueries: ['getOneUser'],
});
const [insertFeatureFlag] = useInsertFeatureFlagMutation();
const userEmail = useUserEmail();
async function handleCancelMigration() {
try {
await updateApplication({
variables: {
appId: currentApplication.id,
app: {
desiredState: ApplicationStatus.Live,
},
},
});
await insertFeatureFlag({
variables: {
flag: {
appId: currentApplication.id,
name: 'fleetcontrol_use_rds',
value: 'console',
description: 'Use RDS',
},
},
});
triggerToast(`${currentApplication.name} migration cancelled.`);
} catch (e) {
triggerToast(`Error trying to migrate ${currentApplication.name}`);
await discordAnnounce(
`Error trying to migrate app: ${currentApplication.subdomain} (${userEmail})`,
);
} finally {
closeAlertDialog();
}
}
return (
<div className="grid grid-flow-row gap-2 px-6">
<Text>
Cancelling this migration will revert your project to use the shared
Postgres instance.
</Text>
{!countdownActive && (
<Alert severity="warning" className="px-3 text-left">
Reach out to us at{' '}
<Link
underline="none"
target="_blank"
className="hover:underline focus:underline focus:outline-none"
href="https://discord.com/channels/552499021260914688/1029043079946182676"
>
#migratedb
</Link>{' '}
if you think the migration should have finished by now.
</Alert>
)}
<div className="grid grid-flow-row gap-2 pb-1">
<Button onClick={closeAlertDialog}>Continue Migration</Button>
<Button
onClick={handleCancelMigration}
variant="outlined"
color="secondary"
disabled={countdownActive}
>
{countdownActive
? `Cancel in ${String(minutes).padStart(2, '0')}:${String(
seconds,
).padStart(2, '0')}`
: 'Cancel Migration'}
</Button>
</div>
</div>
);
}
export default function ApplicationMigrating() {
const { openAlertDialog } = useDialog();
useProjectRedirectWhenReady({ pollInterval: 10000 });
return (
<Container className="flex flex-col gap-6">
<ProjectStatusInfo
className="mx-auto max-w-sm"
title="Migration in progress"
description="Your project is being migrated to use a dedicated and more performant Postgres instance."
imageProps={{
src: '/assets/migrating.svg',
alt: 'Application Migrating',
}}
/>
<Button
variant="borderless"
color="error"
className="mx-auto"
onClick={() =>
openAlertDialog({
title: 'Cancel Migration',
payload: <MigrationDialog />,
props: {
titleProps: {
className: 'px-6',
},
PaperProps: {
className: 'py-6 px-0 max-w-sm w-full',
},
hidePrimaryAction: true,
hideSecondaryAction: true,
},
})
}
>
Cancel Migration
</Button>
</Container>
);
}

View File

@@ -1,136 +0,0 @@
import ApplicationInfo from '@/components/applications/ApplicationInfo';
import { ChangePlanModal } from '@/components/applications/ChangePlanModal';
import { StagingMetadata } from '@/components/applications/StagingMetadata';
import { useDialog } from '@/components/common/DialogProvider';
import Container from '@/components/layout/Container';
import { useUpdateApplicationMutation } from '@/generated/graphql';
import { useCurrentWorkspaceAndApplication } from '@/hooks/useCurrentWorkspaceAndApplication';
import { ApplicationStatus } from '@/types/application';
import { Modal } from '@/ui';
import Button from '@/ui/v2/Button';
import Text from '@/ui/v2/Text';
import { discordAnnounce } from '@/utils/discordAnnounce';
import { triggerToast } from '@/utils/toast';
import { updateOwnCache } from '@/utils/updateOwnCache';
import { useUserData } from '@nhost/nextjs';
import Image from 'next/image';
import { useState } from 'react';
import { RemoveApplicationModal } from './RemoveApplicationModal';
export default function ApplicationPaused() {
const { openAlertDialog } = useDialog();
const { currentWorkspace, currentApplication } =
useCurrentWorkspaceAndApplication();
const [changingApplicationStateLoading, setChangingApplicationStateLoading] =
useState(false);
const [updateApplication, { client }] = useUpdateApplicationMutation();
const { id, email } = useUserData();
const isOwner = currentWorkspace.members.some(
({ userId, type }) => userId === id && type === 'owner',
);
const isPro = currentApplication.plan.name === 'Pro';
const [showDeletingModal, setShowDeletingModal] = useState(false);
async function handleTriggerUnpausing() {
setChangingApplicationStateLoading(true);
try {
await updateApplication({
variables: {
appId: currentApplication.id,
app: {
desiredState: ApplicationStatus.Live,
},
},
});
await updateOwnCache(client);
discordAnnounce(
`App ${currentApplication.name} (${email}) set to awake.`,
);
triggerToast(`${currentApplication.name} set to awake.`);
} catch (e) {
triggerToast(`Error trying to awake ${currentApplication.name}`);
}
}
return (
<>
<Modal
showModal={showDeletingModal}
close={() => setShowDeletingModal(false)}
>
<RemoveApplicationModal
close={() => setShowDeletingModal(false)}
title={`Remove project ${currentApplication.name}?`}
description={`The project ${currentApplication.name} will be removed. All data will be lost and there will be no way to
recover the app once it has been deleted.`}
/>
</Modal>
<Container className="mx-auto mt-20 grid max-w-sm grid-flow-row gap-2 text-center">
<div className="mx-auto flex w-centImage flex-col text-center">
<Image
src="/assets/PausedApp.svg"
alt="Closed Eye"
width={72}
height={72}
/>
</div>
<Text variant="h3" component="h1" className="mt-4">
{currentApplication.name} is sleeping
</Text>
<Text className="mt-1">
Projects on the free plan stop responding to API calls after 7 days of
no traffic.
</Text>
{!isPro && (
<Button
className="mx-auto w-full max-w-[280px]"
onClick={() => {
openAlertDialog({
title: 'Upgrade your plan.',
payload: <ChangePlanModal />,
props: {
PaperProps: { className: 'p-0' },
hidePrimaryAction: true,
hideSecondaryAction: true,
hideTitle: true,
maxWidth: 'lg',
},
});
}}
>
Upgrade to Pro to avoid autosleep
</Button>
)}
<div className="grid grid-flow-row gap-2">
<Button
variant="borderless"
className="mx-auto w-full max-w-[280px]"
loading={changingApplicationStateLoading}
disabled={changingApplicationStateLoading}
onClick={handleTriggerUnpausing}
>
Wake Up
</Button>
{isOwner && (
<Button
color="error"
variant="borderless"
className="mx-auto w-full max-w-[280px]"
onClick={() => setShowDeletingModal(true)}
>
Delete Project
</Button>
)}
</div>
<StagingMetadata>
<ApplicationInfo />
</StagingMetadata>
</Container>
</>
);
}

View File

@@ -1,44 +0,0 @@
import Container from '@/components/layout/Container';
import { useCheckProvisioning } from '@/hooks/useCheckProvisioning';
import { useCurrentWorkspaceAndApplication } from '@/hooks/useCurrentWorkspaceAndApplication';
import { ApplicationStatus } from '@/types/application';
import ActivityIndicator from '@/ui/v2/ActivityIndicator';
import Text from '@/ui/v2/Text';
import Image from 'next/image';
import ApplicationInfo from './ApplicationInfo';
import { AppLoader } from './AppLoader';
import { StagingMetadata } from './StagingMetadata';
export default function ApplicationProvisioning() {
const currentApplicationState = useCheckProvisioning();
const { currentApplication } = useCurrentWorkspaceAndApplication();
return (
<Container className="mx-auto mt-8 grid max-w-sm grid-flow-row gap-4 text-center">
<div className="mx-auto flex w-centImage flex-col text-center">
<Image
src="/terminal-text.svg"
alt="Terminal with a green dot"
width={72}
height={72}
/>
</div>
{currentApplicationState.state === ApplicationStatus.Empty ? (
<div className="grid grid-flow-row gap-1">
<Text variant="h3" component="h1">
Setting Up {currentApplication.name}
</Text>
<Text>This normally takes around 2 minutes</Text>
<ActivityIndicator className="mx-auto" />
</div>
) : (
<AppLoader startLoader date={currentApplicationState.createdAt} />
)}
<StagingMetadata>
<ApplicationInfo />
</StagingMetadata>
</Container>
);
}

View File

@@ -1,48 +0,0 @@
import Container from '@/components/layout/Container';
import { useCheckProvisioning } from '@/hooks/useCheckProvisioning';
import { useCurrentWorkspaceAndApplication } from '@/hooks/useCurrentWorkspaceAndApplication';
import { ApplicationStatus } from '@/types/application';
import ActivityIndicator from '@/ui/v2/ActivityIndicator';
import Text from '@/ui/v2/Text';
import Image from 'next/image';
import ApplicationInfo from './ApplicationInfo';
import { AppLoader } from './AppLoader';
import { StagingMetadata } from './StagingMetadata';
export default function ApplicationRestoring() {
const currentApplicationState = useCheckProvisioning();
const { currentApplication } = useCurrentWorkspaceAndApplication();
return (
<Container className="mx-auto mt-8 grid max-w-sm grid-flow-row gap-4 text-center">
<div className="mx-auto flex w-centImage flex-col text-center">
<Image
src="/terminal-text.svg"
alt="Terminal with a green dot"
width={72}
height={72}
/>
</div>
{currentApplicationState.state === ApplicationStatus.Empty ? (
<div className="grid grid-flow-row gap-1">
<Text variant="h3" component="h1">
Setting Up {currentApplication.name}
</Text>
<Text>This normally takes around 2 minutes</Text>
<ActivityIndicator className="mx-auto" />
</div>
) : (
<AppLoader
startLoader
restoring
date={currentApplicationState.createdAt}
/>
)}
<StagingMetadata>
<ApplicationInfo />
</StagingMetadata>
</Container>
);
}

View File

@@ -1,120 +0,0 @@
import Box from '@/ui/v2/Box';
import Button from '@/ui/v2/Button';
import Input from '@/ui/v2/Input';
import Text from '@/ui/v2/Text';
import { nhost } from '@/utils/nhost';
import { triggerToast } from '@/utils/toast';
import React, { useState } from 'react';
export function ChangePasswordModal({ close }: any) {
const [formState, setFormState] = useState<{
loading: boolean;
error: null | string;
}>({
loading: false,
error: null,
});
const [newPassword, setNewPassword] = useState('');
const [newPasswordConfirm, setNewPasswordConfirm] = useState('');
const handleSubmit = async (e: React.SyntheticEvent<HTMLFormElement>) => {
e.preventDefault();
setFormState({
loading: true,
error: null,
});
if (newPassword !== newPasswordConfirm) {
setFormState({
loading: false,
error: 'Passwords do not match',
});
return;
}
const { error } = await nhost.auth.changePassword({ newPassword });
if (error) {
setFormState({
loading: false,
error: error.message,
});
return;
}
triggerToast(`Your password has been updated`);
close();
};
return (
<Box className="w-full max-w-md rounded-md px-6 py-6 text-left">
<form onSubmit={handleSubmit}>
<div className="grid grid-flow-row gap-4">
<div className="grid grid-flow-row gap-2">
<Text variant="h3">Choose New Password</Text>
<Text className="mt-2 font-normal">
Make sure to pick a strong password with at least 8 characters.
</Text>
</div>
<div className="grid grid-flow-row gap-2">
<Input
type="password"
id="newPassword"
name="newPassword"
label="New Password"
placeholder="New password"
autoFocus
value={newPassword}
onChange={(event) => setNewPassword(event.target.value)}
hideEmptyHelperText
fullWidth
required
/>
<Input
type="password"
id="confirmNewPassword"
name="confirmNewPassword"
label="Confirm New Password"
placeholder="Confirm new password"
value={newPasswordConfirm}
onChange={(event) => setNewPasswordConfirm(event.target.value)}
hideEmptyHelperText
fullWidth
required
/>
</div>
<div className="grid grid-flow-row gap-2">
{formState.error && (
<Text className="w-full px-4 text-center" color="error">
Error: {formState.error}
</Text>
)}
<Button type="submit" loading={formState.loading}>
Set New Password
</Button>
<Button
type="reset"
variant="outlined"
color="secondary"
onClick={close}
>
Cancel
</Button>
</div>
</div>
</form>
</Box>
);
}
export default ChangePasswordModal;

View File

@@ -1,254 +0,0 @@
import { BillingPaymentMethodForm } from '@/components/billing-payment-method/BillingPaymentMethodForm';
import { useDialog } from '@/components/common/DialogProvider';
import { useUI } from '@/context/UIContext';
import {
refetchGetApplicationPlanQuery,
useGetAppPlanAndGlobalPlansQuery,
useGetPaymentMethodsQuery,
useUpdateAppMutation,
} from '@/generated/graphql';
import { useCurrentWorkspaceAndApplication } from '@/hooks/useCurrentWorkspaceAndApplication';
import { Modal } from '@/ui/Modal';
import ActivityIndicator from '@/ui/v2/ActivityIndicator';
import Box from '@/ui/v2/Box';
import Button from '@/ui/v2/Button';
import Checkbox from '@/ui/v2/Checkbox';
import Text from '@/ui/v2/Text';
import { planDescriptions } from '@/utils/planDescriptions';
import { triggerToast } from '@/utils/toast';
import { useTheme } from '@mui/material';
import Image from 'next/image';
import { useRouter } from 'next/router';
import { useState } from 'react';
function Plan({
planName,
price,
setPlan,
planId,
selectedPlanId,
currentPlan,
}: any) {
return (
<button
type="button"
className="my-4 grid w-full grid-flow-col items-center justify-between gap-2 px-1"
onClick={setPlan}
tabIndex={-1}
>
<div className="grid grid-flow-row gap-y-0.5">
<div className="grid grid-flow-col items-center justify-start gap-2">
<Checkbox
onChange={setPlan}
checked={selectedPlanId === planId}
aria-label={planName}
/>
<Text
variant="h3"
component="p"
className="self-center text-left font-medium"
>
{currentPlan.price > price ? 'Downgrade' : 'Upgrade'} to {planName}
</Text>
</div>
<Text variant="subtitle2" className="w-full max-w-[256px] text-start">
{planDescriptions[planName]}
</Text>
</div>
<Text variant="h3" component="p">
$ {price}/mo
</Text>
</button>
);
}
export function ChangePlanModalWithData({ app, plans, close }: any) {
const theme = useTheme();
const [selectedPlanId, setSelectedPlanId] = useState('');
const { closeAlertDialog } = useDialog();
const { currentWorkspace, currentApplication } =
useCurrentWorkspaceAndApplication();
// get workspace payment methods
const { data } = useGetPaymentMethodsQuery({
variables: {
workspaceId: currentWorkspace.id,
},
});
const { openPaymentModal, closePaymentModal, paymentModal } = useUI();
const paymentMethodAvailable = data?.paymentMethods.length > 0;
const currentPlan = plans.find((plan) => plan.id === app.plan.id);
const selectedPlan = plans.find((plan) => plan.id === selectedPlanId);
const isDowngrade = currentPlan.price > selectedPlan?.price;
// graphql mutations
const [updateApp] = useUpdateAppMutation({
refetchQueries: [
refetchGetApplicationPlanQuery({
workspace: currentWorkspace.slug,
slug: currentApplication.slug,
}),
],
});
// function handlers
const handleUpdateAppPlan = async () => {
await updateApp({
variables: {
id: app.id,
app: {
planId: selectedPlan.id,
},
},
});
if (isDowngrade) {
if (close) {
close();
}
closeAlertDialog();
}
triggerToast(
`${currentApplication.name} plan changed to ${selectedPlan.name}.`,
);
};
const handleChangePlanClick = async () => {
if (!selectedPlan) {
return;
}
if (!paymentMethodAvailable) {
openPaymentModal();
return;
}
await handleUpdateAppPlan();
if (close) {
close();
}
closeAlertDialog();
};
return (
<Box className="w-full max-w-xl rounded-lg p-6 text-left">
<Modal
showModal={paymentModal}
close={closePaymentModal}
dialogStyle={{ zIndex: theme.zIndex.modal + 1 }}
>
<BillingPaymentMethodForm
close={closePaymentModal}
onPaymentMethodAdded={handleUpdateAppPlan}
workspaceId={currentWorkspace.id}
/>
</Modal>
<div className="flex flex-col">
<div className="mx-auto">
<Image
src="/assets/upgrade.svg"
alt="Nhost Logo"
width={72}
height={72}
/>
</div>
<Text variant="h3" component="h2" className="mt-2 text-center">
Pick Your Plan
</Text>
<Text className="text-center">
You&apos;re currently on the <strong>{app.plan.name}</strong> plan.
</Text>
<div className="mt-5">
{plans
.filter((plan) => plan.id !== app.plan.id)
.map((plan) => (
<div className="mt-4" key={plan.id}>
<Plan
planName={plan.name}
currentPlan={currentPlan}
key={plan.id}
planId={plan.id}
selectedPlanId={selectedPlanId}
price={plan.price}
setPlan={() => setSelectedPlanId(plan.id)}
/>
</div>
))}
</div>
<div className="mt-6 grid grid-flow-row gap-2">
<Button onClick={handleChangePlanClick} disabled={!selectedPlan}>
{!selectedPlan && 'Change Plan'}
{selectedPlan && isDowngrade && 'Downgrade'}
{selectedPlan && !isDowngrade && 'Upgrade'}
</Button>
<Button
variant="outlined"
color="secondary"
onClick={() => {
if (close) {
close();
}
closeAlertDialog();
}}
>
Cancel
</Button>
</div>
</div>
</Box>
);
}
export interface ChangePlanModalProps {
/**
* Function to close the modal if mounted on parent component.
*
* @deprecated Implement modal by using `openAlertDialog` hook instead.
*/
close?: () => void;
}
export function ChangePlanModal({ close }: ChangePlanModalProps) {
const {
query: { workspaceSlug, appSlug },
} = useRouter();
const { data, loading, error } = useGetAppPlanAndGlobalPlansQuery({
variables: {
workspaceSlug: workspaceSlug as string,
appSlug: appSlug as string,
},
fetchPolicy: 'cache-first',
});
if (error) {
throw error;
}
if (loading) {
return (
<ActivityIndicator delay={500} label="Loading plans..." className="m-8" />
);
}
const { apps, plans } = data;
const app = apps[0];
return <ChangePlanModalWithData app={app} plans={plans} close={close} />;
}

View File

@@ -1,117 +0,0 @@
import { LoadingScreen } from '@/components/common/LoadingScreen';
import useIsPlatform from '@/hooks/common/useIsPlatform';
import { useCurrentWorkspaceAndApplication } from '@/hooks/useCurrentWorkspaceAndApplication';
import Box from '@/ui/v2/Box';
import Button from '@/ui/v2/Button';
import IconButton from '@/ui/v2/IconButton';
import ArrowSquareOutIcon from '@/ui/v2/icons/ArrowSquareOutIcon';
import CopyIcon from '@/ui/v2/icons/CopyIcon';
import Text from '@/ui/v2/Text';
import generateAppServiceUrl, {
defaultLocalBackendSlugs,
defaultRemoteBackendSlugs,
} from '@/utils/common/generateAppServiceUrl';
import { copy } from '@/utils/copy';
import { getHasuraConsoleServiceUrl } from '@/utils/env';
import Image from 'next/image';
interface HasuraDataProps {
close?: () => void;
}
export function HasuraData({ close }: HasuraDataProps) {
const { currentApplication } = useCurrentWorkspaceAndApplication();
const isPlatform = useIsPlatform();
const projectAdminSecret = currentApplication?.config?.hasura.adminSecret;
if (!currentApplication?.subdomain || !projectAdminSecret) {
return <LoadingScreen />;
}
const hasuraUrl =
process.env.NEXT_PUBLIC_ENV === 'dev' || !isPlatform
? `${getHasuraConsoleServiceUrl()}`
: generateAppServiceUrl(
currentApplication?.subdomain,
currentApplication?.region.awsName,
'hasura',
defaultLocalBackendSlugs,
{ ...defaultRemoteBackendSlugs, hasura: '/console' },
);
return (
<div className="mx-auto w-full max-w-md px-6 py-4 text-left">
<div className="grid grid-flow-row gap-1">
<div className="mx-auto">
<Image
src="/assets/hasuramodal.svg"
width={72}
height={72}
alt="Hasura"
/>
</div>
<Text variant="h3" component="h1" className="text-center">
Open Hasura
</Text>
<Text className="text-center">
Hasura is the dashboard you&apos;ll use to edit your schema and
permissions as well as browse data. Copy the admin secret to your
clipboard and enter it in the next screen.
</Text>
<Box className="mt-6 border-y-1">
<div className="grid w-full grid-cols-1 place-content-between items-center py-2 sm:grid-cols-3">
<Text className="col-span-1 text-center font-medium sm:justify-start sm:text-left">
Admin Secret
</Text>
<div className="col-span-1 grid grid-flow-col items-center justify-center gap-2 sm:col-span-2 sm:justify-end">
<Text className="font-medium" variant="subtitle2">
{Array(projectAdminSecret.length).fill('•').join('')}
</Text>
<IconButton
onClick={() => copy(projectAdminSecret, 'Hasura admin secret')}
variant="borderless"
color="secondary"
className="min-w-0 p-1"
aria-label="Copy admin secret"
>
<CopyIcon className="h-4 w-4" />
</IconButton>
</div>
</div>
</Box>
<div className="mt-6 grid grid-flow-row gap-2">
<Button
href={hasuraUrl}
// Both `target` and `rel` are available when `href` is set. This is
// a limitation of MUI.
// @ts-ignore
target="_blank"
rel="noreferrer noopener"
endIcon={<ArrowSquareOutIcon className="h-4 w-4" />}
>
Open Hasura
</Button>
{close && (
<Button
variant="outlined"
color="secondary"
className="text-sm+ font-normal"
onClick={close}
>
Cancel
</Button>
)}
</div>
</div>
</div>
);
}
export default HasuraData;

View File

@@ -1,166 +0,0 @@
import DeploymentStatusMessage from '@/components/deployments/DeploymentStatusMessage';
import { FindOldApps } from '@/components/home';
import type { UserData } from '@/hooks/useGetAllUserWorkspacesAndApplications';
import type { ApplicationState } from '@/types/application';
import { ApplicationStatus } from '@/types/application';
import StateBadge from '@/ui/StateBadge';
import type { DeploymentStatus } from '@/ui/StatusCircle';
import { StatusCircle } from '@/ui/StatusCircle';
import Divider from '@/ui/v2/Divider';
import Link from '@/ui/v2/Link';
import List from '@/ui/v2/List';
import { ListItem } from '@/ui/v2/ListItem';
import { getApplicationStatusString } from '@/utils/helpers';
import Image from 'next/image';
import NavLink from 'next/link';
import { Fragment } from 'react';
export function checkStatusOfTheApplication(
stateHistory: ApplicationState[] | [],
) {
if (stateHistory.length === 0) {
return ApplicationStatus.Empty;
}
if (stateHistory[0].stateId === undefined) {
return ApplicationStatus.Empty;
}
return stateHistory[0].stateId;
}
export function RenderWorkspacesWithApps({
userData,
query,
}: {
userData: UserData | null;
query: string;
}) {
return (
<div>
{userData?.workspaces
.filter((workspace) =>
workspace.applications.map((app) =>
app.name.toLowerCase().includes(query.toLowerCase()),
),
)
.sort((w1, w2) =>
// sort alphabetical order (A-Z)
w1.name.localeCompare(w2.name),
)
.map((workspace) => {
// early exit if no applications are available
if (workspace.applications.length === 0) {
return null;
}
const workspaceProjects = workspace.applications
.filter((app) =>
app.name.toLowerCase().includes(query.toLowerCase()),
)
.sort((appA, appB) => {
// sort apps based on either:
// 1. When the app was recently deployed, if there is any deployments available
// 2. When the app was created
const appASort =
appA.deployments.length > 0
? new Date(appA.deployments[0].deploymentEndedAt)
: new Date(appA.createdAt);
const appBSort =
appB.deployments.length > 0
? new Date(appB.deployments[0].deploymentEndedAt)
: new Date(appB.createdAt);
if (appASort > appBSort) {
return -1;
}
return 1;
});
return (
<div key={workspace.slug} className="my-8">
<NavLink href={`/${workspace.slug}`} passHref>
<Link
href={`${workspace.slug}`}
className="mb-1.5 block font-medium"
underline="none"
sx={{ color: 'text.primary' }}
>
{workspace.name}
</Link>
</NavLink>
<List className="grid grid-flow-row border-y">
{workspaceProjects.map((app, index) => {
const [latestDeployment] = app.deployments;
return (
<Fragment key={app.slug}>
<ListItem.Root
secondaryAction={
<div className="grid grid-flow-col gap-px">
{latestDeployment && (
<div className="mr-2 flex self-center align-middle">
<StatusCircle
status={
latestDeployment.deploymentStatus as DeploymentStatus
}
/>
</div>
)}
<StateBadge
status={checkStatusOfTheApplication(
app.appStates,
)}
title={getApplicationStatusString(
checkStatusOfTheApplication(app.appStates),
)}
/>
</div>
}
>
<NavLink
href={`${workspace?.slug}/${app.slug}`}
passHref
>
<ListItem.Button className="rounded-none">
<ListItem.Avatar>
<div className="h-10 w-10 overflow-hidden rounded-lg">
<Image
src="/logos/new.svg"
alt="Nhost Logo"
width={40}
height={40}
/>
</div>
</ListItem.Avatar>
<ListItem.Text
primary={app.name}
secondary={
<DeploymentStatusMessage
appCreatedAt={app.createdAt}
deployment={latestDeployment}
/>
}
/>
</ListItem.Button>
</NavLink>
</ListItem.Root>
{index < workspaceProjects.length - 1 && (
<Divider component="li" />
)}
</Fragment>
);
})}
</List>
</div>
);
})}
<FindOldApps />
</div>
);
}

View File

@@ -1,97 +0,0 @@
import { useCurrentWorkspaceAndApplication } from '@/hooks/useCurrentWorkspaceAndApplication';
import Box from '@/ui/v2/Box';
import Button from '@/ui/v2/Button';
import Checkbox from '@/ui/v2/Checkbox';
import Text from '@/ui/v2/Text';
import { triggerToast } from '@/utils/toast';
import { useRestoreApplicationDatabaseMutation } from '@/utils/__generated__/graphql';
import { formatISO9075 } from 'date-fns';
import { useState } from 'react';
export interface RestoreBackupModalModalProps {
/**
* Call this function to imperatively close the modal.
*/
close: any;
/**
* Arbitrary data passed down to the modal.
*
*/
data: any;
}
export function RestoreBackupModal({
close,
data,
}: RestoreBackupModalModalProps) {
const { id: backupId, createdAt } = data;
const [isSure, setIsSure] = useState(false);
const [mutationIsCompleted, setMutationIsCompleted] = useState(false);
const { currentApplication } = useCurrentWorkspaceAndApplication();
const [restoreApplicationDatabase, { loading }] =
useRestoreApplicationDatabaseMutation();
const handleSubmit = async () => {
setMutationIsCompleted(false);
try {
await restoreApplicationDatabase({
variables: {
backupId,
appId: currentApplication.id,
},
});
} catch (error) {
setMutationIsCompleted(false);
triggerToast('Database backup restoration failed');
return;
}
setMutationIsCompleted(true);
triggerToast('Database backup successfully scheduled for restoration.');
};
if (mutationIsCompleted) {
return (
<Box className="w-modal p-6 rounded-lg">
<div className="flex flex-col">
<Text className="text-center font-medium text-lg">
The backup has been restored successfully.
</Text>
<Button className="mt-5" onClick={close}>
OK
</Button>
</div>
</Box>
);
}
return (
<Box className="w-modal px-6 py-6 text-left rounded-lg">
<div className="flex flex-col">
<Text className="text-center text-lg font-medium">
Restore Database Backup
</Text>
<Text className="mt-2 text-center font-normal">
You current database will be deleted, and the backup created{' '}
<span className="font-semibold">
{formatISO9075(new Date(createdAt))}
</span>{' '}
will be restored.
</Text>
<Box className="my-4 border-y py-2 px-2">
<Checkbox
checked={isSure}
onChange={(_event, checked) => setIsSure(checked)}
label="I'm sure I want to restore this backup."
/>
</Box>
<Button onClick={handleSubmit} disabled={!isSure} loading={loading}>
Restore
</Button>
</div>
</Box>
);
}

View File

@@ -1,19 +0,0 @@
import Status, { StatusEnum } from '@/ui/Status';
import Box from '@/ui/v2/Box';
import { isDevOrStaging } from '@/utils/helpers';
import type { PropsWithChildren } from 'react';
export function StagingMetadata({ children }: PropsWithChildren<unknown>) {
return (
isDevOrStaging() && (
<div className="mt-10">
<Box className="mx-auto flex flex-col rounded-md border p-5 text-center">
<Status status={StatusEnum.Deploying}>Internal info</Status>
{children}
</Box>
</div>
)
);
}
export default StagingMetadata;

View File

@@ -1,49 +0,0 @@
import { ChangePlanModal } from '@/components/applications/ChangePlanModal';
import { useDialog } from '@/components/common/DialogProvider';
import { Alert } from '@/ui/Alert';
import Button from '@/ui/v2/Button';
import Text from '@/ui/v2/Text';
import type { DetailedHTMLProps, HTMLProps } from 'react';
import { twMerge } from 'tailwind-merge';
export interface UnlockFeatureByUpgradingProps
extends DetailedHTMLProps<HTMLProps<HTMLDivElement>, HTMLDivElement> {
/**
* Message to display in the alert.
*/
message: string;
}
export function UnlockFeatureByUpgrading({
message,
className,
...props
}: UnlockFeatureByUpgradingProps) {
const { openAlertDialog } = useDialog();
return (
<div className={twMerge('flex', className)} {...props}>
<Alert className="grid w-full grid-flow-col place-content-between items-center gap-2">
<Text className="text-left">{message}</Text>
<Button
variant="borderless"
onClick={() => {
openAlertDialog({
title: 'Upgrade your plan.',
payload: <ChangePlanModal />,
props: {
PaperProps: { className: 'p-0 max-w-xl w-full' },
hidePrimaryAction: true,
hideSecondaryAction: true,
hideTitle: true,
},
});
}}
>
Upgrade
</Button>
</Alert>
</div>
);
}

View File

@@ -1,23 +0,0 @@
import Link from '@/ui/v2/Link';
import Text from '@/ui/v2/Text';
export function CheckGithubConfiguration() {
return (
<Text className="mt-2 text-center text-xs">
Do you miss a repository, or do you need to connect another GitHub
account?{' '}
<Link
href={process.env.NEXT_PUBLIC_GITHUB_APP_INSTALL_URL}
target="_blank"
rel="noreferrer noopener"
className="text-xs font-medium"
underline="hover"
>
Manage your GitHub configuration
</Link>
.
</Text>
);
}
export default CheckGithubConfiguration;

View File

@@ -1,35 +0,0 @@
import GithubIcon from '@/components/icons/GithubIcon';
import Button from '@/ui/v2/Button';
import ArrowSquareOutIcon from '@/ui/v2/icons/ArrowSquareOutIcon';
import Text from '@/ui/v2/Text';
export default function GitHubInstallNhostApplication() {
return (
<div className="grid grid-flow-row justify-center gap-2 p-0.5">
<GithubIcon className="mx-auto h-8 w-8" />
<div className="text-center">
<Text variant="h3" component="h2">
Install the Nhost GitHub Application
</Text>
<Text variant="subtitle2">
Install the Nhost application on your GitHub account and update
permissions to automatically track repositories.
</Text>
</div>
<Button
href={process.env.NEXT_PUBLIC_GITHUB_APP_INSTALL_URL}
// Both `target` and `rel` are available when `href` is set. This is
// a limitation of MUI.
// @ts-ignore
target="_blank"
rel="noreferrer noopener"
endIcon={<ArrowSquareOutIcon className="h-4 w-4" />}
>
Configure the Nhost application on GitHub
</Button>
</div>
);
}

View File

@@ -1,62 +0,0 @@
import { Avatar } from '@/ui/Avatar';
import Divider from '@/ui/v2/Divider';
import PlusCircleIcon from '@/ui/v2/icons/PlusCircleIcon';
import Link from '@/ui/v2/Link';
import List from '@/ui/v2/List';
import { ListItem } from '@/ui/v2/ListItem';
import Text from '@/ui/v2/Text';
import { Fragment } from 'react';
export function GitHubNoRepositoriesAdded({
filteredGitHubAppInstallations,
}: any) {
return (
<div>
<Text className="mt-1 text-center text-lg font-medium">
No repositories found
</Text>
<Text className="text-center text-xs">
Check the Nhost app&apos;s settings on your GitHub account, or install
the app on a new account.
</Text>
<List className="my-2 border-y">
{filteredGitHubAppInstallations.map((githubApp, index) => (
<Fragment key={githubApp.id}>
<ListItem.Root
key={githubApp.id}
className="grid grid-flow-col gap-2 py-2.5 justify-start items-center"
>
<ListItem.Avatar>
<Avatar
avatarUrl={githubApp.accountAvatarUrl as string}
className="mr-1 h-5 w-5"
/>
</ListItem.Avatar>
<ListItem.Text primary={githubApp.accountLogin} />
</ListItem.Root>
{index < filteredGitHubAppInstallations.length - 1 && (
<Divider component="li" />
)}
</Fragment>
))}
</List>
<Link
href={process.env.NEXT_PUBLIC_GITHUB_APP_INSTALL_URL}
target="_blank"
rel="noreferrer noopener"
underline="hover"
className="grid grid-flow-col gap-1 items-center justify-start"
>
<PlusCircleIcon className="w-4 h-4" />
Configure the Nhost application on GitHub.
</Link>
</div>
);
}
export default GitHubNoRepositoriesAdded;

View File

@@ -1,2 +0,0 @@
export * from './Breadcrumbs';
export { default } from './Breadcrumbs';

View File

@@ -0,0 +1,70 @@
import { Link } from '@/components/ui/v2/Link';
import { Text } from '@/components/ui/v2/Text';
import type { DetailedHTMLProps, HTMLProps } from 'react';
import { twMerge } from 'tailwind-merge';
export interface ContactUsProps
extends DetailedHTMLProps<HTMLProps<HTMLDivElement>, HTMLDivElement> {}
export default function FeedbackForm({ className, ...props }: ContactUsProps) {
return (
<div
className={twMerge(
'grid max-w-md grid-flow-row gap-2 py-4 px-5',
className,
)}
{...props}
>
<Text variant="h3" component="h2">
Contact us
</Text>
<Text>
To report issues with Nhost, please open a GitHub issue in the{' '}
<Link
href="https://github.com/nhost/nhost/issues/new"
target="_blank"
rel="noopener noreferrer"
underline="hover"
>
nhost/nhost
</Link>{' '}
repository.
</Text>
<Text>
For issues related to the CLI, please visit the{' '}
<Link
href="https://github.com/nhost/cli/issues/new"
target="_blank"
rel="noopener noreferrer"
underline="hover"
>
nhost/cli
</Link>{' '}
repository.
</Text>
<Text>
If you need assistance or have any questions, feel free to join us on{' '}
<Link
href="https://discord.com/invite/9V7Qb2U"
target="_blank"
rel="noopener noreferrer"
underline="hover"
>
Discord
</Link>
. Alternatively, if you prefer, you can also open a{' '}
<Link
href="https://github.com/nhost/nhost/discussions/new/choose"
target="_blank"
rel="noopener noreferrer"
underline="hover"
>
GitHub discussion
</Link>
.
</Text>
<Text>We&apos;re here to help, so don&apos;t hesitate to reach out!</Text>
</div>
);
}

View File

@@ -0,0 +1,2 @@
export * from './ContactUs';
export { default as ContactUs } from './ContactUs';

View File

@@ -1,2 +0,0 @@
export * from './ControlledAutocomplete';
export { default } from './ControlledAutocomplete';

View File

@@ -1,2 +0,0 @@
export * from './ControlledCheckbox';
export { default } from './ControlledCheckbox';

View File

@@ -1,2 +0,0 @@
export * from './ControlledSelect';
export { default } from './ControlledSelect';

View File

@@ -1,2 +0,0 @@
export * from './ControlledSwitch';
export { default } from './ControlledSwitch';

View File

@@ -1,2 +0,0 @@
export * from './DataGrid';
export { default } from './DataGrid';

View File

@@ -1,2 +0,0 @@
export * from './DataGridBody';
export { default } from './DataGridBody';

View File

@@ -1,2 +0,0 @@
export * from './DataGridBooleanCell';
export { default } from './DataGridBooleanCell';

View File

@@ -1,2 +0,0 @@
export * from './DataGridDateCell';
export { default } from './DataGridDateCell';

View File

@@ -1,2 +0,0 @@
export * from './DataGridFrame';
export { default } from './DataGridFrame';

View File

@@ -1,2 +0,0 @@
export * from './DataGridHeader';
export { default } from './DataGridHeader';

View File

@@ -1,2 +0,0 @@
export * from './DataGridNumericCell';
export { default } from './DataGridNumericCell';

View File

@@ -1,2 +0,0 @@
export * from './DataGridPagination';
export { default } from './DataGridPagination';

View File

@@ -1,2 +0,0 @@
export * from './DataGridPreviewCell';
export { default } from './DataGridPreviewCell';

View File

@@ -1,2 +0,0 @@
export * from './DataGridTextCell';
export { default } from './DataGridTextCell';

View File

@@ -0,0 +1,28 @@
import { Alert } from '@/components/ui/v2/Alert';
import { Text } from '@/components/ui/v2/Text';
import { useCurrentWorkspaceAndProject } from '@/features/projects/common/hooks/useCurrentWorkspaceAndProject';
export default function DepricationNotice() {
const { currentProject } = useCurrentWorkspaceAndProject();
return (
!currentProject?.providersUpdated && (
<Alert severity="warning" className="grid place-content-center">
<Text color="warning" className="max-w-3xl text-sm">
On December 1st the old backend domain will cease to work. You need to
make sure your client is instantiated using the subdomain and region
and update your oauth2 settings. You can find more information{' '}
<a
target="_blank"
rel="noopener noreferrer"
className="underline"
href="https://github.com/nhost/nhost/discussions/2303"
>
here
</a>
.
</Text>
</Alert>
)
);
}

View File

@@ -0,0 +1 @@
export { default as ContactUs } from './DepricationNotice';

View File

@@ -1,2 +0,0 @@
export * from './DesktopNav';
export { default } from './DesktopNav';

View File

@@ -1,5 +1,5 @@
import type { CommonDialogProps } from '@/components/ui/v2/Dialog';
import type { DialogFormProps } from '@/types/common';
import type { CommonDialogProps } from '@/ui/v2/Dialog';
import type { ReactElement, ReactNode } from 'react';
import { createContext } from 'react';
@@ -22,7 +22,7 @@ export interface OpenDialogOptions {
/**
* Title of the dialog.
*/
title: ReactNode;
title?: ReactNode;
/**
* Component to render inside the dialog skeleton.
*/

View File

@@ -1,7 +1,7 @@
import RetryableErrorBoundary from '@/components/common/RetryableErrorBoundary';
import AlertDialog from '@/ui/v2/AlertDialog';
import { BaseDialog } from '@/ui/v2/Dialog';
import Drawer from '@/ui/v2/Drawer';
import { RetryableErrorBoundary } from '@/components/presentational/RetryableErrorBoundary';
import { AlertDialog } from '@/components/ui/v2/AlertDialog';
import { BaseDialog } from '@/components/ui/v2/Dialog';
import { Drawer } from '@/components/ui/v2/Drawer';
import { useRouter } from 'next/router';
import type { BaseSyntheticEvent, PropsWithChildren } from 'react';
import {

View File

@@ -1,4 +1,4 @@
import type { CommonDialogProps } from '@/ui/v2/Dialog';
import type { CommonDialogProps } from '@/components/ui/v2/Dialog';
import type { ReactElement, ReactNode } from 'react';
import type { DialogConfig, OpenDialogOptions } from './DialogContext';

View File

@@ -1,3 +1,4 @@
export * from './DialogContext';
export { default as DialogContext } from './DialogContext';
export { default as DialogProvider } from './DialogProvider';
export { default as useDialog } from './useDialog';

View File

@@ -1,11 +0,0 @@
import ErrorMessage from '@/components/common/ErrorMessage';
import type { FallbackProps } from 'react-error-boundary';
export default function ErrorBoundaryFallback({
error,
resetErrorBoundary,
}: FallbackProps) {
return (
<ErrorMessage onReset={resetErrorBoundary}>{error.message}</ErrorMessage>
);
}

View File

@@ -1 +0,0 @@
export { default } from './ErrorBoundaryFallback';

View File

@@ -1,2 +0,0 @@
export * from './ErrorMessage';
export { default } from './ErrorMessage';

View File

@@ -1,31 +0,0 @@
import { FeedbackReceived } from '@/components/home/FeedbackReceived';
import { SendFeedback } from '@/components/home/SendFeedback';
import type { DetailedHTMLProps, HTMLProps } from 'react';
import { useState } from 'react';
import { twMerge } from 'tailwind-merge';
export interface FeedbackFormProps
extends DetailedHTMLProps<HTMLProps<HTMLDivElement>, HTMLDivElement> {}
// TODO: Use `react-hook-form` here instead of the custom solution
export default function FeedbackForm({
className,
...props
}: FeedbackFormProps) {
const [feedback, setFeedback] = useState('');
const [feedbackSent, setFeedbackSent] = useState(false);
return (
<div className={twMerge('max-w-md py-4 px-5', className)} {...props}>
{!feedbackSent ? (
<SendFeedback
setFeedbackSent={setFeedbackSent}
feedback={feedback}
setFeedback={setFeedback}
/>
) : (
<FeedbackReceived setFeedbackSent={setFeedbackSent} close={() => {}} />
)}
</div>
);
}

View File

@@ -1,2 +0,0 @@
export * from './FeedbackForm';
export { default } from './FeedbackForm';

View File

@@ -1,2 +0,0 @@
export * from './Form';
export { default } from './Form';

View File

@@ -1,2 +0,0 @@
export * from './FormActivityIndicator';
export { default } from './FormActivityIndicator';

View File

@@ -1,2 +0,0 @@
export * from './Header';
export { default } from './Header';

View File

@@ -1 +0,0 @@
export { default } from './HighlightedText';

View File

@@ -1,6 +1,6 @@
import type { NavLinkProps } from '@/components/common/NavLink';
import NavLink from '@/components/common/NavLink';
import type { SvgIconProps } from '@/ui/v2/icons/SvgIcon';
import { NavLink } from '@/components/common/NavLink';
import type { SvgIconProps } from '@/components/ui/v2/icons/SvgIcon';
import type { ForwardedRef, PropsWithoutRef, ReactElement } from 'react';
import { cloneElement, forwardRef, isValidElement } from 'react';
import { twMerge } from 'tailwind-merge';

View File

@@ -1,2 +1,2 @@
export * from './IconLink';
export { default } from './IconLink';
export { default as IconLink } from './IconLink';

View File

@@ -1,2 +0,0 @@
export * from './InlineCode';
export { default } from './InlineCode';

View File

@@ -1,19 +1,22 @@
import { useGetWorkspaceMemberInvitesToManageQuery } from '@/generated/graphql';
import useIsPlatform from '@/hooks/common/useIsPlatform';
import { Box } from '@/components/ui/v2/Box';
import { Button } from '@/components/ui/v2/Button';
import { Text } from '@/components/ui/v2/Text';
import { useIsPlatform } from '@/features/projects/common/hooks/useIsPlatform';
import {
GetAllWorkspacesAndProjectsDocument,
GetWorkspaceMemberInvitesToManageDocument,
useGetWorkspaceMemberInvitesToManageQuery,
} from '@/generated/graphql';
import { useSubmitState } from '@/hooks/useSubmitState';
import Box from '@/ui/v2/Box';
import Button from '@/ui/v2/Button';
import Text from '@/ui/v2/Text';
import { nhost } from '@/utils/nhost';
import { triggerToast } from '@/utils/toast';
import { updateOwnCache } from '@/utils/updateOwnCache';
import { useApolloClient } from '@apollo/client';
import { alpha } from '@mui/system';
import { useUserData } from '@nhost/nextjs';
import { useRouter } from 'next/router';
import { useEffect } from 'react';
export function InviteAnnounce() {
export default function InviteNotification() {
const user = useUserData();
const isPlatform = useIsPlatform();
@@ -24,13 +27,18 @@ export function InviteAnnounce() {
useSubmitState();
// @FIX: We probably don't want to poll every ten seconds for possible invites. (We can change later depending on how it works in production.) Maybe just on the workspace page?
const { data, loading, error, refetch, startPolling } =
useGetWorkspaceMemberInvitesToManageQuery({
variables: {
userId: user?.id,
},
skip: !isPlatform,
});
const {
data,
loading,
error,
refetch: refetchInvitations,
startPolling,
} = useGetWorkspaceMemberInvitesToManageQuery({
variables: {
userId: user?.id,
},
skip: !isPlatform || !user,
});
useEffect(() => {
startPolling(15000);
@@ -75,9 +83,14 @@ export function InviteAnnounce() {
});
}
await updateOwnCache(client);
await client.refetchQueries({
include: [
GetAllWorkspacesAndProjectsDocument,
GetWorkspaceMemberInvitesToManageDocument,
],
});
await router.push(`/${invite.workspace.slug}`);
await refetch();
await refetchInvitations();
triggerToast('Workspace invite accepted');
return setSubmitState({
error: null,
@@ -99,7 +112,6 @@ export function InviteAnnounce() {
workspaceMemberInviteId: inviteId,
isAccepted: false,
},
{ useAxios: false },
);
if (ignoreError) {
@@ -115,7 +127,10 @@ export function InviteAnnounce() {
// just refetch all data
await client.refetchQueries({
include: ['getOneUser', 'getWorkspaceMemberInvitesToManage'],
include: [
GetAllWorkspacesAndProjectsDocument,
GetWorkspaceMemberInvitesToManageDocument,
],
});
setIgnoreState({
@@ -183,5 +198,3 @@ export function InviteAnnounce() {
</Box>
);
}
export default InviteAnnounce;

View File

@@ -0,0 +1 @@
export { default as InviteNotification } from './InviteNotification';

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