Просмотр исходного кода

docs: update all documentation for v1.2 final

- CHANGELOG: full v1.2 release notes (MCP, plugins, Canvas, fixes)
- README: plugin system + games section, 15 tools + 3 resources
- MCP_SERVER.md: debug commands, IJS API reference, RikkaHub config
- QUICK_REFERENCE: MCP config, plugin examples, game command

Co-Authored-By: Claude <noreply@anthropic.com>
nonvioce 3 месяцев назад
Родитель
Сommit
7abe83c707
4 измененных файлов с 110 добавлено и 12 удалено
  1. 30 10
      CHANGELOG.md
  2. 35 0
      MCP_SERVER.md
  3. 33 0
      QUICK_REFERENCE.md
  4. 12 2
      README.md

+ 30 - 10
CHANGELOG.md

@@ -3,42 +3,57 @@
 格式基于 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.0.0/),
 格式基于 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.0.0/),
 本项目遵循 [语义化版本](https://semver.org/lang/zh-CN/)。
 本项目遵循 [语义化版本](https://semver.org/lang/zh-CN/)。
 
 
-## [1.2] - 2026-07-18
+## [1.2] - 2026-07-19
 
 
 ### 新增
 ### 新增
 - **MCP 服务器**(Model Context Protocol)
 - **MCP 服务器**(Model Context Protocol)
   - 15 个 MCP 工具:evaluate, differentiate, integrate, solve, simplify, numeric, to_latex, plot, parametric_plot, list_plot, list_plugins, get_plugin, create_plugin, delete_plugin, execute_plugin
   - 15 个 MCP 工具:evaluate, differentiate, integrate, solve, simplify, numeric, to_latex, plot, parametric_plot, list_plot, list_plugins, get_plugin, create_plugin, delete_plugin, execute_plugin
-  - 2 个 MCP 资源:variables://current, history://recent
+  - 3 个 MCP 资源:variables://current, history://recent, api://plugin(API 文档)
   - NanoHTTPd 嵌入式 HTTP 服务器,监听 127.0.0.1:8734
   - NanoHTTPd 嵌入式 HTTP 服务器,监听 127.0.0.1:8734
+  - Streamable HTTP + SSE 双传输协议(兼容 RikkaHub)
   - Rhino JS 引擎支持 MCP 端插件执行
   - Rhino JS 引擎支持 MCP 端插件执行
   - Android 前台 Service,支持后台持续运行
   - Android 前台 Service,支持后台持续运行
   - MCP 事件实时同步到控制台(🌐 MCP 标记)
   - MCP 事件实时同步到控制台(🌐 MCP 标记)
+  - MCP 调试命令:__open(打开插件)、__eval(WebView 中执行 JS)、__tap(模拟点击)
   - 设置面板可控开关,SharedPreferences 持久化
   - 设置面板可控开关,SharedPreferences 持久化
 - **Canvas 绘图系统**
 - **Canvas 绘图系统**
   - PlotRenderer:坐标轴、网格、标签、多曲线颜色区分
   - PlotRenderer:坐标轴、网格、标签、多曲线颜色区分
   - 等比例坐标轴(圆不变椭圆)
   - 等比例坐标轴(圆不变椭圆)
   - 手势支持:双指缩放、拖拽平移、双击重置
   - 手势支持:双指缩放、拖拽平移、双击重置
-  - 高分屏 dpr 适配
-  - 多函数图例(可点击开关)
-  - 💾 保存为 PNG(MediaStore → 系统相册)
+  - 高分屏 dpr 线宽适配
+  - 长按 800ms 保存到系统相册(MediaStore)
   - 自动检测 Graphics 输出并 Canvas 渲染
   - 自动检测 Graphics 输出并 Canvas 渲染
-- **14 个默认插件**(从 mathtool2 迁移)
+- **插件系统 v2**
+  - 双模式:`inline`(弹窗输入)和 `fullscreen`(全屏交互面板)
+  - IJS API 体系:IJS.Symja(数学)、IJS.canvas(绘图)、IJS.input(触摸)、IJS.io(文件)、IJS.audio(音效)、IJS.ui(面板控制)
+  - 内置 JS 库:lodash 4.17.21、seedrandom 3.0.5、Matter.js 0.19.0
+  - IJS.canvas.create() 无参数自动填满全屏面板
+  - IJS.canvas.width()/height() 查询自适应尺寸
+  - IJS.input.xy(event) 统一坐标转换
+  - 插件 JSON 新增 `mode` 字段
+  - api_test 综合测试插件(55 项测试覆盖所有 API)
+- **15 个默认插件**(从 mathtool2 迁移)
   - 统计概率:卡方检验、二项分布、超几何分布、线性回归、混合方差、直方图统计、卷积分布列
   - 统计概率:卡方检验、二项分布、超几何分布、线性回归、混合方差、直方图统计、卷积分布列
   - 数列:错位相减法
   - 数列:错位相减法
   - 几何:对称变换(点/直线三种模式)、圆的方程
   - 几何:对称变换(点/直线三种模式)、圆的方程
   - 数值:二分法求根
   - 数值:二分法求根
   - 向量:三点法向量(Simplify 精确根式)
   - 向量:三点法向量(Simplify 精确根式)
-- **设置面板**:MCP 开关、端口、字体大小
+  - 测试:api_test 综合测试
+  - 游戏:The Power of Two(js13k 经典数学谜题复刻)
+- **设置面板**:MCP 开关、端口、字体大小(localStorage 持久化)
 - **欢迎页**:版本号 + 快速开始示例
 - **欢迎页**:版本号 + 快速开始示例
-- **顶部导航栏**:应用名 + MCP 状态灯 + 帮助/插件/设置按钮
+- **顶部导航栏**:应用名 + 帮助/插件/设置按钮
 
 
 ### 改进
 ### 改进
+- Flutter 风格 UI 美化(渐变背景、毛玻璃导航、卡片化结果、胶囊输入框)
 - 统一蓝色配色方案(替换粉色主题)
 - 统一蓝色配色方案(替换粉色主题)
+- 白色状态栏 + 深色图标
 - 移除 30+ 个 Symja 不支持的无效函数
 - 移除 30+ 个 Symja 不支持的无效函数
 - 输入框增设发送按钮
 - 输入框增设发送按钮
-- 命令历史使用 SharedPreferences 持久化
+- 命令历史 SharedPreferences 持久化
 - Canvas 高分屏 DPR 适配
 - Canvas 高分屏 DPR 适配
 - MCP 轮询仅在服务器开启时运行
 - MCP 轮询仅在服务器开启时运行
+- 默认插件支持 APK 升级自动更新
 
 
 ### 修复
 ### 修复
 - MCP `isError` 位置修正为 result 顶层
 - MCP `isError` 位置修正为 result 顶层
@@ -48,12 +63,17 @@
 - AlertDialog 泄漏修复
 - AlertDialog 泄漏修复
 - 清除 ~60 行重复 CSS
 - 清除 ~60 行重复 CSS
 - 三点法向量 Simplify[] 精确根式简化
 - 三点法向量 Simplify[] 精确根式简化
+- IJS.input.xy() canvasRef 闭包引用修复
+- execute_plugin MCP 参数传递修复
+- 绘图结果通过 MCP LaTeX 渲染
+- symmetry_ll 括号 bug 修复
 
 
 ### 移除
 ### 移除
 - FourierTransform、InverseFourierTransform(Symja 不支持)
 - FourierTransform、InverseFourierTransform(Symja 不支持)
 - Combinations、NDSolve、RSolve、Interpolation、Residue
 - Combinations、NDSolve、RSolve、Interpolation、Residue
 - String* 系列、Quantity/UnitConvert、CForm/FortranForm 等无效函数
 - String* 系列、Quantity/UnitConvert、CForm/FortranForm 等无效函数
-- Switch、Do、While、For(Symja 控制流不支持)
+- MCP FAB 按钮(保留设置面板开关)
+- 图例/保存按钮(改为长按保存)
 
 
 ## [1.1] - 2025
 ## [1.1] - 2025
 
 

+ 35 - 0
MCP_SERVER.md

@@ -139,6 +139,41 @@ Claude Desktop ──HTTP──▶ 127.0.0.1:8734/mcp
         WebView 控制台 (实时同步显示)
         WebView 控制台 (实时同步显示)
 ```
 ```
 
 
+## 插件调试
+
+MCP 提供了插件调试工具,可通过 `evaluate` 工具触发:
+
+| 命令 | 用途 |
+|---|---|
+| `evaluate("__open plugin_id")` | 在控制台全屏面板打开插件 |
+| `evaluate("__eval js_code")` | 在 WebView 中执行 JS,结果通过 MCP 事件返回 |
+| `evaluate("__tap x y")` | 模拟画布逻辑坐标点击 |
+
+调试流程示例:
+```
+1. __open power_of_two              → 打开游戏
+2. __eval console.log("test")       → 注入调试日志
+3. __tap 300 235                    → 模拟点击坐标
+4. execute_plugin("api_test")       → 运行 API 测试(含错误堆栈)
+```
+
+通过 `resources/read api://plugin` 获取完整 API 参考。
+
+## IJS API 速览
+
+插件可用的完整 API:
+
+| 命名空间 | 主要方法 |
+|---|---|
+| `IJS.Symja` | eval, print, differentiate, integrate, solve, simplify, expand, factor, numeric, plot, parametricPlot, listPlot, toTeX, gcd, lcm, isPrime, fibonacci, binomial, sum, product, limit, series, apart, together, trigSimplify, matrix.{det, inverse, transpose, eigenvalues, rank}, renderLatex |
+| `IJS.canvas` | create(w?,h?), getContext(), getSize(), width(), height(), clear(), fill(color), size(w,h), loop(cb), stop() |
+| `IJS.input` | xy(event), onTouchStart/Move/End(cb) |
+| `IJS.io` | read/write/list/delete (应用数据目录) |
+| `IJS.audio` | beep(freq,dur,type), playNote(note,oct,dur), playMelody(melody,tempo) |
+| `IJS.ui` | close(), setBackground(color) |
+
+**内置 JS 库**:lodash (`_`), seedrandom (`Math.seedrandom`), Matter.js (`Matter`)
+
 ## 安全
 ## 安全
 
 
 - 仅监听 `127.0.0.1`,不对外暴露
 - 仅监听 `127.0.0.1`,不对外暴露

+ 33 - 0
QUICK_REFERENCE.md

@@ -153,6 +153,39 @@ curl -X POST http://127.0.0.1:8734/mcp \
   -d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
   -d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
        "params":{"name":"evaluate",
        "params":{"name":"evaluate",
                  "arguments":{"expression":"D[x^3,x]"}}}'
                  "arguments":{"expression":"D[x^3,x]"}}}'
