@morehao/dsh-github-trending 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,40 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.0 - 2026-10-31
4
+
5
+ ### 变更
6
+
7
+ - **设置页只出现在左侧菜单栏**:不再同时注册 `settings.section`,改为左侧栏一个入口、内含「设置 / 运行」两个 tab,避免同一插件在左侧栏与设置里各出现一份。
8
+ - **跟随宿主明暗主题**:样式表从宿主并不存在的 `--dsh-fg / --dsh-bg / ...` 换成设计系统 token `--dsw-alias-*`,暗色桌面端不再强行渲染亮色。
9
+ - **设置页改为左侧纵向 tab + 右侧滚动**:六个分区(内容来源 / 模型 / 仓库 / 认证 / 榜单 / 调度)纵向排列,右栏独立滚动;面板根补上 `height/overflow`,修复宿主 `main` 面板裁掉内容且不出纵向滚动条的问题(运行页同样受益)。
10
+ - **沿用 DSH 配置更省心**:改为读取宿主 `ctx.agentDefaultModel.currentSelection()` 的当前默认模型一键带入(默认置顶),并只列**实际生效路由**(`listProviders`)及其模型目录(`listModels`)供按需展开选择;不再把 `listConfigurableProviders` 的能力目录当成「已配置」,也不会再把「支持 OAuth」误判为可用。`凭据引用` 默认隐藏、随选择自动带入。
11
+ - **首屏只留普通用户字段**:`TRENDING_DIGEST_CORE` 与手动 `凭据引用` 收进「高级设置」;仓库路径改为目录选择;目标分支只读展示仓库默认分支(`git symbolic-ref` 读 `origin/HEAD`,只读不写仓库);`远端`、`PR 标题模板` 不再露出,用默认规则。
12
+ - **GitHub 认证收敛**:只保留真正可用的「本机 gh」与「PAT」两种,各自给出可操作步骤,并新增「测试认证」按钮(`POST /github/test` 调 `api.github.com/user` 验证并回显账号)。删除从未实现的 Device Flow(旧配置里的 `device` 自动迁移为 `gh`)。
13
+ - **侧栏入口不再是一整张卡片**:`sidebar.panellist` 只渲染 16–18px 图标(`SidebarPanelIcon`),状态摘要与「立即运行 / 试跑」留在面板页。
14
+ - **设置按 tab 分段保存**:每个 tab 独立提交与校验(`POST /config` 新增 `section`),保存某个分区不会顺带提交或覆盖其它 tab 里尚未保存的改动;左栏 tab 用黄点标记未保存改动。
15
+
16
+ ### 修复
17
+
18
+ - **运行日志写到真实 `~/.dsh`**:`Store.logsPath` 之前忽略 `dir` 选项,测试/自定义数据目录也会把 `runs/*.log` 写进默认数据目录;改为跟随 `this.dir`。
19
+ - **代理模式下保存被 baseURL 校验误拦**:`mode=proxy` 的端点由运行时回环代理注入、quickfill 也会清空 `baseURL`,但 `/config` 仍强制其非空,导致「模型预检通过、保存却报 `model.baseURL:该 provider 需要显式 baseURL`」。现在代理模式豁免该必填校验(仍校验非空时的 http(s) 格式)。
20
+
21
+ ## 0.1.4 - 2026-10-30
22
+
23
+ > 0.1.3 从未发布到 npm(tag 推上去后 `release.yml` 在「发布前校验」失败)。0.1.4 是这批改动的第一次真实发布,内容 = 0.1.3 小节 + 本节的修复。
24
+
25
+ ### 修复
26
+
27
+ - `check-pack` 不再假设 `npm pack --dry-run --json` 是单段干净 JSON:改为扫描顶层平衡 JSON 值、取第一个含 `files` 的数组,兼容 CI 上「两段 JSON 以逗号相连」的输出形态(release run 41083620340 实测);新增 `test/pack-json.test.mjs` 6 条回归。
28
+
29
+ ## 0.1.3 - 2026-10-30
30
+
31
+ ### 工程(CI / 工具链)
32
+
33
+ - **门禁补齐为单一入口**:`npm run check` 现在串起语法 → host/client 类型 → lockfile → 契约 → 构建 → 命名/接线 → 打包白名单 → Release 正文冒烟 → 单测 → AC-P;`check.yml` 只调用它,本地与 CI 跑同一串脚本。
34
+ - 新增四道检查:`check-syntax.mjs`(`scripts/`、`test/` 语法 + `locale/`、`contract/` JSON 可解析)、`check-naming.mjs`(包名 / patch `name` / `export const name` 三处一致,`dsh.core` 与 `UPSTREAM.json` 同源,`exports`/`files` 接线)、`check-pack.mjs`(tarball 白名单 + 必备文件)、`smoke-release-notes.mjs`(投影与 git-kit 读回管道逐字一致)。
35
+ - release 链路不再重复校验:`prepublishOnly: npm run check` 改为 `prepack: npm run build`,发布时只构建、不再跑第二遍测试。
36
+ - **actions 升 v7**:此前的两条 CI warning(`Node.js 20 is deprecated`、`package-manager-cache` 非法输入——v4 不认识该输入,等于「关依赖缓存」一直空转)来自 actions v4,升 v7 后消失;Node 保持 22(CI 与发布),`engines` 为 `^22.20.0 || >=24.0.0`,新增 `.nvmrc`,构建依赖精确锁版本。
37
+
3
38
  ## 0.1.2
