Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
146 commits
Select commit Hold shift + click to select a range
2ca41f6
build(deps): bump cssnano-preset-advanced from 7.0.12 to 7.0.13
dependabot[bot] Apr 13, 2026
e813ebf
build(deps-dev): bump globals from 17.4.0 to 17.5.0
dependabot[bot] Apr 13, 2026
92680e4
fix: update Hugo module dependencies
markdumay Apr 15, 2026
ac1d959
Merge branch 'main' into dependabot/npm_and_yarn/globals-17.5.0
markdumay Apr 17, 2026
439ea84
Merge pull request #583 from gethinode/develop
markdumay Apr 17, 2026
28154d5
Merge branch 'main' into dependabot/npm_and_yarn/cssnano-preset-advan…
markdumay Apr 17, 2026
41e36ff
Merge pull request #580 from gethinode/dependabot/npm_and_yarn/cssnan…
markdumay Apr 17, 2026
81b2cb5
Merge branch 'main' into dependabot/npm_and_yarn/globals-17.5.0
markdumay Apr 17, 2026
0072185
build(deps-dev): bump stylelint from 17.6.0 to 17.7.0
dependabot[bot] Apr 17, 2026
c183ba2
Merge pull request #581 from gethinode/dependabot/npm_and_yarn/global…
markdumay Apr 17, 2026
b8ddd31
Merge branch 'main' into dependabot/npm_and_yarn/stylelint-17.7.0
markdumay Apr 17, 2026
8a65df7
build(deps): bump hugo-extended from 0.159.2 to 0.160.1
dependabot[bot] Apr 17, 2026
3966741
Merge pull request #579 from gethinode/dependabot/npm_and_yarn/stylel…
markdumay Apr 17, 2026
6f5e952
Merge branch 'main' into dependabot/npm_and_yarn/hugo-extended-0.160.1
markdumay Apr 17, 2026
05e7dd9
Merge pull request #578 from gethinode/dependabot/npm_and_yarn/hugo-e…
markdumay Apr 17, 2026
56575ca
build(deps-dev): bump eslint from 10.1.0 to 10.2.0
dependabot[bot] Apr 17, 2026
64fe3d2
Merge branch 'main' into hugo-mod-dependencies
markdumay Apr 17, 2026
4cf3860
Merge pull request #577 from gethinode/hugo-mod-dependencies
markdumay Apr 17, 2026
2d077ff
Merge branch 'main' into dependabot/npm_and_yarn/eslint-10.2.0
markdumay Apr 17, 2026
99a9db3
Merge pull request #575 from gethinode/dependabot/npm_and_yarn/eslint…
markdumay Apr 17, 2026
173135a
build(deps-dev): bump markdownlint-cli2 from 0.22.0 to 0.22.1
dependabot[bot] Apr 22, 2026
f07bdea
fix: update Hugo module dependencies
markdumay May 3, 2026
4376118
build(deps): bump gethinode/create-pull-request from 7 to 8
dependabot[bot] May 4, 2026
27766ad
Merge pull request #591 from gethinode/dependabot/github_actions/geth…
markdumay May 5, 2026
f43d8a8
Merge branch 'main' into dependabot/npm_and_yarn/markdownlint-cli2-0.…
markdumay May 5, 2026
2f7911b
Merge pull request #590 from gethinode/dependabot/npm_and_yarn/markdo…
markdumay May 5, 2026
b29ea9b
build(deps): bump cssnano from 7.1.4 to 7.1.9
dependabot[bot] May 5, 2026
6a970f5
Merge pull request #589 from gethinode/dependabot/npm_and_yarn/cssnan…
markdumay May 5, 2026
6a5c067
build(deps-dev): bump eslint from 10.2.0 to 10.3.0
dependabot[bot] May 5, 2026
c4c6c34
build(deps): bump cssnano-preset-advanced from 7.0.13 to 7.0.16
dependabot[bot] May 5, 2026
0e2042c
Merge pull request #588 from gethinode/dependabot/npm_and_yarn/cssnan…
markdumay May 5, 2026
b9d8901
Merge branch 'main' into dependabot/npm_and_yarn/eslint-10.2.1
markdumay May 5, 2026
001e88d
Merge pull request #587 from gethinode/dependabot/npm_and_yarn/eslint…
markdumay May 5, 2026
2ac1126
Merge branch 'main' into hugo-mod-dependencies
markdumay May 5, 2026
15997a8
Merge pull request #586 from gethinode/hugo-mod-dependencies
markdumay May 5, 2026
1194df9
build(deps-dev): bump globals from 17.5.0 to 17.6.0
dependabot[bot] May 5, 2026
67102d9
build(deps): bump hugo-extended from 0.160.1 to 0.161.1
dependabot[bot] May 5, 2026
de74924
build(deps-dev): bump @commitlint/cli from 20.5.0 to 20.5.3
dependabot[bot] May 5, 2026
9f49332
build(deps): bump brace-expansion from 5.0.5 to 5.0.6
dependabot[bot] May 18, 2026
2a3b5b5
build(deps): bump actions/checkout from 6 to 7
dependabot[bot] Jun 22, 2026
4d171fb
build(deps): bump actions/cache from 5 to 6
dependabot[bot] Jun 29, 2026
bc3898d
ci: adopt reusable workflows (npm); document pnpm opt-in
markdumay Jul 9, 2026
9cb753f
ci: re-trigger checks
markdumay Jul 9, 2026
7c55356
docs: document pnpm opt-in; keep inline CI (self-contained for extern…
markdumay Jul 9, 2026
527f472
Merge pull request #604 from gethinode/build/pnpm-optin
markdumay Jul 9, 2026
f1ca1fb
fix: update Hugo module dependencies
markdumay Jul 10, 2026
7bb4441
Merge branch 'main' into dependabot/github_actions/actions/cache-6
markdumay Jul 10, 2026
6d2d1de
Merge pull request #603 from gethinode/dependabot/github_actions/acti…
markdumay Jul 10, 2026
3a6fc8f
Merge branch 'main' into dependabot/github_actions/actions/checkout-7
markdumay Jul 10, 2026
f48ddbe
build(deps): bump fast-uri from 3.1.0 to 3.1.3
dependabot[bot] Jul 10, 2026
b057301
build(deps): bump markdown-it and markdownlint-cli2
dependabot[bot] Jul 10, 2026
873200c
Merge pull request #602 from gethinode/dependabot/github_actions/acti…
markdumay Jul 10, 2026
64a86be
Merge branch 'main' into dependabot/npm_and_yarn/multi-30c1a31621
markdumay Jul 10, 2026
0bea318
Merge pull request #606 from gethinode/dependabot/npm_and_yarn/multi-…
markdumay Jul 10, 2026
8e89b12
Merge branch 'main' into dependabot/npm_and_yarn/fast-uri-3.1.3
markdumay Jul 10, 2026
26f0bf9
Merge pull request #605 from gethinode/dependabot/npm_and_yarn/fast-u…
markdumay Jul 10, 2026
ea68e76
Merge branch 'main' into dependabot/npm_and_yarn/commitlint/cli-20.5.3
markdumay Jul 10, 2026
4a69b53
Merge pull request #596 from gethinode/dependabot/npm_and_yarn/commit…
markdumay Jul 10, 2026
f919418
build(deps): bump tar from 7.5.13 to 7.5.19
dependabot[bot] Jul 10, 2026
f9aede2
Merge pull request #601 from gethinode/dependabot/npm_and_yarn/tar-7.…
markdumay Jul 10, 2026
87b3363
build(deps-dev): bump shell-quote from 1.8.3 to 1.9.0
dependabot[bot] Jul 10, 2026
43aaf43
Merge pull request #600 from gethinode/dependabot/npm_and_yarn/shell-…
markdumay Jul 10, 2026
20a1cbf
Merge branch 'main' into dependabot/npm_and_yarn/brace-expansion-5.0.6
markdumay Jul 10, 2026
37c698e
Merge pull request #599 from gethinode/dependabot/npm_and_yarn/brace-…
markdumay Jul 10, 2026
5959f3d
Merge branch 'main' into dependabot/npm_and_yarn/globals-17.6.0
markdumay Jul 10, 2026
52a09e1
Merge pull request #592 from gethinode/dependabot/npm_and_yarn/global…
markdumay Jul 10, 2026
25fe2cf
Merge branch 'main' into dependabot/npm_and_yarn/hugo-extended-0.161.1
markdumay Jul 10, 2026
557cddb
Merge branch 'main' into hugo-mod-dependencies
markdumay Jul 10, 2026
95ea100
Merge pull request #597 from gethinode/hugo-mod-dependencies
markdumay Jul 10, 2026
8ae9935
build(deps-dev): bump stylelint from 17.8.0 to 17.14.0
dependabot[bot] Jul 10, 2026
6cd3940
Merge pull request #595 from gethinode/dependabot/npm_and_yarn/stylel…
markdumay Jul 10, 2026
680e0cf
build(deps-dev): bump @commitlint/config-conventional
dependabot[bot] Jul 10, 2026
ad8cf65
Merge branch 'main' into dependabot/npm_and_yarn/hugo-extended-0.161.1
markdumay Jul 10, 2026
ee62b77
Merge pull request #593 from gethinode/dependabot/npm_and_yarn/hugo-e…
markdumay Jul 10, 2026
44ce03a
Merge branch 'main' into dependabot/npm_and_yarn/commitlint/config-co…
markdumay Jul 10, 2026
35024f3
Merge pull request #594 from gethinode/dependabot/npm_and_yarn/commit…
markdumay Jul 10, 2026
d2d4e49
feat: adopt hinode v3 and the mod-utils v6 module generation
markdumay Jul 13, 2026
932b0c3
Merge pull request #613 from gethinode/feat/hinode-v3
markdumay Jul 13, 2026
afdd067
feat: adopt the purged-by-default styles pipeline (hinode v3.6.0)
markdumay Jul 17, 2026
cfc5f72
fix: bump hinode v3.6.1 + mod-flexsearch v5.1.1 (search index on Hugo…
markdumay Jul 18, 2026
43fc97c
Merge pull request #614 from gethinode/styles/s4-adopt-pipeline
markdumay Jul 18, 2026
6b1849f
feat: adopt hinode v3.7.0 with the js.Build script pipeline
markdumay Jul 18, 2026
d375fec
Merge pull request #615 from gethinode/chore/adopt-hinode-3.7.0
markdumay Jul 18, 2026
dc39e96
build(deps): bump postcss from 8.5.16 to 8.5.24
dependabot[bot] Jul 28, 2026
15bfa35
build(deps): bump tar from 7.5.19 to 7.5.22
dependabot[bot] Jul 28, 2026
4af4035
fix: update Hugo module dependencies
markdumay Aug 2, 2026
f6865ec
fix: drop the dead HUGO_VERSION pin from the Netlify config
markdumay Aug 2, 2026
1a06d5d
Merge pull request #625 from gethinode/fix/drop-dead-hugo-version-pin
markdumay Aug 2, 2026
1d5d55a
Merge branch 'main' into dependabot/npm_and_yarn/tar-7.5.22
markdumay Aug 2, 2026
b669f5b
Merge pull request #624 from gethinode/dependabot/npm_and_yarn/tar-7.…
markdumay Aug 2, 2026
653b635
Merge branch 'main' into dependabot/npm_and_yarn/postcss-8.5.24
markdumay Aug 2, 2026
abe65bf
ci: enable dependabot auto-merge for minor and patch
markdumay Aug 2, 2026
1ec81dd
Merge branch 'main' into hugo-mod-dependencies
markdumay Aug 2, 2026
ae51c43
build(deps): bump hugo-extended from 0.161.1 to 0.164.0
dependabot[bot] Aug 2, 2026
0bbce8d
build(deps): bump actions/setup-node from 6 to 7
dependabot[bot] Aug 2, 2026
32e4a77
build(deps): bump actions/setup-go from 6 to 7
dependabot[bot] Aug 2, 2026
fecbbcf
Merge pull request #607 from gethinode/dependabot/npm_and_yarn/hugo-e…
github-actions[bot] Aug 2, 2026
98658bd
Merge branch 'main' into hugo-mod-dependencies
markdumay Aug 2, 2026
9c60b3c
Merge pull request #612 from gethinode/hugo-mod-dependencies
markdumay Aug 2, 2026
45cbb9f
Merge branch 'main' into dependabot/npm_and_yarn/postcss-8.5.24
markdumay Aug 2, 2026
732e85f
Merge pull request #623 from gethinode/dependabot/npm_and_yarn/postcs…
github-actions[bot] Aug 2, 2026
246e419
build(deps-dev): bump eslint from 10.3.0 to 10.8.0
dependabot[bot] Aug 2, 2026
53b9362
Merge pull request #620 from gethinode/dependabot/npm_and_yarn/eslint…
github-actions[bot] Aug 2, 2026
6110f4d
build(deps-dev): bump @commitlint/cli from 20.5.3 to 21.2.1
dependabot[bot] Aug 2, 2026
f7c638d
Merge pull request #618 from gethinode/dependabot/npm_and_yarn/commit…
github-actions[bot] Aug 2, 2026
4cf9f7e
build(deps): bump cssnano from 7.1.9 to 8.0.2
dependabot[bot] Aug 2, 2026
3c762a3
Merge pull request #610 from gethinode/dependabot/npm_and_yarn/cssnan…
github-actions[bot] Aug 2, 2026
8c05e9b
build(deps): bump fast-uri from 3.1.3 to 3.1.5
dependabot[bot] Aug 2, 2026
0760182
Merge pull request #622 from gethinode/dependabot/npm_and_yarn/fast-u…
github-actions[bot] Aug 2, 2026
a7e987d
build(deps): bump autoprefixer from 10.5.0 to 10.5.4
dependabot[bot] Aug 2, 2026
32be93c
Merge pull request #619 from gethinode/dependabot/npm_and_yarn/autopr…
github-actions[bot] Aug 2, 2026
c12a39e
Merge branch 'main' into dependabot/github_actions/actions/setup-node-7
markdumay Aug 2, 2026
626cbbc
Merge pull request #617 from gethinode/dependabot/github_actions/acti…
github-actions[bot] Aug 2, 2026
226af30
Merge branch 'main' into dependabot/github_actions/actions/setup-go-7
markdumay Aug 2, 2026
45f5bf4
Merge pull request #616 from gethinode/dependabot/github_actions/acti…
github-actions[bot] Aug 2, 2026
4f16eeb
fix: update Hugo module dependencies
markdumay Aug 2, 2026
8f75bb7
Merge pull request #627 from gethinode/hugo-mod-dependencies
markdumay Aug 2, 2026
94118dc
build(deps-dev): bump markdownlint-cli2 from 0.23.0 to 0.23.2
dependabot[bot] Aug 3, 2026
a98bd1e
Merge pull request #630 from gethinode/dependabot/npm_and_yarn/markdo…
github-actions[bot] Aug 3, 2026
375c07c
build(deps-dev): bump globals from 17.6.0 to 17.8.0
dependabot[bot] Aug 3, 2026
9346294
Merge pull request #631 from gethinode/dependabot/npm_and_yarn/global…
github-actions[bot] Aug 3, 2026
66015ce
build(deps-dev): bump stylelint from 17.14.0 to 17.14.1
dependabot[bot] Aug 3, 2026
1b3af7d
Merge pull request #629 from gethinode/dependabot/npm_and_yarn/stylel…
github-actions[bot] Aug 3, 2026
c9a751a
fix: update Hugo module dependencies
markdumay Aug 5, 2026
830ba43
Merge pull request #628 from gethinode/hugo-mod-dependencies
markdumay Aug 5, 2026
ca83288
build(deps-dev): bump globals from 17.8.0 to 17.9.0
dependabot[bot] Aug 5, 2026
e723291
Merge pull request #632 from gethinode/dependabot/npm_and_yarn/global…
github-actions[bot] Aug 5, 2026
88f3a8a
fix: update Hugo module dependencies
markdumay Aug 6, 2026
fe68f45
Merge pull request #633 from gethinode/hugo-mod-dependencies
markdumay Aug 6, 2026
3dd3339
ci: bound the Hugo cache key to an ISO week
markdumay Aug 8, 2026
d7b396a
Merge pull request #635 from gethinode/ci/weekly-cache-key
markdumay Aug 8, 2026
7bc352d
build(deps-dev): bump js-yaml from 4.1.1 to 4.3.1
dependabot[bot] Aug 8, 2026
8ff70ef
Merge pull request #636 from gethinode/dependabot/npm_and_yarn/js-yam…
github-actions[bot] Aug 8, 2026
d9ee898
build(deps): bump cssnano from 8.0.2 to 8.0.4
dependabot[bot] Aug 10, 2026
96d01b9
Merge pull request #637 from gethinode/dependabot/npm_and_yarn/cssnan…
github-actions[bot] Aug 10, 2026
c8b226f
build(deps-dev): bump eslint from 10.8.0 to 10.8.1
dependabot[bot] Aug 11, 2026
dd94569
Merge pull request #638 from gethinode/dependabot/npm_and_yarn/eslint…
github-actions[bot] Aug 11, 2026
913dead
build(deps): bump cssnano from 8.0.4 to 8.0.5
dependabot[bot] Aug 13, 2026
21b4d19
Merge pull request #639 from gethinode/dependabot/npm_and_yarn/cssnan…
github-actions[bot] Aug 13, 2026
9226073
build(deps-dev): bump @commitlint/cli from 21.2.1 to 21.2.2
dependabot[bot] Aug 17, 2026
e1ed9a2
Merge pull request #640 from gethinode/dependabot/npm_and_yarn/commit…
github-actions[bot] Aug 17, 2026
d4d3572
build(deps-dev): bump globals from 17.9.0 to 17.11.0
dependabot[bot] Aug 17, 2026
381dbd1
Merge pull request #641 from gethinode/dependabot/npm_and_yarn/global…
github-actions[bot] Aug 17, 2026
47d92e6
build(deps): bump cssnano from 8.0.5 to 8.0.6
dependabot[bot] Aug 20, 2026
a584108
Merge pull request #643 from gethinode/dependabot/npm_and_yarn/cssnan…
github-actions[bot] Aug 20, 2026
fcaf4a8
fix: CVE-2026-39244 security vulnerability
anupamme Aug 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions .github/workflows/auto-merge.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,7 @@ permissions:
jobs:
review-dependabot-pr:
runs-on: ubuntu-latest
# remove next line and uncomment the line after to enable auto merge
if: false
# if: ${{ github.event.pull_request.user.login == 'dependabot[bot]' }}
if: ${{ github.event.pull_request.user.login == 'dependabot[bot]' }}
steps:
- name: Dependabot metadata
id: metadata
Expand Down
30 changes: 22 additions & 8 deletions .github/workflows/lint-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@ jobs:

steps:
- name: Check out repository
uses: actions/checkout@v6
uses: actions/checkout@v7

- name: Set up Node.js
uses: actions/setup-node@v6
uses: actions/setup-node@v7
with:
node-version: lts/*
cache: 'npm'
Expand Down Expand Up @@ -60,15 +60,15 @@ jobs:

steps:
- name: Check out repository
uses: actions/checkout@v6
uses: actions/checkout@v7

- name: Install Go
uses: actions/setup-go@v6
uses: actions/setup-go@v7
with:
go-version: "stable"

- name: Set up Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v6
uses: actions/setup-node@v7
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
Expand Down Expand Up @@ -115,13 +115,27 @@ jobs:
shell: pwsh

# Cache Hugo cachedir and resourcedir (configured in config/ci/hugo.toml) for each OS.
# Rolling key restores the previous snapshot as a warm start, then saves a fresh one after build.
# The key restores the previous snapshot as a warm start, then saves a fresh one after build.
# No additional content-based invalidation is needed; Hugo uses checksums itself.
#
# The suffix rotates weekly rather than per run. A run_id suffix saves a fresh entry every run and
# never reclaims the previous one, and a repository's Actions cache is a single ~10 GB LRU pool
# shared by every workflow in it — so those entries fill the pool and GitHub then evicts by last
# access, taking out the small caches other jobs depend on rather than the ones causing the
# pressure. An ISO-week suffix caps this prefix at roughly two live entries per OS per branch.
#
# %G/%V are the ISO year and week and must be paired — %Y/%V is wrong across a year boundary. The
# step needs an explicit bash shell because the Windows legs of the matrix default to pwsh.
- name: Compute the weekly cache epoch
id: cache-epoch
run: echo "week=$(date -u +%G-W%V)" >> "$GITHUB_OUTPUT"
shell: bash

- name: Use Hugo cache
uses: actions/cache@v5
uses: actions/cache@v6
with:
path: ${{ env.HUGO_CACHEDIR }}
key: ${{ runner.os }}-${{ env.CACHE_KEY }}-${{ github.run_id }}
key: ${{ runner.os }}-${{ env.CACHE_KEY }}-${{ steps.cache-epoch.outputs.week }}
restore-keys: |
${{ runner.os }}-${{ env.CACHE_KEY }}-

Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/mod-update.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7

- name: Setup Node.js
uses: actions/setup-node@v6
uses: actions/setup-node@v7
with:
node-version: lts/*
cache: 'npm'
Expand All @@ -38,7 +38,7 @@ jobs:
echo 'EOF' >> $GITHUB_OUTPUT

- name: Create Pull Request
uses: gethinode/create-pull-request@v7
uses: gethinode/create-pull-request@v8
with:
token: ${{ secrets.HUGO_MOD_PR }}
commit-message: 'fix: update Hugo module dependencies'
Expand Down
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,8 @@ resources/
node_modules/

.DS_store
.hugo_build.lock
.hugo_build.lock
# Generated by build.buildStats; regenerated each build, never committed
hugo_stats.json
# Generated by js.Build for editor intellisense; regenerated each build
assets/jsconfig.json
68 changes: 68 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,74 @@ Hinode is a theme that uses [Hugo modules][hugo_modules] to install and maintain

You can now run `npm run start` to start a local development server.

## Using pnpm (optional)

This template uses **npm** by default. If you prefer [pnpm](https://pnpm.io) — faster installs, a shared package store, a 24-hour supply-chain quarantine, and stricter dependency isolation — switch with the following steps.

1. Replace the lockfile:

```bash
pnpm import # seed pnpm-lock.yaml from package-lock.json
rm package-lock.json
```

2. Pin pnpm in `package.json` (use your installed pnpm version):

```json
"packageManager": "pnpm@10.0.0"
```

3. Add a `.npmrc` for the supply-chain quarantine:

```ini
# Reject any version published less than 24h ago.
minimum-release-age=1440
```

4. Add `pnpm-workspace.yaml`:

```yaml
allowBuilds:
hugo-extended: true # downloads the platform-specific Hugo binary
minimumReleaseAgeExclude:
- "@gethinode/*"
```

5. Restore PostCSS compatibility. Hugo needs an npm-format `postcss` bin shim, which pnpm does not create. Add `cmd-shim` and a postinstall step:

```bash
pnpm add -D cmd-shim
```

Create `scripts/fix-postcss-bin.cjs`:

```js
const fs = require('fs');
const path = require('path');
const cmdShim = require('cmd-shim');

const entry = path.join('node_modules', 'postcss-cli', 'index.js');
const target = path.join('node_modules', '.bin', 'postcss');
if (fs.existsSync(entry)) {
fs.mkdirSync(path.dirname(target), { recursive: true });
cmdShim(entry, target).catch((e) => {
console.error('fix-postcss-bin:', e.message);
process.exit(1);
});
}
```

Then add to your `package.json` scripts: `"postinstall": "node scripts/fix-postcss-bin.cjs"`.

6. Install and build:

```bash
pnpm install
pnpm run build
```

If you use the bundled GitHub Actions workflows, update them to use pnpm as well — replace the `npm ci`/`npm i` install steps with `pnpm install` (which runs the `postinstall` shim above).

<!-- MARKDOWN LINKS -->
[docs]: https://gethinode.com/docs
[git_download]: https://git-scm.com
Expand Down
5 changes: 2 additions & 3 deletions config/_default/hugo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,6 @@ home = ["HTML", "RSS", "REDIR", "netlify", "server"]

[minify]
[minify.tdewolff.js]
keepVarNames = true
precision = 0
version = 2022
[minify.tdewolff.html]
Expand Down Expand Up @@ -123,9 +122,9 @@ home = ["HTML", "RSS", "REDIR", "netlify", "server"]
source = "static"
target = "static"
[[module.imports]]
path = "github.com/gethinode/mod-blocks"
path = "github.com/gethinode/mod-blocks/v2"
[[module.imports]]
path = "github.com/gethinode/hinode/v2"
path = "github.com/gethinode/hinode/v3"

[segments]
[segments.headers]
Expand Down
1 change: 0 additions & 1 deletion config/_default/params.toml
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,6 @@
# themeFontPath = "https://fonts.googleapis.com/css2?family=Inter:wght@200;300;600&display=swap" # external path
themeFontPath = "/fonts" # local path
fontSizeBase = "1rem"
purge = true

[schema]
type = "Organization"
Expand Down
48 changes: 33 additions & 15 deletions config/postcss.config.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,3 @@
const autoprefixer = require('autoprefixer')({})
const cssnano = require('cssnano')({
preset: ['advanced', {
discardUnused: {
fontFace: false // Preserve all @font-face declarations
}
}]
})
const purgeImport = require('@fullhuman/postcss-purgecss')
const purgeCSSPlugin = purgeImport.purgeCSSPlugin || purgeImport.default || purgeImport
const purgecss = purgeCSSPlugin({
Expand All @@ -17,18 +9,25 @@ const purgecss = purgeCSSPlugin({
dynamicAttributes: ['aria-expanded', 'data-bs-theme', 'data-bs-main-theme', 'data-bs-theme-animate', 'data-transparent', 'role'],
fontFace: false,
safelist: {
// Every entry below is a class PurgeCSS cannot see in hugo_stats.json because it is
// added by JavaScript at runtime (or by a third-party library). Classes that Hugo DOES
// emit into the markup — and therefore into hugo_stats.json — are intentionally NOT
// listed: purge now always runs against complete, current stats (production
// post-process; dev does not purge), so they survive on their own. In particular the
// former `/^d-(sm|md|lg|xl|xxl)-table-cell$/` entry is gone — render-table.html emits
// the configured breakpoint's class into the markup, so it reaches the stats naturally.
standard: [
// Bootstrap form validation
// Bootstrap form validation — added by JS on submit, never in the source markup
'was-validated',
// Bootstrap dynamic states
// Bootstrap component state classes toggled by JS (modal/dropdown/collapse/etc.)
'show',
'showing',
'hiding',
'active',
'disabled',
'collapsed',
'collapsing',
// SimpleDatatables modifier classes
// SimpleDatatables modifier classes (set by the datatables JS)
'no-header',
'no-footer',
// SimpleDatatables table rendering classes (added by JS)
Expand All @@ -38,6 +37,15 @@ const purgecss = purgeCSSPlugin({
'both',
'desc',
'asc',
// Hinode wrapped tables: on a DATA table, `table-wrap` / `table-border-bottom-wrap`
// are applied in the browser by SimpleDatatables' tableRender hook, so on a site whose
// only wrapped tables are data tables they never reach hugo_stats.json and would
// otherwise be purged.
'table-wrap',
'table-border-bottom-wrap',
// `d-none` is also applied by that hook; kept to record the wrap's dependency on it
// (a dozen core layouts emit it too, so in practice it is always in the stats).
'd-none',
// SimpleDatatables search component
'search-data-table',
'search-input',
Expand Down Expand Up @@ -103,20 +111,30 @@ const purgecss = purgeCSSPlugin({
// Bootstrap responsive tables
/table-responsive/, // All table-responsive-* variants and attribute selectors

// Color mode toggle - d-none-main-* classes plus [data-bs-main-theme="dark"] compound selectors
/d-none-main/,
// Color mode toggle - d-none-* and d-none-inline-* (logo modes, navbar mode switcher,
// [data-bs-main-theme="dark"] compound selectors)
/^d-none-/,

// Bootstrap transitions and utilities that get added via JS
/fade/,
/^translate/ // Bootstrap utilities
]
}
})
const autoprefixer = require('autoprefixer')({})
const cssnano = require('cssnano')({
// Default preset: structural minification (rule/declaration merging) that Hugo's own
// minify does not do. The `advanced` preset was measured to add < 0.2% over `default`,
// so it — and the cssnano-preset-advanced dependency — was dropped.
preset: 'default'
})

module.exports = {
// Order matters: purge first (drop unused rules) so autoprefixer and cssnano only work
// on what ships; cssnano last so it minifies the already-prefixed output.
plugins: [
purgecss,
autoprefixer,
cssnano,
purgecss
cssnano
]
}
5 changes: 4 additions & 1 deletion data/netlify.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,12 @@
publish = "public"
command = "npm run build"

# HUGO_VERSION is deliberately absent. The build invokes `hugo` from an npm script, which
# resolves to node_modules/.bin/hugo provided by the hugo-extended dependency, so the
# binary Netlify installs would be downloaded and then never used. The pin lives in
# package.json, which is the single source of truth for the Hugo version.
[build.environment]
DART_SASS_VERSION = "1.98.0"
HUGO_VERSION = "0.158.0"
HUGO_ENV = "production"
HUGO_ENABLEGITINFO = "true"
NODE_VERSION = "24.12.0"
Expand Down
32 changes: 16 additions & 16 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,22 @@ module github.com/gethinode/template
go 1.20

require (
github.com/FortAwesome/Font-Awesome v0.0.0-20260210181720-337dd2045d56 // indirect
github.com/FortAwesome/Font-Awesome v0.0.0-20260715180930-14c65a3747d0 // indirect
github.com/airbnb/lottie-web v5.13.0+incompatible // indirect
github.com/cloudcannon/bookshop/hugo/v3 v3.18.2 // indirect
github.com/gethinode/hinode/v2 v2.2.7 // indirect
github.com/gethinode/mod-blocks v1.19.1 // indirect
github.com/gethinode/mod-bootstrap v1.3.5 // indirect
github.com/gethinode/mod-csp v1.0.9 // indirect
github.com/gethinode/mod-flexsearch/v4 v4.1.0 // indirect
github.com/gethinode/mod-fontawesome/v5 v5.1.0 // indirect
github.com/gethinode/mod-google-analytics/v2 v2.0.1 // indirect
github.com/gethinode/mod-katex v1.1.4 // indirect
github.com/gethinode/mod-leaflet/v2 v2.1.0 // indirect
github.com/gethinode/mod-lottie/v2 v2.1.0 // indirect
github.com/gethinode/mod-mermaid/v4 v4.3.0 // indirect
github.com/gethinode/mod-simple-datatables/v3 v3.0.0 // indirect
github.com/gethinode/mod-utils/v5 v5.20.0 // indirect
github.com/nextapps-de/flexsearch v0.0.0-20250907103239-defb38b083f0 // indirect
github.com/cloudcannon/bookshop/hugo/v3 v3.19.0 // indirect
github.com/gethinode/hinode/v3 v3.20.0 // indirect
github.com/gethinode/mod-blocks/v2 v2.4.0 // indirect
github.com/gethinode/mod-bootstrap v1.5.0 // indirect
github.com/gethinode/mod-csp v1.0.14 // indirect
github.com/gethinode/mod-flexsearch/v5 v5.3.2 // indirect
github.com/gethinode/mod-fontawesome/v6 v6.1.4 // indirect
github.com/gethinode/mod-google-analytics/v2 v2.0.4 // indirect
github.com/gethinode/mod-katex v1.1.7 // indirect
github.com/gethinode/mod-leaflet/v3 v3.1.3 // indirect
github.com/gethinode/mod-lottie/v3 v3.0.4 // indirect
github.com/gethinode/mod-mermaid/v5 v5.0.4 // indirect
github.com/gethinode/mod-simple-datatables/v4 v4.1.1 // indirect
github.com/gethinode/mod-utils/v6 v6.9.0 // indirect
github.com/nextapps-de/flexsearch v0.0.0-20260529083235-f7ed963096a0 // indirect
github.com/twbs/bootstrap v5.3.8+incompatible // indirect
)
Loading