Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
90 commits
Select commit Hold shift + click to select a range
f94e767
ci: init
cjy0812 Jul 9, 2026
a0f09a3
fix(ci): GH_TOKEN path
cjy0812 Jul 9, 2026
0059d7f
chore: CI架构边界规则
cjy0812 Jul 9, 2026
72da240
refactor: Python模块脚本
cjy0812 Jul 9, 2026
fa3ea2b
refactor: issue CI流程
cjy0812 Jul 9, 2026
7e518bd
chore: 排除pycache目录
cjy0812 Jul 9, 2026
ec7e32b
fix: 使用job并行
cjy0812 Jul 9, 2026
67cbe3a
chore: 翻译工作流程
cjy0812 Jul 9, 2026
dfa1dd1
fix: handler Job 缺少 git 仓库上下文导致 gh CLI 失败
cjy0812 Jul 9, 2026
7f571b4
fix: 预创建工作流所需标签避免 --add-label 失败
cjy0812 Jul 9, 2026
e870bbb
fix: recovery 场景多条警告评论残留问题
cjy0812 Jul 9, 2026
3126148
docs: 更新项目规则反映权限/GH_REPO/标签预创建/Recovery清理
cjy0812 Jul 9, 2026
7babd37
refactor: 移除 extractor.py 中 local 链接类型
cjy0812 Jul 9, 2026
456d3a2
refactor: checker 移除 local 检查, 新增 GKD→GH 转换
cjy0812 Jul 9, 2026
c85370a
refactor: 主流程移除 local, GKD 纳入网络检查
cjy0812 Jul 9, 2026
a952cf4
refactor: 移除 build_warning_local, 404 不关闭
cjy0812 Jul 9, 2026
303c87b
refactor: utils 移除本地链接标签
cjy0812 Jul 9, 2026
51559d6
refactor: YAML 新增 issue_comment, 移除 local Job
cjy0812 Jul 9, 2026
efaf169
docs: 同步更新 project_rules.md
cjy0812 Jul 9, 2026
88e16d1
fix: YAML 线性链式依赖, 缺失阻断后续, 404阻断转换, 评论内容传入Python
cjy0812 Jul 9, 2026
edac432
docs: 流程图改为缩进列表, 避免ASCII方框错位
cjy0812 Jul 9, 2026
46d0e74
chore: update lib
cjy0812 Jul 9, 2026
4c20dbe
fix: 恢复条件改为有有效链接即可, 不要求旧问题链接消失
cjy0812 Jul 9, 2026
187da85
perf: 预检查提前到 checkout 之前, 跳过时省去拉代码和装 Python
cjy0812 Jul 9, 2026
802490d
feat: 新增 snapshot_parser.py 快照解析模块
cjy0812 Jul 9, 2026
4fe5281
feat: formatter.py 重写 Bot 评论, 基于 SnapshotInfo 分组展示
cjy0812 Jul 9, 2026
f7006cc
feat: check_issue.py 集成快照解析, 同Activity只下载一个代表
cjy0812 Jul 9, 2026
152343c
docs: 更新规则, 新增 snapshot_parser 模块和 Bot 评论格式
cjy0812 Jul 9, 2026
c3560da
docs: snapshot api
cjy0812 Jul 9, 2026
09a8a23
fix: gkd链接误套模板
cjy0812 Jul 9, 2026
bc76448
ci: job name
cjy0812 Jul 10, 2026
c6e4159
docs: 更新 CLAUDE.md 添加自动提交规范和 Python 模块结构
cjy0812 Jul 10, 2026
31c0aca
refactor: 重构 Python 模块,按职责分层组织代码
cjy0812 Jul 10, 2026
fad2929
refactor: 更新入口脚本和格式化模块的导入路径
cjy0812 Jul 10, 2026
659787f
feat: 新增可复用链接检查 API
cjy0812 Jul 10, 2026
7d4349c
test: 新增本地验证工具和模块说明文档
cjy0812 Jul 10, 2026
51ab5ea
refactor: 移除重构前的旧模块文件
cjy0812 Jul 10, 2026
9c8c39b
fix: 修复重构后的模块导入路径
cjy0812 Jul 10, 2026
e733167
fix: 更新 CI 工作流中的 Python 脚本路径
cjy0812 Jul 10, 2026
0a81012
docs: 更新 CLAUDE.md 中的 Python 脚本说明
cjy0812 Jul 10, 2026
216de49
chore: 将 test_results.json 添加到 .gitignore
cjy0812 Jul 10, 2026
b535575
fix: CI 中设置 PYTHONPATH 确保模块导入正常
cjy0812 Jul 10, 2026
296fdc5
chore: 排除.pyc运行文件
cjy0812 Jul 10, 2026
c16338f
fix: 评论事件只分析评论内容,修复 recovery 无法触发的问题
cjy0812 Jul 11, 2026
dbbb31d
更新 CLAUDE.md
cjy0812 Jul 11, 2026
70c38e3
feat(rules): claude架构规范
cjy0812 Jul 12, 2026
d9402ca
fix: 修复同一 Activity 多个快照重复显示问题
cjy0812 Jul 12, 2026
0437d6d
fix: 添加 _render_app_section 空列表检查
cjy0812 Jul 12, 2026
dc82a4f
feat: 评论补充链接时保留历史快照
cjy0812 Jul 12, 2026
9dad518
feat: 评论补充链接时折叠旧 Bot 评论
cjy0812 Jul 12, 2026
205e190
fix: 修复代码审查发现的问题
cjy0812 Jul 12, 2026
ea41f71
feat: 添加快照缓存机制
cjy0812 Jul 12, 2026
05efa58
feat: 为 Python 脚本添加单元测试
cjy0812 Jul 12, 2026
c4aa48c
feat: 添加 ruff 静态检查并修复代码风格问题
cjy0812 Jul 12, 2026
61e6bb9
feat: 添加 Issue 模拟测试工具
cjy0812 Jul 13, 2026
1cd55a5
feat: 重写模拟测试工具并更新文档
cjy0812 Jul 13, 2026
a28be11
feat: 补齐 debug_sim.py 与 check_issue.py 的一致性
cjy0812 Jul 13, 2026
67a6da8
fix: 修复 Pylance 类型检查警告
cjy0812 Jul 13, 2026
ae3f425
perf(ci): tag name color
cjy0812 Jul 13, 2026
9980ead
docs: 同步更新项目文档
cjy0812 Jul 13, 2026
c93e049
fix(ci): 修复 PR #233 中的代码质量问题
cjy0812 Jul 13, 2026
cd1bd8d
fix(ci): 添加 actions:write 权限以支持缓存操作
cjy0812 Jul 13, 2026
55cef51
chore: upgrade lib
cjy0812 Jul 13, 2026
2b610c1
fix(ci): Tag name Err
cjy0812 Jul 13, 2026
5ef10f6
fix(ci): 排除 Bot 警告评论避免重复提取链接
cjy0812 Jul 13, 2026
d18fdf8
fix(ci): 修复 GraphQL 查询和网络检查逻辑
cjy0812 Jul 13, 2026
fe40e9b
docs: 同步更新文档,反映网络检查新逻辑
cjy0812 Jul 13, 2026
9cdbfaa
chore(ci): 手误打错标签
cjy0812 Jul 13, 2026
2f320be
fix(ci): 修复 network_status 逻辑,有坏链接时正确反映状态
cjy0812 Jul 13, 2026
2f05f5e
fix: 多打了个点
cjy0812 Jul 13, 2026
a3b32e2
fix: 404&&本地->skip?
cjy0812 Jul 13, 2026
f0bbbbe
fix(ci): 修复 Bot 评论覆盖问题和链接转换阻断问题
cjy0812 Jul 13, 2026
285cd81
fix(ci): 修复从旧 Bot 评论提取链接时 URL 错误的问题
cjy0812 Jul 13, 2026
f38dc48
fix(ci): 修复 get-history 步骤无法正确读取旧 Bot 评论的问题
cjy0812 Jul 13, 2026
57c50fb
fix(ci): 添加 get-history 调试日志排查历史链接合并问题
cjy0812 Jul 13, 2026
dd04a84
fix(ci): 修复 get-history 步骤在无旧 Bot 评论时失败的问题
cjy0812 Jul 15, 2026
dc85731
fix(ci): 使用 peter-evans/find-comment 替代手动 gh api 获取历史链接
cjy0812 Jul 15, 2026
b624703
fix(ci): 修复 get-history 步骤 shell 注入问题
cjy0812 Jul 15, 2026
0fbb82f
fix(ci): 修复 GraphQL 查询中 author.login 格式问题
cjy0812 Jul 15, 2026
c2df48e
refactor(py): 面向对象架构 && 消除重复代码
cjy0812 Jul 15, 2026
06326cc
docs: 更新文档同步重构后的模块结构
cjy0812 Jul 15, 2026
7b06c22
perf: CLAUDE规范
cjy0812 Jul 15, 2026
8291615
fix(ci): 添加 httpx 依赖安装步骤
cjy0812 Jul 15, 2026
d7781fd
docs: 根据源代码进行修正
cjy0812 Jul 16, 2026
9e07e46
perf: 折叠多余信息
cjy0812 Jul 16, 2026
07aa695
fix(py): 修复快照解析逻辑与文档不一致的问题
cjy0812 Jul 16, 2026
0549919
perf(ci): 改为uv && 增加缓存 & 优化
cjy0812 Jul 16, 2026
3115a72
fix(ci): npm@语法误导
cjy0812 Jul 16, 2026
e7f65a9
perf(ci): Node.js 20问题
cjy0812 Jul 16, 2026
4365b49
fix(py): 代理链接被忽略
cjy0812 Jul 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 72 additions & 0 deletions .claude/rules/architecture.md
Comment thread
cjy0812 marked this conversation as resolved.
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# 项目架构

