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.
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.
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
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