From 7eb55e2a140687e77b9a46787723600727a94e22 Mon Sep 17 00:00:00 2001 From: thislight Date: Tue, 22 Oct 2024 17:48:17 +0800 Subject: [PATCH] added icon --- bun.lockb | Bin 241087 -> 274362 bytes docs/optimizing.md | 26 +++++++++ manifest.config.ts | 10 ++++ package.json | 29 ++++----- public/logo.svg | 133 ++++++++++++++++++++++++++++++++++++++++++ public/robots.txt | 2 + pwa-assets.config.ts | 12 ++++ src/platform/i18n.tsx | 2 +- vite.config.ts | 8 ++- 9 files changed, 204 insertions(+), 18 deletions(-) create mode 100644 docs/optimizing.md create mode 100644 manifest.config.ts create mode 100644 public/logo.svg create mode 100644 public/robots.txt create mode 100644 pwa-assets.config.ts diff --git a/bun.lockb b/bun.lockb index b7b99988a877e035a9b6b1cd52af4c89b522cb11..42d618851b1a738afbddb18a9af6accd5f56516b 100755 GIT binary patch delta 66544 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 diff --git a/docs/optimizing.md b/docs/optimizing.md new file mode 100644 index 0000000..92f3005 --- /dev/null +++ b/docs/optimizing.md @@ -0,0 +1,26 @@ +# Optimizing Tutu + +Topic Index: + +- Time to first byte +- Time to first draw: [Load size](#load-size) +- CLS +- Framerate: [Algorithm](#algorithm) + +## Load size + +The baseline for the load size is lowest 3G download bandwidth in 2s, typically 1.1Mbps (or ~137 kilobytes/s) * 2s = 274 kilobytes. + +In another words there is 274 kilobytes budget for an interaction without further notice. Notice and progress are needed if the interaction needs than that. + +The service worker can use 1 chunk of size. + +## Algorithm + +Don't choose algorithm solely on the time complexity. GUI app needs smooth, not fast. The priority: + +- On the main thread: batching. Batching is usually required to spread the work to multiple frames. + - Think in Map-Reduce framework if you don't have any idea. +- On the worker thread: balance the speed and the memory usage. + - Arrays are usually faster and use less memory. + - Worker is always available on our target platforms, but workers introduce latency in the starting and the communication. diff --git a/manifest.config.ts b/manifest.config.ts new file mode 100644 index 0000000..c6ac14e --- /dev/null +++ b/manifest.config.ts @@ -0,0 +1,10 @@ +import { ManifestOptions } from "vite-plugin-pwa"; + +const manifest: Partial = { + name: "Tutu for Mastodon", + short_name: "Tutu", + description: "Tutu is an app to read, post, dog and cat on the mastodon.", + theme_color: "#673ab7" +}; + +export default manifest; diff --git a/package.json b/package.json index 8575c58..54e01ef 100644 --- a/package.json +++ b/package.json @@ -14,40 +14,41 @@ "author": "Rubicon", "license": "Apache-2.0", "devDependencies": { - "@suid/vite-plugin": "^0.3.0", - "@types/hammerjs": "^2.0.45", - "postcss": "^8.4.45", + "@suid/vite-plugin": "^0.3.1", + "@types/hammerjs": "^2.0.46", + "@vite-pwa/assets-generator": "^0.2.6", + "postcss": "^8.4.47", "prettier": "^3.3.3", - "typescript": "^5.6.2", - "vite": "^5.4.5", + "typescript": "^5.6.3", + "vite": "^5.4.9", "vite-plugin-package-version": "^1.1.0", "vite-plugin-pwa": "^0.20.5", "vite-plugin-solid": "^2.10.2", "vite-plugin-solid-styled": "^0.11.1", "workbox-build": "^7.1.1", - "wrangler": "^3.78.2" + "wrangler": "^3.81.0" }, "dependencies": { - "@formatjs/intl-localematcher": "^0.5.4", + "@formatjs/intl-localematcher": "^0.5.5", "@nanostores/persistent": "^0.10.2", - "@nanostores/solid": "^0.4.2", + "@nanostores/solid": "^0.5.0", "@solid-primitives/event-listener": "^2.3.3", "@solid-primitives/i18n": "^2.1.1", "@solid-primitives/intersection-observer": "^2.1.6", "@solid-primitives/map": "^0.4.13", "@solid-primitives/resize-observer": "^2.0.26", - "@solidjs/router": "^0.14.5", - "@suid/icons-material": "^0.8.0", - "@suid/material": "^0.17.0", + "@solidjs/router": "^0.14.10", + "@suid/icons-material": "^0.8.1", + "@suid/material": "^0.18.0", "blurhash": "^2.0.5", "colorjs.io": "^0.5.2", - "date-fns": "^3.6.0", + "date-fns": "^4.1.0", "fast-average-color": "^9.4.0", "hammerjs": "^2.0.8", "iso-639-1": "^3.1.3", - "masto": "^6.8.0", + "masto": "^6.10.0", "nanostores": "^0.11.3", - "solid-js": "^1.8.22", + "solid-js": "^1.9.2", "solid-styled": "^0.11.1", "stacktrace-js": "^2.0.2", "web-animations-js": "^2.3.2", diff --git a/public/logo.svg b/public/logo.svg new file mode 100644 index 0000000..c3b58f5 --- /dev/null +++ b/public/logo.svg @@ -0,0 +1,133 @@ + + + + + Tutu's Icon + + + + + + + + + + + + + + + + + + + + + Tutu's Icon + 2024/10/22 + + + Rubicon + + + + + Rubicon + + + + + + + + + + + + + + + + diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..c2a49f4 --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Allow: / diff --git a/pwa-assets.config.ts b/pwa-assets.config.ts new file mode 100644 index 0000000..5766e34 --- /dev/null +++ b/pwa-assets.config.ts @@ -0,0 +1,12 @@ +import { + defineConfig, + minimal2023Preset as preset +} from '@vite-pwa/assets-generator/config' + +export default defineConfig({ + headLinkOptions: { + preset: '2023' + }, + preset, + images: ['public/logo.svg'] +}) \ No newline at end of file diff --git a/src/platform/i18n.tsx b/src/platform/i18n.tsx index b31d888..ff03e14 100644 --- a/src/platform/i18n.tsx +++ b/src/platform/i18n.tsx @@ -78,7 +78,7 @@ async function importDateFnLocale(tag: string): Promise { case "en_us": return (await import("date-fns/locale/en-US")).enUS; case "en_gb": - return (await import("date-fns/locale/en-GB")).enGB; + return enGB; case "zh_cn": return (await import("date-fns/locale/zh-CN")).zhCN; default: diff --git a/vite.config.ts b/vite.config.ts index bd0b6d1..ae43ff6 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -4,6 +4,7 @@ import solidStyled from "vite-plugin-solid-styled"; import suid from "@suid/vite-plugin"; import { VitePWA } from "vite-plugin-pwa"; import version from "vite-plugin-package-version"; +import manifest from "./manifest.config"; export default defineConfig(({ mode }) => ({ plugins: [ @@ -23,9 +24,10 @@ export default defineConfig(({ mode }) => ({ }, srcDir: "src/serviceworker", filename: "main.ts", - manifest: { - theme_color: "#673ab7" - } + manifest: manifest, + pwaAssets: { + config: true, + }, }), version(), ],