From 0bb924421499493ac0c25e650d41e65b7e7df5ab Mon Sep 17 00:00:00 2001 From: coolxitech Date: Wed, 17 Dec 2025 21:58:00 +0800 Subject: [PATCH 01/10] =?UTF-8?q?feat(styles):=20=E5=BC=95=E5=85=A5?= =?UTF-8?q?=E6=9A=97=E8=89=B2=E4=B8=BB=E9=A2=98=E6=94=AF=E6=8C=81=E5=B9=B6?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=A0=B7=E5=BC=8F=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加 `main.css` 文件定义基础样式和暗色主题变量 - 在 `style.css` 中导入新的主样式文件 - 更新 `utils.ts` 中的 `cn` 函数实现方式 - 调整 pnpm 锁定文件以反映依赖变化 - 集成 `motion-v` 和相关动画库支持 - 移除旧版不必要的样式依赖项 - 修复 `@electron/node-gyp` 的 Git 引用路径格式问题 --- pnpm-lock.yaml | 84 ++++++++++++++++++++++++++++++++------- src/assets/main.css | 95 +++++++++++++++++++++++++++++++++++++++++++++ src/lib/utils.ts | 8 ++-- src/style.css | 1 + 4 files changed, 171 insertions(+), 17 deletions(-) create mode 100644 src/assets/main.css diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index df85f50..d382530 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,12 +20,6 @@ importers: '@vueuse/core': specifier: ^14.1.0 version: 14.1.0(vue@3.5.25(typescript@5.9.3)) - class-variance-authority: - specifier: ^0.7.1 - version: 0.7.1 - clsx: - specifier: ^2.1.1 - version: 2.1.1 crypto-js: specifier: ^4.2.0 version: 4.2.0 @@ -41,6 +35,9 @@ importers: marked: specifier: ^17.0.1 version: 17.0.1 + motion-v: + specifier: ^1.7.4 + version: 1.7.4(@vueuse/core@14.1.0(vue@3.5.25(typescript@5.9.3)))(vue@3.5.25(typescript@5.9.3)) pinia: specifier: ^3.0.4 version: 3.0.4(typescript@5.9.3)(vue@3.5.25(typescript@5.9.3)) @@ -53,9 +50,6 @@ importers: serve-static: specifier: ^2.2.0 version: 2.2.0 - tailwind-merge: - specifier: ^3.4.0 - version: 3.4.0 tailwindcss: specifier: ^4.1.17 version: 4.1.17 @@ -84,6 +78,12 @@ importers: '@vue/tsconfig': specifier: ^0.8.1 version: 0.8.1(typescript@5.9.3)(vue@3.5.25(typescript@5.9.3)) + class-variance-authority: + specifier: ^0.7.1 + version: 0.7.1 + clsx: + specifier: ^2.1.1 + version: 2.1.1 cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -96,6 +96,9 @@ importers: electron-vite: specifier: ^5.0.0 version: 5.0.0(rolldown-vite@7.2.5(@types/node@24.10.2)(esbuild@0.25.12)(jiti@2.6.1)(terser@5.44.1)) + tailwind-merge: + specifier: ^3.4.0 + version: 3.4.0 tw-animate-css: specifier: ^1.4.0 version: 1.4.0 @@ -649,8 +652,8 @@ packages: resolution: {integrity: sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==} engines: {node: '>=12'} - '@electron/node-gyp@https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2': - resolution: {tarball: https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2} + '@electron/node-gyp@git+https://git@github.com:electron/node-gyp.git#06b29aafb7708acef8b3669835c8a7857ebc92d2': + resolution: {commit: 06b29aafb7708acef8b3669835c8a7857ebc92d2, repo: git@github.com:electron/node-gyp.git, type: git} version: 10.2.0-electron.1 engines: {node: '>=12.13.0'} hasBin: true @@ -2103,6 +2106,20 @@ packages: resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} engines: {node: '>= 6'} + framer-motion@12.23.12: + resolution: {integrity: sha512-6e78rdVtnBvlEVgu6eFEAgG9v3wLnYEboM8I5O5EXvfKC8gxGQB8wXJdhkMy10iVcn05jl6CNw7/HTsTCfwcWg==} + peerDependencies: + '@emotion/is-prop-valid': '*' + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/is-prop-valid': + optional: true + react: + optional: true + react-dom: + optional: true + fresh@2.0.0: resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} engines: {node: '>= 0.8'} @@ -2244,6 +2261,9 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} + hey-listen@1.0.8: + resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} + hookable@5.5.3: resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} @@ -2772,6 +2792,18 @@ packages: engines: {node: '>=10'} hasBin: true + motion-dom@12.23.12: + resolution: {integrity: sha512-RcR4fvMCTESQBD/uKQe49D5RUeDOokkGRmz4ceaJKDBgHYtZtntC/s2vLvY38gqGaytinij/yi3hMcWVcEF5Kw==} + + motion-utils@12.23.6: + resolution: {integrity: sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ==} + + motion-v@1.7.4: + resolution: {integrity: sha512-YNDUAsany04wfI7YtHxQK3kxzNvh+OdFUk9GpA3+hMt7j6P+5WrVAAgr8kmPPoVza9EsJiAVhqoN3YYFN0Twrw==} + peerDependencies: + '@vueuse/core': '>=10.0.0' + vue: '>=3.0.0' + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -4432,7 +4464,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@electron/node-gyp@https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2': + '@electron/node-gyp@git+https://git@github.com:electron/node-gyp.git#06b29aafb7708acef8b3669835c8a7857ebc92d2': dependencies: env-paths: 2.2.1 exponential-backoff: 3.1.3 @@ -4469,7 +4501,7 @@ snapshots: '@electron/rebuild@3.7.0': dependencies: - '@electron/node-gyp': https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2 + '@electron/node-gyp': git+https://git@github.com:electron/node-gyp.git#06b29aafb7708acef8b3669835c8a7857ebc92d2 '@malept/cross-spawn-promise': 2.0.0 chalk: 4.1.2 debug: 4.4.3 @@ -6027,6 +6059,12 @@ snapshots: hasown: 2.0.2 mime-types: 2.1.35 + framer-motion@12.23.12: + dependencies: + motion-dom: 12.23.12 + motion-utils: 12.23.6 + tslib: 2.8.1 + fresh@2.0.0: {} fs-extra@10.1.0: @@ -6208,6 +6246,8 @@ snapshots: dependencies: function-bind: 1.1.2 + hey-listen@1.0.8: {} + hookable@5.5.3: {} hosted-git-info@4.1.0: @@ -6694,6 +6734,24 @@ snapshots: mkdirp@1.0.4: {} + motion-dom@12.23.12: + dependencies: + motion-utils: 12.23.6 + + motion-utils@12.23.6: {} + + motion-v@1.7.4(@vueuse/core@14.1.0(vue@3.5.25(typescript@5.9.3)))(vue@3.5.25(typescript@5.9.3)): + dependencies: + '@vueuse/core': 14.1.0(vue@3.5.25(typescript@5.9.3)) + framer-motion: 12.23.12 + hey-listen: 1.0.8 + motion-dom: 12.23.12 + vue: 3.5.25(typescript@5.9.3) + transitivePeerDependencies: + - '@emotion/is-prop-valid' + - react + - react-dom + ms@2.1.3: {} muggle-string@0.4.1: {} diff --git a/src/assets/main.css b/src/assets/main.css new file mode 100644 index 0000000..1125885 --- /dev/null +++ b/src/assets/main.css @@ -0,0 +1,95 @@ +@import "tailwindcss"; +@import "tw-animate-css"; + +@custom-variant dark (&:is(.dark *)); + +:root { + --card: oklch(1 0 0); + --card-foreground: oklch(0.141 0.005 285.823); + --popover: oklch(1 0 0); + --popover-foreground: oklch(0.141 0.005 285.823); + --primary: oklch(0.21 0.006 285.885); + --primary-foreground: oklch(0.985 0 0); + --secondary: oklch(0.967 0.001 286.375); + --secondary-foreground: oklch(0.21 0.006 285.885); + --muted: oklch(0.967 0.001 286.375); + --muted-foreground: oklch(0.552 0.016 285.938); + --accent: oklch(0.967 0.001 286.375); + --accent-foreground: oklch(0.21 0.006 285.885); + --destructive: oklch(0.577 0.245 27.325); + --destructive-foreground: oklch(0.577 0.245 27.325); + --border: oklch(0.92 0.004 286.32); + --input: oklch(0.92 0.004 286.32); + --ring: oklch(0.705 0.015 286.067); + --radius: 0.625rem; + --background: oklch(1 0 0); + --foreground: oklch(0.141 0.005 285.823); +} + +.dark { + --background: oklch(0.141 0.005 285.823); + --foreground: oklch(0.985 0 0); + --card: oklch(0.141 0.005 285.823); + --card-foreground: oklch(0.985 0 0); + --popover: oklch(0.141 0.005 285.823); + --popover-foreground: oklch(0.985 0 0); + --primary: oklch(0.985 0 0); + --primary-foreground: oklch(0.21 0.006 285.885); + --secondary: oklch(0.274 0.006 286.033); + --secondary-foreground: oklch(0.985 0 0); + --muted: oklch(0.274 0.006 286.033); + --muted-foreground: oklch(0.705 0.015 286.067); + --accent: oklch(0.274 0.006 286.033); + --accent-foreground: oklch(0.985 0 0); + --destructive: oklch(0.396 0.141 25.723); + --destructive-foreground: oklch(0.637 0.237 25.331); + --border: oklch(0.274 0.006 286.033); + --input: oklch(0.274 0.006 286.033); + --ring: oklch(0.442 0.017 285.786); +} + +@theme inline { + --color-background: var(--background); + --color-foreground: var(--foreground); + --color-card: var(--card); + --color-card-foreground: var(--card-foreground); + --color-popover: var(--popover); + --color-popover-foreground: var(--popover-foreground); + --color-primary: var(--primary); + --color-primary-foreground: var(--primary-foreground); + --color-secondary: var(--secondary); + --color-secondary-foreground: var(--secondary-foreground); + --color-muted: var(--muted); + --color-muted-foreground: var(--muted-foreground); + --color-accent: var(--accent); + --color-accent-foreground: var(--accent-foreground); + --color-destructive: var(--destructive); + --color-destructive-foreground: var(--destructive-foreground); + --color-border: var(--border); + --color-input: var(--input); + --color-ring: var(--ring); + + --radius-sm: calc(var(--radius) - 4px); + --radius-md: calc(var(--radius) - 2px); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) + 4px); +} + +@layer base { + * { + @apply border-border outline-ring/50; + } + body { + @apply bg-background text-foreground; + } +} + +html { + color-scheme: light dark; +} +html.dark { + color-scheme: dark; +} +html.light { + color-scheme: light; +} diff --git a/src/lib/utils.ts b/src/lib/utils.ts index 2aec90c..c66a9d9 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -1,7 +1,7 @@ -import type { ClassValue } from 'clsx' -import { clsx } from 'clsx' -import { twMerge } from 'tailwind-merge' +import type { ClassValue } from "clsx" +import { clsx } from "clsx" +import { twMerge } from "tailwind-merge" -export const cn = (...inputs: ClassValue[]) => { +export function cn(...inputs: ClassValue[]) { return twMerge(clsx(inputs)) } diff --git a/src/style.css b/src/style.css index b518455..d1b0bc8 100644 --- a/src/style.css +++ b/src/style.css @@ -1,5 +1,6 @@ @import "tailwindcss"; @import "tw-animate-css"; +@import "@/assets/main.css"; @custom-variant dark (&:is(.dark *)); From 60fd4135ec44fca9b3a621c5fdb71a6826c46565 Mon Sep 17 00:00:00 2001 From: coolxitech Date: Wed, 17 Dec 2025 21:58:20 +0800 Subject: [PATCH 02/10] =?UTF-8?q?chore(deps):=20=E9=87=8D=E6=96=B0?= =?UTF-8?q?=E7=BB=84=E7=BB=87=E4=BE=9D=E8=B5=96=E9=A1=B9=E5=B9=B6=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=20motion-v?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除 class-variance-authority 和 clsx 的重复声明 - 移除 tailwind-merge 的重复声明 - 在 devDependencies 中正确添加 class-variance-authority - 在 devDependencies 中正确添加 clsx - 在 devDependencies 中正确添加 tailwind-merge - 添加 motion-v 动画库到 dependencies - 确保所有依赖项按字母顺序排列 - 更新 vite 使用 rolldown-vite 版本 7.2.5 --- package.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index b927d7d..c072288 100644 --- a/package.json +++ b/package.json @@ -23,18 +23,16 @@ "@tailwindcss/vite": "^4.1.17", "@tanstack/vue-table": "^8.21.3", "@vueuse/core": "^14.1.0", - "class-variance-authority": "^0.7.1", - "clsx": "^2.1.1", "crypto-js": "^4.2.0", "file-saver": "^2.0.5", "finalhandler": "^2.1.1", "lucide-vue-next": "^0.556.0", "marked": "^17.0.1", + "motion-v": "^1.7.4", "pinia": "^3.0.4", "pinia-plugin-persistedstate": "^4.7.1", "reka-ui": "^2.6.1", "serve-static": "^2.2.0", - "tailwind-merge": "^3.4.0", "tailwindcss": "^4.1.17", "vue": "^3.5.24", "vue-router": "4", @@ -46,10 +44,13 @@ "@types/node": "^24.10.2", "@vitejs/plugin-vue": "^6.0.1", "@vue/tsconfig": "^0.8.1", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", "cross-env": "^7.0.3", "electron": "^39.2.7", "electron-builder": "^26.0.12", "electron-vite": "^5.0.0", + "tailwind-merge": "^3.4.0", "tw-animate-css": "^1.4.0", "typescript": "~5.9.3", "vite": "npm:rolldown-vite@7.2.5", From 4aa4d9d3505ab642eba62afcdcc9b05f56b1b96f Mon Sep 17 00:00:00 2001 From: coolxitech Date: Wed, 17 Dec 2025 21:58:28 +0800 Subject: [PATCH 03/10] =?UTF-8?q?feat(ui):=20=E6=B7=BB=E5=8A=A0=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E5=88=87=E6=8D=A2=E5=8A=A8=E7=94=BB=E5=92=8C=E6=98=9F?= =?UTF-8?q?=E7=A9=BA=E8=83=8C=E6=99=AF=E6=95=88=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 使用 Transition 组件实现页面切换的淡入淡出动画 - 根据路由路径设置组件 key 值以触发过渡效果 - 在暗色模式下添加 StarsBackground 星空背景组件 - 为 RouterView 和 StarsBackground 设置高度样式 - 引入 StarsBackground 组件并注册使用 --- src/App.vue | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/App.vue b/src/App.vue index d801e99..b07c124 100644 --- a/src/App.vue +++ b/src/App.vue @@ -319,9 +319,22 @@
-
- -
+ +
+ + + +
+ +
+
+
@@ -444,6 +457,7 @@ import { toast } from 'vue-sonner' import { migrateGameData } from '@/utils/migration' import { checkLatestVersion } from '@/utils/versionCheck' + import {StarsBackground} from "@/components/ui/bg-stars"; // 执行数据迁移(在 store 初始化之前) migrateGameData() From b166babf129f33b1806ed98c8afed4a8d91db815 Mon Sep 17 00:00:00 2001 From: coolxitech Date: Wed, 17 Dec 2025 22:02:47 +0800 Subject: [PATCH 04/10] =?UTF-8?q?feat(ui):=20=E6=B7=BB=E5=8A=A0=E7=B2=92?= =?UTF-8?q?=E5=AD=90=E8=83=8C=E6=99=AF=E7=BB=84=E4=BB=B6=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在非星空背景模式下引入 ParticlesBg 组件 - 配置粒子数量、缓动效果及颜色适配暗色主题 - 设置粒子静态值并启用刷新功能 - 导入 ParticlesBg 组件并注册使用 --- src/App.vue | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/App.vue b/src/App.vue index b07c124..406cb4d 100644 --- a/src/App.vue +++ b/src/App.vue @@ -331,6 +331,14 @@
+
@@ -458,6 +466,7 @@ import { migrateGameData } from '@/utils/migration' import { checkLatestVersion } from '@/utils/versionCheck' import {StarsBackground} from "@/components/ui/bg-stars"; + import {ParticlesBg} from "@/components/ui/particles-bg"; // 执行数据迁移(在 store 初始化之前) migrateGameData() From d9a8accad7aad293249691dfee65f479e6658b72 Mon Sep 17 00:00:00 2001 From: coolxitech Date: Wed, 17 Dec 2025 22:02:59 +0800 Subject: [PATCH 05/10] =?UTF-8?q?chore(deps):=20=E6=9B=B4=E6=96=B0=20elect?= =?UTF-8?q?ron/node-gyp=20=E4=BE=9D=E8=B5=96=E5=BC=95=E7=94=A8=E6=96=B9?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将 @electron/node-gyp 的 Git 协议引用改为 HTTPS tarball 引用 - 统一依赖源为 GitHub 的代码加载地址 - 避免使用 git+ssh 协议可能带来的权限问题 - 确保依赖版本锁定的一致性 - 提高依赖安装的稳定性和可重复性 --- pnpm-lock.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d382530..e633e4d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -652,8 +652,8 @@ packages: resolution: {integrity: sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==} engines: {node: '>=12'} - '@electron/node-gyp@git+https://git@github.com:electron/node-gyp.git#06b29aafb7708acef8b3669835c8a7857ebc92d2': - resolution: {commit: 06b29aafb7708acef8b3669835c8a7857ebc92d2, repo: git@github.com:electron/node-gyp.git, type: git} + '@electron/node-gyp@https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2': + resolution: {tarball: https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2} version: 10.2.0-electron.1 engines: {node: '>=12.13.0'} hasBin: true @@ -4464,7 +4464,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@electron/node-gyp@git+https://git@github.com:electron/node-gyp.git#06b29aafb7708acef8b3669835c8a7857ebc92d2': + '@electron/node-gyp@https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2': dependencies: env-paths: 2.2.1 exponential-backoff: 3.1.3 @@ -4501,7 +4501,7 @@ snapshots: '@electron/rebuild@3.7.0': dependencies: - '@electron/node-gyp': git+https://git@github.com:electron/node-gyp.git#06b29aafb7708acef8b3669835c8a7857ebc92d2 + '@electron/node-gyp': https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2 '@malept/cross-spawn-promise': 2.0.0 chalk: 4.1.2 debug: 4.4.3 From bd24ca02aef75c993b8a766a2512be9b1f131e2f Mon Sep 17 00:00:00 2001 From: coolxitech Date: Wed, 17 Dec 2025 22:03:12 +0800 Subject: [PATCH 06/10] =?UTF-8?q?feat(ui):=20=E6=B7=BB=E5=8A=A0=E7=B2=92?= =?UTF-8?q?=E5=AD=90=E8=83=8C=E6=99=AF=E5=92=8C=E6=98=9F=E7=A9=BA=E8=83=8C?= =?UTF-8?q?=E6=99=AF=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 ParticlesBg 组件,实现动态粒子效果背景 - 新增 StarsBackground 组件,创建可交互的星空背景 - 支持自定义颜色、数量、动画速度等属性配置 - 集成鼠标交互,实现视差效果和动态跟随 - 导出两个新组件便于全局使用 --- .../ui/bg-stars/StarsBackground.vue | 176 ++++++++++++ src/components/ui/bg-stars/index.ts | 1 + .../ui/particles-bg/ParticlesBg.vue | 250 ++++++++++++++++++ src/components/ui/particles-bg/index.ts | 1 + 4 files changed, 428 insertions(+) create mode 100644 src/components/ui/bg-stars/StarsBackground.vue create mode 100644 src/components/ui/bg-stars/index.ts create mode 100644 src/components/ui/particles-bg/ParticlesBg.vue create mode 100644 src/components/ui/particles-bg/index.ts diff --git a/src/components/ui/bg-stars/StarsBackground.vue b/src/components/ui/bg-stars/StarsBackground.vue new file mode 100644 index 0000000..8d3bdc2 --- /dev/null +++ b/src/components/ui/bg-stars/StarsBackground.vue @@ -0,0 +1,176 @@ + + + diff --git a/src/components/ui/bg-stars/index.ts b/src/components/ui/bg-stars/index.ts new file mode 100644 index 0000000..205c143 --- /dev/null +++ b/src/components/ui/bg-stars/index.ts @@ -0,0 +1 @@ +export { default as StarsBackground } from "./StarsBackground.vue"; diff --git a/src/components/ui/particles-bg/ParticlesBg.vue b/src/components/ui/particles-bg/ParticlesBg.vue new file mode 100644 index 0000000..13607db --- /dev/null +++ b/src/components/ui/particles-bg/ParticlesBg.vue @@ -0,0 +1,250 @@ + + + diff --git a/src/components/ui/particles-bg/index.ts b/src/components/ui/particles-bg/index.ts new file mode 100644 index 0000000..e544838 --- /dev/null +++ b/src/components/ui/particles-bg/index.ts @@ -0,0 +1 @@ +export { default as ParticlesBg } from "./ParticlesBg.vue"; From f30676df07c0321f68a6df2bf6631470c9a52f5f Mon Sep 17 00:00:00 2001 From: coolxitech Date: Wed, 17 Dec 2025 22:25:36 +0800 Subject: [PATCH 07/10] =?UTF-8?q?feat(ui):=20=E6=98=9F=E7=A9=BA=E8=83=8C?= =?UTF-8?q?=E6=99=AF=E7=BB=84=E4=BB=B6=E6=94=AF=E6=8C=81=E8=BF=87=E6=B8=A1?= =?UTF-8?q?=E5=8A=A8=E7=94=BB=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 导入 Transition 类型以支持动画过渡配置 - 为星层1添加明确的 Transition 类型注解 - 为星层2添加明确的 Transition 类型注解 - 为星层3添加明确的 Transition 类型注解 - 统一设置缓动函数为常量 "linear" - 确保各星层动画持续时间按倍数递增 --- src/components/ui/bg-stars/StarsBackground.vue | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/components/ui/bg-stars/StarsBackground.vue b/src/components/ui/bg-stars/StarsBackground.vue index 8d3bdc2..ccec34b 100644 --- a/src/components/ui/bg-stars/StarsBackground.vue +++ b/src/components/ui/bg-stars/StarsBackground.vue @@ -88,7 +88,7 @@ From d5a6dd49a12a0c447811f099a7af425d21fe7e05 Mon Sep 17 00:00:00 2001 From: coolxitech Date: Wed, 17 Dec 2025 22:48:47 +0800 Subject: [PATCH 08/10] =?UTF-8?q?build(docker):=20=E6=9B=B4=E6=96=B0Docker?= =?UTF-8?q?=E6=9E=84=E5=BB=BA=E7=8E=AF=E5=A2=83=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 使用node:lts-alpine替换node:latest基础镜像 - 添加git安装和npm镜像源配置 - 修改apk软件源为中科大镜像站 - 更新构建命令为pnpm run build格式 - 优化构建阶段依赖安装逻辑 --- Dockerfile | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index b26bde7..ed4e615 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,15 +1,16 @@ -FROM node:latest AS builder +FROM node:lts-alpine AS builder RUN mkdir -p /workspace WORKDIR /workspace +RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories +RUN apk update && apk add git RUN npm config set registry https://registry.npmmirror.com RUN git clone https://github.com/setube/ogame-vue-ts.git RUN mv ./ogame-vue-ts/* . ; rm -rf ./ogame-vue-ts/ RUN npm install -g pnpm ; pnpm install; -RUN pnpm build +RUN pnpm run build -# --- 第二阶段:Nginx --- FROM nginx:alpine COPY nginx.conf /etc/nginx/conf.d/default.conf From 310372b8e2c1f44145428acea7c80e6b00211c6a Mon Sep 17 00:00:00 2001 From: coolxitech Date: Wed, 17 Dec 2025 22:49:00 +0800 Subject: [PATCH 09/10] =?UTF-8?q?chore(build):=20=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E6=9E=84=E5=BB=BA=E6=97=A5=E6=9C=9F=E6=97=B6=E9=97=B4=E6=88=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将构建日期从 2025/12/17 21:05:49 更新为 2025/12/17 22:25:06 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c072288..ab690f8 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ }, "private": true, "version": "1.3.0", - "buildDate": "2025/12/17 21:05:49", + "buildDate": "2025/12/17 22:25:06", "main": "dist-electron/main.js", "type": "module", "scripts": { From 97db1324b628f97f537bba3f25311dd421e063de Mon Sep 17 00:00:00 2001 From: coolxitech Date: Wed, 17 Dec 2025 22:55:18 +0800 Subject: [PATCH 10/10] =?UTF-8?q?fix(App):=20=E4=BF=AE=E5=A4=8D=E8=B7=AF?= =?UTF-8?q?=E7=94=B1=E5=88=87=E6=8D=A2=E6=97=B6=E7=9A=84=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E8=BF=87=E6=B8=A1=E5=8A=A8=E7=94=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 为 Transition 组件中的 div 元素正确绑定 key 属性 - 移除 main.css 中冗余的 tailwindcss 和 tw-animate-css 导入 - 确保页面切换时动画效果正常显示 --- src/App.vue | 2 +- src/assets/main.css | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/App.vue b/src/App.vue index 406cb4d..2128d45 100644 --- a/src/App.vue +++ b/src/App.vue @@ -320,7 +320,7 @@
-
+