## 项目概述

GKD 订阅规则仓库 — 为 [GKD](https://gkd.li/) 提供第三方订阅规则。GKD 是一款基于 Android 无障碍服务的工具,可自动关闭广告、弹窗和不需要的 UI 元素。规则以 TypeScript 文件编写,定义 UI 节点选择器来匹配 Android 视图层级快照。

## 核心流程

```
src/apps/*.ts ──┐
src/globalGroups.ts ──┤──▶ src/subscription.ts ──▶ scripts/check.ts ──▶ scripts/build.ts ──▶ dist/gkd.json5
src/categories.ts ──┘ (defineGkdSubscription) (checkSubscription) (updateDist + updateReadMeMd)
```

- `src/subscription.ts` — 入口文件。调用 `batchImportApps()` 自动导入 `src/apps/` 下所有 `.ts` 文件,通过 `defineGkdSubscription()` 组装订阅对象。
- `src/apps/` — 每个 Android 应用一个 `.ts` 文件,以包名命名(如 `com.tencent.mm.ts`)。导出 `defineGkdApp()`,包含 `id`、`name` 和 `groups[]`。
- `src/categories.ts` — 定义规则分类(开屏广告、青少年模式、更新提示等),包含 `key`、`name` 和默认 `enable` 状态。规则组名称**必须**以分类名称开头(如 `分段广告-xxx`)。
- `src/globalGroups.ts` — 跨应用的全局规则(跳过开屏广告、更新提示、青少年模式)。使用 `src/globalDefaultApps.ts` 中的黑白名单。
- `scripts/check.ts` — 通过 `@gkd-kit/tools` 验证订阅和 API 版本。
- `scripts/build.ts` — 构建 `dist/gkd.json5`、`dist/README.md`,并从 `Template.md` 更新根目录 `README.md`。

## 关键依赖

| 包名 | 用途 |
| ----------------- | --------------------------------------------------------------------------------------- |
| `@gkd-kit/define` | `defineGkdApp`、`defineGkdSubscription`、`defineGkdCategories`、`defineGkdGlobalGroups` |
| `@gkd-kit/api` | TypeScript 类型(`RawApp`、`RawAppGroup` 等) |
| `@gkd-kit/tools` | `batchImportApps`、`checkSubscription`、`checkApiVersion`、`updateDist` |

## 规则结构

每个应用规则文件遵循以下模式:

```ts
import { defineGkdApp } from '@gkd-kit/define';

export default defineGkdApp({
id: 'com.example.app', // Android 包名
name: '应用名称',
groups: [
{
key: 0,
name: '分段广告-具体描述', // 必须以 categories.ts 中的分类名称开头
activityIds: ['com.example.Activity'], // 可选:限制特定 Activity
rules: [
{
key: 0,
name: '步骤 1 描述',
matches: '[选择器语法]', // GKD 选择器(类 CSS 语法)
snapshotUrls: ['https://i.gkd.li/i/...'], // 必填:用于维护的快照链接
},
],
},
],
});
```

## 选择器语法

GKD 选择器使用类 CSS 语法匹配 Android 视图节点。常用模式:

| 语法 | 说明 | 示例 |
| --------------------------- | -------------- | ------------------------------------ |
| `[text="精确文本"]` | 按文本内容匹配 | `[text="跳过广告"]` |
| `[text*="包含"]` | 子字符串匹配 | `[text*="跳过"]` |
| `[id="com.example:id/btn"]` | 按资源 ID 匹配 | `[id="com.tencent.mm:id/close"]` |
| `[vid="mainId"]` | 按子 ID 匹配 | `[vid="btn_skip"]` |
| `[clickable=true]` | 按属性匹配 | `[clickable=true]` |
| `@Node > [text="Child"]` | 关系选择器 | `@FrameLayout > [text="关闭"]` |
| `[visibleToUser=true]` | 可见性约束 | `[visibleToUser=true][text*="广告"]` |

详见 [GKD API 文档](https://gkd.li/api/) 和 [选择器参考](../../docs/Selectors.md)
Loading
Loading