Render hooks
Package: sumeru/core/engine/render
The render layer turns sys.view records and ORM data into HTML for the workspace shell.
Form views: Record forms in the workspace are rendered client-side by SWC (
sumeru/core/swc/src/views/FormView.ts,form-sheet.ts). Field widgets live insumeru/core/swc/src/widgets/with registration inregistry.ts. Goform_render.goand related files were removed; the CSS contract remains insumeru-views.css/sumeru-workspace.css.
Render package layout
| File | Role |
|---|---|
view_render.go | RenderView — selects list/kanban/pivot (form → SWC) |
~~form_render.go~~ | Removed — form UI is SWC |
list_render.go, kanban_render.go, pivot_render.go | List, kanban, and pivot views |
activity_chatter_render.go | Messages tab (mail) |
shell_render.go, menus.go, pinned_apps.go | Top bar, sidebar, pins |
render_types.go | PageData, hooks registration |
Form Edit / Save / Cancel is owned by SWC FormView.ts (sumeru/core/swc/src/views/FormView.ts), not a Go chrome file.
Shell hook
Inject HTML into the top bar area:
render.RegisterShellHook(func(ctx context.Context, vr *render.ViewRecordData, ro bool) template.HTML {
return template.HTML(`<div class="my-hook">...</div>`)
})
Example: sumeru/addons/sumeru_ai/init.go
Notebook hook
Replace a notebook page body for a given model and tab title:
render.RegisterNotebookHook("core.partner", "ai insights", func(ctx context.Context, vr *render.ViewRecordData, ro bool) template.HTML {
return template.HTML(`<p>Placeholder content</p>`)
})
Kanban group expander
Custom column loader for grouped kanban boards (SWC workspace). Package: sumeru/core/engine/swcmeta
swcmeta.RegisterKanbanGroupExpander("crm.lead", "stage_id", expandFn)
Expander functions return []swcmeta.KanbanColumn. Example: sumeru_addons/crm/services/hooks.go (pipeline and forecast kanbans).
View types
| Type | Status |
|---|---|
list | Implemented (canonical name; legacy tree mapped) |
form | Implemented (SWC client render) |
kanban | Implemented |
pivot | Implemented (v1 HTML aggregation) |
Styles
Core CSS: core/engine/assets/css/. Workspace pages add sumeru-workspace.css. Per-page sheets (home, apps, settings) register via PageData.ViewStylesheetURLs.