概览
dsh-annotate
README / ZH
插件文档
目录摘要
dsh.pub 核对固定版本的组合包契约、运行时事实与分发语义;完整 README 请查看源仓库。
在 GitHub 阅读完整 READMELIMITATIONS
已知限制
这些是这类方案共同的硬限制,不是 bug: - **账号密码登录本身没有限制**,能正常用。列在这里的是登录的**几种特例**: - 走 OAuth 跳转、且跳到**外部站点**的流程(会离开预览) - 依赖 `SameSite=None; Secure` 的 cookie:预览是 `http://`,这类 cookie 在非 HTTPS 下会被浏览器丢弃,所以要求它的站点登录不上 - 严格 CSP 的站点(`frame-ancestors` 被剥了,但页面内联脚本仍可能被 CSP 挡) - Service Worker 驱动的离线应用 - Shadow DOM 内部、Canvas 绘制的内容 - 跨域子 iframe 里的元素 - **在线网站**:当前默认只接受 localhost / `127.0.0.1` / `::1` 与工作区页面。 把配置里的 `allowRemote` 打开即可预览任意 http(s) 站点 —— 这个开关已经可用, 但默认关着,因为要安全地开放还需要 SSRF 加固(拦截云元数据地址 `169.254.169.254` 和内网私有网段),而那部分计划在后续版本补上。 - **标注只跟着"下一条消息"走**。它在那一轮开始后即被清空,不会一直挂着; 想改主意就在发送前直接在侧边栏删掉那一条。 - **草稿为空时不发送**。标注是上下文不是消息,没有你写的字就没有可附着的对象 —— 这时会提示你先写要求,而不是替你发一条空消息。 - **一个会话最多同时开 4 个页面**。侧边栏的标注面板里有标签页条和地址栏,像浏览器一样: 点标签切换、点 × 关闭,多个页面同时活着(切回去不是重新加载,滚动位置和页面里 没保存的输入都还在)。上限是 4 个 —— 每个标签页是一整个文档、有自己的一套定时器, 真正的开销是 iframe 数量而不是心跳。开到第 5 个时最早的那个自动退场,并会提示你。 关掉的页面**不会丢标记**:那些标记仍在列表和批次里,只是标注为"来自已关闭的页面", 并保留关闭前最后观测到的匹配数 —— 选择器只有原来那个文档才解析得了, 所以这里不假装它还定位得到。 - **怎么开第二个页面**:标签条最右边的 **+**,点它清空并展开地址栏,输入地址回车即新增 一个标签。标签条从**第一个页面起**就在(否则"开第二个"这个动作本身没有入口)。 - **标签页是一组,地址栏是另外一条。** 地址栏住在**工具栏那一行**("选取"和刷新/菜单之间), 标签页条独占下面一行 —— 两条互不从属。之前地址栏是标签条正下方的独立一行,两者叠在 一起像同一个东西,而工具栏中间空着一大块没用上的宽度。 - **"选取"是整个面板共用的,不是每个页面一套。** 打开选取之后切标签,它还是开着的, 新页面也照样能点着标注 —— 标签页之间只是内容不同,对标注来说它们都是页面。 区分"选取中"和"未开启"的只有这一个状态,所以它属于面板。 - **同一个应用的多个路由算多个页面**。`localhost:5173/a` 和 `localhost:5173/b` 是两个 标签,各自有各自的标记 —— 预览身份用的是完整地址而不是 `origin`。这一点曾经是错的: 按 origin 复用会让第二个地址拿回第一个的预览,表现就是**永远只有一个标签页**, 而且根本开不出第二个。 - **同一个文件夹里的多个本地页面也算多个页面**。工作区页面按**文件**复用, 不是按它所在的目录 —— 否则放在一起的两个页面共用一个身份,第二个同样只能拿回第一个的 预览。这是上面那个 origin 缺陷的同类,发生在 `file://` 那一支上。 - **`localStorage` 活不过预览本身,登录态可以。** 这两件事的存储作用域不同, 之前把它们并成一句是错的: - **`localStorage` / `sessionStorage` 按 origin 划分**,预览每次新建都监听随机端口, 就是新的 origin —— 所以页内存储是空的,被回收(默认 5 分钟不动)后重开也一样。 这是隔离的代价,也是刻意的:被标注的页面读不到这个工作区的任何东西。 - **cookie 按 site 划分**,不含端口 —— 预览与宿主同 hostname,所以**登录 cookie 在 预览重建后依然有效**,长时间不动被回收、再打开通常仍是登录状态,不用重新登。 回程 `set-cookie` 仍会加目标前缀转发,不会串味。 - 换句话说:**登录能用,页内存储不保留**。要重置登录态,清掉该 hostname 下的 cookie。
