Compare commits

..

68 Commits

Author SHA1 Message Date
目棃
9bd9f60699 🚀 v0.4.6 2024-04-24 16:04:22 +08:00
目棃
070ab01b22 🍱 更新 4.6 版本资源
close #107
2024-04-24 15:30:17 +08:00
目棃
11bf4fea9b 💄 修复特定情况下y轴溢出 2024-04-24 01:01:59 +08:00
目棃
0b8fa6d8f6 🐛 修复特定情况下首页卡池异常 2024-04-24 00:37:13 +08:00
目棃
8917deb5db 🚨 修复qodana报错 2024-04-23 20:34:05 +08:00
目棃
065019cdc6 🎨 代码格式化 2024-04-23 19:00:28 +08:00
目棃
f802ee9a68 🔧 Eslint v9 2024-04-23 18:49:44 +08:00
目棃
971526d6ed ️ 侧边栏咨讯入口记忆类型 2024-04-20 00:44:45 +08:00
目棃
2c2914a028 🐛 修复返回数据为 [true] 2024-04-17 00:54:42 +08:00
目棃
214b828b10 🐛 调整 2024-04-13 01:21:24 +08:00
目棃
ada6f5b15a 📝 新模板 2024-04-13 01:18:24 +08:00
目棃
2aa0df5246 ♻️ 代码规范化 2024-04-12 12:56:23 +08:00
目棃
d9cdea9670 🐛 修复部分角色生日数据缺失 2024-04-11 00:58:41 +08:00
目棃
98541e1b49 🐛 修复 align:right 不生效的问题
*PostID:51080404
2024-04-07 14:56:24 +08:00
目棃
f50398f6e3 ♻️ 帖子文本解析部分重构 2024-04-07 14:31:43 +08:00
目棃
74eb612d72 🐛 修复特定情况下左侧按钮点击无效 2024-04-06 01:43:30 +08:00
目棃
956634767a Merge pull request #106 from BTMuli/dependabot/cargo/src-tauri/h2-0.3.26
Bump h2 from 0.3.24 to 0.3.26 in /src-tauri
2024-04-06 01:00:21 +08:00
目棃
ee078bbcf2 Merge pull request #105 from BTMuli/dependabot/cargo/src-tauri/whoami-1.5.1
Bump whoami from 1.4.1 to 1.5.1 in /src-tauri
2024-04-06 01:00:08 +08:00
dependabot[bot]
044ec32069 Bump h2 from 0.3.24 to 0.3.26 in /src-tauri
Bumps [h2](https://github.com/hyperium/h2) from 0.3.24 to 0.3.26.
- [Release notes](https://github.com/hyperium/h2/releases)
- [Changelog](https://github.com/hyperium/h2/blob/v0.3.26/CHANGELOG.md)
- [Commits](https://github.com/hyperium/h2/compare/v0.3.24...v0.3.26)

---
updated-dependencies:
- dependency-name: h2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-05 16:16:24 +00:00
dependabot[bot]
19ac8e90e0 Bump whoami from 1.4.1 to 1.5.1 in /src-tauri
Bumps [whoami](https://github.com/ardaku/whoami) from 1.4.1 to 1.5.1.
- [Changelog](https://github.com/ardaku/whoami/blob/v1/CHANGELOG.md)
- [Commits](https://github.com/ardaku/whoami/compare/v1.4.1...v1.5.1)

---
updated-dependencies:
- dependency-name: whoami
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-05 15:46:57 +00:00
目棃
d1bfa49bd7 🐛 一些优化
*修复画片初始化数量异常
*数据库更新后弹出更新日志
*调整生日转换逻辑
2024-04-05 15:26:00 +08:00
目棃
d78c541c87 ⬆️ 更新依赖 2024-04-05 15:19:23 +08:00
目棃
ab9eb3c827 🚀 v0.4.5
*更新米社版本至 2.70.1
*删除无用 typo
*更新 pnpm 版本
2024-04-05 14:25:46 +08:00
目棃
36c9cd69e6 ️ 一些优化
*修正琳妮特unread链接
*修复数据概览高度溢出
*调整生日组件样式
2024-04-05 14:04:01 +08:00
目棃
914cddafc1 💄 美化生日组件 2024-04-05 01:10:58 +08:00
目棃
33edb3c33a ️ 更新生日数据,优化用户体验 2024-04-05 00:26:49 +08:00
目棃
8f322eae45 🐛 修复搜索bug 2024-04-04 23:14:09 +08:00
目棃
96aec27752 🍱 修复埃洛伊数据错误 2024-04-04 20:01:28 +08:00
目棃
ca46b8813d ️ 优化,存在 bug 2024-04-04 19:51:10 +08:00
目棃
6bf24bd8c2 帖子搜索集成
fix #103
2024-04-04 18:48:35 +08:00
目棃
623d137457 ♻️ 米社请求重构 2024-04-04 15:14:19 +08:00
目棃
54e941504d 🐛 修复特定情况下分类改变错误 2024-04-04 14:48:46 +08:00
目棃
e5ff294080 Merge pull request #104 from BTMuli/dependabot/npm_and_yarn/vite-5.1.7
Bump vite from 5.1.6 to 5.1.7
2024-04-04 02:22:48 +08:00
dependabot[bot]
44e968592d Bump vite from 5.1.6 to 5.1.7
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.1.6 to 5.1.7.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.1.7/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.1.7/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-03 18:11:46 +00:00
目棃
983be395fa 🐛 修复获取下个生日数据错误 2024-04-04 01:04:07 +08:00
目棃
e5b30af48f 🍱 更新卡池信息 2024-04-03 14:33:21 +08:00
目棃
5aba7bcecc 🔥 部分跳转改为新建窗口 2024-04-03 14:06:34 +08:00
目棃
4985bcde29 还是把生日加回来了,不然太空了 2024-04-01 00:56:24 +08:00
目棃
d8ade955b4 🚨 修复 Qodana 报错 2024-03-31 23:26:05 +08:00
目棃
d9bbe4e7fe 💄 样式调整 2024-03-27 16:02:49 +08:00
目棃
ff0dc6d08c 🍱 替换默认封面 2024-03-26 21:53:48 +08:00
目棃
6a0749f234 ♻️ 首页组件样式迭代 2024-03-26 16:38:14 +08:00
目棃
6b2ef079ca 💄 修改浅色主题默认bg color 2024-03-26 15:37:25 +08:00
目棃
eaf2245e38 ✏️ fix typo err 2024-03-26 15:28:21 +08:00
目棃
c75858ceab ️ 添加更新日志跳转 2024-03-26 15:26:09 +08:00
目棃
fabf9de03e ♻️ 抽奖详情做成 overlay 2024-03-26 15:21:00 +08:00
目棃
9e030c976b 子窗口操作同步主窗口,帖子排序 2024-03-23 14:50:42 +08:00
目棃
55671ab22d ️ 优化操作逻辑 2024-03-23 14:23:43 +08:00
目棃
7f872787f1 💄 调整 disable 样式 2024-03-22 20:59:02 +08:00
目棃
0cd3b6072f 🐛 完善可用条件 2024-03-22 20:45:14 +08:00
目棃
17c5d879cd 收藏功能基本完成
close #100
2024-03-22 20:36:42 +08:00
目棃
417e98a99c 💄 优化列表滚动样式 2024-03-22 19:36:14 +08:00
目棃
b5a81503a8 💩 脑测样式&逻辑代码 2024-03-22 17:14:37 +08:00
目棃
1405b544be 💄 卡片样式调整 2024-03-21 20:28:50 +08:00
目棃
8707a8288e ️ 一些优化 2024-03-21 14:04:52 +08:00
目棃
d9cb95e225 🐛 修复数据库插入错误 2024-03-21 13:58:23 +08:00
目棃
27f4e026b0 🌱 单帖的收藏编辑,支持分类创建/删除 2024-03-20 16:12:59 +08:00
目棃
5fb24387ca 💄 增加间距 2024-03-20 15:15:19 +08:00
目棃
88879dd4ec ️ 已收藏帖子打开时自动更新数据 2024-03-20 13:50:06 +08:00
目棃
5d59245761 ♻️ 重构收藏数据库,更加beauty 2024-03-20 02:25:51 +08:00
目棃
66c6d3a3a5 🔥 移除无用文件 2024-03-19 23:45:47 +08:00
目棃
8996c1bce1 帖子收藏 #100 2024-03-19 21:51:57 +08:00
目棃
c5587211fd ♻️ 通用帖子卡片抽离出来作为组件 2024-03-19 21:46:44 +08:00
目棃
43232548bb ✏️ 合并相同类型数据 2024-03-19 21:22:47 +08:00
目棃
3501590fb4 🍱 修正部分成就版本信息 2024-03-17 13:21:48 +08:00
目棃
2b227ea333 ️ 帖子解析&祈愿记录微调
*优化链接样式
*饼图加上集录祈愿
*祈愿刷新后刷新页面
2024-03-17 13:15:18 +08:00
目棃
2f32f4e2c1 ⬆️ 更新依赖 2024-03-17 12:51:09 +08:00
目棃
3ec13b7510 📝 徽标忘改了 2024-03-14 00:47:01 +08:00
213 changed files with 11141 additions and 6432 deletions

View File

@@ -1,10 +0,0 @@
# Build
dist
src-tauri/target
# Package files
pnpm-lock.yaml
# data
src/data/**/*.json
# lint files
!.prettierrc.yml
!.stylelintrc.yml

View File

@@ -1,133 +0,0 @@
root: true
env:
browser: true
es2021: true
extends:
- plugin:vue/vue3-essential
- prettier
- plugin:prettier/recommended
- plugin:yml/standard
- plugin:jsonc/recommended-with-json
parserOptions:
ecmaVersion: latest
sourceType: module
tsconfigRootDir: .
project: ./tsconfig.json
globals:
TGApp: readonly
window: readonly
rules:
vue/multi-word-component-names: off
vue/valid-template-root: off
overrides:
- files: ["*.ts"]
extends: standard-with-typescript
# 将此处规则 copy 到下面的 .vue 文件的 rules 中
rules: &typescript-rules
import/order:
- error
- groups:
- builtin
- external
- [internal, parent, sibling, index]
- unknown
newlines-between: always
alphabetize:
order: asc
caseInsensitive: true
"@typescript-eslint/indent": off
"@typescript-eslint/quotes":
- error
- double
"@typescript-eslint/semi":
- error
- always
"@typescript-eslint/comma-dangle":
- error
- always-multiline
"@typescript-eslint/space-before-function-paren":
- error
- anonymous: always
named: never
asyncArrow: always
"@typescript-eslint/member-delimiter-style":
- error
- multiline:
delimiter: semi
requireLast: true
"@typescript-eslint/no-import-type-side-effects": error
"@typescript-eslint/strict-boolean-expressions": off
"@typescript-eslint/consistent-type-assertions":
- warn
- assertionStyle: angle-bracket # 使用尖括号
"@typescript-eslint/naming-convention":
- warn
- selector: variableLike
format: [camelCase, UPPER_CASE, PascalCase, snake_case]
leadingUnderscore: allow
trailingUnderscore: allow
"@typescript-eslint/no-non-null-assertion": warn
"@typescript-eslint/no-misused-promises": off
"@typescript-eslint/restrict-template-expressions": warn
- files: ["*.vue"]
parser: vue-eslint-parser
parserOptions:
parser: "@typescript-eslint/parser"
extraFileExtensions: [.vue]
rules:
<<: *typescript-rules
- files: [package.json, tsconfig.json]
parser: jsonc-eslint-parser
rules:
jsonc/sort-array-values:
- error
- pathPattern: .*
order:
type: asc
jsonc/sort-keys:
- error
- pathPattern: ^$
order:
- name
- version
- description
- private
- packageManager
- scripts
- lint-staged
- keywords
- author
- license
- repository
- homepage
- bugs
- dependencies
- devDependencies
- files: ["*.yaml", "*.yml"]
parser: yaml-eslint-parser
parserOptions:
defaultYAMLVersion: "1.2"
rules:
yml/indent:
- error
- 2
yml/no-multiple-empty-lines: error
yml/key-spacing: error
yml/quotes:
- error
- prefer: double
avoidEscape: true
yml/sort-keys:
- error
- pathPattern: ^$
order:
- root
- env
- extends
- parserOptions
- globals
- rules
- overrides
- pathPattern: ^rules$
order:
type: asc

View File

@@ -0,0 +1,44 @@
name: 原神游戏资源更新(仅供开发者使用)
description: 版本前瞻后的例行资源更新
title: "[Update] "
labels:
- 资源
body:
- type: checkboxes
attributes:
label: Issue Check
options:
- label: 个人明确了解该模板仅供开发者使用
required: true
- type: input
id: version
attributes:
label: 游戏版本
description: 请填写游戏版本
placeholder: 如 4.6
- type: checkboxes
id: resources
attributes:
label: 包括的资源
options:
- label: 角色&名片,有新角色时选择
required: false
- label: 武器,有新武器时选择
required: false
- label: 成就,有新成就时选择
required: false
- label: 卡牌,有新卡牌时选择
required: false
- label: 材料,有新材料时选择
required: false
- type: textarea
id: detail
attributes:
label: 详情
description: 对上述内容进行详细说明
- type: textarea
id: additional
attributes:
label: 其他信息
description: 请填写其他信息
placeholder: 请填写其他信息

View File

@@ -26,7 +26,10 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Add Rust targets(macOS)
- name: Add Rust targets(macOS Intel)
if: matrix.settings.target == 'macos-intel'
run: rustup target add x86_64-apple-darwin
- name: Add Rust targets(macOS ARM)
if: matrix.settings.target == 'macos-arm'
run: rustup target add aarch64-apple-darwin
@@ -44,7 +47,7 @@ jobs:
- name: setup pnpm
uses: pnpm/action-setup@v2
with:
version: 8.14.1
version: 9.0.5
- name: remove lockfile
run: rm pnpm-lock.yaml
- name: Install frontend dependencies

View File

@@ -18,7 +18,7 @@ jobs:
- name: setup pnpm
uses: pnpm/action-setup@v2
with:
version: 8.14.1
version: 9.0.5
- name: remove lockfile
run: rm -f pnpm-lock.yaml
- name: Install dependencies

View File

@@ -2,13 +2,55 @@
Author: 目棃
Description: CHANGELOG
Date: 2024-01-15
Update: 2024-02-09
Update: 2024-04-24
---
> 本文档 [`Frontmatter`](https://github.com/BTMuli/MuCli#Frontmatter) 由 [MuCli](https://github.com/BTMuli/Mucli)
> 自动生成于 `2024-01-15 17:29:15`
> 本文档 [`Frontmatter`](https://github.com/BTMuli/MuCli#Frontmatter) 由 [MuCli](https://github.com/BTMuli/Mucli) 自动生成于 `2024-01-15 17:29:15`
>
> 更新于 `2024-02-09 20:30:26`
> 更新于 `2024-04-24 15:36:42`
## [0.4.6](https://github.com/BTMuli/TeyvatGuide/releases/v0.4.6) (2024-04-24)
### Feat
- 帖子:重构文本解析,现在更加贴近应用内的渲染效果
- 应用:侧边栏点击咨讯时的参数也支持记忆了
- 应用:更新 4.6 版本的游戏资源
### Fix
- 留影叙佳期:修复侧边栏点击时初始画片数异常
- 首页:修复特定情况下日历组件左侧切换日期按钮点击无效
- 帖子:修复 `align:right` 不生效的问题
- 首页:修复特定情况下首页卡池渲染异常
### Change
- 应用:数据库更新后弹出更新日志
## [0.4.5](https://github.com/BTMuli/TeyvatGuide/releases/v0.4.5) (2024-04-05)
### Feat
- 添加收藏页面,支持导入用户收藏 [`#100`](https://github.com/BTMuli/TeyvatGuide/issues/100)
- 设置页添加更新日志跳转
- 首页:组件样式迭代
- 帖子:替换默认封面
- 帖子:支持关键词搜索 [`#103`](https://github.com/BTMuli/TeyvatGuide/issues/103)
### Fix
- 成就:修正部分成就版本信息 [`3501590f`](https://github.com/BTMuli/TeyvatGuide/commit/3501590f)
- 帖子:链接卡片添加间距
- 图鉴:修复埃洛伊背景渲染异常
- 留影叙佳期:补充遗漏数据,支持特定日期查看
### Change
- 帖子:微调解析逻辑
- 重构:通用帖子卡片抽离作为组件,添加 `select` 状态
- 帖子:抽奖详情改为 `overlay`
- 应用:调整默认颜色
## [0.4.4](https://github.com/BTMuli/TeyvatGuide/releases/v0.4.4) (2024-03-13)

View File

@@ -2,16 +2,16 @@
Author: 目棃
Description: 说明文档
Date: 2023-03-05
Update: 2024-03-13
Update: 2024-04-05
---
> 本文档 [`Frontmatter`](https://github.com/BTMuli/MuCli#Frontmatter) 由 [MuCli](https://github.com/BTMuli/Mucli) 自动生成于 `2023-03-05 14:41:55`
>
> 更新于 `2024-03-13 15:51:39`
> 更新于 `2024-04-05 14:25:24`
![](https://img.shields.io/github/last-commit/BTMuli/TeyvatGuide?style=for-the-badge) ![](https://img.shields.io/github/commits-since/BTMuli/TeyvatGuide/latest?include_prereleases&style=for-the-badge)
![](https://img.shields.io/badge/UIAF-v1.1-orange?style=for-the-badge) ![](https://img.shields.io/badge/UIGF-v2.4-red?style=for-the-badge) ![](https://img.shields.io/github/license/BTMuli/TeyvatGuide?style=for-the-badge)
![](https://img.shields.io/badge/UIAF-v1.1-orange?style=for-the-badge) ![](https://img.shields.io/badge/UIGF-v3.0-red?style=for-the-badge) ![](https://img.shields.io/github/license/BTMuli/TeyvatGuide?style=for-the-badge)
<div style="width: 100%; text-align: center; margin: 0 auto;">
<img alt="icon" src="https://s2.loli.net/2023/10/19/Y5DpBQRy3usLHEb.png" />
@@ -49,6 +49,8 @@ Game Tool for Genshin Impact player, supports Windows and macOS.
- [x] 米游社各分区帖子获取(支持通过 ID 获取)
- [x] 成就管理UIAF v1.1),支持 [`YaeAchievement`](https://github.com/HolographicHat/YaeAchievement) 导入
- [x] 祈愿管理UIGF v3.0
- [x] 留影叙佳期画片查看
- [x] 帖子收藏
- 登陆功能:

23
eslint.config.js Normal file
View File

@@ -0,0 +1,23 @@
import { jsonEslintConfig } from "./eslint/jsonEslint.js";
import { vueEslintConfig } from "./eslint/vueEslint.js";
import ymlEslintConfig from "./eslint/ymlEslint.js";
export default [
...jsonEslintConfig,
ymlEslintConfig,
...vueEslintConfig,
{
ignores: [
"dist",
"src-tauri/target",
"pnpm-lock.yaml",
"src/data/**/*.json",
"src-tauri/tauri.conf.json",
"qodana.yaml",
".github",
".vscode",
".prettierrc.yml",
".stylelintrc.yml",
],
},
];

95
eslint/jsonEslint.js Normal file
View File

@@ -0,0 +1,95 @@
import eslint_jsonc from "eslint-plugin-jsonc";
import jsonc_parser from "jsonc-eslint-parser";
const pkgJsonConfig = {
files: ["package.json"],
plugins: {
jsonc: eslint_jsonc,
},
languageOptions: {
parser: jsonc_parser,
},
rules: {
"jsonc/comma-dangle": ["error", "never"],
"jsonc/sort-keys": [
"error",
{
pathPattern: "^$",
order: [
"name",
"version",
"description",
"type",
"packageManager",
"scripts",
"lint-staged",
"keywords",
"author",
"license",
"repository",
"homepage",
"bugs",
"dependencies",
"devDependencies",
],
},
],
},
};
const tscJsonConfig = {
files: ["tsconfig.json"],
plugins: {
jsonc: eslint_jsonc,
},
languageOptions: {
parser: jsonc_parser,
},
rules: {
"jsonc/comma-dangle": ["error", "never"],
"jsonc/sort-keys": [
"error",
{
pathPattern: "^$",
order: [
"compilerOptions",
"include",
"exclude",
"extends",
"files",
"references",
"typeAcquisition",
],
},
],
},
};
const jsoncConfig = {
files: ["source/data/out/**/*.json", ".vscode/**/*.json"],
plugins: {
jsonc: eslint_jsonc,
},
languageOptions: {
parser: jsonc_parser,
},
rules: {
"jsonc/comma-dangle": ["error", "never"],
"jsonc/sort-keys": [
"error",
{
pathPattern: "^$",
order: {
type: "asc",
},
},
],
},
};
export const jsonEslintConfig = [
...eslint_jsonc.configs["flat/recommended-with-json"],
pkgJsonConfig,
tscJsonConfig,
jsoncConfig,
];

87
eslint/vueEslint.js Normal file
View File

@@ -0,0 +1,87 @@
import eslint_js from "@eslint/js";
import eslint_import from "eslint-plugin-import";
import eslint_prettier from "eslint-plugin-prettier";
import eslint_vue from "eslint-plugin-vue";
import pluginVue from "eslint-plugin-vue";
import globals from "globals";
import eslint_ts from "typescript-eslint";
import vue_parser from "vue-eslint-parser";
const tsConfigRules = {
"@typescript-eslint/consistent-type-assertions": [
"error",
{
assertionStyle: "angle-bracket",
},
],
"@typescript-eslint/no-import-type-side-effects": "error",
"@typescript-eslint/strict-boolean-expressions": "off",
"@typescript-eslint/no-explicit-any": "off",
"import/order": [
"error",
{
groups: ["builtin", "external", "internal", "parent", "sibling", "index", "unknown"],
"newlines-between": "always",
alphabetize: {
order: "asc",
caseInsensitive: true,
},
},
],
"prettier/prettier": "error",
};
const tsConfig = {
files: ["*.ts"],
plugins: {
typescript: eslint_ts,
import: eslint_import,
prettier: eslint_prettier,
},
languageOptions: {
parser: eslint_ts.parser,
parserOptions: {
project: "tsconfig.json",
tsconfigRootDir: ".",
},
},
rules: tsConfigRules,
};
const vueConfig = {
plugins: {
vue: eslint_vue,
import: eslint_import,
prettier: eslint_prettier,
},
languageOptions: {
globals: {
...globals.browser,
...globals.es2021,
TGApp: "readonly",
window: "readonly",
},
ecmaVersion: "latest",
sourceType: "module",
parser: vue_parser,
parserOptions: {
project: "tsconfig.json",
parser: eslint_ts.parser,
extraFileExtensions: [".vue"],
tsconfigRootDir: ".",
},
},
rules: {
...tsConfigRules,
"vue/multi-word-component-names": "off",
},
};
export const vueEslintConfig = [
eslint_js.configs.recommended,
...eslint_ts.configs.recommended,
...eslint_vue.configs["flat/essential"],
...pluginVue.configs["flat/essential"],
tsConfig,
vueConfig,
];

30
eslint/ymlEslint.js Normal file
View File

@@ -0,0 +1,30 @@
import eslint_yml from "eslint-plugin-yml";
import yml_parser from "yaml-eslint-parser";
const ymlEslintConfig = {
files: ["**/*.yml", "**/*.yaml"],
plugins: {
yml: eslint_yml,
},
languageOptions: {
parser: yml_parser,
parserOptions: {
defaultYAMLVersion: "1.2",
extraFileExtensions: [".yaml", ".yml"],
},
},
rules: {
"yml/indent": ["error", 2],
"yml/key-spacing": ["error"],
"yml/quotes": [
"error",
{
prefer: "double",
avoidEscape: true,
},
],
"yml/sort-keys": ["error", "asc"],
},
};
export default ymlEslintConfig;

View File

@@ -1,9 +1,10 @@
{
"name": "TeyvatGuide",
"version": "0.4.4",
"version": "0.4.6",
"description": "Game Tool for Genshin Impact player",
"private": true,
"packageManager": "pnpm@8.15.3",
"packageManager": "pnpm@9.0.5",
"type": "module",
"scripts": {
"build": "tauri build",
"debug": "tauri build --debug",
@@ -66,7 +67,7 @@
},
"dependencies": {
"@mdi/font": "7.4.47",
"@tauri-apps/api": "^1.5.3",
"@tauri-apps/api": "^1.5.4",
"artplayer": "^5.1.1",
"clipboard": "^2.0.11",
"color-convert": "^2.0.1",
@@ -79,50 +80,54 @@
"tauri-plugin-log-api": "github:tauri-apps/tauri-plugin-log#v1",
"tauri-plugin-sql-api": "github:tauri-apps/tauri-plugin-sql#v1",
"uuid": "^9.0.1",
"vue": "^3.4.19",
"vue-echarts": "^6.6.9",
"vue": "^3.4.24",
"vue-echarts": "^6.7.0",
"vue-json-viewer": "^3.0.4",
"vue-router": "^4.3.0",
"vuetify": "^3.5.8",
"vue-router": "^4.3.2",
"vuetify": "^3.5.16",
"wcag-color": "^1.1.1",
"xml-js": "^1.6.11"
},
"devDependencies": {
"@tauri-apps/cli": "^1.5.10",
"@eslint/eslintrc": "^3.0.2",
"@eslint/js": "^9.1.1",
"@tauri-apps/cli": "^1.5.11",
"@types/color-convert": "^2.0.3",
"@types/js-md5": "^0.7.2",
"@types/node": "^20.11.20",
"@types/node": "^20.12.7",
"@types/uuid": "^9.0.8",
"@typescript-eslint/eslint-plugin": "^7.0.2",
"@typescript-eslint/parser": "^7.0.2",
"@typescript-eslint/parser": "^7.7.1",
"@vitejs/plugin-vue": "^5.0.4",
"concurrently": "^8.2.2",
"eslint": "^8.56.0",
"eslint": "^9.1.1",
"eslint-config-love": "^47.0.0",
"eslint-config-prettier": "^9.1.0",
"eslint-config-standard-with-typescript": "^43.0.1",
"eslint-plugin-import": "^2.29.1",
"eslint-plugin-jsonc": "^2.13.0",
"eslint-plugin-n": "^16.6.2",
"eslint-plugin-jsonc": "^2.15.1",
"eslint-plugin-n": "^17.2.1",
"eslint-plugin-prettier": "^5.1.3",
"eslint-plugin-promise": "^6.1.1",
"eslint-plugin-vue": "^9.22.0",
"eslint-plugin-yml": "^1.12.2",
"eslint-plugin-vue": "^9.25.0",
"eslint-plugin-yml": "^1.14.0",
"globals": "^15.0.0",
"husky": "^9.0.11",
"jsonc-eslint-parser": "^2.4.0",
"lint-staged": "^15.2.2",
"oxlint": "^0.2.10",
"oxlint": "^0.3.1",
"prettier": "3.2.5",
"stylelint": "^16.2.1",
"stylelint": "^16.3.1",
"stylelint-config-idiomatic-order": "^10.0.0",
"stylelint-config-standard-vue": "^1.0.0",
"stylelint-declaration-block-no-ignored-properties": "^2.8.0",
"stylelint-high-performance-animation": "^1.10.0",
"stylelint-order": "^6.0.4",
"stylelint-prettier": "^5.0.0",
"typescript": "^5.3.3",
"vite": "^5.1.4",
"vite-plugin-vue-devtools": "^7.0.15",
"vite-plugin-vuetify": "^2.0.1",
"typescript": "^5.4.5",
"typescript-eslint": "^7.7.1",
"vite": "^5.2.10",
"vite-plugin-vue-devtools": "^7.0.27",
"vite-plugin-vuetify": "^2.0.3",
"vue-eslint-parser": "^9.4.2",
"yaml-eslint-parser": "^1.2.2"
}
}

7415
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

757
src-tauri/Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
[package]
name = "TeyvatGuide"
version = "0.4.4"
version = "0.4.6"
description = "Game Tool for Genshin Impact player"
authors = ["BTMuli <bt-muli@outlook.com>"]
license = "MIT"
@@ -13,14 +13,14 @@ edition = "2021"
tauri-build = { version = "1.4", features = [] }
[dependencies]
chrono = "0.4.34"
log = "0.4.20"
chrono = "0.4.38"
log = "0.4.21"
serde = { version = "1.0.197", features = ["derive"] }
serde_json = "1.0.114"
tauri = { version = "1.6.0", features = [ "shell-execute", "shell-open", "window-set-always-on-top", "window-set-fullscreen", "dialog-message", "process-exit", "fs-read-dir", "window-hide", "os-all", "clipboard-all", "dialog-open", "dialog-save", "fs-create-dir", "fs-remove-dir", "fs-write-file", "fs-remove-file", "fs-read-file", "path-all", "fs-exists", "window-close", "window-set-title", "window-unminimize", "window-show", "window-set-focus", "http-request"] }
serde_json = "1.0.116"
tauri = { version = "1.6.1", features = [ "shell-execute", "shell-open", "window-set-always-on-top", "window-set-fullscreen", "dialog-message", "process-exit", "fs-read-dir", "window-hide", "os-all", "clipboard-all", "dialog-open", "dialog-save", "fs-create-dir", "fs-remove-dir", "fs-write-file", "fs-remove-file", "fs-read-file", "path-all", "fs-exists", "window-close", "window-set-title", "window-unminimize", "window-show", "window-set-focus", "http-request"] }
tauri-utils = "1.5.3"
url = "2.5.0"
walkdir = "2.4.0"
walkdir = "2.5.0"
# sqlite 插件
[dependencies.tauri-plugin-sql]

View File

@@ -1,6 +1,6 @@
//! @file src/client/menu.rs
//! @desc 客户端菜单模块,负责操作米游社客户端菜单
//! @since Beta v0.4.3
//! @since Beta v0.4.5
use tauri::{AppHandle, CustomMenuItem, LogicalSize, Manager, Menu, Size, Submenu, WindowUrl};
use url::Url;
@@ -27,8 +27,8 @@ fn create_utils_menu() -> Menu {
let retry_bridge = CustomMenuItem::new("retry".to_string(), "重试桥接");
let mock_touch = CustomMenuItem::new("mock_touch".to_string(), "模拟触摸");
let remove_overlay = CustomMenuItem::new("remove_overlay".to_string(), "移除遮罩");
// 旋转窗口/切换横屏或者竖屏
let rotate_window = CustomMenuItem::new("rotate_window".to_string(), "旋转窗口");
let switch_ua = CustomMenuItem::new("switch_ua".to_string(), "切换 UA");
return Menu::new()
.add_item(retry_bridge)
.add_item(mock_touch)
@@ -65,6 +65,7 @@ pub fn handle_menu_event(app_handle: AppHandle, event: tauri::MenuEvent) {
"mock_touch" => handle_menu_mock_touch(app_handle),
"remove_overlay" => handle_menu_remove_overlay(app_handle),
"rotate_window" => handle_menu_rotate_window(app_handle),
"switch_ua" => handle_menu_switch_ua(app_handle),
_ => {}
}
}
@@ -210,3 +211,23 @@ fn handle_menu_rotate_window(app_handle: AppHandle) {
window.center().unwrap();
window.set_focus().unwrap();
}
// 处理切换 UA 菜单
fn handle_menu_switch_ua(app_handle: AppHandle) {
let window = app_handle.get_window("mhy_client");
let execute_js = r#"
javascript:(async function(){
const isPc = navigator.userAgent.includes("Windows NT");
const arg = {
method: 'teyvat_switch_ua',
payload: {
url: window.location.href,
isPc,
}
}
await window.__TAURI__.event.emit('post_mhy_client',JSON.stringify(arg));
})()"#;
if window.is_some() {
window.unwrap().eval(&execute_js).ok().unwrap();
}
}

View File

@@ -1,6 +1,6 @@
//! @file src/client/mod.rs
//! @desc 客户端模块,负责操作米游社客户端
//! @since Beta v0.4.3
//! @since Beta v0.4.5
mod menu;
use tauri::async_runtime::block_on;
@@ -15,6 +15,11 @@ pub async fn create_mhy_client(handle: AppHandle, func: String, url: String) {
} else {
mhy_window_config.url = menu::get_mhy_client_url(func.clone());
}
// if pc {
// let user_agent = mhy_window_config.user_agent.as_ref().unwrap();
// let version = user_agent.split("/").last().unwrap();
// mhy_window_config.user_agent = Some(format!("Mozilla/5.0 (Windows NT 10.0; Win64; x64) miHoYoBBS/{}", version));
// }
if func == "birthday"
|| func == "web_act"
|| url.starts_with("https://webstatic.mihoyo.com/ys/event/e20220303-birthday/index.html")

View File

@@ -8,7 +8,7 @@
},
"package": {
"productName": "TeyvatGuide",
"version": "0.4.4"
"version": "0.4.6"
},
"tauri": {
"allowlist": {
@@ -170,7 +170,7 @@
"title": "米游社",
"label": "mhy_client",
"url": "",
"userAgent": "Mozilla/5.0 (Linux; Android 12) Mobile miHoYoBBS/2.67.1",
"userAgent": "Mozilla/5.0 (Linux; Android 12) Mobile miHoYoBBS/2.70.1",
"visible": false,
"width": 400,
"height": 800,

View File

@@ -184,20 +184,11 @@ async function getDeepLink(): Promise<UnlistenFn> {
}
await TGLogger.Info(`[App][getDeepLink] ${e.payload}`);
if (e.payload === "") return;
// 导入格式: teyvatguide://import_uigf?app=appName
// 跳转格式: localhost:4000/achievements/?app=appName
// todo 后续更改路径&参数名称
if (e.payload.startsWith("teyvatguide://import_uigf")) {
const param = (<string>e.payload).split("teyvatguide://import_uigf/?")[1];
let appName = "";
if (param) {
appName = param.split("app=")[1];
}
if (appName === "") {
await router.push("/achievements");
} else {
await router.push("/achievements/?app=" + appName);
}
if (
e.payload.startsWith("teyvatguide://import_uigf") ||
e.payload.startsWith("teyvatguide://import_uiaf")
) {
await toUIAF(e.payload);
} else {
showSnackbar({
text: "无效的 deep link",
@@ -208,6 +199,16 @@ async function getDeepLink(): Promise<UnlistenFn> {
});
}
async function toUIAF(link: string) {
const url = new URL(link);
const app = url.searchParams.get("app");
if (app === null || app === "") {
await router.push("/achievements");
} else {
await router.push("/achievements/?app=" + app);
}
}
// 检测更新
async function checkUpdate(): Promise<void> {
const isProdEnv = import.meta.env.MODE === "production";
@@ -224,7 +225,6 @@ async function checkUpdate(): Promise<void> {
color: "error",
timeout: 3000,
});
window.open("https://app.btmuli.ink/docs/Changelogs.html");
return;
}
appStore.buildTime = getBuildTime();
@@ -234,6 +234,7 @@ async function checkUpdate(): Promise<void> {
color: "success",
timeout: 3000,
});
window.open("https://app.btmuli.ink/docs/Changelogs.html");
}
}

View File

@@ -1,7 +1,7 @@
/*
* @file assets/css/post-parser.css
* @description 游戏公告解析 css
* @since Beta v0.4.4
* @since Beta v0.4.5
*/
.anno-body {
@@ -54,7 +54,7 @@
.anno-content :deep(details) {
padding: 10px;
border: #35acce 2px solid;
border: 1px var(--common-shadow-2) solid;
border-radius: 10px;
margin: 10px;
}
@@ -64,7 +64,7 @@
}
.anno-content :deep(details) ::marker {
color: #35acce;
color: var(--tgc-pink-1);
content: "✧";
}

View File

@@ -1,15 +0,0 @@
<svg width="256.000000" height="256.000000" viewBox="0 0 256 256" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<desc>
Created with Pixso.
</desc>
<g clip-path="url(#clip13_52)">
<path id="矩形 3" d="M66.9232 37.8271L70.7784 54.533C71.0364 55.6508 71.9092 56.5237 73.027 56.7816L89.7329 60.6368C92.8335 61.3523 92.8335 65.7677 89.7329 66.4832L73.027 70.3384C71.9092 70.5963 71.0364 71.4692 70.7784 72.587L66.9232 89.2929C66.2076 92.3935 61.7924 92.3935 61.0768 89.2929L57.2216 72.587C56.9637 71.4692 56.0908 70.5963 54.973 70.3384L38.2671 66.4832C35.1665 65.7677 35.1665 61.3524 38.2671 60.6368L54.973 56.7816C56.0908 56.5237 56.9637 55.6508 57.2216 54.533L61.0768 37.8271C61.7924 34.7265 66.2076 34.7265 66.9232 37.8271Z" fill-rule="evenodd" fill="#ECE5D8"/>
<path id="矩形 3" d="M176.392 148.672L180.417 166.115C180.847 167.978 182.302 169.433 184.165 169.863L201.608 173.888C206.776 175.081 206.776 182.439 201.608 183.632L184.165 187.657C182.302 188.087 180.847 189.542 180.417 191.405L176.392 208.848C175.199 214.016 167.841 214.016 166.648 208.848L162.623 191.405C162.193 189.542 160.738 188.087 158.875 187.657L141.432 183.632C136.264 182.439 136.264 175.081 141.432 173.888L158.875 169.863C160.738 169.433 162.193 167.978 162.623 166.115L166.648 148.672C167.841 143.504 175.199 143.504 176.392 148.672Z" fill-rule="evenodd" fill="#A9A7A3"/>
<path id="矩形 3" d="M132.872 18.1118L151.297 97.955C151.727 99.8181 153.182 101.273 155.045 101.703L234.888 120.128C240.056 121.321 240.056 128.679 234.888 129.872L155.045 148.297C153.182 148.727 151.727 150.182 151.297 152.045L132.872 231.888C131.679 237.056 124.321 237.056 123.128 231.888L104.703 152.045C104.273 150.182 102.818 148.727 100.955 148.297L21.1118 129.872C15.9442 128.679 15.9442 121.321 21.1118 120.128L100.955 101.703C102.818 101.273 104.273 99.8181 104.703 97.955L123.128 18.1118C124.321 12.9442 131.679 12.9442 132.872 18.1118Z" fill-rule="evenodd" fill="#F1EFE9"/>
</g>
<defs>
<clipPath id="clip13_52">
<rect id="wish" width="256.000000" height="256.000000" fill="white"/>
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -1,7 +1,7 @@
/**
* @file assets/themes/dark.css
* @description 主题样式文件-深色主题
* @since Beta v0.4.1
* @since Beta v0.4.5
*/
/* dark mode */
@@ -18,6 +18,8 @@ html.dark {
--box-bg-3: #282c34;
--box-bg-4: #3d424b;
--box-bg-blue: var(--tgc-blue-1);
/* box bg transparent */
--box-bg-t-1: var(--tgc-white-3);

View File

@@ -1,23 +1,25 @@
/**
* @file assets/themes/default.css
* @description 主题样式文件-默认(浅色)主题
* @since Beta v0.4.1
* @since Beta v0.4.5
*/
/* default(light) theme */
html.default {
/* app container */
--app-page-bg: #f9f6f2;
--app-page-bg: #ffffff;
--app-page-content: #2f2f2f;
--app-side-bg: #f2f2f2;
--app-side-content: #222222;
/* box container */
--box-bg-1: #ebe7df;
--box-bg-1: #f9f6f2;
--box-bg-2: #f2f9f6;
--box-bg-3: #dee4e9;
--box-bg-4: #f5f5f5;
--box-bg-blue: #249ffd;
/* box bg transparent */
--box-bg-t-1: var(--tgc-dark-5);

View File

@@ -27,7 +27,12 @@
<img src="../../assets/icons/board.svg" alt="annoIcon" class="side-icon" />
</template>
</v-list-item>
<v-list-item :title.attr="'咨讯'" value="news" :link="true" href="/news/2">
<v-list-item
:title.attr="'咨讯'"
value="news"
:link="true"
:href="`/news/2/${appStore.recentNewsType}`"
>
<template #title>咨讯</template>
<template #prepend>
<img src="/platforms/mhy/mys.webp" alt="mihoyo" class="side-icon" />
@@ -200,9 +205,9 @@
<img src="/icon/material/210.webp" class="side-icon-menu" alt="daily_note" />
</template>
</v-list-item>
<v-list-item class="side-item-menu" title="酒馆" @click="openClient('tavern')">
<v-list-item class="side-item-menu" title="收藏" :link="true" href="/collection">
<template #prepend>
<img src="/platforms/mhy/mys.webp" alt="酒馆" class="side-icon-menu" />
<img src="/source/UI/posts.png" alt="collect" class="side-icon-menu" />
</template>
</v-list-item>
<v-list-item

View File

@@ -9,13 +9,12 @@
</template>
<script lang="ts" setup>
import { event } from "@tauri-apps/api";
import { computed, onMounted } from "vue";
import { UnlistenFn } from "@tauri-apps/api/helpers/event";
import { computed, onMounted, onUnmounted } from "vue";
import { useAppStore } from "../../store/modules/app";
// store
const appStore = useAppStore();
// theme
const themeGet = computed({
get() {
return appStore.theme;
@@ -24,9 +23,10 @@ const themeGet = computed({
appStore.theme = value;
},
});
let themeListener: UnlistenFn;
onMounted(async () => {
await listenOnTheme();
themeListener = await listenOnTheme();
});
async function switchTheme(): Promise<void> {
@@ -34,12 +34,18 @@ async function switchTheme(): Promise<void> {
await event.emit("readTheme", themeGet.value);
}
async function listenOnTheme(): Promise<void> {
await event.listen("readTheme", (e) => {
const theme = <string>e.payload;
async function listenOnTheme(): Promise<UnlistenFn> {
return await event.listen<string>("readTheme", (e) => {
const theme = e.payload;
themeGet.value = theme === "default" ? "default" : "dark";
});
}
onUnmounted(() => {
if (themeListener) {
themeListener();
}
});
</script>
<style lang="css" scoped>
.switch-box {

View File

@@ -15,6 +15,9 @@
<div class="tab-link" @click="toStore()" title="点击查看商店页面">
<img src="/platforms/other/microsoft-store.webp" alt="store" />
</div>
<div class="tab-link" @click="toSite()" title="点击查看更新说明">
<v-icon color="white">mdi-update</v-icon>
</div>
</div>
</div>
</template>
@@ -47,6 +50,10 @@ function toGithub() {
function toStore() {
window.open("https://www.microsoft.com/store/productId/9NLBNNNBNSJN");
}
function toSite() {
window.open("https://app.btmuli.ink/docs/Changelogs.html");
}
</script>
<style lang="css" scoped>
.tab-box {

View File

@@ -43,13 +43,14 @@
<script lang="ts" setup>
import { computed, onMounted, onUpdated, ref } from "vue";
import DucDetailOlb from "./duc-detail-olb.vue";
import DucDetailOlt from "./duc-detail-olt.vue";
import DucDetailOrt from "./duc-detail-ort.vue";
import TGSqlite from "../../plugins/Sqlite";
import { generateShareImg } from "../../utils/TGShare";
import TOverlay from "../main/t-overlay.vue";
import DucDetailOlb from "./duc-detail-olb.vue";
import DucDetailOlt from "./duc-detail-olt.vue";
import DucDetailOrt from "./duc-detail-ort.vue";
interface DucDetailOverlayProps {
modelValue: boolean;
dataVal: TGApp.Sqlite.Character.UserRole;

Some files were not shown because too many files have changed in this diff Show More