1.6 KiB
epic, story, title, status
| epic | story | title | status |
|---|---|---|---|
| 12 | 12.2 | Scripting Layer (Rhai or mlua) | draft |
Epic 12 — Plugin & Extension System
Goal: Let power users extend CalcPad.
Story 12.2: Scripting Layer (Rhai or mlua)
As a power user without Rust experience, I want to write lightweight scripts to add custom functions to CalcPad, So that I can extend functionality without compiling native code.
Acceptance Criteria:
Given a user creates a script file in the .calcpad-plugins/ directory
When CalcPad starts or reloads plugins
Then all .rhai (or .lua) files in the directory are loaded and executed
And functions registered by the scripts become available in expressions
Given a script uses the API calcpad.add_function("double", |x| x * 2)
When a user types double(21) in a sheet
Then the answer column displays 42
Given a script attempts to access the filesystem, network, or system commands When the script is executed Then the sandboxed runtime blocks the operation And an error is reported without crashing the application
Given a script contains a syntax error or runtime error When CalcPad attempts to load it Then an error message identifies the problematic script file and line number And all other valid plugins continue to load and function normally
Given a script registers a function with the same name as a built-in When the user evaluates an expression using that name Then the built-in takes precedence (or a configurable priority is respected) And a warning is logged about the naming conflict