Virgil
b6120a1929
feat(html): add aria-haspopup helper
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 23:01:34 +00:00
Virgil
cb7d45f21b
feat(html): add aria-keyshortcuts helper
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 22:58:53 +00:00
Virgil
aa6e064247
feat(html): add aria-readonly helper
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 20:29:42 +00:00
Virgil
a184549013
fix(html): ignore whitespace-only helper values
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 20:25:15 +00:00
Virgil
8900d25cfe
fix(html): isolate wrapper attrs from shared nodes
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 20:21:24 +00:00
Virgil
c6bca226a9
feat(html): add id and for helpers
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 20:04:27 +00:00
Virgil
1134683e1b
feat(html): add aria owns helper
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 20:01:23 +00:00
Virgil
fd1f7cea74
feat(html): add hidden helper
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 19:51:26 +00:00
Virgil
cafa24163d
feat(html): add aria checked helper
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 19:41:09 +00:00
Virgil
94eb419914
feat(html): add aria invalid and required helpers
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 19:38:02 +00:00
Virgil
3c64352a3b
fix(html): trim helper tokens
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 19:31:54 +00:00
Virgil
cb75de9bf3
feat(html): isolate text translation fallback
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 19:22:48 +00:00
Virgil
2ce8876cb5
fix(html): ignore empty helper tokens
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Drop empty strings from join-based accessibility helpers and class names so generated attributes stay clean.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 18:59:24 +00:00
Virgil
1958cc79b1
docs(html): align public API docs with AX principles
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 18:53:50 +00:00
Virgil
7b95c1fc74
feat(html): add aria-description helper
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 18:51:28 +00:00
Virgil
3d841efa12
feat(html): add aria-live helper
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 18:46:36 +00:00
Virgil
667965da19
feat(html): add aria-busy helper
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 18:44:10 +00:00
Virgil
30f64a3d59
feat(html): add aria state helpers
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 18:34:00 +00:00
Virgil
a7433675ba
feat(html): add AltText helper alias
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 18:30:49 +00:00
Virgil
7091a5f341
feat(html): add aria-disabled helper
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 18:28:49 +00:00
Virgil
ec18122233
feat(html): add aria-current helper
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 18:25:09 +00:00
Virgil
a5e02f6472
feat(html): add class helper
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 18:21:16 +00:00
Virgil
a925142e4e
feat(html): add aria-controls helper
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 18:18:30 +00:00
Virgil
ec2ccc7653
feat(html): add aria-expanded helper
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 18:15:48 +00:00
Virgil
ae286563fd
fix(html): normalise nil render context
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 18:05:06 +00:00
Virgil
aa282056fa
feat(html): preserve nested block paths through elements
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 17:58:21 +00:00
Virgil
d0e7f60dab
feat(html): add dir helper
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Add a Dir convenience helper for the dir attribute so RTL/text-direction markup can be applied without raw Attr calls.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 17:42:50 +00:00
Virgil
4d767fa0bd
fix(html): omit aria-hidden when visible
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 17:39:54 +00:00
Virgil
f8558a52ef
feat(html): add lang helper
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 17:28:27 +00:00
Virgil
c84bd21cf4
docs: align html API comments with AX guidance
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 17:23:37 +00:00
Virgil
a86c8ef770
feat(html): recurse attrs through iterator wrappers
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 17:20:17 +00:00
Virgil
264ecc3f84
feat(html): add aria-labelledby helper
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 17:16:39 +00:00
Virgil
25d809fc88
feat(html): add aria-describedby helper
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 17:11:51 +00:00
Virgil
f7843ae180
feat(html): add autofocus helper
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 17:09:10 +00:00
Virgil
7814f669fd
feat(html): add role accessibility helper
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 17:03:23 +00:00
Virgil
46a8b7e904
fix(html): harden nil rendering paths
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 17:00:58 +00:00
Virgil
8dfce51659
fix(html): preserve each path prefixes
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 16:58:12 +00:00
Virgil
ba384aeb12
fix: add nil-safe rendering paths
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 16:55:48 +00:00
Virgil
8bf49c8935
fix(html): preserve nested layout paths through wrappers
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 16:39:34 +00:00
Virgil
149d31b140
feat(html): add tabindex helper
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 16:31:22 +00:00
Virgil
48884f7974
feat(html): add aria-hidden helper
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 16:29:33 +00:00
Virgil
739f1f52fc
feat(html): add accessibility helpers
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 16:26:46 +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
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
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
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
f49ddbf374
feat: add Attr() helper for setting element attributes
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 00:08:17 +00:00
Claude
40da0d8b1d
fix: deterministic attributes and thread-safe nested layouts
...
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>
2026-02-16 23:53:31 +00:00
Claude
c7240943d7
feat: add conditional, entitlement, switch, and each nodes
...
Implements If, Unless, Entitled, Switch, and Each (generic) control flow
nodes. Entitled uses deny-by-default when no entitlement function is set,
rendering absent content rather than hidden content. Each uses Go generics
for type-safe iteration.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 23:36:54 +00:00
Claude
3e76e72cb7
feat: add Text node with go-i18n grammar pipeline
...
Introduces textNode that renders through go-i18n's T() function with
automatic HTML escaping for safe-by-default output. Adds escapeHTML
utility, NewContextWithService for explicit service binding, and
Entitlements field on Context for upcoming conditional rendering.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 23:35:50 +00:00