diff --git a/deno.json b/deno.json
index 9e8ea49..1ce5480 100644
--- a/deno.json
+++ b/deno.json
@@ -20,6 +20,7 @@
"id": "docker exec -ti autorender-server deno task id",
"board": "docker exec -ti autorender-server deno task board",
"processing": "docker exec -ti autorender-server deno task processing",
+ "optimize": "docker exec -ti autorender-server deno task optimize",
"migrate": "docker exec -ti autorender-server deno task migrate",
"build": "docker compose build",
"up": "docker compose up",
diff --git a/src/server/app/App.tsx b/src/server/app/App.tsx
index d6a2bae..5ff17e6 100644
--- a/src/server/app/App.tsx
+++ b/src/server/app/App.tsx
@@ -31,11 +31,13 @@ const metaNames: (keyof RouteMeta)[] = [
const getCSP = (nonce: string) => {
return [
`default-src 'self';`,
- `script-src 'nonce-${nonce}' cdnjs.cloudflare.com;`,
- `style-src 'nonce-${nonce}' cdnjs.cloudflare.com https://fonts.googleapis.com;`,
+ `script-src 'nonce-${nonce}' 'strict-dynamic' 'unsafe-inline' https:;`,
+ `style-src 'nonce-${nonce}';`,
`font-src 'self' https://fonts.gstatic.com;`,
`media-src 'self' blob: *.backblazeb2.com;`,
`img-src 'self' data: cdn.discordapp.com *.backblazeb2.com;`,
+ `object-src 'none';`,
+ `base-uri 'none';`,
].join(' ');
};
@@ -70,21 +72,25 @@ export const Head = ({ initialState }: HeadProps) => {
return ;
})}
{title}
+
>
@@ -99,9 +105,9 @@ export const Body = ({ initialState, children }: BodyProps) => {
diff --git a/src/server/app/assets/images/404.jpg b/src/server/app/assets/images/404.jpg
deleted file mode 100644
index 2c3e066..0000000
Binary files a/src/server/app/assets/images/404.jpg and /dev/null differ
diff --git a/src/server/app/assets/images/404.webp b/src/server/app/assets/images/404.webp
new file mode 100644
index 0000000..90677be
Binary files /dev/null and b/src/server/app/assets/images/404.webp differ
diff --git a/src/server/app/assets/images/autorender_avatar.webp b/src/server/app/assets/images/autorender_avatar.webp
new file mode 100644
index 0000000..76c0fce
Binary files /dev/null and b/src/server/app/assets/images/autorender_avatar.webp differ
diff --git a/src/server/app/assets/images/autorender_logo.webp b/src/server/app/assets/images/autorender_logo.webp
new file mode 100644
index 0000000..fdc050b
Binary files /dev/null and b/src/server/app/assets/images/autorender_logo.webp differ
diff --git a/src/server/app/assets/images/logo.png b/src/server/app/assets/images/logo.png
deleted file mode 100644
index 00fc201..0000000
Binary files a/src/server/app/assets/images/logo.png and /dev/null differ
diff --git a/src/server/app/assets/images/portal2boards_avatar.jpg b/src/server/app/assets/images/portal2boards_avatar.jpg
deleted file mode 100644
index 5f2548b..0000000
Binary files a/src/server/app/assets/images/portal2boards_avatar.jpg and /dev/null differ
diff --git a/src/server/app/assets/js/module.js b/src/server/app/assets/js/module.js
index f287864..e45103e 100644
--- a/src/server/app/assets/js/module.js
+++ b/src/server/app/assets/js/module.js
@@ -323,7 +323,6 @@ const initRerenderModal = () => {
disableSkipCoopVideos: rerenderModalSkipCoopCheckbox?.checked ?? false,
}),
})
- .catch(console.error)
.finally(() => location.replace(location.href));
});
};
@@ -366,7 +365,7 @@ if (location.pathname.startsWith('/videos/') && location.pathname.length === 19)
}
});
- fetch(`/api/v1${location.pathname}/views`, { method: 'POST' }).catch(console.error);
+ fetch(`/api/v1${location.pathname}/views`, { method: 'POST' });
initShareModal();
}
diff --git a/src/server/app/components/Navbar.tsx b/src/server/app/components/Navbar.tsx
index 83ead06..5ec84c0 100644
--- a/src/server/app/components/Navbar.tsx
+++ b/src/server/app/components/Navbar.tsx
@@ -19,16 +19,26 @@ const Navbar = () => {
>