Skip to content

Force update with the latest dependencies - #33

Merged
j9t merged 1 commit into
mainfrom
chore/deps-r35f20b1
Aug 2, 2026
Merged

j9t merged 1 commit into
mainfrom
chore/deps-r35f20b1

Conversation

@j9t

@j9t j9t commented Aug 2, 2026 •

Copy link
Copy Markdown
Owner

Summary by CodeRabbit

  • Chores
    • Updated the application to version 1.4.1.
    • Updated supporting packages, including HTML minification and validation tools.
  • Documentation
    • Added release notes for the 1.4.1 update.

@coderabbitai

coderabbitai Bot commented Aug 2, 2026 •

Copy link
Copy Markdown

Review Change Stack

Walkthrough

The package version changed to 1.4.1. Dependency versions were updated, two dependencies were added, and the changelog now documents the release.

Changes

Release update

Layer / File(s) Summary
Release metadata and dependencies
package.json, CHANGELOG.md
package.json adds html-minifier-next and html-validate, updates development dependency versions, and changes the package version to 1.4.1. CHANGELOG.md records the 1.4.1 release.

Estimated code review effort: 1 (Trivial) | ~5 minutes

Possibly related PRs

  • j9t/hihtml#13: Both changes update dependencies, bump the package version, and add a changelog release entry.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the dependency updates documented in the changeset.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/deps-r35f20b1

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@socket-security

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updated@​types/​node@​26.1.1 ⏵ 26.1.21001008196100
Updatedglobals@​17.7.0 ⏵ 17.8.0100 +110086 +194100
Updatedhtml-validate@​11.5.6 ⏵ 11.6.19910010096 +1100
Updatedhtml-minifier-next@​7.5.0 ⏵ 7.5.297 +110010096 +1100

