Go Wasm Widget base
- Go 67.3%
- JavaScript 30.6%
- Python 2.1%
| cmd | ||
| docs | ||
| examples | ||
| internal | ||
| wasm | ||
| web/static | ||
| workflow | ||
| .gitignore | ||
| api.go | ||
| api_test.go | ||
| go.mod | ||
| go.sum | ||
| README.md | ||
| workflow.events.jsonl | ||
| workflow.schema.json | ||
| workflow.toml | ||
GoWW
GoWW means Go Wasm Widget.
This repo is the design base for turning GOTTH widgets into WASM-backed widgets without corrupting the existing widget-lab conventions.
The goal is not to bolt random browser code onto server-rendered widgets. The goal is to define a serious widget runtime boundary:
- Go server owns routing, state, persistence, auth boundaries, and fallback rendering.
- templ owns the HTML shell and progressive enhancement surface.
- WebAssembly owns interactive widget behavior when the widget genuinely needs a client-side engine.
- HTMX remains for coarse server mutations, not pointer-level chart interaction.
- SVG fallback remains available when WASM is unavailable or disabled.
- WASM widgets must fit inside existing dashboard, sub-dashboard, and widget shells.
- Browser backtests and browser paper tests provide the fast preflight loop before freezing, compiling, and promoting strategy code into an RPC plugin for long validation such as 60-day tests.
- Strategy testing must support equities and options as first-class instruments; options are not a fake ticker string bolted onto equity logic.
No widget implementation lives here yet. This repo starts with the base contract and architecture only.
Current Status
Documentation base only:
docs/PRD.mddocs/architecture.mddocs/implementation-spec.md
Layout Law
A GoWW widget is not a floating app. It is a widget mounted inside a dashboard-owned placement:
dashboard -> sub-dashboard -> widget shell -> GoWW mount
The dashboard owns placement. The sub-dashboard owns the widget slot. The widget runtime owns only the pixels inside its mount node.
A GoWW widget must resize to fit its container and must not change dashboard/sub-dashboard geometry.
Non-goals
- Replacing GOTTH with a frontend framework.
- Making every widget heavy by default.
- Removing server-rendered fallback behavior.
- Giving browser-side code broker, keyring, order, credential, or external-fetch authority.
- Treating browser backtests or paper tests as production approval instead of pre-plugin simulation evidence.
- Hiding state transitions inside a magic runtime.