| 1 | # π€ apps-disabled/ β reference apps that DON'T ship |
| 2 | |
| 3 | Apps in this folder are complete and tested but deliberately **not imported by |
| 4 | `shell.js`**, so they aren't part of the default client. They exist to exercise |
| 5 | the *installable*-app paths: |
| 6 | |
| 7 | - **Admin custom app**: paste a file's source into the Admin console's custom |
| 8 | apps section (PUT `/api/admin/apps/{name}`) and it loads for every member |
| 9 | with full app privileges β `ctx.panel`, `ctx.host` doorways, the lot. |
| 10 | Import paths here are written as `"../apps.js"` on purpose: custom apps are |
| 11 | served from `/static/apps-custom/`, the same depth as this folder, so a file |
| 12 | works unchanged in both places. |
| 13 | - **Member app** (App Studio / bot-built): expect a sandboxed subset β member |
| 14 | apps run in an opaque-origin iframe with no network, no keys, and (today) no |
| 15 | command-panel plumbing, so `gif.js` specifically can NOT run there by design. |
| 16 | |
| 17 | Current residents: |
| 18 | |
| 19 | - `mood.js` β `/mood` opens a command panel of feeling buttons; a tap |
| 20 | dispatches a `mood.set` event and dismisses. THE member-app panel example: |
| 21 | written against the declarative `ctx.panel({ title, data })` + |
| 22 | `panel(data, el, panelCtx)` form, so it runs identically pasted into App |
| 23 | Studio (sandboxed) or compiled in. Sandbox-legal by construction β imports |
| 24 | only from `../apps.js`, no fetch, no host doorways. |
| 25 | |