So many changes! Thank you to all contributors, you're great! 😎
Here are the highlights:
- @Hendrikto found some nice performance improvements by introducing an internal
rawtype, that you'll get automatically by just keeping on using theText/TextfandRaw/Rawffunctions. He also fixed the benchmarks, which turned out to actually measure the wrong thing because of behind-the-scenes compiler optimizations in the benchmark code itself. Thanks, @Hendrikto! - I've added a new experimental
x/slicespackage, as a way of letting people have theMap/Filter/Reduceworkflow that's been requested so many times over the years. Note that thexpackage is for experimental stuff, so it doesn't have the same compatibility guarantees as the rest of the gomponents module.
There are a lot of smaller additions, fixes, and performance improvements. See the full list below.
Again, thank you to all contributors!
PS: You'll notice my coding agent @maragubot as a contributor. Rest assured, I still review and merge all changes to gomponents manually.
What's Changed
- Bump actions/setup-go from 5 to 6 by @dependabot[bot] in #267
- Add Claude Code GitHub Workflow by @markuswustenberg in #269
- Add Open boolean attribute for HTML details element by @markuswustenberg in #270
- Bump actions/checkout from 4 to 5 by @dependabot[bot] in #271
- Enhance Claude with global CLAUDE.md by @markuswustenberg in #274
- Add the output HTML element by @rynhndrcksn in #279
- Bump actions/checkout from 5 to 6 by @dependabot[bot] in #281
- Add the
spellcheckattribute by @maragubot in #283 - Bump golangci/golangci-lint-action from 8 to 9 by @dependabot[bot] in #280
- Add
x/slicespackage withMap,Filter, andReduceby @maragubot in #284 - Improve documentation for
JoinAttrsby @maragubot in #285 - Fix JoinAttrs double-escaping HTML entities by @maragubot in #288
- Change
components.HTML5Propsfields from[]g.Nodetog.Groupby @maragubot in #290 - Add compile-time checks for interface satisfaction by @gaiaz-iusipov in #291
- Add Go 1.26 to CI by @maragubot in #294
- Add persist-credentials: false to all checkout steps by @maragubot in #295
- Mark deprecated functions for automatic replacement by @Hendrikto in #297
- Use latest stable Go for linting by @maragubot in #298
- Fix benchmarks by using
testing.B.Loopin Go 1.24+ by @Hendrikto in #296 - Fix
JoinAttrsfor empty-valued, whitespace-only, and boolean attributes by @maragubot in #303 - Add fuzz test for
JoinAttrsby @maragubot in #301 - Replace synthetic benchmark with realistic full-page benchmark by @maragubot in #304
- Reduce allocations for Attr by splitting into non-variadic helpers by @maragubot in #305
- Replace isVoidElement map with switch statement by @maragubot in #306
- Add implementation diary for benchmark optimization by @maragubot in #308
- Bump codecov/codecov-action from 5 to 6 by @dependabot[bot] in #309
- Fix inconsistent import styles in README examples by @maragubot in #310
- Optimize Raw[f] design by @Hendrikto in #307
- Add implementation for sizes attribute by @kwiat1990 in #316
- Optimize Text[f] by @Hendrikto in #311
- Update docs to note deprecated element/attribute aliases by @maragubot in #318
New Contributors
- @rynhndrcksn made their first contribution in #279
- @maragubot made their first contribution in #283
- @gaiaz-iusipov made their first contribution in #291
- @Hendrikto made their first contribution in #297
- @kwiat1990 made their first contribution in #316
Full Changelog: v1.2.0...v1.3.0