🪻 distributed transcription service thistle.dunkirk.sh

feat: use favicon image

dunkirk.sh b978d464 a7bdc127

verified
public/favicon/android-chrome-192x192.png

This is a binary file and will not be displayed.

public/favicon/android-chrome-512x512.png

This is a binary file and will not be displayed.

public/favicon/apple-touch-icon.png

This is a binary file and will not be displayed.

public/favicon/favicon-16x16.png

This is a binary file and will not be displayed.

public/favicon/favicon-32x32.png

This is a binary file and will not be displayed.

public/favicon/favicon.ico

This is a binary file and will not be displayed.

+1
public/favicon/site.webmanifest
···
+
{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
+5
src/index.ts
···
"/transcribe": transcribeHTML,
"/classes": classesHTML,
"/classes/*": classHTML,
+
"/apple-touch-icon.png": Bun.file("./public/favicon/apple-touch-icon.png"),
+
"/favicon-32x32.png": Bun.file("./public/favicon/favicon-32x32.png"),
+
"/favicon-16x16.png": Bun.file("./public/favicon/favicon-16x16.png"),
+
"/site.webmanifest": Bun.file("./public/favicon/site.webmanifest"),
+
"/favicon.ico": Bun.file("./public/favicon/favicon.ico"),
"/api/auth/register": {
POST: async (req) => {
try {
+5 -3
src/pages/admin.html
···
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Admin - Thistle</title>
-
<link rel="icon"
-
href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='0.9em' font-size='90'>🪻</text></svg>">
+
<link rel="apple-touch-icon" sizes="180x180" href="../../public/favicon/apple-touch-icon.png">
+
<link rel="icon" type="image/png" sizes="32x32" href="../../public/favicon/favicon-32x32.png">
+
<link rel="icon" type="image/png" sizes="16x16" href="../../public/favicon/favicon-16x16.png">
+
<link rel="manifest" href="../../public/favicon/site.webmanifest">
<link rel="stylesheet" href="../styles/main.css">
<style>
main {
···
<header>
<div class="header-content">
<a href="/" class="site-title">
-
<span>🪻</span>
+
<img src="../../public/favicon/favicon-32x32.png" alt="Thistle logo">
<span>Thistle</span>
</a>
<auth-component></auth-component>
+5 -3
src/pages/class.html
···
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Class - Thistle</title>
-
<link rel="icon"
-
href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='0.9em' font-size='90'>🪻</text></svg>">
+
<link rel="apple-touch-icon" sizes="180x180" href="../../public/favicon/apple-touch-icon.png">
+
<link rel="icon" type="image/png" sizes="32x32" href="../../public/favicon/favicon-32x32.png">
+
<link rel="icon" type="image/png" sizes="16x16" href="../../public/favicon/favicon-16x16.png">
+
<link rel="manifest" href="../../public/favicon/site.webmanifest">
<link rel="stylesheet" href="../styles/main.css">
</head>
···
<header>
<div class="header-content">
<a href="/" class="site-title">
-
<span>🪻</span>
+
<img src="../../public/favicon/favicon-32x32.png" alt="Thistle logo">
<span>Thistle - Classes</span>
</a>
<auth-component></auth-component>
+5 -3
src/pages/classes.html
···
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Classes - Thistle</title>
-
<link rel="icon"
-
href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='0.9em' font-size='90'>🪻</text></svg>">
+
<link rel="apple-touch-icon" sizes="180x180" href="../../public/favicon/apple-touch-icon.png">
+
<link rel="icon" type="image/png" sizes="32x32" href="../../public/favicon/favicon-32x32.png">
+
<link rel="icon" type="image/png" sizes="16x16" href="../../public/favicon/favicon-16x16.png">
+
<link rel="manifest" href="../../public/favicon/site.webmanifest">
<link rel="stylesheet" href="../styles/main.css">
</head>
···
<header>
<div class="header-content">
<a href="/" class="site-title">
-
<span>🪻</span>
+
<img src="../../public/favicon/favicon-32x32.png" alt="Thistle logo">
<span>Thistle - Classes</span>
</a>
<auth-component></auth-component>
+6 -4
src/pages/index.html
···
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Thistle</title>
-
<link rel="icon"
-
href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='0.9em' font-size='90'>🪻</text></svg>">
+
<link rel="apple-touch-icon" sizes="180x180" href="../../public/favicon/apple-touch-icon.png">
+
<link rel="icon" type="image/png" sizes="32x32" href="../../public/favicon/favicon-32x32.png">
+
<link rel="icon" type="image/png" sizes="16x16" href="../../public/favicon/favicon-16x16.png">
+
<link rel="manifest" href="../../public/favicon/site.webmanifest">
<link rel="stylesheet" href="../styles/main.css">
<style>
.hero-title {
···
<header>
<div class="header-content">
<a href="/" class="site-title">
-
<span>🪻</span>
+
<img src="../../public/favicon/favicon-32x32.png" alt="Thistle logo">
<span>Thistle</span>
</a>
<auth-component></auth-component>
···
document.getElementById('start-btn').addEventListener('click', async () => {
const authComponent = document.querySelector('auth-component');
const isLoggedIn = await authComponent.isAuthenticated();
-
+
if (isLoggedIn) {
window.location.href = '/classes';
} else {
+5 -3
src/pages/settings.html
···
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Settings - Thistle</title>
-
<link rel="icon"
-
href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='0.9em' font-size='90'>🪻</text></svg>">
+
<link rel="apple-touch-icon" sizes="180x180" href="../../public/favicon/apple-touch-icon.png">
+
<link rel="icon" type="image/png" sizes="32x32" href="../../public/favicon/favicon-32x32.png">
+
<link rel="icon" type="image/png" sizes="16x16" href="../../public/favicon/favicon-16x16.png">
+
<link rel="manifest" href="../../public/favicon/site.webmanifest">
<link rel="stylesheet" href="../styles/main.css">
<style>
···
<header>
<div class="header-content">
<a href="/" class="site-title">
-
<span>🪻</span>
+
<img src="../../public/favicon/favicon-32x32.png" alt="Thistle logo">
<span>Thistle - Settings</span>
</a>
<auth-component></auth-component>
+5 -3
src/pages/transcribe.html
···
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Transcribe - Thistle</title>
-
<link rel="icon"
-
href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='0.9em' font-size='90'>🪻</text></svg>">
+
<link rel="apple-touch-icon" sizes="180x180" href="../../public/favicon/apple-touch-icon.png">
+
<link rel="icon" type="image/png" sizes="32x32" href="../../public/favicon/favicon-32x32.png">
+
<link rel="icon" type="image/png" sizes="16x16" href="../../public/favicon/favicon-16x16.png">
+
<link rel="manifest" href="../../public/favicon/site.webmanifest">
<link rel="stylesheet" href="../styles/main.css">
<style>
.page-header {
···
<header>
<div class="header-content">
<a href="/" class="site-title">
-
<span>🪻</span>
+
<img src="../../public/favicon/favicon-32x32.png" alt="Thistle logo">
<span>Thistle - Transcription</span>
</a>
<auth-component></auth-component>
+5
src/styles/header.css
···
gap: 0.5rem;
}
+
.site-title img {
+
width: 2rem;
+
height: 2rem;
+
}
+
.site-title:hover {
color: var(--primary);
}