From c43eae25528e08a19e9bf4af4d5753ab814a1179 Mon Sep 17 00:00:00 2001
From: Patrick Kollitsch <davidsneighbourdev+gh@gmail.com>
Date: Sun, 07 Jun 2026 05:38:51 +0000
Subject: [PATCH] fix: various changes to workspace, testing, linting, etc.
---
/dev/null | 15 -
tests/catalog.yaml | 12 +
CONTRIBUTING.md | 32 +--
.markdownlint.jsonc | 281 ++++++++++++++++------------------
ananke.code-workspace | 47 +++++
.github/dependabot.yml | 6
.github/workflows/branch-protection.yml | 52 ------
7 files changed, 209 insertions(+), 236 deletions(-)
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 92e45b2..4cb74d9 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -17,7 +17,7 @@
semver-patch-days: 4
assignees:
- davidsneighbour
- target-branch: maintenance
+ target-branch: development
open-pull-requests-limit: 999
pull-request-branch-name:
separator: /
@@ -38,7 +38,7 @@
semver-patch-days: 4
assignees:
- davidsneighbour
- target-branch: maintenance
+ target-branch: development
open-pull-requests-limit: 999
pull-request-branch-name:
separator: /
@@ -56,7 +56,7 @@
default-days: 7
assignees:
- davidsneighbour
- target-branch: maintenance
+ target-branch: development
open-pull-requests-limit: 999
pull-request-branch-name:
separator: /
diff --git a/.github/workflows/branch-protection.yml b/.github/workflows/branch-protection.yml
index 45499b7..160e327 100644
--- a/.github/workflows/branch-protection.yml
+++ b/.github/workflows/branch-protection.yml
@@ -9,7 +9,7 @@
jobs:
validate-main-source-branch:
- name: Require staging or maintenance as source branch for main
+ name: Require development as source branch for main
runs-on: ubuntu-latest
if: github.base_ref == 'main'
@@ -21,53 +21,7 @@
run: |
set -euo pipefail
- if [ "${HEAD_REF}" != "staging" ] && [ "${HEAD_REF}" != "maintenance" ]; then
- echo "::error::Pull requests into main must come from staging or maintenance. Current source branch: ${HEAD_REF}"
+ if [ "${HEAD_REF}" != "development" ]; then
+ echo "::error::Pull requests into main must come from development. Current source branch: ${HEAD_REF}"
exit 1
fi
-
- validate-staging-source-branch:
- name: Require development or maintenance as source branch for staging
- runs-on: ubuntu-latest
- if: github.base_ref == 'staging'
-
- steps:
- - name: Validate source branch
- shell: bash
- env:
- HEAD_REF: ${{ github.head_ref }}
- run: |
- set -euo pipefail
-
- if [ "${HEAD_REF}" != "development" ] && [ "${HEAD_REF}" != "maintenance" ]; then
- echo "::error::Pull requests into staging must come from development or maintenance. Current source branch: ${HEAD_REF}"
- exit 1
- fi
-
- protect-package-lock:
- name: Block package-lock.json outside maintenance
- runs-on: ubuntu-latest
- if: github.base_ref != 'maintenance'
-
- steps:
- - name: Check out repository
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
- with:
- fetch-depth: 0
- persist-credentials: false
-
- - name: Fail if package-lock.json changed outside maintenance
- shell: bash
- env:
- BASE_SHA: ${{ github.event.pull_request.base.sha }}
- HEAD_SHA: ${{ github.event.pull_request.head.sha }}
- BASE_REF: ${{ github.base_ref }}
- run: |
- set -euo pipefail
-
- changed_files=$(git diff --name-only "${BASE_SHA}...${HEAD_SHA}")
-
- if echo "${changed_files}" | grep -Fxq "package-lock.json"; then
- echo "::error file=package-lock.json::package-lock.json may only be changed in PRs targeting maintenance. Current target branch: ${BASE_REF}"
- exit 1
- fi
\ No newline at end of file
diff --git a/.markdownlint.jsonc b/.markdownlint.jsonc
index b7212d0..6bb66af 100644
--- a/.markdownlint.jsonc
+++ b/.markdownlint.jsonc
@@ -1,150 +1,133 @@
{
- "$schema": "https://github.com/DavidAnson/markdownlint/blob/main/schema/markdownlint-config-schema.json",
- "$id": "https://raw.githubusercontent.com/davidsneighbour/kollitsch.dev/refs/heads/main/src/config/.markdownlint.jsonc",
- "default": true,
- "customRules": [
- "@github/markdownlint-github",
- "markdownlint-rule-relative-links",
- "markdownlint-rule-search-replace",
- "markdownlint-rule-extended-ascii",
- "markdownlint-rule-title-case-style",
- "markdownlint-rule-list-duplicates"
- ],
- // Rules
- // unlisted rules are using default settings (usually "true")
- // @see https://github.com/DavidAnson/markdownlint/#rules--aliases
- "MD001": {
- "severity": "error",
- "front_matter_title": "^\\s*title\\s*[:=]"
- },
- "MD003": {
- "style": "atx"
- },
- "MD004": {
- "style": "asterisk"
- },
- "MD005": true,
- "MD007": {
- "indent": 2
- },
- // NO limitation on line length
- "MD013": false,
- // ignored rule for closed atx headings
- "MD020": false,
- // ignored rule for closed atx headings
- "MD021": false,
- // disallow multiple headings with the same content within the same level structure
- "MD024": {
- "siblings_only": true,
- "allow_different_nesting": true
- },
- // no inline HTML elements, except for the allowed ones. in tables only the explicit allowed ones
- "MD033": {
- "allowed_elements": [
- "lite-youtube",
- "color-grid",
- "date-diff",
- "kbd"
- ],
- "table_allowed_elements": [
- "kbd"
- ]
- },
- // use consistent rule markers (`---`)
- "MD035": {
- "style": "---"
- },
- // unused header structure rule
- "MD043": false,
- // unused spelling enforcement
- "MD044": false,
- // fenced code blocks style
- "MD046": {
- "style": "fenced"
- },
- // code blocks must use backticks instead of tildes
- "MD048": {
- "style": "backtick"
- },
- // emphasis must use asterisks `*` instead of underscores `_`
- "MD049": {
- "style": "asterisk"
- },
- // strong style must use double asterisks `**` instead of double underscores `__`
- "MD050": {
- "style": "asterisk"
- },
- // links must not be auto links, all other link formats are allowed
- "MD054": {
- "autolink": false
- },
- // table pipes must be used before and after each table row
- "MD055": {
- "style": "leading_and_trailing"
- },
- // generic linktexts are prohibited
- "MD059": {
- "prohibited_texts": [
- "click here",
- "here",
- "link",
- "more"
- ]
- },
- // table style must be compact (single spaces around cell content)
- "MD060": {
- "style": "aligned"
- },
- // @see https://www.npmjs.com/package/@github/markdownlint-github
- // images should not contain default alternate texts
- "GH001": true,
- // links should not contain generic text ('click here', 'read more', etc.)
- "GH002": {
- "additional_banned_texts": [
- "Something",
- "Click here"
- ]
- },
- // no empty alt texts for images
- "GH003": true,
- // @see https://www.npmjs.com/package/markdownlint-rule-relative-links
- "relative-links": {
- "root_path": "../.."
- },
- // @see https://www.npmjs.com/package/markdownlint-rule-search-replace
- "search-replace": {
- "rules": [
- {
- "name": "ellipsis",
- "message": "Do not use three dots '...' for ellipsis.",
- "information": "https://example.com/rules/ellipsis",
- "search": "...",
- "replace": "…",
- "searchScope": "text"
- },
- {
- "name": "curly-double-quotes",
- "message": "Do not use curly double quotes.",
- "searchPattern": "/“|”/g",
- "replace": "\""
- }
- ]
- },
- // @see https://www.npmjs.com/package/markdownlint-rule-extended-ascii
- "extended-ascii": {
- "ascii-only": true
- },
- // @see https://www.npmjs.com/package/markdownlint-rule-title-case-style
- "title-case-style": {
- // letter case style to apply
- //
- // "sentence" or "title" (default: sentence)
- "case": "sentence",
- // words to ignore when applying letter case.
- //
- // string[] (default: [])
- "ignore": [
- "JavaScript"
- ],
- },
-}
\ No newline at end of file
+ "$schema": "https://github.com/DavidAnson/markdownlint/blob/main/schema/markdownlint-config-schema.json",
+ "$id": "https://raw.githubusercontent.com/davidsneighbour/kollitsch.dev/refs/heads/main/src/config/.markdownlint.jsonc",
+ "default": true,
+ "customRules": [
+ "@github/markdownlint-github",
+ "markdownlint-rule-relative-links",
+ "markdownlint-rule-search-replace",
+ "markdownlint-rule-extended-ascii",
+ "markdownlint-rule-title-case-style",
+ "markdownlint-rule-list-duplicates"
+ ],
+ // Rules
+ // unlisted rules are using default settings (usually "true")
+ // @see https://github.com/DavidAnson/markdownlint/#rules--aliases
+ "MD001": {
+ "severity": "error",
+ "front_matter_title": "^\\s*title\\s*[:=]"
+ },
+ "MD003": {
+ "style": "atx"
+ },
+ "MD004": {
+ "style": "asterisk"
+ },
+ "MD005": true,
+ "MD007": {
+ "indent": 2
+ },
+ // NO limitation on line length
+ "MD013": false,
+ // ignored rule for closed atx headings
+ "MD020": false,
+ // ignored rule for closed atx headings
+ "MD021": false,
+ // disallow multiple headings with the same content within the same level structure
+ "MD024": {
+ "siblings_only": true,
+ "allow_different_nesting": true
+ },
+ // no inline HTML elements, except for the allowed ones. in tables only the explicit allowed ones
+ "MD033": {
+ "allowed_elements": ["lite-youtube", "color-grid", "date-diff", "kbd"],
+ "table_allowed_elements": ["kbd"]
+ },
+ // use consistent rule markers (`---`)
+ "MD035": {
+ "style": "---"
+ },
+ // unused header structure rule
+ "MD043": false,
+ // unused spelling enforcement
+ "MD044": false,
+ // fenced code blocks style
+ "MD046": {
+ "style": "fenced"
+ },
+ // code blocks must use backticks instead of tildes
+ "MD048": {
+ "style": "backtick"
+ },
+ // emphasis must use asterisks `*` instead of underscores `_`
+ "MD049": {
+ "style": "asterisk"
+ },
+ // strong style must use double asterisks `**` instead of double underscores `__`
+ "MD050": {
+ "style": "asterisk"
+ },
+ // links must not be auto links, all other link formats are allowed
+ "MD054": {
+ "autolink": false
+ },
+ // table pipes must be used before and after each table row
+ "MD055": {
+ "style": "leading_and_trailing"
+ },
+ // generic linktexts are prohibited
+ "MD059": {
+ "prohibited_texts": ["click here", "here", "link", "more"]
+ },
+ // table style must be compact (single spaces around cell content)
+ "MD060": {
+ "style": "compact"
+ },
+ // @see https://www.npmjs.com/package/@github/markdownlint-github
+ // images should not contain default alternate texts
+ "GH001": true,
+ // links should not contain generic text ('click here', 'read more', etc.)
+ "GH002": {
+ "additional_banned_texts": ["Something", "Click here"]
+ },
+ // no empty alt texts for images
+ "GH003": true,
+ // @see https://www.npmjs.com/package/markdownlint-rule-relative-links
+ "relative-links": {
+ "root_path": "../.."
+ },
+ // @see https://www.npmjs.com/package/markdownlint-rule-search-replace
+ "search-replace": {
+ "rules": [
+ {
+ "name": "ellipsis",
+ "message": "Do not use three dots '...' for ellipsis.",
+ "information": "https://example.com/rules/ellipsis",
+ "search": "...",
+ "replace": "…",
+ "searchScope": "text"
+ },
+ {
+ "name": "curly-double-quotes",
+ "message": "Do not use curly double quotes.",
+ "searchPattern": "/“|”/g",
+ "replace": "\""
+ }
+ ]
+ },
+ // @see https://www.npmjs.com/package/markdownlint-rule-extended-ascii
+ "extended-ascii": {
+ "ascii-only": true
+ },
+ // @see https://www.npmjs.com/package/markdownlint-rule-title-case-style
+ "title-case-style": {
+ // letter case style to apply
+ //
+ // "sentence" or "title" (default: sentence)
+ "case": "sentence",
+ // words to ignore when applying letter case.
+ //
+ // string[] (default: [])
+ "ignore": ["JavaScript"]
+ }
+}
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
deleted file mode 100644
index 8b251b8..0000000
--- a/.vscode/extensions.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "recommendations": [
- "pkief.material-icon-theme",
- "yzhang.markdown-all-in-one",
- "davidanson.vscode-markdownlint",
- "zizmor.zizmor-vscode",
- "redhat.vscode-yaml",
- "streetsidesoftware.code-spell-checker-cspell-bundled-dictionaries",
- "budparr.language-hugo-vscode",
- "jinliming2.vscode-go-template",
- "gohugoio.gotmplfmt",
- "dunstontc.vscode-go-syntax",
- "casualjim.gotemplate"
- ]
-}
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 9b8eecf..361b32d 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -40,15 +40,15 @@
1. Use a compatible Hugo version (see [`config/_default/module.toml`](https://github.com/gohugo-ananke/ananke/blob/main/config/_default/module.toml) for the current state).
2. Install dependencies:
- ```bash
- npm install
- ```
+```bash
+npm install
+```
1. Run a local preview via `npm run` instead of just calling `hugo server`:
- ```bash
- npm run server
- ```
+```bash
+npm run server
+```
This runs the documentation site from `site/` using contents from `docs/` with local configuration.
@@ -56,9 +56,9 @@
2. Make sure to install git hooks for linting and testing before you push changes:
- ```bash
- npm run prepare
- ```
+```bash
+npm run prepare
+```
This command is run automatically after `npm install` but you can run it manually to set up hooks in an existing clone or update changed hooks. It uses `simple-git-hooks` to install a commit hook that runs `lint-staged` for markdown files, which in turn runs linting tasks on staged files.
@@ -74,7 +74,6 @@
flowchart LR
feature["feature/*, fix/*, docs/*, refactor/*"] --> development
development --> main
- maintenance --> main
main --> development
```
@@ -82,11 +81,10 @@
### Long-lived branches
-| Branch | Purpose | Release role | Write policy | Merge |
+| Branch | Purpose | Release role | Write policy | Merge |
| --- | --- | --- | --- | --- |
-| `main` | Stable source of truth | releases | Protected. Only receives reviewed PRs from `staging` or `maintenance`. | Rebase |
+| `main` | Stable source of truth | releases | Protected. Only receives reviewed PRs from `development`. | Rebase |
| `development` | Active development | pre-releases | Feature, fix, chore, and documentation PRs target this branch. | Squash |
-| `maintenance` | Dependency maintenance | none | Maintainer-only branch for dependency version updates. | Rebase |
### Branch naming
@@ -98,8 +96,6 @@
* `chore/<topic>`
* `refactor/<topic>`
-Dependency update branches MUST target `maintenance` unless the change is part of an intentional feature branch and does not touch lock files.
-
After a successful rebase between those branches, push with lease:
```bash
@@ -113,9 +109,9 @@
3. Update docs for all user-facing changes.
4. Run quality checks locally:
- ```bash
- npm run lint:markdown
- ```
+```bash
+npm run lint:markdown
+```
1. If your change affects behaviour, validate with Hugo locally (for example `hugo` or `hugo server` in the relevant project).
2. Open a pull request with:
diff --git a/ananke.code-workspace b/ananke.code-workspace
new file mode 100644
index 0000000..d56f59f
--- /dev/null
+++ b/ananke.code-workspace
@@ -0,0 +1,47 @@
+{
+ "folders": [
+ {
+ "path": "."
+ },
+ {
+ "path": "../documentation"
+ },
+ {
+ "path": "../template-git-submod"
+ },
+ {
+ "path": "../template-hugo-mod"
+ }
+ ],
+ "settings": {
+ "window.autoDetectColorScheme": false,
+ "markdown.extension.tableFormatter.enabled": false,
+ "chat.tools.terminal.autoApprove": {
+ "git fetch": true,
+ "git worktree": true,
+ "git add": true,
+ "git push": true
+ }
+ },
+ "extensions": {
+ "recommendations": [
+ "ms-vscode.vscode-github-issue-notebooks",
+ "github.vscode-pull-request-github",
+ "pkief.material-icon-theme",
+ "yzhang.markdown-all-in-one",
+ "davidanson.vscode-markdownlint",
+ "zizmor.zizmor-vscode",
+ "redhat.vscode-yaml",
+ "streetsidesoftware.code-spell-checker-cspell-bundled-dictionaries",
+ "budparr.language-hugo-vscode",
+ "jinliming2.vscode-go-template",
+ "gohugoio.gotmplfmt",
+ "dunstontc.vscode-go-syntax",
+ "casualjim.gotemplate",
+ "streetsidesoftware.code-spell-checker",
+ "streetsidesoftware.code-spell-checker-british-english",
+ "gohugoio.gotmplfmt",
+ "anthropic.claude-code"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/tests/catalog.yaml b/tests/catalog.yaml
index 4e77890..eaca4bc 100644
--- a/tests/catalog.yaml
+++ b/tests/catalog.yaml
@@ -17,6 +17,14 @@
shortcodes:
form-contact:
- tests: ["scripts/test-hugo-quickstart.ts"] # TODO: add a dedicated form-contact test
+ tests: [
+ "scripts/test-hugo-quickstart.ts",
+ ] # TODO: add a dedicated form-contact test
page-index:
- tests: ["scripts/test-hugo-quickstart.ts"] # TODO: add a dedicated page-index test
+ tests: [
+ "scripts/test-hugo-quickstart.ts",
+ ] # TODO: add a dedicated page-index test
+ since:
+ tests: [
+ "scripts/test-hugo-quickstart.ts",
+ ] # TODO: add a dedicated since test
--
Gitblit v1.10.0