Compare commits

...

153 Commits

Author SHA1 Message Date
目棃
151f854fd3 🚀 v0.6.7 2024-12-31 13:44:28 +08:00
目棃
28b9706933 🚸 移除跳转确认 2024-12-31 13:39:14 +08:00
目棃
e384ac8833 🍱 5.3版本资源更新
close #139
2024-12-31 13:38:21 +08:00
目棃
70615dd79b ♻️ 剔除WIKI JSON冗余数据,添加材料数据
#139
2024-12-31 11:50:11 +08:00
目棃
f0d48e866c ♻️ 剔除武器JSON冗余数据,调整武器图鉴UI 2024-12-31 11:30:40 +08:00
目棃
3a33ca13c7 🐛 修复侧边栏角色/武器图鉴跳转异常 2024-12-31 11:27:32 +08:00
目棃
1350ca17df 💄 修复渲染异常 2024-12-31 11:18:22 +08:00
目棃
4cfb19dc21 ♻️ 剔除日历JSON冗余数据 2024-12-31 11:09:22 +08:00
目棃
a98cb5dbd1 ♻️ 剔除成就JSON冗余数据 2024-12-31 10:42:43 +08:00
目棃
7c0ad79f67 ♻️ 剔除名片JSON冗余数据 2024-12-31 10:34:12 +08:00
目棃
02049dbdd6 🏷️ 完善类型 2024-12-30 17:48:33 +08:00
目棃
f154ae4836 🚸 调整合集组件改版后的滚动逻辑 2024-12-30 09:20:00 +08:00
目棃
377caed0f4 🌱 获取用户信息 2024-12-30 08:59:41 +08:00
目棃
f6ae5b335a 💄 处理转义 2024-12-27 14:20:34 +08:00
目棃
00ebacac23 💄 修复居中异常 2024-12-27 13:51:51 +08:00
目棃
c9aafac5d9 💄 调整UI 2024-12-26 19:54:37 +08:00
目棃
3bc70bbf46 🎨 调整链接卡片hint 2024-12-26 09:05:30 +08:00
目棃
9cf4e7b00e ✏️ 调整大小计算方式 2024-12-25 15:03:06 +08:00
目棃
ab5dfa9b57 🐛 修复link_card_ids字段不识别 2024-12-25 14:28:47 +08:00
目棃
f401b8d0a2 👽️ 调整时长计算 2024-12-25 12:41:38 +08:00
目棃
6494a85397 🚸 活动icon点击事件,调整类型声明 2024-12-22 09:16:29 +08:00
目棃
2c2d9d319c 🚨 fix import err 2024-12-18 13:46:46 +08:00
目棃
1c85a0b43b 👽️ 适配帖子api更新 2024-12-18 10:39:10 +08:00
目棃
e80fb197d2 💄 只显示日期 2024-12-16 22:07:20 +08:00
目棃
664e87b21c 🚸 一些调整 2024-12-16 17:24:26 +08:00
目棃
fe9737c229 🚸 调整load 2024-12-16 16:26:00 +08:00
目棃
c6a9548a43 B站视频基本信息获取,支持分享图生成 2024-12-16 16:21:17 +08:00
目棃
582d2cffb8 🚸 添加Hint 2024-12-16 11:57:24 +08:00
目棃
24e3f11c4a ♻️ loading组件重构 2024-12-16 11:13:30 +08:00
目棃
1f167845a4 🐛 修复清理日志异常 2024-12-16 09:08:09 +08:00
目棃
53479ac0fb 💄 调整回复overlay位置 2024-12-15 16:40:44 +08:00
目棃
67a241471a 🐛 修复版块跳转异常 2024-12-15 09:13:38 +08:00
目棃
07954d0c24 💄 调整level UI 2024-12-15 09:04:41 +08:00
目棃
3f0115ecba 🚀 v0.6.6 2024-12-13 16:49:46 +08:00
目棃
1b817cff5e 🚨 尝试修复 qodana 报错 2024-12-13 16:37:05 +08:00
目棃
3ed6d503d4 ♻️ 全面整理重构 2024-12-13 16:15:01 +08:00
目棃
86bfc80b57 🐛 修复增量刷新逻辑异常 2024-12-12 22:59:41 +08:00
目棃
ef710dfb99 👷 调整测试 x11 2024-12-12 10:10:37 +08:00
目棃
604108491f 👷 调整测试 x10 2024-12-12 10:07:13 +08:00
目棃
fb0a6c3ac4 👷 调整测试 x9 2024-12-12 09:55:59 +08:00
目棃
a09092c524 👷 调整测试 x8 2024-12-12 09:45:52 +08:00
目棃
b7c8fb233f 👷 调整测试 x6 2024-12-12 09:41:37 +08:00
目棃
aaf685c653 👷 调整测试 x5 2024-12-12 09:29:45 +08:00
目棃
6dd9929cc1 👷 调整测试 x4 2024-12-12 09:26:19 +08:00
目棃
245edefcec 👷 调整测试 x3 2024-12-12 09:25:05 +08:00
目棃
c158245618 👷 调整测试 x2 2024-12-12 09:21:10 +08:00
目棃
5eb298b9db 👷 调整测试 2024-12-12 09:19:53 +08:00
目棃
91062485dd 👷 添加测试构建 2024-12-12 09:15:34 +08:00
目棃
bb217cf7a8 🐛 修复主题切换响应异常 2024-12-11 23:10:31 +08:00
目棃
7108741400 🚀 v0.6.5 2024-12-11 15:58:57 +08:00
目棃
45debc85d8 🐛 调整部分UI,修复角色详情刷新异常 2024-12-11 09:06:16 +08:00
目棃
702fda94bd 💄 调整数据缺失时的显示 2024-12-09 12:05:41 +08:00
目棃
7fd5292174 ✏️ fix word err 2024-12-09 11:38:14 +08:00
目棃
81b1e15e31 UIGF4导入/导出浮窗 2024-12-09 10:50:48 +08:00
目棃
87a970b776 🍱 更新卡池数据 2024-12-09 09:03:39 +08:00
目棃
d5ec4b1b0e ♻️ 调整窗口显示逻辑 2024-12-07 19:22:41 +08:00
目棃
c7f24d2345 💄 fix card height err 2024-12-06 20:52:20 +08:00
目棃
a54f2f5f53 🐛 fix push is not defined 2024-12-06 19:17:35 +08:00
目棃
a69fb8ca50 🐛 fix TGApp is not defined again 2024-12-06 19:04:05 +08:00
目棃
d15cece933 🐛 fix TGApp is not defined 2024-12-06 18:54:25 +08:00
目棃
6a3d2d6b36 ♻️ 代码结构调整 2024-12-06 17:46:21 +08:00
目棃
dd65bb565d 🎨 一些代码调整 2024-12-06 14:36:30 +08:00
目棃
f4678be198 ♻️ 首页组件加载逻辑重构 2024-12-06 12:18:47 +08:00
目棃
dbed43bf7e 帖子话题内容解析跳转 2024-12-05 13:42:03 +08:00
目棃
5357df3743 🐛 修复ci报错 2024-12-04 10:41:32 +08:00
目棃
02ddb441a0 🔧 调整配置 2024-12-04 10:39:26 +08:00
目棃
2a83fcbcb8 🍱 添加contentId 2024-12-04 10:07:10 +08:00
目棃
1e47b4fd29 🚀 v0.6.4 2024-12-03 20:02:21 +08:00
目棃
2f8f77940d 📝 百星纪念,添加star-history 2024-12-03 16:14:42 +08:00
目棃
f7c59bbd3c 👽️ 全量刷新时清理旧数据 2024-12-01 14:56:48 +08:00
目棃
ad1e8339ac 分享图生成阈值自定义 2024-11-30 11:59:39 +08:00
目棃
da5fae7e3c 💄 微调UI 2024-11-24 14:50:06 +08:00
目棃
f47c1619e8 🎨 调整帖子查找overlay逻辑 2024-11-24 11:26:26 +08:00
目棃
d56ed5f64a 🐛 修复input默认值无效 2024-11-24 11:03:19 +08:00
目棃
202b31e6fa 🐛 修复图片渲染异常 2024-11-23 20:43:24 +08:00
目棃
5f77344fa3 💄 调整innerIcon 2024-11-21 09:01:48 +08:00
目棃
3fd33176a4 ✏️ 验证非空ID 2024-11-20 19:39:22 +08:00
目棃
a90779f992 🐛 修复子回复渲染异常 2024-11-19 21:46:34 +08:00
目棃
1efab84da0 🚀 v0.6.3 2024-11-19 17:12:02 +08:00
目棃
116d29823e 🍱 更新卡池数据
close #133
2024-11-19 17:04:57 +08:00
目棃
53c045e419 剧诗统计浮窗 2024-11-19 17:00:20 +08:00
目棃
3fef8467f4 ♻️ 调整目录结构 2024-11-19 14:45:29 +08:00
目棃
e1f85d1d92 💄 微调UI 2024-11-19 11:49:48 +08:00
目棃
878eef66fa 🍱 更新部分5.2资源
#133
2024-11-19 11:32:40 +08:00
目棃
be4e2c1039 🐛 修复成就页点击异常,调整UI 2024-11-19 10:44:39 +08:00
目棃
62171b78d9 🍱 更新部分5.2资源
#133
2024-11-19 10:28:37 +08:00
目棃
7932de8654 💄 调整收藏页UI,优化刷新逻辑 2024-11-19 10:04:20 +08:00
目棃
c6f45f0a35 ♻️ 请求模块重构 2024-11-19 09:34:18 +08:00
目棃
9b1fa22cbe 💄 修复file_size不存在导致的hint异常 2024-11-17 22:45:12 +08:00
目棃
63929bc9fd 🎨 调整加载逻辑 2024-11-17 16:39:27 +08:00
目棃
53f2612d32 💄 调整UI 2024-11-17 12:35:15 +08:00
目棃
c17339bab5 🐛 修复路径跳转异常 2024-11-17 11:29:40 +08:00
目棃
8a89883784 🐛 修复路径问题 2024-11-17 11:08:32 +08:00
目棃
4bc1808478 🎨 优化链接跳转,调整UI 2024-11-17 11:01:17 +08:00
目棃
c7b5bf34ef 🎨 优化错误处理 2024-11-17 08:59:15 +08:00
目棃
6b66467cff 💄 调整溢出 2024-11-17 08:43:44 +08:00
目棃
680a54a0f1 🎨 一些优化
* 优化公告解析逻辑
* 咨讯页loading显示版块名称
* 移除无用文件
2024-11-16 19:01:30 +08:00
目棃
2f60e128a5 🎨 调整刷新逻辑 2024-11-16 12:34:53 +08:00
目棃
863246707f 🔥 移除第9层统计数据 2024-11-16 12:29:40 +08:00
目棃
8f0853c41b 🐛 修复topic切换分区不生效 2024-11-16 12:07:08 +08:00
目棃
3166567486 💄 调整 ui 2024-11-16 11:58:43 +08:00
目棃
82f937a33e 🎨 优化结构 2024-11-16 09:13:50 +08:00
目棃
6974ada1c0 🐛 修复帖子loading异常 2024-11-15 18:02:15 +08:00
目棃
0c24b95fff ♻️ 函数式调用替代to-loading 2024-11-15 17:54:14 +08:00
目棃
c87ec77543 loading函数式调用 2024-11-15 16:51:17 +08:00
目棃
36b0d198a9 ♻️ showConfirm重构 2024-11-15 16:26:37 +08:00
目棃
76f8bc3c16 🐛 修复验证码登录-100,刷新后切换登录逻辑调整 2024-11-15 14:28:46 +08:00
目棃
f655b6b235 💄 topic显示在卡片中 2024-11-15 13:54:34 +08:00
目棃
83e0d35245 🐛 修复分类更新无效 2024-11-15 13:41:12 +08:00
目棃
10a5b88d24 🐛 修复分享图元素选取异常 2024-11-15 12:34:37 +08:00
目棃
afe53f3d30 话题跳转 2024-11-15 12:07:55 +08:00
目棃
b8afab093f 📝 修正文档链接 2024-11-15 09:53:48 +08:00
目棃
ac6dbe0cdf ♻️ showSnackbar重构 2024-11-14 18:01:38 +08:00
目棃
20b9631468 🐛 修复调用异常 2024-11-14 17:13:45 +08:00
目棃
857d99361a 👽️ 增加 genshinnet 域名处理 2024-11-13 13:16:04 +08:00
目棃
eaa07601a5 🎨 一些调整 2024-11-12 15:46:11 +08:00
目棃
d88e1d1429 🧪 剧诗表检测 2024-11-11 17:58:20 +08:00
目棃
da4a095618 真境剧诗适配
close #113
2024-11-11 17:51:48 +08:00
目棃
d35b94f79f ✏️ 修正类型 2024-11-11 13:44:02 +08:00
目棃
272f3bc14a 📝 添加UIGF4文档备份 2024-11-11 11:59:47 +08:00
目棃
a2ce468e2f 🌱 重构胡桃请求,增加幻想真境剧诗请求 2024-11-11 11:54:43 +08:00
目棃
6b8cbe0e57 🎨 调整帖子数量 2024-11-08 21:37:20 +08:00
目棃
dafcc30239 💄 修复帖子页兑换码弹窗高度异常 2024-11-08 21:36:14 +08:00
目棃
044059beb0 🔥 移除无用代码 2024-11-08 17:48:28 +08:00
目棃
eea9287cfa 🌱 幻想真境剧诗数据获取 2024-11-08 17:24:54 +08:00
目棃
8020d623e3 支持自定义表情组件渲染 2024-11-08 14:36:20 +08:00
目棃
74ff33e1fb 💄 调整UID卡片样式 2024-11-08 13:53:49 +08:00
目棃
cae2a0a1e6 🔧 调整格式化配置 2024-11-05 14:08:47 +08:00
目棃
45bc398626 新增 UID 卡片类型 2024-11-03 08:55:12 +08:00
目棃
7b5bf201ce 💄 调整UP四星颜色 2024-11-01 13:51:13 +08:00
目棃
8df9370932 🐛 修复数据undefined 2024-10-31 17:47:43 +08:00
目棃
5358b07157 🚀 v0.6.2 2024-10-31 11:27:08 +08:00
目棃
6a78bf059c 💄 调整卡片UI,维持名片比例 2024-10-31 10:13:24 +08:00
目棃
41e71357ef 💄 队伍出场页面UI调整 2024-10-30 22:49:33 +08:00
目棃
9d08880c10 💄 角色持有适配差距 2024-10-30 22:18:44 +08:00
目棃
a812e0781b 👽️ 修正咨讯Api 2024-10-30 18:07:33 +08:00
目棃
f08668e3da 💄 修复图标渲染异常 2024-10-30 17:40:14 +08:00
目棃
a544e6bb6b 🍱 更新下半卡池 2024-10-29 22:56:14 +08:00
目棃
c006a3f84d ♻️ 角色使用率&出场率 2024-10-29 18:38:11 +08:00
目棃
05cee4d8e9 ♻️ 深渊数据库重构,概览显示差距 2024-10-29 17:05:14 +08:00
目棃
06345bf5db 🐛 修复release打包失败 2024-10-27 13:11:19 +08:00
目棃
1c25942920 💄 修复视频封面位置异常 2024-10-27 12:43:29 +08:00
目棃
c17f9f4f0a ♻️ 调整代码结构 2024-10-27 12:38:45 +08:00
目棃
980b7ffd45 💄 深渊期数上对齐 2024-10-26 20:12:22 +08:00
目棃
35fcee9b3b 💄 修复回顶组件宽度异常[mac] 2024-10-26 20:05:24 +08:00
目棃
6701464002 🐛 修复用户登录状态异常 2024-10-26 18:22:15 +08:00
目棃
5f1d07968c 💄 mac隐藏游戏目录设置&游戏启动badge 2024-10-26 15:39:27 +08:00
目棃
83bfd5d1eb 🎨 调整保存时的hint 2024-10-26 15:08:02 +08:00
目棃
0050ee773e 💄 调整未登录时的部分内容渲染 2024-10-26 11:21:56 +08:00
目棃
7749406c90 ✏️ 修正部分类型 2024-10-25 10:11:56 +08:00
目棃
26041948ef ♻️ 请求重构,合并postWapi跟apiHub相关请求 2024-10-24 23:51:45 +08:00
目棃
41db04b7a2 💄 子回复取消保持,点击其他隐藏 2024-10-24 22:14:35 +08:00
目棃
003344c722 ⬆️ 走ssh更新,统一更新日志路径,更新依赖 2024-10-24 22:10:01 +08:00
1171 changed files with 36509 additions and 69072 deletions

