Pre-alpha. No tagged release and no upgrade path between versions. Use for evaluation and development only, not production.
Core DevPre-alpha

Sumeru Web Client (SWC)

SWC is Sumeru’s browser workspace client: a TypeScript 7 component runtime that renders workspace views from JSON arch and records.

Folder layout

text
core/swc/src/
├── main.ts                 # bootstrap, register views/widgets, SwcApp.start
├── runtime/                # component kernel
│   ├── component.ts        # SwcComponent, callSetup, patch, destroy
│   ├── component-host.ts   # nested components + slots
│   ├── app.ts              # SwcApp, mount, ErrorBoundary
│   ├── hooks.ts            # useState, useService, useTemplateRef, mount effects
│   ├── scheduler.ts        # rAF scheduleRender / flushScheduledRenders
│   ├── lifecycle.ts        # onWillStart, onWillPatch, onPatched (per instance)
│   ├── portals.ts          # data-portal move/restore
│   └── patch/
│       └── keyed.ts        # keyed sibling reconciliation
├── template/
│   ├── html.ts             # html`` tagged literals (render + patch)
│   ├── helpers.ts          # forEach, when
│   └── sum/                # .sum.xml compiler (parser + codegen)
├── model/                  # SwcRecord, modifiers
├── views/                  # list, form, kanban, graph, pivot, calendar, gantt, map, cohort, chatter
├── widgets/                # field registry + FieldHost
├── shell/                  # layout, nav, launcher
├── devtools/               # SWC Vision
├── i18n/
├── services/               # rpc, action, router, bus, dialog, …
└── types/

Tests mirror this layout under core/swc/tests/{runtime,template,model,views,devtools}/.

Architecture

LayerLocationRole
SWC bundlecore/swc/ → core/engine/assets/swc/swc.jsComponents, views, services
Go shellcore/engine/templates/base.htmlLogin/setup stay server HTML; workspace mounts #swc-workspace
Workspace JSONGET /web/swc/workspaceView arch, records, toolbar metadata
Data planePOST /api/rpcCRUD, read_group, call, onchange
Serializercore/engine/swcmeta/Parse sys.view arch → JSON (ACL redaction)

TypeScript 7 toolchain

Direct devDependencies in core/swc/package.json track latest stable releases (pinned in package-lock.json):

  • Compiler: typescript@^7
  • Bundler: esbuild@^0.28 (.sum.xml plugin loads TypeScript codegen)
  • Tests: vitest@^4 with jsdom@^30 (environment: "jsdom")
  • Build: make swc (esbuild IIFE bundle)
  • Typecheck: make swc-check (tsc --noEmit)
  • Tests: make swc-test (Vitest)

Bootstrap

Authenticated workspace pages inject:

javascript
javascript
window.__SWC_BOOTSTRAP__ = { csrfToken, rpcUrl, user, menus, apps, workspace, … };

SWC reads bootstrap on DOMContentLoaded, mounts ShellLayout + WorkspaceRouter, and initializes shell chrome (sidebar, app launcher, view-tab SPA navigation).

Shell features

FeatureModuleBehaviour
Global app launchershell/app-launcher.tsCmd/Ctrl+K fuzzy search across menus and apps
SPA routerservices/router.ts, views/workspace/WorkspaceRouter.tsURL-driven view switching without full page reload
View tab syncshell/view-tab-sync.tsBreadcrumb Kanban/List/Form tabs stay active after record open
List/kanban searchviews/list/ListView.ts, views/kanban/KanbanView.tsToolbar search via ?q= query param
Addon loaderaddon/loader.tsLoads window.__SWC_ADDON_ENTRIES__ before bootstrap

Runtime capabilities

ConceptSWC module
Componentruntime/component.ts — callSetup(), scheduleRender, template().patch()
Local stateuseState in runtime/hooks.ts (batched with runtime/scheduler.ts)
ServicesuseService + services/*
LifecyclePer-instance onWillStart / onWillPatch / onPatched in runtime/lifecycle.ts
Registryruntime/registry.ts — fields, views, services, main_components
Templatestemplate/html.ts (render + incremental patch), optional template/sum/
Keyed liststemplate/helpers.ts forEach + runtime/patch/keyed.ts
Refs / slots / portalsuseTemplateRef, ComponentHost slots, runtime/portals.ts
Relational modelmodel/record.ts
DevToolsdevtools/bridge.ts — window.__SWC_DEVTOOLS__
Viewsviews/list, views/form, views/kanban, views/gantt, views/map, views/cohort, …

SWC Vision

Enable with ?debug=1 on workspace URLs. Exposes component tree via window.__SWC_DEVTOOLS__. Optional browser extension in core/swc/devtools-extension/.

Cutover

Legacy assets/js/* and HTML workspace render (*_render.go) were removed in the SWC release. Workspace UI is SWC-only; Home/Apps/Settings support SPA shell routes via ?shell=home|apps|settings.

Addon extension

Manifest key "swc_entry": "static/swc/main.js" registers widgets/views on registry (see SWC widgets and Build a module with SWC).

Developer docs

TopicPage
End-to-end moduleBuild a module with SWC
XML → JSON pipelineArch JSON pipeline
Field attributesField attributes
Widget catalogSWC widget catalog
View typesView types
Sum templateSum template
DevtoolsSWC Vision devtools