首页
/ Insomnia 版本演进全解:从 CHANGELOG 看 Mock Server、Pre-Request 脚本与 Global Environments 是如何落地的

Insomnia 版本演进全解:从 CHANGELOG 看 Mock Server、Pre-Request 脚本与 Global Environments 是如何落地的

2026-09-05 10:29:23作者:裴麒琰

本文以仓库根目录的 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(语义化版本)。

从文件的实际结构可以看到其落地方式:

  1. 版本条目格式:每个版本以 ## [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 流程是同一套发布体系的两面。
  2. 变更条目格式:9.0.0 之前的版本(如 8.6.1)采用按类型分组的格式——:sparkles: New Features:bug: Bug Fixes:wrench: Chores,每条包含 commit 短哈希与 PR 号;9.0.0 及之后的版本改为 "What's Changed" 单一列表,逐条罗列 PR 标题与作者。
  3. 预发布版本追踪:条目中大量出现 :rocket: X.Y.Z-beta.N / alpha.N 字样(如 9.3.0-alpha.2 到 9.3.0-beta.7 的完整序列)。这说明 Insomnia 的主/次版本发布走的是"alpha → beta → 正式版"的迭代节奏,changelog 会把每个预发布构建作为独立条目保留,方便定位某个修复最早进入哪个候选版本。
  4. 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.jsonpackages/insomnia-inso/package.jsonversion 字段已是 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 resourcesfeat: mock second passadd mock testmock feature feedbackmock-extraction feedbackmock UX feedbackFix/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.tsmock-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 apienable baseEnvironment in the pre-request scriptingenable globals, iterationData and variablesenable property / headers / collection-variable / Urlenable Request and Response in pre-request scriptingenable adding snippets menuenable insomnia.sendRequestenable cookieJar manipulationenable per-request var manipulationenable external modules
  • feat(prereq): add cancellationfeat(prereq): add simple timeout:脚本取消与超时控制;
  • Feat/import-prereq-script:导入流程支持前置脚本;
  • Adds pre-request tab and minimal execution context:请求面板新增 Pre-Request 标签页。

对应的仓库证据:

3. Insomnia Sync 与同步冲突处理

  • Sync improvementsfeat(Insomnia Cloud Sync): Update filesystem driver for VCS sync
  • feat(Insomnia-Sync): Add diff viewfeat(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 fetchinsomnia-fetch 逻辑迁移,对应源码 packages/insomnia/src/common/insomnia-fetch.ts
    • fix(graphql-autocomplete): Add schema to hintOptionsFix/filter out content lengthremove 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.tsreplaceIn 会解析 $xxx 形式的 faker 标签并调用对应函数,找不到时抛出 no faker function is found 错误。
  • perf: improve performance when spec lint:规范(Spec)lint 性能优化;
  • improve VCS api:版本控制 API 改进,对应 packages/insomnia-vcs/src/vcs.tsstore/ 目录;
  • 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 scriptsfeat: enable importing folder-level scriptsimport 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 scriptfix: unify after-response script property name for foldersfix: 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 timeoutperf: 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 digestuse 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 passfeat: inso parent folder authfeat: inso collection runnerinso cli dx improvements:inso CLI 的多轮迭代,重点是集合运行器(collection runner)。仓库中对应实现为 packages/insomnia-inso 包(cli.ts、db/、reporter/ 等),当前版本 13.2.0;冒烟测试夹具 runner-collection.yaml 验证该能力;
  • vitestVitest-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 shortcutfix(Git Clone): redirect using incorrect organizationIdfeat(Sidebar): interactions improvements 等;
  • chore: enable sentry tracingchore: add sentry metric:可观测性增强。

core@10.0.0(2024-09-10):react-router 时代与 Electron 31

changelog 中的最后一个版本条目,约 75 条 PR,核心主线:

  1. 路由框架升级bump: react-router——应用路由迁移到 react-router v7(仓库中 react-router.config.tsroutes.ts 及其按路由组织的文件树即其形态)。
  2. 样式体系收敛Remove styled-components——移除 styled-components,配合 9.x 系列中大量的 "Transform xxx to tailwind" 条目,UI 全面转向 Tailwind。
  3. Git Sync 完善feat(sync): support offline commit(离线提交)、feat: display uncommit&unpush changefeat: show uncommit&unpush status for all projects(INS-4138:展示未提交/未推送状态)、fix(Git Sync): fix issue when switching to Insomnia Syncfix: file not synced after switch sync method
  4. Postman 导入增强Import postman env in Insomnia project level(环境导入到项目级)、import postman data dump(INS-3810)、Preserve the original Authorization headers when importing:导入时保留原始 Authorization 头。
  5. Electron 31 与 NixBump/electron-31shell.nix -> flake.nixuse nixpkgs/unstable——构建体系从 shell.nix 迁移到 Nix Flake(仓库根目录的 flake.nix / flake.lock)。
  6. inso CLI scriptinginso cli scripting first passonly minify inso cli in prod
  7. 请求行为修复Avoid encoding queryParams when request.settingEncodeUrl is set to false(对应 path-with-params.ts 相关的 URL 处理)、Keep equal sign for empty query parametersfix: persist cookies from response together with ones from after-response script(响应 Cookie 与 after-response 脚本 Cookie 一起持久化)。
  8. 安全fixes lodash.set cvefix cves and add CI checkchore: hash userID on segmentchore: rm userId from sentry(隐私与依赖 CVE 处理)、feat: sign all files on windows(Windows 安装包全文件签名)。
  9. Onboarding v10feat(Onboarding): v10——10 版新手引导,对应路由 [onboarding..tsx](https://gitcode.com/GitHubTrending/in/insomnia/blob/51015127010798268152ff47b8218829f6ffecb6/packages/insomnia/src/routes/onboarding..tsx](https://gitcode.com/GitHub_Trending/in/insomnia/blob/51015127010798268152ff47b8218829f6ffecb6/packages/insomnia/src/routes/onboarding..tsx?utm_source=gitcode_repo_files)。

如何阅读与验证这份 Changelog

结合仓库源码使用这份 changelog 的方法:

  1. 先定位版本区间:按 core@X.Y.Z 标题找到你正在使用的版本(当前 changelog 覆盖 8.6.1~10.0.0;更新的版本请对照 packages/insomnia/package.json 中的实际版本号判断)。
  2. 按能力关键词检索条目:如 mockpre-requestsyncinsoelectron,条目中普遍带有 INS-xxxxx 内部工单号,可用于跨版本追踪同一特性。
  3. 用 Full Changelog 对比区间定位某版本全部 PR;条目中的作者名与 PR 号可作为上游检索线索。
  4. 到仓库中验证实现:本文已给出各特性对应的源码路径——脚本沙箱(entry.hidden-window.tsquickjs-script-engine.ts)、faker(faker-functions.ts)、同步(packages/insomnia-vcs)、CLI(packages/insomnia-inso)、mock(mock-server.ts)。
  5. 用测试夹具交叉验证行为packages/insomnia-smoke-test/fixtures 下的 mock-server.yamlrunner-collection.yamlpre-request-collection.yamlafter-response-collection.yamlenvironments.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 工单号,加上仓库中对应的源码与测试夹具路径,共同构成了一条从"变更日志 → 实现代码 → 行为验证"的完整证据链。

登录后查看全文
热门项目推荐
相关项目推荐