View File

@@ -26,6 +26,14 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup SSH
uses: webfactory/ssh-agent@v0.9.0
with:
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
- name: Add SSH known hosts
run: ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
- name: Test SSH connection
run: ssh -T git@github.com || true
- name: Add Rust targets(macOS Intel)
if: matrix.settings.target == 'macos-intel'
run: rustup target add x86_64-apple-darwin
@@ -43,11 +51,11 @@ jobs:
- name: setup node
uses: actions/setup-node@v3
with:
node-version: 22.8.0
node-version: 23.3.0
- name: setup pnpm
uses: pnpm/action-setup@v2
with:
version: 9.10.0
version: 9.15.0
- name: Install frontend dependencies
run: pnpm install

View File

@@ -12,11 +12,11 @@ jobs:
- name: setup node
uses: actions/setup-node@v3
with:
node-version: 22.8.0
node-version: 23.3.0
- name: setup pnpm
uses: pnpm/action-setup@v2
with:
version: 9.10.0
version: 9.15.0
- name: Install dependencies
run: pnpm install --no-frozen-lockfile
- name: "Qodana Scan"

68
.github/workflows/test.yml vendored Normal file
View File

@@ -0,0 +1,68 @@
name: Build Test
on:
workflow_dispatch:
inputs:
version:
description: "Version to build"
required: true
default: "0.1.0"
jobs:
build-tauri:
permissions:
contents: write
strategy:
fail-fast: false
matrix:
settings:
- platform: windows-latest
args: ""
target: "windows"
bundlePath: msi/
- platform: macos-latest
args: "--target x86_64-apple-darwin"
target: "macos-intel"
bundlePath: macos/TeyvatGuide.app
- platform: macos-latest
args: "--target aarch64-apple-darwin"
target: "macos-arm"
bundlePath: macos/TeyvatGuide.app
runs-on: ${{ matrix.settings.platform }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup SSH
uses: webfactory/ssh-agent@v0.9.0
with:
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
- name: Add SSH known hosts
run: ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
- name: Test SSH connection
run: ssh -T git@github.com || true
- name: Rust setup
uses: dtolnay/rust-toolchain@stable
- 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
- name: setup node
uses: actions/setup-node@v3
with:
node-version: 23.3.0
- name: setup pnpm
uses: pnpm/action-setup@v2
with:
version: 9.15.0
- name: Install frontend dependencies
run: pnpm install
- name: Build app
run: pnpm build ${{ matrix.settings.args }}
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: TeyvatGuide_v${{ github.event.inputs.version }}_${{ matrix.settings.target }}
path: src-tauri/target/release/bundle/${{ matrix.settings.bundlePath }}
if-no-files-found: error

1
.npmrc
View File

@@ -1 +0,0 @@
ELECTRON_MIRROR=https://npm.taobao.org/mirrors/electron/

View File

@@ -16,3 +16,4 @@ qodana.yaml
# data
!src/data/**/*.json
src-tauri/gen/*.json
!eslint

View File

@@ -5,10 +5,11 @@ extends:
- stylelint-config-standard-vue
- stylelint-config-idiomatic-order
plugins:
- stylelint-scss
- stylelint-prettier
- stylelint-order
rules:
prettier/prettier: true
property-no-vendor-prefix:
- true
- ignoreProperties: [backdrop-filter]
prettier/prettier: true

View File

@@ -2,14 +2,101 @@
Author: 目棃
Description: CHANGELOG
Date: 2024-10-09
Update: 2024-10-22
Update: 2024-12-31
---
> 本文档 [`Frontmatter`](https://github.com/BTMuli/MuCli#Frontmatter) 由 [MuCli](https://github.com/BTMuli/Mucli) 自动生成于 `2024-10-09 15:51:43`
>
> 更新于 `2024-10-22 20:51:24`
> 更新于 `2024-12-31 13:41:03`
## [0.6.1](https://github.com/BTMuli/TeyvatGuide/releases/v0.6.0) (2024-10-22)
## [0.6.7](https://github.com/BTMuli/TeyvatGuide/releases/v0.6.7) (2024-12-31)
- 🍱 更新5.3版本游戏资源 [`#139`](https://github.com/BTMuli/TeyvatGuide/issues/139)
- ✨ 支持嵌入B站视频的分享图渲染
- 🐛 修复版块跳转异常
- 🐛 修复清理日志异常
- 🐛 修复特定帖子`link_card_ids`数据解析异常
- 🐛 修复帖子文本居中异常
- 🐛 修复侧边栏跳转角色/武器图鉴异常
- ✏️ 调整分享图大小计算方式采用1024进制而非原有的1000进制
- 💄 调整用户等级UI浅色深色下统一为白色文字
- 💄 调整回复弹窗位置,上移一段距离以避免底部提示遮挡
- 💄 首页素材日历组件只显示日期,移除具体时间
- 💄 调整链接卡片提示文字
- 💄 调整剧诗角色列表显示UI
- 🚸 版块/咨讯页数据获取/刷新显示成功提示
- 🚸 首页近期活动卡片Icon补充缺失的点击逻辑
- 🚸 调整合集组件改版后的滚动逻辑,更加流畅
- 👽️ 由于API变更调整版块数据获取逻辑
- 👽️ 由于返回数据格式变更,调整视频时长的计算逻辑
- 👽️ 由于返回数据格式变更,处理帖子内的转义字符
- ♻️ loading组件重构部分页面显示更精准的进度
- ♻️ 应用元数据格式重构,剔除冗余数据
## [0.6.6](https://github.com/BTMuli/TeyvatGuide/releases/v0.6.6) (2024-12-13)
- 🐛 修复主题切换响应异常
- 🐛 修复增量刷新逻辑异常
- ⚡️ 显著降低运行内存占用
## [0.6.5](https://github.com/BTMuli/TeyvatGuide/releases/v0.6.5) (2024-12-11)
- 🍱 添加下半卡池数据&部分资源
- ✨ 帖子内容中涉及的话题链接支持应用内跳转
- ♻️ 首页组件加载逻辑重构
- ✨ UIGF4导入/导出浮窗支持自选UID
- 💄 调整剧诗部分数据缺失时的显示
- 🐛 调整部分UI修复切换账户后角色详情刷新异常
## [0.6.4](https://github.com/BTMuli/TeyvatGuide/releases/v0.6.4) (2024-12-03)
- 🐛 修复子回复渲染异常
- ✏️ 祈愿记录将验证非空ID
- 🐛 修复战绩分享图渲染异常
- 🐛 修复`dialog`组件`input`默认值无效
- 🎨 调整帖子查找overlay逻辑
- ✨ 分享图生成阈值自定义
- 👽️ 全量刷新时清理旧数据,修复由于米哈游数据异常导致的重复数据
## [0.6.3](https://github.com/BTMuli/TeyvatGuide/releases/v0.6.3) (2024-11-19)
- 🐛 修复用户战绩角色数据`undefined`
- 🐛 修复咨讯页加载更多异常
- 🐛 修复验证码登录提示`-100`数据刷新后若为已登录UID则不会再提示切换
- 🐛 修复部分公告渲染异常
- 🐛 修复成就页面在存在搜索内容时点击左侧成就系列无响应
- ✨ 帖子新增 UID 卡片解析&渲染
- ✨ 帖子新增自定义表情解析&渲染
- ✨ 真境剧诗适配,新增真境剧诗页面,支持获取&分享&上传(胡桃数据库),可通过深渊页面进入
- ✨ 新增话题页面,可通过帖子卡片标签点击或帖子详情顶部标签点击进入
- ✨ 更完善的`loading`显示调整了组件UI
- 🍱 更新5.2版本资源 [`#133`](https://github.com/BTMuli/TeyvatGuide/issues/133)
- 💄 调整祈愿记录UP四星颜色
- 💄 修复帖子页兑换码弹窗高度异常
- 💄 调整帖子卡片UI增加显示帖子话题如存在话题&版块支持点击跳转
- 💄 调整帖子详情页UI顶部话题&版块支持点击跳转
- 💄 调整帖子显示数量,支持加载更多,默认排序改为`最新回复`,移除`默认排序`,增加`热门`排序
- 💄 咨讯、帖子等页面刷新时自动滚动到顶部
- 🔥 深渊数据库显示移除第9层统计数据
- 👽️ 米游社子窗口增加`genshinnet`域名支持
- 🎨 优化帖子详情数据加载的错误处理
- ♻️ `snackbar``confirm``loading`组件重构
- ♻️ 请求模块重构
## [0.6.2](https://github.com/BTMuli/TeyvatGuide/releases/v0.6.2) (2024-10-31)
- 🐛 修复用户登录状态异常 [`#132`](https://github.com/BTMuli/TeyvatGudie/issues/132)
- 💄 帖子子回复取消保持,点击其他隐藏
- 💄 调整未登录时的部分内容渲染
- 💄 调整保存时图片的hint
- 💄 `mac`:修复回顶组件宽度异常
- 💄 `mac`:修复视频封面位置异常
- 💄 调整角色卡片UI维持名片比例
- ♻️ 深渊数据库重构,概览显示差距
- 🍱 更新下半卡池
- 👽️ 修正咨讯Api
## [0.6.1](https://github.com/BTMuli/TeyvatGuide/releases/v0.6.1) (2024-10-22)
- 🐛 新用户数据库初始化异常 [`#131`](https://github.com/BTMuli/TeyavtGuide/issues/131)
- 🐛 修复角色数据未即时刷新

View File

@@ -2,12 +2,12 @@
Author: 目棃
Description: 说明文档
Date: 2023-03-05
Update: 2024-10-07
Update: 2024-12-03
---
> 本文档 [`Frontmatter`](https://github.com/BTMuli/MuCli#Frontmatter) 由 [MuCli](https://github.com/BTMuli/Mucli) 自动生成于 `2023-03-05 14:41:55`
>
> 更新于 `2024-10-07 21:51:00`
> 更新于 `2024-12-03 16:14:14`
![](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)
@@ -49,6 +49,7 @@ Game Tool for Genshin Impact player, supports Windows and macOS.
- [x] 游戏内公告&活动获取
- [x] 米游社官方帖获取(支持通过 ID 获取)
- [x] 米游社各分区帖子获取(支持通过 ID 获取)
- [x] 米游社话题帖子获取(通过话题点击跳转)
- [x] 成就管理UIAF v1.1),支持 [`YaeAchievement`](https://github.com/HolographicHat/YaeAchievement) 导入
- [x] 祈愿管理UIGF v3.0UIGF v4.0
- [x] 留影叙佳期画片查看
@@ -60,7 +61,9 @@ Game Tool for Genshin Impact player, supports Windows and macOS.
- [x] 原神战绩数据获取
- [x] 角色详情数据获取
- [x] 螺旋深渊数据获取
- [x] 真境剧诗数据获取
- [x] 祈愿数据获取(近一年)
- [x] 用户收藏帖子获取
- Wiki 功能:
@@ -93,14 +96,14 @@ Game Tool for Genshin Impact player, supports Windows and macOS.
- Changelog: [CHANGELOG](CHANGELOG.md)
- 资源来源:[项目资源说明](docs/项目资源说明.md)
- UIAF[UIAF v1.1](docs/UIAF.md)
- UIGF[UIGF v3.0](docs/UIGF.md)
- UIGF[UIGF v3.0](docs/UIGF3.md)[UIGF v4.0](docs/UIGF.md)
- [macOS 平台门禁属性导致应用无法打开应用的修复指引](docs/macos-gatekeeper/README.md)
## 特定项目 / Special Project
- [MuCli](https://github.com/BTMuli/MuCli):基于 NodeJS 的命令行工具,用于生成项目文档。
- [TGAssistant](https://github.com/BTMuli/TGAssistant)Teyvat Guide 的资源获取、解析、处理仓库。
- ~~[WhiteTea](https://github.com/BTMuli/WhiteTea)Github Bot自动化处理 Teyvat Guide 的 Issue 和 Pull Request。~~ 服务已挂T_T
- [WhiteTea](https://github.com/BTMuli/WhiteTea)Github Bot自动化处理 Teyvat Guide 的 Issue 和 Pull Request。
## 技术栈 / Tech Stack
@@ -122,7 +125,7 @@ Game Tool for Genshin Impact player, supports Windows and macOS.
应用版本号遵循 [Semantic Versioning 2.0.0](https://semver.org/lang/zh-CN/) 规范。
隐私政策:[Privacy](https://app.btmuli.ink/docs/privacy.html)
隐私政策:[Privacy](https://app.btmuli.ink/docs/TeyvatGuide/privacy.html)
## 鸣谢 / Thanks
@@ -140,3 +143,5 @@ Game Tool for Genshin Impact player, supports Windows and macOS.
感谢 JetBrains 提供的开源许可证。
![JetBrains logo](https://resources.jetbrains.com/storage/products/company/brand/logos/jetbrains.png)
[![Star History Chart](https://api.star-history.com/svg?repos=BTMuli/TeyvatGuide&type=Timeline)](https://star-history.com/#BTMuli/TeyvatGuide&Timeline)

View File

@@ -1,190 +1,371 @@
---
Author: 目棃
Description: UIGF v2.4 Backup
Date: 2023-11-15
Update: 2024-03-13
Description: UIGF v4 Backup
Date: 2024-11-11
Update: 2024-11-11
---
> 本文档 [`Frontmatter`](https://github.com/BTMuli/MuCli#Frontmatter) 由 [MuCli](https://github.com/BTMuli/Mucli) 自动生成于 `2023-11-15 20:58:36`
> 本文档 [`Frontmatter`](https://github.com/BTMuli/MuCli#Frontmatter) 由 [MuCli](https://github.com/BTMuli/Mucli) 自动生成于 `2024-11-11 11:57:27`
>
> 更新于 `2024-03-13 15:50:36`
> 更新于 `2024-11-11 11:57:27`
> 本文档为 [UIGF v3.0](https://github.com/UIGF-org/UIGF-org.github.io/blob/main/docs/zh/standards/UIGF.md) 的备份,仅供参考。
> 本文档为 [UIGF v4.0](https://github.com/UIGF-org/UIGF-org.github.io/blob/main/docs/zh/standards/uigf.md) 的备份,仅供参考。
# 统一可交换抽卡记录标准 v3.0
# 统一可交换抽卡记录标准 v4.0
> Uniformed Interchangeable GachaLog Format standard (UIGF) v3.0 <Badge text="Current" type="message" />
>
> ::: warning UIGF 标准使用声明
> 应用必须在同时支持 UIGF 数据格式**导入**和**导出**功能并在相关功能区域或文档中提供跳转至 [UIGF-Org](https://uigf.org) 的超链接后声明支持 UIGF 格式
> Uniformed Interchangeable GachaLog Format standard (UIGF) v4.0 <Badge text="Current" type="message" />
仅包含导入或导出功能降低了用户数据可流通性,且将数据至于用户不可控的风险中,不符合 UIGF-Org 设计的初衷。
::: warning 中断性更新警告
`UIGF v4.0 及更高版本` 对于 `UIGF v3.0 及更低版本``SRGF v1.0` **不具备向下兼容性**。UIGF/SRGF 合作项目如需适配,需重新认证。
:::
## 更新记录
| 版本 | 说明 | 兼容 |
| ----------------------------- | ---------------------------------------------------------- | -------------- |
| `v2.0` | 首个正式版本 | v2.0 |
| `v2.1` | 简化了部分语言表述,与 v2.0在数据格式上完全一致 | v2.1 and lower |
| [`v2.2`](UIGF-legacy-v2.2.md) | 新增 `info.export_timestamp` 填充 UNIX 时间戳 | v2.2 and lower |
| [`v2.3`](UIGF-legacy-v2.3.md) | 扩充至非中文语境,使用 Json Schema 表述。移除了 Excel 格式 | v2.3 and lower |
| [`v2.4`](UIGF-legacy-v2.4.md) | 新增 `info.region_time_zone` 支持时区处理 | v2.4 and lower |
| `v3.0` | 新增 集录祈愿类型支持 | v3.0 and lower |
| 版本 | 说明 | 兼容 |
| ------ | --------------------------------- | --------------- |
| `v3.0` | 低版本的更新日志请查看历史版本 | v3.0 及更低版本 |
| `v4.0` | 合并 SRGF新增绝区零抽卡格式支持 | v4.0 |
### v3.0 更新内容
## 前言
- `gacha_type` 增加新枚举项
-`gacha_type` 枚举新增值为 `500` 的项,用于表示集录祈愿类型
为了统一不同应用、不同游戏、不同账号间的抽卡记录导入导出行为,我们决定将所有支持的游戏抽卡格式合并入 UIGF 中。不同的游戏、不同的账号将能够以单个文件或字符串的形式进行表示,导入与导出操作对用户而言将变得史无前例的简单。
## `info` 字段说明
## 实现与认证
### `region_time_zone`
实现 `UIGF v4.0 及更高版本`格式的导入导出并不意味着需要移除对 `UIGF v3.0 及更低版本``SRGF v1.0` 的导入导出支持。但是,不建议对 `UIGF v4.0 和更高版本``UIGF v3.0 及更低版本``SRGF v1.0` 使用同一套导入导出逻辑。
由于在获取祈愿记录时得到的`time`为服务器时间,为了准确判断时间的时区偏移,引入此字段
导出方可以选择性地填充针对每个游戏的字段或直接忽略;导入方可以选择性地读取针对每个游戏的字段或直接忽略
与 SRGF 不同,由于无法直接从服务器获取`region_time_zone`,在导出方未提供此字段时,需要根据 `uid` 进行推断
针对对某一款游戏的支持,必须同时实现数据的导入和导出功能,否则将无法通过认证
#### 映射关系
::: info UIGF 标准使用声明
请在应用内提供跳转至 [UIGF-Org](https://uigf.org) 的超链接,声明支持 UIGF 数据格式。
| `uid`首个字符 | `region_time_zone` | 游戏服务器 |
| ------------- | ------------------ | --------------------------------- |
| `'6'` | `-5` | os_usa |
| `'7'` | `1` | os_euro |
| 剩余情况 | `8` | os_cht, os_asia, cn_gf01, cn_qd01 |
App 不应假定 `region_time_zone` 的值为上表中给出的值,应具有处理非标准 `region_time_zone` 值的能力。
`region_time_zone` 的值与 `uid` 推断结果不一致,则优先选择 `region_time_zone` 给出的值。
## `list` 字段说明
### `id`
物品内包含了一项较为特殊的字段: `id`,为原神官方 API 中包含的,代表每条抽卡记录唯一性的 `id`。App 导出 UIGF 时
- 需要确保每个物品都有一个有效的唯一 `id`
- 若有记录中不包含`id`,则应从下一个自带有效 `id` 的物品开始,为每条缺失`id`字段的数据补全`id`
赋值数据向前(时间排序)依次递减,每次递减的值应保持为 `1`
### `gacha_type`
由于存在会共享保底与概率的卡池,所以需要一个额外的字段来界定
我们在 `UIGF` 的所有格式中注入了 `uigf_gacha_type` 字段
在导出到 `UIGF` 格式时需要注意添加对应的 `uigf_gacha_type` 字段
#### 映射关系
| `uigf_gacha_type` | `gacha_type` |
| ----------------- | -------------- |
| `100` | `100` |
| `200` | `200` |
| `301` | `301` or `400` |
| `302` | `302` |
| `500` | `500` |
### `item_id`
物品游戏内ID你可以通过 [UIGF API](../API.md) 获取这一数据
仅包含导入或导出功能降低了用户数据的流通性,且将数据置于用户不可控的风险中,不符合 UIGF-Org 设计的初衷。
:::
## Json Schema
> UIGF-Org 提供[Json Schema](/schema/uigf.json) 用于验证
> UIGF-Org 提供下述 Json Schema 以用于验证资料结构的正确性。
::: warning 注意字段类型
开发者务必遵循 Schema 内定义的字段类型。使用错误的类型可能会导致其他由强类型编程语言编写的工具在解析 Json 文件时产生错误,进而导致数据转移失败。
为了避免这类问题,我们建议您针对 UIGF 格式设计专用的数据结构。同时,设计相关的单元测试以确保导入导出的一致性。
我们也提供 [UIGF 格式校验工具](https://schema.uigf.org/?schema=uigf)来帮助你校验 Json 文件。
:::
```json
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"info": {
"type": "object",
"properties": {
"uid": {
"type": "string",
"title": "导出记录的 UID"
},
"lang": {
"type": "string",
"title": "语言 languagecode2-country/regioncode2"
},
"export_timestamp": {
"type": "number",
"title": "导出 UNIX 时间戳(秒)"
},
"export_time": {
"type": "string",
"title": "导出时间",
"description": "yyyy-MM-dd HH:mm:ss"
"oneOf": [
{
"type": "string"
},
{
"type": "integer"
}
],
"description": "导出档案的时间戳,秒级"
},
"export_app": {
"type": "string",
"title": "导出 App 名称"
"description": "导出档案的 App 名称"
},
"export_app_version": {
"type": "string",
"title": "导出 App 版本"
"description": "导出档案的 App 版本"
},
"uigf_version": {
"version": {
"type": "string",
"title": "UIGF 版本号",
"pattern": "v\\d+\\.\\d+"
},
"region_time_zone": {
"type": "number",
"title": "区域时区偏移"
"pattern": "^v\\d+\\.\\d+$",
"description": "导出档案的 UIGF 版本号,格式为 'v{major}.{minor}',如 v4.0"
}
},
"required": ["uid", "uigf_version"],
"title": "UIGF 导出信息"
"required": ["export_timestamp", "export_app", "export_app_version", "version"]
},
"list": {
"hk4e": {
"type": "array",
"items": {
"type": "object",
"properties": {
"uigf_gacha_type": {
"type": "string",
"title": "UIGF 卡池类型",
"description": "用于区分卡池类型不同,但卡池保底计算相同的物品"
"uid": {
"oneOf": [
{
"type": "string"
},
{
"type": "integer"
}
],
"description": "UID"
},
"gacha_type": {
"type": "string",
"title": "卡池类型"
"timezone": {
"type": "integer",
"description": "时区偏移,由米哈游 API 返回,若与服务器时区不同请注意 list 中 time 的转换"
},
"item_id": {
"lang": {
"type": "string",
"title": "物品的内部 ID"
"description": "语言代码",
"enum": [
"de-de",
"en-us",
"es-es",
"fr-fr",
"id-id",
"it-it",
"ja-jp",
"ko-kr",
"pt-pt",
"ru-ru",
"th-th",
"tr-tr",
"vi-vn",
"zh-cn",
"zh-tw"
]
},
"count": {
"type": "string",
"title": "个数一般为1"
},
"time": {
"type": "string",
"title": "获取物品的时间"
},
"name": {
"type": "string",
"title": "物品名称"
},
"item_type": {
"type": "string",
"title": "物品类型"
},
"rank_type": {
"type": "string",
"title": "物品等级"
},
"id": {
"type": "string",
"title": "记录内部 ID"
"list": {
"type": "array",
"items": {
"type": "object",
"properties": {
"uigf_gacha_type": {
"type": "string",
"description": "UIGF 卡池类型,用于区分卡池类型不同,但卡池保底计算相同的物品",
"enum": ["100", "200", "301", "302", "500"]
},
"gacha_type": {
"type": "string",
"description": "卡池类型,米哈游 API 返回",
"enum": ["100", "200", "301", "302", "400", "500"]
},
"item_id": {
"type": "string",
"description": "物品的内部 ID"
},
"count": {
"type": "string",
"description": "物品个数一般为1米哈游 API 返回"
},
"time": {
"type": "string",
"description": "抽取物品时对应时区timezone下的当地时间"
},
"name": {
"type": "string",
"description": "物品名称,米哈游 API 返回"
},
"item_type": {
"type": "string",
"description": "物品类型,米哈游 API 返回"
},
"rank_type": {
"type": "string",
"description": "物品等级,米哈游 API 返回"
},
"id": {
"type": "string",
"description": "记录内部 ID米哈游 API 返回"
}
},
"required": ["uigf_gacha_type", "gacha_type", "item_id", "time", "id"]
}
}
},
"required": ["uigf_gacha_type", "gacha_type", "id", "item_id", "time"],
"title": "UIGF 物品"
},
"title": "物品列表"
"required": ["uid", "timezone", "list"]
}
},
"hkrpg": {
"type": "array",
"items": {
"type": "object",
"properties": {
"uid": {
"oneOf": [
{
"type": "string"
},
{
"type": "integer"
}
],
"description": "UID"
},
"timezone": {
"type": "integer",
"description": "时区偏移,由米哈游 API 返回,若与服务器时区不同请注意 list 中 time 的转换"
},
"lang": {
"type": "string",
"description": "语言代码",
"enum": [
"de-de",
"en-us",
"es-es",
"fr-fr",
"id-id",
"it-it",
"ja-jp",
"ko-kr",
"pt-pt",
"ru-ru",
"th-th",
"tr-tr",
"vi-vn",
"zh-cn",
"zh-tw"
]
},
"list": {
"type": "array",
"items": {
"type": "object",
"properties": {
"gacha_id": {
"type": "string",
"description": "卡池 Id"
},
"gacha_type": {
"type": "string",
"description": "卡池类型",
"enum": ["1", "2", "11", "12"]
},
"item_id": {
"type": "string",
"description": "物品的内部 ID"
},
"count": {
"type": "string",
"description": "物品个数一般为1米哈游 API 返回"
},
"time": {
"type": "string",
"description": "抽取物品时对应时区timezone下的当地时间"
},
"name": {
"type": "string",
"description": "物品名称,米哈游 API 返回"
},
"item_type": {
"type": "string",
"description": "物品类型,米哈游 API 返回"
},
"rank_type": {
"type": "string",
"description": "物品等级,米哈游 API 返回"
},
"id": {
"type": "string",
"description": "记录内部 ID米哈游 API 返回"
}
},
"required": ["gacha_type", "gacha_id", "time", "item_id", "id"]
}
}
},
"required": ["uid", "timezone", "list"]
}
},
"nap": {
"type": "array",
"items": {
"type": "object",
"properties": {
"uid": {
"oneOf": [
{
"type": "string"
},
{
"type": "integer"
}
],
"description": "UID"
},
"timezone": {
"type": "integer",
"description": "时区偏移,由米哈游 API 返回,若与服务器时区不同请注意 list 中 time 的转换"
},
"lang": {
"type": "string",
"description": "语言代码",
"enum": [
"de-de",
"en-us",
"es-es",
"fr-fr",
"id-id",
"it-it",
"ja-jp",
"ko-kr",
"pt-pt",
"ru-ru",
"th-th",
"tr-tr",
"vi-vn",
"zh-cn",
"zh-tw"
]
},
"list": {
"type": "array",
"items": {
"type": "object",
"properties": {
"gacha_id": {
"type": "string",
"description": "卡池 Id"
},
"gacha_type": {
"type": "string",
"description": "卡池类型",
"enum": ["1", "2", "3", "5"]
},
"item_id": {
"type": "string",
"description": "物品的内部 ID"
},
"count": {
"type": "string",
"description": "物品个数一般为1米哈游 API 返回"
},
"time": {
"type": "string",
"description": "抽取物品时对应时区timezone下的当地时间"
},
"name": {
"type": "string",
"description": "物品名称,米哈游 API 返回"
},
"item_type": {
"type": "string",
"description": "物品类型,米哈游 API 返回"
},
"rank_type": {
"type": "string",
"description": "物品等级,米哈游 API 返回"
},
"id": {
"type": "string",
"description": "记录内部 ID米哈游 API 返回"
}
},
"required": ["gacha_type", "item_id", "time", "id"]
}
}
},
"required": ["uid", "timezone", "list"]
}
}
},
"required": ["info", "list"],
"title": "UIGF 根对象"
"required": ["info"]
}
```

190
docs/UIGF3.md Normal file
View File

@@ -0,0 +1,190 @@
---
Author: 目棃
Description: UIGF v3 Backup
Date: 2023-11-15
Update: 2024-11-11
---
> 本文档 [`Frontmatter`](https://github.com/BTMuli/MuCli#Frontmatter) 由 [MuCli](https://github.com/BTMuli/Mucli) 自动生成于 `2023-11-15 20:58:36`
>
> 更新于 `2024-11-11 11:56:11`
> 本文档为 [UIGF v3.0](https://github.com/UIGF-org/UIGF-org.github.io/blob/main/docs/zh/standards/uigf-legacy-v3.0.md) 的备份,仅供参考。
# 统一可交换抽卡记录标准 v3.0
> Uniformed Interchangeable GachaLog Format standard (UIGF) v3.0 <Badge text="Current" type="message" />
>
> ::: warning UIGF 标准使用声明
> 应用必须在同时支持 UIGF 数据格式**导入**和**导出**功能并在相关功能区域或文档中提供跳转至 [UIGF-Org](https://uigf.org) 的超链接后声明支持 UIGF 格式
仅包含导入或导出功能降低了用户数据可流通性,且将数据至于用户不可控的风险中,不符合 UIGF-Org 设计的初衷。
:::
## 更新记录
| 版本 | 说明 | 兼容 |
| ----------------------------- | ---------------------------------------------------------- | -------------- |
| `v2.0` | 首个正式版本 | v2.0 |
| `v2.1` | 简化了部分语言表述,与 v2.0在数据格式上完全一致 | v2.1 and lower |
| [`v2.2`](UIGF-legacy-v2.2.md) | 新增 `info.export_timestamp` 填充 UNIX 时间戳 | v2.2 and lower |
| [`v2.3`](UIGF-legacy-v2.3.md) | 扩充至非中文语境,使用 Json Schema 表述。移除了 Excel 格式 | v2.3 and lower |
| [`v2.4`](UIGF-legacy-v2.4.md) | 新增 `info.region_time_zone` 支持时区处理 | v2.4 and lower |
| `v3.0` | 新增 集录祈愿类型支持 | v3.0 and lower |
### v3.0 更新内容
- `gacha_type` 增加新枚举项
-`gacha_type` 枚举新增值为 `500` 的项,用于表示集录祈愿类型
## `info` 字段说明
### `region_time_zone`
由于在获取祈愿记录时得到的`time`为服务器时间,为了准确判断时间的时区偏移,引入此字段。
与 SRGF 不同,由于无法直接从服务器获取`region_time_zone`,在导出方未提供此字段时,需要根据 `uid` 进行推断。
#### 映射关系
| `uid`首个字符 | `region_time_zone` | 游戏服务器 |
| ------------- | ------------------ | --------------------------------- |
| `'6'` | `-5` | os_usa |
| `'7'` | `1` | os_euro |
| 剩余情况 | `8` | os_cht, os_asia, cn_gf01, cn_qd01 |
App 不应假定 `region_time_zone` 的值为上表中给出的值,应具有处理非标准 `region_time_zone` 值的能力。
`region_time_zone` 的值与 `uid` 推断结果不一致,则优先选择 `region_time_zone` 给出的值。
## `list` 字段说明
### `id`
物品内包含了一项较为特殊的字段: `id`,为原神官方 API 中包含的,代表每条抽卡记录唯一性的 `id`。App 导出 UIGF 时
- 需要确保每个物品都有一个有效的唯一 `id`
- 若有记录中不包含`id`,则应从下一个自带有效 `id` 的物品开始,为每条缺失`id`字段的数据补全`id`
赋值数据向前(时间排序)依次递减,每次递减的值应保持为 `1`
### `gacha_type`
由于存在会共享保底与概率的卡池,所以需要一个额外的字段来界定
我们在 `UIGF` 的所有格式中注入了 `uigf_gacha_type` 字段
在导出到 `UIGF` 格式时需要注意添加对应的 `uigf_gacha_type` 字段
#### 映射关系
| `uigf_gacha_type` | `gacha_type` |
| ----------------- | -------------- |
| `100` | `100` |
| `200` | `200` |
| `301` | `301` or `400` |
| `302` | `302` |
| `500` | `500` |
### `item_id`
物品游戏内ID你可以通过 [UIGF API](../API.md) 获取这一数据
## Json Schema
> UIGF-Org 提供[Json Schema](/schema/uigf.json) 用于验证
```json
{
"type": "object",
"properties": {
"info": {
"type": "object",
"properties": {
"uid": {
"type": "string",
"title": "导出记录的 UID"
},
"lang": {
"type": "string",
"title": "语言 languagecode2-country/regioncode2"
},
"export_timestamp": {
"type": "number",
"title": "导出 UNIX 时间戳(秒)"
},
"export_time": {
"type": "string",
"title": "导出时间",
"description": "yyyy-MM-dd HH:mm:ss"
},
"export_app": {
"type": "string",
"title": "导出 App 名称"
},
"export_app_version": {
"type": "string",
"title": "导出 App 版本"
},
"uigf_version": {
"type": "string",
"title": "UIGF 版本号",
"pattern": "v\\d+\\.\\d+"
},
"region_time_zone": {
"type": "number",
"title": "区域时区偏移"
}
},
"required": ["uid", "uigf_version"],
"title": "UIGF 导出信息"
},
"list": {
"type": "array",
"items": {
"type": "object",
"properties": {
"uigf_gacha_type": {
"type": "string",
"title": "UIGF 卡池类型",
"description": "用于区分卡池类型不同,但卡池保底计算相同的物品"
},
"gacha_type": {
"type": "string",
"title": "卡池类型"
},
"item_id": {
"type": "string",
"title": "物品的内部 ID"
},
"count": {
"type": "string",
"title": "个数一般为1"
},
"time": {
"type": "string",
"title": "获取物品的时间"
},
"name": {
"type": "string",
"title": "物品名称"
},
"item_type": {
"type": "string",
"title": "物品类型"
},
"rank_type": {
"type": "string",
"title": "物品等级"
},
"id": {
"type": "string",
"title": "记录内部 ID"
}
},
"required": ["uigf_gacha_type", "gacha_type", "id", "item_id", "time"],
"title": "UIGF 物品"
},
"title": "物品列表"
}
},
"required": ["info", "list"],
"title": "UIGF 根对象"
}
```

View File

@@ -1,11 +1,20 @@
import eslint_jsonc from "eslint-plugin-jsonc";
import eslint_js from "@eslint/js";
import eslint_ts from "typescript-eslint";
import eslint_vue from "eslint-plugin-vue";
import { jsonEslintConfig } from "./eslint/jsonEslint.js";
import { vueEslintConfig } from "./eslint/vueEslint.js";
import ymlEslintConfig from "./eslint/ymlEslint.js";
export default [
eslint_js.configs.recommended,
...eslint_jsonc.configs["flat/recommended-with-jsonc"],
...eslint_ts.configs.recommended,
...eslint_vue.configs["flat/essential"],
...jsonEslintConfig,
ymlEslintConfig,
...vueEslintConfig,
ymlEslintConfig,
{
ignores: [
"dist",
@@ -13,7 +22,7 @@ export default [
"pnpm-lock.yaml",
"src/data/**/*.json",
"src-tauri/tauri.conf.json",
"src-tauri/gen/*.json",
"src-tauri/**/*.json",
"qodana.yaml",
".github",
".vscode",

View File

@@ -1,14 +1,10 @@
import eslint_jsonc from "eslint-plugin-jsonc";
import jsonc_parser from "jsonc-eslint-parser";
import pluginJsonc from "eslint-plugin-jsonc";
import parserJsonc from "jsonc-eslint-parser";
const pkgJsonConfig = {
files: ["package.json"],
plugins: {
jsonc: eslint_jsonc,
},
languageOptions: {
parser: jsonc_parser,
},
plugins: { jsonc: pluginJsonc },
languageOptions: { parser: parserJsonc },
rules: {
"jsonc/comma-dangle": ["error", "never"],
"jsonc/sort-keys": [
@@ -38,12 +34,8 @@ const pkgJsonConfig = {
const tscJsonConfig = {
files: ["tsconfig.json"],
plugins: {
jsonc: eslint_jsonc,
},
languageOptions: {
parser: jsonc_parser,
},
plugins: { jsonc: pluginJsonc },
languageOptions: { parser: parserJsonc },
rules: {
"jsonc/comma-dangle": ["error", "never"],
"jsonc/sort-keys": [
@@ -66,29 +58,12 @@ const tscJsonConfig = {
const jsoncConfig = {
files: ["source/data/out/**/*.json", ".vscode/**/*.json"],
plugins: {
jsonc: eslint_jsonc,
},
languageOptions: {
parser: jsonc_parser,
},
plugins: { jsonc: pluginJsonc },
languageOptions: { parser: parserJsonc },
rules: {
"jsonc/comma-dangle": ["error", "never"],
"jsonc/sort-keys": [
"error",
{
pathPattern: "^$",
order: {
type: "asc",
},
},
],
"jsonc/sort-keys": ["error", { pathPattern: "^$", order: { type: "asc" } }],
},
};
export const jsonEslintConfig = [
...eslint_jsonc.configs["flat/recommended-with-json"],
pkgJsonConfig,
tscJsonConfig,
jsoncConfig,
];
export const jsonEslintConfig = [pkgJsonConfig, tscJsonConfig, jsoncConfig];

View File

@@ -1,87 +1,52 @@
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 pluginImport from "eslint-plugin-import";
import pluginPrettier from "eslint-plugin-prettier";
import pluginVue from "eslint-plugin-vue";
import globals from "globals";
import eslint_ts from "typescript-eslint";
import vue_parser from "vue-eslint-parser";
import eslintTs from "typescript-eslint";
import parserVue from "vue-eslint-parser";
const tsConfigRules = {
"@typescript-eslint/consistent-type-assertions": [
"error",
{
assertionStyle: "angle-bracket",
},
],
"@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",
"@typescript-eslint/no-unused-expressions": ["error", { allowShortCircuit: false }],
"import/order": [
"error",
{
groups: ["builtin", "external", "internal", "parent", "sibling", "index", "unknown"],
"newlines-between": "always",
alphabetize: {
order: "asc",
caseInsensitive: true,
},
alphabetize: { order: "asc", caseInsensitive: true },
},
],
"prettier/prettier": "error",
};
const tsConfig = {
files: ["*.ts"],
plugins: {
typescript: eslint_ts,
import: eslint_import,
prettier: eslint_prettier,
},
files: ["*.ts", "*.d.ts", "src/**/*.ts", "src/**/*.d.ts"],
plugins: { typescript: eslintTs, import: pluginImport, prettier: pluginPrettier },
languageOptions: {
parser: eslint_ts.parser,
parserOptions: {
project: "tsconfig.json",
tsconfigRootDir: ".",
},
parser: eslintTs.parser,
parserOptions: { project: "tsconfig.json", tsconfigRootDir: "." },
},
rules: tsConfigRules,
};
const vueConfig = {
plugins: {
vue: eslint_vue,
import: eslint_import,
prettier: eslint_prettier,
},
files: ["src/**/*.vue", "src/App.vue"],
plugins: { vue: pluginVue, import: pluginImport, prettier: pluginPrettier },
languageOptions: {
globals: {
...globals.browser,
...globals.es2021,
TGApp: "readonly",
window: "readonly",
},
globals: { ...globals.browser, ...globals.es2021, TGApp: "readonly", window: "readonly" },
ecmaVersion: "latest",
sourceType: "module",
parser: vue_parser,
parser: parserVue,
parserOptions: {
project: "tsconfig.json",
parser: eslint_ts.parser,
parser: eslintTs.parser,
extraFileExtensions: [".vue"],
tsconfigRootDir: ".",
},
},
rules: {
...tsConfigRules,
"vue/multi-word-component-names": "off",
},
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,
];
export const vueEslintConfig = [tsConfig, vueConfig];

View File

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

View File

@@ -1,23 +1,24 @@
{
"name": "TeyvatGuide",
"version": "0.6.1",
"name": "teyvatguide",
"version": "0.6.7",
"description": "Game Tool for GenshinImpact player",
"private": true,
"packageManager": "pnpm@9.15.0",
"type": "module",
"scripts": {
"build": "tauri build",
"debug": "tauri build --debug",
"dev": "tauri dev --exit-on-panic",
"eslint:pre": "pnpx @eslint/config-inspector@latest",
"lint": "concurrently \"pnpm:lint:*(!fix)\"",
"lint:fix": "concurrently \"pnpm:lint:*:fix\"",
"lint:code": "eslint .",
"lint:code:fix": "eslint . --fix",
"lint:style": "stylelint \"src/**/*.{vue,css}\"",
"lint:style": "stylelint \"src/**/*.{vue,css,scss}\" -f verbose",
"lint:style:fix": "pnpm lint:style --fix",
"lint:rust:fix": "cd src-tauri && cargo fmt",
"prettier": "prettier . --write",
"tauri": "tauri",
"tauri:icon": "tauri icon ./public/icon.png",
"vite:dev": "vite dev",
"vite:build": "vite build",
"prepare": "husky"
@@ -66,73 +67,72 @@
},
"dependencies": {
"@mdi/font": "7.4.47",
"@tauri-apps/api": "^2.0.3",
"@tauri-apps/plugin-deep-link": "^2.0.0",
"@tauri-apps/plugin-dialog": "^2.0.1",
"@tauri-apps/plugin-fs": "^2.0.1",
"@tauri-apps/plugin-http": "^2.0.1",
"@tauri-apps/plugin-log": "^2.0.0",
"@tauri-apps/plugin-os": "^2.0.0",
"@tauri-apps/plugin-process": "^2.0.0",
"@tauri-apps/plugin-shell": "^2.0.1",
"@tauri-apps/plugin-sql": "^2.0.0",
"@tauri-apps/api": "^2.1.1",
"@tauri-apps/plugin-deep-link": "^2.2.0",
"@tauri-apps/plugin-dialog": "^2.2.0",
"@tauri-apps/plugin-fs": "^2.2.0",
"@tauri-apps/plugin-http": "^2.2.0",
"@tauri-apps/plugin-log": "^2.2.0",
"@tauri-apps/plugin-os": "^2.2.0",
"@tauri-apps/plugin-process": "^2.2.0",
"@tauri-apps/plugin-shell": "^2.2.0",
"@tauri-apps/plugin-sql": "^2.2.0",
"ajv": "^8.17.1",
"artplayer": "^5.2.0",
"artplayer": "^5.2.1",
"clipboard": "^2.0.11",
"color-convert": "^2.0.1",
"echarts": "^5.5.1",
"html2canvas": "^1.4.1",
"js-md5": "^0.8.3",
"jsencrypt": "^3.3.2",
"pinia": "^2.2.4",
"pinia-plugin-persistedstate": "^4.1.1",
"uuid": "^10.0.0",
"vue": "^3.5.12",
"pinia": "^2.3.0",
"pinia-plugin-persistedstate": "^4.1.3",
"sass": "^1.83.0",
"sass-loader": "^16.0.4",
"uuid": "^11.0.3",
"vue": "^3.5.13",
"vue-echarts": "^7.0.3",
"vue-json-viewer": "^3.0.4",
"vue-router": "^4.4.5",
"vuetify": "^3.7.3",
"vue-router": "^4.5.0",
"vuetify": "^3.7.5",
"wcag-color": "^1.1.1",
"xml-js": "^1.6.11"
},
"devDependencies": {
"@eslint/eslintrc": "^3.1.0",
"@eslint/js": "^9.13.0",
"@tauri-apps/cli": "2.0.4",
"@eslint/eslintrc": "^3.2.0",
"@eslint/js": "^9.17.0",
"@tauri-apps/cli": "2.1.0",
"@types/color-convert": "^2.0.4",
"@types/js-md5": "^0.7.2",
"@types/node": "^22.7.8",
"@types/node": "^22.10.2",
"@types/uuid": "^10.0.0",
"@typescript-eslint/parser": "^8.11.0",
"@vitejs/plugin-vue": "^5.1.4",
"concurrently": "^9.0.1",
"eslint": "^9.13.0",
"eslint-config-love": "^89.0.1",
"eslint-config-prettier": "^9.1.0",
"@typescript-eslint/parser": "^8.18.0",
"@vitejs/plugin-vue": "^5.2.1",
"concurrently": "^9.1.0",
"eslint": "^9.17.0",
"eslint-plugin-import": "^2.31.0",
"eslint-plugin-jsonc": "^2.16.0",
"eslint-plugin-n": "^17.11.1",
"eslint-plugin-jsonc": "^2.18.2",
"eslint-plugin-prettier": "^5.2.1",
"eslint-plugin-promise": "^7.1.0",
"eslint-plugin-vue": "^9.29.1",
"eslint-plugin-yml": "^1.14.0",
"globals": "^15.11.0",
"husky": "^9.1.6",
"eslint-plugin-vue": "^9.32.0",
"eslint-plugin-yml": "^1.16.0",
"globals": "^15.13.0",
"husky": "^9.1.7",
"jsonc-eslint-parser": "^2.4.0",
"lint-staged": "^15.2.10",
"oxlint": "^0.10.1",
"prettier": "3.3.3",
"stylelint": "^16.10.0",
"lint-staged": "^15.2.11",
"oxlint": "^0.15.2",
"prettier": "3.4.2",
"stylelint": "^16.11.0",
"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.2",
"typescript": "^5.6.3",
"typescript-eslint": "^8.11.0",
"vite": "^5.4.9",
"vite-plugin-vue-devtools": "^7.5.2",
"stylelint-scss": "^6.10.0",
"typescript": "^5.7.2",
"typescript-eslint": "^8.18.0",
"vite": "^6.0.3",
"vite-plugin-vue-devtools": "^7.6.8",
"vite-plugin-vuetify": "^2.0.4",
"vue-eslint-parser": "^9.4.3",
"yaml-eslint-parser": "^1.2.3"

4123
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View File

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB

View File

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View File

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB

View File

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 41 KiB

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 322 B

After

Width:  |  Height:  |  Size: 322 B

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View File

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View File

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

View File

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View File

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

View File

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

View File

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 53 KiB

View File

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View File

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

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