View full report

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@package.json`:
- Around line 8-17: Update the package metadata in package.json to add an
engines.node requirement of ">=24.8.0", ensuring the declared runtime constraint
matches the pinned dependencies and is enforced for install consumers and CI.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: b50faaa6-2dc9-43aa-b426-d88da87e5e0a

📥 Commits

Reviewing files that changed from the base of the PR and between e36eb6c and 4f1fda3.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (2)
  • CHANGELOG.md
  • package.json

Comment thread package.json
Comment on lines +8 to +17
"html-minifier-next": "^7.5.2",
"html-validate": "^11.6.1",
"obsohtml": "^1.10.1"
},
"description": "The HTML supertool to validate, link-check, and minify web pages",
"devDependencies": {
"@eslint/js": "^10.0.1",
"@types/node": "^26.1.1",
"eslint": "^10.6.0",
"globals": "^17.6.0",
"@types/node": "^26.1.2",
"eslint": "^10.8.0",
"globals": "^17.8.0",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🩺 Stability & Availability | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

rg -n --hidden --glob '!.git/**' --glob '!node_modules/**' \
  '"engines"|"node-version"|setup-node|NODE_VERSION|node:' .

echo '--- committed lockfiles ---'
fd -H -t f '^(package-lock\.json|npm-shrinkwrap\.json|pnpm-lock\.yaml|yarn\.lock)$' .

echo '--- exact dependency metadata ---'
npm view html-minifier-next@7.5.2 version engines --json
npm view html-validate@11.6.1 version engines --json
npm view eslint@10.8.0 version engines --json

Repository: j9t/hihtml

Length of output: 8225


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

echo '--- package.json excerpt ---'
sed -n '1,80p' package.json

echo '--- workflows ---'
for f in .github/workflows/*.yml .github/workflows/*.yaml; do
  [ -f "$f" ] && { echo "### $f"; sed -n '1,80p' "$f"; }
done

echo '--- docs engine mentions ---'
rg -n --hidden --glob '!node_modules/**' --glob '!*.lock' \
  'Node|node|Engines|engine|npm|pnpm|yarn' \
  README.md docs .github package.json package-lock.json | head -120

echo '--- lockfile dependency presence and lockfileVersion ---'
python3 - <<'PY'
import json
with open('package-lock.json') as f:
    data=json.load(f)
print('lockfileVersion:', data.get('lockfileVersion'))
print('packages.project.engine:', data.get('packages',{}).get('',{}).get('engines'))
for name in ['html-minifier-next','html-validate','eslint']:
    pkg=data.get('node_modules',{}).get(name, {})
    print(f'{name}: present={bool(pkg)}, version={pkg.get("version")}, engines={pkg.get("engines")}, resolved={pkg.get("resolved")}')
PY

Repository: j9t/hihtml

Length of output: 13311


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

echo '--- current LTS ---'
node -e 'console.log(process.version)'

echo '--- relevant lockfile metadata ---'
jq '{packages:(.packages[""]|{version,engines}), lockfileVersion, dependencies:(.dependencies|to_entries|map({key,.value.version,.value.engine})|from_entries), node_modules_packages:(.node_modules | keys | map(gsub("^html-minifier-next|html-validate|eslint|`@html-validate/stylish`|`@eslint/js`|`@eslint/config-array`|`@eslint/core`|`@eslint/js`"; .) as $k|{"$k": .}) | add[])}' package-lock.json

echo '--- git nvmrc ---'
if [ -f .nvmrc ]; then cat -n .nvmrc; else echo 'no .nvmrc'; fi

Repository: j9t/hihtml

Length of output: 2289


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

python3 - <<'PY'
import json

with open('package-lock.json') as f:
    lock = json.load(f)

root = lock.get('packages', {}).get('', {})
deps = lock.get('dependencies', {}) or {}
packages = lock.get('node_modules', {})

required = ['html-minifier-next', 'html-validate', 'eslint']
for name in required:
    pkg = packages.get(name)
    print(f"{name}: present={bool(pkg)} version={pkg.get('version') if pkg else 'MISSING'} engines={pkg.get('engines')}")

print('root.package: version=' + str(root.get('version')) + ' engines=' + str(root.get('engines')))
print('lockfileVersion=' + str(lock.get('lockfileVersion')))
for name in required:
    print(f"dependency.{name}: version={dict(deps).get(name, {}).get('version')}")
PY

echo '--- all Node engines pins in lockfile ---'
python3 - <<'PY'
import json, re
with open('package-lock.json') as f:
    data=json.load(f)
seen=set()
for path,kv in data.get('packages',{}).items()+data.get('node_modules',{}).items():
    e=kv.get('engines','')
    if e:
        if e not in seen:
            seen.add(e)
            print(repr(f"{kv.get('version','')}:{e}"))
PY

Repository: j9t/hihtml

Length of output: 279


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

python3 - <<'PY'
import json

with open('package-lock.json') as f:
    lock = json.load(f)

packages = lock.get('packages') or {}
packages_modules = lock.get('node_modules') or {}
dependencies = lock.get('dependencies') or {}

root = packages.get('', {})
required = ['html-minifier-next', 'html-validate', 'eslint']

print('current runtime:', end=' ')
import subprocess, sys
try:
    print(subprocess.check_output(['node','-v'], text=True).strip())
except subprocess.CalledProcessError:
    print('node unavailable')

for name in required:
    pkg = packages_modules.get(name)
    dep = dependencies.get(name)
    print(f"{name}: present_in_node_modules={bool(pkg)} version={pkg.get('version')} engines={pkg.get('engines')} locked_dependency_version={dep.get('version') if dep else '<missing>'}")

print('root.project.version=' + str(root.get('version')))
print('root.project.engines=' + str(root.get('engines')))
print('lockfileVersion=' + str(lock.get('lockfileVersion')))

print('\nall unique dependencies.engine values:')
seen = set()
for path, kv in {**packages, **packages_modules}.items():
    e = kv.get('engines')
    if e and e not in seen:
        seen.add(e)
        print(f'{kv.get("version")}:{e}')
PY

echo '--- .nvmrc ---'
if [ -f .nvmrc ]; then cat -n .nvmrc; else echo 'no .nvmrc'; fi

Repository: j9t/hihtml

Length of output: 305


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

python3 - <<'PY'
import json, subprocess, sys

with open('package-lock.json') as f:
    lock = json.load(f)

packages = lock.get('packages') or {}
packages_modules = lock.get('node_modules') or {}
dependencies = lock.get('dependencies') or {}

root = packages.get('', {})

print('package-lock root version:', root.get('version'))
print('package-lock root engines:', root.get('engines'))
print('lockfileVersion:', lock.get('lockfileVersion'))

print('\ncommit-time runtime:')
try:
    print(subprocess.check_output(['node','-v'], text=True).strip())
except Exception as exc:
    print(type(exc).__name__ + ': ' + str(exc))

for req in ['html-minifier-next','html-validate','eslint']:
    pkg = packages_modules.get(req)
    dep = dependencies.get(req)
    print(f'{req}: present={bool(pkg)} version={pkg.get("version") if pkg else "NO"} engines={pkg.get("engines") if pkg else "NO"} lock_dep_version={dep.get("version") if dep else "NO"}')
PY

echo '--- .nvmrc ---'
if [ -f .nvmrc ]; then cat -n .nvmrc; else echo 'no .nvmrc'; fi

Repository: j9t/hihtml

Length of output: 501


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

python3 - <<'PY'
import json
with open('package-lock.json') as f:
    lock = json.load(f)
packages = lock.get('packages') or {}
packages_modules = lock.get('node_modules') or {}

for req in ['html-minifier-next','html-validate','eslint','`@html-validate/stylish`']:
    pkg = packages.get('/node_modules/'+req) or packages_modules.get(req) or None
    if not pkg:
        print(req + ': no node_modules entry')
        continue
    print(f'{req}: version={pkg.get("version")} engines={pkg.get("engines")} resolved={pkg.get("resolved")}')
PY

Repository: j9t/hihtml

Length of output: 303


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

echo '--- node_modules keys ---'
python3 - <<'PY'
import json
with open('package-lock.json') as f:
    lock=json.load(f)
print('node_modules key present:', 'node_modules' in lock)
keys=list(lock.get('node_modules', {}).keys()) if isinstance(lock.get('node_modules'), dict) else None
print('count', len(keys) if keys is not None else 'N/A')
for k in keys:
    if 'html' in k or k == 'eslint':
        print(k, lock['node_modules'][k].get('version'), lock['node_modules'][k].get('engines'))
PY

echo '--- git diff -- package-lock ---'
git diff -- src package.json package-lock.json .nvmrc 2>/dev/null | rg '(^diff|^\+[^+]|^-[^-])' | head -220 || true

echo '--- npm lockfile entry patterns for direct deps ---'
rg -n --hidden --glob '!node_modules/**' '(`@html-validate/stylish`|html-validate|html-minifier-next|eslint"|"@[0-9a-z@/._-]+/html|/node_modules/eslint")' package-lock.json | head -80

Repository: j9t/hihtml

Length of output: 334


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

echo '--- top-level package-lock keys ---'
python3 - <<'PY'
import json
with open('package-lock.json') as f:
    lock=json.load(f)
print('top-level keys:', sorted(lock.keys()))
print('dependencies:', lock.get('dependencies'))
print('packages root:', lock.get('packages',{}).get('',''))
print('root engines:', lock.get('packages',{}).get('',{}).get('engines'))
PY

echo '--- exact npm install validation for new deps ---'
npm install --package-lock-only --dry-run html-minifier-next@7.5.2 html-validate@11.6.1 eslint@10.8.0 --silent 2>&1 || true

Repository: j9t/hihtml

Length of output: 949


Add the missing engines pin for the Node requirement.

package.json and package-lock.json do not declare engines.node, while the pinned dependencies require Node 24.8+ / 22.22+ (html-validate@11.6.1) or Node ≥22.13 (html-minifier-next@7.5.2). Add engines.node: ">=24.8.0" to package.json so installees and CI failures surface the required Node version early. The CI .nvmrc already uses lts/*, which satisfies these pins.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@package.json` around lines 8 - 17, Update the package metadata in
package.json to add an engines.node requirement of ">=24.8.0", ensuring the
declared runtime constraint matches the pinned dependencies and is enforced for
install consumers and CI.

@j9t
j9t merged commit c78598a into main Aug 2, 2026
6 checks passed
@j9t
j9t deleted the chore/deps-r35f20b1 branch August 2, 2026 14:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant