Skip to content

VesPi 1.0.59

Choose a tag to compare

@esseener esseener released this 21 Sep 11:41
· 14 commits to master since this release

VesPi 1.0.59

这一版修的是「浏览器的内嵌面板,会跑到别的项目里去」。

修复:别的项目开浏览器,会掀开你当前项目的面板

如果你开着一个项目在干活,另一个项目的模型正好要用浏览器,那个面板会直接掀在你正在看的界面上 —— 你会以为是自己这个项目开的。更麻烦的是:你把它关掉之后,切到真正在用的那个项目,那边也什么都没有了。

原因有三层,堆在一起:

  1. 请求里没有「谁发起的」。 模型操作面板走的是 VesPi 内部的通道,那条通道只带「做什么」和参数,不带项目身份 —— 而且加不上去:通道、密钥、以及告诉内核怎么连它的配置都是全局一份,所有会话共用。
  2. 面板的开关是全局的。 只有「开着/关着」一个状态,不分项目,所以在 A 关掉等于把 B 的也关了。
  3. 关掉面板会连页面一起销毁。 面板一收起,承载网页的组件就被卸载,模型那一侧的会话也随之断掉 —— 于是**「关闭面板」这个动作本身就在杀掉模型正在做的事情**,跟你切不切项目无关。

做法:

  • 判断来源:模型每次调用工具,内核都会发一条「开始执行 XX 工具」的事件,而这条事件是按项目分别投递的 —— 于是面板请求在到达之前就能知道是哪个项目在调。判不出来时退回原来的行为。
  • 按项目记忆:面板的「页面 + 开着没有」改成每个项目各记一份。只有你正在看的那个项目能直接掀开面板;别的项目在左侧项目列表里显示一个蓝色地球图标,你切过去时页面自动恢复。
  • 收起不再销毁:关掉面板只是把它收起来,网页还活着 —— 再打开还是原来那一页,模型也能继续操作。地址改由应用状态保存,而不是随组件一起消失。

一个绕不过去的限制

面板始终只有一个(一条通道、一个网页宿主、一个内嵌视图),所以两个项目不可能同时各有一个浏览器在跑。

实际影响:在两个都有网页的项目之间来回切换时,页面会重新加载。登录状态和 Cookie 存在独立的分区里,不会丢;丢的是页面内没提交的表单内容和滚动位置。

安装

下载 VesPi-Setup-1.0.59-win-x64.exe 双击安装即可覆盖升级,设置和会话都在。应用内的「有更新」提示也可以直接升级。

校验下载是否完整:对照同一 Release 里的 SHA256SUMS.txt。