fix: 白名单 $owner/$lover 代号解析 + 设置页数值下拉类型修复 - #2
Open
heitaoplay wants to merge 4 commits into
Open
Conversation
added 4 commits
August 13, 2026 13:14
- 新增 src/core/whitelist.js:统一解析白名单,支持数字成员号与 $owner/$lover 代号, 代号相对【被授权方本人】解析(查看者端=被看的角色 C,接收端=Player), 用 BC 原生 IsOwnedByMemberNumber / IsLoverOfMemberNumber(缺方法时回退 Lovership)。 - remote.js:查看者端 _viewerCanEdit 与接收端 myPerm 均改用 whitelistAllows, 修复白名单代号从不生效(之前拿字符串 $owner 与数字成员号严格比对,永远不匹配)。 - timer.js:shouldDraw 白名单分支改用 whitelistAllows,修复'仅白名单可见倒计时'失效。 - settings.js:修复特效强度/失神视野等数值型 <select> 因存字符串导致整段重渲染后 选项错位(下拉回退到第一项);select 改动时数值选项归一为 Number,_sel 用宽松比较兜底旧存档。
core-init 顶层无条件 hookChatInput() 挂一个 keydown 兜底;进房后 registerCommandOnce() 在 CommandCombine 不可用时又挂一个 → 按一次 Enter 触发两次 handlePexCommand(重复输出帮助/状态)。 给 setupKeydownFallback 加 _keyDownHooked 单例守卫,无论哪条路径调用都只挂一次。
原代码先把 window.PEX 设置为空对象,再判断 if(window.PEX),导致 else 分支 永远进不去,插件本体/内嵌 bundle 从未被加载。修正为先判断再 else 加载, 让首次安装的油猴脚本能真正执行 PEX。
原正则不含主站 bondageprojects.com,导致在该域名游玩时油猴不注入脚本。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
修复内容
1. 白名单代号
$owner/$lover从不生效(功能性 bug)原代码在
remote.js(查看者端_viewerCanEdit、接收端myPerm)和timer.js(shouldDraw)里,把白名单里的代号$owner/$lover当成普通字符串,与数字成员号做严格比对,永远不匹配 → 白名单模式下的远程编辑权限、以及「仅白名单可见倒计时」实际上永远不会放行。新增
src/core/whitelist.js,统一用whitelistAllows(list, candidate, relativeTo)解析:$owner→ BC 原生IsOwnedByMemberNumber(candidate);$lover/$lovers→IsLoverOfMemberNumber(candidate)(方法缺失时回退Lovership数组)。代号相对被授权方本人解析:查看者端 = 被看的角色
C,接收端(myPerm)=Player(接收方即被授权方)。IsOwnedByMemberNumber/IsLoverOfMemberNumber已在本地 BC 源码Character.js核实存在。2. 设置页数值下拉框错位(肉眼可见)
特效强度(effectLevel) 与失神视野(blindLevel) 是数字型<select>,但改动时存的是字符串"3"。整段重渲染(切分区再切回 / 重开设置页)后,_sel用val === v(字符串 vs 数字)严格比较全部落空 → 下拉回退到第一项。_bind的 select 分支:纯数字值的选项归一为Number再存;_sel:用String(val) === String(v)宽松比较,兜底旧存档里可能存成字符串的数值。(注:数字输入框
<input type=number>原本就用parseInt存数字,无需改动。)验证
node --check四个文件全部通过;whitelistAllows单测覆盖数字命中/未中、$owner、$lover、$lovers、混合、空列表、相对对象缺失等 10 例全过;vite build通过(28 模块,含新文件)。备注
本 PR 与 #1(Perf/expression and state sync)无代码冲突:本 PR 改的是
remote.js白名单、timer.js的shouldDraw白名单分支、settings.js与新增whitelist.js;#1 未触及这些位置,两者可独立合并。