]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
Squashed 'docs/' changes from 71f739460..1ad3c75ad
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 19 Dec 2025 09:04:19 +0000 (10:04 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 19 Dec 2025 09:04:19 +0000 (10:04 +0100)
1ad3c75ad theme: Run ncu -u to update dependencies (#3311)
2942d3753 content: Update version refs
e298fdfaf content: Remove ref to old version
c1fc876ea content: Improve taxonomic weight example
d706a013d content: Document additional functions
5751c37cc content: Standardize string function signatures
d65e6fae7 misc: Add data/docs.yaml to ignorePaths in cspell config
ba1f98a32 content: Improve collections.First/Last string examples
d7b5a2efd content: Improve collections.First/Last examples
e94e49db2 content: Add Smart Hugo to editor plugins
af204597a content: Clarify config description
9d1cb33cd content: Fix typo
dded23962 content: Clarify note on rare use case for PageRef method
8af9e3be4 content: Update the Homebrew installation description
be56390b3 content: Clarify command description
fa228e9f0 content: Clarify AsciiDoc extensions setting description
3a23a4af2 docs: Add best practices for manual summary marker placement
050d7c75e misc: Fix cspell configuration
74642b18d content: Miscellaneous edits
75a2c8425 content: Add missing reference definitions
6303f27e1 content: Improve description of the SITE.Home method
4dfbd647f Revert the minimal analytics changes (#3265)
c369e534d theme: Move tracking to turbo:load
88b451022 theme: Move tracking to turbo:render
7040dc5ee Move to minimalanalytics for GA tracking
4e8a523fb content: Update KaTeX link attributes to v0.16.25 (phase 2)
21046b942 content: Update KaTeX link attributes to v0.16.25 (phase 1)
b8df9d941 theme: Use Path for the glossary link destination
acd6c2954 theme: Use page Path when generating Markdown links
543f78340 content: Fix formatting
aef89d192 content: Correct page collection quick-reference data
08645236a content: Use RSS output format in shortcode lookup example
58654c106 content: Fix archetype lookup order
9f79bacc4 content: Describe valid uses of the nil keyword
41f139d14 theme: Remove the root view transition
6ab407bb9 content: Improve links on lang.Translate page
91e724065 content: Add missing fragments to links in the module mounts description
2f6b4a58c content: Clarify ByCount sort order
8594590b2 Update netlify.toml
811574060 content: Update version references
a12bcf7dd content: Update version references
23ca199ed Update netlify.toml
5d3da2351 content: Update version references
1617ee75b misc: Update Netlify config to build with v0.152.0
6467bda93 content: Remove outdated new-in badges
4b3ef4bd5 content: Improve description of default mount behavior
5a861f500 content: Revise partials.IncludeCached description and signature
2ad9d705a content: Correct the partials.IncludeCached signature
9f611b879 Update netlify.toml
ca21f5fbd content: Add warning about automatic summaries
2065fadde content: Update commit message guidelines
a0784f261 content: Remove outdated new-in badges
ce5a249f2 content: Remove Codeberg Pages documentation
3424b95f2 content: Update CLI docs
27fd350a6 content: Change KaTeX version references to 0.16.23
ba8c5fd3b content: Change MathJax version reference from v3 to v4
c83465222 content: Fix broken link
c6cde1074 content: Update version references
467277939 content: Fix typo
e424b6b19 content: Document new features in v0.151.0
a46898f79 Update netlify.toml
f8407c3b5 content: Enhance content view template details
974175690 content: Optionally disable whitespace trimming in fenced code blocks
25bffc4c4 Update netlify.toml
98e9ef5f0 theme: Move initColorScheme() to head
a1566495b theme: Preload fonts (#3209)
c0271d266 content: Add missing word in deploy-with-rsync.md
47099c4fa content: Remove outdated new-in badges
439b5c18b content: Fix collections.D seed example
d2486ba67 content: Update description of IsNode method
4de8815e9 content: Update description of the cascade front matter field
0801e9b3f content: Fix broken link
9bbbfb59d content: Update Netlify hosting guide and version refs
4f444fb53 misc: Update docs.yaml
a7a9a7563 Update module.md
a7909fe37 Update netlify.toml
47a2c2038 content: Update collections.D page to remove casting note
ecca5ef48 content: Update summaryLength description with default value
310e11195 content: Change alias example
bd6b53b5d content: Update minify config documentation
21bb0bb66 Update netlify.toml
68912f1a3 content: Update version reference
28a47a50f content: Fix missing link to latest release under Prebuilt Binaries
8eac2a120 theme: Revise inline code span styling
2e71b6d0a Adjust sponsor
d93340a78 content: Update documentation guide
9f6213ebe content: Fix glob pattern-alternatives syntax in cascade.md
1f61fd6be content: Add seed examples to collections.D
65385a5d0 content: Fix Cloudflare deploy not_found_handling value
4f70df235 content: Fix typo
fc216f2d9 content: Fix broken link
e98b340f2 Update cascade.md
e316dbf93 content: Update version references
f8e863e97 misc: Remove textlint config file
3b9c3e2a1 content: Miscellaneous updates related to v0.149.0
3ccc439fc Update netlify.toml
07f5140e8 Merge branch 'tempv0.149.0'
17f8d33d8 content: Add format option to transform.Unmarshal
a6a971596 content: Document the collections.D function
66eee712b content: Update front matter configuration example
863945e13 content: Update fmt.Println example
1d9a92bc7 theme: Don't exclude current section from related content
1386d8ed2 Update introduction.md
0ac89b015 content: Replace inline URLs with autolinks
54fad1e01 content: Fix typo
e09f6b0c5 content: Wrap calls to eturl shortcode in angle brackets
23efd9766 Merge commit 'bfa74537929f409fca841540b971125b7678963a'
e98754e72 resources/page: Add :sectionslug and :sectionslugs permalink tokens

git-subtree-dir: docs
git-subtree-split: 1ad3c75ad0e997d66598c1453db9989fde7d9680

167 files changed:
.cspell.json
.markdownlint-cli2.yaml
.textlintignore [deleted file]
assets/css/styles.css
assets/images/sponsors/cloudcannon-blue.svg [deleted file]
assets/images/sponsors/cloudcannon-cms-logo.svg [new file with mode: 0644]
assets/images/sponsors/cloudcannon-white.svg [deleted file]
assets/js/body-start.js [deleted file]
assets/js/head-early.js
assets/js/main.js
content/en/_common/installation/02-prerequisites.md
content/en/_common/installation/03-prebuilt-binaries.md
content/en/_common/installation/04-build-from-source.md
content/en/_common/installation/homebrew.md
content/en/_common/permalink-tokens.md
content/en/_common/render-hooks/pageinner.md
content/en/about/introduction.md
content/en/commands/hugo_gen_chromastyles.md
content/en/commands/hugo_new.md
content/en/commands/hugo_new_site.md
content/en/commands/hugo_new_theme.md
content/en/configuration/all.md
content/en/configuration/cascade.md
content/en/configuration/front-matter.md
content/en/configuration/http-cache.md
content/en/configuration/languages.md
content/en/configuration/markup.md
content/en/configuration/minify.md
content/en/configuration/module.md
content/en/content-management/archetypes.md
content/en/content-management/diagrams.md
content/en/content-management/front-matter.md
content/en/content-management/image-processing/index.md
content/en/content-management/mathematics.md
content/en/content-management/organization/index.md
content/en/content-management/summaries.md
content/en/content-management/taxonomies.md
content/en/content-management/urls.md
content/en/contribute/development.md
content/en/contribute/documentation.md
content/en/functions/collections/D.md [new file with mode: 0644]
content/en/functions/collections/First.md
content/en/functions/collections/IsSet.md
content/en/functions/collections/Last.md
content/en/functions/collections/Seq.md
content/en/functions/collections/Shuffle.md
content/en/functions/compare/Default.md
content/en/functions/css/Quoted.md [new file with mode: 0644]
content/en/functions/css/Sass.md
content/en/functions/css/Unquoted.md [new file with mode: 0644]
content/en/functions/debug/Timer.md
content/en/functions/debug/VisualizeSpaces.md [new file with mode: 0644]
content/en/functions/diagrams/Goat.md
content/en/functions/fmt/Println.md
content/en/functions/hugo/Generator.md
content/en/functions/hugo/IsDevelopment.md
content/en/functions/hugo/IsServer.md
content/en/functions/hugo/Version.md
content/en/functions/images/AutoOrient.md
content/en/functions/images/Opacity.md
content/en/functions/images/Padding.md
content/en/functions/images/Process.md
content/en/functions/js/Batch.md
content/en/functions/lang/Translate.md
content/en/functions/math/Rand.md
content/en/functions/partials/IncludeCached.md
content/en/functions/resources/FromString.md
content/en/functions/strings/CountRunes.md
content/en/functions/strings/CountWords.md
content/en/functions/strings/Repeat.md
content/en/functions/strings/RuneCount.md
content/en/functions/strings/ToLower.md
content/en/functions/strings/ToUpper.md
content/en/functions/strings/Trim.md
content/en/functions/strings/TrimSpace.md
content/en/functions/transform/CanHighlight.md
content/en/functions/transform/HTMLtoMarkdown.md [new file with mode: 0644]
content/en/functions/transform/HighlightCodeBlock.md
content/en/functions/transform/ToMath.md
content/en/functions/transform/Unmarshal.md
content/en/functions/transform/XMLEscape.md
content/en/getting-started/quick-start.md
content/en/getting-started/usage.md
content/en/host-and-deploy/deploy-with-rsync.md
content/en/host-and-deploy/host-on-aws-amplify/index.md
content/en/host-and-deploy/host-on-cloudflare/index.md
content/en/host-and-deploy/host-on-codeberg-pages.md [deleted file]
content/en/host-and-deploy/host-on-github-pages/index.md
content/en/host-and-deploy/host-on-gitlab-pages.md
content/en/host-and-deploy/host-on-netlify/index.md
content/en/host-and-deploy/host-on-netlify/netlify-01.png [new file with mode: 0644]
content/en/host-and-deploy/host-on-netlify/netlify-02.png [new file with mode: 0644]
content/en/host-and-deploy/host-on-netlify/netlify-03.png [new file with mode: 0644]
content/en/host-and-deploy/host-on-netlify/netlify-04.png [new file with mode: 0644]
content/en/host-and-deploy/host-on-netlify/netlify-05.png [new file with mode: 0644]
content/en/host-and-deploy/host-on-netlify/netlify-06.png [new file with mode: 0644]
content/en/host-and-deploy/host-on-netlify/netlify-07.png [new file with mode: 0644]
content/en/host-and-deploy/host-on-netlify/netlify-08.png [new file with mode: 0644]
content/en/host-and-deploy/host-on-netlify/netlify-09.png [new file with mode: 0644]
content/en/host-and-deploy/host-on-netlify/netlify-10.png [new file with mode: 0644]
content/en/host-and-deploy/host-on-netlify/netlify-step-02.png [deleted file]
content/en/host-and-deploy/host-on-netlify/netlify-step-03.png [deleted file]
content/en/host-and-deploy/host-on-netlify/netlify-step-04.png [deleted file]
content/en/host-and-deploy/host-on-netlify/netlify-step-05.png [deleted file]
content/en/host-and-deploy/host-on-netlify/netlify-step-06.png [deleted file]
content/en/host-and-deploy/host-on-netlify/netlify-step-07.png [deleted file]
content/en/host-and-deploy/host-on-netlify/netlify-step-08.png [deleted file]
content/en/host-and-deploy/host-on-netlify/netlify-step-09.png [deleted file]
content/en/host-and-deploy/host-on-netlify/netlify-step-10.png [deleted file]
content/en/host-and-deploy/host-on-netlify/netlify-step-11.png [deleted file]
content/en/host-and-deploy/host-on-netlify/netlify-step-12.png [deleted file]
content/en/host-and-deploy/host-on-netlify/netlify-step-13.png [deleted file]
content/en/host-and-deploy/host-on-render/index.md
content/en/host-and-deploy/host-on-sourcehut-pages.md
content/en/host-and-deploy/host-on-vercel/index.md
content/en/hugo-modules/introduction.md
content/en/installation/linux.md
content/en/methods/menu-entry/PageRef.md
content/en/methods/page/IsNode.md
content/en/methods/page/Summary.md
content/en/methods/site/Home.md
content/en/methods/taxonomy/ByCount.md
content/en/quick-reference/glossary/archetype.md
content/en/quick-reference/glossary/component.md [new file with mode: 0644]
content/en/quick-reference/glossary/module.md
content/en/quick-reference/glossary/mount.md [new file with mode: 0644]
content/en/quick-reference/glossary/seed.md [new file with mode: 0644]
content/en/quick-reference/glossary/theme.md
content/en/quick-reference/glossary/translation-table.md [new file with mode: 0644]
content/en/quick-reference/glossary/unified-file-system.md [new file with mode: 0644]
content/en/render-hooks/code-blocks.md
content/en/render-hooks/images.md
content/en/render-hooks/links.md
content/en/render-hooks/passthrough.md
content/en/shortcodes/details.md
content/en/shortcodes/figure.md
content/en/shortcodes/highlight.md
content/en/shortcodes/instagram.md
content/en/shortcodes/param.md
content/en/shortcodes/qr.md
content/en/shortcodes/ref.md
content/en/shortcodes/relref.md
content/en/shortcodes/vimeo.md
content/en/shortcodes/x.md
content/en/templates/embedded.md
content/en/templates/introduction.md
content/en/templates/pagination.md
content/en/templates/robots.md
content/en/templates/rss.md
content/en/templates/shortcode.md
content/en/templates/sitemap.md
content/en/templates/types.md
content/en/tools/editors.md
data/docs.yaml
data/keywords.yaml
data/page_filters.yaml
data/sponsors.toml
layouts/_markup/render-codeblock.html
layouts/_partials/layouts/head/head.html
layouts/_partials/layouts/hooks/body-start.html
layouts/_partials/layouts/related.html
layouts/_shortcodes/glossary.html
layouts/_shortcodes/list-pages-in-section.html
layouts/_shortcodes/quick-reference.html
layouts/baseof.html
netlify.toml
package.json

index 28dba57be48f1391c057c85a2b6dc0b1e449b0a1..c41b857fd312beaca7c3e0e5990ef37cbfcb4439 100644 (file)
@@ -23,7 +23,8 @@
     "**/emojis.md",
     "**/commands/*",
     "**/showcase/*",
-    "**/tools/*"
+    "**/tools/*",
+    "data/docs.yaml"
   ],
   "ignoreRegExpList": [
     "# cspell: ignore fenced code blocks",
     "marshal",
     "marshaling",
     "multihost",
-    "multiplatfom",
+    "multiplatform",
     "performantly",
     "preconfigured",
     "prerendering",
     "redirection",
     "redirections",
+    "slugified",
+    "slugify",
     "subexpression",
     "suppressible",
     "synchronisation",
     "libros",
     "mercredi",
     "miesiąc",
-    "miesiąc",
     "miesiąca",
     "miesiące",
     "miesięcy",
     "Samsa",
     "Stucki",
     "Thénardier",
+    "Vitter",
     "WASI",
     "# ----------------------------------------------------------------------",
     "# cspell: ignore operating systems and software packages",
index 1ededafd07690f9641c864c53b5440e1a116fe96..c8f5b7bd3ce718b3e78acb85148aa442cfdedb12 100644 (file)
@@ -77,7 +77,7 @@ config:
     full: true
     inline: true
     shortcut: true
-    url_inline: true
+    url_inline: false
   MD055:
     style: consistent
   MD056: true
diff --git a/.textlintignore b/.textlintignore
deleted file mode 100644 (file)
index 97a18e3..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-**/news/**
-**/showcase/**
-**/zh/**
\ No newline at end of file
index 6665a7e2b688a6bdfa0055f11c0c3ea4cccab709..05304a93bac5e3ad750c362428b0d62710f08961 100644 (file)
@@ -129,3 +129,8 @@ body {
   text-decoration: none;
   padding-left: .0625em;
 }
+
+/* Code spans within paragraphs, tables cells, list items, etc. */
+:not(pre) > code {
+  white-space: nowrap;
+}
diff --git a/assets/images/sponsors/cloudcannon-blue.svg b/assets/images/sponsors/cloudcannon-blue.svg
deleted file mode 100644 (file)
index 79b13f4..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<svg viewBox="0 0 363 80" fill="none" xmlns="http://www.w3.org/2000/svg">
-<path fill-rule="evenodd" clip-rule="evenodd" d="M29.0705 42.8838C29.425 43.0864 29.8049 43.289 30.1847 43.4663C33.0209 44.783 34.3376 45.644 34.3376 47.4672C34.3376 49.4171 32.7423 51.0124 30.7925 51.0124C29.2731 51.0124 28.007 50.0502 27.5005 48.7081C25.6519 50.5819 23.1197 51.7468 20.2835 51.7468C14.6872 51.7468 10.1544 47.214 10.1544 41.6177C10.1544 41.0859 10.2304 40.5541 10.3064 40.0224C5.1152 38.503 1.1142 34.1728 0.202582 28.7537C0.0759682 27.9687 0 27.1837 0 26.3734C0 25.5631 0.0759682 24.7781 0.202582 23.9931C1.13952 18.5993 5.1152 14.2438 10.3064 12.7244C10.3032 12.7022 10.3 12.6801 10.2968 12.658C10.2242 12.1503 10.1544 11.6629 10.1544 11.1291C10.1544 5.53277 14.6872 1 20.2835 1C23.0943 1 25.6519 2.16485 27.5005 4.03873C28.007 2.69662 29.2731 1.73436 30.7925 1.73436C32.7423 1.73436 34.3376 3.32969 34.3376 5.27954C34.3376 7.25472 33.0209 8.11569 30.1847 9.43248C29.9037 9.5636 29.6366 9.70858 29.3628 9.85717C29.2665 9.90945 29.1694 9.96218 29.0705 10.0149H29.0704C28.8426 10.1415 28.6147 10.2681 28.4121 10.3947C28.2349 10.496 28.0829 10.5973 27.931 10.6986C27.8803 10.7239 27.836 10.7556 27.7917 10.7872C27.7474 10.8189 27.7031 10.8505 27.6524 10.8759C26.7915 11.433 26.0065 12.0914 25.2468 12.7751C25.2215 12.7877 25.2025 12.8067 25.1835 12.8257C25.1645 12.8447 25.1455 12.8637 25.1202 12.8764C24.8163 13.1802 24.5124 13.4841 24.2339 13.788C24.1959 13.826 24.1579 13.8703 24.1199 13.9146C24.0819 13.9589 24.0439 14.0032 24.006 14.0412C23.8864 14.1907 23.7629 14.3363 23.6401 14.481C23.4508 14.704 23.2633 14.9251 23.0943 15.1554C20.7393 18.2954 19.2959 22.2205 19.2959 26.4494C19.2959 30.6783 20.714 34.6033 23.0943 37.7433C23.3729 38.1231 23.6768 38.503 24.006 38.8575C24.0439 38.8955 24.0819 38.9398 24.1199 38.9841C24.1579 39.0284 24.1959 39.0728 24.2339 39.1107C24.4424 39.3572 24.6652 39.5753 24.8915 39.7969C24.9674 39.8712 25.0438 39.946 25.1202 40.0224C25.1455 40.035 25.1645 40.054 25.1835 40.073C25.2025 40.092 25.2215 40.111 25.2468 40.1236C26.0065 40.8074 26.7915 41.4658 27.6524 42.0229C27.7031 42.0482 27.7474 42.0798 27.7917 42.1115C27.836 42.1431 27.8803 42.1748 27.931 42.2001C28.007 42.2508 28.0893 42.3014 28.1716 42.3521C28.2539 42.4027 28.3362 42.4533 28.4121 42.504C28.5261 42.5673 28.6337 42.6306 28.7414 42.6939C28.849 42.7572 28.9566 42.8205 29.0705 42.8838ZM64.2693 12.826C69.4604 14.3453 73.4614 18.6755 74.3731 24.0946C74.4997 24.8543 74.5756 25.6646 74.5756 26.6269C74.5756 27.4372 74.4997 28.2222 74.3731 29.0072C73.4361 34.4009 69.4604 38.7565 64.2693 40.2758L64.2788 40.3423C64.3515 40.85 64.4212 41.3373 64.4212 41.8712C64.4212 47.4675 59.8884 52.0003 54.2921 52.0003C51.4813 52.0003 48.9237 50.8354 47.0751 48.9615C46.5687 50.3036 45.3025 51.2659 43.7832 51.2659C41.8333 51.2659 40.238 49.6706 40.238 47.7207C40.238 45.7455 41.5548 44.8846 44.3909 43.5678C44.6719 43.4367 44.939 43.2917 45.2128 43.1431C45.3091 43.0908 45.4063 43.0381 45.5051 42.9854C45.733 42.8587 45.9609 42.7321 46.1635 42.6055C46.3407 42.5042 46.4926 42.403 46.6445 42.3017L46.6446 42.3016C46.6953 42.2763 46.7396 42.2447 46.7839 42.213C46.8282 42.1814 46.8725 42.1497 46.9232 42.1244C47.7842 41.5673 48.5692 40.9089 49.3289 40.2252C49.3542 40.2125 49.3732 40.1935 49.3922 40.1745C49.4112 40.1555 49.4301 40.1365 49.4555 40.1239C49.7593 39.82 50.0632 39.5161 50.3418 39.2123C50.3797 39.1743 50.4177 39.13 50.4557 39.0856C50.4937 39.0413 50.5317 38.997 50.5697 38.959C50.6893 38.8096 50.8128 38.664 50.9356 38.5193C51.1248 38.2962 51.3124 38.0752 51.4813 37.8448C53.8363 34.7048 55.2797 30.7798 55.2797 26.5509C55.2797 22.322 53.8616 18.397 51.4813 15.257C51.2027 14.8771 50.8989 14.4973 50.5697 14.1428C50.5317 14.1048 50.4937 14.0605 50.4557 14.0161C50.4177 13.9718 50.3797 13.9275 50.3418 13.8895C50.0632 13.5603 49.7593 13.2565 49.4555 12.9779C49.4301 12.9652 49.4112 12.9463 49.3922 12.9273C49.3732 12.9083 49.3542 12.8893 49.3289 12.8766C48.5692 12.1929 47.7842 11.5598 46.9232 10.9774C46.8726 10.9521 46.8282 10.9204 46.7839 10.8888C46.7396 10.8571 46.6953 10.8255 46.6446 10.8001C46.5687 10.7495 46.4864 10.6988 46.4041 10.6482C46.3218 10.5976 46.2395 10.5469 46.1635 10.4963C46.0496 10.433 45.9419 10.3697 45.8343 10.3064C45.7267 10.243 45.6191 10.1797 45.5051 10.1164C45.1506 9.91385 44.7708 9.71127 44.3909 9.53401C41.5801 8.19191 40.238 7.33093 40.238 5.38108C40.238 3.43123 41.8333 1.8359 43.7832 1.8359C45.3025 1.8359 46.5687 2.79816 47.0751 4.14027C48.9237 2.26638 51.456 1.10154 54.2921 1.10154C59.8884 1.10154 64.4212 5.63431 64.4212 11.2306C64.4212 11.7624 64.3452 12.2942 64.2693 12.826Z" fill="#034AD8"/>
-<path d="M48.3405 26.475C48.3405 20.3723 43.4025 15.4343 37.2998 15.4343C31.197 15.4343 26.259 20.3723 26.259 26.475C26.259 32.5778 31.197 37.5158 37.2998 37.5158C43.4025 37.5158 48.3405 32.5778 48.3405 26.475Z" fill="#034AD8"/>
-<path fill-rule="evenodd" clip-rule="evenodd" d="M119.934 36.2635V0.832581H113.425V36.2635H119.934ZM98.4922 36.9973C101.494 36.9973 103.973 36.198 105.931 34.5994C107.888 33.0007 109.161 31.0922 109.748 28.8736L104.022 26.9651C103.696 28.0743 103.076 29.0286 102.162 29.8279C101.249 30.6272 100.026 31.0269 98.4922 31.0269C96.763 31.0269 95.303 30.4152 94.1122 29.1917C92.9214 27.9683 92.326 26.3126 92.326 24.2246C92.326 22.1366 92.9133 20.489 94.0878 19.2819C95.2623 18.0747 96.7141 17.4712 98.4432 17.4712C101.216 17.4712 102.994 18.8251 103.777 21.533L109.601 19.5755C109.046 17.3243 107.79 15.4076 105.833 13.8253C103.875 12.243 101.363 11.4518 98.2964 11.4518C94.7729 11.4518 91.8122 12.6589 89.4142 15.0732C87.0163 17.4875 85.8173 20.5379 85.8173 24.2246C85.8173 27.8786 87.0326 30.9209 89.4631 33.3514C91.8937 35.782 94.9034 36.9973 98.4922 36.9973ZM145.097 33.3759C142.699 35.7902 139.689 36.9973 136.068 36.9973C132.446 36.9973 129.437 35.7902 127.039 33.3759C124.641 30.9617 123.442 27.9112 123.442 24.2246C123.442 20.5379 124.633 17.4875 127.014 15.0732C129.429 12.6589 132.446 11.4518 136.068 11.4518C139.689 11.4518 142.699 12.6589 145.097 15.0732C147.495 17.4875 148.694 20.5379 148.694 24.2246C148.694 27.9112 147.495 30.9617 145.097 33.3759ZM136.069 31.0758C134.373 31.0758 132.921 30.4722 131.714 29.2651C130.539 28.058 129.952 26.3778 129.952 24.2245C129.952 22.0713 130.547 20.3911 131.738 19.1839C132.929 17.9768 134.373 17.3732 136.069 17.3732C137.766 17.3732 139.209 17.9768 140.4 19.1839C141.591 20.3911 142.186 22.0713 142.186 24.2245C142.186 26.3778 141.591 28.058 140.4 29.2651C139.209 30.4722 137.766 31.0758 136.069 31.0758ZM164.901 36.0919C163.677 36.6302 162.381 36.8994 161.01 36.8994C158.172 36.8994 155.937 35.9941 154.306 34.1834C152.675 32.3727 151.859 30.1134 151.859 27.4055V12.1859H158.368V26.0842C158.368 27.5197 158.743 28.686 159.493 29.5832C160.244 30.4804 161.337 30.929 162.772 30.929C164.175 30.929 165.284 30.4967 166.1 29.6321C166.915 28.7676 167.323 27.6175 167.323 26.182V12.1859H173.832V31.9078C173.832 33.4411 173.914 34.893 174.077 36.2632H167.862C167.731 35.6107 167.666 34.7461 167.666 33.6695C167.046 34.7461 166.124 35.5536 164.901 36.0919ZM189.5 36.8507C191.066 36.8507 192.444 36.5408 193.635 35.9209C194.826 35.301 195.698 34.4854 196.253 33.474C196.253 34.518 196.335 35.4479 196.498 36.2635H202.713C202.582 34.9585 202.517 33.5067 202.517 31.908V0.832581H196.106V14.5841C195.03 12.5939 192.762 11.5989 189.304 11.5989C185.943 11.5989 183.178 12.806 181.009 15.2203C178.839 17.6345 177.755 20.6197 177.755 24.1759C177.755 27.8299 178.856 30.8559 181.058 33.2538C183.26 35.6518 186.074 36.8507 189.5 36.8507ZM185.977 29.1919C187.086 30.4154 188.522 31.0271 190.283 31.0271C192.013 31.0271 193.432 30.4072 194.541 29.1674C195.65 27.9277 196.205 26.2475 196.205 24.1269C196.205 22.0388 195.65 20.3994 194.541 19.2086C193.432 18.0178 192.013 17.4224 190.283 17.4224C188.554 17.4224 187.127 18.026 186.001 19.2331C184.876 20.4402 184.313 22.0878 184.313 24.1758C184.313 26.2964 184.868 27.9685 185.977 29.1919ZM218.798 36.9973C221.8 36.9973 224.279 36.198 226.237 34.5994C228.194 33.0007 229.466 31.0922 230.054 28.8736L224.328 26.9651C224.002 28.0743 223.382 29.0286 222.468 29.8279C221.555 30.6272 220.331 31.0269 218.798 31.0269C217.069 31.0269 215.609 30.4152 214.418 29.1917C213.227 27.9683 212.632 26.3126 212.632 24.2246C212.632 22.1366 213.219 20.489 214.394 19.2819C215.568 18.0747 217.02 17.4712 218.749 17.4712C221.522 17.4712 223.3 18.8251 224.083 21.533L229.907 19.5755C229.352 17.3243 228.096 15.4076 226.139 13.8253C224.181 12.243 221.669 11.4518 218.602 11.4518C215.079 11.4518 212.118 12.6589 209.72 15.0732C207.322 17.4875 206.123 20.5379 206.123 24.2246C206.123 27.8786 207.338 30.9209 209.769 33.3514C212.2 35.782 215.209 36.9973 218.798 36.9973ZM248.562 33.3759C247.028 35.7575 244.663 36.9483 241.466 36.9483C238.986 36.9483 236.988 36.2306 235.471 34.7951C233.954 33.3595 233.195 31.663 233.195 29.7055C233.195 27.6501 233.864 26.0026 235.202 24.7628C236.539 23.5231 238.268 22.7401 240.389 22.4138L246.311 21.5329C247.518 21.3698 248.121 20.7989 248.121 19.8201C248.121 18.9066 247.77 18.1562 247.069 17.569C246.368 16.9817 245.364 16.6881 244.059 16.6881C242.689 16.6881 241.604 17.0633 240.805 17.8137C240.006 18.564 239.557 19.4939 239.459 20.6031L233.685 19.3797C233.913 17.2917 234.941 15.4483 236.768 13.8497C238.595 12.2511 241.009 11.4518 244.01 11.4518C247.599 11.4518 250.242 12.3082 251.938 14.021C253.635 15.7338 254.483 17.9279 254.483 20.6031V32.446C254.483 33.8815 254.581 35.1539 254.777 36.2632H248.806C248.643 35.5454 248.562 34.583 248.562 33.3759ZM242.836 32.1037C241.857 32.1037 241.09 31.8346 240.536 31.2963C239.981 30.7579 239.704 30.0973 239.704 29.3143C239.704 27.5851 240.699 26.5738 242.689 26.2801L248.121 25.4482V26.5248C248.121 28.515 247.624 29.9423 246.629 30.8069C245.633 31.6714 244.369 32.1037 242.836 32.1037ZM265.918 22.4142V36.2636H259.41V12.1863H265.723V15.1715C266.408 13.9969 267.386 13.0998 268.659 12.4799C269.931 11.86 271.269 11.5501 272.672 11.5501C275.51 11.5501 277.672 12.4391 279.156 14.2172C280.64 15.9952 281.383 18.2872 281.383 21.0929V36.2636H274.874V22.2185C274.874 20.783 274.507 19.6248 273.773 18.7439C273.039 17.863 271.921 17.4226 270.421 17.4226C269.05 17.4226 267.957 17.8957 267.142 18.8418C266.326 19.7879 265.918 20.9787 265.918 22.4142ZM292.866 36.2636V22.4142C292.866 20.9787 293.274 19.7879 294.09 18.8418C294.905 17.8957 295.998 17.4226 297.368 17.4226C298.869 17.4226 299.987 17.863 300.721 18.7439C301.455 19.6248 301.822 20.783 301.822 22.2185V36.2636H308.33V21.0929C308.33 18.2872 307.588 15.9952 306.104 14.2172C304.619 12.4391 302.458 11.5501 299.619 11.5501C298.217 11.5501 296.879 11.86 295.607 12.4799C294.334 13.0998 293.355 13.9969 292.67 15.1715V12.1863H286.357V36.2636H292.866ZM333.149 33.3759C330.751 35.7901 327.742 36.9972 324.12 36.9972C320.499 36.9972 317.489 35.7901 315.091 33.3759C312.693 30.9616 311.494 27.9111 311.494 24.2245C311.494 20.5379 312.685 17.4874 315.067 15.0731C317.481 12.6589 320.499 11.4518 324.12 11.4518C327.742 11.4518 330.751 12.6589 333.149 15.0731C335.547 17.4874 336.746 20.5379 336.746 24.2245C336.746 27.9111 335.547 30.9616 333.149 33.3759ZM324.121 31.0757C322.425 31.0757 320.973 30.4722 319.766 29.265C318.591 28.0579 318.004 26.3777 318.004 24.2245C318.004 22.0712 318.6 20.391 319.79 19.1839C320.981 17.9767 322.425 17.3732 324.121 17.3732C325.818 17.3732 327.262 17.9767 328.452 19.1839C329.643 20.391 330.239 22.0712 330.239 24.2245C330.239 26.3777 329.643 28.0579 328.452 29.265C327.262 30.4722 325.818 31.0757 324.121 31.0757ZM346.762 22.4142V36.2636H340.254V12.1863H346.567V15.1715C347.252 13.9969 348.23 13.0998 349.503 12.4799C350.775 11.86 352.113 11.5501 353.516 11.5501C356.354 11.5501 358.515 12.4391 360 14.2172C361.484 15.9952 362.227 18.2872 362.227 21.0929V36.2636H355.718V22.2185C355.718 20.783 355.351 19.6248 354.617 18.7439C353.883 17.863 352.765 17.4226 351.265 17.4226C349.894 17.4226 348.801 17.8957 347.986 18.8418C347.17 19.7879 346.762 20.9787 346.762 22.4142Z" fill="#034AD8"/>
-<path d="M313.211 64.2638C318.224 64.2638 320.862 60.5706 320.862 60.5706L319.015 58.724C319.015 58.724 317.037 61.6258 313.211 61.6258C309.386 61.6258 306.353 58.5921 306.353 54.767C306.353 50.9419 309.386 47.9082 313.211 47.9082C317.037 47.9082 318.883 50.6781 318.883 50.6781L320.73 48.8315C320.73 48.8315 318.224 45.2702 313.211 45.2702C307.672 45.2702 303.451 49.491 303.451 54.767C303.451 60.043 307.672 64.2638 313.211 64.2638ZM324.294 64H327.196V50.4143L333.923 58.9878L340.65 50.4143V64H343.552V45.534H340.914L333.923 54.5032L326.932 45.534H324.294V64ZM353.568 64.2638C357.657 64.2638 360.163 61.7577 360.163 58.8559C360.163 51.9971 350.402 54.5032 350.402 50.4143C350.402 49.0953 351.589 47.9082 353.832 47.9082C356.338 47.9082 357.657 49.6229 357.657 49.6229L359.635 47.6444C359.635 47.6444 357.657 45.2702 353.832 45.2702C349.875 45.2702 347.5 47.6444 347.5 50.4143C347.5 57.2731 357.261 54.767 357.261 58.8559C357.261 60.3068 355.942 61.6258 353.568 61.6258C350.402 61.6258 348.951 59.5154 348.951 59.5154L346.973 61.4939C346.973 61.4939 349.083 64.2638 353.568 64.2638Z" fill="#034AD8"/>
-</svg>
diff --git a/assets/images/sponsors/cloudcannon-cms-logo.svg b/assets/images/sponsors/cloudcannon-cms-logo.svg
new file mode 100644 (file)
index 0000000..9860c59
--- /dev/null
@@ -0,0 +1,13 @@
+<svg height="100%" width="100%" viewBox="0 0 363 80" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_5258_169)">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M29.0705 42.8838C29.425 43.0864 29.8049 43.289 30.1847 43.4663C33.0209 44.783 34.3376 45.644 34.3376 47.4672C34.3376 49.4171 32.7423 51.0124 30.7925 51.0124C29.2731 51.0124 28.007 50.0502 27.5005 48.7081C25.6519 50.5819 23.1197 51.7468 20.2835 51.7468C14.6872 51.7468 10.1544 47.214 10.1544 41.6177C10.1544 41.0859 10.2304 40.5541 10.3064 40.0224C5.1152 38.503 1.1142 34.1728 0.202582 28.7537C0.0759682 27.9687 0 27.1837 0 26.3734C0 25.5631 0.0759682 24.7781 0.202582 23.9931C1.13952 18.5993 5.1152 14.2438 10.3064 12.7244C10.3032 12.7022 10.3 12.6801 10.2968 12.658C10.2242 12.1503 10.1544 11.6629 10.1544 11.1291C10.1544 5.53277 14.6872 1 20.2835 1C23.0943 1 25.6519 2.16485 27.5005 4.03873C28.007 2.69662 29.2731 1.73436 30.7925 1.73436C32.7423 1.73436 34.3376 3.32969 34.3376 5.27954C34.3376 7.25472 33.0209 8.11569 30.1847 9.43248C29.9037 9.5636 29.6366 9.70858 29.3628 9.85717C29.2665 9.90945 29.1694 9.96218 29.0705 10.0149H29.0704C28.8426 10.1415 28.6147 10.2681 28.4121 10.3947C28.2349 10.496 28.0829 10.5973 27.931 10.6986C27.8803 10.7239 27.836 10.7556 27.7917 10.7872C27.7474 10.8189 27.7031 10.8505 27.6524 10.8759C26.7915 11.433 26.0065 12.0914 25.2468 12.7751C25.2215 12.7877 25.2025 12.8067 25.1835 12.8257C25.1645 12.8447 25.1455 12.8637 25.1202 12.8764C24.8163 13.1802 24.5124 13.4841 24.2339 13.788C24.1959 13.826 24.1579 13.8703 24.1199 13.9146C24.0819 13.9589 24.0439 14.0032 24.006 14.0412C23.8864 14.1907 23.7629 14.3363 23.6401 14.481C23.4508 14.704 23.2633 14.9251 23.0943 15.1554C20.7393 18.2954 19.2959 22.2205 19.2959 26.4494C19.2959 30.6783 20.714 34.6033 23.0943 37.7433C23.3729 38.1231 23.6768 38.503 24.006 38.8575C24.0439 38.8955 24.0819 38.9398 24.1199 38.9841C24.1579 39.0284 24.1959 39.0728 24.2339 39.1107C24.4424 39.3572 24.6652 39.5753 24.8915 39.7969C24.9674 39.8712 25.0438 39.946 25.1202 40.0224C25.1455 40.035 25.1645 40.054 25.1835 40.073C25.2025 40.092 25.2215 40.111 25.2468 40.1236C26.0065 40.8074 26.7915 41.4658 27.6524 42.0229C27.7031 42.0482 27.7474 42.0798 27.7917 42.1115C27.836 42.1431 27.8803 42.1748 27.931 42.2001C28.007 42.2508 28.0893 42.3014 28.1716 42.3521C28.2539 42.4027 28.3362 42.4533 28.4121 42.504C28.5261 42.5673 28.6337 42.6306 28.7414 42.6939C28.849 42.7572 28.9566 42.8205 29.0705 42.8838ZM64.2693 12.826C69.4604 14.3453 73.4614 18.6755 74.3731 24.0946C74.4997 24.8543 74.5756 25.6646 74.5756 26.6269C74.5756 27.4372 74.4997 28.2222 74.3731 29.0072C73.4361 34.4009 69.4604 38.7565 64.2693 40.2758L64.2788 40.3423C64.3515 40.85 64.4212 41.3373 64.4212 41.8712C64.4212 47.4675 59.8884 52.0003 54.2921 52.0003C51.4813 52.0003 48.9237 50.8354 47.0751 48.9615C46.5687 50.3036 45.3025 51.2659 43.7832 51.2659C41.8333 51.2659 40.238 49.6706 40.238 47.7207C40.238 45.7455 41.5548 44.8846 44.3909 43.5678C44.6719 43.4367 44.939 43.2917 45.2128 43.1431C45.3091 43.0908 45.4063 43.0381 45.5051 42.9854C45.733 42.8587 45.9609 42.7321 46.1635 42.6055C46.3407 42.5042 46.4926 42.403 46.6445 42.3017L46.6446 42.3016C46.6953 42.2763 46.7396 42.2447 46.7839 42.213C46.8282 42.1814 46.8725 42.1497 46.9232 42.1244C47.7842 41.5673 48.5692 40.9089 49.3289 40.2252C49.3542 40.2125 49.3732 40.1935 49.3922 40.1745C49.4112 40.1555 49.4301 40.1365 49.4555 40.1239C49.7593 39.82 50.0632 39.5161 50.3418 39.2123C50.3797 39.1743 50.4177 39.13 50.4557 39.0856C50.4937 39.0413 50.5317 38.997 50.5697 38.959C50.6893 38.8096 50.8128 38.664 50.9356 38.5193C51.1248 38.2962 51.3124 38.0752 51.4813 37.8448C53.8363 34.7048 55.2797 30.7798 55.2797 26.5509C55.2797 22.322 53.8616 18.397 51.4813 15.257C51.2027 14.8771 50.8989 14.4973 50.5697 14.1428C50.5317 14.1048 50.4937 14.0605 50.4557 14.0161C50.4177 13.9718 50.3797 13.9275 50.3418 13.8895C50.0632 13.5603 49.7593 13.2565 49.4555 12.9779C49.4301 12.9652 49.4112 12.9463 49.3922 12.9273C49.3732 12.9083 49.3542 12.8893 49.3289 12.8766C48.5692 12.1929 47.7842 11.5598 46.9232 10.9774C46.8726 10.9521 46.8282 10.9204 46.7839 10.8888C46.7396 10.8571 46.6953 10.8255 46.6446 10.8001C46.5687 10.7495 46.4864 10.6988 46.4041 10.6482C46.3218 10.5976 46.2395 10.5469 46.1635 10.4963C46.0496 10.433 45.9419 10.3697 45.8343 10.3064C45.7267 10.243 45.6191 10.1797 45.5051 10.1164C45.1506 9.91385 44.7708 9.71127 44.3909 9.53401C41.5801 8.19191 40.238 7.33093 40.238 5.38108C40.238 3.43123 41.8333 1.8359 43.7832 1.8359C45.3025 1.8359 46.5687 2.79816 47.0751 4.14027C48.9237 2.26638 51.456 1.10154 54.2921 1.10154C59.8884 1.10154 64.4212 5.63431 64.4212 11.2306C64.4212 11.7624 64.3452 12.2942 64.2693 12.826Z" fill="#034AD8"/>
+<path d="M48.3405 26.475C48.3405 20.3723 43.4025 15.4343 37.2998 15.4343C31.197 15.4343 26.259 20.3723 26.259 26.475C26.259 32.5778 31.197 37.5158 37.2998 37.5158C43.4025 37.5158 48.3405 32.5778 48.3405 26.475Z" fill="#034AD8"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M119.934 36.2634V0.83252H113.425V36.2634H119.934ZM98.4922 36.9972C101.494 36.9972 103.973 36.1979 105.931 34.5993C107.888 33.0006 109.161 31.0921 109.748 28.8735L104.022 26.965C103.696 28.0742 103.076 29.0285 102.162 29.8278C101.249 30.6271 100.026 31.0268 98.4922 31.0268C96.763 31.0268 95.303 30.4151 94.1122 29.1916C92.9214 27.9682 92.326 26.3125 92.326 24.2245C92.326 22.1365 92.9133 20.4889 94.0878 19.2818C95.2623 18.0746 96.7141 17.4711 98.4432 17.4711C101.216 17.4711 102.994 18.825 103.777 21.5329L109.601 19.5754C109.046 17.3242 107.79 15.4075 105.833 13.8252C103.875 12.2429 101.363 11.4517 98.2964 11.4517C94.7729 11.4517 91.8122 12.6588 89.4142 15.0731C87.0163 17.4874 85.8173 20.5378 85.8173 24.2245C85.8173 27.8785 87.0326 30.9208 89.4631 33.3513C91.8937 35.7819 94.9034 36.9972 98.4922 36.9972ZM145.097 33.3758C142.699 35.7901 139.689 36.9972 136.068 36.9972C132.446 36.9972 129.437 35.7901 127.039 33.3758C124.641 30.9616 123.442 27.9111 123.442 24.2245C123.442 20.5378 124.633 17.4874 127.014 15.0731C129.429 12.6588 132.446 11.4517 136.068 11.4517C139.689 11.4517 142.699 12.6588 145.097 15.0731C147.495 17.4874 148.694 20.5378 148.694 24.2245C148.694 27.9111 147.495 30.9616 145.097 33.3758ZM136.069 31.0757C134.373 31.0757 132.921 30.4721 131.714 29.265C130.539 28.0579 129.952 26.3777 129.952 24.2244C129.952 22.0712 130.547 20.391 131.738 19.1838C132.929 17.9767 134.373 17.3731 136.069 17.3731C137.766 17.3731 139.209 17.9767 140.4 19.1838C141.591 20.391 142.186 22.0712 142.186 24.2244C142.186 26.3777 141.591 28.0579 140.4 29.265C139.209 30.4721 137.766 31.0757 136.069 31.0757ZM164.901 36.0918C163.677 36.6301 162.381 36.8993 161.01 36.8993C158.172 36.8993 155.937 35.994 154.306 34.1833C152.675 32.3726 151.859 30.1133 151.859 27.4054V12.1858H158.368V26.0841C158.368 27.5196 158.743 28.6859 159.493 29.5831C160.244 30.4803 161.337 30.9289 162.772 30.9289C164.175 30.9289 165.284 30.4966 166.1 29.632C166.915 28.7675 167.323 27.6174 167.323 26.1819V12.1858H173.832V31.9077C173.832 33.441 173.914 34.8929 174.077 36.2631H167.862C167.731 35.6106 167.666 34.746 167.666 33.6694C167.046 34.746 166.124 35.5535 164.901 36.0918ZM189.5 36.8506C191.066 36.8506 192.444 36.5407 193.635 35.9208C194.826 35.3009 195.698 34.4853 196.253 33.4739C196.253 34.5179 196.335 35.4478 196.498 36.2634H202.713C202.582 34.9584 202.517 33.5066 202.517 31.9079V0.83252H196.106V14.584C195.03 12.5938 192.762 11.5988 189.304 11.5988C185.943 11.5988 183.178 12.8059 181.009 15.2202C178.839 17.6344 177.755 20.6196 177.755 24.1758C177.755 27.8298 178.856 30.8558 181.058 33.2537C183.26 35.6517 186.074 36.8506 189.5 36.8506ZM185.977 29.1918C187.086 30.4153 188.522 31.027 190.283 31.027C192.013 31.027 193.432 30.4071 194.541 29.1673C195.65 27.9276 196.205 26.2474 196.205 24.1268C196.205 22.0387 195.65 20.3993 194.541 19.2085C193.432 18.0177 192.013 17.4223 190.283 17.4223C188.554 17.4223 187.127 18.0259 186.001 19.233C184.876 20.4401 184.313 22.0877 184.313 24.1757C184.313 26.2963 184.868 27.9684 185.977 29.1918ZM218.798 36.9972C221.8 36.9972 224.279 36.1979 226.237 34.5993C228.194 33.0006 229.466 31.0921 230.054 28.8735L224.328 26.965C224.002 28.0742 223.382 29.0285 222.468 29.8278C221.555 30.6271 220.331 31.0268 218.798 31.0268C217.069 31.0268 215.609 30.4151 214.418 29.1916C213.227 27.9682 212.632 26.3125 212.632 24.2245C212.632 22.1365 213.219 20.4889 214.394 19.2818C215.568 18.0746 217.02 17.4711 218.749 17.4711C221.522 17.4711 223.3 18.825 224.083 21.5329L229.907 19.5754C229.352 17.3242 228.096 15.4075 226.139 13.8252C224.181 12.2429 221.669 11.4517 218.602 11.4517C215.079 11.4517 212.118 12.6588 209.72 15.0731C207.322 17.4874 206.123 20.5378 206.123 24.2245C206.123 27.8785 207.338 30.9208 209.769 33.3513C212.2 35.7819 215.209 36.9972 218.798 36.9972ZM248.562 33.3758C247.028 35.7574 244.663 36.9482 241.466 36.9482C238.986 36.9482 236.988 36.2305 235.471 34.795C233.954 33.3594 233.195 31.6629 233.195 29.7054C233.195 27.65 233.864 26.0025 235.202 24.7627C236.539 23.523 238.268 22.74 240.389 22.4137L246.311 21.5328C247.518 21.3697 248.121 20.7988 248.121 19.82C248.121 18.9065 247.77 18.1561 247.069 17.5689C246.368 16.9816 245.364 16.688 244.059 16.688C242.689 16.688 241.604 17.0632 240.805 17.8136C240.006 18.5639 239.557 19.4938 239.459 20.603L233.685 19.3796C233.913 17.2916 234.941 15.4482 236.768 13.8496C238.595 12.251 241.009 11.4517 244.01 11.4517C247.599 11.4517 250.242 12.3081 251.938 14.0209C253.635 15.7337 254.483 17.9278 254.483 20.603V32.4459C254.483 33.8814 254.581 35.1538 254.777 36.2631H248.806C248.643 35.5453 248.562 34.5829 248.562 33.3758ZM242.836 32.1036C241.857 32.1036 241.09 31.8345 240.536 31.2962C239.981 30.7578 239.704 30.0972 239.704 29.3142C239.704 27.585 240.699 26.5737 242.689 26.28L248.121 25.4481V26.5247C248.121 28.5149 247.624 29.9422 246.629 30.8068C245.633 31.6713 244.369 32.1036 242.836 32.1036ZM265.918 22.4141V36.2635H259.41V12.1862H265.723V15.1714C266.408 13.9968 267.386 13.0997 268.659 12.4798C269.931 11.8599 271.269 11.55 272.672 11.55C275.51 11.55 277.672 12.439 279.156 14.2171C280.64 15.9951 281.383 18.2871 281.383 21.0928V36.2635H274.874V22.2184C274.874 20.7829 274.507 19.6247 273.773 18.7438C273.039 17.8629 271.921 17.4225 270.421 17.4225C269.05 17.4225 267.957 17.8956 267.142 18.8417C266.326 19.7878 265.918 20.9786 265.918 22.4141ZM292.866 36.2635V22.4141C292.866 20.9786 293.274 19.7878 294.09 18.8417C294.905 17.8956 295.998 17.4225 297.368 17.4225C298.869 17.4225 299.987 17.8629 300.721 18.7438C301.455 19.6247 301.822 20.7829 301.822 22.2184V36.2635H308.33V21.0928C308.33 18.2871 307.588 15.9951 306.104 14.2171C304.619 12.439 302.458 11.55 299.619 11.55C298.217 11.55 296.879 11.8599 295.607 12.4798C294.334 13.0997 293.355 13.9968 292.67 15.1714V12.1862H286.357V36.2635H292.866ZM333.149 33.3758C330.751 35.79 327.742 36.9971 324.12 36.9971C320.499 36.9971 317.489 35.79 315.091 33.3758C312.693 30.9615 311.494 27.911 311.494 24.2244C311.494 20.5378 312.685 17.4873 315.067 15.073C317.481 12.6588 320.499 11.4517 324.12 11.4517C327.742 11.4517 330.751 12.6588 333.149 15.073C335.547 17.4873 336.746 20.5378 336.746 24.2244C336.746 27.911 335.547 30.9615 333.149 33.3758ZM324.121 31.0756C322.425 31.0756 320.973 30.4721 319.766 29.2649C318.591 28.0578 318.004 26.3776 318.004 24.2244C318.004 22.0711 318.6 20.3909 319.79 19.1838C320.981 17.9766 322.425 17.3731 324.121 17.3731C325.818 17.3731 327.262 17.9766 328.452 19.1838C329.643 20.3909 330.239 22.0711 330.239 24.2244C330.239 26.3776 329.643 28.0578 328.452 29.2649C327.262 30.4721 325.818 31.0756 324.121 31.0756ZM346.762 22.4141V36.2635H340.254V12.1862H346.567V15.1714C347.252 13.9968 348.23 13.0997 349.503 12.4798C350.775 11.8599 352.113 11.55 353.516 11.55C356.354 11.55 358.515 12.439 360 14.2171C361.484 15.9951 362.227 18.2871 362.227 21.0928V36.2635H355.718V22.2184C355.718 20.7829 355.351 19.6247 354.617 18.7438C353.883 17.8629 352.765 17.4225 351.265 17.4225C349.894 17.4225 348.801 17.8956 347.986 18.8417C347.17 19.7878 346.762 20.9786 346.762 22.4141Z" fill="#034AD8"/>
+<path d="M315.211 65.2638C309.672 65.2638 305.451 61.043 305.451 55.767C305.451 50.491 309.672 46.2702 315.211 46.2702C320.224 46.2702 322.73 49.8315 322.73 49.8315L320.883 51.6781C320.883 51.6781 319.037 48.9082 315.211 48.9082C311.386 48.9082 308.353 51.9419 308.353 55.767C308.353 59.5921 311.386 62.6258 315.211 62.6258C319.037 62.6258 321.015 59.724 321.015 59.724L322.862 61.5706C322.862 61.5706 320.224 65.2638 315.211 65.2638ZM326.294 65V46.534H328.932L335.923 55.5032L342.914 46.534H345.552V65H342.65V51.4143L335.923 59.9878L329.196 51.4143V65H326.294ZM355.568 65.2638C351.083 65.2638 348.973 62.4939 348.973 62.4939L350.951 60.5154C350.951 60.5154 352.402 62.6258 355.568 62.6258C357.942 62.6258 359.261 61.3068 359.261 59.8559C359.261 55.767 349.5 58.2731 349.5 51.4143C349.5 48.6444 351.875 46.2702 355.832 46.2702C359.657 46.2702 361.635 48.6444 361.635 48.6444L359.657 50.6229C359.657 50.6229 358.338 48.9082 355.832 48.9082C353.589 48.9082 352.402 50.0953 352.402 51.4143C352.402 55.5032 362.163 52.9971 362.163 59.8559C362.163 62.7577 359.657 65.2638 355.568 65.2638Z" fill="#034AD8"/>
+</g>
+<defs>
+<clipPath id="clip0_5258_169">
+<rect height="100%" width="100%" fill="white"/>
+</clipPath>
+</defs>
+</svg>
diff --git a/assets/images/sponsors/cloudcannon-white.svg b/assets/images/sponsors/cloudcannon-white.svg
deleted file mode 100644 (file)
index 83e319a..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<svg viewBox="0 0 363 80" fill="none" xmlns="http://www.w3.org/2000/svg">
-<path fill-rule="evenodd" clip-rule="evenodd" d="M29.0705 42.8838C29.425 43.0864 29.8049 43.289 30.1847 43.4663C33.0209 44.783 34.3376 45.644 34.3376 47.4672C34.3376 49.4171 32.7423 51.0124 30.7925 51.0124C29.2731 51.0124 28.007 50.0502 27.5005 48.7081C25.6519 50.5819 23.1197 51.7468 20.2835 51.7468C14.6872 51.7468 10.1544 47.214 10.1544 41.6177C10.1544 41.0859 10.2304 40.5541 10.3064 40.0224C5.1152 38.503 1.1142 34.1728 0.202582 28.7537C0.0759682 27.9687 0 27.1837 0 26.3734C0 25.5631 0.0759682 24.7781 0.202582 23.9931C1.13952 18.5993 5.1152 14.2438 10.3064 12.7244C10.3032 12.7022 10.3 12.6801 10.2968 12.658C10.2242 12.1503 10.1544 11.6629 10.1544 11.1291C10.1544 5.53277 14.6872 1 20.2835 1C23.0943 1 25.6519 2.16485 27.5005 4.03873C28.007 2.69662 29.2731 1.73436 30.7925 1.73436C32.7423 1.73436 34.3376 3.32969 34.3376 5.27954C34.3376 7.25472 33.0209 8.11569 30.1847 9.43248C29.9037 9.5636 29.6366 9.70858 29.3628 9.85717C29.2665 9.90945 29.1694 9.96218 29.0705 10.0149H29.0704C28.8426 10.1415 28.6147 10.2681 28.4121 10.3947C28.2349 10.496 28.0829 10.5973 27.931 10.6986C27.8803 10.7239 27.836 10.7556 27.7917 10.7872C27.7474 10.8189 27.7031 10.8505 27.6524 10.8759C26.7915 11.433 26.0065 12.0914 25.2468 12.7751C25.2215 12.7877 25.2025 12.8067 25.1835 12.8257C25.1645 12.8447 25.1455 12.8637 25.1202 12.8764C24.8163 13.1802 24.5124 13.4841 24.2339 13.788C24.1959 13.826 24.1579 13.8703 24.1199 13.9146C24.0819 13.9589 24.0439 14.0032 24.006 14.0412C23.8864 14.1907 23.7629 14.3363 23.6401 14.481C23.4508 14.704 23.2633 14.9251 23.0943 15.1554C20.7393 18.2954 19.2959 22.2205 19.2959 26.4494C19.2959 30.6783 20.714 34.6033 23.0943 37.7433C23.3729 38.1231 23.6768 38.503 24.006 38.8575C24.0439 38.8955 24.0819 38.9398 24.1199 38.9841C24.1579 39.0284 24.1959 39.0728 24.2339 39.1107C24.4424 39.3572 24.6652 39.5753 24.8915 39.7969C24.9674 39.8712 25.0438 39.946 25.1202 40.0224C25.1455 40.035 25.1645 40.054 25.1835 40.073C25.2025 40.092 25.2215 40.111 25.2468 40.1236C26.0065 40.8074 26.7915 41.4658 27.6524 42.0229C27.7031 42.0482 27.7474 42.0798 27.7917 42.1115C27.836 42.1431 27.8803 42.1748 27.931 42.2001C28.007 42.2508 28.0893 42.3014 28.1716 42.3521C28.2539 42.4027 28.3362 42.4533 28.4121 42.504C28.5261 42.5673 28.6337 42.6306 28.7414 42.6939C28.849 42.7572 28.9566 42.8205 29.0705 42.8838ZM64.2693 12.826C69.4604 14.3453 73.4614 18.6755 74.3731 24.0946C74.4997 24.8543 74.5756 25.6646 74.5756 26.6269C74.5756 27.4372 74.4997 28.2222 74.3731 29.0072C73.4361 34.4009 69.4604 38.7565 64.2693 40.2758L64.2788 40.3423C64.3515 40.85 64.4212 41.3373 64.4212 41.8712C64.4212 47.4675 59.8884 52.0003 54.2921 52.0003C51.4813 52.0003 48.9237 50.8354 47.0751 48.9615C46.5687 50.3036 45.3025 51.2659 43.7832 51.2659C41.8333 51.2659 40.238 49.6706 40.238 47.7207C40.238 45.7455 41.5548 44.8846 44.3909 43.5678C44.6719 43.4367 44.939 43.2917 45.2128 43.1431C45.3091 43.0908 45.4063 43.0381 45.5051 42.9854C45.733 42.8587 45.9609 42.7321 46.1635 42.6055C46.3407 42.5042 46.4926 42.403 46.6445 42.3017L46.6446 42.3016C46.6953 42.2763 46.7396 42.2447 46.7839 42.213C46.8282 42.1814 46.8725 42.1497 46.9232 42.1244C47.7842 41.5673 48.5692 40.9089 49.3289 40.2252C49.3542 40.2125 49.3732 40.1935 49.3922 40.1745C49.4112 40.1555 49.4301 40.1365 49.4555 40.1239C49.7593 39.82 50.0632 39.5161 50.3418 39.2123C50.3797 39.1743 50.4177 39.13 50.4557 39.0856C50.4937 39.0413 50.5317 38.997 50.5697 38.959C50.6893 38.8096 50.8128 38.664 50.9356 38.5193C51.1248 38.2962 51.3124 38.0752 51.4813 37.8448C53.8363 34.7048 55.2797 30.7798 55.2797 26.5509C55.2797 22.322 53.8616 18.397 51.4813 15.257C51.2027 14.8771 50.8989 14.4973 50.5697 14.1428C50.5317 14.1048 50.4937 14.0605 50.4557 14.0161C50.4177 13.9718 50.3797 13.9275 50.3418 13.8895C50.0632 13.5603 49.7593 13.2565 49.4555 12.9779C49.4301 12.9652 49.4112 12.9463 49.3922 12.9273C49.3732 12.9083 49.3542 12.8893 49.3289 12.8766C48.5692 12.1929 47.7842 11.5598 46.9232 10.9774C46.8726 10.9521 46.8282 10.9204 46.7839 10.8888C46.7396 10.8571 46.6953 10.8255 46.6446 10.8001C46.5687 10.7495 46.4864 10.6988 46.4041 10.6482C46.3218 10.5976 46.2395 10.5469 46.1635 10.4963C46.0496 10.433 45.9419 10.3697 45.8343 10.3064C45.7267 10.243 45.6191 10.1797 45.5051 10.1164C45.1506 9.91385 44.7708 9.71127 44.3909 9.53401C41.5801 8.19191 40.238 7.33093 40.238 5.38108C40.238 3.43123 41.8333 1.8359 43.7832 1.8359C45.3025 1.8359 46.5687 2.79816 47.0751 4.14027C48.9237 2.26638 51.456 1.10154 54.2921 1.10154C59.8884 1.10154 64.4212 5.63431 64.4212 11.2306C64.4212 11.7624 64.3452 12.2942 64.2693 12.826Z" fill="white"/>
-<path d="M48.3405 26.475C48.3405 20.3723 43.4025 15.4343 37.2998 15.4343C31.197 15.4343 26.259 20.3723 26.259 26.475C26.259 32.5778 31.197 37.5158 37.2998 37.5158C43.4025 37.5158 48.3405 32.5778 48.3405 26.475Z" fill="white"/>
-<path fill-rule="evenodd" clip-rule="evenodd" d="M119.934 36.2635V0.832581H113.425V36.2635H119.934ZM98.4922 36.9973C101.494 36.9973 103.973 36.198 105.931 34.5994C107.888 33.0007 109.161 31.0922 109.748 28.8736L104.022 26.9651C103.696 28.0743 103.076 29.0286 102.162 29.8279C101.249 30.6272 100.026 31.0269 98.4922 31.0269C96.763 31.0269 95.303 30.4152 94.1122 29.1917C92.9214 27.9683 92.326 26.3126 92.326 24.2246C92.326 22.1366 92.9133 20.489 94.0878 19.2819C95.2623 18.0747 96.7141 17.4712 98.4432 17.4712C101.216 17.4712 102.994 18.8251 103.777 21.533L109.601 19.5755C109.046 17.3243 107.79 15.4076 105.833 13.8253C103.875 12.243 101.363 11.4518 98.2964 11.4518C94.7729 11.4518 91.8122 12.6589 89.4142 15.0732C87.0163 17.4875 85.8173 20.5379 85.8173 24.2246C85.8173 27.8786 87.0326 30.9209 89.4631 33.3514C91.8937 35.782 94.9034 36.9973 98.4922 36.9973ZM145.097 33.3759C142.699 35.7902 139.689 36.9973 136.068 36.9973C132.446 36.9973 129.437 35.7902 127.039 33.3759C124.641 30.9617 123.442 27.9112 123.442 24.2246C123.442 20.5379 124.633 17.4875 127.014 15.0732C129.429 12.6589 132.446 11.4518 136.068 11.4518C139.689 11.4518 142.699 12.6589 145.097 15.0732C147.495 17.4875 148.694 20.5379 148.694 24.2246C148.694 27.9112 147.495 30.9617 145.097 33.3759ZM136.069 31.0758C134.373 31.0758 132.921 30.4722 131.714 29.2651C130.539 28.058 129.952 26.3778 129.952 24.2245C129.952 22.0713 130.547 20.3911 131.738 19.1839C132.929 17.9768 134.373 17.3732 136.069 17.3732C137.766 17.3732 139.209 17.9768 140.4 19.1839C141.591 20.3911 142.186 22.0713 142.186 24.2245C142.186 26.3778 141.591 28.058 140.4 29.2651C139.209 30.4722 137.766 31.0758 136.069 31.0758ZM164.901 36.0919C163.677 36.6302 162.381 36.8994 161.01 36.8994C158.172 36.8994 155.937 35.9941 154.306 34.1834C152.675 32.3727 151.859 30.1134 151.859 27.4055V12.1859H158.368V26.0842C158.368 27.5197 158.743 28.686 159.493 29.5832C160.244 30.4804 161.337 30.929 162.772 30.929C164.175 30.929 165.284 30.4967 166.1 29.6321C166.915 28.7676 167.323 27.6175 167.323 26.182V12.1859H173.832V31.9078C173.832 33.4411 173.914 34.893 174.077 36.2632H167.862C167.731 35.6107 167.666 34.7461 167.666 33.6695C167.046 34.7461 166.124 35.5536 164.901 36.0919ZM189.5 36.8507C191.066 36.8507 192.444 36.5408 193.635 35.9209C194.826 35.301 195.698 34.4854 196.253 33.474C196.253 34.518 196.335 35.4479 196.498 36.2635H202.713C202.582 34.9585 202.517 33.5067 202.517 31.908V0.832581H196.106V14.5841C195.03 12.5939 192.762 11.5989 189.304 11.5989C185.943 11.5989 183.178 12.806 181.009 15.2203C178.839 17.6345 177.755 20.6197 177.755 24.1759C177.755 27.8299 178.856 30.8559 181.058 33.2538C183.26 35.6518 186.074 36.8507 189.5 36.8507ZM185.977 29.1919C187.086 30.4154 188.522 31.0271 190.283 31.0271C192.013 31.0271 193.432 30.4072 194.541 29.1674C195.65 27.9277 196.205 26.2475 196.205 24.1269C196.205 22.0388 195.65 20.3994 194.541 19.2086C193.432 18.0178 192.013 17.4224 190.283 17.4224C188.554 17.4224 187.127 18.026 186.001 19.2331C184.876 20.4402 184.313 22.0878 184.313 24.1758C184.313 26.2964 184.868 27.9685 185.977 29.1919ZM218.798 36.9973C221.8 36.9973 224.279 36.198 226.237 34.5994C228.194 33.0007 229.466 31.0922 230.054 28.8736L224.328 26.9651C224.002 28.0743 223.382 29.0286 222.468 29.8279C221.555 30.6272 220.331 31.0269 218.798 31.0269C217.069 31.0269 215.609 30.4152 214.418 29.1917C213.227 27.9683 212.632 26.3126 212.632 24.2246C212.632 22.1366 213.219 20.489 214.394 19.2819C215.568 18.0747 217.02 17.4712 218.749 17.4712C221.522 17.4712 223.3 18.8251 224.083 21.533L229.907 19.5755C229.352 17.3243 228.096 15.4076 226.139 13.8253C224.181 12.243 221.669 11.4518 218.602 11.4518C215.079 11.4518 212.118 12.6589 209.72 15.0732C207.322 17.4875 206.123 20.5379 206.123 24.2246C206.123 27.8786 207.338 30.9209 209.769 33.3514C212.2 35.782 215.209 36.9973 218.798 36.9973ZM248.562 33.3759C247.028 35.7575 244.663 36.9483 241.466 36.9483C238.986 36.9483 236.988 36.2306 235.471 34.7951C233.954 33.3595 233.195 31.663 233.195 29.7055C233.195 27.6501 233.864 26.0026 235.202 24.7628C236.539 23.5231 238.268 22.7401 240.389 22.4138L246.311 21.5329C247.518 21.3698 248.121 20.7989 248.121 19.8201C248.121 18.9066 247.77 18.1562 247.069 17.569C246.368 16.9817 245.364 16.6881 244.059 16.6881C242.689 16.6881 241.604 17.0633 240.805 17.8137C240.006 18.564 239.557 19.4939 239.459 20.6031L233.685 19.3797C233.913 17.2917 234.941 15.4483 236.768 13.8497C238.595 12.2511 241.009 11.4518 244.01 11.4518C247.599 11.4518 250.242 12.3082 251.938 14.021C253.635 15.7338 254.483 17.9279 254.483 20.6031V32.446C254.483 33.8815 254.581 35.1539 254.777 36.2632H248.806C248.643 35.5454 248.562 34.583 248.562 33.3759ZM242.836 32.1037C241.857 32.1037 241.09 31.8346 240.536 31.2963C239.981 30.7579 239.704 30.0973 239.704 29.3143C239.704 27.5851 240.699 26.5738 242.689 26.2801L248.121 25.4482V26.5248C248.121 28.515 247.624 29.9423 246.629 30.8069C245.633 31.6714 244.369 32.1037 242.836 32.1037ZM265.918 22.4142V36.2636H259.41V12.1863H265.723V15.1715C266.408 13.9969 267.386 13.0998 268.659 12.4799C269.931 11.86 271.269 11.5501 272.672 11.5501C275.51 11.5501 277.672 12.4391 279.156 14.2172C280.64 15.9952 281.383 18.2872 281.383 21.0929V36.2636H274.874V22.2185C274.874 20.783 274.507 19.6248 273.773 18.7439C273.039 17.863 271.921 17.4226 270.421 17.4226C269.05 17.4226 267.957 17.8957 267.142 18.8418C266.326 19.7879 265.918 20.9787 265.918 22.4142ZM292.866 36.2636V22.4142C292.866 20.9787 293.274 19.7879 294.09 18.8418C294.905 17.8957 295.998 17.4226 297.368 17.4226C298.869 17.4226 299.987 17.863 300.721 18.7439C301.455 19.6248 301.822 20.783 301.822 22.2185V36.2636H308.33V21.0929C308.33 18.2872 307.588 15.9952 306.104 14.2172C304.619 12.4391 302.458 11.5501 299.619 11.5501C298.217 11.5501 296.879 11.86 295.607 12.4799C294.334 13.0998 293.355 13.9969 292.67 15.1715V12.1863H286.357V36.2636H292.866ZM333.149 33.3759C330.751 35.7901 327.742 36.9972 324.12 36.9972C320.499 36.9972 317.489 35.7901 315.091 33.3759C312.693 30.9616 311.494 27.9111 311.494 24.2245C311.494 20.5379 312.685 17.4874 315.067 15.0731C317.481 12.6589 320.499 11.4518 324.12 11.4518C327.742 11.4518 330.751 12.6589 333.149 15.0731C335.547 17.4874 336.746 20.5379 336.746 24.2245C336.746 27.9111 335.547 30.9616 333.149 33.3759ZM324.121 31.0757C322.425 31.0757 320.973 30.4722 319.766 29.265C318.591 28.0579 318.004 26.3777 318.004 24.2245C318.004 22.0712 318.6 20.391 319.79 19.1839C320.981 17.9767 322.425 17.3732 324.121 17.3732C325.818 17.3732 327.262 17.9767 328.452 19.1839C329.643 20.391 330.239 22.0712 330.239 24.2245C330.239 26.3777 329.643 28.0579 328.452 29.265C327.262 30.4722 325.818 31.0757 324.121 31.0757ZM346.762 22.4142V36.2636H340.254V12.1863H346.567V15.1715C347.252 13.9969 348.23 13.0998 349.503 12.4799C350.775 11.86 352.113 11.5501 353.516 11.5501C356.354 11.5501 358.515 12.4391 360 14.2172C361.484 15.9952 362.227 18.2872 362.227 21.0929V36.2636H355.718V22.2185C355.718 20.783 355.351 19.6248 354.617 18.7439C353.883 17.863 352.765 17.4226 351.265 17.4226C349.894 17.4226 348.801 17.8957 347.986 18.8418C347.17 19.7879 346.762 20.9787 346.762 22.4142Z" fill="white"/>
-<path d="M313.211 64.2638C318.224 64.2638 320.862 60.5706 320.862 60.5706L319.015 58.724C319.015 58.724 317.037 61.6258 313.211 61.6258C309.386 61.6258 306.353 58.5921 306.353 54.767C306.353 50.9419 309.386 47.9082 313.211 47.9082C317.037 47.9082 318.883 50.6781 318.883 50.6781L320.73 48.8315C320.73 48.8315 318.224 45.2702 313.211 45.2702C307.672 45.2702 303.451 49.491 303.451 54.767C303.451 60.043 307.672 64.2638 313.211 64.2638ZM324.294 64H327.196V50.4143L333.923 58.9878L340.65 50.4143V64H343.552V45.534H340.914L333.923 54.5032L326.932 45.534H324.294V64ZM353.568 64.2638C357.657 64.2638 360.163 61.7577 360.163 58.8559C360.163 51.9971 350.402 54.5032 350.402 50.4143C350.402 49.0953 351.589 47.9082 353.832 47.9082C356.338 47.9082 357.657 49.6229 357.657 49.6229L359.635 47.6444C359.635 47.6444 357.657 45.2702 353.832 45.2702C349.875 45.2702 347.5 47.6444 347.5 50.4143C347.5 57.2731 357.261 54.767 357.261 58.8559C357.261 60.3068 355.942 61.6258 353.568 61.6258C350.402 61.6258 348.951 59.5154 348.951 59.5154L346.973 61.4939C346.973 61.4939 349.083 64.2638 353.568 64.2638Z" fill="#FDFDFD"/>
-</svg>
diff --git a/assets/js/body-start.js b/assets/js/body-start.js
deleted file mode 100644 (file)
index f9b5966..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-import { initColorScheme } from './alpinejs/stores/index';
-
-(function () {
-       // This allows us to initialize the color scheme before AlpineJS etc. is loaded.
-       initColorScheme();
-})();
index 250bdd6cba2b201f3db659a7f051dc78e8eaaae6..b21eb58a23c093a2120bd199cfd858ca1434d65e 100644 (file)
@@ -1,6 +1,10 @@
 import { scrollToActive } from 'js/helpers/index';
+import { initColorScheme } from './alpinejs/stores/index';
 
 (function () {
+       // This allows us to initialize the color scheme before AlpineJS etc. is loaded.
+       initColorScheme();
+
        // Now we know that the browser has JS enabled.
        document.documentElement.classList.remove('no-js');
 
index 14440044b78101ccf332006cb7ded4184e115bae..c12be19faa2477dff6f588f8c04e77a68b561a5a 100644 (file)
@@ -8,14 +8,6 @@ import focus from '@alpinejs/focus';
 
 var debug = 0 ? console.log.bind(console, '[index]') : function () {};
 
-// Turbolinks init.
-(function () {
-       document.addEventListener('turbo:render', function (e) {
-               // This is also called right after the body start. This is added to prevent flicker on navigation.
-               initColorScheme();
-       });
-})();
-
 // Set up and start Alpine.
 (function () {
        // Register AlpineJS plugins.
index f27d9d56bf2b557f2b5ad8e91d448472cea7f0a4..2a0b1ac098bcbddc98a5b1e30ce1e479cb7a165f 100644 (file)
@@ -29,6 +29,7 @@ Please refer to the relevant documentation for installation instructions:
 
 [cloudcannon]: https://cloudcannon.com/
 [cloudflare pages]: https://pages.cloudflare.com/
+[commit information]: /methods/page/GitInfo
 [dart sass install]: /functions/css/sass/#dart-sass
 [dart sass]: https://sass-lang.com/dart-sass
 [git install]: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
@@ -37,4 +38,5 @@ Please refer to the relevant documentation for installation instructions:
 [gitlab pages]: https://docs.gitlab.com/ee/user/project/pages/
 [go install]: https://go.dev/doc/install
 [go]: https://go.dev/
+[hugo modules]: /hugo-modules/
 [netlify]: https://www.netlify.com/
index c72a68bee0891e0b2a705399821d1bfb9de6efd7..aa8268fcd138443f74c16fc96aad42dfa5b6182a 100644 (file)
@@ -15,3 +15,5 @@ Prebuilt binaries are available for a variety of operating systems and architect
 Please consult your operating system documentation if you need help setting file permissions or modifying your PATH environment variable.
 
 If you do not see a prebuilt binary for the desired edition, operating system, and architecture, install Hugo using one of the methods described below.
+
+[latest release]: https://github.com/gohugoio/hugo/releases/latest
index 3ce245f4a28e7c953b8ebb93be3b78c78e04ae2d..fb2588d8a5a23f1986ca43e22bdb2d27173b9b31 100644 (file)
@@ -7,7 +7,7 @@ _comment: Do not remove front matter.
 To build the extended or extended/deploy edition from source you must:
 
 1. Install [Git]
-1. Install [Go] version 1.23.0 or later
+1. Install [Go] version 1.24.0 or later
 1. Install a C compiler, either [GCC] or [Clang]
 1. Update your `PATH` environment variable as described in the [Go documentation]
 
index 14f48174ef68e0e9cd8e0915007a6d1a5b30f6de..bc7902c00e01030d132b50ac11ce7e45e88e2b3f 100644 (file)
@@ -4,7 +4,7 @@ _comment: Do not remove front matter.
 
 ### Homebrew
 
-[Homebrew] is a free and open-source package manager for macOS and Linux. To install the extended edition of Hugo:
+[Homebrew] is a free and open-source package manager for macOS and Linux. To install the extended/deploy edition of Hugo:
 
 ```sh
 brew install hugo
index f2c16e100c65d8312d77c3b5a0c60f9f129c7078..aac412576a2045fd86184549a509899d0b3d0a5e 100644 (file)
@@ -26,9 +26,17 @@ _comment: Do not remove front matter.
 `:section`
 : The content's section.
 
+`:sectionslug`
+: {{< new-in 0.149.0 />}}
+: The content's section using slugified section name. The slugified section name is the `slug` as defined in front matter, else the `title` as defined in front matter, else the automatic title.
+
 `:sections`
 : The content's sections hierarchy. You can use a selection of the sections using _slice syntax_: `:sections[1:]` includes all but the first, `:sections[:last]` includes all but the last, `:sections[last]` includes only the last, `:sections[1:2]` includes section 2 and 3. Note that this slice access will not throw any out-of-bounds errors, so you don't have to be exact.
 
+`:sectionslugs`
+: {{< new-in 0.149.0 />}}
+: The content's sections hierarchy using slugified section names. The slugified section name is the `slug` as defined in front matter, else the `title` as defined in front matter, else the automatic title. You can use a selection of the sections using _slice syntax_: `:sectionslugs[1:]` includes all but the first, `:sectionslugs[:last]` includes all but the last, `:sectionslugs[last]` includes only the last, `:sectionslugs[1:2]` includes section 2 and 3. Note that this slice access will not throw any out-of-bounds errors, so you don't have to be exact.
+
 `:title`
 : The `title` as defined in front matter, else the automatic title. Hugo generates titles automatically for section, taxonomy, and term pages that are not backed by a file.
 
index 3efbc9ce3e8db0e0a98650bd6fd1490890a68394..2068b28dbf983a5632fb04b4e46aa78004feafdf 100644 (file)
@@ -43,5 +43,5 @@ As a practical example, Hugo's embedded link and image render hooks use the `Pag
 
 [`RenderShortcodes`]: /methods/page/rendershortcodes/
 [Markdown notation]: /content-management/shortcodes/#notation
-[Embedded link render hook]: {{% eturl render-link %}}
-[Embedded image render hook]: {{% eturl render-image %}}
+[Embedded link render hook]: <{{% eturl render-link %}}>
+[Embedded image render hook]: <{{% eturl render-image %}}>
index 9586d08f8def0b98cdc4ac343df16f2694534868..3d56b9570f5aa2e9e9ac4a9ee7d59c7cc5cd16a3 100644 (file)
@@ -28,7 +28,7 @@ Learn more about Hugo's [features], [privacy protections], and [security model].
 [Hugo Modules]: /hugo-modules/
 [static site generator]: https://en.wikipedia.org/wiki/Static_site_generator
 [features]: /about/features/
-[security model]: about/security/
+[security model]: /about/security/
 [privacy protections]: /configuration/privacy
 
 {{< youtube 0RKpf3rK57I >}}
index 2863e46b407191ba067ac79bc67abbad749a98d1..78cc62f88d4ac7cf4462bddf2e4620fc218ca40f 100644 (file)
@@ -24,6 +24,8 @@ hugo gen chromastyles [flags] [args]
       --highlightStyle string           foreground and background colors for highlighted lines, e.g. --highlightStyle "#fff000 bg:#000fff"
       --lineNumbersInlineStyle string   foreground and background colors for inline line numbers, e.g. --lineNumbersInlineStyle "#fff000 bg:#000fff"
       --lineNumbersTableStyle string    foreground and background colors for table line numbers, e.g. --lineNumbersTableStyle "#fff000 bg:#000fff"
+      --omitClassComments               omit CSS class comment prefixes in the generated CSS
+      --omitEmpty                       omit empty CSS rules (deprecated, no longer needed)
       --style string                    highlighter style (see https://xyproto.github.io/splash/docs/) (default "friendly")
 ```
 
index 2788ef16888ef79b8a63e40a6641e74e365a1947..56ab4aef96f71c8451c525fc8fb69c0aa60264df 100644 (file)
@@ -45,6 +45,6 @@ Ensure you run this within the root directory of your site.
 
 * [hugo](/commands/hugo/)       - Build your site
 * [hugo new content](/commands/hugo_new_content/)       - Create new content
-* [hugo new site](/commands/hugo_new_site/)     - Create a new site (skeleton)
-* [hugo new theme](/commands/hugo_new_theme/)   - Create a new theme (skeleton)
+* [hugo new site](/commands/hugo_new_site/)     - Create a new site
+* [hugo new theme](/commands/hugo_new_theme/)   - Create a new theme
 
index 0f0096ae4940398a752095dd347a0215288c42d0..ccf74bc6f5420ce56f7b366287eb07e5f6d7623a 100644 (file)
@@ -5,13 +5,11 @@ url: /commands/hugo_new_site/
 ---
 ## hugo new site
 
-Create a new site (skeleton)
+Create a new site
 
 ### Synopsis
 
-Create a new site in the provided directory.
-The new site will have the correct structure, but no content or theme yet.
-Use `hugo new [contentPath]` to create new content.
+Create a new site at the specified path.
 
 ```
 hugo new site [path] [flags]
index b1c937bae260b4be3ee871f5277e26c0321d915c..1406600775464e1b52d04b5c4d1e9b2082f248c4 100644 (file)
@@ -5,14 +5,12 @@ url: /commands/hugo_new_theme/
 ---
 ## hugo new theme
 
-Create a new theme (skeleton)
+Create a new theme
 
 ### Synopsis
 
-Create a new theme (skeleton) called [name] in ./themes.
-New theme is a skeleton. Please add content to the touched files. Add your
-name to the copyright line in the license and adjust the theme.toml file
-according to your needs.
+Create a new theme with the specified name in the ./themes directory.
+This generates a functional theme including template examples and sample content.
 
 ```
 hugo new theme [name] [flags]
@@ -21,7 +19,8 @@ hugo new theme [name] [flags]
 ### Options
 
 ```
-  -h, --help   help for theme
+      --format string   preferred file format (toml, yaml or json) (default "toml")
+  -h, --help            help for theme
 ```
 
 ### Options inherited from parent commands
index c733e0a99df66c5a65a76abfd24826b45a0620cf..2d6178e5b0c2011d1aa8986d05cc2942b2206449 100644 (file)
@@ -47,7 +47,7 @@ cascade
 : See [configure cascade](/configuration/cascade/).
 
 cleanDestinationDir
-: (`bool`) Whether to remove files from the site's destination directory that do not have corresponding files in the `static` directory during the build. Default is `false`.
+: (`bool`) Whether to remove files from the [`publishDir`](#publishdir) that do not exist in the [`staticDir`](#staticdir) when building the site. This setting will not take effect if the `staticDir` does not exist. Note that `.gitignore` and `.gitattributes` files, along with directories named `.git`, are always preserved in the `publishDir`. Default is `false`.
 
 contentDir
 : (`string`) The designated directory for content files. Default is `content`. {{% module-mounts-note %}}
@@ -262,7 +262,7 @@ staticDir
 : (`string`) The designated directory for static files. Default is `static`. {{% module-mounts-note %}}
 
 summaryLength
-: (`int`) Applicable to [automatic summaries], the minimum number of words returned by the [`Summary`] method on a `Page` object. The `Summary` method will return content truncated at the paragraph boundary closest to the specified `summaryLength`, but at least this minimum number of words.
+: (`int`) Applicable to [automatic summaries], the minimum number of words returned by the [`Summary`] method on a `Page` object. The `Summary` method will return content truncated at the paragraph boundary closest to the specified `summaryLength`, but at least this minimum number of words. Default is `70`.
 
 taxonomies
 : See [configure taxonomies](/configuration/taxonomies/).
@@ -350,9 +350,9 @@ Some configuration settings, such as menus and custom parameters, can be defined
 [Chicago Manual of Style]: https://www.chicagomanualofstyle.org/home.html
 [default front matter configuration]: /configuration/front-matter/
 [duration]: https://pkg.go.dev/time#Duration
-[embedded alias template]: {{% eturl alias %}}
-[embedded Open Graph template]: {{% eturl opengraph %}}
-[embedded RSS template]: {{% eturl rss %}}
+[embedded alias template]: <{{% eturl alias %}}>
+[embedded Open Graph template]: <{{% eturl opengraph %}}>
+[embedded RSS template]: <{{% eturl rss %}}>
 [IANA Time Zone Database]: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
 [module mounts]: /configuration/module/#mounts
 [os.UserCacheDir]: https://pkg.go.dev/os#UserCacheDir
index 85b221df2e49948bf816017947fff929a0ba7804..9a1fda4c6f1abb9e4208f3ef08ffe420b1d312d0 100644 (file)
@@ -14,7 +14,6 @@ You can configure your site to cascade front matter values to the home page and
 For example, to cascade a "color" parameter to the home page and all its descendants:
 
 {{< code-toggle file=hugo >}}
-title = 'Home'
 [cascade.params]
 color = 'red'
 {{< /code-toggle >}}
@@ -61,14 +60,14 @@ Define an array of cascade parameters to apply different values to different tar
 [cascade.params]
 color = 'red'
 [cascade.target]
-path = '{/books/**}'
+path = '/books/**'
 kind = 'page'
 lang = '{en,de}'
 [[cascade]]
 [cascade.params]
 color = 'blue'
 [cascade.target]
-path = '{/films/**}'
+path = '/films/**'
 kind = 'page'
 environment = 'production'
 {{< /code-toggle >}}
index a97648b6151e17fa9a392ab3c33bbf37fda457cf..edffd302dcccb1b29fbd66012903fabe843d26a4 100644 (file)
@@ -90,10 +90,11 @@ Consider this site configuration:
 {{< code-toggle file=hugo >}}
 [frontmatter]
 date = [':filename', ':default']
+publishDate = [':filename', ':default']
 lastmod = ['lastmod', ':fileModTime']
 {{< /code-toggle >}}
 
-To determine `date`, Hugo tries to extract the date from the file name, falling back to the default ordered sequence of date fields.
+To determine `date` and `publishDate`, Hugo tries to extract the value from the file name, falling back to the default ordered sequence of date fields.
 
 To determine `lastmod`, Hugo looks for a `lastmod` field in front matter, falling back to the file's last modification timestamp.
 
index 788d22a081b578ae6fe0228b98af50f30d5a25c1..c48c9cbcd6370b1ac5a3f5946e42608ceb94dd65 100644 (file)
@@ -44,20 +44,42 @@ The HTTP cache involves two key aspects: determining which content to cache (the
 
 The HTTP cache behavior is defined for a configured set of resources. Stale resources will be refreshed from the file cache, even if their configured Time-To-Live (TTL) has not expired. If HTTP caching is disabled for a resource, Hugo will bypass the cache and access the file directly.
 
-The default configuration disables everything:
+This is the default configuration for HTTP caching:
 
-{{< code-toggle file=hugo >}}
-[HTTPCache.cache.for]
-excludes = ['**']
-includes = []
-{{< /code-toggle >}}
+{{< code-toggle config=HTTPCache />}}
+
+respectCacheControlNoStoreInRequest
+: {{< new-in 0.151.0 />}}
+: (`bool`) Whether to respect the `no-store` directive in the server's `Cache-Control` request header when fetching remote resources via the [`resources.GetRemote`][] function. Default is `true`.
+
+respectCacheControlNoStoreInResponse
+: {{< new-in 0.151.0 />}}
+: (`bool`) Whether to respect the `no-store` directive in the server's `Cache-Control` response header when fetching remote resources via the [`resources.GetRemote`][] function. Default is `false`.
 
 cache.for.excludes
-: (`string`) A list of [glob](g) patterns to exclude from caching.
+: (`string`) A list of [glob](g) patterns to exclude from caching. In its default configuration HTTP caching excludes all files.
 
 cache.for.includes
 : (`string`) A list of [glob](g) patterns to cache.
 
+polls
+: A slice of polling configurations.
+
+polls.disable
+: (`bool`) Whether to disable polling for this configuration. Default is `true`.
+
+polls.high
+: (`string`) The maximum polling interval expressed as a [duration](g). This is used when the resource is considered stable. Default is `0s`.
+
+polls.low
+: (`string`) The minimum polling interval expressed as a [duration](g). This is used after a recent change and gradually increases towards `polls.high`. Default is `0s`.
+
+polls.for.excludes
+: (`string`) A list of [glob](g) patterns to exclude from polling for this configuration.
+
+polls.for.includes
+: (`string`) A list of [glob](g) patterns to include in polling for this configuration.
+
 ## HTTP polling
 
 Polling is used in watch mode (e.g., `hugo server`) to detect changes in remote resources. Polling can be enabled even if HTTP caching is disabled. Detected changes trigger a rebuild of pages using the affected resource. Polling can be disabled for specific resources, typically those known to be static.
@@ -78,13 +100,13 @@ polls
 : A slice of polling configurations.
 
 polls.disable
-: (`bool`) Whether to disable polling for this configuration.
-
-polls.low
-: (`string`) The minimum polling interval expressed as a [duration](g). This is used after a recent change and gradually increases towards `polls.high`.
+: (`bool`) Whether to disable polling for this configuration. Default is `true`.
 
 polls.high
-: (`string`) The maximum polling interval expressed as a [duration](g). This is used when the resource is considered stable.
+: (`string`) The maximum polling interval expressed as a [duration](g). This is used when the resource is considered stable. Default is `0s`.
+
+polls.low
+: (`string`) The minimum polling interval expressed as a [duration](g). This is used after a recent change and gradually increases towards `polls.high`. Default is `0s`.
 
 polls.for.excludes
 : (`string`) A list of [glob](g) patterns to exclude from polling for this configuration.
index 540cfd34f407d48784358e94c3980129cd7e7ff0..72fee25d3dadfef94ada8ca823610e694f27ffa7 100644 (file)
@@ -185,9 +185,9 @@ public
 [`Language.LanguageName`]: /methods/site/language/#languagename
 [`Language.Weight`]: /methods/site/language/#weight
 [`Title`]: /methods/site/title/
-[embedded alias template]: {{% eturl alias %}}
-[embedded OpenGraph template]: {{% eturl opengraph %}}
-[embedded RSS template]: {{% eturl rss %}}
+[embedded alias template]: <{{% eturl alias %}}>
+[embedded OpenGraph template]: <{{% eturl opengraph %}}>
+[embedded RSS template]: <{{% eturl rss %}}>
 [RFC 5646]: https://datatracker.ietf.org/doc/html/rfc5646#section-2.1
 [RFC 5646 § 2.2.7]: https://datatracker.ietf.org/doc/html/rfc5646#section-2.2.7
 [translating by file name]: /content-management/multilingual/#translation-by-file-name
index bf5aac37447851789d05198c6b5dd6f40ac997fc..a34074ae53c1689211e39235385f7352c59a64f7 100644 (file)
@@ -94,9 +94,23 @@ enable = true
 
 With this configuration, to format text as deleted, wrap it with double-tildes.
 
-#### Passthrough
+#### Footnote
+
+Enabled by default, the Footnote extension enables inclusion of footnotes in Markdown.
+
+enable
+: {{< new-in 0.151.0 />}}
+: (`bool`) Whether to enable the Footnotes extension. Default is `true`.
 
-{{< new-in 0.122.0 />}}
+backlinkHTML
+: {{< new-in 0.151.0 />}}
+: (`string`) The HTML to be displayed at the end of a footnote that links the user back to the corresponding reference in the main text. The default is &#x21a9;&#xfe0e; (a return arrow symbol).
+
+enableAutoIDPrefix
+: {{< new-in 0.151.0 />}}
+: (`bool`) Whether to prepend a unique prefix to footnote IDs, preventing clashes when multiple documents are rendered together. This prefix is unique to each logical path, which means that the prefix is not unique across content dimensions such as language. Default is `false`.
+
+#### Passthrough
 
 Enable the Passthrough extension to include mathematical equations and expressions in Markdown using LaTeX markup. See [mathematics in Markdown] for details.
 
@@ -202,7 +216,7 @@ backend
 : (`string`) The backend output file format. Default is `html5`.
 
 extensions
-: (`string array`) An array of enabled extensions, one or more of `asciidoctor-html5s`, `asciidoctor-bibtex`, `asciidoctor-diagram`, `asciidoctor-interdoc-reftext`, `asciidoctor-katex`, `asciidoctor-latex`, `asciidoctor-mathematical`, or `asciidoctor-question`.
+: (`string array`) An array of enabled extensions, such as `asciidoctor-html5s`, `asciidoctor-bibtex`, or `asciidoctor-diagram`.
 
   > [!note]
   > To mitigate security risks, entries in the extension array may not contain forward slashes (`/`), backslashes (`\`), or periods. Due to this restriction, extensions must be in Ruby's `$LOAD_PATH`.
index a530cb73d8e3164995f484bff58c72a4ac182eda..3f010f97436ea00286d011eab10fab338feea0a8 100644 (file)
@@ -10,6 +10,11 @@ This is the default configuration:
 
 {{< code-toggle config=minify />}}
 
-See the [tdewolff/minify] project page for details.
+See the [tdewolff/minify] project page for details, but note the following:
+
+- `css.inline` is for internal use. Changing this setting has no effect.
+- `css.keepCSS2` has been deprecated. Use `css.version` instead.
+- `html.keepConditionalComments` has been deprecated. Use `html.keepSpecialComments` instead.
+- `svg.inline` is for internal use. Changing this setting has no effect.
 
 [tdewolff/minify]: https://github.com/tdewolff/minify
index 4a7267bd6868a7df305d3958d38f0023215d3f28..76fc034de8376289a326530733c1f7a14aabf24f 100644 (file)
@@ -7,6 +7,8 @@ keywords: []
 aliases: [/hugo-modules/configuration/]
 ---
 
+{{% include "/_common/gomodules-info.md" %}}
+
 ## Top-level options
 
 This is the default configuration:
@@ -40,7 +42,7 @@ proxy
 : (`string`) The proxy server to use to download remote modules. Default is `direct`, which means `git clone` and similar.
 
 replacements
-: (`string`) Primarily useful for local module development, a comma-separated list of mappings from module paths to directories. Paths may be absolute or relative to the [`themesDir`].
+: (`string`) Primarily useful for local module development, a comma-separated list of mappings from module paths to directories. Paths may be absolute or relative to the [`themesDir`][].
 
   {{< code-toggle file=hugo >}}
   [module]
@@ -61,8 +63,6 @@ export HUGO_MODULE_REPLACEMENTS="github.com/bep/my-theme -> ../.."
 export HUGO_MODULE_WORKSPACE="/my/hugo.work"
 ```
 
-{{% include "/_common/gomodules-info.md" %}}
-
 ## Hugo version
 
 You can specify a required Hugo version for your module in the `module` section. Users will then receive a warning if their Hugo version is incompatible.
@@ -77,7 +77,7 @@ extended
 : (`bool`) Whether the extended edition of Hugo is required, satisfied by installing either the extended or extended/deploy edition.
 
 max
-: (`string`) The maximum Hugo version supported, for example `0.148.0`.
+: (`string`) The maximum Hugo version supported, for example `0.152.2`.
 
 min
 : (`string`) The minimum Hugo version supported, for example `0.102.0`.
@@ -110,32 +110,36 @@ noVendor
 : (`bool`) Whether to disable vendoring for this import. This setting is restricted to the main project. Default is `false`.
 
 path
-: (`string`) The module path, either a valid Go module path (e.g., `github.com/gohugoio/myShortcodes`) or the directory name if stored in the [`themesDir`].
+: (`string`) The module path, either a valid Go module path (e.g., `github.com/gohugoio/myShortcodes`) or the directory name if stored in the [`themesDir`][].
 
-{{% include "/_common/gomodules-info.md" %}}
+version
+: {{< new-in 0.150.0 />}}
+: If set to a [version query](https://go.dev/ref/mod#version-queries), this import becomes a direct dependency, in contrast to dependencies managed by Go Modules. See [this issue](https://github.com/gohugoio/hugo/pull/13966) for more information.
 
 ## Mounts
 
-Before Hugo v0.56.0, custom component paths could only be configured by setting [`archetypeDir`], [`assetDir`], [`contentDir`], [`dataDir`], [`i18nDir`], [`layoutDi`], or [`staticDir`] in the site configuration. Module mounts offer greater flexibility than these legacy settings, but
-you cannot use both.
+{{% glossary-term mount %}}
 
-[`archetypeDir`]: /configuration/all/
-[`assetDir`]: /configuration/all/
-[`contentDir`]: /configuration/all/
-[`dataDir`]: /configuration/all/
-[`i18nDir`]: /configuration/all/
-[`layoutDi`]: /configuration/all/
-[`staticDir`]: /configuration/all/
+> [!important]
+> If you define one or more mounts to map a file system path to a component path, do not use these legacy configuration settings: [`archetypeDir`][], [`assetDir`][], [`contentDir`][], [`dataDir`][], [`i18nDir`][], [`layoutDir`][], or [`staticDir`][].
 
-> [!note]
-> If you use module mounts do not use the legacy settings.
+[`archetypeDir`]: /configuration/all/#archetypedir
+[`assetDir`]: /configuration/all/#assetdir
+[`contentDir`]: /configuration/all/#contentdir
+[`dataDir`]: /configuration/all/#datadir
+[`i18nDir`]: /configuration/all/#i18ndir
+[`layoutDir`]: /configuration/all/#layoutdir
+[`staticDir`]: /configuration/all/#staticdir
 
 ### Default mounts
 
-> [!note]
-> Adding a new mount to a target root will cause the existing default mount for that root to be ignored. If you still need the default mount, you must explicitly add it along with the new mount.
+Within a project, if you define a mount to map a file system path to a component path, the corresponding default mount for that component will be removed. This action essentially overwrites the standard, automatic mapping for that specific component with your custom one.
+
+Within a module, if you define a mount to map a file system path to a component path, all of the default mounts will be removed. Defining a mount at the module level is a more sweeping change, causing all default mappings within that module to be discarded.
+
+In either case, if you still need one of the default mounts, you must explicitly add it along with the new mount. Because custom mounts override defaults, any necessary default mappings must be re-added manually after you introduce your custom configuration.
 
-The are the default mounts:
+These are the default mounts:
 
 {{< code-toggle config=module.mounts />}}
 
@@ -143,7 +147,7 @@ source
 : (`string`) The source directory of the mount. For the main project, this can be either project-relative or absolute. For other modules it must be project-relative.
 
 target
-: (`string`) Where the mount will reside within Hugo's virtual file system. It must begin with one of Hugo's component directories: `archetypes`, `assets`, `content`, `data`, `i18n`, `layouts`, or `static`. For example, `content/blog`.
+: (`string`) Where the mount will reside within Hugo's [unified file system](g). It must begin with one of Hugo's [component](g) directories: archetypes, assets, content, data, i18n, layouts, or static. For example, content/blog.
 
 disableWatch
 : {{< new-in 0.128.0 />}}
index db083850423c0f6b08a7cc37f311e4d07720022d..5f7d1ece450647afcc42ac46f690bac091108615 100644 (file)
@@ -44,7 +44,7 @@ archetypes/
 
 Hugo looks for archetypes in the `archetypes` directory in the root of your project, falling back to the `archetypes` directory in themes or installed modules. An archetype for a specific content type takes precedence over the default archetype.
 
-For example, with this command:
+For example, if you have enabled a theme named `my-theme` and you run this command:
 
 ```sh
 hugo new content posts/my-first-post.md
@@ -53,8 +53,8 @@ hugo new content posts/my-first-post.md
 The archetype lookup order is:
 
 1. `archetypes/posts.md`
-1. `archetypes/default.md`
 1. `themes/my-theme/archetypes/posts.md`
+1. `archetypes/default.md`
 1. `themes/my-theme/archetypes/default.md`
 
 If none of these exists, Hugo uses a built-in default archetype.
index 3bcecb60b99e502dc49c37f649968ace85634a8e..763fce2d693e4ddaf8509449d15d419a1504b571 100644 (file)
@@ -256,5 +256,5 @@ Created from <https://arthursonzogni.com/Diagon/#Tree>
 ```
 
 [code block render hook]: /render-hooks/code-blocks/
-[embedded code block render hook]: {{% eturl render-codeblock-goat %}}
+[embedded code block render hook]: <{{% eturl render-codeblock-goat %}}>
 [GoAT]: https://github.com/bep/goat
index 2da6a2613935d4e342e1daeeae665ce6e44aebb4..f0484ef744069db20b4696428dfc4337ec5cb68d 100644 (file)
@@ -47,7 +47,7 @@ build
 : (`map`) A map of [build options].
 
 cascade
-: (`map`) A map of front matter keys whose values are passed down to the page's descendants unless overwritten by self or a closer ancestor's cascade. See the [cascade] section for details.
+: (`map`) A map (or a slice of maps) of front matter keys whose values are passed down to the page's descendants unless overwritten by self or a closer ancestor's cascade. See the [cascade] section for details.
 
 date
 : (`string`) The date associated with the page, typically the creation date. Note that the TOML format also supports unquoted date/time values. See the [dates](#dates) section for examples. Access this value from a template using the [`Date`] method on a `Page` object.
@@ -322,18 +322,18 @@ To override the default time zone, set the [`timeZone`](/configuration/all/#time
 [`lastmod`]: /methods/page/date/
 [`layout`]: /methods/page/layout/
 [`linktitle`]: /methods/page/linktitle/
-[`opengraph.html`]: {{% eturl opengraph %}}
+[`opengraph.html`]: <{{% eturl opengraph %}}>
 [`Param`]: /methods/page/param/
 [`Params`]: /methods/page/params/
 [`publishdate`]: /methods/page/publishdate/
 [`readingtime`]: /methods/page/readingtime/
-[`schema.html`]: {{% eturl schema %}}
+[`schema.html`]: <{{% eturl schema %}}>
 [`sitemap`]: /methods/page/sitemap/
 [`slug`]: /methods/page/slug/
 [`Summary`]: /methods/page/summary/
 [`title`]: /methods/page/title/
 [`translationkey`]: /methods/page/translationkey/
-[`twitter_cards.html`]: {{% eturl twitter_cards %}}
+[`twitter_cards.html`]: <{{% eturl twitter_cards %}}>
 [`type`]: /methods/page/type/
 [`weight`]: /methods/page/weight/
 [`wordcount`]: /methods/page/wordcount/
index 8d60c4f93801e236656f8b5d0dce3ccec30a134a..3cf8aa4fdc5b6d2e6636cb963d0bdee61783c3d6 100644 (file)
@@ -105,8 +105,6 @@ The `image` resource implements the  [`Process`],  [`Resize`], [`Fit`], [`Fill`]
 
 ### Process
 
-{{< new-in 0.119.0 />}}
-
 > [!note]
 > The `Process` method is also available as a filter, which is more effective if you need to apply multiple filters to an image. See [Process filter](/functions/images/process).
 
index aaa8c23946d6a961c3f12a4a12e4424470f8292f..5414a00f955b30dae45c4187eee8fba11d045c86 100644 (file)
@@ -6,13 +6,11 @@ categories: []
 keywords: []
 ---
 
-{{< new-in 0.122.0 />}}
-
 ## Overview
 
-Mathematical equations and expressions written in [LaTeX] are common in academic and scientific publications. Your browser typically renders this mathematical markup using an open-source JavaScript display engine such as [MathJax] or [KaTeX].
+Mathematical equations and expressions written in [LaTeX][] are common in academic and scientific publications. Your browser typically renders this mathematical markup using an open-source JavaScript display engine such as [MathJax][] or [KaTeX][].
 
-For example, with this LaTeX markup:
+For example, this LaTeX markup:
 
 ```text
 \[
@@ -23,7 +21,7 @@ JS(\hat{y} || y) &= \frac{1}{2}(KL(y||\frac{y+\hat{y}}{2}) + KL(\hat{y}||\frac{y
 \]
 ```
 
-The MathJax display engine renders this:
+Is rendered to:
 
 \[
 \begin{aligned}
@@ -37,7 +35,7 @@ Equations and expressions can be displayed inline with other text, or as standal
 Whether an equation or expression appears inline, or as a block, depends on the delimiters that surround the mathematical markup. Delimiters are defined in pairs, where each pair consists of an opening and closing delimiter. The opening and closing delimiters may be the same, or different.
 
 > [!note]
-> You can configure Hugo to render mathematical markup on the client side using the MathJax or KaTeX display engine, or you can render the markup with the [`transform.ToMath`] function while building your site.
+> You can configure Hugo to render mathematical markup on the client side using the MathJax or KaTeX display engine, or you can render the markup with the [`transform.ToMath`][] function while building your site.
 >
 > The first approach is described below.
 
@@ -46,7 +44,7 @@ Whether an equation or expression appears inline, or as a block, depends on the
 Follow these instructions to include mathematical equations and expressions in your Markdown using LaTeX markup.
 
 Step 1
-: Enable and configure the Goldmark [passthrough extension] in your site configuration. The passthrough extension preserves raw Markdown within delimited snippets of text, including the delimiters themselves.
+: Enable and configure the Goldmark [passthrough extension][] in your site configuration. The passthrough extension preserves raw Markdown within delimited snippets of text, including the delimiters themselves.
 
   {{< code-toggle file=hugo copy=true >}}
   [markup.goldmark.extensions.passthrough]
@@ -60,12 +58,12 @@ Step 1
   math = true
   {{< /code-toggle >}}
 
-  The configuration above enables mathematical rendering on every page unless you set the `math` parameter to `false` in front matter. To enable mathematical rendering as needed, set the `math` parameter to `false` in your site configuration, and set the `math` parameter to `true` in front matter. Use this parameter in your base template as shown in [Step 3](#step-3).
+  The configuration above enables mathematical rendering on every page unless you set the `math` parameter to `false` in front matter. To enable mathematical rendering as needed, set the `math` parameter to `false` in your site configuration, and set the `math` parameter to `true` in front matter. Use this parameter in your base template as shown in [Step 3][].
 
   > [!note]
   > The configuration above precludes the use of the `$...$` delimiter pair for inline equations. Although you can add this delimiter pair to the configuration and JavaScript, you must double-escape the `$` symbol when used outside of math contexts to avoid unintended formatting.
   >
-  > See the [inline delimiters](#inline-delimiters) section for details.
+  > See the [inline delimiters][] section for details.
 
   To disable passthrough of inline snippets, omit the `inline` key from the configuration:
 
@@ -74,7 +72,7 @@ Step 1
   block = [['\[', '\]'], ['$$', '$$']]
   {{< /code-toggle >}}
 
-  You can define your own opening and closing delimiters, provided they match the delimiters that you set in [Step 2].
+  You can define your own opening and closing delimiters, provided they match the delimiters that you set in [Step 2][].
 
   {{< code-toggle file=hugo >}}
   [markup.goldmark.extensions.passthrough.delimiters]
@@ -83,10 +81,11 @@ Step 1
   {{< /code-toggle >}}
 
 Step 2
-: Create a _partial_ template to load MathJax or KaTeX. The example below loads MathJax, or you can use KaTeX as described in the [engines](#engines) section.
+: Create a _partial_ template to load MathJax or KaTeX. The example below loads MathJax, or you can use KaTeX as described in the [engines][] section.
 
   ```go-html-template {file="layouts/_partials/math.html" copy=true}
-  <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js"></script>
+  <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@4/tex-mml-chtml.js"></script>
+
   <script>
     MathJax = {
       tex: {
@@ -165,35 +164,35 @@ I will give you \\$2 if you can solve $y = x^2$.
 ```
 
 > [!note]
-> If you use the `$...$` delimiter pair for inline equations, and occasionally use the&nbsp;`$`&nbsp;symbol outside of math contexts, you must use MathJax instead of KaTeX to avoid unintended formatting caused by [this KaTeX limitation](https://github.com/KaTeX/KaTeX/issues/437).
+> If you use the `$...$` delimiter pair for inline equations, and occasionally use the&nbsp;`$`&nbsp;symbol outside of math contexts, you must use MathJax instead of KaTeX to avoid unintended formatting caused by [this KaTeX limitation][].
 
 ## Engines
 
-MathJax and KaTeX are open-source JavaScript display engines. Both engines are fast, but at the time of this writing MathJax v3.2.2 is slightly faster than KaTeX v0.16.11.
+MathJax and KaTeX are open-source JavaScript display engines.
 
 > [!note]
-> If you use the `$...$` delimiter pair for inline equations, and occasionally use the&nbsp;`$`&nbsp;symbol outside of math contexts, you must use MathJax instead of KaTeX to avoid unintended formatting caused by [this KaTeX limitation](https://github.com/KaTeX/KaTeX/issues/437).
+> If you use the `$...$` delimiter pair for inline equations, and occasionally use the&nbsp;`$`&nbsp;symbol outside of math contexts, you must use MathJax instead of KaTeX to avoid unintended formatting caused by [this KaTeX limitation][].
 >
->See the [inline delimiters](#inline-delimiters) section for details.
+>See the [inline delimiters][] section for details.
 
-To use KaTeX instead of MathJax, replace the _partial_ template from [Step 2] with this:
+To use KaTeX instead of MathJax, replace the _partial_ template from [Step 2][] with this:
 
 ```go-html-template {file="layouts/_partials/math.html" copy=true}
 <link
   rel="stylesheet"
-  href="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/katex.min.css"
-  integrity="sha384-zh0CIslj+VczCZtlzBcjt5ppRcsAmDnRem7ESsYwWwg3m/OaJ2l4x7YBZl9Kxxib"
+  href="https://cdn.jsdelivr.net/npm/katex@0.16.25/dist/katex.min.css"
+  integrity="sha384-WcoG4HRXMzYzfCgiyfrySxx90XSl2rxY5mnVY5TwtWE6KLrArNKn0T/mOgNL0Mmi"
   crossorigin="anonymous"
 >
 <script
   defer
-  src="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/katex.min.js"
-  integrity="sha384-Rma6DA2IPUwhNxmrB/7S3Tno0YY7sFu9WSYMCuulLhIqYSGZ2gKCJWIqhBWqMQfh"
+  src="https://cdn.jsdelivr.net/npm/katex@0.16.25/dist/katex.min.js"
+  integrity="sha384-J+9dG2KMoiR9hqcFao0IBLwxt6zpcyN68IgwzsCSkbreXUjmNVRhPFTssqdSGjwQ"
   crossorigin="anonymous">
 </script>
 <script
   defer
-  src="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/contrib/auto-render.min.js"
+  src="https://cdn.jsdelivr.net/npm/katex@0.16.25/dist/contrib/auto-render.min.js"
   integrity="sha384-hCXGrW6PitJEwbkoStFjeJxv+fSOOQKOPbJxSfM6G5sWZjAyWhXiTIIAmQqnlLlh"
   crossorigin="anonymous"
   onload="renderMathInElement(document.body);">
@@ -224,10 +223,15 @@ $$C_p[\ce{H2O(l)}] = \pu{75.3 J // mol K}$$
 
 $$C_p[\ce{H2O(l)}] = \pu{75.3 J // mol K}$$
 
-As shown in [Step 2](#step-2) above, MathJax supports chemical equations without additional configuration. To add chemistry support to KaTeX, enable the mhchem extension as described in the KaTeX [documentation](https://katex.org/docs/libs).
+As shown in [Step 2][] above, MathJax supports chemical equations without additional configuration. To add chemistry support to KaTeX, enable the mhchem extension as described in the KaTeX [documentation](https://katex.org/docs/libs).
 
 [`transform.ToMath`]: /functions/transform/tomath/
+[engines]: #engines
+[inline delimiters]: #inline-delimiters
 [KaTeX]: https://katex.org/
 [LaTeX]: https://www.latex-project.org/
 [MathJax]: https://www.mathjax.org/
 [passthrough extension]: /configuration/markup/#passthrough
+[Step 2]: #step-2
+[Step 3]: #step-3
+[this KaTeX limitation]: https://github.com/KaTeX/KaTeX/issues/437
index 4c6b94e3e7071c037edc728086fe0bf019823814..e1f6d8acd81cc1cbe3bcc99d70b72e695148a22a 100644 (file)
@@ -9,7 +9,7 @@ aliases: [/content/sections/]
 
 ## Page bundles
 
-Hugo `0.32` announced page-relative images and other resources packaged into `Page Bundles`.
+Hugo supports page-relative images and other resources packaged into `Page Bundles`.
 
 These terms are connected, and you also need to read about [Page Resources](/content-management/page-resources) and [Image Processing](/content-management/image-processing) to get the full picture.
 
index da61c2c8e520c78e4e8d284b631f0b05d9c7dc68..93386eec2a1ad80711e42b638e56bdb8283614f4 100644 (file)
@@ -33,6 +33,35 @@ This is the first paragraph.
 This is the second paragraph.
 ```
 
+> [!NOTE]
+> Place the summary divider on its own line. Do not place it inline with other content.
+
+Correct placement:
+
+```text {file="content/example.md"}
+---
+title: 'Example'
+---
+
+This is an example of **strong text** in a sentence. This is another sentence.
+
+<!--more-->
+
+This is another paragraph.
+```
+
+Incorrect placement:
+
+```text {file="content/example.md"}
+---
+title: 'Example'
+---
+
+This is an example of **strong text** <!--more--> in a sentence. This is another sentence.
+
+This is another paragraph.
+```
+
 When using the Emacs Org Mode [content format], use a `# more` divider to indicate the end of the summary.
 
 [content format]: /content-management/formats/
@@ -79,6 +108,9 @@ For example, with a `summaryLength` of 7, the automatic summary will be:
 <p>This is the second paragraph.</p>
 ```
 
+> [!warning]
+> Automatic `.Summary` may cut block tags (e.g., `blockquote`) in the middle when `summaryLength` is reached, causing the browser to recover the end tag (the end tag will be inserted before the parent's end tag), resulting in unexpected rendering behavior. To avoid this, wrap `.Summary` in a `<div>`; alternatively, wrap it together with the heading tag using `<section>`. You can avoid this entirely by using a manual summary. See issue [#14044] for details.
+
 ## Comparison
 
 Each summary type has different characteristics:
@@ -121,3 +153,5 @@ Instead of calling the `Summary` method on a `Page` object, use the [`strings.Tr
   </div>
 {{ end }}
 ```
+
+[#14044]: https://github.com/gohugoio/hugo/issues/14044
index 12d96170e1deed05d9a47aaeb36d50ecf7fc10c1..8f990621d3bfba638f32280909f1ff10f220f7e1 100644 (file)
@@ -90,23 +90,20 @@ tags = ['Tag A','Tag B']
 categories = ['Category A','Category B']
 {{< /code-toggle >}}
 
-## Order taxonomies
+## Taxonomic weight
 
-A content file can assign weight for each of its associate taxonomies. Taxonomic weight can be used for sorting or ordering content in taxonomy templates and is declared in a content file's front matter. The convention for declaring taxonomic weight is `taxonomyname_weight`.
+{{% glossary-term "taxonomic weight" %}}
 
-The following show a piece of content that has a weight of 22, which can be used for ordering purposes when rendering the pages assigned to the "a", "b" and "c" values of the `tags` taxonomy. It has also been assigned the weight of 44 when rendering the "d" category page.
+Assign a taxonomic weight using a front matter key named `[taxonomy_name]_weight`.
 
-### Example: taxonomic `weight`
-
-{{< code-toggle file=hugo >}}
-title = "foo"
-tags = [ "a", "b", "c" ]
-tags_weight = 22
-categories = ["d"]
-categories_weight = 44
+{{< code-toggle file="content/courses/organic-chemistry.md" fm=true >}}
+title = 'Organic Chemistry'
+weight = 10
+tags_weight = 1000
+tags = ['chemistry','science']
 {{</ code-toggle >}}
 
-By using taxonomic weight, the same piece of content can appear in different positions in different taxonomies.
+With the front matter above, the "Organic Chemistry" page will float towards the top of the list on section and home pages, and it will sink towards the bottom of the list on the "chemistry" and "science" term pages.
 
 ## Metadata
 
index 2513614ee007975224a62d731cdc3f97303dd58e..fda5f198cba05b5006e1a3291d2e442966098313 100644 (file)
@@ -235,18 +235,15 @@ The alias from the previous URL to the new URL is a client-side redirect:
   <head>
     <title>https://example.org/posts/new-file-name/</title>
     <link rel="canonical" href="https://example.org/posts/new-file-name/">
-    <meta name="robots" content="noindex">
     <meta charset="utf-8">
     <meta http-equiv="refresh" content="0; url=https://example.org/posts/new-file-name/">
   </head>
 </html>
 ```
 
-Collectively, the elements in the `head` section:
+The `link rel="canonical"` tag informs search engines that the new URL is the preferred or "canonical" version of the page. This is crucial for SEO, as it prevents issues with duplicate content by consolidating all ranking signals to a single URL.
 
-- Tell search engines that the new URL is canonical
-- Tell search engines not to index the previous URL
-- Tell the browser to redirect to the new URL
+The `http-equiv="refresh"` meta tag instructs the web browser to automatically redirect the user to the new URL. This ensures that anyone who accesses the old alias URL is seamlessly taken to the correct, updated page.
 
 Hugo renders alias files before rendering pages. A new page with the previous file name will overwrite the alias, as expected.
 
@@ -263,4 +260,4 @@ Page
 [`baseURL`]: /configuration/all/#baseurl
 [removed in a future release]: https://github.com/gohugoio/hugo/issues/4733
 [reserved characters]: https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file#naming-conventions
-[source code]: {{% eturl alias %}}
+[source code]: <{{% eturl alias %}}>
index 5930fbf5254ac497742b3705e42c35045fecc34c..db1a2de6958560d5a6c53cebee202585ef00922c 100644 (file)
@@ -32,7 +32,7 @@ For a complete guide to contributing to Hugo, see the [Contribution Guide].
 To build the extended or extended/deploy edition from source you must:
 
 1. Install [Git]
-1. Install [Go] version 1.23.0 or later
+1. Install [Go] version 1.24.0 or later
 1. Install a C compiler, either [GCC] or [Clang]
 1. Update your `PATH` environment variable as described in the [Go documentation]
 
@@ -102,7 +102,7 @@ Step 7
 : Commit your changes with a descriptive commit message:
 
   - Provide a summary on the first line, typically 50 characters or less, followed by a blank line.
-    - Begin the summary with one of content, theme, config, all, or misc, followed by a colon, a space, and a brief description of the change beginning with a capital letter
+    - Begin the summary with the name of the package, followed by a colon, a space, and a brief description of the change beginning with a capital letter
     - Use imperative present tense
     - See the [commit message guidelines] for requirements
   - Optionally, provide a detailed description where each line is 72 characters or less, followed by a blank line.
@@ -143,7 +143,7 @@ CGO_ENABLED=1 go install -tags extended github.com/gohugoio/hugo@latest
 To build and install a specific release:
 
 ```sh
-CGO_ENABLED=1 go install -tags extended github.com/gohugoio/hugo@v0.148.0
+CGO_ENABLED=1 go install -tags extended github.com/gohugoio/hugo@v0.152.2
 ```
 
 To build and install at the latest commit on the master branch:
index 2ce2db1692a280ee27f4a13b69b601213bdfca80..33f1e8a8922b25690d3e1112e0eb8bf8a1cacd90 100644 (file)
@@ -24,7 +24,15 @@ Follow Google's [developer documentation style guide].
 Adhere to these Markdown conventions:
 
 - Use [ATX] headings (levels 2-4), not [setext] headings.
-- Use [fenced code blocks], not [indented code blocks].
+- Use [collapsed link references][] instead of full or shortcut references. For example:
+
+    ```text
+    This is a [link][].
+
+    [link]: https://example.org
+    ```
+
+- Use [fenced code blocks] instead of [indented code blocks].
 - Use hyphens, not asterisks, for unordered [list items].
 - Use [callouts](#callouts) instead of bold text for emphasis.
 - Do not mix [raw HTML] within Markdown.
@@ -260,6 +268,18 @@ To wrap the code block within an initially-opened `details` element using a non-
 ```
 ````
 
+Whitespace trimming is enabled by default. To override this behavior and preserve leading and trailing spaces:
+
+````text
+```go-html-template {trim=false}
+
+{{ if eq $foo "bar" }}
+  {{ print "foo is bar" }}
+{{ end }}
+
+```
+````
+
 ### Shortcode calls
 
 Use this syntax :
@@ -399,7 +419,7 @@ Use the embedded template URL (`eturl`) shortcode to insert an absolute URL to t
 ```text
 This is a link to the [embedded alias template].
 
-[embedded alias template]: {{%/* eturl alias */%}}
+[embedded alias template]: <{{%/* eturl alias */%}}>
 ```
 
 ### glossary-term
@@ -522,6 +542,7 @@ Step 9
 
 [ATX]: https://spec.commonmark.org/current/#atx-headings
 [basic english]: https://simple.wikipedia.org/wiki/Basic_English
+[collapsed link references]: https://discourse.gohugo.io/t/55714
 [developer documentation style guide]: https://developers.google.com/style
 [documentation repository]: https://github.com/gohugoio/hugoDocs/
 [fenced code blocks]: https://spec.commonmark.org/current/#fenced-code-blocks
diff --git a/content/en/functions/collections/D.md b/content/en/functions/collections/D.md
new file mode 100644 (file)
index 0000000..655ced7
--- /dev/null
@@ -0,0 +1,64 @@
+---
+title: collections.D
+description: Returns a slice of sequentially ordered random integers.
+categories: []
+keywords: [random]
+params:
+  functions_and_methods:
+    returnType: '[]int'
+    signatures: [collections.D SEED N HIGH]
+---
+
+{{< new-in 0.149.0 />}}
+
+The `collections.D` function returns a slice of `N` sequentially ordered unique random integers in the half-open [interval](g) [0, `HIGH`) using the provided [`SEED`](g) value. This function implements J. S. Vitter's Method&nbsp;D[^1] for sequential random sampling, a fast and efficient algorithm for this task.
+
+See [this article][] for a detailed explanation.
+
+## Examples
+
+```go-html-template
+{{ collections.D 6 7 42 }} → [4, 9, 10, 20, 22, 24, 41]
+```
+
+The example above generates the _same_ random numbers each time it is called. To generate a _different_ set of 7 random numbers in the same range, change the seed value.
+
+```go-html-template
+{{ collections.D 2 7 42 }} → [3, 11, 19, 25, 32, 33, 38]
+```
+
+A common use case is the selection of random pages from a page collection. For example, to render a list of 5 random pages using the [day of the year][] as the seed value:
+
+```go-html-template
+<ul>
+  {{ $p := site.RegularPages }}
+  {{ range collections.D time.Now.YearDay 5 ($p | len) }}
+    {{ with (index $p .) }}
+      <li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>
+    {{ end }}
+  {{ end }}
+</ul>
+```
+
+The construct above is significantly faster than using the [`collections.Shuffle`][] function.
+
+## Seed value
+
+Choosing an appropriate seed value depends on your objective.
+
+Objective|Seed example
+:--|:--
+Consistent result|`42`
+Different result on each call|`int time.Now.UnixNano`
+Same result per day|`time.Now.YearDay`
+Same result per page|`hash.FNV32a .Path`
+Different result per page per day|`hash.FNV32a (print .Path time.Now.YearDay)`
+
+> [!note]
+> The slice created by this function is limited to 1 million elements.
+
+[^1]: J. S. Vitter, "An efficient algorithm for sequential random sampling," _ACM Trans. Math. Soft._, vol. 13, pp. 58&ndash;67, Mar. 1987.
+
+[`collections.Shuffle`]: /functions/collections/shuffle/
+[day of the year]: /methods/time/yearday/
+[this article]: https://getkerf.wordpress.com/2016/03/30/the-best-algorithm-no-one-knows-about/
index 9a672278d34b11b9f37c9968316a1c4dfaab652e..d7bd565b95c7ba0ae78c7cfa14db234208834f71 100644 (file)
@@ -11,19 +11,41 @@ params:
 aliases: [/functions/first]
 ---
 
+```go-html-template
+{{ slice "a" "b" "c" | first 1 }} → [a]
+{{ slice "a" "b" "c" | first 2 }} → [a b]
+```
+
+Given that a string is in effect a read-only slice of bytes, this function can be used to return the specified number of bytes from the beginning of the string:
+
+```go-html-template
+{{ "abc" | first 1 }} → a
+{{ "abc" | first 2 }} → ab
+```
+
+Note that a _character_ may consist of multiple _bytes_:
+
+```go-html-template
+{{ "Schön" | first 3 }} → Sch
+{{ "Schön" | first 4 }} → Sch\xc3
+{{ "Schön" | first 5 }} → Schö
+```
+
+To use the `collections.First` function with a page collection:
+
 ```go-html-template
 {{ range first 5 .Pages }}
   {{ .Render "summary" }}
 {{ end }}
 ```
 
-Set `N` to zero to return an empty collection.
+Set `N` to zero to return an empty collection:
 
 ```go-html-template
 {{ $emptyPageCollection := first 0 .Pages }}
 ```
 
-Use `first` and [`where`] together.
+Use `first` and [`where`][] together:
 
 ```go-html-template
 {{ range where .Pages "Section" "articles" | first 5 }}
index 5457df5d4ef17090eccb9f684e90141e629c9f26..d254abf1d11b208d8395dedeeb5fb92741f17553 100644 (file)
@@ -18,7 +18,7 @@ For example, consider this site configuration:
 showHeroImage = false
 {{< /code-toggle >}}
 
-It the value of `showHeroImage` is `true`, we can detect that it exists using either `if` or `with`:
+If the value of `showHeroImage` is `true`, we can detect that it exists using either `if` or `with`:
 
 ```go-html-template
 {{ if site.Params.showHeroImage }}
index f0cfff2197f9038b96a8ac8ea520ef9cc628bee7..9ac60de159de1efaeec8349101e25fcfb2c35799 100644 (file)
@@ -12,18 +12,40 @@ aliases: [/functions/last]
 ---
 
 ```go-html-template
-{{ range last 10 .Pages }}
+{{ slice "a" "b" "c" | last 1 }} → [c]
+{{ slice "a" "b" "c" | last 2 }} → [b c]
+```
+
+Given that a string is in effect a read-only slice of bytes, this function can be used to return the specified number of bytes from the end of the string:
+
+```go-html-template
+{{ "abc" | last 1 }} → c
+{{ "abc" | last 2 }} → bc
+```
+
+Note that a _character_ may consist of multiple _bytes_:
+
+```go-html-template
+{{ "Schön" | last 1 }} → n
+{{ "Schön" | last 2 }} → \xb6n
+{{ "Schön" | last 3 }} → ön
+```
+
+To use the `collections.Last` function with a page collection:
+
+```go-html-template
+{{ range last 5 .Pages }}
   {{ .Render "summary" }}
 {{ end }}
 ```
 
-Set `N` to zero to return an empty collection.
+Set `N` to zero to return an empty collection:
 
 ```go-html-template
 {{ $emptyPageCollection := last 0 .Pages }}
 ```
 
-Use `last` and [`where`] together.
+Use `last` and [`where`][] together:
 
 [`where`]: /functions/collections/where/
 
index e396f07e3b294695a367d5def207d3c09e9c8b2f..d3fb34bfa0fceebc8277e4f9ca15887958122581 100644 (file)
@@ -32,4 +32,4 @@ A contrived example of iterating over a sequence of integers:
 ```
 
 > [!note]
-> The slice created by the `seq` function is limited to 2000 elements.
+> The slice created by this function is limited to 1 million elements.
index 60af0a1bac4c5a2d4db78a3510dd911ad712f4a5..d346a644dc1c22958d8643022874846a480291c4 100644 (file)
@@ -2,7 +2,7 @@
 title: collections.Shuffle
 description: Returns a random permutation of a given array or slice.
 categories: []
-keywords: []
+keywords: [random]
 params:
   functions_and_methods:
     aliases: [shuffle]
@@ -27,3 +27,9 @@ To render an unordered list of 5 random pages from a page collection:
   {{ end }}
 </ul>
 ```
+
+{{< new-in 0.149.0 />}}
+
+Using the [`collections.D`][] function for the same task is significantly faster.
+
+[`collections.D`]: /functions/collections/D/
index f8bd06f063936cb4e4e5e5d1d75815b16393c58f..5925f77502582169e7c2636a00b65662489a4657 100644 (file)
@@ -41,7 +41,7 @@ The `default` function returns the first argument if the second argument is not
 {{ default 42 "" }} → 42
 {{ default 42 dict }} → 42
 {{ default 42 slice }} → 42
-{{ default 42 <nil> }} → 42
+{{ default 42 nil }} → 42
 ```
 
 [`or`]: /functions/go-template/or/
diff --git a/content/en/functions/css/Quoted.md b/content/en/functions/css/Quoted.md
new file mode 100644 (file)
index 0000000..ef3ff65
--- /dev/null
@@ -0,0 +1,73 @@
+---
+title: css.Quoted
+description: Returns the given string, setting its data type to indicate that it must be quoted when used in CSS.
+categories: []
+keywords: []
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: css.QuotedString
+    signatures: [css.Quoted STRING]
+---
+
+<!-- Added in v0.111.0 -->
+
+> [!note]
+> This function is only applicable to the [`vars`] option passed to the [`css.Sass`] function.
+
+When when passing a `vars` map to the `css.Sass` function, Hugo detects common typed CSS values such as `24px` or `#FF0000` using regular expression matching. If necessary, you can bypass automatic type inference by using the `css.Quoted` function to explicitly indicate that the value must be treated as a quoted string.
+
+For example:
+
+```scss {file="assets/sass/main.scss"}
+@use "hugo:vars" as h;
+
+ol li::after {
+  content: h.$ol-li-after;
+}
+
+ul li::after {
+  content: h.$ul-li-after;
+}
+```
+
+```go-html-template {file="layouts/_partials/css.html"}
+{{ $vars := dict
+  "ol_li_after" ("6" | css.Quoted )
+  "ul_li_after" ("7" | css.Quoted )
+}}
+
+{{ with resources.Get "sass/main.scss" }}
+  {{ $opts := dict
+    "enableSourceMap" hugo.IsDevelopment
+    "outputStyle" (cond hugo.IsDevelopment "expanded" "compressed")
+    "targetPath" "css/main.css"
+    "transpiler" "dartsass"
+    "vars" $vars
+  }}
+  {{ with . | toCSS $opts }}
+    {{ if hugo.IsDevelopment }}
+      <link rel="stylesheet" href="{{ .RelPermalink }}">
+    {{ else }}
+      {{ with . | fingerprint }}
+        <link rel="stylesheet" href="{{ .RelPermalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous">
+      {{ end }}
+    {{ end }}
+  {{ end }}
+{{ end }}
+```
+
+The Sass code is transpiled to:
+
+```css {file="public/css/main.css"}
+ol li::after {
+  content: "6";
+}
+
+ul li::after {
+  content: "7";
+}
+```
+
+[`css.Sass`]: /functions/css/sass/
+[`vars`]: /functions/css/sass/#vars
index 4bce2fd06dd5627eb26fc521a3ff25fe3d987abe..c02b4ee4252f5fabfc9352a204b5a1927de260c8 100644 (file)
@@ -14,10 +14,7 @@ params:
 
 Transpile Sass to CSS using the LibSass transpiler included in Hugo's extended and extended/deploy editions, or [install Dart Sass](#dart-sass) to use the latest features of the Sass language.
 
-Sass has two forms of syntax: [SCSS] and [indented]. Hugo supports both.
-
-[scss]: https://sass-lang.com/documentation/syntax#scss
-[indented]: https://sass-lang.com/documentation/syntax#the-indented-syntax
+Sass has two forms of syntax: [SCSS][] and [indented][]. Hugo supports both.
 
 ## Options
 
@@ -45,7 +42,7 @@ sourceMapIncludeSources
 : (`bool`) Whether to embed sources in the generated source map. Applicable to Dart Sass. Default is `false`.
 
 targetPath
-: (`string`) The publish path for the transformed resource, relative to the[`publishDir`]. If unset, the target path defaults to the asset's original path with a `.css` extension.
+: (`string`) The publish path for the transformed resource, relative to the[`publishDir`][]. If unset, the target path defaults to the asset's original path with a `.css` extension.
 
 transpiler
 : (`string`) The transpiler to use, either `libsass` or `dartsass`. Hugo's extended and extended/deploy editions include the LibSass transpiler. To use the Dart Sass transpiler, see the [installation instructions](#dart-sass). Default is `libsass`.
@@ -61,6 +58,8 @@ vars
   @use "hugo:vars" as v;
   ```
 
+  When when passing a `vars` map to the `css.Sass` function, Hugo detects common typed CSS values such as `24px` or `#FF0000` using regular expression matching. If necessary, you can bypass automatic type inference by using the [`css.Quoted`][] or [`css.Unquoted`][] function to explicitly indicate a value's type.
+
 ## Example
 
 ```go-html-template {copy=true}
@@ -87,7 +86,7 @@ vars
 
 ## Dart Sass
 
-Hugo's extended and extended/deploy editions include [LibSass] to transpile Sass to CSS. In 2020, the Sass team deprecated LibSass in favor of [Dart Sass].
+Hugo's extended and extended/deploy editions include [LibSass][] to transpile Sass to CSS. In 2020, the Sass team deprecated LibSass in favor of [Dart Sass].
 
 Use the latest features of the Sass language by installing Dart Sass in your development and production environments.
 
@@ -113,7 +112,7 @@ macOS|Homebrew|[brew.sh]|`brew install sass/sass/sass`
 Windows|Chocolatey|[chocolatey.org]|`choco install sass`
 Windows|Scoop|[scoop.sh]|`scoop install sass`
 
-You may also install [prebuilt binaries] for Linux, macOS, and Windows. You must install the prebuilt binary outside of your project directory and ensure its path is included in your system's PATH environment variable.
+You may also install [prebuilt binaries][] for Linux, macOS, and Windows. You must install the prebuilt binary outside of your project directory and ensure its path is included in your system's PATH environment variable.
 
 Run `hugo env` to list the active transpilers.
 
@@ -127,26 +126,34 @@ To use Dart Sass with Hugo on a CI/CD platform like GitHub Pages, GitLab Pages,
 There's one key exception where you can skip this step: you have committed your `resources` directory to your repository. This is only possible if:
 
 - You have not changed Hugo's default asset cache location.
-- You have not set [`useResourceCacheWhen`] to never in your sites configuration.
+- You have not set [`useResourceCacheWhen`][] to never in your sites configuration.
 
 By committing the `resources` directory, you're providing the pre-built CSS files directly to your CI/CD service, so it doesn't need to run the Sass compilation itself.
 
-For examples of how to install Dart Sass in a production environment, see the following workflow files:
+For examples of how to install Dart Sass in a production environment, see these hosting guides:
 
+- [Cloudflare]
 - [GitHub Pages]
 - [GitLab Pages]
 - [Netlify]
+- [Render]
+- [Vercel]
 
+[`css.Quoted`]: /functions/css/quoted/
+[`css.Unquoted`]: /functions/css/unquoted/
 [`publishDir`]: /configuration/all/#publishdir
 [`useResourceCacheWhen`]: /configuration/build/#useresourcecachewhen
 [brew.sh]: https://brew.sh/
 [chocolatey.org]: https://community.chocolatey.org/packages/sass
-[dart sass]: https://sass-lang.com/dart-sass
-[GitHub Pages]: /host-and-deploy/host-on-github-pages/#step-7
-[GitLab Pages]: /host-and-deploy/host-on-gitlab-pages/#configure-gitlab-cicd
-[libsass]: https://sass-lang.com/libsass
-[Netlify]: /host-and-deploy/host-on-netlify/#configuration-file
+[Cloudflare]: /host-and-deploy/host-on-cloudflare/
+[GitHub Pages]: /host-and-deploy/host-on-github-pages/
+[GitLab Pages]: /host-and-deploy/host-on-gitlab-pages/
+[indented]: https://sass-lang.com/documentation/syntax#the-indented-syntax
+[LibSass]: https://sass-lang.com/libsass
+[Netlify]: /host-and-deploy/host-on-netlify/
 [prebuilt binaries]: https://github.com/sass/dart-sass/releases/latest
+[Render]: /host-and-deploy/host-on-render/
 [scoop.sh]: https://scoop.sh/#/apps?q=sass
-[snap package]: /installation/linux/#snap
+[SCSS]: https://sass-lang.com/documentation/syntax#scss
 [snapcraft.io]: https://snapcraft.io/dart-sass
+[Vercel]: /host-and-deploy/host-on-vercel/
diff --git a/content/en/functions/css/Unquoted.md b/content/en/functions/css/Unquoted.md
new file mode 100644 (file)
index 0000000..c47059b
--- /dev/null
@@ -0,0 +1,73 @@
+---
+title: css.Unquoted
+description: Returns the given string, setting its data type to indicate that it must not be quoted when used in CSS.
+categories: []
+keywords: []
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: css.UnquotedString
+    signatures: [css.Unquoted STRING]
+---
+
+<!-- Added in v0.111.0 -->
+
+> [!note]
+> This function is only applicable to the [`vars`] option passed to the [`css.Sass`] function.
+
+When when passing a `vars` map to the `css.Sass` function, Hugo detects common typed CSS values such as `24px` or `#FF0000` using regular expression matching. If necessary, you can bypass automatic type inference by using the `css.Unquoted` function to explicitly indicate that the value must not be treated as a quoted string.
+
+For example:
+
+```scss {file="assets/sass/main.scss"}
+@use "hugo:vars" as h;
+
+h1 {
+  font-size: h.$font-size-h1;
+}
+
+h2 {
+  font-size: h.$font-size-h2;
+}
+```
+
+```go-html-template {file="layouts/_partials/css.html"}
+{{ $vars := dict
+  "font_size_h1" ("72px * 0.500" | css.Unquoted)
+  "font_size_h2" ("72px * 0.375" | css.Unquoted)
+}}
+
+{{ with resources.Get "sass/main.scss" }}
+  {{ $opts := dict
+    "enableSourceMap" hugo.IsDevelopment
+    "outputStyle" (cond hugo.IsDevelopment "expanded" "compressed")
+    "targetPath" "css/main.css"
+    "transpiler" "dartsass"
+    "vars" $vars
+  }}
+  {{ with . | toCSS $opts }}
+    {{ if hugo.IsDevelopment }}
+      <link rel="stylesheet" href="{{ .RelPermalink }}">
+    {{ else }}
+      {{ with . | fingerprint }}
+        <link rel="stylesheet" href="{{ .RelPermalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous">
+      {{ end }}
+    {{ end }}
+  {{ end }}
+{{ end }}
+```
+
+The Sass rules are transpiled to:
+
+```css {file="public/css/main.css"}
+h1 {
+  font-size: 36px;
+}
+
+h2 {
+  font-size: 27px;
+}
+```
+
+[`css.Sass`]: /functions/css/sass/
+[`vars`]: /functions/css/sass/#vars
index 74395b1302b0c21daa6aadef17773f65c57d3ddf..4d4b02650979ab79ab8a0cacfcbbb2161a5cbb7b 100644 (file)
@@ -10,8 +10,6 @@ params:
     signatures: [debug.Timer NAME] 
 ---
 
-{{< new-in 0.120.0 />}}
-
 Use the `debug.Timer` function to determine execution time for a block of code, useful for finding performance bottlenecks in templates.
 
 The timer starts when you instantiate it, and stops when you call its `Stop` method.
diff --git a/content/en/functions/debug/VisualizeSpaces.md b/content/en/functions/debug/VisualizeSpaces.md
new file mode 100644 (file)
index 0000000..39b9158
--- /dev/null
@@ -0,0 +1,17 @@
+---
+title: debug.VisualizeSpaces
+description: Returns the given string with spaces replaced by a visible string.
+categories: []
+keywords: []
+params:
+  functions_and_methods:
+    aliases: []
+    returnType: string
+    signatures: [debug.VisualizeSpaces STRING]
+---
+
+<!-- Added in v0.112.0 -->
+
+```go-html-template
+{{ debug.VisualizeSpaces "foo  bar" }} → foo[SPACE][SPACE]bar
+```
index 5f6fcf1da43d6e8040782269d5abb924ea999af4..3802b46fdc839fd9596c7d881f4eee7cb46d4e19 100644 (file)
@@ -111,5 +111,5 @@ svg.foo {
 ```
 
 [code block render hook]: /render-hooks/code-blocks/
-[embedded code block render hook]: {{% eturl render-codeblock-goat %}}
+[embedded code block render hook]: <{{% eturl render-codeblock-goat %}}>
 [GoAT]: https://github.com/bep/goat
index b7fe608ff60326ca10730b0ebe8faa03b36ba8bd..6bcda3b1c2af8b8ff968a4d353b40d507aa4bd5f 100644 (file)
@@ -13,4 +13,5 @@ aliases: [/functions/println]
 
 ```go-html-template
 {{ println "foo" }} → foo\n
+{{ println "foo" "bar" }} → foo bar\n
 ```
index 176d8e6bf32d88efb1c83649499626d9e9688458..1070d27ac36861635a00e3ece327724aaa668a36 100644 (file)
@@ -11,5 +11,5 @@ params:
 ---
 
 ```go-html-template
-{{ hugo.Generator }} → <meta name="generator" content="Hugo 0.148.0">
+{{ hugo.Generator }} → <meta name="generator" content="Hugo 0.152.2">
 ```
index cea923acd3162ef7a750e5c540420dec8ac1c4cb..2392c54ea71898a5e1d095dee93f980a89d29067 100644 (file)
@@ -10,8 +10,6 @@ params:
     signatures: [hugo.IsDevelopment]
 ---
 
-{{< new-in 0.120.0 />}}
-
 ```go-html-template
 {{ hugo.IsDevelopment }} → true/false
 ```
index 840ff060df60c9dd27239655285b37c7f8deac7f..771d4eb71bd65970b19f7bc6a6791b69afe40dbd 100644 (file)
@@ -10,8 +10,6 @@ params:
     signatures: [hugo.IsServer]
 ---
 
-{{< new-in 0.120.0 />}}
-
 ```go-html-template
 {{ hugo.IsServer }} → true/false
 ```
index 33827737a5a389a917b3d30cb08c88dd6984ae9e..babd4238ae061f047f400eb4e08b1150b7226079 100644 (file)
@@ -11,5 +11,5 @@ params:
 ---
 
 ```go-html-template
-{{ hugo.Version }} → 0.148.0
+{{ hugo.Version }} → 0.152.2
 ```
index fd8d2ed141112ab3f4adc64c3b4a59e5b925454e..4563e69f2d01f75545f160f1a3eb4ababaa32397 100644 (file)
@@ -10,8 +10,6 @@ params:
     signatures: [images.AutoOrient]
 ---
 
-{{< new-in 0.121.2 />}}
-
 ## Usage
 
 Create the filter:
index b9dcf3fd2ecf32d9ab5bbeec7c42dab354e71658..2105aea7834d7cb2329e1b6ee042b00e5b2f8393 100644 (file)
@@ -10,8 +10,6 @@ params:
     signatures: [images.Opacity OPACITY]
 ---
 
-{{< new-in 0.119.0 />}}
-
 The opacity value must be in the range [0, 1]. A value of `0` produces a transparent image, and a value of `1` produces an opaque image (no transparency).
 
 ## Usage
index da15a44cac3fa9f90fffaa021887c5f7d8f9ff46..8e6d05c01c7df50a4b86274d5112e52fd91a6678 100644 (file)
@@ -10,8 +10,6 @@ params:
     signatures: ['images.Padding V1 [V2] [V3] [V4] [COLOR]']
 ---
 
-{{< new-in 0.120.0 />}}
-
 The last argument is the canvas color, expressed as an RGB or RGBA [hexadecimal color]. The default value is `ffffffff` (opaque white). The preceding arguments are the padding values, in pixels, using the CSS [shorthand property] syntax. Negative padding values will crop the image.
 
 [hexadecimal color]: https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color
index 134c40c5a7792e419f22eee0422f61051d723aee..a5aefc74c9ba7b1d2f25880d15308d79da672bb8 100644 (file)
@@ -10,8 +10,6 @@ params:
     signatures: [images.Process SPEC]
 ---
 
-{{< new-in 0.119.0 />}}
-
 This filter has the same options as the [`Process`] method on a `Resource` object, but using it as a filter may be more effective if you need to apply multiple filters to an image.
 
 [`Process`]: /methods/resource/process/
index 360f986568143d6068bda6da01829d88c337f4e2..9e6a33c8881b5c8f5b73cd18e8254317ac99e1e1 100644 (file)
@@ -150,8 +150,8 @@ Returns an [OptionsSetter] that can be used to set [build options] for the batch
 These are mostly the same as for `js.Build`, but note that:
 
 - `targetPath` is set automatically (there may be multiple outputs).
-- ``format` must be `esm`, currently the only format supporting [code splitting].
-- ``params` will be available in the `@params/config` namespace in the scripts. This way you can import both the [script] or [runner] params and the [config] params with:
+- `format` must be `esm`, currently the only format supporting [code splitting].
+- `params` will be available in the `@params/config` namespace in the scripts. This way you can import both the [script] or [runner] params and the [config] params with:
 
 ```js
 import * as params from "@params";
@@ -295,6 +295,8 @@ console.log('entrypoints-workaround.js');
 [code splitting]: https://esbuild.github.io/api/#splitting
 [config]: #config
 [ESBuild]: https://github.com/evanw/esbuild
+[group]: #group
+[instance]: #instance
 [JavaScript import]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import
 [js.Batch Demo Repo]: https://github.com/bep/hugojsbatchdemo/
 [OptionsSetter]: #optionssetter
index 00bb0e3f3d8b92ae15ea7888f0c65fba75efcd63..92a10f0160fcfcc12f3a6740cd3ce0c76a757085 100644 (file)
@@ -13,27 +13,27 @@ aliases: [/functions/i18n]
 
 The `lang.Translate` function returns the value associated with given key as defined in the translation table for the current language.
 
-If the key is not found in the translation table for the current language, the `lang.Translate` function falls back to the translation table for the [`defaultContentLanguage`].
+If the key is not found in the translation table for the current language, the `lang.Translate` function falls back to the translation table for the [`defaultContentLanguage`][].
 
 If the key is not found in the translation table for the `defaultContentLanguage`, the `lang.Translate` function returns an empty string.
 
 > [!note]
 > To list missing and fallback translations, use the `--printI18nWarnings` flag when building your site.
 >
-> To render placeholders for missing and fallback translations, set [`enableMissingTranslationPlaceholders`] to `true` in your site configuration.
+> To render placeholders for missing and fallback translations, set [`enableMissingTranslationPlaceholders`][] to `true` in your site configuration.
 
 ## Translation tables
 
-Create translation tables in the `i18n` directory, naming each file according to [RFC 5646]. Translation tables may be JSON, TOML, or YAML. For example:
+Create translation tables in the `i18n` directory, naming each file according to [RFC 5646][]. Translation tables may be JSON, TOML, or YAML. For example:
 
 ```text
 i18n/en.toml
 i18n/en-US.toml
 ```
 
-The base name must match the [language key] as defined in your site configuration.
+The base name must match the [language key][] as defined in your site configuration.
 
-Artificial languages with private use subtags as defined in [RFC 5646 § 2.2.7] are also supported. You may omit the `art-x-` prefix for brevity. For example:
+Artificial languages with private use subtags as defined in [RFC 5646 § 2.2.7][] are also supported. You may omit the `art-x-` prefix for brevity. For example:
 
 ```text
 i18n/art-x-hugolang.toml
@@ -94,7 +94,7 @@ i18n/
 └── pl.toml
 ```
 
-The Unicode [CLDR Plural Rules chart] describes the pluralization categories for each language.
+The Unicode [CLDR Plural Rules chart][CLDR] describes the pluralization categories for each language.
 
 The English translation table:
 
@@ -177,7 +177,7 @@ Template code:
 
 ## Reserved keys
 
-Hugo uses the [go-i18n] package to look up values in translation tables. This package reserves the following keys for internal use:
+Hugo uses the [go-i18n][] package to look up values in translation tables. This package reserves the following keys for internal use:
 
 id
 : (`string`) Uniquely identifies the message.
@@ -195,22 +195,22 @@ rightdelim
 : (`string`) The right Go template delimiter.
 
 zero
-: (`string`) The content of the message for the [CLDR] plural form "zero".
+: (`string`) The content of the message for the [CLDR][] plural form "zero".
 
 one
-: (`string`) The content of the message for the [CLDR] plural form "one".
+: (`string`) The content of the message for the [CLDR][] plural form "one".
 
 two
-: (`string`) The content of the message for the [CLDR] plural form "two".
+: (`string`) The content of the message for the [CLDR][] plural form "two".
 
 few
-: (`string`) The content of the message for the [CLDR] plural form "few".
+: (`string`) The content of the message for the [CLDR][] plural form "few".
 
 many
-: (`string`) The content of the message for the [CLDR] plural form "many".
+: (`string`) The content of the message for the [CLDR][] plural form "many".
 
 other
-: (`string`) The content of the message for the [CLDR] plural form "other".
+: (`string`) The content of the message for the [CLDR][] plural form "other".
 
 If you need to provide a translation for one of the reserved keys, you can prepend the word with an underscore. For example:
 
@@ -238,8 +238,7 @@ Then in your templates:
 
 [`defaultContentLanguage`]: /configuration/all/#defaultcontentlanguage
 [`enableMissingTranslationPlaceholders`]: /configuration/all/#enablemissingtranslationplaceholders
-[CLDR]: https://www.unicode.org/cldr/charts/43/supplemental/language_plural_rules.html
-[CLDR Plural Rules chart]: https://www.unicode.org/cldr/charts/43/supplemental/language_plural_rules.html
+[CLDR]: https://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html
 [go-i18n]: https://github.com/nicksnyder/go-i18n
 [language key]: /configuration/languages/#language-keys
 [RFC 5646]: https://datatracker.ietf.org/doc/html/rfc5646
index d659e651f8578d3be662d83ca866780f8bbc0cb2..72338ac8984f3c20deb3c03d78c06ef02fd61ec3 100644 (file)
@@ -2,7 +2,7 @@
 title: math.Rand
 description: Returns a pseudo-random number in the half-open interval [0.0, 1.0).
 categories: []
-keywords: []
+keywords: [random]
 params:
   functions_and_methods:
     aliases: []
@@ -10,8 +10,6 @@ params:
     signatures: [math.Rand]
 ---
 
-{{< new-in 0.121.2 />}}
-
 The `math.Rand` function returns a pseudo-random number in the half-open [interval](g) [0.0, 1.0).
 
 ```go-html-template
index b80aaf8a1853682e1cdd1c7a9df87b49295e9241..a8a7157839d409dd5572c6452489d954048f3e3a 100644 (file)
@@ -1,6 +1,6 @@
 ---
 title: partials.IncludeCached
-description: Executes the given template and caches the result, optionally passing context. If the partial template contains a return statement, returns the given value, else returns the rendered output.
+description: Executes the given template and caches the result, optionally passing one or more variant keys. If the partial template contains a return statement, returns the given value, else returns the rendered output.
 categories: []
 keywords: []
 params:
index c86f90cbb491e25af51743e06e6fa6664ebd8b49..51851189812ac58d14eb17b974de06666dc1c11d 100644 (file)
@@ -23,7 +23,7 @@ Let's say you need to publish a file named "site.json" in the root of your `publ
 ```json
 {
   "build_date": "2025-07-08T13:12:19-07:00",
-  "hugo_version": "0.148.0",
+  "hugo_version": "0.152.2",
   "last_modified": "2025-07-07T22:09:13-07:00"
 }
 ```
index 8ad6b00da627ad8a4578a7efc7ae7b4f57c96b16..3ac7baad7c7e5636d11223def1df81dd1f8ec931 100644 (file)
@@ -7,7 +7,7 @@ params:
   functions_and_methods:
     aliases: [countrunes]
     returnType: int
-    signatures: [strings.CountRunes INPUT]
+    signatures: [strings.CountRunes STRING]
 aliases: [/functions/countrunes]
 ---
 
index e50febf69eb9eda991fa7409e8a2ebaae07efe1b..14939a7eada3d311631d2b6113ba28024d422bb5 100644 (file)
@@ -7,7 +7,7 @@ params:
   functions_and_methods:
     aliases: [countwords]
     returnType: int
-    signatures: [strings.CountWords INPUT]
+    signatures: [strings.CountWords STRING]
 aliases: [/functions/countwords]
 ---
 
index b6027368ed80503796bdc8008d86e6f673c5a0a7..d45216ab726f41762f87698cb7a3255f0df9e5fd 100644 (file)
@@ -7,7 +7,7 @@ params:
   functions_and_methods:
     aliases: []
     returnType: string
-    signatures: [strings.Repeat COUNT INPUT]
+    signatures: [strings.Repeat COUNT STRING]
 aliases: [/functions/strings.repeat]
 ---
 
index 8c0e24342ee79610609febda7315e367494b1e7e..bdc1bfd2d661202d02658a48539e440cf222dc39 100644 (file)
@@ -7,7 +7,7 @@ params:
   functions_and_methods:
     aliases: []
     returnType: int
-    signatures: [strings.RuneCount INPUT]
+    signatures: [strings.RuneCount STRING]
 aliases: [/functions/strings.runecount]
 ---
 
index c329b5e552cae1ba9fff2565596f827c1b732918..18ed6d456ccaac5990d2e57fbbd22b7500faa381 100644 (file)
@@ -7,7 +7,7 @@ params:
   functions_and_methods:
     aliases: [lower]
     returnType: string
-    signatures: [strings.ToLower INPUT]
+    signatures: [strings.ToLower STRING]
 aliases: [/functions/lower]
 ---
 
index acccb4124de206aa17735f448fce529a66fed326..a3e8ff99145cebcffe7e3de973a3a1d3d975be85 100644 (file)
@@ -7,7 +7,7 @@ params:
   functions_and_methods:
     aliases: [upper]
     returnType: string
-    signatures: [strings.ToUpper INPUT]
+    signatures: [strings.ToUpper STRING]
 aliases: [/functions/upper]
 ---
 
index 1afa0627fdf5a521e8683bef00eb0b4499d2b485..edbdcc215a65c3c3d74dd90b9fe8daa4b76753b5 100644 (file)
@@ -7,7 +7,7 @@ params:
   functions_and_methods:
     aliases: [trim]
     returnType: string
-    signatures: [strings.Trim INPUT CUTSET]
+    signatures: [strings.Trim STRING CUTSET]
 aliases: [/functions/trim]
 ---
 
index cb38b5ab1167007b4dac191b1aa6af7e4b520ae1..77da321d3930f8993a6905fe491a5242898ada71 100644 (file)
@@ -6,7 +6,7 @@ keywords: []
 params:
   functions_and_methods:
     returnType: string
-    signatures: [strings.TrimSpace INPUT]
+    signatures: [strings.TrimSpace STRING]
 ---
 
 {{< new-in 0.136.3 />}}
index c00445605e6fe53facf69fdd75387e7a2c2b5795..5e3b04a8141cc4ef819e4fff23e7998d3bfbfd61 100644 (file)
@@ -2,7 +2,7 @@
 title: transform.CanHighlight
 description: Reports whether the given code language is supported by the Chroma highlighter.
 categories: []
-keywords: []
+keywords: [highlight]
 params:
   functions_and_methods:
     aliases: []
diff --git a/content/en/functions/transform/HTMLtoMarkdown.md b/content/en/functions/transform/HTMLtoMarkdown.md
new file mode 100644 (file)
index 0000000..1c05c7d
--- /dev/null
@@ -0,0 +1,37 @@
+---
+title: transform.HTMLToMarkdown
+description: Converts HTML to Markdown.
+categories: []
+keywords: []
+params:
+  functions_and_methods:
+    returnType: string
+    signatures: [transform.HTMLToMarkdown INPUT]
+---
+
+{{< new-in "0.151.0" />}}
+
+> [!note]
+> This function is experimental and its API may change in the future.
+
+The `transform.HTMLToMarkdown` function converts HTML to Markdown by utilizing the [`html-to-markdown`][] Go package.
+
+## Usage
+
+```go-html-template
+{{ .Content | transform.HTMLToMarkdown | safeHTML }}
+```
+
+## Plugins
+
+The conversion process is enabled by the following `html-to-markdown` plugins:
+
+Plugin|Description
+:--|:--
+Base|Implements basic shared functionality
+CommonMark|Implements Markdown according to the [Commonmark Spec][]
+Table|Implements tables according to the [GitHub Flavored Markdown Spec][]
+
+[`html-to-markdown`]: https://github.com/JohannesKaufmann/html-to-markdown?tab=readme-ov-file#readme
+[Commonmark Spec]: https://spec.commonmark.org/current/
+[GitHub Flavored Markdown Spec]: https://github.github.com/gfm/
index bbebf945947c9eca857df5d023bfca400f6149ed..2fc0b6f37f5b7efbba3e2ece583e4113c006a060 100644 (file)
@@ -2,7 +2,7 @@
 title: transform.HighlightCodeBlock
 description: Highlights code received in context within a code block render hook.
 categories: []
-keywords: []
+keywords: [highlight]
 params:
   functions_and_methods:
     aliases: []
index be62e8bceb5eb35fd393426c002d698a41ab9eb7..22ae04dd58d157228de0c752e5f50b1603ebcb6c 100644 (file)
@@ -63,7 +63,13 @@ output
   With `html` and `htmlAndMathml` you must include the KaTeX style sheet within the `head` element of your base template.
 
   ```html
-  <link href="https://cdn.jsdelivr.net/npm/katex@0.16.22/dist/katex.min.css" rel="stylesheet">
+  <link
+    rel="stylesheet"
+    href="https://cdn.jsdelivr.net/npm/katex@0.16.25/dist/katex.min.css"
+    integrity="sha384-WcoG4HRXMzYzfCgiyfrySxx90XSl2rxY5mnVY5TwtWE6KLrArNKn0T/mOgNL0Mmi"
+    crossorigin="anonymous"
+  >
+  ```
 
 strict
 : {{< new-in 0.147.6 />}}
@@ -132,7 +138,12 @@ Step 3
   <head>
     {{ $noop := .WordCount }}
     {{ if .Page.Store.Get "hasMath" }}
-      <link href="https://cdn.jsdelivr.net/npm/katex@0.16.22/dist/katex.min.css" rel="stylesheet">
+      <link
+        rel="stylesheet"
+        href="https://cdn.jsdelivr.net/npm/katex@0.16.25/dist/katex.min.css"
+        integrity="sha384-WcoG4HRXMzYzfCgiyfrySxx90XSl2rxY5mnVY5TwtWE6KLrArNKn0T/mOgNL0Mmi"
+        crossorigin="anonymous"
+      >
     {{ end }}
   </head>
   ```
index 8b2173b9bda2bada3b9226431af7cd15e70e69a9..7e9726749a6a927d5b36b323c37b8017a2e78909 100644 (file)
@@ -13,6 +13,25 @@ aliases: [/functions/transform.unmarshal]
 
 The input can be a string or a [resource](g).
 
+## Options
+
+delimiter
+: (`string`) Applicable to CSV files. The delimiter used. Default is `,`.
+
+comment
+: (`string`) Applicable to CSV files. The comment character used in the CSV. If set, lines beginning with the comment character without preceding whitespace are ignored.
+
+format
+: {{< new-in 0.149.0 />}}
+: (`string`) The serialization format of the input, one of `csv`, `json`, `org`, `toml`, `xml`, or `yaml`. If empty or unspecified, Hugo infers the format from the input. For resources, this option is only needed if the file lacks an extension or to override the inferred format. For strings, it's only required when the format is ambiguous.
+
+lazyQuotes
+: (`bool`) Applicable to CSV files. Whether to allow a quote in an unquoted field, or to allow a non-doubled quote in a quoted field. Default is `false`.
+
+targetType
+: {{< new-in 0.146.7 />}}
+: (`string`) Applicable to CSV files. The target data type, either `slice` or `map`. Default is `slice`.
+
 ## Unmarshal a string
 
 ```go-html-template
@@ -116,26 +135,6 @@ A remote resource is a file on a remote server, accessible via HTTP or HTTPS.
 
 ## Working with CSV
 
-### Options
-
-When unmarshaling a CSV file, provide an optional map of options.
-
-delimiter
-: (`string`) The delimiter used. Default is `,`.
-
-comment
-: (`string`) The comment character used in the CSV. If set, lines beginning with the comment character without preceding whitespace are ignored.
-
-lazyQuotes
-: {{< new-in 0.122.0 />}}
-: (`bool`) Whether to allow a quote in an unquoted field, or to allow a non-doubled quote in a quoted field. Default is `false`.
-
-targetType
-: {{< new-in 0.146.7 />}}
-: (`string`) The target data type, either `slice` or `map`. Default is `slice`.
-
-### Examples
-
 The examples below use this CSV file:
 
 ```csv
index 372ad9b6ab7466c3bbf2f68c4cb388b1e7478a9e..dbe0b9334077fcc2211a55fa6e03c4033d7316d0 100644 (file)
@@ -10,8 +10,6 @@ params:
     signatures: [transform.XMLEscape INPUT]
 ---
 
-{{< new-in 0.121.0 />}}
-
 The `transform.XMLEscape` function removes [disallowed characters] as defined in the XML specification, then escapes the result by replacing the following characters with [HTML entities]:
 
 - `"` → `&#34;`
index dfb78f42e8e05278f58548303db31e6701926fc2..e7494a9249e645019418fef0e763c25ab2b23f61 100644 (file)
@@ -59,7 +59,7 @@ View your site at the URL displayed in your terminal. Press `Ctrl + C` to stop H
 
 ### Explanation of commands
 
-Create the [directory structure] for your project in the `quickstart` directory.
+Create the [site skeleton] for your project in the `quickstart` directory.
 
 ```text
 hugo new site quickstart
@@ -199,7 +199,7 @@ For other resources to help you learn Hugo, including books and video tutorials,
 [Ananke]: https://github.com/theNewDynamic/gohugo-theme-ananke
 [are different applications]: https://learn.microsoft.com/en-us/powershell/scripting/whats-new/differences-from-windows-powershell?view=powershell-7.3
 [demonstration site]: https://gohugo-ananke-theme-demo.netlify.app/
-[directory structure]: /getting-started/directory-structure/
+[site skeleton]: /getting-started/directory-structure/#site-skeleton
 [documentation]: https://github.com/theNewDynamic/gohugo-theme-ananke#readme
 [draft, future, and expired content]: /getting-started/usage/#draft-future-and-expired-content
 [draft, future, or expired content]: /getting-started/usage/#draft-future-and-expired-content
index d6bc42550e5f945024b481bf7e0f979c25e8197f..8cbcc9b029cd67e216502973a765a9623c169cd7 100644 (file)
@@ -18,7 +18,7 @@ hugo version
 You should see something like:
 
 ```text
-hugo v0.123.0-3c8a4713908e48e6523f058ca126710397aa4ed5+extended linux/amd64 BuildDate=2024-02-19T16:32:38Z VendorInfo=gohugoio
+hugo v0.152.2-6abdacad3f3fe944ea42177844469139e81feda6+extended linux/amd64 BuildDate=2025-10-24T15:31:49Z VendorInfo=gohugoio
 ```
 
 ## Display available commands
index d073107fe11adc69a3a26dc9f358f31dac357de7..0ad64d6fbece34859c270ecbfdf02a70c84f76e9 100644 (file)
@@ -73,7 +73,7 @@ Now that you can log in with your SSH key, let's create a script to automate dep
 
 ## Shell script
 
-Create a new script called `deploy` the root of your Hugo tree:
+Create a new script called `deploy` at the root of your Hugo tree:
 
 ```txt
 ~/websites/topologix.fr$ editor deploy
index 4fd71f3f9b0202d970a13a923ae40351a3572dbd..67a531af628f949026ad5277dbd2e94b9936e264 100644 (file)
@@ -40,9 +40,9 @@ Step 2
   env:
     variables:
       # Application versions
-      DART_SASS_VERSION: 1.90.0
-      GO_VERSION: 1.24.5
-      HUGO_VERSION: 0.148.2
+      DART_SASS_VERSION: 1.96.0
+      GO_VERSION: 1.25.5
+      HUGO_VERSION: 0.152.2
       # Time zone
       TZ: Europe/Oslo
       # Cache
index 018c50f0ab640d526d1b66e196a627d3175e0fe2..c5434f81d6ff3a036795bda9df4ce6b883b0e3e2 100644 (file)
@@ -25,8 +25,6 @@ Step 1
 : Create a `wrangler.toml` file in the root of your project.
 
   ```toml {file="wrangler.toml" copy=true}
-  # Configure Cloudflare Worker
-
   name = "hosting-cloudflare-worker"
   compatibility_date = "2025-07-31"
 
@@ -35,7 +33,7 @@ Step 1
 
   [assets]
   directory = "./public"
-  not_found_handling = "404"
+  not_found_handling = "404-page"
   ```
 
 Step 2
@@ -53,10 +51,10 @@ Step 2
 
   main() {
 
-    DART_SASS_VERSION=1.90.0
-    GO_VERSION=1.24.5
-    HUGO_VERSION=0.148.2
-    NODE_VERSION=22.18.0
+    DART_SASS_VERSION=1.96.0
+    GO_VERSION=1.25.5
+    HUGO_VERSION=0.152.2
+    NODE_VERSION=24.12.0
 
     export TZ=Europe/Oslo
 
diff --git a/content/en/host-and-deploy/host-on-codeberg-pages.md b/content/en/host-and-deploy/host-on-codeberg-pages.md
deleted file mode 100644 (file)
index 3c7e7a8..0000000
+++ /dev/null
@@ -1,282 +0,0 @@
----
-title: Host on Codeberg Pages
-description: Host your site on Codeberg Pages.
-categories: []
-keywords: []
-aliases: [/hosting-and-deployment/hosting-on-codeberg/]
----
-
-## Assumptions
-
-- Working familiarity with [Git] for version control
-- Completion of the Hugo [Quick Start]
-- A [Codeberg account]
-- A Hugo website on your local machine that you are ready to publish
-
-[Codeberg account]: https://codeberg.org/user/login/
-[Git]: https://git-scm.com/
-[Quick Start]: /getting-started/quick-start/
-
-Any and all mentions of `<YourUsername>` refer to your actual Codeberg username and must be substituted accordingly. Likewise, `<YourWebsite>` represents your actual website name.
-
-## BaseURL
-
-The [`baseURL`] in your site configuration must reflect the full URL provided by Codeberg Pages if using the default address (e.g. `https://<YourUsername>.codeberg.page/`). If you want to use another domain, follow the instructions in the [custom domain section] of the official documentation.
-
-[`baseURL`]: /configuration/all/#baseurl
-[custom domain section]: https://docs.codeberg.org/codeberg-pages/using-custom-domain/
-
-For more details regarding the URL of your deployed website, refer to Codeberg Pages' [quickstart instructions].
-
-[quickstart instructions]: https://codeberg.page/
-
-## Manual deployment
-
-Create a public repository on your Codeberg account titled `pages` or create a branch of the same name in an existing public repository. Finally, push the contents of Hugo's output directory (by default, `public`) to it. Here's an example:
-
-```sh
-# build the website
-hugo
-
-# access the output directory
-cd public
-
-# initialize new git repository
-git init
-
-# commit and push code to main branch
-git add .
-git commit -m "Initial commit"
-git remote add origin https://codeberg.org/<YourUsername>/pages.git
-git push -u origin main
-```
-
-## Automated deployment
-
-You can automatically deploy your Hugo website to Codeberg using one of two methods: Woodpecker CI or Forgejo Actions.
-
-### Woodpecker CI
-
-To use Codeberg's Woodpecker CI, you need to have or [request] access to it, as well as add a `.woodpecker.yaml` file in the root of your project. A template and additional instructions are available in the official [examples repository].
-
-[request]: https://codeberg.org/Codeberg-e.V./requests/issues/new?template=ISSUE_TEMPLATE%2fWoodpecker-CI.yaml
-[examples repository]: https://codeberg.org/Codeberg-CI/examples/src/branch/main/Hugo/.woodpecker.yaml
-
-In this case, you must create a public repository on Codeberg (e.g. `<YourWebsite>`) and push your local project to it. Here's an example:
-
-```sh
-# initialize new git repository
-git init
-
-# add /public directory to our .gitignore file
-echo "/public" >> .gitignore
-
-# commit and push code to main branch
-git add .
-git commit -m "Initial commit"
-git remote add origin https://codeberg.org/<YourUsername>/<YourWebsite>.git
-git push -u origin main
-```
-
-Your project will then be built and deployed by Codeberg's Woodpecker CI.
-
-### Forgejo Actions
-
-The other way to deploy your website to Codeberg pages automatically is to make use of Forgejo Actions. Actions need a _runner_ to work, and Codeberg has [great documentation] on how to set one up yourself. However, Codeberg provides a [handful of humble runners] themselves (they say this feature is in "open alpha"), which actually seem powerful enough to build at least relatively simple websites.
-
-[great documentation]: https://docs.codeberg.org/ci/actions/
-[handful of humble runners]: https://codeberg.org/actions/meta
-
-To deploy your website this way, you don't need to request any access. All you need to do is enable actions in your repository settings (see the documentation link above) and add a workflow configuration file, for example, `hugo.yaml`, to the `.forgejo/workflows/` directory in your website's source repository.
-
-Two examples of such a file are provided below.
-
-The first file should work for automatically building your website from the source branch (`main` in this case) and committing the result to the target branch (`pages`). Without changes, this file should make your built website accessible under `https://<YourUsername>.codeberg.page/<YourWebsiteRepositoryName>/`:
-
-```yaml {file=".forgejo/workflows/hugo.yaml" copy=true}
-name: Deploy Hugo site to Pages
-
-on:
-  # Runs on pushes targeting the default branch
-  push:
-    branches:
-      # If you want to build from a different branch, change it here.
-      - main
-  # Allows you to run this workflow manually from the Actions tab
-  workflow_dispatch:
-
-jobs:
-  build:
-    # You can find the list of available runners on https://codeberg.org/actions/meta, or run one yourself.
-    runs-on: codeberg-tiny-lazy
-    container:
-      # Specify "hugomods/hugo:exts" if you want to always use the latest version of Hugo for building.
-      image: "hugomods/hugo:exts-0.148.0"
-    steps:
-      - name: Clone the repository
-        uses: https://code.forgejo.org/actions/checkout@v4
-        with:
-          submodules: recursive
-          fetch-depth: 0
-      - name: Generate static files with Hugo
-        env:
-          # For maximum backward compatibility with Hugo modules
-          HUGO_ENVIRONMENT: production
-          HUGO_ENV: production
-        run: |
-          hugo \
-            --gc \
-            --minify
-      - name: Upload generated files
-        uses: https://code.forgejo.org/actions/upload-artifact@v3
-        with:
-          name: Generated files
-          path: public/
-  deploy:
-    needs: [ build ]
-    runs-on: codeberg-tiny-lazy
-    steps:
-      - name: Clone the repository
-        uses: https://code.forgejo.org/actions/checkout@v4
-        with:
-          submodules: recursive
-          fetch-depth: 0
-      - name: Checkout the target branch and clean it up
-        # If you want to commit to a branch other than "pages", change the two references below, as well as the reference in the last step. 
-        run: |
-          git checkout pages || git switch --orphan pages && \
-          rm -Rfv $(ls -A | egrep -v '^(\.git|LICENSE)$')
-      - name: Download generated files
-        uses: https://code.forgejo.org/actions/download-artifact@v3
-        with:
-          name: Generated files
-      - name: Publish the website
-        run: |
-          git config user.email codeberg-ci && \
-          git config user.name "Codeberg CI" && \
-          git add . && \
-          git commit --allow-empty --message "Codeberg build for ${GITHUB_SHA}" && \
-          git push origin pages
-```
-
-The second file implements a more complex scenario: having your website sources in one repository and the resulting static website in another repository (in this case, `pages`). If you want Codeberg to make your website available at the root of your pages subdomain (`https://<YourUsername>.codeberg.page/`), you have to push that website to the default branch of your repository named `pages`.
-
-Since this action involves more than one repository, it will require a bit more preparation:
-
-1. Create the target repository. Name it `pages`.
-1. Generate a new SSH key. Do not use any of your own SSH keys for this, but generate one for this specific task only. On Linux, BSD, and, likely, other operating systems, you can open a terminal emulator and run the following command to generate the key:
-
-   ```shell
-   ssh-keygen -f pagesbuild -P ""
-   ```
-
-   This will generate two files in your current directory: `pagesbuild` (private key) and `pagesbuild.pub` (public key).
-
-1. Add the newly generated public key as a deploy key to your `pages` repository: navigate to its Settings, click on "Deploy keys" in the left menu, click the "Add deploy key" button, give it a name (e.g. "Actions deploy key"), paste the contents of the **public** key file (`pagesbuild.pub`) to the Content field, tick the "Enable write access" checkbox, then submit the form.
-1. Navigate back to your source repository settings, expand the "Actions" menu and click on "Secrets". Then click "Add Secret", enter "DEPLOY_KEY" as the secret name and paste the contents of the newly generated **private** key file (`pagesbuild`) into the Value field.
-1. Navigate to the "Variables" submenu of the "Actions" menu and add the following variables:
-
-Name|Value
-:--|:--
-`TARGET_REPOSITORY`|`<YourUsername>/pages`
-`TARGET_BRANCH`|`main` (enter the default branch name of the `pages` repo here)
-`SSH_KNOWN_HOSTS`|(paste the output you get by running `ssh-keyscan codeberg.org` in the terminal)
-
-Once you've done all of the above, commit the following file to your repository as `.forgejo/workflows/hugo.yaml`. As you can see, the `deploy` job of this workflow is slightly different from the file above:
-
-```yaml {file=".forgejo/workflows/hugo.yaml" copy=true}
-name: Deploy Hugo site to Pages
-
-on:
-  # Runs on pushes targeting the default branch
-  push:
-    branches:
-      # If you want to build from a different branch, change it here.
-      - main
-  # Allows you to run this workflow manually from the Actions tab
-  workflow_dispatch:
-
-jobs:
-  build:
-    runs-on: codeberg-tiny-lazy
-    container:
-      # Specify "hugomods/hugo:exts" if you want to always use the latest version of Hugo for building.
-      image: "hugomods/hugo:exts-0.148.0"
-    steps:
-      - name: Clone the repository
-        uses: https://code.forgejo.org/actions/checkout@v4
-        with:
-          submodules: recursive
-          fetch-depth: 0
-      - name: Generate static files with Hugo
-        env:
-          # For maximum backward compatibility with Hugo modules
-          HUGO_ENVIRONMENT: production
-          HUGO_ENV: production
-        run: |
-          hugo \
-            --gc \
-            --minify \
-            --source ${PWD} \
-            --destination ${PWD}/public/
-      - name: Upload generated files
-        uses: https://code.forgejo.org/actions/upload-artifact@v3
-        with:
-          name: Generated files
-          path: public/
-  deploy:
-    needs: [ build ]
-    runs-on: codeberg-tiny-lazy
-    steps:
-      - name: Clone the repository
-        uses: https://code.forgejo.org/actions/checkout@v4
-        with:
-          repository: ${{ vars.TARGET_REPOSITORY }}
-          ref: ${{ vars.TARGET_BRANCH }}
-          submodules: recursive
-          fetch-depth: 0
-          ssh-key: ${{ secrets.DEPLOY_KEY }}
-          ssh-known-hosts: ${{ vars.SSH_KNOWN_HOSTS }}
-      - name: Remove all files
-        run: |
-          rm -Rfv $(ls -A | egrep -v '^(\.git|LICENSE)$')
-      - name: Download generated files
-        uses: https://code.forgejo.org/actions/download-artifact@v3
-        with:
-          name: Generated files
-      - name: Commit and push the website
-        run: |
-          git config user.email codeberg-ci && \
-          git config user.name "Codeberg CI" && \
-          git add -v . && \
-          git commit -v --allow-empty --message "Codeberg build for ${GITHUB_SHA}" && \
-          git push -v origin ${{ vars.TARGET_BRANCH }}
-```
-
-Once you commit one of the two files to your website source repository, you should see your first automated build firing up pretty soon. You can also trigger it manually by navigating to the **Actions** section of your repository web page, choosing **hugo.yaml** on the left and clicking on **Run workflow**.
-
-## Forgejo Actions custom domains
-
-Codeberg Pages relies on a `.domains` file to identify allowed domains for a specific branch. It's important that this file is located in the root directory of your output repository or branch, rather than in the root directory of your source files. To achieve this, simply place your `.domains` file in the `static` directory of your project. When your site is built, it will be automatically copied to the `public` directory, which serves as the root of your output.
-
-When looking at the example `.forgejo/workflows/hugo.yaml`, you'll notice that the `upload-artifact@v3` action is used to upload the public directory to the deployment branch.
-
-By default, both `upload-artifact@v3` and `upload-artifact@v4` exclude all dot files from being uploaded unless you specifically tell them not to (you can find more details [here]).
-
-By default, upload-artifact@v3 and upload-artifact@v4 exclude all dot files from being uploaded. You can find more details on [how to handle dot files and other file patterns in the documentation](https://github.com/actions/upload-artifact/issues/602). To make sure dot files are included, modify your workflow like this:
-
-```yaml {file=".forgejo/workflows/hugo.yaml" copy=true}
-      - name: Upload generated files
-        uses: https://code.forgejo.org/actions/upload-artifact@v3
-        with:
-          name: Generated files
-          path: public/
-          include-hidden-files: true # Prevents excluding .domains from uploading
-```
-
-If you're using a custom domain, it's important to update your workflow file accordingly.
-
-## Other resources
-
-- [Codeberg Pages](https://codeberg.page/)
-- [Codeberg Pages official documentation](https://docs.codeberg.org/codeberg-pages/)
index dd4039dd8603aa9538c1956900e04d5c3dc58cb9..9974c8ac3cfb5fa38c66c46bfdaac14812ccca71 100644 (file)
@@ -77,10 +77,10 @@ Step 4
     build:
       runs-on: ubuntu-latest
       env:
-        DART_SASS_VERSION: 1.90.0
-        GO_VERSION: 1.24.5
-        HUGO_VERSION: 0.148.2
-        NODE_VERSION: 22.18.0
+        DART_SASS_VERSION: 1.96.0
+        GO_VERSION: 1.25.5
+        HUGO_VERSION: 0.152.2
+        NODE_VERSION: 24.12.0
         TZ: Europe/Oslo
       steps:
         - name: Checkout
index c43303804ca5908f66051e7473b23c0c31b3164c..e10c3aca1db66c06d945dbd1609d5c1dcfd2609d 100644 (file)
@@ -24,9 +24,9 @@ Define your [CI/CD](g) jobs by creating a `.gitlab-ci.yml` file in the root of y
 ```yaml {file=".gitlab-ci.yml" copy=true}
 variables:
   # Application versions
-  DART_SASS_VERSION: 1.90.0
-  HUGO_VERSION: 0.148.2
-  NODE_VERSION: 22.18.0
+  DART_SASS_VERSION: 1.96.0
+  HUGO_VERSION: 0.152.2
+  NODE_VERSION: 24.12.0
   # Git
   GIT_DEPTH: 0
   GIT_STRATEGY: clone
@@ -35,7 +35,7 @@ variables:
   TZ: Europe/Oslo
 
 image:
-  name: golang:1.24.5-bookworm
+  name: golang:1.25.5-bookworm
 
 pages:
   stage: deploy
index cc0bf6b2b4b39f8b81fba783bba3048ae40eee68..d2eeb2665414fda00053b77d53371192458fd4c7 100644 (file)
@@ -23,108 +23,99 @@ Please complete the following tasks before continuing:
 
 ## Procedure
 
+<!-- Using "text" as the code block language because "toml" looks terrible. -->
+
 Step 1
-: Log in to your Netlify account, navigate to the Sites page, press the **Add new site** button, and choose "Import an existing project" from the dropdown menu.
+: Create a `netlify.toml` file in the root of your project.
+
+  ```text {file="netlify.toml" copy=true}
+  [build.environment]
+  DART_SASS_VERSION = "1.96.0"
+  GO_VERSION = "1.25.5"
+  HUGO_VERSION = "0.152.2"
+  NODE_VERSION = "24.12.0"
+  TZ = "Europe/Oslo"
+
+  [build]
+  publish = "public"
+  command = """\
+    git config core.quotepath false && \
+    hugo --gc --minify --baseURL "${URL}"
+    """
+  ```
+
+  If your site requires Dart Sass to transpile Sass to CSS, set the `DART_SASS_VERSION` and include the Dart Sass installation in the build step.
+
+  ```text {file="netlify.toml" copy=true}
+  [build.environment]
+  DART_SASS_VERSION = "1.96.0"
+  GO_VERSION = "1.25.5"
+  HUGO_VERSION = "0.152.2"
+  NODE_VERSION = "24.12.0"
+  TZ = "Europe/Oslo"
+
+  [build]
+  publish = "public"
+  command = """\
+    curl -sLJO "https://github.com/sass/dart-sass/releases/download/${DART_SASS_VERSION}/dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" && \
+    tar -C "${HOME}/.local" -xf "dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" && \
+    rm "dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" && \
+    export PATH="${HOME}/.local/dart-sass:${PATH}" && \
+    git config core.quotepath false && \
+    hugo --gc --minify --baseURL "${URL}"
+    """
+  ```
 
 Step 2
-: Select your deployment method.
-
-  ![screen capture](netlify-step-02.png)
+: Commit the changes to your local Git repository and push to your GitHub repository.
 
 Step 3
-: Authorize Netlify to connect with your GitHub account by pressing the **Authorize Netlify** button.
+: In the upper right corner of the Netlify dashboard, press the **Add new project** button and select “Import an existing project".
 
-  ![screen capture](netlify-step-03.png)
+  ![screen capture](netlify-01.png)
 
 Step 4
-: Press the **Configure Netlify on GitHub** button.
+: Connect to GitHub.
 
-  ![screen capture](netlify-step-04.png)
+  ![screen capture](netlify-02.png)
 
 Step 5
-: Install the Netlify app by selecting your GitHub account.
+: Press the "Authorize Netlify" button to allow the Netlify application to access your GitHub account.
 
-  ![screen capture](netlify-step-05.png)
+  ![screen capture](netlify-03.png)
 
 Step 6
-: Press the **Install** button.
-
-  ![screen capture](netlify-step-06.png)
+: Press the **Configure Netlify on GitHub** button.
+  
+  ![screen capture](netlify-04.png)
 
 Step 7
-: Click on the site's repository from the list.
+: Select the GitHub account where you want to install the Netlify application.
 
-  ![screen capture](netlify-step-07.png)
+  ![screen capture](netlify-05.png)
 
 Step 8
-: Set the site name and branch from which to deploy.
+: Authorize the Netlify application to access all repositories or only select repositories, then press the Install button.
 
-  ![screen capture](netlify-step-08.png)
+  ![screen capture](netlify-06.png)
+
+Your browser will be redirected to the Netlify dashboard.
 
 Step 9
-: Define the build settings, press the **Add environment variables** button, then press the **New variable** button.
+: Click on the name of the repository you wish to import.
 
-  ![screen capture](netlify-step-09.png)
+  ![screen capture](netlify-07.png)
 
 Step 10
-: Create a new environment variable named `HUGO_VERSION` and set the value to the [latest version](https://github.com/gohugoio/hugo/releases/latest).
+: On the "Review configuration" page, enter a project name, leave the settings at their default values, then press the **Deploy** button.
+
+  ![screen capture](netlify-08.png)
 
-  ![screen capture](netlify-step-10.png)
+  ![screen capture](netlify-09.png)
 
 Step 11
-: Press the "Deploy my new site" button at the bottom of the page.
-
-  ![screen capture](netlify-step-11.png)
-
-Step 12
-: At the bottom of the screen, wait for the deploy to complete, then click on the deploy log entry.
-
-  ![screen capture](netlify-step-12.png)
-
-Step 13
-: Press the **Open production deploy** button to view the live site.
-
-  ![screen capture](netlify-step-13.png)
-
-## Configuration file
-
-In the procedure above we configured our site using the Netlify user interface. Most site owners find it easier to use a configuration file checked into source control.
-
-Create a new file named `netlify.toml` in the root of your project directory. In its simplest form, the configuration file might look like this:
-
-```toml {file="netlify.toml"}
-[build.environment]
-GO_VERSION = "1.24.5"
-HUGO_VERSION = "0.148.2"
-NODE_VERSION = "22.18.0"
-TZ = "Europe/Oslo"
-
-[build]
-publish = "public"
-command = """\
-  git config core.quotepath false && \
-  hugo --gc --minify --baseURL "${URL}"
-  """
-```
-
-If your site requires Dart Sass to transpile Sass to CSS, the configuration file should look something like this:
-
-```toml {file="netlify.toml"}
-[build.environment]
-DART_SASS_VERSION = "1.90.0"
-GO_VERSION = "1.24.5"
-HUGO_VERSION = "0.148.2"
-NODE_VERSION = "22.18.0"
-TZ = "Europe/Oslo"
-
-[build]
-publish = "public"
-command = """\
-  curl -sLJO "https://github.com/sass/dart-sass/releases/download/${DART_SASS_VERSION}/dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" && \
-  tar -C "${HOME}/.local" -xf "dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" && \
-  rm "dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" && \
-  export PATH="${HOME}/.local/dart-sass:${PATH}" && \
-  git config core.quotepath false && \
-  hugo --gc --minify --baseURL "${URL}"
-  """
-```
+: When the deployment completes, click on the link to your published site.
+
+  ![screen capture](netlify-10.png)
+
+In the future, whenever you push a change from your local Git repository, Netlify will rebuild and deploy your site.
diff --git a/content/en/host-and-deploy/host-on-netlify/netlify-01.png b/content/en/host-and-deploy/host-on-netlify/netlify-01.png
new file mode 100644 (file)
index 0000000..5d09da9
Binary files /dev/null and b/content/en/host-and-deploy/host-on-netlify/netlify-01.png differ
diff --git a/content/en/host-and-deploy/host-on-netlify/netlify-02.png b/content/en/host-and-deploy/host-on-netlify/netlify-02.png
new file mode 100644 (file)
index 0000000..0c76e1d
Binary files /dev/null and b/content/en/host-and-deploy/host-on-netlify/netlify-02.png differ
diff --git a/content/en/host-and-deploy/host-on-netlify/netlify-03.png b/content/en/host-and-deploy/host-on-netlify/netlify-03.png
new file mode 100644 (file)
index 0000000..5bfceab
Binary files /dev/null and b/content/en/host-and-deploy/host-on-netlify/netlify-03.png differ
diff --git a/content/en/host-and-deploy/host-on-netlify/netlify-04.png b/content/en/host-and-deploy/host-on-netlify/netlify-04.png
new file mode 100644 (file)
index 0000000..e059dca
Binary files /dev/null and b/content/en/host-and-deploy/host-on-netlify/netlify-04.png differ
diff --git a/content/en/host-and-deploy/host-on-netlify/netlify-05.png b/content/en/host-and-deploy/host-on-netlify/netlify-05.png
new file mode 100644 (file)
index 0000000..ffb8b98
Binary files /dev/null and b/content/en/host-and-deploy/host-on-netlify/netlify-05.png differ
diff --git a/content/en/host-and-deploy/host-on-netlify/netlify-06.png b/content/en/host-and-deploy/host-on-netlify/netlify-06.png
new file mode 100644 (file)
index 0000000..0bf5a29
Binary files /dev/null and b/content/en/host-and-deploy/host-on-netlify/netlify-06.png differ
diff --git a/content/en/host-and-deploy/host-on-netlify/netlify-07.png b/content/en/host-and-deploy/host-on-netlify/netlify-07.png
new file mode 100644 (file)
index 0000000..9842fac
Binary files /dev/null and b/content/en/host-and-deploy/host-on-netlify/netlify-07.png differ
diff --git a/content/en/host-and-deploy/host-on-netlify/netlify-08.png b/content/en/host-and-deploy/host-on-netlify/netlify-08.png
new file mode 100644 (file)
index 0000000..8d68747
Binary files /dev/null and b/content/en/host-and-deploy/host-on-netlify/netlify-08.png differ
diff --git a/content/en/host-and-deploy/host-on-netlify/netlify-09.png b/content/en/host-and-deploy/host-on-netlify/netlify-09.png
new file mode 100644 (file)
index 0000000..5807f6b
Binary files /dev/null and b/content/en/host-and-deploy/host-on-netlify/netlify-09.png differ
diff --git a/content/en/host-and-deploy/host-on-netlify/netlify-10.png b/content/en/host-and-deploy/host-on-netlify/netlify-10.png
new file mode 100644 (file)
index 0000000..0577a46
Binary files /dev/null and b/content/en/host-and-deploy/host-on-netlify/netlify-10.png differ
diff --git a/content/en/host-and-deploy/host-on-netlify/netlify-step-02.png b/content/en/host-and-deploy/host-on-netlify/netlify-step-02.png
deleted file mode 100644 (file)
index 31fceff..0000000
Binary files a/content/en/host-and-deploy/host-on-netlify/netlify-step-02.png and /dev/null differ
diff --git a/content/en/host-and-deploy/host-on-netlify/netlify-step-03.png b/content/en/host-and-deploy/host-on-netlify/netlify-step-03.png
deleted file mode 100644 (file)
index 7b98e0b..0000000
Binary files a/content/en/host-and-deploy/host-on-netlify/netlify-step-03.png and /dev/null differ
diff --git a/content/en/host-and-deploy/host-on-netlify/netlify-step-04.png b/content/en/host-and-deploy/host-on-netlify/netlify-step-04.png
deleted file mode 100644 (file)
index 3130489..0000000
Binary files a/content/en/host-and-deploy/host-on-netlify/netlify-step-04.png and /dev/null differ
diff --git a/content/en/host-and-deploy/host-on-netlify/netlify-step-05.png b/content/en/host-and-deploy/host-on-netlify/netlify-step-05.png
deleted file mode 100644 (file)
index 6d6eef0..0000000
Binary files a/content/en/host-and-deploy/host-on-netlify/netlify-step-05.png and /dev/null differ
diff --git a/content/en/host-and-deploy/host-on-netlify/netlify-step-06.png b/content/en/host-and-deploy/host-on-netlify/netlify-step-06.png
deleted file mode 100644 (file)
index 1b766a7..0000000
Binary files a/content/en/host-and-deploy/host-on-netlify/netlify-step-06.png and /dev/null differ
diff --git a/content/en/host-and-deploy/host-on-netlify/netlify-step-07.png b/content/en/host-and-deploy/host-on-netlify/netlify-step-07.png
deleted file mode 100644 (file)
index 7bb3b6e..0000000
Binary files a/content/en/host-and-deploy/host-on-netlify/netlify-step-07.png and /dev/null differ
diff --git a/content/en/host-and-deploy/host-on-netlify/netlify-step-08.png b/content/en/host-and-deploy/host-on-netlify/netlify-step-08.png
deleted file mode 100644 (file)
index df8e9e5..0000000
Binary files a/content/en/host-and-deploy/host-on-netlify/netlify-step-08.png and /dev/null differ
diff --git a/content/en/host-and-deploy/host-on-netlify/netlify-step-09.png b/content/en/host-and-deploy/host-on-netlify/netlify-step-09.png
deleted file mode 100644 (file)
index 3f925ac..0000000
Binary files a/content/en/host-and-deploy/host-on-netlify/netlify-step-09.png and /dev/null differ
diff --git a/content/en/host-and-deploy/host-on-netlify/netlify-step-10.png b/content/en/host-and-deploy/host-on-netlify/netlify-step-10.png
deleted file mode 100644 (file)
index e9196d0..0000000
Binary files a/content/en/host-and-deploy/host-on-netlify/netlify-step-10.png and /dev/null differ
diff --git a/content/en/host-and-deploy/host-on-netlify/netlify-step-11.png b/content/en/host-and-deploy/host-on-netlify/netlify-step-11.png
deleted file mode 100644 (file)
index 2ac2b08..0000000
Binary files a/content/en/host-and-deploy/host-on-netlify/netlify-step-11.png and /dev/null differ
diff --git a/content/en/host-and-deploy/host-on-netlify/netlify-step-12.png b/content/en/host-and-deploy/host-on-netlify/netlify-step-12.png
deleted file mode 100644 (file)
index e251305..0000000
Binary files a/content/en/host-and-deploy/host-on-netlify/netlify-step-12.png and /dev/null differ
diff --git a/content/en/host-and-deploy/host-on-netlify/netlify-step-13.png b/content/en/host-and-deploy/host-on-netlify/netlify-step-13.png
deleted file mode 100644 (file)
index f955f63..0000000
Binary files a/content/en/host-and-deploy/host-on-netlify/netlify-step-13.png and /dev/null differ
index f52e09280e60607ab344a53893e9dd0f590a8ad7..b8d597b1558f8152bf14c1432fce1c6c76ef3ccf 100644 (file)
@@ -35,13 +35,13 @@ Step 1
       staticPublishPath: public
       envVars:
         - key: DART_SASS_VERSION
-          value: 1.90.0
+          value: 1.96.0
         - key: GO_VERSION
-          value: 1.24.5
+          value: 1.25.5
         - key: HUGO_VERSION
-          value: 0.148.2
+          value: 0.152.2
         - key: NODE_VERSION
-          value: 22.18.0
+          value: 24.12.0
         - key: TZ
           value: Europe/Oslo
   ```
index 6b092fbf25045deda095170edd9dffa129169eb3..1d278f0fe738996057bae0a8a1e7e656c1fad3cc 100644 (file)
@@ -29,9 +29,9 @@ The [`baseURL`] in your site configuration must reflect the full URL provided by
 
 ## Manual deployment
 
-This method does not require a paid account. To proceed you will need to create a [SourceHut personal access token] and install and configure the [hut]CLI tool:
+This method does not require a paid account. To proceed you will need to create a [SourceHut personal access token] and install and configure the [hut] CLI tool:
 
-[SourceHut personal access token]: https://meta.sr.ht/oauth2/personal-token/
+[SourceHut personal access token]: https://meta.sr.ht/oauth2/personal-token
 [hut]: https://sr.ht/~xenrox/hut/
 
 ```sh
index 8d402cb872b7ff0974961c11b3924eca6a7995e4..d93ab60405d4db172b38f573a0932ee692ec885a 100644 (file)
@@ -47,10 +47,10 @@ Step 2
 
   main() {
 
-    DART_SASS_VERSION=1.90.0
-    GO_VERSION=1.24.5
-    HUGO_VERSION=0.148.2
-    NODE_VERSION=22.18.0
+    DART_SASS_VERSION=1.96.0
+    GO_VERSION=1.25.5
+    HUGO_VERSION=0.152.2
+    NODE_VERSION=24.12.0
 
     export TZ=Europe/Oslo
 
index b45607dc060f11be55afa34639cb5ca6fed87925..ba1dd6a4658171553f50034a25c18c7d25659c73 100644 (file)
@@ -12,8 +12,8 @@ Modules are combinable in any arrangement, and external directories (including t
 
 Some example projects:
 
-[https://github.com/bep/docuapi](https://github.com/bep/docuapi)
-: A theme that has been ported to Hugo Modules while testing this feature. It is a good example of a non-Hugo-project mounted into Hugo's directory structure. It even shows a JS Bundler implementation in regular Go templates.
+<https://github.com/bep/docuapi>
+: A theme that has been ported to Hugo Modules while testing this feature. It is a good example of a non-Hugo-project mounted into Hugo's directory structure.
 
-[https://github.com/bep/my-modular-site](https://github.com/bep/my-modular-site)
+<https://github.com/bep/my-modular-site>
 : A simple site used for testing.
index babb759ea0080ab29fe14706e66e516baaf0108b..0ce751d4395bc76a70678a9b8b2c991c2550f7e6 100644 (file)
@@ -95,7 +95,7 @@ Derivatives of the [Debian] distribution of Linux include [elementary OS], [KDE
 sudo apt install hugo
 ```
 
-You can also download Debian packages from the [latest release] page.
+You can also download Debian packages from the [latest release][] page.
 
 ### Exherbo
 
@@ -199,6 +199,7 @@ Latest version available?|:heavy_check_mark:|:heavy_check_mark:|varies|:heavy_ch
 [GeckoLinux]: https://geckolinux.github.io/
 [Gentoo]: https://www.gentoo.org/
 [KDE neon]: https://neon.kde.org/
+[latest release]: https://github.com/gohugoio/hugo/releases/latest
 [latest version]: https://github.com/gohugoio/hugo/releases/latest
 [Linux Karmada]: https://linuxkamarada.com/
 [Linux Lite]: https://www.linuxliteos.com/
index 5fc2dfcaeaeb466d6173ab2cd82363f44e53dfac..31db24de07f93b55ca450d964d2b9357a657bbdc 100644 (file)
@@ -9,9 +9,9 @@ params:
     signatures: [MENUENTRY.PageRef]
 ---
 
-The use case for this method is rare.
-
-In almost also scenarios you should use the [`URL`] method instead.
+> [!note]
+> The use case for this method is rare.
+In almost also scenarios you should use the [`URL`] method instead.
 
 ## Explanation
 
index 194a2cac852db18b36496102634dffacd7054903..24e7c033ea1a213db4d1e43139bc832e29ed6214 100644 (file)
@@ -9,22 +9,20 @@ params:
     signatures: [PAGE.IsNode]
 ---
 
-The `IsNode` method on a `Page` object returns `true` if the [page kind](g) is `home`, `section`, `taxonomy`, or `term`.
-
-It returns `false` is the page kind is `page`.
+The `IsNode` method on a `Page` object checks if the [page kind](g) is one of the following: `home`, `section`, `taxonomy`, or `term`. If it is, the method returns `true`, indicating the page is a [node](g). Otherwise, if the page kind is page, it returns `false`.
 
 ```text
 content/
 ├── books/
 │   ├── book-1/
-│   │   └── index.md    <-- kind = page, node = false
-│   ├── book-2.md       <-- kind = page, node = false
-│   └── _index.md       <-- kind = section, node = true
-├── tags/
-│   ├── fiction/
-│   │   └── _index.md   <-- kind = term, node = true
-│   └── _index.md       <-- kind = taxonomy, node = true
-└── _index.md           <-- kind = home, node = true
+│   │   └── index.md    <-- kind = page      IsNode = false
+│   ├── book-2.md       <-- kind = page      IsNode = false
+│   └── _index.md       <-- kind = section   IsNode = true
+├── tags
+│   ├── fiction   
+│   │   └── _index.md   <-- kind = term      IsNode = true
+│   └── _index.md       <-- kind = taxonomy  IsNode = true
+└── _index.md           <-- kind = home      IsNode = true
 ```
 
 ```go-html-template
index 9158e571d1b468f2462837f1274727007d344334..c72a2440d4219b772a9ac8d71df4938259af39ec 100644 (file)
@@ -25,6 +25,9 @@ To list the pages in a section with a summary beneath each link:
 {{ end }}
 ```
 
+> [!warning]
+> Automatic `.Summary` may cut block tags (e.g., `blockquote`) in the middle, causing the browser to recover the end tag. See [automatic summary] for details and for ways to avoid this.
+
 Depending on content length and how you define the summary, the summary may be equivalent to the content itself. To determine whether the content length exceeds the summary length, use the [`Truncated`] method on a `Page` object. This is useful for conditionally rendering a “read more” link:
 
 ```go-html-template
@@ -42,3 +45,4 @@ Depending on content length and how you define the summary, the summary may be e
 
 [`Truncated`]: /methods/page/truncated
 [summary]: /content-management/summaries/
+[automatic summary]: /content-management/summaries/#automatic-summary
index 19ab617471885d40fccb1e56ad44c3cecf9513d8..11ce617ef809939ed8a4dcbd013cd5d232a19c46 100644 (file)
@@ -9,7 +9,19 @@ params:
     signatures: [SITE.Home]
 ---
 
-This method is useful for obtaining a link to the home page.
+The `Home` method on a `Site` object is a convenient way to access the home page, and is functionally equivalent to:
+
+```go-html-template
+{{ .Site.GetPage "/" }}
+```
+
+Because it returns a `Page` object, you can use any of the available [page methods][] by chaining them. For example:
+
+```go-html-template
+{{ .Site.Home.Store.Set "greeting" "Hello" }}
+```
+
+This method is commonly used to generate a link to the home page. For example:
 
 Site configuration:
 
@@ -23,3 +35,5 @@ Template:
 {{ .Site.Home.Permalink }} → https://example.org/docs/ 
 {{ .Site.Home.RelPermalink }} → /docs/
 ```
+
+[page methods]: /methods/page/
index fbf9bb4a1cf2c8febfe40a333cef995b56f34e95..196b3176938026b12ba03f97603ca5a144af7521 100644 (file)
@@ -9,7 +9,7 @@ params:
     signatures: [TAXONOMY.ByCount]
 ---
 
-The `ByCount` method on a `Taxonomy` object returns an [ordered taxonomy](g), sorted by the number of pages associated with each [term](g).
+The `ByCount` method on a `Taxonomy` object returns an [ordered taxonomy](g), sorted by the number of pages associated with each [term](g), then sorted alphabetically by term in the event of a tie.
 
 While a `Taxonomy` object is a [map](g), an ordered taxonomy is a [slice](g), where each element is an object that contains the term and a slice of its [weighted pages](g).
 
index 231089c5677851c5907efe5e750a516992fda32b..d22fae9549cc89c547cf8aade69dc56ffd8065a8 100644 (file)
@@ -1,6 +1,7 @@
 ---
 title: archetype
-details: /content-management/archetypes
+params:
+  reference: /content-management/archetypes/
 ---
 
 An _archetype_ is a template for new content.
diff --git a/content/en/quick-reference/glossary/component.md b/content/en/quick-reference/glossary/component.md
new file mode 100644 (file)
index 0000000..3c3c023
--- /dev/null
@@ -0,0 +1,17 @@
+---
+title: component
+---
+
+A _component_ is a collection of related files, housed within the [_unified file system_](g), that fulfills a specific function in building a Hugo website. These components are categorized into seven types: [_archetypes_](g), assets, content, data, templates, [_translation tables_](g), and static files, and can be defined within the project or provided by [_modules_](g).
+
+  Each component has a dedicated directory within the unified file system:
+
+  Component|Directory within the unified file system
+  :--|:--
+  archetypes|`archetypes`
+  assets|`assets`
+  content|`content`
+  data|`data`
+  templates|`layouts`
+  translation tables|`i18n`
+  static files|`static`
index 90c8ff80bc2c148ef8ce654e4443c854f08eba1f..30ec49ea4e35e46c925e1d3c74f9243270f8a12f 100644 (file)
@@ -1,6 +1,5 @@
 ---
 title: module
-reference: /hugo-modules/
 ---
 
-A _module_ is a packaged combination of [_archetypes_](g), assets, content, data, [_templates_](g), translation tables, static files, or configuration settings. A module may serve as the basis for a new site, or to augment an existing site.
+A _module_ is a packaged combination of [_components_](g) which may include [_archetypes_](g), assets, content, data, templates, [_translation tables_](g), and static files. A module may be a [_theme_](g), a complete project, or a smaller collection of one or more components.
diff --git a/content/en/quick-reference/glossary/mount.md b/content/en/quick-reference/glossary/mount.md
new file mode 100644 (file)
index 0000000..12a4a64
--- /dev/null
@@ -0,0 +1,7 @@
+---
+title: mount
+params:
+  reference: /configuration/module
+---
+
+A _mount_ is a configuration object that maps a file system path (source) to a [_component_](g) path (target) within Hugo's [_unified file system_](g).
diff --git a/content/en/quick-reference/glossary/seed.md b/content/en/quick-reference/glossary/seed.md
new file mode 100644 (file)
index 0000000..bbb6e48
--- /dev/null
@@ -0,0 +1,6 @@
+---
+title: seed
+reference: https://en.wikipedia.org/wiki/Random_seed
+---
+
+A _seed_ is the starting point for a computer algorithm that generates pseudo-random numbers. Using the same seed will always produce the identical sequence of numbers, which is essential for reproducibility in areas like simulations, cryptography, and video games.
index 84b9c684a78101f5ebcd5212d1abb87407a21369..fca98572dd747bcf9abddb0dabc86d49d341c25e 100644 (file)
@@ -2,4 +2,4 @@
 title: theme
 ---
 
-A _theme_ is a packaged combination of [_archetypes_](g), assets, content, data, [_templates_](g), translation tables, static files, or configuration settings. A theme may serve as the basis for a new site, or to augment an existing site.
+A _theme_ is a [_module_](g) that delivers a complete set of [components](g) defining a site's layout, presentation, and behavior. While every theme is a module, not every module is a theme.
diff --git a/content/en/quick-reference/glossary/translation-table.md b/content/en/quick-reference/glossary/translation-table.md
new file mode 100644 (file)
index 0000000..a48febb
--- /dev/null
@@ -0,0 +1,5 @@
+---
+title: translation table
+---
+
+A _translation table_ is a data file within the `i18n` directory, holding translations for a single language.
diff --git a/content/en/quick-reference/glossary/unified-file-system.md b/content/en/quick-reference/glossary/unified-file-system.md
new file mode 100644 (file)
index 0000000..4d3d779
--- /dev/null
@@ -0,0 +1,5 @@
+---
+title: unified file system
+---
+
+Hugo's _unified file system_ provides a layered view for each of its seven [_component_](g) types: [_archetypes_](g), assets, content, data, templates, [_translation tables_](g), and static files. Project component directories are layered over [_module_](g) component directories. Hugo searches these layers in order to locate files.
index 526a1232f0bff50aac3bde0675bedd8e1711decf..f6af66d59c84623cd92b3cbbb8a08847cff47402 100755 (executable)
@@ -119,7 +119,7 @@ Hugo includes an [embedded code block render hook] to render [GoAT diagrams].
 [Chroma]: https://github.com/alecthomas/chroma/
 [code fence]: https://spec.commonmark.org/current/#code-fence
 [diagrams]: /content-management/diagrams/#mermaid-diagrams
-[embedded code block render hook]: {{% eturl render-codeblock-goat %}}
+[embedded code block render hook]: <{{% eturl render-codeblock-goat %}}>
 [GoAT diagrams]: /content-management/diagrams/#goat-diagrams-ascii
 [highlighting options]: /functions/transform/highlight/#options
 [info string]: https://spec.commonmark.org/current/#info-string
index bee068a0d7ab8e5af8b7d047287a3b0fdbf0f732..9f2625fee651130cc14630b08355f5ffd03dbbb6 100755 (executable)
@@ -133,5 +133,5 @@ Note that the embedded image render hook does not perform image processing. Its
 [`RenderShortcodes`]: /methods/page/rendershortcodes
 [CommonMark specification]: https://spec.commonmark.org/current/
 [duplication of shared page resources]: /configuration/markup/#duplicateresourcefiles
-[embedded image render hook]: {{% eturl render-image %}}
+[embedded image render hook]: <{{% eturl render-image %}}>
 [Markdown attributes]: /content-management/markdown-attributes/
index 0e6519e2ed7779af3448aa4a7a2f3c56128cc91f..623678ee1f21b8a4911cb03b3d7326b7d6fb5bfe 100755 (executable)
@@ -104,4 +104,4 @@ target = 'assets'
 [`RenderShortcodes`]: /methods/page/rendershortcodes
 [CommonMark specification]: https://spec.commonmark.org/current/
 [duplication of shared page resources]: /configuration/markup/#duplicateresourcefiles
-[embedded link render hook]: {{% eturl render-link %}}
+[embedded link render hook]: <{{% eturl render-link %}}>
index 253039316e821cc920fa12a14a7d176f41dba09d..76643718fa8411c96016eaff4b2ba2f9f347b7db 100755 (executable)
@@ -104,7 +104,12 @@ Then, in your base template, conditionally include the KaTeX CSS within the head
 <head>
   {{ $noop := .WordCount }}
   {{ if .Page.Store.Get "hasMath" }}
-    <link href="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/katex.min.css" rel="stylesheet">
+    <link
+      rel="stylesheet"
+      href="https://cdn.jsdelivr.net/npm/katex@0.16.25/dist/katex.min.css"
+      integrity="sha384-WcoG4HRXMzYzfCgiyfrySxx90XSl2rxY5mnVY5TwtWE6KLrArNKn0T/mOgNL0Mmi"
+      crossorigin="anonymous"
+    >
   {{ end }}
 </head>
 ```
index 421fb4e667b283b40e0f738f8ff60038d3d9c627..5df6c118f006e7d38b7e1d79d4a8f0877ecb5a0b 100755 (executable)
@@ -71,4 +71,4 @@ details > summary > * { }
 details > :not(summary) { }
 ```
 
-[source code]: {{% eturl details %}}
+[source code]: <{{% eturl details %}}>
index 2234bb3c51e43dc15d1566bfd3f3e9960f409c51..24d85064b45fd7478881bd653b68ccffc3cef035 100755 (executable)
@@ -106,4 +106,4 @@ source = 'static'
 target = 'assets'
 {{< /code-toggle >}}
 
-[source code]: {{% eturl figure %}}
+[source code]: <{{% eturl figure %}}>
index de90f64f37cfc4cd8ce17f2e2459314d0e1ccee0..c349e97be4cb4242ae5c0a3cdd812c0d225bd61c 100755 (executable)
@@ -103,5 +103,5 @@ Pass the options when calling the shortcode. You can set their default values in
 [content format]: /content-management/formats/
 [highlighting styles]: /quick-reference/syntax-highlighting-styles/
 [site configuration]: /configuration/markup/#highlight
-[source code]: {{% eturl highlight %}}
+[source code]: <{{% eturl highlight %}}>
 [supported languages]: /content-management/syntax-highlighting/#languages
index 4ee558c007e3e1c72cbecaa68869fe6b867eea52..9f8b4fd264bfbe510ecb51904a24c99dc7ced30d 100755 (executable)
@@ -39,4 +39,4 @@ disable
 simple
 : (`bool`) Whether to enable simple mode for image card generation. If `true`, Hugo creates a static card without JavaScript. This mode only supports image cards, and the image is fetched directly from Instagram's servers. Default is `false`.
 
-[source code]: {{% eturl instagram %}}
+[source code]: <{{% eturl instagram %}}>
index 1a782056f16992751c505849c1c0f60f4bfab785..967d1284692d900f9b75c30217e7d0d17be65f06 100755 (executable)
@@ -35,4 +35,4 @@ Access nested values by [chaining](g) the [identifiers](g):
 {{%/* param my.nested.param */%}}
 ```
 
-[source code]: {{% eturl param %}}
+[source code]: <{{% eturl param %}}>
index 3cbc5d3fdc381be5d2bdac22dda9b8dea270b568..d83be2a6f8ce052f7a7d784b163ac4dcf4f82377 100755 (executable)
@@ -103,5 +103,5 @@ title
 [`publishDir`]: /configuration/all/#publishdir
 [QR code]: https://en.wikipedia.org/wiki/QR_code
 [related documentation]: /functions/images/qr/
-[source code]: {{% eturl qr %}}
+[source code]: <{{% eturl qr %}}>
 [vCard]: <https://en.wikipedia.org/wiki/VCard>
index 0cd5b52dcbb1300b86f04cb3879eeba4ae97208e..19c0ae711e2eb5dbbf0a662f1dfd5701162285e9 100755 (executable)
@@ -62,4 +62,4 @@ Rendered:
 [duplication of shared page resources]: /configuration/markup/#duplicateresourcefiles
 [embedded link render hook]: /render-hooks/links/#embedded
 [Markdown notation]: /content-management/shortcodes/#notation
-[source code]: {{% eturl relref %}}
+[source code]: <{{% eturl relref %}}>
index 22cdb9f2fa4a4f4b1efa13952de430a6f9f2128d..3f85b8419dd23b3f0a8e7a7bc13a76f21006cfe0 100755 (executable)
@@ -62,4 +62,4 @@ Rendered:
 [duplication of shared page resources]: /configuration/markup/#duplicateresourcefiles
 [embedded link render hook]: /render-hooks/links/#embedded
 [Markdown notation]: /content-management/shortcodes/#notation
-[source code]: {{% eturl relref %}}
+[source code]: <{{% eturl relref %}}>
index 40daaeec233111af1e493eb56316b4a19b2576b3..b09420018178b4e38f269fbafed4c86e3eef0aea 100755 (executable)
@@ -67,7 +67,7 @@ enableDNT
 simple
 : (`bool`) Whether to enable simple mode. If `true`, the video thumbnail is fetched from Vimeo and overlaid with a play button. Clicking the thumbnail opens the video in a new Vimeo tab. Default is `false`.
 
-The source code for the simple version of the shortcode is available [here].
+The source code for the simple version of the shortcode is available [in this file].
 
-[here]: {{% eturl vimeo_simple %}}
-[source code]: {{% eturl vimeo %}}
+[in this file]: <{{% eturl vimeo_simple %}}>
+[source code]: <{{% eturl vimeo %}}>
index dbce7e613f6ba02e732ddfc7d07c31dac8cba9db..967a526a8b865b5df6da034bdf575ef231a0b977 100755 (executable)
@@ -44,11 +44,11 @@ enableDNT
 simple
 : (`bool`) Whether to enable simple mode. If `true`, Hugo builds a static version of the of the post without JavaScript. Default is `false`.
 
-The source code for the simple version of the shortcode is available [here].
+The source code for the simple version of the shortcode is available [in this file].
 
 If you enable simple mode you may want to disable the hardcoded inline styles by setting `disableInlineCSS` to `true` in your site configuration. The default value for this setting is `false`.
 
 {{< code-toggle config=services.x />}}
 
-[here]: {{% eturl x_simple %}}
-[source code]: {{% eturl x %}}
+[in this file]: <{{% eturl x_simple %}}>
+[source code]: <{{% eturl x %}}>
index af9a08f26fa56fd032157525c4e0535fed61eb5b..daba32c3e67002920a3e3d7aca57234c989fd6c8 100644 (file)
@@ -12,7 +12,7 @@ aliases: [/templates/internal]
 ## Disqus
 
 > [!note]
-> To override Hugo's embedded Disqus template, copy the [source code]({{% eturl disqus %}}) to a file with the same name in the `layouts/_partials` directory, then call it from your templates using the [`partial`] function:
+> To override Hugo's embedded Disqus template, copy the [source code](<{{% eturl disqus %}}>) to a file with the same name in the `layouts/_partials` directory, then call it from your templates using the [`partial`] function:
 >
 > `{{ partial "disqus.html" . }}`
 
@@ -57,7 +57,7 @@ disable
 ## Google Analytics
 
 > [!note]
-> To override Hugo's embedded Google Analytics template, copy the [source code]({{% eturl google_analytics %}}) to a file with the same name in the `layouts/_partials` directory, then call it from your templates using the [`partial`] function:
+> To override Hugo's embedded Google Analytics template, copy the [source code](<{{% eturl google_analytics %}}>) to a file with the same name in the `layouts/_partials` directory, then call it from your templates using the [`partial`] function:
 >
 > `{{ partial "google_analytics.html" . }}`
 
@@ -95,7 +95,7 @@ respectDoNotTrack
 ## Open Graph
 
 > [!note]
-> To override Hugo's embedded Open Graph template, copy the [source code]({{% eturl opengraph %}}) to a file with the same name in the `layouts/_partials` directory, then call it from your templates using the [`partial`] function:
+> To override Hugo's embedded Open Graph template, copy the [source code](<{{% eturl opengraph %}}>) to a file with the same name in the `layouts/_partials` directory, then call it from your templates using the [`partial`] function:
 >
 > `{{ partial "opengraph.html" . }}`
 
@@ -154,7 +154,7 @@ See&nbsp;[details](/templates/pagination/).
 ## Schema
 
 > [!note]
-> To override Hugo's embedded Schema template, copy the [source code]({{% eturl schema %}}) to a file with the same name in the `layouts/_partials` directory, then call it from your templates using the [`partial`] function:
+> To override Hugo's embedded Schema template, copy the [source code](<{{% eturl schema %}}>) to a file with the same name in the `layouts/_partials` directory, then call it from your templates using the [`partial`] function:
 >
 > `{{ partial "schema.html" . }}`
 
@@ -169,7 +169,7 @@ To include the embedded template:
 ## X (Twitter) Cards
 
 > [!note]
-> To override Hugo's embedded Twitter Cards template, copy the [source code]({{% eturl twitter_cards %}}) to a file with the same name in the `layouts/_partials` directory, then call it from your templates using the [`partial`] function:
+> To override Hugo's embedded Twitter Cards template, copy the [source code](<{{% eturl twitter_cards %}}>) to a file with the same name in the `layouts/_partials` directory, then call it from your templates using the [`partial`] function:
 >
 > `{{ partial "twitter_cards.html" . }}`
 
index 9d94032c9fe945ef028573024a0433b9e455b245..207cfc4a70a8dec34521a395ad87b81aed2f3828 100644 (file)
@@ -90,9 +90,9 @@ Hugo renders this to:
 
 ## Actions
 
-In the examples above the paired opening and closing braces represent the beginning and end of a template action, a data evaluation or control structure within a template.
+In the examples above, the paired opening and closing braces represent the beginning and end of a template action, a data evaluation or control structure within a template.
 
-A template action may contain literal values ([boolean](g), [string](g), [integer](g), and [float](g)), variables, functions, and methods.
+A template action may contain literal values ([boolean](g), [string](g), [integer](g), and [float](g)), the [current context](#current-context), [variables](#variables), [functions](#functions), [methods](#methods), and the [`nil`](#nil) keyword.
 
 ```go-html-template {file="layouts/page.html"}
 {{ $convertToLower := true }}
@@ -105,12 +105,14 @@ In the example above:
 
 - `$convertToLower` is a variable
 - `true` is a literal boolean value
+- `if` is the beginning of a control structure
 - `strings.ToLower` is a function that converts all characters to lowercase
 - `Title` is a method on a the `Page` object
+- `end` is the end of a control structure
 
 Hugo renders the above to:
 
-```html
+```html {trim=false}
   
   
     <h2>my page title</h2>
@@ -185,6 +187,28 @@ This is line two.`
 }}
 ```
 
+### Nil
+
+Other than using the `nil` keyword in comparisons, you may not use it as an argument to any function or method, nor may you assign it to a variable. For example, these are valid uses of the `nil` keyword:
+
+```go-html-template
+{{ if gt 42 nil }}
+  <p>42 is greater than nil</p>
+{{ end }}
+
+{{ $pages := where .Site.RegularPages "Params.color" "ne" nil }}
+```
+
+These, on the other hand, are invalid:
+
+```go-html-template
+{{ $a := nil }} 
+{{ add 3 nil }} 
+{{ nil | print}}
+```
+
+The actions above throw an error.
+
 ## Variables
 
 A variable is a user-defined [identifier](g) prepended with a dollar sign (`$`), representing a value of any data type, initialized or assigned within a template action. For example, `$foo` and `$bar` are variables.
@@ -519,8 +543,8 @@ In the template example above, each of the keys is a valid identifier. For examp
 [`with`]: /functions/go-template/with/
 [current context]: #current-context
 [embedded templates]: /templates/embedded/
-[front matter]: /content-management/front-matter/
 [front matter fields]: /content-management/front-matter/#fields
+[front matter]: /content-management/front-matter/
 [functions]: /functions/
 [go-templates]: /functions/go-template/
 [html/template]: https://pkg.go.dev/html/template
index 6d42039495ad6f8ab1f8a62588fa813e28e1b378..a1174980d5579960d94e1e817935122376531a82 100644 (file)
@@ -237,4 +237,4 @@ public/
 [`Paginator`]: /methods/page/paginator/
 [`partial`]: /functions/partials/include/
 [grouping methods]: /quick-reference/page-collections/#group
-[source code]: {{% eturl pagination %}}
+[source code]: <{{% eturl pagination %}}>
index 807a6027a141d2dfb6fb332cc7c2a8f5b36a3fe8..8183d316f54605b4efe018b60f137197433f183d 100644 (file)
@@ -48,5 +48,5 @@ This template creates a robots.txt file with a `Disallow` directive for each pag
 >
 > Remember that Hugo copies everything in the static director to the root of `publishDir` (typically `public`) when you build your site.
 
-[embedded template]: {{% eturl robots %}}
+[embedded template]: <{{% eturl robots %}}>
 [site configuration]: /configuration/
index 6e92d4ba45bccbf7a364caaf2c4bde4e4d12c8ba..cbc393a0336d69c9fe9114ced7bb76d889d290a7 100644 (file)
@@ -72,4 +72,4 @@ layouts/
 
 RSS templates receive the `.Page` and `.Site` objects in context.
 
-[embedded RSS template]: {{% eturl rss %}}
+[embedded RSS template]: <{{% eturl rss %}}>
index f07206f6a96f8ef2a7eb722f5d6e96c4ab778187..34cf46f5a4c5af530176e3536a9a9e5d6c9f9904 100644 (file)
@@ -63,10 +63,10 @@ foo|html|en|`layouts/_shortcodes/foo.html.en.html`
 
 Shortcode name|Output format|Language|Template path
 :--|:--|:--|:--
-foo|json|en|`layouts/_shortcodes/foo.en.json`
-foo|json|en|`layouts/_shortcodes/foo.json`
-foo|json|en|`layouts/_shortcodes/foo.json.json`
-foo|json|en|`layouts/_shortcodes/foo.json.en.json`
+foo|rss|en|`layouts/_shortcodes/foo.en.rss.xml`
+foo|rss|en|`layouts/_shortcodes/foo.rss.xml`
+foo|rss|en|`layouts/_shortcodes/foo.en.xml`
+foo|rss|en|`layouts/_shortcodes/foo.xml`
 
 ## Methods
 
index 8eb358d87bec3be31300f1e52d21b64b6fcddc85..a79ec7bbaf072cc4d2fae4ada2af8df41ff4606a 100644 (file)
@@ -49,6 +49,6 @@ disableKinds = ['sitemap']
 {{</ code-toggle >}}
 
 [`publishDir`]: /configuration/all/#publishdir
-[embedded sitemap template]: {{% eturl sitemap %}}
-[embedded sitemapindex template]: {{% eturl sitemapindex %}}
+[embedded sitemap template]: <{{% eturl sitemap %}}>
+[embedded sitemapindex template]: <{{% eturl sitemapindex %}}>
 [sitemap protocol]: https://www.sitemaps.org/protocol.html
index 19e0e32dde4466eecf7b7cf02da27503dfb40de1..a030d7fdf10eed0041734ece107d6168d62e5403 100644 (file)
@@ -286,7 +286,7 @@ Execute the _partial_ template by calling the [`partial`] or [`partialCached`] f
 ```
 
 <!-- https://github.com/gohugoio/hugo/pull/13614#issuecomment-2805977008 -->
-Unlike other template types, Hugo does not consider the current page kind, content type, logical path, language, or output format when searching for a matching _partial_ template. However, it _does_ apply the same name matching logic it uses for other template types. This means it tries to find the most specific match first, then progressively looks for more general versions if the specific one isn't found.
+Unlike other template types, Hugo does not consider the current page kind, content type, logical path, language, or output format when searching for a matching _partial_ template. However, it _does_ apply the same _name_ matching logic it uses for other template types. This means it tries to find the most specific match first, then progressively looks for more general versions if the specific one isn't found.
 
 For example, with this call:
 
@@ -318,6 +318,7 @@ A _content view_ template is similar to a _partial_ template, invoked by calling
 
 - Inherit the context of the current page
 - Can target any page kind, content type, logical path, language, or output format
+- Can reside at any level within the `layouts` directory
 
 For example, Hugo applies a _base_ template to the _home_ template below, then renders the page content and a card component for each page within the "films" section of your site.
 
index 612e069871936ba33c48b43380908d30cf1e542d..4679ec09e4776bba076515348c5bb64142fcdcfd 100644 (file)
@@ -29,6 +29,11 @@ weight: 10
 [Syntax Highlighting for Hugo Shortcodes](https://marketplace.visualstudio.com/items?itemName=kaellarkin.hugo-shortcode-syntax)
 : This extension adds some syntax highlighting for Shortcodes, making visual identification of individual pieces easier.
 
+## JetBrains IDEs
+
+[Smart Hugo](https://smarthugo.dev)
+: Plugin for IntelliJ IDEA, WebStorm, PhpStorm, and other JetBrains IDEs that adds Hugo template support including syntax highlighting, actions completion, code formatting, and optional advanced features.
+
 ## Emacs
 
 [emacs-easy-hugo](https://github.com/masasam/emacs-easy-hugo)
index f6d2a96ae41eaceed4c5be41209b505546589757..b53f092a56437392c5461342f683f8a816e17718 100644 (file)
@@ -238,6 +238,7 @@ chroma:
   - Aliases:
     - docker
     - dockerfile
+    - containerfile
     Name: Docker
   - Aliases:
     - dtd
@@ -300,6 +301,12 @@ chroma:
     - gdscript3
     - gd3
     Name: GDScript3
+  - Aliases:
+    - gemtext
+    - gmi
+    - gmni
+    - gemini
+    Name: Gemtext
   - Aliases:
     - genshi
     - kid
@@ -456,6 +463,8 @@ chroma:
   - Aliases:
     - llvm
     Name: LLVM
+  - Aliases: null
+    Name: lox
   - Aliases:
     - lua
     - luau
@@ -561,6 +570,9 @@ chroma:
     - nsi
     - nsh
     Name: NSIS
+  - Aliases:
+    - nu
+    Name: Nu
   - Aliases:
     - objective-c
     - objectivec
@@ -1065,9 +1077,11 @@ config:
         - '**'
       high: 0s
       low: 0s
+    respectCacheControlNoStoreInRequest: true
+    respectCacheControlNoStoreInResponse: false
   archeTypeDir: archetypes
   assetDir: assets
-  author: null
+  author: {}
   baseURL: ""
   build:
     buildStats:
@@ -1226,7 +1240,10 @@ config:
             enable: false
           superscript:
             enable: false
-        footnote: true
+        footnote:
+          backlinkHTML: '&#x21a9;&#xfe0e;'
+          enable: true
+          enableAutoIDPrefix: false
         linkify: true
         linkifyProtocol: https
         passthrough:
@@ -1478,8 +1495,9 @@ config:
     tdewolff:
       css:
         inline: false
-        keepCSS2: true
+        keepCSS2: false
         precision: 0
+        version: 0
       html:
         keepComments: false
         keepConditionalComments: false
@@ -1884,7 +1902,7 @@ config:
       - ^postcss$
       - ^tailwindcss$
       osEnv:
-      - (?i)^((HTTPS?|NO)_PROXY|PATH(EXT)?|APPDATA|TE?MP|TERM|GO\w+|(XDG_CONFIG_)?HOME|USERPROFILE|SSH_AUTH_SOCK|DISPLAY|LANG|SYSTEMDRIVE)$
+      - (?i)^((HTTPS?|NO)_PROXY|PATH(EXT)?|APPDATA|TE?MP|TERM|GO\w+|(XDG_CONFIG_)?HOME|USERPROFILE|SSH_AUTH_SOCK|DISPLAY|LANG|SYSTEMDRIVE|PROGRAMDATA)$
     funcs:
       getenv:
       - ^HUGO_
@@ -1895,7 +1913,7 @@ config:
       - (?i)GET|POST
       urls:
       - .*
-  segments: null
+  segments: {}
   server:
     headers: null
     redirects:
@@ -1950,7 +1968,7 @@ config:
   timeout: 60s
   title: ""
   titleCaseStyle: AP
-  uglyURLs: null
+  uglyURLs: {}
   workingDir: ""
 config_helpers:
   mergeStrategy:
@@ -2093,6 +2111,11 @@ tpl:
         - - '{{ slice "a" "b" "c" "d" "e" "f" | complement (slice "b" "c") (slice
             "d" "e") }}'
           - '[a f]'
+      D:
+        Aliases: null
+        Args: null
+        Description: ""
+        Examples: null
       Delimit:
         Aliases:
         - delimit
index 106929884a7b1e1c1cb93e6ec3c6ada9c4ce4e0d..cd021bbdb48cab8d46e1c3a804cab4cbf21f5581 100644 (file)
@@ -7,6 +7,7 @@
 # will decrease over time, though the initial implementation will require some
 # effort.
 
+- highlight
 - menu
+- random
 - resource
-- highlight
index e515f843d130039343a0b9e4f809a513e9a67b2b..ec77f4caecf0f953ec7eff7aae652b1fccae66c9 100644 (file)
@@ -78,13 +78,6 @@ methods_pages_group:
   - /methods/pages/groupbyparam
   - /methods/pages/groupbyparamdate
   - /methods/pages/groupbypublishdate
-  - /methods/pages/groupbydate
-  - /methods/pages/groupbydate
-  - /methods/pages/groupbydate
-  - /methods/pages/groupbydate
-  - /methods/pages/groupbydate
-  - /methods/pages/groupbydate
-  - /methods/pages/reverse
 methods_pages_navigation:
   - /methods/pages/next
   - /methods/pages/prev
index 84769a45312c644dec6648f0615b00441663629d..c8eda58837b25ff0c38ec99179d64eb1f5543887 100644 (file)
   link            = "https://www.jetbrains.com/go/?utm_source=OSS&utm_medium=referral&utm_campaign=hugo"
   logo            = "images/sponsors/goland.svg"
   bgcolor         = "#f4f4f4"
+
+[[banners]]
+  name            = "CloudCannon"
+  link            = "https://cloudcannon.com/hugo-cms/?utm_campaign=HugoSponsorship&utm_content=gohugo&utm_medium=banner&utm_source=sponsor"
+  logo            = "images/sponsors/cloudcannon-cms-logo.svg"
+  no_query_params = true
+  bgcolor         = "#ffffff"
index 13725ffcdda2cb4b38db3499fd8652c9156455f0..0f1d09d1f28938acbe8bcf45fc9703dc722b1064 100644 (file)
@@ -10,6 +10,7 @@ may also specify the following parameters:
 @param {bool} [details=false] Whether to wrap the highlighted code block within a details element.
 @param {bool} [open=false] Whether to initially display the content of the details element.
 @param {string} [summary=Details] The content of the details summary element rendered from Markdown to HTML.
+@param {bool} [trim=true] Whether to trim leading and trailing whitespace from the content of the code block.
 
 @returns {template.HTML}
 
@@ -30,6 +31,7 @@ may also specify the following parameters:
 {{- $details := false }}
 {{- $open := "" }}
 {{- $summary := or .Attributes.summary "Details" | .Page.RenderString }}
+{{- $trim := true }}
 {{- $ext := strings.TrimPrefix "." (path.Ext $file) }}
 {{- $lang := or .Type $ext "text" }}
 {{- if in (slice "html" "gotmpl") $lang }}
@@ -39,30 +41,38 @@ may also specify the following parameters:
   {{- $lang = "text" }}
 {{- end }}
 
-{{- with .Attributes.copy }}
-  {{- if in (slice true "true" 1) . }}
+{{- if collections.IsSet .Attributes "copy" }}
+  {{- if in (slice true "true" 1) .Attributes.copy }}
     {{- $copy = true }}
-  {{- else if in (slice false "false" 0) . }}
+  {{- else if in (slice false "false" 0) .Attributes.copy }}
     {{- $copy = false }}
   {{- end }}
 {{- end }}
 
-{{- with .Attributes.details }}
-  {{- if in (slice true "true" 1) . }}
+{{- if collections.IsSet .Attributes "details" }}
+  {{- if in (slice true "true" 1) .Attributes.details }}
     {{- $details = true }}
-  {{- else if in (slice false "false" 0) . }}
+  {{- else if in (slice false "false" 0) .Attributes.details }}
     {{- $details = false }}
   {{- end }}
 {{- end }}
 
-{{- with .Attributes.open }}
-  {{- if in (slice true "true" 1) . }}
+{{- if collections.IsSet .Attributes "open" }}
+  {{- if in (slice true "true" 1) .Attributes.open }}
     {{- $open = "open" }}
-  {{- else if in (slice false "false" 0) . }}
+  {{- else if in (slice false "false" 0) .Attributes.open }}
     {{- $open = "" }}
   {{- end }}
 {{- end }}
 
+{{- if collections.IsSet .Attributes "trim" }}
+  {{- if in (slice true "true" 1) .Attributes.trim }}
+    {{- $trim = true }}
+  {{- else if in (slice false "false" 0) .Attributes.trim }}
+    {{- $trim = false }}
+  {{- end }}
+{{- end }}
+
 {{- if $details }}
   <details class="cursor-pointer" {{ $open }}>
   <summary>{{ $summary }}</summary>
@@ -89,7 +99,11 @@ may also specify the following parameters:
   {{- end }}
 
   <div x-ref="code">
-    {{- transform.Highlight (strings.TrimSpace .Inner) $lang .Options }}
+    {{- $content := .Inner }}
+    {{- if $trim }}
+      {{- $content = strings.TrimSpace .Inner }}
+    {{- end }}
+    {{- transform.Highlight $content $lang .Options }}
   </div>
 </div>
 
index 55063609580b0e65f4f4ce0154d4acb18af1846d..265d7ccd04d2f4d6db33f74014861ba898c75d31 100644 (file)
@@ -12,6 +12,9 @@
   {{ .Site.Title }}
 </title>
 
+<link rel="preload" href="{{ `fonts/Mulish-VariableFont_wght.ttf` | relURL }}" as="font" type="font/ttf" crossorigin="anonymous" />
+<link rel="preload" href="{{ `fonts/Mulish-Italic-VariableFont_wght.ttf` | relURL }}" as="font" type="font/ttf" crossorigin="anonymous" />
+
 <link rel=apple-touch-icon sizes=180x180 href=/apple-touch-icon.png>
 <link rel=icon type=image/png href=/favicon-32x32.png sizes=32x32>
 <link rel=icon type=image/png href=/favicon-16x16.png sizes=16x16>
@@ -19,7 +22,6 @@
 <link rel=mask-icon href=/safari-pinned-tab.svg color=#0594cb>
 
 <meta name="turbo-prefetch" content="true">
-<meta name="view-transition" content="same-origin">
 
 {{ range .AlternativeOutputFormats -}}
   <link
index 3430bd846f05c595a32db7ad9d6131aee8435048..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,3 +0,0 @@
-{{ with resources.Get "js/body-start.js" | js.Build (dict "minify" true) }}
-  {{ partial "helpers/linkjs.html" (dict "r" . "attributes" (dict "" "")) }}
-{{ end }}
index dac5b8d5b44b430557149ff8992b19774a831f6e..9c0146c88a6a5dbcb189ec475884eac7aae0feab 100644 (file)
@@ -1,6 +1,5 @@
 {{- $heading := "See also" }}
-{{- $related := site.Pages.Related . }}
-{{- $related = $related | complement .CurrentSection.Pages | first 7 }}
+{{- $related := site.Pages.Related . | first 7}}
 
 {{- with $related }}
   {{ $.Store.Set "hasRelated" true }}
index 7331d5c9f1a414d12c5ad6ca92a1cb536c3d844f..ec08cf311c105d0afc8272814189c4edf7db6e5a 100644 (file)
@@ -39,7 +39,7 @@ shortcode.
           {{- $destination = $u.String }}
         {{- else }}
           {{- with site.GetPage $u.Path }}
-            {{- $destination = .RelPermalink }}
+            {{- $destination = .Path }}
           {{- else }}
             {{- errorf "The %q shortcode was unable to find the reference link %s: see %s" $.Name . $p.String }}
           {{- end }}
index f6dfe72752890d36152b3f94ceb5586ffe250937..df06d53ca279c6e4bf0409fd48c96b066dc43fdd 100644 (file)
@@ -14,9 +14,9 @@ if any of the pages in the filter do not exist.
 @param {string} [filterType=""] The type of filter, either include or exclude.
 @param {string} [titlePrefix=""] The string to prepend to the link title.
 
-@example {{< list-pages-in-section path=/methods/resources >}}
-@example {{< list-pages-in-section path=/functions/images filter=some_filter filterType=exclude >}}
-@example {{< list-pages-in-section path=/functions/images filter=some_filter filterType=exclude titlePrefix=foo >}}
+@example {{% list-pages-in-section path=/methods/resources %}}
+@example {{% list-pages-in-section path=/functions/images filter=some_filter filterType=exclude %}}
+@example {{% list-pages-in-section path=/functions/images filter=some_filter filterType=exclude titlePrefix=foo %}}
 */}}
 
 {{/* Initialize. */}}
@@ -54,7 +54,8 @@ if any of the pages in the filter do not exist.
             {{ with $titlePrefix }}
               {{ $linkTitle = printf "%s%s" . $linkTitle }}
             {{ end }}
-[{{ $linkTitle }}]({{ $page.RelPermalink }}){{/* Do not indent. */}}
+{{/* Use page Path as the link destination for render hook to resolve correctly. */}}
+[{{ $linkTitle }}]({{ $page.Path }}){{/* Do not indent. */}}
 : {{ $page.Description }}{{/* Do not indent. */}}
           {{ end }}
         {{ end }}
index 0ac5440369fb461b564ec7f01dc89ac12251054e..d4c4d7bc808e580681a8d0fcdc5534d5da2b6d6a 100644 (file)
@@ -20,7 +20,8 @@ immediate descendants.
     {{ .Content }}
     {{ with .Pages }}
       {{ range . }}
-[{{ .LinkTitle }}]({{ .RelPermalink }}){{/* Do not indent. */}}
+{{/* Use page Path as the link destination for render hook to resolve correctly. */}}
+[{{ .LinkTitle }}]({{ .Path }}){{/* Do not indent. */}}
 : {{ .Description }}{{/* Do not indent. */}}
       {{ end }}
     {{ end }}
index c5df69a92bb1ba890d1237f5d49bd04269724702..ad4dd90a9788179f69b129c8c19b382a95864845 100644 (file)
     {{ $noop := .WordCount }}
     {{ if .Page.Store.Get "hasMath" }}
       <link
-        href="https://cdn.jsdelivr.net/npm/katex@0.16.21/dist/katex.min.css"
-        rel="stylesheet">
+        rel="stylesheet"
+        href="https://cdn.jsdelivr.net/npm/katex@0.16.25/dist/katex.min.css"
+        integrity="sha384-WcoG4HRXMzYzfCgiyfrySxx90XSl2rxY5mnVY5TwtWE6KLrArNKn0T/mOgNL0Mmi"
+        crossorigin="anonymous"
+      >
     {{ end }}
     {{ partial "layouts/head/head.html" . }}
   </head>
index 6d028743d7d830d97726a4db4c6c0eb64fbcaf38..2df6ab8943bfd4e2e72b4f5cf2685e2b04b42054 100644 (file)
@@ -3,7 +3,7 @@
   command = "hugo --gc --minify"
 
   [build.environment]
-    HUGO_VERSION = "0.148.2"
+    HUGO_VERSION = "0.152.2"
 
 [context.production.environment]
   HUGO_ENV           = "production"
index 24ffc7ff534b5c2105c5acbd5e647d932f506e0d..1fda5ee85fcd41ee664d24068dd3a1351abbe085 100644 (file)
@@ -9,17 +9,17 @@
   "author": "",
   "license": "",
   "devDependencies": {
-    "@awmottaz/prettier-plugin-void-html": "~1.8.0",
-    "@tailwindcss/cli": "~4.1.0",
-    "@tailwindcss/typography": "~0.5.16",
-    "prettier": "~3.5.3",
+    "@awmottaz/prettier-plugin-void-html": "~2.0.0",
+    "@tailwindcss/cli": "~4.1.18",
+    "@tailwindcss/typography": "~0.5.19",
+    "prettier": "~3.7.4",
     "prettier-plugin-go-template": "~0.0.15",
-    "tailwindcss": "~4.1.0"
+    "tailwindcss": "~4.1.18"
   },
   "dependencies": {
-    "@alpinejs/focus": "~3.14.9",
-    "@alpinejs/persist": "~3.14.9",
-    "@hotwired/turbo": "~8.0.13",
-    "alpinejs": "~3.14.9"
+    "@alpinejs/focus": "~3.15.3",
+    "@alpinejs/persist": "~3.15.3",
+    "@hotwired/turbo": "~8.0.20",
+    "alpinejs": "~3.15.3"
   }
 }