Overview
dsh-annotate
README / EN
Package documentation
Registry summary
dsh.pub verifies the pinned bundle contract, runtime facts, and distribution semantics. The complete README remains in the source repository.
Read the full README on GitHubLIMITATIONS
Known limitations
这些是这类方案共同的硬限制,不是 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。