+
+# RikkaHub 配置
+{"mcpServers":{"ijs":{"type":"streamable-http",
+  "url":"http://127.0.0.1:8734/mcp",
+  "commonOptions":{"name":"IJS - Symja","enable":true,"headers":[]}}}}
+
+# 输入 mcp 命令查看完整配置 + 服务器状态
+```
+
+### 插件开发
+```javascript
+// inline 模式:弹窗输入 + 执行按钮
+function calculate(inputs, IJS) {
+  IJS.Symja.print("计算中...");
+  return IJS.Symja.differentiate(inputs.func, inputs.var);
+}
+
+// fullscreen 模式:全屏 Canvas 游戏
+function calculate(inputs, IJS) {
+  var ctx = IJS.canvas.create();  // 自动填满屏幕
+  var W = IJS.canvas.width();
+  IJS.canvas.fill("#1a1a2e");
+  // ... Canvas 2D 绘图 ...
+  IJS.input.onTouchEnd(function(e) {
+    var pos = IJS.input.xy(e);   // 统一坐标转换
+    // 处理触摸...
+  });
+}
+```
+
+### 内置游戏
+```mathematica
+power2     // 打开 "The Power of Two" — 用数字 2 构造任意值!
 ```
 ```
 
 
 // 螺旋线
 // 螺旋线

