Repository navigation
Tags: feigeCode/navop-extensions
Tags
feat(release): 每次扩展发布把市场清单刷到固定 tag manifest 的 Release CNB 只镜像 Release 资产,所以市场清单 `manifest.json` 必须有一个固定的 Release 位置,客户端才能从 CNB 直读: - upload-r2 拿到 contents/actions 写权限,发布结束后创建(或更新) 固定 tag `manifest` 的 Release,并把根 `manifest.json` 覆盖上传。 - 随后派发 sync-cnb-release-assets.yml(`-f tag=manifest`),把清单同步到 CNB,路径与 GitHub 完全一致:`<host>/releases/download/manifest/manifest.json`。 - 同步脚本的 tag 校验放行 `manifest`(它不是扩展版本 tag)。
release(tsh-ssh): 发布 0.1.0(首个版本) 把 Teleport SSH (tsh) 复合扩展从「未发布」切成可上架:去掉 extension.build.json 的 `published: false`,并在根 manifest.json 补上 `com.navop.tsh-ssh` 条目(版本 0.1.0,release_tag tsh-ssh-v0.1.0)。 扩展本身是静态 composite:没有 provider、没有 runtime,连接只保存 [user@]server,宿主直接起 `tsh ssh <target>`,proxy/cluster 通过 TELEPORT_PROXY / TELEPORT_CLUSTER 环境变量传入。发布后由 Release workflow 打包 universal 静态包、生成插件清单并上传 R2。
fix(clickhouse): 首发暂不打包 Windows x86 release run 39764568638 里 i686-pc-windows-msvc 构建失败: error[E0080]: attempt to shift left by `32_i32`, which would overflow --> clickhouse-0.15.3/src/native/reader.rs:68:38 const SAFE_ALLOCATION_LIMIT: usize = 1 << 32; clickhouse 0.15.3 的 native reader 常量在 32 位上求值溢出,上游 main 仍是 同一行,0.15.3 已是最新发布版。该 crate 只从 0.15.2 起带 native 模块,而 我们只用 HTTP 接口,但模块无法用 feature 关闭。 所以先把 i686-pc-windows-msvc 从 targets 里去掉,首发 5 个 target (macOS arm64/x64、Linux x64/arm64、Windows x64),与 gbase8a/gbase8s/ oscar/tdengine 一样暂不提供 win32 包;待上游修复或改用其它客户端后补发。 Windows x86 回填矩阵随之不再包含 clickhouse,tests/scripts.test.mjs 的 期望恢复为 19 项。
fix(mobaxterm-importer): 修「部分会话导不进来」的两处静默丢弃 用户反馈 0.1.2 能装、能导,但只导进了 SSH、而且部分记录缺失。查下来两处: 1. 记录 ID 只用 slug:`slug` 把所有非 ASCII 字符吞成一个 `-`,于是 「生产服务器」和「测试服务器」算出**同一个 ID**;预览阶段按 ID 去重, 后一条被当成重复静默丢掉。中文会话名越多的配置,丢得越多。 2. `source_id` 只拼 `path#key`,不含段落:同名会话分别存在 `[Bookmarks]` 与 `[Bookmarks_1]`(不同文件夹各一条)时同样撞 ID。 现在 ID = 可读 slug + FNV-1a 64 位哈希,`source_id` 带上段落。 另外把「被跳过的会话」从静默变成可见:宿主的导入协议只有 SSH / 数据库 / 端口转发三类记录,MobaXterm 的 RDP、VNC、telnet、FTP 会话没有任何记录类型可放。 以前它们直接消失,用户只能对比条数。现在按类型汇总成 `mobaxterm_non_ssh_sessions_skipped` 警告(如「3 non-SSH session(s) were skipped (RDP ×2, VNC ×1)」)挂到首条记录,`scan()` 的 warnings 里也带一份。 顺带修正类型表的注释:索引 0 的 `7` 是 SFTP 而不是「SSH 网关/Mosh」—— SFTP 与 SSH 共用主机/端口/用户名/口令,继续按 SSH 导入,只是文案别再说错。 测试:28 项通过(新增中文名不撞 ID、跨文件夹同名共存、跳过类型汇总三条)。
feat(hexhub-importer): 新增 HexHub 连接导入器(0.1.0) 从 HexHub 导出的 HexHub-Assets.json 读取资产并转换为 Navop 导入记录: - SSH(type=2)、数据库(type=4)、Redis(type=15)、快捷命令(type=5) - SSH 私钥资产(type=1)与账号资产(type=19)作为辅助资产被引用, 经 privateKeyId / passwordPairId 落到对应记录 - proxy.sshId 指向另一台 SSH 时映射成跳板机 口令解密与客户端 encryptFields 一致:AES-128-CBC + PKCS7 + base64, 固定 KEY/IV。CBC 无认证,解完必须过"合法 UTF-8 且无控制字符"校验, 绝不把乱码当口令导入。数据库/Redis 口令在导出里是明文,不能顺手解密。 按导入协议的边界处理无法导入的内容,全部汇总成可见警告而不是静默丢弃: - RDP/VNC/Telnet/FTP/Docker/目录/SQL 查询等类型 → 跳过计数 - SOCKS5/HTTP 代理(method 取值无可靠公开定义)→ 只发警告 - 数据库的 SSH 隧道、端口转发 → 协议无对应字段,发警告 顺手补两条仓库守卫:固定厂商密钥钉死、marketplace 条目与源清单逐字一致。 tests/scripts.test.mjs 144 项全通过;cargo test 26 项全通过。
fix(mobaxterm-importer): 0.1.1 的 %OneDrive% 权限让扩展全平台装不上
宿主安装时按 `security_rules::validate_fs_permission` 校验权限路径,变量名只认
`[A-Z0-9_]`:
manifest 字段 /permissions 非法: invalid extension permission
`fs:read:%OneDrive%/Documents/MobaXterm`: 文件路径必须是绝对路径、~/ 或允许的变量
于是 0.1.1 在**所有平台**都装不上(这条校验不分平台,不只是 Windows)。
改成 `%ONEDRIVE%`:Windows 的环境变量查找大小写不敏感,运行时展开行为不变,
候选路径与权限串仍逐字相同(`CandidateFileAccess` 是按原文比对)。
同时补两条仓库守卫,把这类问题提前到 CI:
- 所有扩展的 `fs:read:`/`fs:write:` 路径必须能通过宿主的路径规则;
- `contributes.connectionImporters[].candidateFiles[].path` 必须有逐字对应的
`fs:read:` 权限(少一条就是运行期 PermissionDenied,表现为「扫不到配置」)。
release(duckdb): 发布 0.1.5 修复「生成 DDL」:`duckdb_indexes()` 没有 `internal` 列,带索引的表会整体抛 Binder Error;改用 `is_primary = FALSE AND sql IS NOT NULL` 过滤主键 ART 索引 (修复在 e8c7bd7,本次只发版)。 顺带校平版本漂移:Cargo.toml 停在 0.1.3、线上是 0.1.4,现在源码与 driver.json 同为 0.1.5,Cargo.lock 一并跟进。
PreviousNext