# 🤖 apps-disabled/ — reference apps that DON'T ship

Apps in this folder are complete and tested but deliberately **not imported by
`shell.js`**, so they aren't part of the default client. They exist to exercise
the *installable*-app paths:

- **Admin custom app**: paste a file's source into the Admin console's custom
  apps section (PUT `/api/admin/apps/{name}`) and it loads for every member
  with full app privileges — `ctx.panel`, `ctx.host` doorways, the lot.
  Import paths here are written as `"../apps.js"` on purpose: custom apps are
  served from `/static/apps-custom/`, the same depth as this folder, so a file
  works unchanged in both places.
- **Member app** (App Studio / bot-built): expect a sandboxed subset — member
  apps run in an opaque-origin iframe with no network, no keys, and (today) no
  command-panel plumbing, so `gif.js` specifically can NOT run there by design.

Current residents:

- `mood.js` — `/mood` opens a command panel of feeling buttons; a tap
  dispatches a `mood.set` event and dismisses. THE member-app panel example:
  written against the declarative `ctx.panel({ title, data })` +
  `panel(data, el, panelCtx)` form, so it runs identically pasted into App
  Studio (sandboxed) or compiled in. Sandbox-legal by construction — imports
  only from `../apps.js`, no fetch, no host doorways.
