Documents the Configuration Manager and Libraries tab, removes Library Manager page, rewrites the plug-installation section of the v1 migration guide, tighten the Plugs manifest reference, and updates in the Edge changelog.
Drop the old plug-manager plug and the Space-Lua Library Manager, all superseded by the Libraries tab in the configuration manager.
Pass fallback values to config.get(...) in the Std widgets so TOC / linked mentions / linked tasks keep rendering on a fresh space where schema defaults haven't been indexed yet.
Add a Libraries tab to the configuration manager covering installed libraries, installable libraries (from repositories), repositories themselves, and detection of "rogue" plugs installed outside a library.
Rename the managed-block marker from "configuration-ui" to"configuration-manager" to match the plug name.
Move isMacLike and prettifyShortcut out of command_palette into plug-api/lib/shortcut so the configuration manager's shortcuts UI can render identical key notation.
Move `Plugs: Reload` from the plug-manager plug into the editor plug alongside the other built-in client commands, ahead of removing plug-manager entirely.
Track the source path on each Plug and rename the sandbox-factory "cacheKey" to "path" to reflect what it actually is. Fold the one-liner web_worker_sandbox helper into a WorkerSandbox.forPath factory and add system.loadPlug / system.unloadPlug syscalls so individual plugs can be (re)loaded by path — foundation for the upcoming configuration-manager libraries UI.
Split the Plug Development page into a quick-start with more subtopics: Architecture (loading, sandboxing, execution), Reference (manifests, hooks, syscalls), and Distribution and Testing.
Swap the Excalidraw architecture embed for a Mermaid diagram, and update the website Dockerfile to ship the Mermaid plug instead of Excalidraw.
The configuration-manager plug now creates and owns the managed CONFIG.md block on first save, so the server no longer needs to inject a template. Client also gracefully handles the absense of CONFIG.
Adds the `Configuration: Open` command (Ctrl/Cmd-,) (and `Configuration: Key Bindings` also) backed by a Preact UI compiled through the new plug build steps. Supports editing scalar, enum, password, and object fields against the registered JSON schemas, plus a shortcuts tab with a chord recorder that handles multi-stroke sequences and multiple alternate bindings per command.
Edits are written back into a managed `space-lua` block (created from template/CONFIG.md on first save).
Registers UI categories and moves default values from `config.set` blocks into schema `default` fields, so the configuration manager can drive everything directly from the schema. Only `actionButtons`, whose entries hold function bodies, stays in `config.set`.
Also adds a schema for `github.*` settings so the integration shows up in the configuration UI (later commit)
Cursor motions, selection, delete, undo/redo, completion, and the various navigator/palette openers are registered directly on the CommandHook from client code, eliminating the async plug round-trip that was racing Enter/Backspace handling in some cases (especially e2e tests).
CommandHook gains `registerCommand` and a shared `mergeCommand` helper so built-ins, plug commands.
Adds an optional `build:` section to plug manifests, running esbuild, sass, or copy transforms before asset bundling. Enables plugs to ship bundled TSX/SCSS UIs (used by the upcoming configuration-manager plug).
`config.define` now propagates schema `default` values, so features like smart quotes no longer need their own fallback constants.
Adds `defineCategory` / `getCategories` for the upcoming configuration manager UI.
Extracts almost all codemirror keyboard shortcuts into proper SB
commands so they can be rebound
Bonus: renders prettier versions of keyboard shortcuts on Mac
* Renamed 'lua' to 'eval'
* Renamed 'luascript' to 'script'
* Added 'describe' to describe LIQ and lists tags that have defined
schemas
Tests for all of this
The service worker's proxy fallback only matched the wrapped "Offline"
error from HttpSpacePrimitives, but raw fetch() throws browser-native
errors like
"Failed to fetch" (Chrome), "NetworkError..." (Firefox), or "Load
failed"
(Safari). This caused a hard 503 instead of falling through to serve
local
data. Additionally, the `fullSyncConfirmed` flag reset on every service
worker
restart, forcing unnecessary proxying even when synced data existed in
IndexedDB.
In this commit:
- Use `isNetworkError()` in proxy_router.ts to catch all browser network
errors
and fall through to local serving instead of returning 503
* Recover `fullSyncConfirmed` from persisted sync snapshot on SW
restart, so
previously synced spaces serve locally immediately
* Adds e2e tests trying to emulate this behavior and prevent regressions
Currently when an inintial index takes a long time, navigation will
basically be blocked until it's finished which isn't great. This
special-cases that scenario and doesn't block (at the cost of possibly
not showing up to date widgets on the target page).