Simon Heimlicher
ea9675f6e7
images: Fix WebP quality and hint parameters being ignored
...
Fixes #14316
2025-12-29 16:47:43 +01:00
Bjørn Erik Pedersen
a8c5d0d00d
Fix "image: unknown format" error
...
Fixes #14295
2025-12-22 17:49:44 +01:00
Joe Mooring
5f46da6e2a
internal/warpc: Increase WebP memory limit to 256 MiB
...
Closes #14282
---------
Co-authored-by: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com >
2025-12-20 12:16:36 +01:00
Bjørn Erik Pedersen
65a76664e3
Add full filename to image processing error messages if possible
...
Fixes #14278
2025-12-18 17:46:26 +01:00
Bjørn Erik Pedersen
1b4514e020
Encode and Decode using the libwebp library via WASM with animation support
...
Fixes #10030
Fixes #8500
Fixes #12843
Fixes #8879
Fixes #12842
2025-12-16 19:29:16 +01:00
Bjørn Erik Pedersen
b9b304a126
testing: Port integration tests to new templates structure
...
As introduced in v0.146.0. Keep some legecy test to preserve backwards compatibility.
2025-11-27 12:00:15 +01:00
Bjørn Erik Pedersen
555dfa207a
Speedup and simplify page assembly for deeper content trees
...
This commit moves to a forked version go-radix (fork source has not had any updates in 3 years.), whith 2 notable changes:
* It's generic (using Go generics) and thus removes a lot of type conversions/assertions.
* It allows nodes to be replaced during walk, which allows to partition the tree for parallel processing without worrying about locking.
For this repo, this means:
* The assembly step now processes nested sections in parallel, which gives a speedup for deep content trees with a slight allocation penalty (see benchmarks below).
* Nodes that needs to be reinserted are inserted directly.
* Also, there are some drive-by fixes of some allocation issues, e.g. avoid wrapping mutexes in returned anonomous functions, a common source of hidden allocations.
```
│ master.bench │ perf-p3.bench │
│ sec/op │ sec/op vs base │
AssembleDeepSiteWithManySections/depth=1/sectionsPerLevel=1/pagesPerSection=50-10 6.958m ± 3% 7.015m ± 3% ~ (p=0.589 n=6)
AssembleDeepSiteWithManySections/depth=1/sectionsPerLevel=6/pagesPerSection=100-10 14.25m ± 1% 14.56m ± 8% ~ (p=0.394 n=6)
AssembleDeepSiteWithManySections/depth=1/sectionsPerLevel=6/pagesPerSection=500-10 48.07m ± 3% 49.23m ± 3% ~ (p=0.394 n=6)
AssembleDeepSiteWithManySections/depth=2/sectionsPerLevel=6/pagesPerSection=100-10 66.66m ± 4% 66.47m ± 6% ~ (p=0.485 n=6)
AssembleDeepSiteWithManySections/depth=4/sectionsPerLevel=2/pagesPerSection=100-10 59.57m ± 4% 50.73m ± 5% -14.85% (p=0.002 n=6)
geomean 28.54m 27.92m -2.18%
│ master.bench │ perf-p3.bench │
│ B/op │ B/op vs base │
AssembleDeepSiteWithManySections/depth=1/sectionsPerLevel=1/pagesPerSection=50-10 4.513Mi ± 0% 4.527Mi ± 0% +0.33% (p=0.002 n=6)
AssembleDeepSiteWithManySections/depth=1/sectionsPerLevel=6/pagesPerSection=100-10 15.35Mi ± 0% 15.49Mi ± 0% +0.94% (p=0.002 n=6)
AssembleDeepSiteWithManySections/depth=1/sectionsPerLevel=6/pagesPerSection=500-10 62.50Mi ± 0% 63.19Mi ± 0% +1.10% (p=0.002 n=6)
AssembleDeepSiteWithManySections/depth=2/sectionsPerLevel=6/pagesPerSection=100-10 86.78Mi ± 0% 87.73Mi ± 0% +1.09% (p=0.002 n=6)
AssembleDeepSiteWithManySections/depth=4/sectionsPerLevel=2/pagesPerSection=100-10 62.96Mi ± 0% 63.66Mi ± 0% +1.12% (p=0.002 n=6)
geomean 29.84Mi 30.11Mi +0.92%
│ master.bench │ perf-p3.bench │
│ allocs/op │ allocs/op vs base │
AssembleDeepSiteWithManySections/depth=1/sectionsPerLevel=1/pagesPerSection=50-10 60.44k ± 0% 60.97k ± 0% +0.87% (p=0.002 n=6)
AssembleDeepSiteWithManySections/depth=1/sectionsPerLevel=6/pagesPerSection=100-10 205.8k ± 0% 211.4k ± 0% +2.70% (p=0.002 n=6)
AssembleDeepSiteWithManySections/depth=1/sectionsPerLevel=6/pagesPerSection=500-10 831.1k ± 0% 858.3k ± 0% +3.27% (p=0.002 n=6)
AssembleDeepSiteWithManySections/depth=2/sectionsPerLevel=6/pagesPerSection=100-10 1.157M ± 0% 1.197M ± 0% +3.41% (p=0.002 n=6)
AssembleDeepSiteWithManySections/depth=4/sectionsPerLevel=2/pagesPerSection=100-10 839.9k ± 0% 867.8k ± 0% +3.31% (p=0.002 n=6)
geomean 398.5k 409.3k +2.71%
```
2025-11-25 11:37:05 +01:00
Bjørn Erik Pedersen
04650ce778
all: Run modernize -fix ./...
...
Closes #14107
2025-11-05 21:05:42 +01:00
Bjørn Erik Pedersen
264022a75a
Add roles and versions as new dimensions (in addition to language)
...
See the main issue #13776 for details.
Fixes #519
Fixes #13680
Fixes #13663
Fixes #13776
Fixes #13855
Fixes #13648
Fixes #13996
Fixes #14001
Fixes #14031
Fixes #13818
Fixes #13196
2025-11-05 20:39:25 +01:00
Bjørn Erik Pedersen
6334948515
Handle KaTeX warnings ( #13760 )
...
Co-authored-by: Joe Mooring <joe.mooring@veriphor.com >
Fixes #13735
2025-05-30 20:57:54 +02:00
Joe Mooring
013c8cfb25
tpl/transform: Expose the KaTeX strict option
...
Closes #13729
2025-05-23 19:21:38 +02:00
Bjørn Erik Pedersen
83cfdd78ca
Reimplement and simplify Hugo's template system
...
See #13541 for details.
Fixes #13545
Fixes #13515
Closes #7964
Closes #13365
Closes #12988
Closes #4891
2025-04-06 20:59:41 +02:00
Bjørn Erik Pedersen
521911a576
all: Run modernize -fix ./...
2025-02-26 11:44:25 +01:00
Joe Mooring
503dcf6252
internal/warpc: Enable KaTeX mhchem extension
2025-02-14 10:04:15 +01:00
Bjørn Erik Pedersen
d25f7ec172
js/esbuild: Add drop option
...
Fixes #13362
2025-02-13 13:26:46 +01:00
Bjørn Erik Pedersen
020253904f
js/esbuild: Don't try to resolve packages in /assets marked as external
...
Fixes #13183
2024-12-22 21:29:18 +01:00
Bjørn Erik Pedersen
5c80cb0d20
js/esbuild: Add missing es2024 target
2024-12-17 14:35:13 +01:00
Bjørn Erik Pedersen
a5e5be234c
Fix panic on server rebuilds when using both base templates and template.Defer
...
Fixes #12963
2024-12-16 18:03:04 +01:00
Bjørn Erik Pedersen
565c30eac9
js: Fix js.Batch for multihost setups
...
Note that this is an unreleased feature.
Fixes #13151
2024-12-16 11:52:18 +01:00
Bjørn Erik Pedersen
744b8566ec
Fix a rebuild on resource rename case
2024-12-16 08:33:10 +01:00
Bjørn Erik Pedersen
7de5317aef
js/esbuild: Add runners after scripts
2024-12-16 08:33:10 +01:00
Bjørn Erik Pedersen
4cbd4ef991
js/esbuild: Batch: Avoid nil Instances slice
...
Ranging over a nil slice in Go works great, but is a hassle onced passed to JS.
2024-12-16 08:33:10 +01:00
Bjørn Erik Pedersen
a834bb9f7e
js/esbuild: Build groups in order of their ID
...
We already do this for scripts e.g. inside a group.
This makes sure that group A's entry points gets added before B's, which can be an important property, see https://github.com/evanw/esbuild/issues/399#issuecomment-1458680887
2024-12-13 13:29:35 +01:00
Bjørn Erik Pedersen
ec1933f79d
js/esbuild: Add platform option
...
Closes #13136
2024-12-12 22:53:15 +01:00
Bjørn Erik Pedersen
e293e7ca6d
Add js.Batch
...
Fixes #12626
Closes #7499
Closes #9978
Closes #12879
Closes #13113
Fixes #13116
2024-12-12 21:43:17 +01:00
Bjørn Erik Pedersen
28f621d4a7
internal/warpc: Improve the JS plugin API
...
* Move the error handling into commons and make sure the error returned also returns message errors
* Make the protocol version an int so it can be more easily compared
2024-09-12 13:51:37 +02:00
Bjørn Erik Pedersen
2192cf7ec1
internal/warpc: Add license headers
2024-08-12 15:50:29 +02:00
Bjørn Erik Pedersen
e1e1baa1bd
Improve Katex error handling and fix handling of large expressions
...
* Make throwOnError=true the new default
* Handle JS errors as part of the RPC request/response flow
* Return a new Result type with .Err on it
This enables constructs on the form:
```handlebars
{{ with transform.ToMath "c = \\foo{a^2 + b^2}" }}
{{ with .Err }}
{{ warnf "error: %s" . }}
{{ else }}
{{ . }}
{{ end }}
{{ end }}
```
Note that the new `Result` type behaves like `template.HTML` (or a string if needed) when printed, but it will panic if in a error state.
Closes #12748
2024-08-12 13:50:18 +02:00
Bjørn Erik Pedersen
e42263529c
Add katex option ThrowOnError
...
As an internal option for now. Katex misbehaves in error situations without a value set.
2024-08-11 20:57:15 +02:00
Bjørn Erik Pedersen
891aa00fe1
Add some more KaTeX options
...
And fix the options handling.
Closes #12745
Fixes #12746
2024-08-11 19:03:27 +02:00
Bjørn Erik Pedersen
33c0938cd5
Add build time math rendering
...
While very useful on its own (and combined with the passthrough render hooks), this also serves as a proof of concept of using WASI (WebAssembly System Interface) modules in Hugo.
This will be marked _experimental_ in the documentation. Not because it will be removed or changed in a dramatic way, but we need to think a little more how to best set up/configure similar services, define where these WASM files gets stored, maybe we can allow user provided WASM files plugins via Hugo Modules mounts etc.
See these issues for more context:
* https://github.com/gohugoio/hugo/issues/12736
* https://github.com/gohugoio/hugo/issues/12737
See #11927
2024-08-09 17:18:37 +02:00