Repository navigation
Releases: chenjieya/leetcode-chinese
Release list
LeetCode Chinese 1.0.4
LeetCode Chinese 1.0.4
本文沿用项目文档的 md-output 编号与修订记录规范。
[TOC]
修订记录
| 编号 | 版本 | 修订人 | 修订内容 | 日期 |
|---|---|---|---|---|
| 001 | 1.0 | jie.chen | 修复市场规则禁用错误,清理源码检查警告并增加发布预检 | 2026-10-20 |
1. 本版修复
| 检查反馈 | 处理 |
|---|---|
| 禁用 sentence-case | 删除设置页的禁用注释,输入提示改为中文“输入题目目录”;实际默认目录仍为 leetcode |
| document.createElement | 使用官方推荐的窗口 DOM 创建方法,按 ownerDocument.win 或 activeWindow 创建元素,保留多窗口归属 |
| 不安全类型 | tsconfig 明确声明 Node 与 ES2020 标准库;笔记属性使用 Record<string, unknown> 类型注解,再通过现有判断收窄字段 |
| 多余类型断言 | 使用新版规则清理冗余断言,保留确实需要的类型边界;未知 Promise 拒绝值转换为 Error |
| 设置搜索 | 实现 getSettingDefinitions,按账号、笔记、编辑器、迁移、AI、知识图谱六个分区提供搜索名称和别名,继续复用原有控件与保存逻辑 |
| 旧版本兼容 | 保留 Obsidian 1.12.7 的 display 入口;1.13+ 通过声明式定义渲染,最低版本不变 |
| moment 警告 | npm 与 pnpm 均约束 moment 为 2.31.0;同时固定已有 Obsidian 类型包版本,避免安装时漂移 |
| 自定义配置目录的迁移备份 | 备份写入与查找统一使用 vault.configDir,修正写死默认目录导致的备份重试不一致 |
设置搜索索引只包含分区名称和选项名称,不包含 Cookie、密钥或用户填写的值。切换 AI 服务时保留宿主创建的分区节点,在节点内部刷新控件。
2. 本地检查与市场检查的差异
此前仓库使用 eslint-plugin-obsidianmd 0.3.0 和 typescript-eslint 8.35.1。市场提示了较新规则和类型断言检查;本版将已有开发检查依赖更新为 0.4.2 与 8.72.0,不增加插件运行依赖。
原 tsconfig 的标准库列表没有明确包含 ES2019/ES2020,也没有显式列出 Node 类型。部分 API 的类型依赖开发机间接加载;本版显式配置,避免扫描环境把标准库调用识别为错误类型。市场实际扫描环境无法从本地完全复刻,最终结果仍需以本版的市场重新检查为准。
1.0.3 的 manifest 描述已不含 Obsidian;维护者确认此前重复的描述错误来自混入的 1.0.2 报告。本版不改回该描述。
3. 防复发检查
- pnpm lint 使用 --max-warnings 0,出现警告也会阻止 CI 和 Release。
- 新增 pnpm run check:marketplace,在 lint 前自动执行,检查描述、版本一致性、英文简介、moment 锁定和源码禁用规则。
- 新增回归覆盖设置索引不读取凭据、声明式设置切换服务后的分区保留、多 document 下控件归属。
- 测试环境补齐 Obsidian 的窗口 DOM helper;迁移测试使用自定义配置目录,验证路径来源于 vault.configDir。
生产依赖的官方 npm 审计在本次核对时报告 0 个漏洞。该结论针对实际解析的生产依赖,不代表第三方扫描器必然采用相同的依赖解析方式,也不代表未来不会发布新公告。
本地发布验证:lint 为 0 错误、0 警告;264 个测试文件通过,3083 项测试通过,8 项既有测试跳过;TypeScript 检查与生产构建通过。main.js 为 1,955,367 字节,低于 2,000,000 字节上限。
4. 安装与市场重新检查
下载 1.0.4 的 leetcode-chinese.zip,覆盖插件目录中的 main.js、manifest.json、styles.css,保留 data.json,再重新启用插件。
在市场管理页确认版本为 1.0.4;必要时通过菜单的 Check for new releases 更新版本,再执行 Request review。也可使用 Review branch 指定本次提交进行预览扫描。请只对照同一版本的检查结果。
1.0.3 已说明的两处 Vim 光标 !important 和 AWS 外部凭据程序能力仍保留。它们不属于本次类型与设置规则清理的范围。
参考资料
LeetCode Chinese 1.0.3
LeetCode Chinese 1.0.3
本文沿用项目文档的 md-output 编号与修订记录规范。
[TOC]
修订记录
| 编号 | 版本 | 修订人 | 修订内容 | 日期 |
|---|---|---|---|---|
| 001 | 1.0 | jie.chen | 修复市场检查问题并说明保留警告的原因 | 2026-10-20 |
1. 修复内容
- manifest 与 package 描述去掉冗余的 Obsidian 字样。
- README 增加英文功能介绍、安装说明、隐私说明与上游署名;保留中文正文和中文界面。
- 通过 npm、pnpm 的依赖覆盖配置,将已有间接依赖 @ai-sdk/provider-utils 从 4.0.27 固定到 4.0.33,避开 GHSA-866g-f22w-33x8 受影响范围;同步两份锁文件。
- 删除编辑器外层悬停样式的 :has 选择器,恢复宿主默认悬停效果;用局部选择器优先级替代多数 !important。
- 移除插件启动时的 shell PATH 探测,仅在 AWS credential_process 异步凭据刷新时执行。辅助命令显式使用 shell: false,保留 30 秒超时。
2. 市场警告说明
| 检查项 | 处理与限制 |
|---|---|
| manifest description | 已移除 Obsidian;版本号更新到 1.0.3 |
| README 英文 | 已加入完整英文介绍,不依赖英文标题或品牌名称通过检查 |
| provider-utils | 已更新为官方修复版本 4.0.33 |
| moment | 锁文件实际版本为 2.31.0,来自 obsidian API 依赖;该版本包含官方 GHSA-4p3w-j4w9-5jqw 补丁,官方 npm 审计未报告 moment 漏洞。若市场仍警告,需要提供具体 advisory 和识别版本再核对 |
| :has | 已移除 |
| !important | 保留两处 Vim 光标兼容:覆盖依赖的内联 animationName,以及依赖使用 important 隐藏的原生光标。仅提高选择器优先级无法覆盖这两类样式 |
| Shell Execution | 保留 AWS 本地凭据辅助程序功能,因此仍可能出现能力警告。README 已披露读取知识库外 AWS 配置、执行 credential_process 和按需探测 shell PATH 的用途;普通启动不执行 shell |
本次完整 npm 安全审计另外报告开发工具 Vitest、@vitest/mocker 和 ESLint 间接依赖 braces 的警告;这些工具不打入插件运行包。本版聚焦市场报告的运行依赖,未一并升级开发工具,不宣称完整依赖树无漏洞。
Shell Execution 是对实际能力的提示,不应通过隐藏 child_process 引用规避。只有选择 AWS 凭据链并配置 credential_process 才会走外部辅助程序路径;提交的题目代码发送至力扣判题,不在本机执行。
3. 安装与重新检查
下载本版 leetcode-chinese.zip,解压到知识库的 .obsidian/plugins/leetcode-chinese/;升级时保留 data.json,随后重新启用插件。
市场提交仍由维护者手动完成。发布后,在已有提交页面选择或刷新 1.0.3 版本并重新运行检查;若页面保存了旧 description,也需改成新版 manifest 中的描述。GitHub Release 成功不代表市场审核已通过。
4. 本地验证
- ESLint、TypeScript、生产构建和包体积门禁通过,main.js 为 1,953,256 字节。
- 自动测试 3,080 项通过、8 项原有跳过。新增凭据刷新测试覆盖按需 PATH 探测、缓存复用和 shell 元字符作为普通参数传递。
- 浏览器使用代表性宿主样式验证弹窗宽度、操作栏布局、按钮、隐藏围栏、滚动区及 Vim 普通/插入模式;该检查不代表所有第三方主题均已实测。
参考资料
LeetCode Chinese 1.0.2
LeetCode Chinese 1.0.2
本文沿用项目文档的 md-output 编号与修订记录规范。
修订记录
| 编号 | 版本 | 修订人 | 修订内容 | 日期 |
|---|---|---|---|---|
| 001 | 1.0 | jie.chen | 修复全新 pnpm 环境的 ESLint 命令并发布安装包 | 2026-10-20 |
1. 本版功能
本版显式声明 ESLint 9.39.4 开发依赖,解决全新 pnpm 安装后云端检查找不到 eslint 命令的问题。该依赖只参与开发检查,不增加插件安装包体积。1.0.0、1.0.1 保留为源码检查标签,正式安装包使用 1.0.2。
- 基于原 LeetCode 插件建立独立中文衍生版本,插件 ID 为 leetcode-chinese。
- 使用力扣中国站账号、题库、中文题面、运行与提交接口。
- 中文化设置、弹窗、判题、历史提交、竞赛和笔记工作流。
- 支持中文 AI 调试、复盘、模式分类、相关变式与竞赛分析。
- 修复 Alvis 标题格式化兼容问题,题目文件使用“题号. 中文题名.md”。
- 模式、技巧和竞赛目录统一小写,并提供旧目录迁移。
补充 pnpm 的定向依赖提升配置,使现有 CodeMirror、Lezer 和 fetcher 间接依赖在全新安装时可被上游代码引用。未引入新库、升级依赖或扩大生产包体积。
2. 安装
下载 leetcode-chinese.zip,解压到知识库的 .obsidian/plugins/leetcode-chinese/,确认 main.js、manifest.json 和 styles.css 位于该目录根层级,然后启用 LeetCode Chinese。需要 Obsidian 桌面版 1.12.7 或更新版本。
从原插件迁移时先关闭原插件,再启用本插件。重新登录中国站并配置 AI,题目目录可继续选择原笔记目录。升级本插件时保留 data.json。
本次为 GitHub 发布,社区市场状态以 Obsidian Community 实际审核结果为准。
3. 致谢
基于 Mo Xu / moxu 的 obsidian-leetcode 改造。MIT 许可证及原作者版权声明保留。中文衍生版由 jie.chen 维护。