面向小黑盒 Web 端的用户脚本(UserScript):网页收藏列表不显示“插眼”(CY)条目,但主页收藏总数会把它们算进去。本脚本单独拉取插眼收藏,在收藏页把插眼条目补到收藏列表下方,按帖子去重。社区首页(/app/bbs/home)移除右栏热门社区等冗余模块,改为定宽卡片信息流,并支持在右侧预览帖子评论;帖子详情页(/app/bbs/link/*)默认进入全屏沉浸阅读,封面与标题上下分栏、正文连续滚动,原生评论收进侧栏,保留原生回复与点赞,并在评论区补充默认/时间/点赞/作者排序。右侧互动栏可直接点赞、收藏与发布 CY,评论区仍可按 is_cy 过滤插眼评论。顶部导航收敛为首页、社区、收藏、文章四个「SVG + 文本」入口;帖子页纵轴中心左右两侧提供 SVG 上一篇/下一篇箭头,切换走站内路由,不整页刷新。社区页(/app/topic/link/*)提供只在该社区内生效的帖子搜索;宽屏社区首页改为左频道、中信息流、右热度三栏工作台。
https://www.xiaoheihe.cn/*、https://xiaoheihe.cn/*link.id 去重。.link-comment 节点停靠到右栏,排序、回复、点赞、展开楼中楼都由站点处理;原生评论尚未挂载时,用同一评论树接口渲染只读回退抽屉,保证按钮始终有响应。is_cy 标记隐藏插眼评论;默认不隐藏,用户点“屏蔽 CY”后才生效。阅读栏的 CY 按钮不参与过滤,只负责发布新的插眼。/app/topic/link/<topic_id>)的搜索只在该社区内请求,结果与全站搜索分开,不离开当前页面。插眼收藏走评论列表接口,路径 /bbs/app/profile/bbs/comment/list,关键参数:
| 参数 | 值 | 说明 |
|---|---|---|
only_cy |
1 |
只要插眼记录 |
filter_type |
0 |
不过滤类型 |
enable_new_style_collect |
1 |
新版收藏结构 |
userid / heybox_id |
Cookie heybox_id(回退 user_heybox_id) |
当前登录用户 |
limit / offset |
20 / 递增 | 分页 |
no_more |
false |
首页固定值 |
其余基础参数(os_type=web、app=heybox、client_type=web、version=999.0.4、web_version=2.5、x_client_type=web、x_app=heybox_website、x_os_type=Windows、device_info=Chrome)与站点网页端保持一致。
响应判定:status === "ok" 时读取 result 数组;no_more === true 或本页为空即停止翻页。单条记录取以下字段:
link.id:帖子 ID,同时用于去重与跳转 /app/bbs/link/<id>。link.title:标题,空值回退“无标题帖子”。link.thumbs[0]:缩略图,可缺省。text:插眼时附带的评论内容。create_at:时间,按秒处理,兼容毫秒值。comment_type:1 记为“回复”,其余记为“评论”。请求使用页面内 fetch,credentials: include 携带登录态。接口对 https://www.xiaoheihe.cn 返回 Access-Control-Allow-Origin 与 Access-Control-Allow-Credentials(实测),因此无需 GM_xmlhttpRequest,脚本保持 @grant none。
信息流评论预览走帖子评论树接口 /bbs/app/link/tree,除同一套基础参数外传 heybox_id(Cookie)、link_id、is_first(首页为 1)、page(从 1 起)、index=1、limit=20、owner_only=0。站点网页端还会带一个空的 h_src 参数,脚本在 link_id 前补齐,缺省时更容易触发风控。响应 status === "ok" 时读 result.comments(按楼层分组的数组,每组 comment[0] 为楼,后续为楼中楼)、result.link.title 与 result.link.comment_num。单条评论取 user.username、user.avatar(兼容拼写 avartar)、text(去标签后截断 400 字)、create_at、support_num(兼容 support_count)、reply_count(兼容 sub_comment_num)、is_cy(1、"1" 或 true 视为插眼)。
沉浸阅读的点赞、收藏与 CY 发布走站点写接口,全部由用户点击触发:POST /bbs/app/profile/award/link 传 link_id 与 award_type(点赞 1、取消 0);POST /bbs/app/link/favour 传 favour_type(收藏 1、取消 2)、link_id、userid 与 folder_id;POST /bbs/app/comment/create 传 is_cy: 1、link_id、reply_id: "-1"、root_id: "-1" 与 text。收藏夹列表走 GET /bbs/app/profile/fav/folders。写请求与站点自身 axios 配置一致,使用 application/x-www-form-urlencoded;charset=UTF-8 请求体,query 携带同一套签名参数、评论创建专用的 _rnd 与 target=heybox_app;status === "login" 时统一提示「请先登录小黑盒」。
社区内搜索走通用搜索接口 /bbs/app/api/general/search/v1,除同一套基础参数外传 q、search_type=link、topic_id(当前社区 ID)、offset、limit=30、is_pull_down=0;时间筛选非空时追加 time_range。响应 status === "ok" 时读 result.items 与 result.time_range_list;result.items 里的 space 条目只用于占位,offset 按 link 条数推进,空页或没有新增帖子时停止翻页。空结果提示优先取顶层 search_not_result_tips,其次取 result.search_not_result_tips。脚本先带 hkey、_time、nonce 请求,失败后回退不带签名的请求,两条都失败才显示错误。
通用接口要求 hkey、_time、nonce 三个签名参数;评论创建接口 /bbs/app/comment/create 另要求 _rnd。脚本内独立实现:
time = floor(Date.now() / 1000)。nonce = md5(time + Math.random()).toUpperCase(),32 位十六进制。hkey 的签名输入为 time + 1、归一化路径与 nonce:路径归一化为 /a/b/c/,三部分分别按 35 字符字母表 AB45STUVWZEFGJ6CH01D237IXYPQRKLMN89 映射后交织,截取前 20 个字符作为种子。% 100 得到 2 位校验,组合成 hkey。两个容易写错的细节:
xtime 左移结果不能对 255 取模,服务端算法保留高位;截断会算出不同的校验位。MD5 覆盖 UTF-8 字节,md5Hex 与 Node crypto 结果一致。hkey 的签名输入包含时间、归一化路径与 nonce,不包含 link_id、page 等其他查询参数;评论创建的 _rnd 则使用本次请求查询参数中的 nonce 与 _time。
评论创建的 _rnd 复用同一次请求的 nonce 与 _time。站点当前使用 15 作为版本前缀,并以 Z7mFG4tQp9Ws2LxB8H 作为 HMAC 密钥;签名为小写十六进制:
message = secret + nonce + _time + ":" + nonce
_rnd = "15:" + lowercaseHex(HMAC-SHA256(secret, message))
_rnd 只加在评论创建请求上,点赞与收藏沿用原有查询参数。
.nav-links,隐藏站点原有的七个文字按钮,改为首页、社区、收藏、文章四个入口,每项为内联 SVG 图标加文本。图标默认在悬停、键盘聚焦与激活时播放轻量动效(房子轻晃、气泡上浮、书签落位、纸张翻角),齿轮设置菜单里的“动态导航图标”可切回静态;系统开启“减少动态效果”时同样保持静态。location.pathname 标记当前入口,社区包含 /app/bbs/home 与帖子详情;收藏页同时承载插眼收藏区块。视口 ≤940px 时只显示图标,保留 aria-label 与悬停提示。html 根元素、#app > main > section、.hb-bbs-home__feed-splitline、.hb-bbs-home__splitline、main.list、.hb-cpt__moment-list-content),这些颜色不随 CSS 变量走,需单独覆盖。登录表单保持浅色,避免第三方登录控件失去可读性。#page-user-profile,路径 /app/user/profile/*)的投稿卡片去掉站点用伪元素画的 4px 近白分隔带,标题改用主题文字色,时间、评论数与标签页改用次级色;右栏只放小黑盒 APP 下载二维码、加速器、语音与备案信息,整栏隐藏并让主列表撑满内容区。鼠标停在作者行弹出的 .name-box .detail-info 作者信息浮层改用主题底色、描边与阴影,箭头同步取主题底色,里面的等级、IP 与简介文字跟随主题,浮层尺寸与层级不变。contain 完整露出,背后是同一张图的模糊底色,不再裁切两侧;标题、标签与作者行移到封面下方的独立区块,使用主题底色,不再以玻璃卡压住图片。正文改为连续滚动,段落、图片与富文本块自然衔接,长图和长文按原始高度展开,大图仍可点开遮罩。右侧互动栏离正文 36px,移动端收进舞台右缘并隐藏栏内头像;封面多图可横向切换或点分页条,左右滑动只切封面,滑到末图再左滑进入正文。顶部左侧为返回、社区首页、作者与关注,右侧为分享与关闭;结尾操作区同样提供“社区首页”按钮。右侧竖排点赞、收藏、评论、CY 发布、分享、行距设置,底部显示阅读百分比与进度。行距设置按钮打开右侧深色小面板,可输入 1.4–2.2 倍并一键恢复默认 1.7 倍,点外部或按 Esc 收起,与收藏夹菜单互斥。阅读器开启时站点原有的左右翻页箭头隐藏。↑ / ↓、PageUp / PageDown、j / k 与空格按约 0.82 屏滚动,Home / End 跳首尾,← / → 只在封面切图,C 开关评论,H 返回社区首页,R 或 Esc 关闭当前文章的沉浸阅读。点在输入框、文本域或可编辑区域内时不拦截滚动键与 H,但 Esc 仍先关评论。阅读器开启时 [ 与 ] 不触发外部翻页。.link-comment,桌面从右侧滑出 440px,移动端占满宽度;打开时把站点 #page-bbs-link 层抬到舞台之上,同时清空主题背景与指针拦截,避免整页底色盖住阅读舞台;背景加半透明遮罩,焦点移到关闭按钮,阅读区 inert,关闭后焦点回到评论按钮,Tab 在抽屉内循环。排序、屏蔽 CY、回复、点赞与展开楼中楼全部沿用原生逻辑。原生节点未挂载时等待约 1.4 秒,仍无节点则打开只读回退抽屉,显示头像、昵称、时间、正文、图片、表情与引用回复,并支持分页加载。回复编辑器固定在抽屉底部,不遮住正文。result.link;未收藏时弹出收藏夹列表,已收藏时再次点击直接取消;CY 按钮打开 520px 输入卡,提交后以 is_cy=1 发布并更新评论数;关注按钮转发站点原生关注按钮,请求结束后重新同步状态,已关注时再点一次走站点的取消关注确认对话框;确认框改用主题底色并抬到阅读舞台之上,Esc 先关确认框再关阅读器;未登录统一提示「请先登录小黑盒」。https://www.xiaoheihe.cn/app/bbs/link/<id> 并显示“链接已复制”,不再代理隐藏的原生分享按钮。R 与 Esc 只关闭当前文章的阅读器,并提示已退出;齿轮菜单的“沉浸阅读”开关才修改持久偏好。两种关闭都立即恢复站点原生双栏与外部翻页器,进入其他帖子仍按全局偏好自动开启。阅读位置按帖子写入 sessionStorage,返回同一帖时回到原页。calc(100vh - 112px),楼层内边距 14px 16px、正文 14px/1.7。--heybox-up-bg、surface、subtle、raised、border、text、text-2、muted、on-accent 与 --heybox-up-page-w、feed-w、feed-pct、reading-line-height、radius-card、gap、card-pad、shadow-1、shadow-2。纸页主题把卡片圆角收到 4px、去掉一级阴影并改用 Georgia 衬线标题;雾青用 18px 圆角与更柔的投影;纯黑用 8px 圆角与深投影。min(960px, 100%),卡片内边距收到 16px;≤900px 时沉浸阅读的互动栏收进舞台右缘,≤760px 时舞台占满宽度、正文 17px,≤520px 隐藏作者名与“继续阅读”,结尾卡保留作者、统计、标签、社区首页与翻页。顶栏的社区首页按钮在 ≤520px 收为 38×38 圆形图标。视口高 ≤820px 时结尾页隐藏“继续阅读”,≤520px 时再隐藏统计并收小头像,结尾卡保留 min-height: 100dvh,内容超出时按自然高度展开。heybox_id 时提示未登录,不发起请求。.cpt-right-side.right),热门社区、二维码、App 链接与页脚一并移除;信息流收成 960px 居中阅读栏,话题条也改成同风格卡片。https://xiaoheihe.cn/app/bbs/link/<id>:默认显示沉浸阅读,原生正文与回复编辑器留在 DOM 中不搬动;关闭阅读模式后回到左栏正文、右栏 424px 原生评论区的双栏布局,右栏原有的相关推荐与二维码模块隐藏。.topic-link__main 的筛选行上方插入搜索栏,左侧固定显示当前社区名,输入关键词后只请求该社区的帖子。筛选行位于 .topic-link__panel 时,搜索栏与筛选行插在同一父节点并保持前后相邻。结果面板替换原生信息流,顶部显示社区与关键词,并提供“全站搜索”和“返回社区”;时间筛选来自接口 time_range_list,切换后重置分页;“加载更多”按接口返回的 link 条数递增 offset。Esc 或“返回社区”恢复原生列表,切换到别的社区或离开页面时自动收起。窄屏隐藏社区胶囊并缩小缩略图。.content 改为 1fr | 中栏 | 1fr 三栏栅格:中栏宽度取自 --heybox-up-feed-pct(默认 56vw,上限 1180px,并至少给两侧留 560px),左右两列等分剩余宽度,中栏因此始终落在视口正中;左栏 208px 贴住中栏左缘,≥1500px 时右栏 288px 贴住中栏右缘。1200–1499px 只保留左栏与信息流,<1200px 回到站点单列。左栏是浏览入口与站点话题频道,中栏是原信息流,右栏是当前信息流按“评论数 × 2 + 点赞数”生成的热门排行与快捷入口。桌面隐藏站点顶部 sticky 搜索条,把它为搜索条铺的 146px 固定顶部遮罩压缩到导航 64px 加页面顶部留白 16px 的 80px 区域,搜索入口收进左栏“浏览”,右栏“快捷入口”不再重复全站搜索;左右栏 sticky 吸顶改为 top: 80px、最大高度 calc(100vh - 100px),首屏不再留下搜索条高度造成的空白,滚动时正文也不会从导航下方的留白处露出。左栏已有频道列表,站点原生的横向频道条(.bbs-home__topic-list-wrapper)在 ≥1200px 时隐藏。.bbs-home__topic-item,点击时转发给站点原按钮;热门排行读取已渲染卡片,点击滚动到对应帖子并临时描边,不请求新接口、不伪造榜单。评论预览展开时右栏自动让位给预览侧栏。.scroll-list__button-group 的右偏移绑在内容列上,窄视口会把它推到屏幕外,宽屏又会压到自定义右栏或评论预览下方。首页、频道页与帖子页因此隐藏原生按钮;其余页面把按钮固定到距右边 20px、距底部 24px,保证 800–1159px 下完整可见。router.push),地址与内容由 SPA 更新,不整页刷新;切换后滚动回顶部。键盘 [ 与 ] 分别切上一篇、下一篇,输入框、文本域与可编辑区域内不拦截;沉浸阅读开启时这两个键不响应。sessionStorage;帖子页按当前 ID 定位,并跳过浏览记录里已访问的帖子。信息流没有未访问的后续条目时,“下一篇”改取页面“相关推荐”中第一个未访问项;仍没有候选时按钮禁用并显示“没有下一篇”。结尾“继续阅读”同样过滤当前文章与已访问帖子,最多显示 4 条。“上一篇”仍由本次会话的浏览记录提供。.link-comment 排成左右两列;开启时只把 .link-comment 固定到抽屉,两种模式都不搬动节点,站点祖先选择器与原生样式继续生效。style.order,不改 DOM 顺序;站点重渲染后自动重建工具栏并恢复上次模式。[data-comment-id] 匹配接口返回的 is_cy 评论,给对应楼层加 data-heybox-up-cy="1" 并由 body.heybox-up-hide-cy 统一隐藏;按钮显示已屏蔽条数,关闭后立即恢复。--heybox-up-shadow-2。展开时页面使用全宽,桌面栅格只在右侧为面板预留与其实宽相同的轨道,不再额外叠加右内边距;中栏按可用空间收缩并保持居中,面板与信息流之间只保留 24px 级间距。首条帖子只自动打开一次:手动收起后不会再次弹出,点右缘的“评论预览”标签才会重新展开。.bbs-new-style-bottom__comment、.content-list__comment)即可切换到该帖,页面不跳转。display: none、页面右缘不留标签,信息流恢复正常宽度,评论数字恢复站点原生行为(进入帖子);偏好写入 localStorage,刷新后保持。重新开启会立刻带出首条帖子的评论。/app/bbs/link/* 时浮层隐藏,视口窄于 1200px 时同样不显示。heybox-up.cy.v1:<userid>,值为 { savedAt, items }。localStorage 不可用时仅本次会话生效。heybox-up.theme.v1,取值为 system、dark、oled、light、paper、mist,仅存本机;旧值 dark、light 继续有效。heybox-up.hideCy.v1,取值 1 或 0,默认 0(不隐藏);仅存本机,帖子页与评论预览共用。heybox-up.commentPreview.v1,取值 1 或 0,默认 1(开启);仅存本机,由齿轮设置菜单里的开关写入。heybox-up.navMotion.v1,取值 1 或 0,默认 1(动态);仅存本机,由齿轮设置菜单里的“动态导航图标”开关写入。heybox-up.feedWidth.v1,取值为 40–76 的整数百分比,默认 56;齿轮设置菜单里的分段按钮(40 / 48 / 56 / 64 / 72)与自定义输入框共用这一键,只改 CSS 变量 --heybox-up-feed-pct,不重排 DOM。heybox-up.readerLineHeight.v1,取值为 1.4–2.2 的倍数(保留两位小数),默认 1.7;齿轮设置菜单与阅读页右侧行距面板共用,写入根级 CSS 变量 --heybox-up-reading-line-height,只作用于正文文本,标题、代码块、引用与站点卡片保持各自行高。heybox-up.feedOrder.v1 与浏览记录键 heybox-up.postTrail.v1,只写 sessionStorage,关闭标签页即清除;插眼区块只响应收藏页 URL 的 #heybox-up-cy 锚点。localStorage:关键词、时间筛选与已加载结果只保存在当前页面的内存里,刷新或离开页面即清空。验证以语法检查和真实登录态页面上的无头 Edge(CDP)DOM 断言为主,不依赖仓库内的辅助脚本:
node --check scripts/heybox-up.js
签名用真实被服务端接受的样本 (time=1792587363, nonce=2B3C207C9CF9AF2779DEE63C509DA4E8, path=/bbs/app/profile/bbs/comment/list) 复核,得到 hkey=VX2Y254;服务端接受该签名,时间错误时返回 系统时间不正确。
社区内搜索用无头 Edge(CDP)验证:1440×900、900×800 与 390×844(内容宽 390px)下,面板均挂在 .topic-link__main 内筛选行的实际父节点 .topic-link__panel,且紧挨筛选行之前;390px 下社区胶囊实算为 display: none。提交“显卡”后请求带 topic_id=18745、q、search_type=link、limit=30 与 hkey,渲染 10 条结果,原生筛选行与信息流同时隐藏;焦点在站点导航时按 Esc 不关闭面板,焦点回到输入框后按 Esc 关闭并把焦点交还输入框。接口每页再夹 10 条 space 占位时,“加载更多”仍以 offset=10、offset=20 正常追加,结果从 10 条增至 30 条。夜航下搜索栏底色 rgb(23, 29, 36)、结果标题 rgb(220, 229, 239);浅色下分别为 rgb(255, 255, 255) 与 rgb(20, 25, 30)。
桌面工作台用 jsdom 用例验证:社区页启用 heybox-up-desktop,左栏插到 .content 最前、右栏插到最后;两个话题按钮生成两个频道项;热门排行按“评论数 × 2 + 点赞数”排出三帖顺序,1.2万 正确换算为 12000;点排行项滚动到对应卡片,点频道项后高亮且转发给站点原按钮。
实时验证:用同一实现生成当前时间的 URL 请求接口,返回 {"status":"failed","msg":"该用户已注销"}。这是用户级错误,说明签名与时间被接受;签名错误时返回 系统时间不正确。
布局用无头 Edge(CDP,1600×1000、1280×900、800×900)做 DOM 级验证:评论预览展开时,1280 下内容栅格为 288 / 592.8 / 288px,信息流 x=336、宽 592.8,搜索条已隐藏,左栏 x=104、宽 208,评论浮层 x=956.8、宽 288;1600 下栅格为 320 / 848.8 / 320px,信息流 x=368、宽 848.8,搜索条已隐藏,评论浮层 x=1244.8、宽 320。两种视口均无横向溢出,浮层与信息流之间仅余 28px 间距,不再出现“侧栏宽度 + 48px”额外内边距造成的空白区。帖子页正文卡 832×868,评论卡 424,排序栏 407×48,首条评论内边距 14px 16px,正文标题 25px/35.5px。800 下正文与评论纵向堆叠、宽 744,无横向溢出。夜航全页扫描未发现白色大底块;帖子页与社区首页的伪元素底色(卡片底部 4px 色带、楼层分隔线、相关推荐分隔线)与浅色边框扫描结果均为 0。
沉浸阅读用 1440×900、1024×768、800×700、390×844 与 844×390 验证:1440 下整组宽 812(x=314),舞台 732(x=354)、正文 612(x=414,右缘 1026)、互动栏 x=1062,左右留白 314 / 330;1024 下整组 x=106、舞台 x=146、正文右缘 818、互动栏 x=854、间隔 36;800 下舞台占满 800、正文宽 612 居中、互动栏 x=738、间隔 32;390 下正文宽 302、互动栏 x=338、栏内头像隐藏、按钮 42px;320 下正文宽 232;各视口 .hbu-reader-scroll 的 scrollWidth 均等于视口宽。封面 object-fit: contain 完整显示,背后铺同一张图的模糊底色;标题移到封面下方独立区块,1440 与 390 下封面与标题的矩形均无重叠,封面分页条 36×36,左右滑动只切封面,末图再左滑进入正文。正文段落、图片与富文本按自然高度连续衔接,长文与长图不再被一屏截断,也不在页内二次滚动;插入 30 段长文与长图后,文本页高度为 399、700、198,图片页 1514,容器 scrollHeight 8811。进度显示阅读百分比,方向键与空格每次滚动 0.82 屏(390 高下实测 320px),关闭重开按比例恢复(0.55 恢复到 621/1131)。结尾卡按内容自然增高,视口高 ≤820px 时收起“继续阅读”,≤520px 再隐藏统计并收小头像。844×390 横屏下评论抽屉 440×390,回复编辑器完整落在抽屉内;1440 下评论抽屉 440×900,关闭时 visibility: hidden,打开后 x=1000、焦点落在关闭按钮,阅读区 inert,背景 opacity: 1;打开时 #page-bbs-link 实算 z-index: 4010、background-color: rgba(0, 0, 0, 0),抽屉中心命中的是评论楼层、舞台中心命中的是遮罩,回复编辑器固定在 y=823、高 61px 且列表预留 74px 底部内边距;点遮罩后焦点回到评论按钮。互动栏点赞与收藏在 mock 写接口下分别发出 award_type=1 与 favour_type=1、folder_id 正确,再次点击发出取消参数并更新计数;CY 按钮打开 520px 输入卡,提交体含 is_cy:1、reply_id:"-1"、root_id:"-1",成功后评论数 +1;未登录点赞、收藏与 CY 均提示「请先登录小黑盒」。夜航正文 18px/33.48px、rgb(230, 237, 245),纯黑舞台 rgb(9, 9, 9)、正文 rgb(230, 237, 245),纸页舞台 rgb(250, 245, 234)、正文 rgb(51, 43, 33);六套主题中除浅色关注按钮外无近白大底块。全部阅读控件不小于 36px;帖子数据未渲染时出现“正在加载文章…”占位(实测于响应较慢的帖子页)。
v0.4.30 在 1440×900 与 390×844 复核写请求与回退抽屉:mock 点赞捕获 link_id=194343256&award_type=1,mock 收藏捕获 favour_type=1&link_id=194343256&userid=12345&folder_id=123,mock CY 捕获 is_cy=1&link_id=194343256&reply_id=-1&root_id=-1&text=hello+CY+test,三者请求头均为 application/x-www-form-urlencoded;charset=UTF-8,成功后分别提示“已点赞”“已收藏”“CY 已发布”,按钮状态与评论数同步更新;无登录态的真实 CY 请求返回“请先登录小黑盒”,不再出现 link_id 缺失。把 .link-comment 临时改名模拟原生节点缺席后,评论按钮在约 1.4 秒后打开回退抽屉,1440 下 440px 宽、读取 24 条评论、scrollWidth=439 与 clientWidth=439,390 下抽屉占满 390px、无横向溢出;回退抽屉内头像、昵称、时间、正文、表情与引用回复均可见,关闭后 inert 恢复为 false,再次点击可重新打开。分享按钮在 1440 与 390 下均复制 https://www.xiaoheihe.cn/app/bbs/link/194343256 并显示“链接已复制”,不再触发隐藏的原生分享按钮。
社区频道页用 1200×900 夜航主题验证:.topic-link__main::after 的 8px sticky 底条实算为 rgb(23, 29, 36),.topic-link__splitline::after 的 4px 分隔线实算为 rgb(30, 38, 48),与 --heybox-up-surface / --heybox-up-subtle 一致;截图不再出现白色横带。
全站搜索页用 1440×900 夜航主题验证:#page-bbs-list、.list 与 .hb-search-result 实宽同为 1032px,与 .search-wrapper 对齐;右侧 .cpt-right-side.right 为 display: none;页面上下固定条与列表 sticky 条实算为 rgb(15, 20, 25),4px 结果分隔条为透明,横向列表右侧遮罩不再带白色渐变;近白底色扫描仅剩 4×4 加载点。
原生回到顶部按钮用 800×900、1000×900、1100×900 与 1440×900 验证:社区首页、频道页与帖子页的按钮组始终 display: none,1000×900 下不再只露出 1.2px;全站搜索页的按钮组保持 56×56,右偏移统一为 20px、底偏移 24px,1000×900 下完整可见且右侧留白 20px。
搜索建议面板用 1440×900 夜航主题验证:历史搜索胶囊底色 rgb(30, 38, 48)、文字 rgb(220, 229, 239),悬停底色为 rgb(23, 29, 36);搜索发现标题与热榜标签为 rgb(180, 192, 206),热榜条目为 rgb(220, 229, 239),条目悬停底色为 rgb(30, 38, 48)。
排序用合成用例验证:改写点赞数 1/9/4 与相对时间 3天前/5分钟前/1小时前 后,点赞与时间两种模式都按期望重排(order 为 2/0/1,纵坐标随之变化),切回默认清空 order;删除工具栏后 MutationObserver 在下一帧重建,选中模式与顺序保持。
评论预览用同一组视口验证:注入脚本后首页出现 #heybox-up-comment-rail,默认 data-state="open" 且 body 带 heybox-up-rail-open;点收起按钮回到 collapsed,点标签重新展开,Esc 同样收起;打开 /app/bbs/link/<id> 后浮层 data-state="hidden"、display: none。夜航主题下面板底色为 rgb(23, 29, 36)、文字 rgb(220, 229, 239),无浅色残留。主题令牌实测:夜航 #0f1419 / #171d24 / #dce5ef / #8593a3 / #8fb0cf;纸页 #f4efe4 / #fffdf7、圆角 4、无阴影、标题 Georgia;浅色 #fff / #14191e;纯黑 #000 / #08090b、圆角 8。接口受限时面板显示“评论需要验证,请稍后重试,或打开帖子查看。”并附“打开帖子”链接,点提示可重试;换用新会话后首条帖子恢复 16 条评论。
文章编辑器验证(1440×900,夜航 / 纸页 / 雾青):html 背景分别为 #0f1419 / #f4efe4 / #eef3f5;#page-creator-editor 与右侧预览内除开关滑块外无 rgb(255, 255, 255) 大底块,正文与预览正文的对比度分别为 12 / 11.7 / 12;发布与关注按钮不再保留站点写死的深色渐变。
文章编辑器细节用 1440×900 夜航主题验证:.creator-editor__form-wrapper::before 的 4px 分隔带由 rgb(250, 251, 252) 改为 rgb(15, 20, 25);.cpt-editor__publish::after、.hb-cpt__editor-title::after 与 .editor-menu__item-splitline 的 1px 浅线由 rgb(243, 244, 245) 改为 rgb(45, 56, 69);工具栏图标由 rgb(140, 145, 150) / 0.4 透明度改为 rgb(180, 192, 206) / 0.8 透明度;更多组件菜单文字由 rgb(100, 105, 110) 改为 rgb(180, 192, 206);扫描编辑器根节点未再发现近白背景或近白描边。
文章编辑器用 1440×900 复核纸页与雾青:.editor-article__main-content、.hb-editor 与 .ProseMirror 的底色分别为 rgb(255, 253, 247) 与 rgb(251, 253, 254),和标题栏、工具栏共用编辑器卡片的 surface,不再出现更深的 --heybox-up-subtle 色块。图文与视频编辑器在雾青、夜航下,.editor-image-text__main-content、.editor-video__main-content 与上传框均使用主题 surface,描边分别为 rgb(211, 224, 229) 与 rgb(45, 56, 69);主画布不再残留 rgb(250, 251, 252) 近白底,深色主题下浅色文字保持可读。
性能回归用无头 Edge、1440×900 与 4 倍 CPU 降速验证:社区首页注入脚本并稳定后,连续触发 150 帧与前版相同的合成 DOM 变更,优化前两轮 ScriptDuration 为 1.08 / 1.12 秒,优化后为 0.34 / 0.29 秒,降幅约 71%;同组 TaskDuration 由 1.83 / 1.89 秒降至 0.54 / 0.78 秒,RecalcStyleDuration 由约 0.10 秒降至 0.03 / 0.06 秒。正常滚动 180 帧时脚本耗时与前版持平,页面交互不受节流影响;编辑器输入区与脚本自身面板产生的 DOM 变化不触发全站同步。
v0.4.33 用同一套无头 Edge / 1440×900 / 4 倍 CPU 降速用例连续复测两轮:150 帧合成变更下,页面同步任务从 PR #69 基线的 102 / 103 次、67.6 / 43.4ms 降至 10 / 10 次、10.6 / 16.4ms,任务次数均值下降约 90%,总任务耗时均值下降约 76%。同一轮整页 ScriptDuration 为基线 0.455 / 0.339 秒、当前 0.285 / 0.331 秒,受站点渲染与 GC 噪声影响,只作为辅助参考;任务级计数才是本次调度的稳定指标。文章直读用例中,基线产生 85 次页面同步任务、约 38.0ms,当前为 0 次;阅读器 101 帧滚动只写入 5 次阅读比例(每 400ms 合并)。390×844 复测 #app 为 375.2px、页面横向溢出为 0,阅读器容器宽 390px、scrollWidth 与 clientWidth 均为 390px。
首页默认预览验证(1600×1000,夜航):注入后首页浮层直接 data-state="open",body 带 heybox-up-hide-cy heybox-up-rail-open,无需点击即显示首条帖子的标题与 6 条楼层;点第二张卡片的评论数字后浮层标题切换为该帖,地址仍是 /app/bbs/home。齿轮设置菜单里的开关点击后 heybox-up.commentPreview.v1=0、浮层 data-state="hidden"、display: none、body 类移除,此时点评论数字走站点原生跳转;再点一次开关恢复 open 并重新带出首条帖子的评论,刷新后开关状态与偏好一致。收起按钮回到 collapsed 并移除 body 类,点右缘“评论预览”标签可重新展开;视口窄于 1200px 时浮层不显示。
CY 屏蔽用合成 DOM 与假接口在无头 Edge 中验证。帖子页:三条评论中 1001 与 1003 的 is_cy 分别为 1 和 "1",注入脚本后两节点均带 data-heybox-up-cy="1";点“屏蔽 CY”后 body.heybox-up-hide-cy 生效,两条 CY 楼层 display: none,普通楼层仍为 block,按钮显示“屏蔽 CY (2)”,偏好写入 heybox-up.hideCy.v1=1;再点一次恢复显示并写回 0。评论预览:两条楼层组中一条根评论为 CY、另一组含一条 CY 楼中楼,开启后列表只剩普通楼层,楼中楼引用中的 CY 也被过滤,说明行显示“已屏蔽 1 条 CY”。
v0.4.34 用本地无头 Edge(CDP)与合成文章 DOM 复核,控制台错误为 0:阅读器开启后站点外部翻页器实算 display: none,顶部与结尾各有一个“社区首页”按钮;从 order=1001,1002、浏览记录 1001,1002、相关推荐 1001,1003 进入 1002 时,下一篇指向未访问的 1003,结尾推荐只剩 1003;order=1001,1002,1003 且浏览记录 1001,1002 时下一篇为 1003,候选耗尽时按钮禁用并显示“没有下一篇”,结尾不出现“继续阅读”。点顶部关闭后阅读器移除、外部翻页器恢复 display: block、localStorage["heybox-up.reader.v1"] 仍为 "1",提示“已退出当前文章的沉浸阅读”在 1.2 秒内未自动重开;READER_EVENT 可重新开启,Esc 同样只关闭当前文章。阅读器开启时 [ 与 ] 不改变地址,关闭后分别进入 1001 与 1003 并重新开启阅读器。H 与两处首页按钮都跳到 /app/bbs/home,焦点在输入框时 H 不触发。320 / 390 / 520 / 820 / 1440px 下页面与顶栏横向溢出均为 0,标题栏在 1440 下宽 812px;320–520px 首页按钮为 38×38 圆形,820px 与 1440px 为 96px 宽的图标加文字;320px 结尾卡与操作区位于 24–256px,首页按钮宽 103px。以上为本地 DOM 级验证,真实登录态页面仍受图片验证码影响。
scripts/heybox-up.js 分发,但内部按签名、存储、请求、样式、页面调度、主题、评论预览、沉浸阅读与路由工具分区;不引入框架,也不在运行时加载外部模块。MutationObserver,每个任务声明适用路由与 DOM 区域。路由切换时强制执行一轮清理,平时只有相关区域变化才唤醒对应任务,避免文章页的观察器为首页或收藏页重复工作。AbortController。切换帖子、社区、预览或离开路由时取消旧请求,并把过期响应丢弃。link + page 缓存,最多 24 页、2 分钟失效;CY 发布后只清除对应帖子的缓存。收藏列表仍按用户隔离并使用 10 分钟缓存。localStorage / sessionStorage 经同一访问器提供内存降级与 JSON 读写;样式优先写入构造样式表,不支持时回退到 <style>;状态样式表与内容样式表分别按 ID 持有。pagehide 与页面隐藏时强制落盘。正文分页先写入 DocumentFragment,再一次性挂载。下表按根因合并重复项,逐项记录当前版本仍存在的限制、最优可行方案与落地状态。固有约束 表示不能在不伪造数据或绕过站点权限的前提下消除;部分缓解 表示已有降级路径,但仍依赖站点结构。
| 限制 | 最优可行方案 | 状态 |
|---|---|---|
| 站点 DOM、类名与路由会无通知改版 | 集中选择器注册表、主备选择器、可见失败态与真实页面回归 | 部分缓解 |
| 接口签名、风控、验证码与登录要求由站点控制 | 共用签名请求层、超时、取消、签名回退与明确的登录/验证提示 | 部分缓解 |
| 收藏总数由服务端计算,插眼条目不计入网页收藏列表 | 只解释数量差异,不伪造或改写服务端计数 | 固有约束 |
| 插眼列表单用户最多 200 条,搜索只覆盖已加载缓存 | 增加游标分页与“加载更多”,有索引时再走服务端搜索 | 未实施 |
| 评论预览只读,不能直接回复、点赞或展开楼中楼 | 保留“打开帖子”与原生评论抽屉,只读边界保持清晰 | 设计取舍 |
| 评论树按楼层分页,楼中楼只取前两条,单帖最多读取 200 条 | 用游标继续分页;楼中楼展开交给原生评论区 | 部分缓解 |
| 悬停预览过去每次切换都会发新请求 | 600ms 悬停延迟、切换取消、24 页有界缓存与 pointerout 取消 |
已实施 |
| 自动预览依赖信息流首个帖子链接 | 保持评论数字手动入口;容器缺失时明确回退到原生跳转 | 部分缓解 |
| 沉浸阅读只支持图文帖与文本帖,视频帖、投票帖走原布局 | 按帖子类型增加通用块解析器,无法解析时明确回退 | 部分缓解 |
| 克隆正文里的 iframe、视频、画布与纯图标组件不保证可交互 | 语义块渲染、事件代理、受支持组件转发;其余标明“打开原帖” | 部分缓解 |
评论抽屉只接管首个 .link-comment,页面若拆分多个浮层会遗漏 |
枚举并合并多个评论根节点,保持同一焦点与关闭协议 | 未实施 |
| 深色、纸页、雾青仍依赖站点类名;新增卡片和伪元素可能漏白 | 主题令牌桥接、空闲兜底扫描、伪元素清单与新增卡片登记 | 部分缓解 |
站点全局 * 重置会覆盖 Shadow DOM 的普通声明 |
Shadow 组件关键样式继续使用 !important,新增组件沿用约束 |
固有约束 |
| 宽屏三栏、右栏隐藏与全站搜索撑满依赖站点容器结构 | 选择器注册表、逐模块隐藏与结构缺失时的原生回退 | 部分缓解 |
| 桌面右栏整栏隐藏,热门排行只统计已渲染卡片 | 改成模块级开关;排名只对已加载数据标注范围,后续接服务端排序 | 未实施 |
| 顶部导航按地址判断激活项,纯前端状态切换时可能滞后 | 监听站点路由状态并以 MutationObserver 校正,保留路径兜底 |
部分缓解 |
| 连读顺序只来自已渲染信息流,Vue router 不可用时退化为整页跳转 | 预取相邻列表页;router 缺失时继续使用站内原生链接 | 部分缓解 |
社区搜索依赖 .topic-link__main 与筛选行结构 |
优先插到筛选行父节点,缺失时回退 .topic-link__main;名称多级回退 |
已实施 |
社区搜索不支持 filter_tag、不持久化关键词,重复页不会自动继续翻页 |
对齐站点筛选参数,使用 URL 会话状态,并设置有限次自动翻页 | 未实施 |
| 阅读位置只存当前标签页;作者排序按用户名,同名用户会并列 | 阅读位置改存带版本与过期的本机记录;作者排序改用用户 ID | 未实施 |
| 单文件约 8500 行,样式、请求与存储曾重复实现 | 保持单文件分发,先抽内部纯函数与生命周期;后续再引入确定性构建 | 部分缓解 |
| 页面级同步曾按全局 DOM 变化广播到所有任务 | 单观察器、路由过滤、六类区域版本号与延迟任务重排 | 已实施 |
| 导航或切换预览后旧请求仍可能回写 UI | 15 秒超时、按任务取消、响应代际校验、有界评论缓存 | 已实施 |
阅读器滚动每帧查节点并写 sessionStorage |
缓存进度与源节点,400ms 合并写入,退出时刷新 | 已实施 |
站点 CSP 若禁止内联样式,旧 <style> 注入会失效 |
优先 adoptedStyleSheets,不支持或构造失败时回退 <style> |
已实施 |
| 仓库没有 CI,也没有完整登录态端到端自动化 | 增加 node --check 工作流,再用隔离配置补 Playwright/CDP 冒烟 |
未实施 |
移动端、低高度视口与旧版 100dvh 兼容需要逐项回归 |
响应式夹取、100vh 回退与 390×844 / 844×390 冒烟 |
已实施 |
bbs_info.favour_num 计算,脚本只能解释差异,不能修正。link/tree 接口的风控策略:未登录或触发验证码时返回 show_captcha 等状态,面板显示失败原因,需要打开帖子查看。.bbs-new-style-bottom__comment 与 .content-list__comment 类名,站点改版后需同步选择器。#page-bbs-community .bbs-home__content-list 容器与其中首个 a[href*='/app/bbs/link/'] 链接;容器或链接结构变化时不会自动带出评论,需点评论数字手动切换。关闭开关后脚本不拦截评论数字,恢复站点原生跳转。fetch 的常规行为。style-src 内联,收藏区块的样式需要改为构造样式表。#app > main、section、.layout-normal 与 #page-bbs-community main.list 结构;站点改版换容器后需要同步选择器。.hb-bbs-image-text)与文本帖(.hb-bbs-post),视频帖、纯投票帖仍走站点原布局。正文分块依赖 .image-text__content、.post__content 的块级结构;站点改版换容器后需要同步选择器,否则只会显示封面与结尾。.link-comment 并接管焦点顺序;关闭抽屉后恢复原双栏,DOM 不搬动。站点若把评论拆成多个浮动层,抽屉只接管首次找到的 .link-comment。100dvh 不可用的旧浏览器退回 100vh。sessionStorage,关闭标签页即失效;页面结构变化导致页数减少时,恢复位置会夹到最后一页。.link-comment 内,站点清空该节点时会被移除;MutationObserver 在下一帧重建并恢复选中模式。link/tree 返回的 is_cy 字段与楼层的 data-comment-id;站点改版去掉字段或属性后,开关仍可点,但不会命中评论。H 与“社区首页”按钮只返回 /app/bbs/home,是否仅展示未读内容仍由站点信息流决定,待登录真实页面复核。* { padding: 0; margin: 0; font: ... } 会覆盖 Shadow DOM 的 :host 普通声明,排序栏的 host 样式因此全部加 !important;新增 Shadow 组件时需沿用同样写法。::before / ::after 画卡片底部色带与 1px 分隔线,颜色写死为浅灰;底部色带在所有主题下隐藏,其余分隔线在深色主题逐个覆盖。站点改版新增同类伪元素时需同步补充,否则会再次出现白条。com-game-card、com-album-card、com-award-table-card、com-chatroom-card、com-league-card、com-match-card、com-mod-card、com-sku-card、com-wiki-card)的底色、描边、文字、药丸底与按钮在站点样式表里写死为浅色,深色主题按这 9 类容器逐组覆盖;站点新增卡片类型时同样会出现未覆盖的浅色块。.nav .nav-links 与 .nav-link 类名:脚本隐藏原生按钮并插入自己的入口,站点改版换容器后需要同步选择器。隐藏的原生按钮仍留在 DOM 中,站点自己的路由与统计不受影响。sessionStorage 后不再生效。直接打开帖子或刷新后,顺序记录可能已失效,此时“下一篇”使用页面相关推荐。#app.__vue_app__.config.globalProperties.$router);取不到 router 时退回站点 <a> 点击,会退化为整页跳转,功能仍可用但会刷新。/app/topic/link/<topic_id> 路由与 .topic-link__main、.topic-link__filter-row 结构;筛选行存在时优先插在它的实际父节点 .topic-link__panel 内,筛选行缺失时退回 .topic-link__main。站点改版换容器后搜索栏可能不会挂载或位置改变。.topic-aside__topic-indicator,读不到再退回页头标题与 document.title;右栏尚未渲染时占位文案会短暂使用页头名称。link 条数推进 offset,并对单页内已显示的帖子 ID 去重;返回 0 条 link 时停止翻页。若后续整页都是重复 ID,列表不会增长,但需用户再次点“加载更多”,脚本不会自动循环请求。filter_tag 分类筛选;刷新后回到社区原生信息流。#page-bbs-community .content、main.list、.bbs-home__topic-item 与 .bbs-home__content-item 结构;站点改版换容器后左右栏不会挂载。频道点击是转发站点原按钮,站点若改成非按钮容器需要同步选择器。#page-bbs-list、.content > .list 与 .cpt-right-side.right 结构,站点改版换容器后需同步选择器。_rnd 签名,使用本次请求的 nonce 与 _time 计算 HMAC-SHA256,修复输入内容后提示缺少参数的问题。H 也可返回 /app/bbs/home。R 与 Esc 改为只关闭当前文章的阅读器,不再改写全局沉浸阅读偏好;进入其他帖子仍自动开启。[ 与 ] 不再触发外部翻页。DocumentFragment 一次挂载;滚动比例改为 400ms 合并写入,并在退出或页面隐藏时刷新。#app 宽度下限;桌面左右工作栏只在 1200px 以上挂载,并在跨断点缩放时即时清理。MutationObserver 合并为一个共享调度器:所有同步任务按 120ms 窗口合并,站点连续渲染时不再为每个观察器、每一帧重复启动回调。--heybox-up-subtle 色块,标题、正文与底部工具栏重新连成一张纸面。rgb(250, 251, 252) 近白底、浅色文字落在白底上的问题。application/x-www-form-urlencoded;charset=UTF-8 编码;点赞、收藏与 CY 发布不再发送服务端无法解析的 JSON,CY 不再报 link_id 缺失。.page-header__share-btn,改为系统分享或复制帖子链接,并提供可见的成功/失败提示。result.link 的真实状态与计数,收藏支持收藏夹列表与再次点击取消,未登录统一提示;不再依赖隐藏的原生按钮。is_cy=1 的评论,成功后更新评论数并提示;Esc、遮罩与取消按钮均可关闭。#page-bbs-link、.content 与 .list 透明并停止拦截指针,主题背景不再盖住阅读舞台;收起后可再次打开,inert、焦点与抽屉状态正常恢复。contain 完整显示,背后铺同一张图的模糊底色;左右滑动只切封面,末图再左滑进入正文。Tab 循环,Esc 在回复框里也能先关抽屉。helper 目录,验证改为语法检查加真实页面断言。.layout-normal 到舞台之上,遮罩位于舞台与抽屉之间,点遮罩可关闭;评论未加载时给出提示,不再把阅读区卡在 inert。inert,关闭后焦点回到评论按钮,回复编辑器固定在抽屉底部。滚轮、↑ / ↓、j / k、空格、Home / End、C 与 R 均可操作,阅读位置按帖子记忆。.topic-link__panel 后,旧代码仍向 .topic-link__main 插入,insertBefore 因目标不是直接子节点而抛错。现在按筛选行的实际父节点挂载并校验相邻位置;页头不再提供社区名时改读右栏社区卡,恢复具体社区名占位。space 占位条目,旧逻辑用原始条数推进 offset 并判尾页,首屏就显示“已到最后一页”且跳过后一页;现按 link 条数推进,单页重复 ID 去重,返回 0 条 link 时停止。role="status" 与 aria-live="polite" 播报;关闭面板时焦点回到搜索框,“加载更多”加载中或隐藏时也不再把焦点留在按钮上;Esc 只在焦点位于面板或页面空白处时生效,避免误关站点的图片查看器或对话框。/app/search/list)桌面隐藏右侧热搜、二维码、App 链接与备案栏,结果列表占满内容区;夜航主题补齐页面与列表上下固定色条、结果间 4px 分隔条与横向结果列表右侧箭头遮罩,消除顶部、底部与列表中的浅色横带。/app/topic/link/*)夜航主题下残留的浅色分割线:站点 8px sticky 底条与 4px 帖子分隔线原来放在 :is() 内与伪元素组合,选择器无效,主题规则未生效;改为独立伪元素选择器,并分别使用当前主题的 surface / subtle 色。NAV_ICONS.cy,会显示成“undefined 插眼收藏”。插眼补全仍在收藏页内,并保留 #heybox-up-cy 锚点直达。#page-creator-editor)补齐主题覆盖:外层列表、标题栏、正文区、底部工具栏、社区与话题、权限选择、发布栏、右侧预览和帮助面板统一改用主题令牌,深色主题下正文、链接与预览正文恢复可读对比。html 背景与 data-mask 边缘同步跟随主题,消除页面缝隙处的浅色细线。.search__pull-list 留下约 26px 浮层并截获首张帖子卡片点击的问题;仅在建议数据为空时收起浮层,正常搜索发现、热榜与建议列表仍按原样显示。[ / ] 与站内路由切换行为。.link-comment__comment-item::before 同时用于楼层分隔线和悬停高亮,深色规则误把悬停层涂成了不透明边框色。.link-comment__comment-item + .link-comment__comment-item:not(:hover)::before),悬停层恢复站点原有的半透明色,评论文字保持可读。localStorage 无值时不再把 null 当作 0,默认宽度回到 56%。[cube_表情名] 文本,旧解析只接受数字编号,导致所有具名表情都被当成普通文本。data-emoji 节点;未知表情保留原文,不再吞掉内容。background-repeat 回卷正坐标,预览层改为无重复背景后必须使用行列为 十位 − 1 / 个位 − 1 的负坐标,表情不再透明。no-repeat 下落到图片边界外而显示空白的问题。heybox-up-dark-flat、-flat-subtle、-edge、-ink 类,再用主题令牌覆盖,站点新增白色块时无需逐条补选择器。.content 用 1fr | 中栏 | 1fr 三栏栅格,左右两列等分,中栏默认占屏幕 56%,可在主题菜单里选 40% / 48% / 56% / 64% / 72%,偏好写入 heybox-up.feedWidth.v1;中栏上限 1180px,并保证两侧至少留 560px,避免侧栏压到正文。#page-creator-content-management 与 -detail)补齐深色:页头、标签栏、条目悬停底色、分隔线、数据指标卡(.creator__data-indicator)、图表区、草稿页与预览框都改用主题令牌。#page-topic-link)补齐深色:整页底色、上下两条固定色条、面板/页头/筛选行、底部渐隐条、分屏线,以及右栏的社区指标与小程序卡片。data-emoji 的 cube 表情与 [cube_NN] 文本标记都渲染成 17px 精灵图,位置按站点 CSS 的 (7-N%10, 19-floor(N/10)) 换算,不再被当标签剥掉后变成空白。link/<id>。com-* 卡片族的深色适配:9 类卡片容器与 .is-editor-mode、占位卡、::after 描边、奖项表行边框、主次文字、药丸与表头底色、深色实心按钮、图片占位底统一改用主题令牌。.comment-item__writer-like span 药丸底、.children-item__comment-creator 蓝色作者名与 .scroll-list__no-more-desc::before 浅色分隔线一并覆盖。topic_id 内请求帖子,支持时间筛选、加载更多、全站搜索入口与返回社区。localStorage。heybox-up.navMotion.v1。#heybox-up-cy 锚点并滚动到“插眼收藏”区块;从其他页面进入时用 sessionStorage 标记,等区块挂载后再定位。[ 与 ] 快捷键;切换走站内路由,不整页刷新,并滚动回顶部。heybox-up.commentPreview.v1,刷新后保持。.hb-bbs-image-text、.hb-bbs-post、.hb-bbs__video 的 ::after),卡片改用边框与间距分隔。.section-title__content,补齐排序栏被站点全局通配规则覆盖的问题。link/tree 返回的 is_cy 标记楼层并隐藏;按钮显示已屏蔽条数,站点重渲染后由 MutationObserver 重新标记。heybox-up.hideCy.v1 偏好。/bbs/app/link/tree,按 20 条翻页,支持收起按钮与 Esc,进入帖子页或窄屏时隐藏。section 与 main.list 的浅色伪元素、个人主页动态分隔条。html 根元素同步改为深色,消除页面边缘与滚动区域的浅色露底。.link-comment 停靠右栏,排序、回复、点赞与展开楼中楼全部复用站点逻辑。data-heybox-up-dark 布尔标记,夜航与纯黑共享全部深色覆盖,避免新增预设漏掉深色样式。localStorage。localStorage。docs/assets/heybox-up.svg,脚本 @icon 使用内联 data URI。#6f8db3,与整体冷色图标一致。createCard 供收藏页区块继续使用。@description 补全功能、权限与影响披露(以登录态读取本站插眼、本地自算签名、仅写本机缓存、需登录)。@homepageURL、@supportURL 与内联 SVG @icon。MIT License
按平台协议「脚本描述须准确反映功能、权限及可能的影响」逐条说明:
@grant none,无特权 API,无 GM_xmlhttpRequest,无跨域提权。heybox_id Cookie,并以该登录态请求小黑盒自身接口 /bbs/app/profile/bbs/comment/list(本账号的插眼记录)。信息流评论预览、抽屉分页与 CY 标记会按需请求站点评论树接口 /bbs/app/link/tree。点赞、收藏、收藏夹列表与 CY 发布仅在用户点击对应按钮时调用站点写接口或收藏夹接口。hkey、_time、nonce,评论创建另要求 _rnd。脚本在本地自行计算,不下载、不执行任何外部代码;规则见「三、接口签名」。localStorage(键 heybox-up.cy.v1:<userid>),主题与功能开关写入 heybox-up.theme.v1、heybox-up.commentPreview.v1、heybox-up.navMotion.v1;连读顺序只写入当前标签页的 sessionStorage。评论内容与排序由站点自己管理,脚本不保存。不向任何第三方服务器发送数据,无统计、无埋点、无追踪。@antifeature:无返佣链接、无广告、无付费、无挖矿、无会员限制、无用户追踪,故未声明。