CoreDeno sidecar, manifest loader, gRPC proto definitions, and
.core/view.yml discovery are not yet built. Codegen and WASM exist
but the Phase 4 vision is future work.
Co-Authored-By: Virgil <virgil@lethean.io>
Replace manual string-replace escaping with stdlib html.EscapeString.
Escape tag names and attribute keys in elNode and Layout rendering.
Improve Attr() to traverse wrapper nodes (If, Unless, Entitled).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add go-devops build system configuration for standardised
build, test, and release workflows across the Go ecosystem.
Co-Authored-By: Virgil <virgil@lethean.io>
The WASM main.go is gated behind //go:build js && wasm, leaving
register.go (//go:build !js) as the only file on native builds —
but it had no main(). Adds a stub that prints a usage hint.
Co-Authored-By: Virgil <virgil@lethean.io>
- Add EachSeq[T](iter.Seq[T], fn) for iterator-based template rendering
- Use slices.Collect(maps.Keys()) + slices.Sort for deterministic attr output
- Use strings.SplitSeq in codegen TagToClassName and path parsing
- Use range over int in layout and pipeline loops
- Refresh go.sum
Co-Authored-By: Gemini <noreply@google.com>
Co-Authored-By: Virgil <virgil@lethean.io>
Uses reusable workflows from core/go-devops for Go testing
(with race detector and coverage) and security scanning
(govulncheck, gitleaks, trivy).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Go 1.26 rejects non-semver version strings (like 'main') in go.mod.
Tags v0.0.1 now exist on all forge repos — workspace still overrides
for local development.
Co-Authored-By: Virgil <virgil@lethean.io>
Forge module versions now use main branch resolution via ~/Code/go.work
workspace. Removes local replace directives — the central go.work handles
all cross-repo resolution during development.
Co-Authored-By: Virgil <virgil@lethean.io>
Replace internal task tracking (TODO.md, FINDINGS.md) with structured
documentation in docs/. Trim CLAUDE.md to agent instructions only.
Co-Authored-By: Virgil <virgil@lethean.io>
Coverage status, priority work items, and file map for
guided Claude session on WASM size, benchmarks, and TS typedefs.
Co-Authored-By: Virgil <virgil@lethean.io>
Exposes gohtml.registerComponents(slotsJSON) to browser context.
Pure-Go buildComponentJS is testable without WASM; WASM glue uses
Function constructor for browser-side execution.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Generates Custom Element v1 classes with closed Shadow DOM from manifest
slot assignments. Includes tag validation, PascalCase conversion, and
bundle generation for full HLCRF layout.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
TDD plan for CoreDeno + Web Components: manifest types, ed25519
signing, object store, WC codegen, sidecar lifecycle, gRPC proto,
permission engine, marketplace index, and framework service wiring.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Approved architecture for the JavaScript runtime layer:
- CoreDeno (Deno sidecar) as module loader, I/O fortress, and dev toolchain
- go-html as Web Component factory (manifest → custom elements)
- .core/view.yml convention for declarative app definitions
- Signed application loading with ed25519 verification
- gRPC/Unix socket bridge between Deno and Go
- Gradual Angular migration to vanilla Web Components
- HLCRF slot composition with Shadow DOM isolation
Open sections (polyfills, object store, config generators, marketplace)
pending dAppServer heritage code review.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Escape variant name in Responsive.Render HTML attribute (XSS fix)
- Rewrite StripTags to single-pass O(n) space collapsing
- Document Raw() security contract in WASM entry point
- Add TestAttr_NonElement coverage
- Fix Makefile WASM target to rebuild on source changes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The 2.8MB raw binary exceeds the original 2MB target, but Go WASM has
a ~2MB runtime floor that cannot be reduced without tinygo. The gzip'd
transfer size is 823KB — well under 1MB.
Update the Makefile size check to measure both raw and gzip'd sizes:
- Gzip transfer limit: 1MB (hard fail — what users download)
- Raw binary limit: 3MB (warning — accounts for Go runtime floor)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sort attribute keys for deterministic HTML output (I-1).
Clone nested layouts before mutating path in Render (I-3),
preventing data races when the same tree is rendered concurrently.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>