+ 12 - 2
README.md

@@ -48,12 +48,22 @@
 
 
 ### 🌐 MCP 服务器
 ### 🌐 MCP 服务器
 - 内置 Model Context Protocol 服务器
 - 内置 Model Context Protocol 服务器
-- 15 个 MCP 工具 + 2 个资源
-- 支持 Claude Desktop 等 AI 客户端接入
+- 15 个 MCP 工具 + 3 个资源(含 API 文档)
+- 支持 Claude Desktop、RikkaHub 等 MCP 客户端
+- Streamable HTTP + SSE 双传输协议
 - MCP 命令实时同步到控制台
 - MCP 命令实时同步到控制台
+- 插件调试:__open / __eval / __tap
 - 端口 8734,设置面板可控开关
 - 端口 8734,设置面板可控开关
 - 详见 [MCP_SERVER.md](MCP_SERVER.md)
 - 详见 [MCP_SERVER.md](MCP_SERVER.md)
 
 
+### 🔌 可扩展插件系统
+- 双模式:inline(弹窗)+ fullscreen(全屏交互)
+- 15 个默认插件 + API 测试工具
+- js13k 经典数学游戏 "The Power of Two"
+- 内置 JS 库:lodash, seedrandom, Matter.js
+- IJS API:Symja(数学) + canvas(绘图) + input(触摸) + io(文件) + audio(音效)
+- 详见 [PLUGIN_DEVELOPMENT.md](PLUGIN_DEVELOPMENT.md)
+
 ### 💡 智能交互
 ### 💡 智能交互
 - 自动补全函数名和命令
 - 自动补全函数名和命令
 - ↑↓ 键浏览历史记录(持久化存储)
 - ↑↓ 键浏览历史记录(持久化存储)