The Debug button on a Sieve script sent a copy to an outside site, whose interpreter knows only upstream's extension names: a script that requires vnd.inbuxa.expressions or vnd.inbuxa.while failed to compile there, and the button took admins to another project's site. The playground now ships inside the console and runs the server's own interpreter. sieve-playground/ is built by inbuxa-server's tools/sieve-playground (SOURCE.md names the commit); sieve-playground.ts copies it, with Monaco 0.52.2 from node_modules, into sieve-playground/<content hash>/ (the server caches every file but the console's index.html for good) and gives the console its path. The script stays on the console's origin, so the warning dialog before opening it is gone. Strings (en.json): sievepad.failed reworded, sievepad.debugHint added, the three warning-dialog strings removed. webui.zip grows from 1.3 MB to 3.4 MB: 0.9 MB of compressed WebAssembly, the rest Monaco's editor core.
56 lines
2.0 KiB
JSON
56 lines
2.0 KiB
JSON
[
|
|
{
|
|
"id": "welcome",
|
|
"title": "Welcome tour",
|
|
"description": "Duplicates, spam, lists, flags, MIME footers and vacation in one script.",
|
|
"scripts": [{ "name": "main", "file": "welcome.sieve" }],
|
|
"messages": [{ "name": "q3-report.eml", "file": "welcome.eml" }]
|
|
},
|
|
{
|
|
"id": "lists",
|
|
"title": "Mailing lists",
|
|
"description": "Regex captures, body tests and plus addressing.",
|
|
"scripts": [{ "name": "main", "file": "lists.sieve" }],
|
|
"messages": [{ "name": "announcement.eml", "file": "lists.eml" }]
|
|
},
|
|
{
|
|
"id": "spam",
|
|
"title": "Spam and viruses",
|
|
"description": "spamtest, virustest, reject and discard driven by the scores in Settings.",
|
|
"scripts": [{ "name": "main", "file": "spam.sieve" }],
|
|
"messages": [{ "name": "lottery.eml", "file": "spam.eml" }],
|
|
"settings": { "spamScore": 6 }
|
|
},
|
|
{
|
|
"id": "vacation",
|
|
"title": "Out of office",
|
|
"description": "Vacation replies with date windows and auto-reply safeguards.",
|
|
"scripts": [{ "name": "main", "file": "vacation.sieve" }],
|
|
"messages": [{ "name": "lunch.eml", "file": "vacation.eml" }]
|
|
},
|
|
{
|
|
"id": "forward",
|
|
"title": "Redirect and notify",
|
|
"description": "redirect :copy with DSN options, enotify and editheader.",
|
|
"scripts": [{ "name": "main", "file": "forward.sieve" }],
|
|
"messages": [{ "name": "invoice.eml", "file": "forward.eml" }]
|
|
},
|
|
{
|
|
"id": "include",
|
|
"title": "Includes",
|
|
"description": "Split a filter across scripts with include and global variables.",
|
|
"scripts": [
|
|
{ "name": "main", "file": "include-main.sieve" },
|
|
{ "name": "common", "file": "include-common.sieve" }
|
|
],
|
|
"messages": [{ "name": "outage.eml", "file": "include.eml" }]
|
|
},
|
|
{
|
|
"id": "expressions",
|
|
"title": "Expressions and loops",
|
|
"description": "The vnd.inbuxa.expressions and vnd.inbuxa.while extensions: let, eval, loops and built-in functions.",
|
|
"scripts": [{ "name": "main", "file": "expressions.sieve" }],
|
|
"messages": [{ "name": "meeting.eml", "file": "expressions.eml" }]
|
|
}
|
|
]
|