leetcode-local-cli 0.11.0 将登录凭据与刷题工作区分离,收紧 HTTP 凭据边界,并按模型、存储、外部集成和本地执行重组源码。本项目仍处于内测阶段,不兼容旧状态路径或旧内部 Python 导入路径。
用户体验
login、status、profile、show、get、check和默认doctor不再要求初始化工作区;账号和题目查询仍需有效登录态。- 登录前明确展示 Chrome/Edge 的 Remote debugging 设置地址及勾选步骤,自动打开失败时也可按链接手动操作。
- 新增
lc solve <题号> --no-open,只保存解法。保存成功但系统无法打开文件时只警告,仍返回 0;写入失败返回 1 且不打开文件。 - 新增
lc init <完整路径> --repair,先同目录备份损坏配置的原始字节,再恢复配置;保留已有解法。不支持的版本、站点、语言及不安全目标不会被强制覆盖。 lc test --stdin的运行时启动错误也返回 JSON Lines 和稳定错误码;非法 CLI 参数仍返回用法错误和退出码 2。
安全与结构
- 凭据请求只允许精确
https://leetcode.cn的默认 HTTPS 端口,拒绝 URL 用户信息及全部重定向,避免 Cookie 外发和提交正文重放。 - Session 单次读取并统一校验,默认模型表示不显示凭据;Doctor 与正常命令共用相同校验结果。
- 源码按
commands / use_cases / models / storage / integrations / execution分层,用 AST 测试约束依赖方向。 - 账号、题目分页和详情使用不可变结果模型,错误分类不依赖中文字符串解析。
- 普通 push/PR 新增三平台 Python 3.12 CI;标签工作流继续负责质量门禁、PyPI Trusted Publishing 和 GitHub Release。
- 源码仓库不再跟踪根目录
solution.py,开发者工作区仍可与源码同目录,普通用户可自选目录。
升级说明
uv tool upgrade leetcode-local-cli
lc --version
lc login
lc init <原工作区完整路径> --yes首次安装使用 uv tool install leetcode-local-cli。从旧版本升级时,Session 需重新登录生成,工作区需重新注册;已有普通 solution.py 会保留。旧工作区 Session 和根目录 .leetcode-local-cli.toml 不自动读取、迁移或删除,请自行安全清理旧凭据。若已经使用本次内测的新状态路径,无需重复初始化或登录。
Session 保存在系统用户的本地状态目录,工作区 marker 位于 .leetcode_local_cli/workspace.toml,两者都不得提交或共享。Session 仍为明文,本地 worker 也不是安全沙箱。
验证
- Windows 通过 Ruff format、Ruff lint、Pyright 和 443 passed / 18 skipped 的完整测试;跳过项涉及符号链接权限和仅适用 POSIX/Bash 的检查。
- wheel/sdist 隔离安装验证版本和帮助入口、临时工作区初始化、无工作区 JSON 错误以及 worker 实际调用。
- 发布流程在 Linux、macOS、Windows 执行门禁及安装器验证;通过后才发布 PyPI 和 GitHub Release。
- 本轮未读取真实 Cookie,也未执行真实浏览器登录或 LeetCode 远程提交。