Releases: maragudk/gomponents
Release list
v1.3.0 - the "fix a lot of stuff and make it faster" release
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
v1.2.0 - `components.JoinAttrs` and performance improvements
This change adds a new components.JoinAttrs component, which is useful for joining attribute values (such as the often requested class attribute merging).
Also, contributors added some missing/new HTML elements and attributes. Thanks!
Also, some performance improvements, which should help with less memory allocation especially in newer Go versions.
What's Changed
- add Scope attribute helper by @alanpearce in #249
- Update README.md with example to clarify attribute and element name conflicts by @mhpenta in #252
- Upgrade to golangci/golangci-lint-action@v7 by @markuswustenberg in #254
- Bump golangci/golangci-lint-action from 7 to 8 by @dependabot[bot] in #256
- Add "search" HTML element by @theandrew168 in #257
- Add
components.JoinAttrsby @markuswustenberg in #262 - Bump actions/checkout from 4 to 5 by @dependabot[bot] in #263
- Test Go 1.25 in CI by @markuswustenberg in #264
- Reduce number of allocations for rendering elements and attributes by @markuswustenberg in #265
New Contributors
- @alanpearce made their first contribution in #249
- @mhpenta made their first contribution in #252
- @theandrew168 made their first contribution in #257
Full Changelog: v1.1.0...v1.2.0
v1.1.0 - Many small additions and improvements
Thanks to all the new contributors, you're awesome! 😎
What's Changed
- Add web component elements and slot attribute by @knpwrs in #235
- Add popover attributes by @knpwrs in #236
- Upgrade codecov Github action in CI workflow by @markuswustenberg in #231
- Add support for additional HTML attributes in HTML5 template by @wneessen in #238
- Add formxxx attributes (for element) by @slegrand45 in #241
- Add 'download' and 'referrerpolicy' attributes for anchor element by @slegrand45 in #242
- Improve performance of
MapandClasses.Renderby preallocating slices by @gabe565 in #243 - Test with Go 1.24 by @markuswustenberg in #244
- Bump codecov/codecov-action from 4 to 5 by @dependabot in #245
- Benchmark large document and run in CI by @markuswustenberg in #246
New Contributors
- @knpwrs made their first contribution in #235
- @wneessen made their first contribution in #238
- @slegrand45 made their first contribution in #241
- @gabe565 made their first contribution in #243
- @dependabot made their first contribution in #245
Full Changelog: v1.0.0...v1.1.0
v1.0.0 - the v1 🥳🎉 release
This marks release v1.0.0, which means I'm committed to no more breaking changes.
Congratulations, you now have a totally stable, dependency-free HTML component library for your Go project! 😁
What's Changed
- Move module to maragu.dev/gomponents namespace by @markuswustenberg in #215
- Fix example app to use maragu.dev/gomponents module path by @markuswustenberg in #216
- Fix attr panic test by @markuswustenberg in #222
- Upgrade CI workflow by @markuswustenberg in #223
- Add missing 'hidden' attribute by @glsubri in #224
- Add test for dot imports by @markuswustenberg in #225
- Release v1 by @markuswustenberg in #226
New Contributors
Full Changelog: v0.22.0...v1.0.0
v1.0.0-beta1 - The API is now stable!
This release marks the first beta of a 1.0.0 release. This means that I'm committed to this API going forward,
and breaking changes will only happen in a v2 that hopefully will never come.
The only major change from v0.22.0 is that the module is in a new namespace: maragu.dev/gomponents
Because of Go module dependency pinning and the Go module proxy, I don't think this will have much of an impact on people using the library, but I'm being cautious with a beta release and testing things extensively.
If you find any issues, please report them, either on the discussion attached to this release, or open a separate issue.
What's Changed
⚠️ Move module to maragu.dev/gomponents namespace by @markuswustenberg in #215- Fix example app to use maragu.dev/gomponents module path by @markuswustenberg in #216
Full Changelog: v0.22.0...v1.0.0-beta1
v0.22.0 - the "remove SVG package" release
The svg package is no more. Note that the html.SVG element still exists, and SVGs can easily be embedded in the HTML using g.Raw.
What's Changed
⚠️ Remove SVG package by @markuswustenberg in #214
Full Changelog: v0.21.0...v0.22.0
v0.21.0 - the "Groups are just slices" release
Group is now a type instead of a function, which is technically a breaking change, but is not expected to impact many codebases, if any at all. Special thanks to @deitrix for suggesting this design! 😎
What's Changed
- Drop support for Go 1.16 and Go 1.17 by @markuswustenberg in #203
- Add full example app by @markuswustenberg in #204
- Make
Groupa type by @markuswustenberg in #202 - Use go workspace in example app by @markuswustenberg in #211
Full Changelog: v0.20.5...v0.21.0
v0.20.5 - Make Groups renderable
What's Changed
- Update attributes.go - add draggable attribute by @sombriks in #185
- Test on Go 1.23 in CI by @yardenshoham in #193
- Add
citeattribute by @yardenshoham in #192 - Reduce code duplication by reusing the correct function in deprecated functions by @yardenshoham in #194
- Make Groups renderable by @markuswustenberg in #181
New Contributors
- @sombriks made their first contribution in #185
- @yardenshoham made their first contribution in #193
Full Changelog: v0.20.4...v0.20.5
v0.20.4 the "Iff, no really only if" release
This release adds the Iff function, which takes a callback function instead of the Node that regular If does, for those cases where you need to conditionally add components but they can fail for some reason (but usually nil pointer panics). Thanks, @JulienTant!
What's Changed
- Add dir by @amrojjeh in #176
- Add a
Iffhelper by @JulienTant in #172 - Add datetime attribute by @JulienTant in #177
- Adjust documentation on Iff by @markuswustenberg in #179
- Add LabelEl by @markuswustenberg in #180
- Add links to godoc by @markuswustenberg in #183
New Contributors
Full Changelog: v0.20.3...v0.20.4
v0.20.3 - the "opinionated node name collision choice" release
What's Changed
- Deprecate DataAttr, StyleAttr, TitleAttr, FormEl by @markuswustenberg in #174
This doesn't mean those elements and attributes have gone away, but that I've chosen one to be the "main" version without a suffix.
See the PR at #174 and the issue at #170 for a discussion and the chosen solution.
This is a non-breaking change, and the deprecated nodes will stay, probably forever. - Add script's
integrityandcrossoriginattributes by @JulienTant in #173 - Add LabelAttr and List attributes by @markuswustenberg in #175
New Contributors
- @JulienTant made their first contribution in #173
Full Changelog: v0.20.2...v0.20.3