diff --git a/.github/assets/logo.png b/.github/assets/logo.png index bdccedd5..2f53e44a 100644 Binary files a/.github/assets/logo.png and b/.github/assets/logo.png differ diff --git a/README.md b/README.md index 66bbecb4..3fbd67ed 100644 --- a/README.md +++ b/README.md @@ -45,10 +45,10 @@
diff --git a/package-lock.json b/package-lock.json index 5a8e1a82..621fe4e6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,11 +8,16 @@ "name": "tachiyomi-website", "version": "3.0.0", "license": "MPL-2.0", + "dependencies": { + "vitepress-plugin-auto-sidebar": "^1.1.0" + }, "devDependencies": { + "feed": "^4.2.2", "markdownlint": "^0.29.0", "markdownlint-cli": "^0.35.0", "prettier": "^3.0.0", "sentences-per-line": "^0.2.1", + "sitemap": "^7.1.1", "vitepress": "^1.0.0-beta.5", "vue": "^3.3.4" } @@ -296,6 +301,21 @@ "node": ">=14" } }, + "node_modules/@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", + "dev": true + }, + "node_modules/@types/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-pSAff4IAxJjfAXUG6tFkO7dsSbTmf8CtUpfhhZ5VhkRpC4628tJhh3+V6H1E+/Gs9piSzYKT5yzHO5M4GG9jkw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/web-bluetooth": { "version": "0.0.17", "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.17.tgz", @@ -665,6 +685,12 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true + }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -815,6 +841,18 @@ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true }, + "node_modules/feed": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz", + "integrity": "sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==", + "dev": true, + "dependencies": { + "xml-js": "^1.6.11" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/focus-trap": { "version": "7.5.2", "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.2.tgz", @@ -1218,6 +1256,12 @@ "run-con": "cli.js" } }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, "node_modules/search-insights": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.7.0.tgz", @@ -1334,6 +1378,25 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/sitemap": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-7.1.1.tgz", + "integrity": "sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==", + "dev": true, + "dependencies": { + "@types/node": "^17.0.5", + "@types/sax": "^1.2.1", + "arg": "^5.0.0", + "sax": "^1.2.4" + }, + "bin": { + "sitemap": "dist/cli.js" + }, + "engines": { + "node": ">=12.0.0", + "npm": ">=5.6.0" + } + }, "node_modules/source-map-js": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", @@ -1549,6 +1612,14 @@ "vitepress": "bin/vitepress.js" } }, + "node_modules/vitepress-plugin-auto-sidebar": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vitepress-plugin-auto-sidebar/-/vitepress-plugin-auto-sidebar-1.1.0.tgz", + "integrity": "sha512-LgkpjKVlNlQS54PFv5R/Y4+CHtHoXsJ3xgyVTKNi0sG1fXUmViKCg3Hnl9eo/SfNn894qsNRXoNneQmRBP2Lmw==", + "engines": { + "node": "^14.13.1 || ^16.7.0 || >=18" + } + }, "node_modules/vitepress/node_modules/vite": { "version": "4.4.0-beta.3", "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.0-beta.3.tgz", @@ -1734,6 +1805,18 @@ "engines": { "node": ">=8" } + }, + "node_modules/xml-js": { + "version": "1.6.11", + "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", + "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", + "dev": true, + "dependencies": { + "sax": "^1.2.4" + }, + "bin": { + "xml-js": "bin/cli.js" + } } } } diff --git a/package.json b/package.json index 2469eaa3..a2ccd4e7 100644 --- a/package.json +++ b/package.json @@ -20,10 +20,12 @@ "lint:mdl": "markdownlint \"**/*.md\" \".github/**/*.md\" --enable sentences-per-line --disable MD025 MD033" }, "devDependencies": { + "feed": "^4.2.2", "markdownlint": "^0.29.0", "markdownlint-cli": "^0.35.0", "prettier": "^3.0.0", "sentences-per-line": "^0.2.1", + "sitemap": "^7.1.1", "vitepress": "^1.0.0-beta.5", "vue": "^3.3.4" }, @@ -34,5 +36,8 @@ "*": [ "prettier --write --ignore-unknown" ] + }, + "dependencies": { + "vitepress-plugin-auto-sidebar": "^1.1.0" } } diff --git a/src/.vitepress/config.ts b/src/.vitepress/config.ts deleted file mode 100644 index daf63961..00000000 --- a/src/.vitepress/config.ts +++ /dev/null @@ -1,165 +0,0 @@ -import { defineConfig, loadEnv } from "vitepress"; - -// https://vitepress.dev/reference/site-config -export default ({ mode }) => { - // Load app-level env vars to node-level env vars. - process.env = { ...process.env, ...loadEnv(mode, process.cwd()) }; - - return defineConfig({ - lang: "en-US", - title: "Tachiyomi", - description: "Free and open source manga reader for Android", - - lastUpdated: true, - cleanUrls: true, - - // Base directory, enabling override ability needed for GitHub Pages - base: process.env.VITE_BASE || "/", - - head: [ - [ - "meta", - { - name: "theme-color", - content: "#818CF8", - }, - ], - ], - - themeConfig: { - // https://vitepress.dev/reference/default-theme-config - logo: "/logo.png", - - nav: nav(), - - sidebar: { - "/docs/": sidebarGuide(), - "/forks/": sidebarGuide(), - }, - - outline: [2, 3], - - socialLinks: [ - { icon: "github", link: "https://github.com/tachiyomiorg/tachiyomi" }, - { icon: "twitter", link: "https://twitter.com/tachiyomiorg" }, - { icon: "facebook", link: "https://facebook.com/tachiyomiorg" }, - { icon: "discord", link: "https://discord.gg/tachiyomi" }, - ], - - footer: { - message: "Open-source Apache Licensed | Privacy policy", - copyright: `Copyright © 2015 - ${new Date().getFullYear()} Javier Tomás`, - }, - - editLink: { - pattern: "https://github.com/xhenos/kodo/edit/v3-vitepress/src/:path", - text: "Help us improve this page", - }, - - lastUpdated: { - text: "Last updated", - formatOptions: { - dateStyle: "long", - timeStyle: "short", - }, - }, - - search: { - provider: "local", - }, - }, - }); -}; - -function nav() { - return [ - { - text: "Documentation", - link: "/docs/guides/getting-started", - activeMatch: "/docs/", - }, - { - text: "0.14.6", - items: [ - { - text: "Download", - link: "/download", - }, - { - text: "Changelog", - link: "https://github.com/tachiyomiorg/tachiyomi/releases/latest", - }, - { - text: "Contributing", - link: "https://github.com/tachiyomiorg/tachiyomi/blob/master/CONTRIBUTING.md", - }, - ], - }, - ]; -} - -function sidebarGuide() { - return [ - { - text: "Frequently Asked Questions", - items: [ - { text: "General", link: "/docs/faq/general" }, - { - text: "Application", - link: "/docs/faq/application/", - collapsed: true, - items: [ - { text: "Library", link: "/docs/faq/application/library" }, - { - text: "Browse", - link: "/docs/faq/application/browse/", - collapsed: true, - items: [ - { - text: "Reading with Local Source", - link: "/docs/faq/application/browse/reading-with-local-source", - }, - ], - }, - { text: "Downloads", link: "/docs/faq/application/downloads" }, - { text: "Reader", link: "/docs/faq/application/reader" }, - { text: "User interface", link: "/docs/faq/application/user-interface" }, - { text: "Android 11+", link: "/docs/faq/application/android-11+" }, - { text: "Shizuku", link: "/docs/faq/application/shizuku" }, - ], - }, - { text: "Extensions", link: "/docs/faq/extensions" }, - { text: "Miscellaneous", link: "/docs/faq/miscellaneous" }, - ], - }, - { - text: "Guides", - items: [ - { text: "Getting started", link: "/docs/guides/getting-started" }, - { text: "Troubleshooting", link: "/docs/guides/troubleshooting" }, - { text: "Source migration", link: "/docs/guides/source-migration" }, - { text: "Backups", link: "/docs/guides/backups" }, - { text: "Tracking", link: "/docs/guides/tracking" }, - { text: "Categories", link: "/docs/guides/categories" }, - { text: "Local manga", link: "/docs/guides/local-manga" }, - { text: "Reader settings", link: "/docs/guides/reader-settings" }, - ], - }, - { - text: "Contribution", - link: "/docs/contribution", - }, - { - text: "Download", - link: "/download", - }, - { - text: "Extensions", - link: "/extensions", - }, - { - text: "Forks", - link: "/forks/", - }, - ]; -} diff --git a/src/.vitepress/config/head.ts b/src/.vitepress/config/head.ts new file mode 100644 index 00000000..f6100d49 --- /dev/null +++ b/src/.vitepress/config/head.ts @@ -0,0 +1,22 @@ +import type { HeadConfig } from "vitepress"; + +const head: HeadConfig[] = [ + ["meta", { name: "theme-color", content: "#818CF8" }], + + ["meta", { name: "viewport", content: "width=device-width, initial-scale=1.0" }], + ["meta", { name: "referrer", content: "no-referrer-when-downgrade" }], + + ["link", { rel: "icon", type: "image/x-icon", href: "/favicon.ico" }], + ["link", { rel: "icon", type: "image/png", sizes: "32x32", href: "/favicon-32x32.png" }], + ["link", { rel: "icon", type: "image/png", sizes: "16x16", href: "/favicon-16x16.png" }], + ["link", { rel: "apple-touch-icon", type: "image/x-icon", sizes: "180x180", href: "/favicon.ico" }], + + ["meta", { name: "twitter:card", content: "summary_large_image" }], + ["meta", { name: "twitter:site", content: "@tachiyomiorg" }], + ["meta", { name: "twitter:creator", content: "@tachiyomiorg" }], + + ["meta", { property: "og:site_name", content: "Tachiyomi" }], + ["meta", { property: "og:locale", content: "en_US" }], +]; + +export default head; diff --git a/src/.vitepress/config/hooks/generateFeed.ts b/src/.vitepress/config/hooks/generateFeed.ts new file mode 100644 index 00000000..23613afb --- /dev/null +++ b/src/.vitepress/config/hooks/generateFeed.ts @@ -0,0 +1,48 @@ +import path from "path"; +import { writeFileSync } from "fs"; +import { Feed } from "feed"; +import { createContentLoader, type SiteConfig } from "vitepress"; + +async function generateFeed(config: SiteConfig, hostname: string) { + const feed = new Feed({ + title: "Tachiyomi", + description: "Free and open source manga reader for Android", + id: hostname, + link: hostname, + language: "en", + image: `${hostname}/img/logo.png`, + favicon: `${hostname}/favicon.ico`, + copyright: `Copyright © 2015 - ${new Date().getFullYear()} Javier Tomás`, + }); + + const posts = await createContentLoader("news/*.md", { + excerpt: true, + render: true, + }).load(); + + // Filter everything that"s not of type `article` (e.g. index.md) + const filteredPosts = posts.filter((post) => post.frontmatter.type === "article"); + + filteredPosts.sort((a, b) => +new Date(b.frontmatter.date as string) - +new Date(a.frontmatter.date as string)); + + for (const { url, excerpt, frontmatter, html } of filteredPosts) { + const fullUrl = `${hostname}${url}`; + + // Strip `​` from `html` string + const content = html?.replace(/​/g, ""); + + feed.addItem({ + title: frontmatter.title, + id: fullUrl, + link: fullUrl, + // description: excerpt, + description: frontmatter.description, + content: content, + date: frontmatter.date, + }); + } + + writeFileSync(path.join(config.outDir, "feed.rss"), feed.rss2()); +} + +export default generateFeed; diff --git a/src/.vitepress/config/hooks/generateMeta.ts b/src/.vitepress/config/hooks/generateMeta.ts new file mode 100644 index 00000000..51a95af2 --- /dev/null +++ b/src/.vitepress/config/hooks/generateMeta.ts @@ -0,0 +1,43 @@ +import type { HeadConfig, TransformContext } from "vitepress"; + +const generateMeta = (context: TransformContext, hostname: string) => { + const head: HeadConfig[] = []; + const { pageData } = context; + + const url = `${hostname}/${pageData.relativePath.replace(/((^|\/)index)?\.md$/, "$2")}`; + + head.push(["link", { rel: "canonical", href: url }]); + + head.push(["meta", { property: "og:url", content: url }]); + head.push(["meta", { property: "og:type", content: pageData.frontmatter.type }]); + head.push(["meta", { property: "og:title", content: pageData.frontmatter.title }]); + head.push(["meta", { property: "og:description", content: pageData.frontmatter.description }]); + + head.push(["meta", { name: "twitter:url", content: url }]); + head.push(["meta", { name: "twitter:title", content: pageData.frontmatter.title }]); + head.push(["meta", { name: "twitter:description", content: pageData.frontmatter.description }]); + + if (pageData.frontmatter.image) { + head.push(["meta", { property: "og:image", content: `${hostname}/${pageData.frontmatter.image}` }]); + head.push(["meta", { name: "twitter:image", content: `${hostname}/${pageData.frontmatter.image}` }]); + } + + if (pageData.frontmatter.tag) { + head.push(["meta", { property: "article:tag", content: pageData.frontmatter.tag }]); + } + + if (pageData.frontmatter.date) { + head.push(["meta", { property: "article:published_time", content: pageData.frontmatter.date }]); + } + + if (pageData.lastUpdated && pageData.frontmatter.lastUpdated !== false) { + head.push([ + "meta", + { property: "article:modified_time", content: new Date(pageData.lastUpdated).toISOString() }, + ]); + } + + return head; +}; + +export default generateMeta; diff --git a/src/.vitepress/config/hooks/generateSitemap.ts b/src/.vitepress/config/hooks/generateSitemap.ts new file mode 100644 index 00000000..1cc3b26d --- /dev/null +++ b/src/.vitepress/config/hooks/generateSitemap.ts @@ -0,0 +1,22 @@ +import { createContentLoader } from "vitepress"; +import type { SiteConfig } from "vitepress"; + +import { createWriteStream } from "node:fs"; +import { resolve } from "node:path"; +import { SitemapStream } from "sitemap"; + +const generateSitemap = async (context: SiteConfig, hostname: string) => { + const { outDir } = context; + + const sitemap = new SitemapStream({ hostname: hostname }); + const pages = await createContentLoader("**/*.md").load(); + const writeStream = createWriteStream(resolve(outDir, "sitemap.xml")); + + sitemap.pipe(writeStream); + pages.forEach((page) => sitemap.write(page.url.replace(/index$/g, "").replace(/^\/src/, ""))); + sitemap.end(); + + await new Promise((r) => writeStream.on("finish", r)); +}; + +export default generateSitemap; diff --git a/src/.vitepress/config/index.ts b/src/.vitepress/config/index.ts new file mode 100644 index 00000000..8bb841b1 --- /dev/null +++ b/src/.vitepress/config/index.ts @@ -0,0 +1,31 @@ +import { defineConfig, loadEnv } from "vitepress"; + +import theme from "./theme"; +import head from "./head"; + +import generateMeta from "./hooks/generateMeta"; +import generateSitemap from "./hooks/generateSitemap"; +import generateFeed from "./hooks/generateFeed"; + +const hostname: string = "https://kodo.moe"; + +export default ({ mode }) => { + process.env = { ...process.env, ...loadEnv(mode, process.cwd()) }; + + return defineConfig({ + appearance: "dark", + lastUpdated: true, + cleanUrls: true, + base: process.env.VITE_BASE || "/", + lang: "en-US", + title: "Tachiyomi", + description: "Free and open source manga reader for Android", + head, + themeConfig: theme, + transformHead: async (context) => generateMeta(context, hostname), + buildEnd: async (context) => { + generateSitemap(context, hostname); + generateFeed(context, hostname); + }, + }); +}; diff --git a/src/.vitepress/config/navigation/navbar.ts b/src/.vitepress/config/navigation/navbar.ts new file mode 100644 index 00000000..64da134d --- /dev/null +++ b/src/.vitepress/config/navigation/navbar.ts @@ -0,0 +1,26 @@ +const nav = [ + { + text: "Documentation", + link: "/docs/guides/getting-started", + activeMatch: "/docs/", + }, + { + text: "0.14.6", + items: [ + { + text: "Download", + link: "/download", + }, + { + text: "Changelog", + link: "https://github.com/tachiyomiorg/tachiyomi/releases/latest", + }, + { + text: "Contributing", + link: "https://github.com/tachiyomiorg/tachiyomi/blob/master/CONTRIBUTING.md", + }, + ], + }, +]; + +export default nav; diff --git a/src/.vitepress/config/navigation/sidebar.ts b/src/.vitepress/config/navigation/sidebar.ts new file mode 100644 index 00000000..dfaebdd2 --- /dev/null +++ b/src/.vitepress/config/navigation/sidebar.ts @@ -0,0 +1,75 @@ +import { getSidebar } from "vitepress-plugin-auto-sidebar"; + +const sidebar = { + "/docs/": defaultSidebar(), + "/forks/": defaultSidebar(), + "/news/": getSidebar({ contentRoot: "/src/", contentDirs: ["news"], collapsed: false }), +}; + +function defaultSidebar() { + return [ + { + text: "Frequently Asked Questions", + items: [ + { text: "General", link: "/docs/faq/general" }, + { + text: "Application", + link: "/docs/faq/application/", + collapsed: true, + items: [ + { text: "Library", link: "/docs/faq/application/library" }, + { + text: "Browse", + link: "/docs/faq/application/browse/", + collapsed: true, + items: [ + { + text: "Reading with Local Source", + link: "/docs/faq/application/browse/reading-with-local-source", + }, + ], + }, + { text: "Downloads", link: "/docs/faq/application/downloads" }, + { text: "Reader", link: "/docs/faq/application/reader" }, + { text: "User interface", link: "/docs/faq/application/user-interface" }, + { text: "Android 11+", link: "/docs/faq/application/android-11+" }, + { text: "Shizuku", link: "/docs/faq/application/shizuku" }, + ], + }, + { text: "Extensions", link: "/docs/faq/extensions" }, + { text: "Miscellaneous", link: "/docs/faq/miscellaneous" }, + ], + }, + { + text: "Guides", + items: [ + { text: "Getting started", link: "/docs/guides/getting-started" }, + { text: "Troubleshooting", link: "/docs/guides/troubleshooting" }, + { text: "Source migration", link: "/docs/guides/source-migration" }, + { text: "Backups", link: "/docs/guides/backups" }, + { text: "Tracking", link: "/docs/guides/tracking" }, + { text: "Categories", link: "/docs/guides/categories" }, + { text: "Local manga", link: "/docs/guides/local-manga" }, + { text: "Reader settings", link: "/docs/guides/reader-settings" }, + ], + }, + { + text: "Contribution", + link: "/docs/contribution", + }, + { + text: "Download", + link: "/download", + }, + { + text: "Extensions", + link: "/extensions", + }, + { + text: "Forks", + link: "/forks/", + }, + ]; +} + +export default sidebar; diff --git a/src/.vitepress/config/theme.ts b/src/.vitepress/config/theme.ts new file mode 100644 index 00000000..ed568f23 --- /dev/null +++ b/src/.vitepress/config/theme.ts @@ -0,0 +1,45 @@ +import type { DefaultTheme } from "vitepress"; + +import nav from "./navigation/navbar"; +import sidebar from "./navigation/sidebar"; + +const themeConfig: DefaultTheme.Config = { + logo: "/img/logo-128px.png", + + nav: nav, + sidebar: sidebar, + + outline: [2, 3], + + socialLinks: [ + { icon: "github", link: "https://github.com/tachiyomiorg/tachiyomi" }, + { icon: "twitter", link: "https://twitter.com/tachiyomiorg" }, + { icon: "facebook", link: "https://facebook.com/tachiyomiorg" }, + { icon: "discord", link: "https://discord.gg/tachiyomi" }, + ], + + footer: { + message: + "Open-source Apache Licensed | Privacy policy", + copyright: `Copyright © 2015 - ${new Date().getFullYear()} Javier Tomás`, + }, + + editLink: { + pattern: "https://github.com/xhenos/kodo/edit/v3-vitepress/src/:path", + text: "Help us improve this page", + }, + + lastUpdated: { + text: "Last updated", + formatOptions: { + dateStyle: "long", + timeStyle: "short", + }, + }, + + search: { + provider: "local", + }, +}; + +export default themeConfig; diff --git a/src/news/updated-website.md b/src/news/updated-website.md new file mode 100644 index 00000000..4e48caf5 --- /dev/null +++ b/src/news/updated-website.md @@ -0,0 +1,10 @@ +--- +type: article +title: Updated website +description: We've got a fresh new website we hope will be even easier to use +date: 2023-07-20 +--- + +# Updated website + +We've got a fresh new website we hope will be even easier to use diff --git a/src/public/favicon-16x16.png b/src/public/favicon-16x16.png new file mode 100644 index 00000000..3162c5e2 Binary files /dev/null and b/src/public/favicon-16x16.png differ diff --git a/src/public/favicon-32x32.png b/src/public/favicon-32x32.png new file mode 100644 index 00000000..c30787c3 Binary files /dev/null and b/src/public/favicon-32x32.png differ diff --git a/src/public/favicon.ico b/src/public/favicon.ico index 067a2b86..d381f15f 100644 Binary files a/src/public/favicon.ico and b/src/public/favicon.ico differ diff --git a/src/public/img/logo-128px.png b/src/public/img/logo-128px.png new file mode 100644 index 00000000..2f53e44a Binary files /dev/null and b/src/public/img/logo-128px.png differ diff --git a/src/public/img/logo.png b/src/public/img/logo.png new file mode 100644 index 00000000..3c5e5146 Binary files /dev/null and b/src/public/img/logo.png differ diff --git a/src/public/logo.svg b/src/public/img/logo.svg similarity index 82% rename from src/public/logo.svg rename to src/public/img/logo.svg index d927c129..9781b62c 100644 --- a/src/public/logo.svg +++ b/src/public/img/logo.svg @@ -1,6 +1,6 @@ \ No newline at end of file diff --git a/src/public/logo.ico b/src/public/logo.ico deleted file mode 100644 index 067a2b86..00000000 Binary files a/src/public/logo.ico and /dev/null differ diff --git a/src/public/logo.png b/src/public/logo.png deleted file mode 100644 index bdccedd5..00000000 Binary files a/src/public/logo.png and /dev/null differ