4
39
 
5
40
  > 0.1.1 从未发布到 npm(tag 推上去后 CI 在 `npm ci` 就失败),0.1.2 是它的第一次真实发布。
package/README.md CHANGED
@@ -1,12 +1,15 @@
1
1
  # dsh-github-trending
2
2
 
3
+ [![check](https://github.com/morehao/dsh-github-trending/actions/workflows/check.yml/badge.svg)](https://github.com/morehao/dsh-github-trending/actions/workflows/check.yml)
4
+ [![npm version](https://img.shields.io/npm/v/@morehao/dsh-github-trending.svg)](https://www.npmjs.com/package/@morehao/dsh-github-trending)
5
+
3
6
  > GitHub 趋势日报的 **DSH 入口**:每天定时 spawn 本地 [`trendradar`](https://github.com/morehao/trendradar) 核心,抓取 Trending、生成中文简介与当日总结,提交到你自己的仓库并自动合并 PR。
4
7
 
5
- **状态:0.1.1。** 插件侧(配置、调度、核心调用、状态与界面、两个工具)已完成。核心二进制走 **GitHub Release**:首次运行按 `os/arch` 下载、用 `checksums.txt` 校验 sha256、缓存到插件数据目录,之后离线复用。核心仓库打 tag 出资产之前,运行会明确报 `CORE_NOT_DOWNLOADED` / `CORE_UNAVAILABLE` 并给出下载地址——不会写空文件,也不会退回旧内容。
8
+ **状态:0.1.2。** 插件侧(配置、调度、核心调用、状态与界面、两个工具)已完成。核心二进制走 **GitHub Release**:首次运行按 `os/arch` 下载、用 `checksums.txt` 校验 sha256、缓存到插件数据目录,之后离线复用。核心仓库打 tag 出资产之前,运行会明确报 `CORE_NOT_DOWNLOADED` / `CORE_UNAVAILABLE` 并给出下载地址——不会写空文件,也不会退回旧内容。
6
9
 
7
10
  ## 它做什么
8
11
 
9
- - 按你设定的时间(IANA 时区)每天跑一次;也可以在设置页或侧栏卡片点「立即运行」
12
+ - 按你设定的时间(IANA 时区)每天跑一次;从侧栏入口或「设置 → GitHub 趋势」进入运行页,点「立即运行」
10
13
  - 一次运行 = **spawn 一次本地核心**:抓取 → 模型总结 → 渲染 → commit → push → PR → 合并,全部由核心完成
11
14
  - 插件只负责:收集配置、调度、传配置与密钥、展示结果与错误、记录最近 30 次运行
12
15
  - 内容按核心产出的成品**原样**落地(canonical),插件不改写、不重排、不二次调用模型
@@ -27,14 +30,16 @@ dsh plugin --profile <profile> add @morehao/dsh-github-trending
27
30
  2. **填模型**:点「沿用 DSH 配置」从宿主 provider 目录里挑 provider 与模型;可导出密钥的直接传给核心,OAuth 类凭据走本机回环代理。
28
31
  3. **试跑一次**:「试跑(不提交)」只抓取与渲染,不写文件、不提交。
29
32
 
33
+ > 设置页分「内容来源 / 模型 / 仓库 / 认证 / 榜单 / 调度」六个 tab,**每个 tab 独立保存与校验**;某个 tab 有未保存改动时,左侧对应 tab 会显示黄点。
34
+
30
35
  ## 它需要什么 / 它访问哪里 / 它不上传什么
31
36
 
32
37
  **需要什么**
33
38
 
34
- - DSH `0.2.1-rc.3` 以上(`engines.dsh`),Node.js ≥ 22.20
39
+ - DSH `0.2.1-rc.3` 以上(`engines.dsh`),Node.js `^22.20.0 || >=24.0.0`(`.nvmrc` 钉 22 线;CI 与发布跑 22)
35
40
  - 一个本地 **git 仓库**(提交目标)与可写的远端
36
41
  - 模型:provider + 模型 ID + 密钥(或用宿主已配置的 provider;OAuth 类凭据不需要密钥)
37
- - Git 与 GitHub 凭据(PAT / Device Flow / 本机 `gh`),仅 push 与开 PR 需要
42
+ - Git 与 GitHub 凭据(本机 `gh` 登录态 / PAT),仅 push 与开 PR 需要
38
43
  - 核心二进制:首次运行从 `github.com/morehao/trendradar/releases` 下载(按 `os/arch`,sha256 校验后缓存);之后离线复用。开发/排障时可用 `TRENDING_DIGEST_CORE`(或设置里的「核心路径」)指向一个可执行的 `trendradar`,此时完全不下载
39
44
 
40
45
  **访问哪里**
@@ -65,15 +70,17 @@ dsh plugin --profile <profile> add @morehao/dsh-github-trending
65
70
  | `model.temperature` / `maxTokens` | `0.2` / `2048` | 单次调用参数 |
66
71
  | `model.allowDegraded` | `true` | 模型失败时核心是否退回原文(会标记 degraded) |
67
72
  | `repo.path` | 空 | 本地仓库绝对路径,必填 |
68
- | `repo.baseBranch` / `remote` | `main` / `origin` | |
73
+ | `repo.baseBranch` | 读取仓库默认分支 | 只读展示,不允许手改(以 `origin/HEAD` 为准) |
74
+ | `repo.remote` | `origin` | 固定 `origin`,界面不展示 |
69
75
  | `repo.commitMode` | `branch` | `branch`(分支 + PR)/ `direct` |
70
- | `pr.enabled` / `autoMerge` / `titleTemplate` | `true` / `true` / `chore(trending): add {date} digest` | |
71
- | `github.authMode` | `device` | `device` / `pat` / `gh` |
72
- | `github.tokenRef` | `GITHUB_TOKEN` | `ctx.credentials` 引用名 |
76
+ | `pr.enabled` / `autoMerge` | `true` / `true` | |
77
+ | `pr.titleTemplate` | `chore(trending): add {date} digest` | 默认规则,界面不展示 |
78
+ | `github.authMode` | `gh` | `gh`(本机 gh 登录态)/ `pat` |
79
+ | `github.tokenRef` | `GITHUB_TOKEN` | `ctx.credentials` 引用名(`pat` 用) |
73
80
  | `trending.since` / `languages` / `topN` | `daily` / `all,typescript,python,go,rust` / `25` | 实际支持范围由核心决定 |
74
81
  | `output.dir` | `trending` | 仓库内相对目录 |
75
82
  | `schedule.enabled` / `time` / `timezone` | `true` / `08:30:00` / `Asia/Shanghai` | 插件自己的 60 s tick 驱动 |
76
- | `corePath` | 空 | 等价于 `TRENDING_DIGEST_CORE`(仅开发/排障;设了就完全不下载) |
83
+ | `corePath` | 空 | 等价于 `TRENDING_DIGEST_CORE`(仅开发/排障,收在「高级设置」;设了就完全不下载) |
77
84
  | `coreAutoDownload` | `true` | 缓存缺失时是否自动下载核心;关掉后只报 `CORE_NOT_DOWNLOADED`,由你在设置页点「下载核心」 |
78
85
 
79
86
  ## 两个工具
@@ -97,6 +104,7 @@ dsh plugin --profile <profile> add @morehao/dsh-github-trending
97
104
  | `IPC_INVALID` | 核心 stdout 不是约定的结果信封 | 升级插件与核心 |
98
105
  | `MODEL_KEY_MISSING` / `MODEL_UNAUTHORIZED` / `MODEL_NOT_FOUND` / `MODEL_RATE_LIMITED` | 模型侧 | 设置页「模型」区红字 + 重新选择 |
99
106
  | `GIT_NOT_INSTALLED` / `REPO_NOT_GIT` / `REPO_DIRTY` | 本机 git / 仓库状态 | 装 git ≥ 2.30、换仓库、先提交改动 |
107
+ | `GIT_OPERATION_FAILED` | 核心执行 git 失败(含 push 被拒) | 核心对 `trending/` 自有分支用 `--force-with-lease`;若仍报 `non-fast-forward`,多半是他人抢先推送,先 fetch/rebase 或合并该分支再重试 |
100
108
  | `GITHUB_AUTH` / `PUSH_FAILED` / `PR_FAILED` / `NOT_MERGEABLE` | 推送与 PR | 本地 commit 已保留,修好后重试即可复用 |
101
109
  | `FETCH_FAILED` / `FETCH_RATE_LIMITED` | 抓取 | 检查网络/代理或稍后重试 |
102
110