Virgil
11f18a24d2
fix(tests): complete ax naming compliance
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-27 04:55:58 +00:00
Virgil
df5035c3c4
chore: verification pass
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-27 03:16:36 +00:00
Virgil
3616ad3a76
chore: polish ax v0.8.0 conventions
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-26 18:12:06 +00:00
Virgil
b8d06460d6
refactor(core): upgrade to v0.8.0-alpha.1
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-26 15:24:16 +00:00
Virgil
0e976b3a87
fix(wasm): keep server i18n out of js builds
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-26 11:31:31 +00:00
Virgil
8a3f28aff3
fix(conventions): isolate banned imports and clarify tests
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-26 11:15:24 +00:00
b3f622988d
Merge pull request '[agent/claude] Update go.mod require lines from forge.lthn.ai to dappco.re ...' ( #3 ) from agent/update-go-mod-require-lines-from-forge-l into main
Security Scan / security (push) Successful in 9s
Test / test (push) Failing after 22s
2026-03-22 01:28:48 +00:00
Snider
c525437ed6
refactor(module): migrate module path from forge.lthn.ai to dappco.re
...
Security Scan / security (pull_request) Successful in 9s
Test / test (pull_request) Failing after 20s
Update module path from forge.lthn.ai/core/go-html to dappco.re/go/core/html.
Migrate all .go import paths, update dependency versions (core v0.5.0,
log v0.1.0, io v0.2.0), and add replace directives for local development.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-22 01:28:30 +00:00
Snider
666e3a68c6
Merge remote-tracking branch 'github/dev'
Security Scan / security (push) Successful in 8s
Test / test (push) Successful in 1m40s
2026-03-22 00:57:15 +00:00
Snider
913bbb555a
Merge remote-tracking branch 'origin/main'
2026-03-22 00:57:15 +00:00
Snider
63714ec9a1
chore: sync dependencies for v0.1.8
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-17 17:55:33 +00:00
Snider
d8525255e0
chore: sync dependencies for v0.1.7
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-17 17:50:17 +00:00
Snider
0607c5b517
ci: add Core ecosystem CI workflow with CodeRabbit auto-fix
...
Uses dAppCore/build actions for test, auto-fix on CodeRabbit changes,
and auto-merge on CodeRabbit approval.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-17 14:05:43 +00:00
ba26232b27
Merge pull request '[agent/claude:opus] DX audit and fix. 1) Review CLAUDE.md — update any outdate...' ( #1 ) from agent/dx-audit-and-fix--1--review-claude-md into main
Security Scan / security (push) Successful in 11s
Test / test (push) Successful in 48s
2026-03-17 08:21:27 +00:00
Snider
e532c219b9
fix(dx): update CLAUDE.md size gate, sync Makefile limit, add coverage tests
...
Security Scan / security (pull_request) Successful in 7s
Test / test (pull_request) Successful in 38s
- CLAUDE.md: correct WASM raw size gate from 3 MB to 3.5 MB (matches size_test.go)
- CLAUDE.md: document error handling (log.E) and file I/O (coreio.Local) conventions
- Makefile: sync WASM_RAW_LIMIT to 3670016 (3.5 MB) to match size_test.go
- Tests: add coverage for NewContextWithService, Attr through wrapper nodes,
Unless(true), and Text.Render with i18n service — core package 95.8% → 99.4%
No fmt.Errorf or os.ReadFile/os.WriteFile violations found.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-17 08:21:15 +00:00
Snider
44b3f77806
chore: sync dependencies for v0.1.6
...
Security Scan / security (push) Successful in 12s
Test / test (push) Successful in 1m43s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-16 22:20:53 +00:00
Snider
6e59bf8bf8
refactor(conventions): replace os.ReadFile with coreio.Local, fmt.Errorf with log.E
...
Security Scan / security (push) Successful in 7s
Test / test (push) Successful in 1m33s
Replace os.ReadFile in cmd/wasm/size_test.go with coreio.Local.Read().
Replace fmt.Errorf/errors.New with log.E() in codegen, cmd/wasm/register,
and cmd/codegen. Add forge.lthn.ai/core/go-io as a dependency.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-16 19:17:34 +00:00
Snider
2d16ce9d69
fix(conventions): alias stdlib io, add interface checks, use go-log
...
Security Scan / security (push) Successful in 7s
Test / test (push) Successful in 1m34s
- Alias stdlib `io` as `goio` in cmd/codegen/main.go to follow project conventions
- Add compile-time Node interface checks for all node types in node.go
and Layout in layout.go
- Replace fmt.Fprintf stderr logging with go-log in cmd/codegen/main.go
- Replace fmt.Println with go-log in cmd/wasm/register.go
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-15 16:40:39 +00:00
Snider
176ef74dfd
chore: sync go.mod dependencies
...
Security Scan / security (push) Successful in 11s
Test / test (push) Successful in 1m58s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-15 15:36:04 +00:00
Snider
050f8d9967
chore: add .core/ and .idea/ to .gitignore
Security Scan / security (push) Successful in 9s
Test / test (push) Successful in 50s
2026-03-15 10:17:49 +00:00
Snider
253cc75cf6
docs: remove completed Phase 4 plan files
...
Security Scan / security (push) Successful in 7s
Test / test (push) Successful in 42s
CoreDeno sidecar fully implemented in core/ts.
Web Component codegen and WASM registration in go-html.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-14 08:25:06 +00:00
Snider
782edd0583
docs: mark Phase 4 CoreDeno/WebComponents plans as not yet implemented
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
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>
2026-03-14 08:22:16 +00:00
Snider
27c0d1fd09
docs: add CLAUDE.md project instructions
...
Security Scan / security (push) Successful in 11s
Test / test (push) Successful in 38s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-13 13:38:01 +00:00
Snider
5bbacc54fe
docs: add human-friendly documentation
...
Security Scan / security (push) Successful in 7s
Test / test (push) Successful in 42s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 13:02:40 +00:00
Snider
473fda5894
security: use html.EscapeString for XSS protection in rendering
...
Security Scan / security (push) Successful in 9s
Test / test (push) Successful in 46s
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>
2026-03-09 08:29:54 +00:00
Snider
77dd329b01
chore: add .core/ build and release configs
...
Security Scan / security (push) Successful in 7s
Test / test (push) Successful in 37s
Add go-devops build system configuration for standardised
build, test, and release workflows across the Go ecosystem.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-06 18:52:36 +00:00
Snider
11561aaaa0
chore: remove boilerplate Taskfile
...
Security Scan / security (push) Successful in 6s
Test / test (push) Successful in 1m33s
All tasks (test, build, lint, fmt, vet, cov) are handled natively
by `core go` commands. Taskfile was redundant wrapper.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-06 14:45:49 +00:00
Snider
ffb3b9f4cd
chore: bump forge.lthn.ai dep versions to latest tags
...
Security Scan / security (push) Successful in 8s
Test / test (push) Successful in 2m43s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-26 05:34:23 +00:00
Snider
3ea5041375
fix: bump WASM raw size limit to 3.5MB for Go 1.26 runtime growth
...
Security Scan / security (push) Successful in 15s
Test / test (push) Successful in 2m47s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-23 07:59:46 +00:00
Snider
95d83f52b3
chore: bump forge.lthn.ai dep versions to latest tags
...
Security Scan / security (push) Successful in 15s
Test / test (push) Failing after 2m13s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-23 06:49:42 +00:00
Snider
13669defcd
chore: add Go repo norms (badges, contributing, lint, taskfile, editorconfig)
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-23 06:45:38 +00:00
Snider
2ef2871b1e
chore: refresh go.sum after upstream tag updates
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-23 06:35:19 +00:00
Snider
29bd63d751
fix: add stub main() for non-WASM builds in cmd/wasm
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
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>
2026-02-23 06:31:14 +00:00
Snider
78d5b45b0c
feat: modernise to Go 1.26 — iterators, slices/maps, EachSeq
...
Security Scan / security (push) Successful in 10s
Test / test (push) Failing after 36s
- 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>
2026-02-23 05:11:22 +00:00
Claude
70980d7105
ci: add Forgejo Actions test and security scan workflows
...
Security Scan / security (push) Successful in 9s
Test / test (push) Failing after 23s
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>
2026-02-23 03:28:02 +00:00
Claude
7598b0e568
chore: refresh go.sum after upstream tag updates
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 23:36:25 +00:00
Claude
b986c6925d
chore: sync workspace dependency versions
...
Run go work sync to align dependency versions across workspace.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 21:41:54 +00:00
Snider
a905850b0b
refactor: apply go fix modernizers for Go 1.26
...
Automated fixes: interface{} → any, range-over-int, t.Context(),
wg.Go(), strings.SplitSeq, strings.Builder, slices.Contains,
maps helpers, min/max builtins.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-22 21:00:16 +00:00
Snider
f6e57bd8d4
chore: go mod tidy for 1.26.0
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-22 20:35:59 +00:00
Snider
97990c0ed3
chore: bump go directive to 1.26.0
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-22 20:33:48 +00:00
Snider
1078cf136b
chore: pin forge deps to v0.0.1 tags for Go 1.26 compat
...
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>
2026-02-22 20:15:05 +00:00
Snider
a8774cf0ae
chore: use workspace-resolved versions, drop replace directives
...
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>
2026-02-22 19:49:36 +00:00
Snider
a122b2a2ad
docs: add README with quick start and docs links
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-20 15:11:20 +00:00
Snider
53edd80476
docs: graduate TODO/FINDINGS into production documentation
...
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>
2026-02-20 15:01:55 +00:00
Snider
aae5d21ad4
test(wasm): add binary size gate test
...
TestWASMBinarySize builds WASM with -ldflags="-s -w", gzips the
binary, and asserts < 1MB gzip (842KB actual) and < 3MB raw (2.90MB
actual). Skipped in -short mode. Matches Makefile WASM_GZ_LIMIT.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-20 08:42:58 +00:00
Snider
4c657377c4
fix(wasm): reduce binary from 1.56MB to 830KB gzip
...
Move heavyweight imports out of WASM build via //go:build !js tags:
- register.go: encoding/json + text/template (codegen)
- pipeline.go: go-i18n/reversal (grammar imprint)
- layout.go: replace fmt.Sprintf with string concat
Add cmd/codegen/ CLI as build-time replacement for in-browser
registerComponents(). Reads slot JSON from stdin, writes WC bundle
JS to stdout.
Result: 2.90MB raw / 830KB gzip (was 6.04MB / 1.56MB).
Makefile gate passes (limit 1MB gzip).
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-20 08:29:54 +00:00
Snider
6abda8bfa8
docs: detailed WASM binary size reduction spec
...
5-step plan: remove registerComponents() from WASM (saves encoding/json
+ text/template), guard pipeline.go with build tag (saves go-i18n/reversal),
minimise fmt usage, build-time codegen CLI, size verification tests.
Target: 1.58MB → <1MB gzip.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-20 08:23:58 +00:00
Snider
7efd2ab93a
test: add benchmarks, Unicode edge cases, and stress tests
...
Performance benchmarks across all major APIs:
- BenchmarkRender (depth 1/3/5/7 tree, full page)
- BenchmarkImprint (small/large pipeline)
- BenchmarkCompareVariants (2/3 variants)
- BenchmarkLayout (C, HCF, HLCRF, nested, many children)
- BenchmarkEach (10/100/1000 items)
- BenchmarkResponsive, BenchmarkStripTags
- Codegen: GenerateClass, TagToClassName, GenerateBundle, GenerateRegistration
Edge case tests:
- Unicode: emoji, RTL (Arabic/Hebrew), zero-width chars, mixed scripts
- Deep nesting: 10/20 levels, mixed slot types
- Large Each iterations: 1000/5000 items, nested Each
- Layout variant validation: invalid chars, lowercase, duplicates, empty
- Nil context handling for Render, Imprint, CompareVariants
- Switch no-match, Entitled nil context, empty tag El
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-20 05:33:15 +00:00
Claude
04067438d9
fix: add transitive replace for go-inference
...
go-i18n imports go-inference, needs local replace.
Note: go-i18n has API mismatch (Classify method) — root package fails to build.
Codegen and WASM sub-packages pass.
Co-Authored-By: Charon <developers@lethean.io>
2026-02-20 00:49:10 +00:00
Snider
ab7ab92920
docs: add CLAUDE.md, TODO.md, and FINDINGS.md for expert session
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-19 17:42:08 +00:00