Insomnia 版本演进全解:从 CHANGELOG 看 Mock Server、Pre-Request 脚本与 Global Environments 是如何落地的
本文以仓库根目录的 CHANGELOG.md 为主体,完整梳理 Insomnia 从 core@8.6.1 到 core@10.0.0 的五个正式版本记录:每个版本引入了什么核心能力、修复了哪些关键问题、底层对应仓库中哪些源码模块。读完本文,你不仅能掌握 Insomnia 版本变更的规范与阅读方式,还能把 changelog 中每一项特性对应到真实的实现文件与测试用例,从而在排查兼容性问题或评估升级时快速定位证据。
Changelog 的编写规范:Keep a Changelog + Semantic Versioning
CHANGELOG.md 文件开头声明了两条规范:
- 变更格式基于 Keep a Changelog;
- 版本号遵循 Semantic Versioning(语义化版本)。
从文件的实际结构可以看到其落地方式:
- 版本条目格式:每个版本以
## [core@X.Y.Z] - 日期作为标题,例如## [core@10.0.0] - 2024-09-10、## [core@9.3.3] - 2024-07-31。这里的core@前缀是 Insomnia 发布体系中对桌面端(Electron)包的发布标签命名,区别于 CLI 包inso@,从 9.2.0 中 "point changelog url at releases" 这一条目也能印证:changelog 与 GitHub Release 流程是同一套发布体系的两面。 - 变更条目格式:9.0.0 之前的版本(如 8.6.1)采用按类型分组的格式——
:sparkles: New Features、:bug: Bug Fixes、:wrench: Chores,每条包含 commit 短哈希与 PR 号;9.0.0 及之后的版本改为 "What's Changed" 单一列表,逐条罗列 PR 标题与作者。 - 预发布版本追踪:条目中大量出现
:rocket: X.Y.Z-beta.N / alpha.N字样(如 9.3.0-alpha.2 到 9.3.0-beta.7 的完整序列)。这说明 Insomnia 的主/次版本发布走的是"alpha → beta → 正式版"的迭代节奏,changelog 会把每个预发布构建作为独立条目保留,方便定位某个修复最早进入哪个候选版本。 - Full Changelog 锚点:每个版本末尾附
Full Changelog对比链接(形如core@9.3.2...core@9.3.3的 compare 区间),用于跳转到该版本区间的完整 PR 列表。
需要说明的一点事实:本文仓库快照中 CHANGELOG.md 仅保留到 core@10.0.0(2024-09-10),而 packages/insomnia/package.json 与 packages/insomnia-inso/package.json 的 version 字段已是 13.2.0。可以推断,10.0.0 之后的版本变更更多以 Release 页面形式发布,changelog 文件仅保留了一段历史区间——阅读时请注意这个时间边界。
core@8.6.1(2024-02-06):v9 前夕的收尾版本
这是 changelog 中格式最"传统"的一个版本,条目按 New Features / Bug Fixes / Chores 分组,且是唯一保留 commit 哈希与 issue 关联的版本:
- New Features
- 单元测试(unit tests)支持重新排序(Unit test reordering);
- 环境(environments)图标更新;
- 请求/响应面板的 pane-tabs 样式统一;
- 命令面板(command palette)新增打开按钮。
- Bug Fixes
- 在请求间切换时重新初始化参数编辑器状态(修复 issue #7000);
- 创建 workspace 时生成默认名称。
- Chores
- changelog 编辑流程调整。
这一版本的意义在于它是 9.0.0 大规模特性落地前的最后一个稳定基线:9.0.0 的 Full Changelog 对比区间起点正是 core@8.6.1。
core@9.0.0(2024-04-24):Mock Server、Pre-Request 脚本与隐藏窗口
9.0.0 是 changelog 中条目最多的主版本(约 160 条 PR),集中落地了四大能力线:
1. Mock Server(模拟 API)
feat: mock resources、feat: mock second pass、add mock test、mock feature feedback、mock-extraction feedback、mock UX feedback、Fix/mock-feedback-4等一系列条目构成完整的 mock 功能迭代链;provide users a subdomain based mock url:为用户提供基于子域名的 mock URL;can create local mocks in enterprise plan:企业版支持本地 mock;support SSE method, request body and auth:SSE 请求类型获得 method、请求体与鉴权支持;disable nunjucks in mock route:mock 路由中禁用 nunjucks 模板。
对应源码实现:mock 服务层位于 packages/insomnia-data/node-src/services/mock-server.ts 与 mock-route.ts;UI 端路由为 organization.$organizationId...workspace.$workspaceId.mock-server.* 系列(如 mock-server.mock-route.new.tsx);端到端测试夹具见 mock-server.yaml。
2. Pre-Request Script 与"隐藏窗口"(Hidden Window)
9.0.0 最重要的架构级变更是通过一个隐藏浏览器窗口(hidden window)承载脚本执行环境:
Adds a hidden window(PR #7063):引入隐藏窗口本身;- 随后是 API 能力的渐进放开,均标注 INS-3379:
enable the insomnia object with the environment api、enable baseEnvironment in the pre-request scripting、enable globals, iterationData and variables、enable property / headers / collection-variable / Url、enable Request and Response in pre-request scripting、enable adding snippets menu、enable insomnia.sendRequest、enable cookieJar manipulation、enable per-request var manipulation、enable external modules; feat(prereq): add cancellation、feat(prereq): add simple timeout:脚本取消与超时控制;Feat/import-prereq-script:导入流程支持前置脚本;Adds pre-request tab and minimal execution context:请求面板新增 Pre-Request 标签页。
对应的仓库证据:
- 隐藏窗口入口文件 packages/insomnia/src/entry.hidden-window.ts 及预加载脚本 entry.hidden-window-preload.ts;
- 主进程侧有 templating-worker-database.ts 等一组 worker 数据库文件支撑脚本沙箱的数据访问;
- 前端面板中 Pre-Request 标签页在 request-pane.tsx 中以
pre-request-script作为历史栈 key,文件夹级脚本挂载在 request-group-pane.tsx; - 当前版本还保留了脚本沙箱的可选路径:设置页 scripting-settings.tsx 中提供 "Use QuickJS sandbox for scripts (proof of concept)" 开关(设置项
useQuickJsScriptSandbox),说明脚本执行既有 hidden-window 全功能沙箱,也有 QuickJS-WASM 轻量沙箱(quickjs-script-engine.ts),后者仅支持 console、environment/variables 读写与只读 request,调用insomnia.sendRequest()会抛错。
3. Insomnia Sync 与同步冲突处理
Sync improvements、feat(Insomnia Cloud Sync): Update filesystem driver for VCS sync;feat(Insomnia-Sync): Add diff view、feat(Insomnia Sync): add diff view on conflict resolution and handle cancelation:冲突解决时的差异视图;feat(conflict-resolution): add labels for branch names when resolving conflicts;feat(session): Store session data in the db instead of LocalStorage:会话数据从 LocalStorage 迁移到本地数据库。
对应的同步引擎代码位于 packages/insomnia-data/src/sync 与独立的 packages/insomnia-vcs 包(vcs.ts、store/ 等)。
4. 其他 9.0.0 关键条目
feat(Command Palette): Introduce global search:命令面板引入全局搜索;feat(resizable-sidebar): replace custom sidebar with resizable-panels:侧边栏替换为可拖拽分栏;feat(onboarding): Insomnia 9:9 版新手引导;feat(event-log): Improve UX of the event log for WS and SSE responses:WS/SSE 事件日志体验;feat(organizations): Cache organizations to support offline first UX:组织数据离线缓存;feat: enable insomnia.test and insomnia.expect in scripting:脚本断言 API;Added Proxy Support for OAuth 2 Authorization Code Flow Popup:OAuth 2.0 授权码弹窗支持代理;- 基础设施:SAST 扫描(semgrep)、Vite 5 升级、Node/Electron 版本升级。
core@9.1.0 / 9.1.1(2024-04-30 / 2024-05-07):性能与网络层收敛
- 9.1.0:
fix(sidebar): improve default size and reset default order;Fix: non blocking fetch on navigate:导航时的请求改为非阻塞;expose internal requests in network tab:在 Network 面板暴露内部请求;Refactor/move insomnia fetch:insomnia-fetch逻辑迁移,对应源码 packages/insomnia/src/common/insomnia-fetch.ts;fix(graphql-autocomplete): Add schema to hintOptions、Fix/filter out content length、remove app-side session expiry等。
- 9.1.1:
unify all app requests behind a common api convention:统一所有应用请求的 API 约定;reduce reload noise coming from learning feature:降低 learning 功能引起的重载噪声;remove read only pairs from all kvp editors:键值编辑器移除只读键值对;network-cleanup:网络层清理,对应 packages/insomnia/src/network 目录(network.ts、authentication.ts 等)。
core@9.2.0(2024-05-15):Faker、Spec Lint 性能与 VCS API
Feat: add-faker:脚本与模板支持 faker.js 随机数据。仓库中的落地证据有两处:- 模板引擎侧 faker-functions.ts 导出
fakerFunctions映射; - 脚本环境侧 interpolator.ts 中
replaceIn会解析$xxx形式的 faker 标签并调用对应函数,找不到时抛出no faker function is found错误。
- 模板引擎侧 faker-functions.ts 导出
perf: improve performance when spec lint:规范(Spec)lint 性能优化;improve VCS api:版本控制 API 改进,对应 packages/insomnia-vcs/src/vcs.ts 与store/目录;feat(command-palette): Add global search for unsynced files:命令面板可搜索未同步文件;fix(Preferences): Error when there is no active project in the preferences data tab;point changelog url at releases:changelog 链接指向 Release 页面(印证前文对发布体系的说法)。
core@9.3.0(2024-06-27):文件夹继承、Global Environments 与 After-Response 脚本
9.3.0 经历了 alpha.2 → alpha.11、beta.1 → beta.7 共 19 个预发布构建,是特性最密集的次版本之一:
1. 文件夹继承(Folder Inheritance)
can navigate to folder and inherit auth:文件夹级鉴权继承;feat: folder inheritance headers:文件夹级头继承;feat: folder inheritance scripts与feat: enable importing folder-level scripts、import scripts into collection folder:文件夹级脚本继承与导入;feat: Import/folder-auth:导入时保留文件夹鉴权;move env editor to folder tab:环境编辑器迁移到文件夹标签页。
2. Global Environments(全局环境)
feat(Global Environments): Introduce a new top level file type called global environments:引入顶层"全局环境"文件类型;refactor: enable active global environment and map it to the sdk;feat(Global Environments): Update workspace settings modal for environment settings。
源码证据:packages/insomnia-data/node-src/services/environment.ts 中已按 global-environment 类型区分环境,workspace-meta.ts 也引用该概念;UI 路由包含 set-active-global.tsx,说明"激活全局环境"是独立的一等路由操作。
3. After-Response 脚本
feat: enable major features of the after-response script、fix: unify after-response script property name for folders、fix: folder scripts are not executed if request script is not enabled(9.3.2 修复)。- 脚本 SDK 对象定义集中在 packages/insomnia-scripting-environment/src/objects,共 39 个对象文件,覆盖 request、response、environment、variables 等可操作实体。
4. 其他 9.3.0 条目
feat: add fetch timeout、perf: io-parallelization:网络与 IO 并行化;feat: support generating values with faker.js in scripting;fix: websocket subprotocols;- 供应链安全:
SLSA supply chain security controls、provenance 相关脚本(fix variable names for provenance digest、use base64 output file for provenance); chore(Database types): Infer query params from database model;Bump/electron-30:Electron 升级到 30。
core@9.3.1 / 9.3.2(2024-06-28 / 2024-07-04):高频修复
- 9.3.1(4 条):URL 中未编码
@的处理、Cookie 过期时间非法日期修复、workspace 环境类型事件、request id 补充。 - 9.3.2(21 条)中值得注意的:
fix: folder scripts are not executed if request script is not enabled:修复文件夹脚本执行条件;feat: setting to toggle insomnia user-agent [INS-4107]:新增开关控制是否使用 Insomnia 默认 User-Agent;feat(Proxy Settings): Improve Proxy experience:代理体验改进,对应源码 packages/insomnia/src/main/proxy.ts;fix(Export): Allow exporting workspaces without requests:允许导出空 workspace;fix: importing collection with invalid keys returns error:导入含非法键的集合时给出明确错误。
core@9.3.3(2024-07-31):inso CLI Runner 与 Vitest 迁移
inso fifth pass、feat: inso parent folder auth、feat: inso collection runner、inso cli dx improvements:inso CLI 的多轮迭代,重点是集合运行器(collection runner)。仓库中对应实现为 packages/insomnia-inso 包(cli.ts、db/、reporter/ 等),当前版本 13.2.0;冒烟测试夹具 runner-collection.yaml 验证该能力;vitest、Vitest-2 app package:测试框架从 Jest 迁移到 Vitest(仓库中 packages/insomnia/vitest.config.ts、各子包的vitest.config.ts即为落地结果);feat: add test utils on scripting snippets:脚本片段中加入测试工具;feat(History): Navigate to last opened workspace on app load:应用启动导航到上次打开的 workspace;fix: cannot delete request by shortcut、fix(Git Clone): redirect using incorrect organizationId、feat(Sidebar): interactions improvements等;chore: enable sentry tracing、chore: add sentry metric:可观测性增强。
core@10.0.0(2024-09-10):react-router 时代与 Electron 31
changelog 中的最后一个版本条目,约 75 条 PR,核心主线:
- 路由框架升级:
bump: react-router——应用路由迁移到 react-router v7(仓库中 react-router.config.ts、routes.ts 及其按路由组织的文件树即其形态)。 - 样式体系收敛:
Remove styled-components——移除 styled-components,配合 9.x 系列中大量的 "Transform xxx to tailwind" 条目,UI 全面转向 Tailwind。 - Git Sync 完善:
feat(sync): support offline commit(离线提交)、feat: display uncommit&unpush change与feat: show uncommit&unpush status for all projects(INS-4138:展示未提交/未推送状态)、fix(Git Sync): fix issue when switching to Insomnia Sync、fix: file not synced after switch sync method。 - Postman 导入增强:
Import postman env in Insomnia project level(环境导入到项目级)、import postman data dump(INS-3810)、Preserve the original Authorization headers when importing:导入时保留原始 Authorization 头。 - Electron 31 与 Nix:
Bump/electron-31、shell.nix -> flake.nix、use nixpkgs/unstable——构建体系从 shell.nix 迁移到 Nix Flake(仓库根目录的 flake.nix / flake.lock)。 - inso CLI scripting:
inso cli scripting first pass、only minify inso cli in prod。 - 请求行为修复:
Avoid encoding queryParams when request.settingEncodeUrl is set to false(对应 path-with-params.ts 相关的 URL 处理)、Keep equal sign for empty query parameters、fix: persist cookies from response together with ones from after-response script(响应 Cookie 与 after-response 脚本 Cookie 一起持久化)。 - 安全:
fixes lodash.set cve、fix cves and add CI check、chore: hash userID on segment、chore: rm userId from sentry(隐私与依赖 CVE 处理)、feat: sign all files on windows(Windows 安装包全文件签名)。 - Onboarding v10:
feat(Onboarding): v10——10 版新手引导,对应路由 [onboarding..tsx?utm_source=gitcode_repo_files)。
如何阅读与验证这份 Changelog
结合仓库源码使用这份 changelog 的方法:
- 先定位版本区间:按
core@X.Y.Z标题找到你正在使用的版本(当前 changelog 覆盖 8.6.1~10.0.0;更新的版本请对照 packages/insomnia/package.json 中的实际版本号判断)。 - 按能力关键词检索条目:如
mock、pre-request、sync、inso、electron,条目中普遍带有 INS-xxxxx 内部工单号,可用于跨版本追踪同一特性。 - 用 Full Changelog 对比区间定位某版本全部 PR;条目中的作者名与 PR 号可作为上游检索线索。
- 到仓库中验证实现:本文已给出各特性对应的源码路径——脚本沙箱(entry.hidden-window.ts、quickjs-script-engine.ts)、faker(faker-functions.ts)、同步(packages/insomnia-vcs)、CLI(packages/insomnia-inso)、mock(mock-server.ts)。
- 用测试夹具交叉验证行为:packages/insomnia-smoke-test/fixtures 下的
mock-server.yaml、runner-collection.yaml、pre-request-collection.yaml、after-response-collection.yaml、environments.yaml等夹具分别对应 changelog 中的 mock、collection runner、前置/后置脚本与环境特性,是了解"特性实际怎么用"的最短路径。
小结
这份 CHANGELOG.md 记录了 Insomnia 从 8.6.1 到 10.0.0 的关键演进:9.0.0 确立了 hidden-window 脚本沙箱、Mock Server、同步差异视图三大架构;9.3.x 补齐了文件夹继承与 Global Environments 这类集合组织能力的短板,并完成了测试框架到 Vitest 的迁移;10.0.0 则完成了 react-router 升级、styled-components 移除与 Electron 31/Nix Flake 的构建体系现代化。条目中的预发布版本号(alpha/beta 序列)与 INS 工单号,加上仓库中对应的源码与测试夹具路径,共同构成了一条从"变更日志 → 实现代码 → 行为验证"的完整证据链。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0623
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00