Repository navigation
Releases: Xposed-Modules-Repo/io.github.worldmargin.sparkflame
Releases · Xposed-Modules-Repo/io.github.worldmargin.sparkflame
Release list
v1.5.0
⚠️ 升级警告:本版本是一次大重构,请仔细斟酌后再升级
这次更新重写了脚本输出方式(ctx.result)、会话快照的数据结构与生命周期、编辑器内核(CodeMirror 6)以及多处界面交互,与旧版差异很大,不是小修小补。
- 旧脚本可能要改:
ctx.sandbox.*已改名ctx.macro.*;ctx.template.变量名改为ctx.template.vars.变量名;
$spark_result$仍然兼容,但新写法是ctx.result。 - 界面变化:会话列表新增「被隐藏」分组;宏 / 函数 / 沙盒变量改成可折叠分组卡片。
- 数据变化:快照改为合并写入(IM 分批加载不会再清空会话);连续 3 次没出现的会话会隐藏、30 天后连快照一起删除。
升级前请先「设置 → 配置」导出备份;升级后先核对脚本、已选目标与模板。不确定就先别升级。
修复
- 会话丢失:IM 冷启动会先给 0 条、再分批补全,旧逻辑把它当完整列表整份覆盖,导致 App 里的会话被清空。
现在扫描结果为 0 时不写;非空结果与已有快照合并写入(昵称 / 备注 / 头像空值不覆盖旧值)。 - 会话列表为空时不再误判为「今日无需发送」,避免当天不再重试。
快照生命周期
- 连续 3 次扫描没在抖音出现 → 从列表隐藏;连续 30 天没出现 → 连快照一起删除(手动归属一并清理)。
- 「续火花」页底部新增 「被隐藏」折叠卡片:可恢复显示、把手动归属移出已选目标、点整行进会话编辑页。
脚本 API
- 新增
ctx.result作为输出列表(与$spark_result$同一数组,宏执行前自动同步,老脚本不用改)。 - 新增
ctx.registerCallback(fn):发送结束回调{ conversationId, result: "Succeed" | "Skipped" | "Failed", reason? };
脚本产出为空按「跳过」处理,不再算失败。 ctx.system.getAllConversation(filter?)支持筛选:对象逐项相等 / 数组表示其中之一 / 函数自定义判断。- 会话结构新增
manualSend/autoSend/willSend,用于按「手动 / 自动 / 本轮实际」口径精确筛选。 ctx.registerCallback为主名,旧拼写ctx.registCallback保留兼容。
编辑器
- 实现格式化:清理零宽字符、不换行空格、智能引号、Markdown 代码围栏,并按花括号层级重排缩进(4 空格)。
- 长按交回系统原生选区:删除自绘的长按工具条,复制 / 全选走系统菜单。
- 撤掉失效的「补全」按钮(输入时的自动补全保留);动作条新增「粘贴」。
- 宏 / 函数 / 沙盒变量列表改为可折叠分组卡片。
文档
- 重写使用文档与 README:去掉重复的 API 总表、两套 AI 提示词和重复的「给 AI 的模块说明书」;
修正 Monaco / 启动扫描时机 / 配置路径等过时描述;补齐新 API、筛选、回调、被隐藏列表。
v1.4.4
v1.4.4
编辑器换内核(移动端适配)
- Monaco 换成 CodeMirror 6(离线打包),修复滑动收键盘、长按选区、系统剪贴板
- 删除 Monaco 资源(约 4.5 MB)与原生 sora-editor 实现及其依赖
- 高亮:关键字 / 字符串 / 注释 / 数字 / 变量 / 属性 / 函数 / 类型,含选区与当前行
- 补全:运行期接入 TypeScript 语言服务(懒加载,标准库裁剪到 es2020 闭包),ctx.* 与原生 JS 均为真实类型推断
结构
- 宿主侧(host/)与 APP 侧(app/)分离,ui 按 settings / template / conversation / macro / variable / function / common 分类
- 清理上游遗留空目录、图标与命名
修复
- 脚本结尾无分号被 ASI 粘成连续调用(3.0 is not a function)
- unmountAll 不再被丢弃;挂载类接口按宏 id 校验
- 预览只读、只带当前会话,ctx.macro.name / id 可用
- 会话新增 selected / sentToday / willSend(手动点名 / 强制发送 / 自动轮三口径)
- 勾选会话后发送目标改为点击时现算
体积
- release APK:3.39 MB → 1.80 MB
v1.4.3
v1.4.3
预览:数据齐全,但不写数据
- 预览的「本轮」= 只有正在预览的那个会话:
ctx.system.getAllConversation()返回单元素数组,
getConversation / getTemplate / getMacro在预览里也能查到 - 预览里
willSend恒为true(本轮就它自己) - 仍然只读:
setvar / deletevar / mountMacro / unmountMacro / unmountAll在预览时跳过
会话数据:新增三个状态字段
getAllConversation() 与 getConversation(id) 的每个会话都带:
| 字段 | 含义 |
|---|---|
selected |
在「已选目标」里 |
sentToday |
今天已经发过 |
willSend |
本轮会发:手动点名 → true;强制发送(手动发送)→ true;自动轮 → selected && !sentToday && !isGroup |
筛选写法:ctx.system.getAllConversation().filter(c => c.willSend)
修复
- 勾选会话后仍会发给全部:发送目标原来在页面构建时就算好了,之后勾选复选框不会更新;
现在改成点击时现算
安装
- 覆盖安装即可(versionCode 10800),配置与登录态都不丢
v1.4.2
v1.4.2
修复
- 脚本最后一句没写分号时会崩(
3.0 is not a function):引擎拼的程序是「脚本 + 换行 +(typeof …) ? … : $spark_result$」,
以)/]结尾又不写分号时会被 JS 的自动分号规则粘成push(...)(...),而push返回数字。
现在在尾巴前插了一个独立分号,模板与宏都覆盖 - 预览里
ctx.macro.name是空串:预览走的是只读重载,没带「宏 id → 名字」映射;现在四个预览入口都会带上
接口:挂载类改走 id 通道
ctx.system.mountMacro(id, target?)/unmountMacro(id, target?)改为按宏 id(原来按名字)- 新增
ctx.macro.id(当前宏 id,模板段为空串) - 删除
ctx.macro.getAllMountedTemplate()/getAllMountedConversation(),
改用ctx.system.getMacro(ctx.macro.id)拿templates/conversations
文档
- 使用文档:挂载示例改成 id 传参、补「最后一句不写分号也行」的说明
安装
- 覆盖安装即可(versionCode 10700),配置与登录态都不丢
v1.4.0
v1.4.0
上下文按来源分命名空间(破坏性变更)
ctx.builtin:内置变量(date/time/weekday/timestamp)与内置函数(pick/pad/repeat/random/shuffle/countdown/nextNewYear/untilNewYear/formatDate)ctx.io:抖音给的会话数据(nickname/remark/name/days/state/stateText/peerUid/conversationId)ctx.template.vars:模板 / 会话变量(变量统一挂在这里)ctx.template:模板信息固定键template/parent_template/thisid/parent.id/parent.childsctx.macro:宏自己的变量(getvar/setvar/deletevar)与挂载查询(getAllMountedTemplate/getAllMountedConversation)ctx.system:getAllConversation()、mountMacro(name, target?)、unmountMacro(name, target?)、unmountAll(target?)ctx.functions:自定义函数(不变)- 旧写法(
ctx.name、ctx.pick(...)、ctx.template.变量、ctx.sandbox)不再可用
新增
- 宏的变量:值以 JSON 存进配置、跨次运行保留;归属就是宏自己,模板读不到;
宏编辑页有独立入口可改名 / 改值 / 删除 / 新增 - 宏挂载支持目标:挂到指定会话,或挂到模板(
inherit: false= 仅模板、不往派生会话传播) - 续火花列表长按派生项:新增「复制会话 ID」
修复
ctx.macro之前只在宏段创建,导致所有脚本渲染失败(Cannot set property ... of undefined);
现在始终存在,宏段之外读写会明确报错- d.ts 里
SparkVars被嵌套进SparkBuiltin导致ctx.builtin.*全部标红 - 沙盒 / 宏挂载落盘改用最新配置,避免覆盖「今日已发」
- 应用 ID 改为
io.github.worldmargin.sparkflame(Xposed 模块仓库要求),provider authority 同步
安装
- 需要 LSPosed,作用域勾选「抖音」
- 与旧包
com.worldmargin.autospark是两个独立 App;升级后记得在 LSPosed 里给新包勾作用域