diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index a2622c16a..64180c0f8 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -96,7 +96,7 @@ for a Bazel LSP you can use the Bazel extension for VSCode and download [starpls
### Environment Variables
-We advice you to use [direnv](https://direnv.net/) to load the `.envrc` file, which sets up a few environment variables needed for development.
+We advise you to use [direnv](https://direnv.net/) to load the `.envrc` file, which sets up a few environment variables needed for development.
### Nix
diff --git a/cloud/core/emails/templates/emails/register_with_email/html.stpl b/cloud/core/emails/templates/emails/register_with_email/html.stpl
index 4fa907f79..854f25399 100644
--- a/cloud/core/emails/templates/emails/register_with_email/html.stpl
+++ b/cloud/core/emails/templates/emails/register_with_email/html.stpl
@@ -25,7 +25,7 @@
style="width: 310px; border-style: solid; border-width: thin; border-color: #E6DEDB; border-bottom-left-radius: 20px; border-bottom-right-radius: 20px; padding: 24px; background-color: #FAF5F1;">
- Thanks for singing up for Scuffle!
+ Thanks for signing up for Scuffle!
diff --git a/cloud/core/emails/templates/emails/register_with_email/text.stpl b/cloud/core/emails/templates/emails/register_with_email/text.stpl
index 3ffe888fb..f007760b8 100644
--- a/cloud/core/emails/templates/emails/register_with_email/text.stpl
+++ b/cloud/core/emails/templates/emails/register_with_email/text.stpl
@@ -1,4 +1,4 @@
-Thanks for singing up for Scuffle! Click the link below to access your Scuffle account.
+Thanks for signing up for Scuffle! Click the link below to access your Scuffle account.
<%= self.url %>
The link is valid for <%= self.timeout_minutes %> minutes.
diff --git a/cloud/dashboard/.env b/cloud/dashboard/.env
index 1f40d343a..65b9712bb 100644
--- a/cloud/dashboard/.env
+++ b/cloud/dashboard/.env
@@ -1,7 +1,6 @@
# Default Public Variables
# If you want to modify any of the values, create an .env.local file to override them.
-PUBLIC_VITE_MSW_ENABLED=true
PUBLIC_TURNSTILE_SITE_KEY=1x00000000000000000000AA
# The default developement deployment we use right now.
PUBLIC_GRPC_BASE_URL=https://core.lennart.scuf.dev/
diff --git a/cloud/dashboard/eslint.config.mjs b/cloud/dashboard/eslint.config.mjs
index 391c49075..91f5b3638 100644
--- a/cloud/dashboard/eslint.config.mjs
+++ b/cloud/dashboard/eslint.config.mjs
@@ -28,7 +28,6 @@ export default tsEslint.config(
"**/build",
"**/node_modules",
"**/package",
- "static/mockServiceWorker.js",
],
},
);
diff --git a/cloud/dashboard/package.json b/cloud/dashboard/package.json
index 3242c2a36..1441a2f4a 100644
--- a/cloud/dashboard/package.json
+++ b/cloud/dashboard/package.json
@@ -13,12 +13,13 @@
"@melt-ui/pp": "^0.3.2",
"@melt-ui/svelte": "^0.86.4",
"@protobuf-ts/grpcweb-transport": "^2.11.1",
+ "@protobuf-ts/runtime": "^2.11.1",
"@protobuf-ts/runtime-rpc": "^2.11.1",
"@scufflecloud/proto": "workspace:*",
"@sveltejs/adapter-static": "^3.0.8",
"@sveltejs/kit": "^2.16.0",
"@sveltejs/vite-plugin-svelte": "^5.0.3",
- "@tanstack/svelte-query": "^5.62.2",
+ "@tanstack/svelte-query": "^6.0.0",
"@types/d3-geo": "^3.1.0",
"@types/lodash": "^4.17.16",
"d3-geo": "^3.1.1",
@@ -30,8 +31,7 @@
"globals": "^16.0.0",
"lodash": "^4.17.21",
"melt": "^0.17.8",
- "msw": "^2.7.3",
- "svelte": "^5.16.0",
+ "svelte": "^5.39.8",
"svelte-echarts": "^1.0.0",
"svelte-eslint-parser": "^0.43.0",
"svelte-turnstile": "^0.11.0",
@@ -41,10 +41,5 @@
},
"dependenciesComments": {
"svelte-eslint-parser": "New version has errors with `pnpm lint`. Can resolve later."
- },
- "msw": {
- "workerDirectory": [
- "static"
- ]
}
}
diff --git a/cloud/dashboard/src/app.d.ts b/cloud/dashboard/src/app.d.ts
index d76242adf..082f115b8 100644
--- a/cloud/dashboard/src/app.d.ts
+++ b/cloud/dashboard/src/app.d.ts
@@ -7,6 +7,10 @@ declare global {
// interface PageData {}
// interface PageState {}
// interface Platform {}
+ interface PageState {
+ loginMode?: import("$lib/types").LoginMode;
+ userEmail?: string;
+ }
}
}
diff --git a/cloud/dashboard/src/components/settings-block.svelte b/cloud/dashboard/src/components/settings-block.svelte
deleted file mode 100644
index 9d67f7a99..000000000
--- a/cloud/dashboard/src/components/settings-block.svelte
+++ /dev/null
@@ -1,318 +0,0 @@
-
-
-
-
-
- {#each [icon] as IconComponent, index (`icon-${index}`)}
-
- {/each}
-
{/if}
diff --git a/cloud/dashboard/src/components/streams/events/chart.svelte b/cloud/dashboard/src/lib/components/streams/events/chart.svelte
similarity index 100%
rename from cloud/dashboard/src/components/streams/events/chart.svelte
rename to cloud/dashboard/src/lib/components/streams/events/chart.svelte
diff --git a/cloud/dashboard/src/components/streams/events/events-legend.svelte b/cloud/dashboard/src/lib/components/streams/events/events-legend.svelte
similarity index 100%
rename from cloud/dashboard/src/components/streams/events/events-legend.svelte
rename to cloud/dashboard/src/lib/components/streams/events/events-legend.svelte
diff --git a/cloud/dashboard/src/components/streams/events/events-list.svelte b/cloud/dashboard/src/lib/components/streams/events/events-list.svelte
similarity index 100%
rename from cloud/dashboard/src/components/streams/events/events-list.svelte
rename to cloud/dashboard/src/lib/components/streams/events/events-list.svelte
diff --git a/cloud/dashboard/src/components/streams/events/events-tab.svelte b/cloud/dashboard/src/lib/components/streams/events/events-tab.svelte
similarity index 100%
rename from cloud/dashboard/src/components/streams/events/events-tab.svelte
rename to cloud/dashboard/src/lib/components/streams/events/events-tab.svelte
diff --git a/cloud/dashboard/src/components/streams/events/sample-data.ts b/cloud/dashboard/src/lib/components/streams/events/sample-data.ts
similarity index 100%
rename from cloud/dashboard/src/components/streams/events/sample-data.ts
rename to cloud/dashboard/src/lib/components/streams/events/sample-data.ts
diff --git a/cloud/dashboard/src/components/streams/events/shape-renderers.ts b/cloud/dashboard/src/lib/components/streams/events/shape-renderers.ts
similarity index 100%
rename from cloud/dashboard/src/components/streams/events/shape-renderers.ts
rename to cloud/dashboard/src/lib/components/streams/events/shape-renderers.ts
diff --git a/cloud/dashboard/src/components/streams/events/stream-select.svelte b/cloud/dashboard/src/lib/components/streams/events/stream-select.svelte
similarity index 100%
rename from cloud/dashboard/src/components/streams/events/stream-select.svelte
rename to cloud/dashboard/src/lib/components/streams/events/stream-select.svelte
diff --git a/cloud/dashboard/src/components/streams/events/types.ts b/cloud/dashboard/src/lib/components/streams/events/types.ts
similarity index 100%
rename from cloud/dashboard/src/components/streams/events/types.ts
rename to cloud/dashboard/src/lib/components/streams/events/types.ts
diff --git a/cloud/dashboard/src/components/streams/header.svelte b/cloud/dashboard/src/lib/components/streams/header.svelte
similarity index 100%
rename from cloud/dashboard/src/components/streams/header.svelte
rename to cloud/dashboard/src/lib/components/streams/header.svelte
diff --git a/cloud/dashboard/src/components/streams/new-stream.svelte b/cloud/dashboard/src/lib/components/streams/new-stream.svelte
similarity index 100%
rename from cloud/dashboard/src/components/streams/new-stream.svelte
rename to cloud/dashboard/src/lib/components/streams/new-stream.svelte
diff --git a/cloud/dashboard/src/components/streams/overview/overview-tab.svelte b/cloud/dashboard/src/lib/components/streams/overview/overview-tab.svelte
similarity index 100%
rename from cloud/dashboard/src/components/streams/overview/overview-tab.svelte
rename to cloud/dashboard/src/lib/components/streams/overview/overview-tab.svelte
diff --git a/cloud/dashboard/src/components/streams/overview/video-header.svelte b/cloud/dashboard/src/lib/components/streams/overview/video-header.svelte
similarity index 100%
rename from cloud/dashboard/src/components/streams/overview/video-header.svelte
rename to cloud/dashboard/src/lib/components/streams/overview/video-header.svelte
diff --git a/cloud/dashboard/src/components/streams/settings/settings-tab.svelte b/cloud/dashboard/src/lib/components/streams/settings/settings-tab.svelte
similarity index 83%
rename from cloud/dashboard/src/components/streams/settings/settings-tab.svelte
rename to cloud/dashboard/src/lib/components/streams/settings/settings-tab.svelte
index 8d700196f..5cf01b59a 100644
--- a/cloud/dashboard/src/components/streams/settings/settings-tab.svelte
+++ b/cloud/dashboard/src/lib/components/streams/settings/settings-tab.svelte
@@ -1,6 +1,6 @@
diff --git a/cloud/dashboard/src/components/streams/stream-detail-tabs.svelte b/cloud/dashboard/src/lib/components/streams/stream-detail-tabs.svelte
similarity index 100%
rename from cloud/dashboard/src/components/streams/stream-detail-tabs.svelte
rename to cloud/dashboard/src/lib/components/streams/stream-detail-tabs.svelte
diff --git a/cloud/dashboard/src/components/streams/streams-table.svelte b/cloud/dashboard/src/lib/components/streams/streams-table.svelte
similarity index 92%
rename from cloud/dashboard/src/components/streams/streams-table.svelte
rename to cloud/dashboard/src/lib/components/streams/streams-table.svelte
index 9294d78fa..e8b8e02e6 100644
--- a/cloud/dashboard/src/components/streams/streams-table.svelte
+++ b/cloud/dashboard/src/lib/components/streams/streams-table.svelte
@@ -4,7 +4,7 @@
import StreamStatusPill from "$lib/shared-components/stream-status-pill.svelte";
import type { VideoStream } from "./types";
- export let streams: VideoStream[];
+ let { streams }: { streams: VideoStream[] } = $props();
// Map stream statuses to text that gets displayed here
const iconMap = {
@@ -25,18 +25,14 @@
{#each streams as stream (stream.id)}
+ {@const StatusIcon = iconMap[stream.status]}