fabro/apps/fabro-web
Bryan Helmkamp a163c16cda
feat: make local a reserved, in-memory environment
`local` no longer makes sense as a configurable environment — the local
sandbox provider ignores image/resources/network/lifecycle/volumes. Stop
seeding it as an editable TOML file and stop offering it as a creatable
provider in the UI form.

Instead the server synthesizes a reserved, in-memory `local` environment
only when `server.sandbox.providers.local.enabled`. It is never persisted
and cannot be created, replaced, or deleted (409). Provider-enablement is
already enforced at run create/preflight/start, so the synthetic `local`
just needs to exist in the store catalog when enabled.

- fabro-environment: drop `local` from disk seeds; thread `local_enabled`
  into load_or_seed and inject a synthetic `local`; ignore any stale
  `local.toml`; reject create/replace/delete of `local` with a new
  Reserved error. seeded_catalog_layer keeps `local` for CLI validation.
- fabro-server: pass local.enabled into the store; map Reserved -> 409.
- web: form provider dropdown excludes local; the `local` row is
  read-only (no Edit/Delete) with a reserved tag.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-31 11:24:14 -04:00
..
app feat: make local a reserved, in-memory environment 2026-05-31 11:24:14 -04:00
public/images Add sandbox providers settings page 2026-05-24 17:47:15 -04:00
scripts fix(web): raise timeout for build tests that run a real vite build (#310) 2026-05-18 12:52:18 -04:00
.dockerignore Rename Arc to Fabro in TypeScript/JavaScript 2026-03-12 11:13:18 -04:00
.gitignore Rename Arc to Fabro in TypeScript/JavaScript 2026-03-12 11:13:18 -04:00
index.template.html chore(web): namespace static images under /images and skip in HTTP logs 2026-04-30 08:57:14 -04:00
package.json Replace DIY overlay primitives with Radix UI + Sonner (#424) 2026-05-26 23:03:06 -04:00
react-doctor.config.json refactor(web): improve React Doctor score (#405) 2026-05-25 22:41:37 -04:00
tsconfig.json Fix login route collision after SPA cutover 2026-04-01 21:55:30 -07:00