{
  "version": "1.0",
  "timestamp": "2026-02-20T18:20:13.505Z",
  "stackScript": "",
  "objects": [
    {
      "name": "card-1",
      "id": "card",
      "position": {
        "left": "",
        "top": "",
        "width": "",
        "height": ""
      },
      "script": "",
      "properties": {}
    },
    {
      "name": "localhost shell test",
      "id": "1",
      "type": "button",
      "position": {
        "left": "50px",
        "top": "50px",
        "width": "420px",
        "height": "30px"
      },
      "script": "on mousedown\n   -- if this works, we probably don't need wrappers anymore\n   put \"\" into field \"output\"\n   put the baseURL into myURL\n   if myURL contains \"://localhost:\" then\n      set the allowshell to true\n      put shell(\"ls -l ~/Documents\") into field \"output\"\n   else\n      answer \"This needs to be run as localhost mode. See the script of this button\" & return & \"(comments at the bottom if you are unsure)\" with \"show script\" or \"okay\"\n      if it is \"show script\" then edit the script of button \"localhost shell test\"\n   end if\nend mousedown\n\n/*\n# comments on how to enable shell mode:\ncd /path-to/webtalk/\nchmod +x ./cgi-bin/shell.py\npython3 -m http.server --cgi 8000\n# then in the browser, go to:\nhttp://localhost:8000/\n# load this stack in, then try this button again!\n*/",
      "properties": {
        "visible": true,
        "hilighted": false,
        "isCheckbox": false,
        "isRadiobutton": false,
        "isMenu": false,
        "menuText": "",
        "disabled": false,
        "textAlign": "center",
        "textsize": 16,
        "textColor": "#000",
        "textFont": "-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Arial, sans-serif",
        "textStyle": "normal",
        "asBackground": false,
        "label": "",
        "accentColor": "",
        "layer": "2",
        "foregroundColor": "rgb(255, 255, 255)",
        "foregroundcolor": "white",
        "fontFamily": "-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Arial, sans-serif",
        "rotation": 0,
        "backgroundcolor": "rgb(137, 137, 137)",
        "clicktext": "shell",
        "bordercolor": "rgb(153, 153, 153)",
        "borderwidth": "1",
        "fontweight": "400",
        "clickText": "shell",
        "backgroundColor": "rgb(137, 137, 137)",
        "borderColor": "rgb(153, 153, 153)",
        "borderWidth": "1px",
        "fontWeight": "400"
      }
    },
    {
      "name": "output",
      "id": "2",
      "type": "field",
      "position": {
        "left": "52.5px",
        "top": "89.5px",
        "width": "583px",
        "height": "393px"
      },
      "script": "",
      "properties": {
        "visible": "true",
        "asBackground": false,
        "rotation": 0,
        "layer": "3",
        "textalign": "left",
        "scrollable": true,
        "locktext": false,
        "multiline": true,
        "autotab": false,
        "widemargins": false,
        "sharedtext": false,
        "dontwrap": false,
        "textsize": 16,
        "vScroll": 0,
        "hScroll": 0,
        "visibleLines": "1",
        "isIframe": false,
        "caretColor": "",
        "ignorefind": false,
        "styledtext": true,
        "visiblelines": "1",
        "isiframe": false,
        "showborder": true,
        "foregroundColor": "rgb(255, 255, 255)",
        "foregroundcolor": "255,255,255",
        "backgroundcolor": "rgba(0, 0, 0, 0)",
        "bordercolor": "rgb(0, 0, 0)",
        "borderwidth": "1",
        "textFont": "-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Arial, sans-serif",
        "fontFamily": "-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Arial, sans-serif",
        "textStyle": "normal",
        "fontweight": "400",
        "clickline": "7",
        "clicktext": "extensions",
        "clickLine": "7",
        "clickText": "extensions",
        "backgroundColor": "rgba(0, 0, 0, 0)",
        "borderColor": "rgb(0, 0, 0)",
        "borderWidth": "1px",
        "textAlign": "left",
        "fontWeight": "400"
      },
      "content": "\n",
      "formattingCommands": [
        "set the textsize of field \"output\" to 16",
        "set the textcolor of field \"output\" to rgb(255, 255, 255)",
        "set the textcolor of field \"output\" to 255,255,255",
        "set the textstyle of field \"output\" to normal"
      ]
    }
  ]
}