Skip to content

Conversation

@renovate
Copy link

@renovate renovate bot commented Oct 9, 2025

Welcome to Renovate! This is an onboarding PR to help you understand and configure settings before regular Pull Requests begin.

🚦 To activate Renovate, merge this Pull Request. To disable Renovate, simply close this Pull Request unmerged.


Detected Package Files

  • .github/workflows/ci.yml (github-actions)
  • .github/workflows/release.yml (github-actions)
  • package.json (npm)
  • requirements-dev.txt (pip_requirements)
  • pyproject.toml (poetry)
  • .python-version (pyenv)

Configuration Summary

Based on the default config's presets, Renovate will:

  • Start dependency updates only once this onboarding PR is merged
  • Hopefully safe environment variables to allow users to configure.
  • Show all Merge Confidence badges for pull requests.
  • Enable Renovate Dependency Dashboard creation.
  • Use semantic commit type fix for dependencies and chore for all others if semantic commits are in use.
  • Ignore node_modules, bower_components, vendor and various test/tests (except for nuget) directories.
  • Group known monorepo packages together.
  • Use curated list of recommended non-monorepo package groupings.
  • Show only the Age and Confidence Merge Confidence badges for pull requests.
  • Apply crowd-sourced package replacement rules.
  • Apply crowd-sourced workarounds for known problems with packages.

🔡 Do you want to change how Renovate upgrades your dependencies? Add your custom config to renovate.json in this branch. Renovate will update the Pull Request description the next time it runs.


What to Expect

With your current configuration, Renovate will create 7 Pull Requests:

chore(deps): update dependency @anthropic-ai/claude-code to v2.0.27
  • Schedule: ["at any time"]
  • Branch name: renovate/anthropic-ai-claude-code-2.x-lockfile
  • Merge into: main
  • Upgrade @anthropic-ai/claude-code to 2.0.27
chore(deps): update dependency python to 3.14
  • Schedule: ["at any time"]
  • Branch name: renovate/python-3.x
  • Merge into: main
  • Upgrade python to 3.14
chore(deps): update actions/checkout action to v5
  • Schedule: ["at any time"]
  • Branch name: renovate/actions-checkout-5.x
  • Merge into: main
  • Upgrade actions/checkout to v5
chore(deps): update actions/setup-python action to v6
  • Schedule: ["at any time"]
  • Branch name: renovate/actions-setup-python-6.x
  • Merge into: main
  • Upgrade actions/setup-python to v6
chore(deps): update codecov/codecov-action action to v5
  • Schedule: ["at any time"]
  • Branch name: renovate/codecov-codecov-action-5.x
  • Merge into: main
  • Upgrade codecov/codecov-action to v5
chore(deps): update github artifact actions (major)
chore(deps): update softprops/action-gh-release action to v2
  • Schedule: ["at any time"]
  • Branch name: renovate/softprops-action-gh-release-2.x
  • Merge into: main
  • Upgrade softprops/action-gh-release to v2

🚸 Branch creation will be limited to maximum 2 per hour, so it doesn't swamp any CI resources or overwhelm the project. See docs for prhourlylimit for details.


❓ Got questions? Check out Renovate's Docs, particularly the Getting Started section.
If you need any further assistance then you can also request help here.


This PR was generated by Mend Renovate. View the repository job log.

CybotTM and others added 30 commits September 12, 2025 16:06
…ted script\n\nReplace broken UV_PYTHON_SPEC preview with neutral Python stack preview.\nRoute uv install to scripts/install_uv.sh reconcile.
…ilities

- Show npm, pnpm, yarn prompts unconditionally (outside Node block)
- Update via Corepack; fallback to npm global installs
- Re-audit after each action
- Include black in Python utilities prompt
… prefer yarn@stable

- Ensure corepack enable on update
- corepack prepare pnpm@latest --activate || npm i -g pnpm@latest
- corepack prepare yarn@stable --activate || npm i -g yarn@latest
- Keep npm/eslint/prettier updated
…e/rename.ul

- Skip Corepack shim package.json; invoke real pnpm/yarn for versions
- Prefer Yarn stable and Yarn tags endpoint; upstream_method=yarn-tags
- Detect uv-managed tools via 'uv tool list' and symlink targets; report 'uv tool'
- Separate perl 'prename' and util-linux 'rename.ul' and parse versions
…d via official installer

Detect ~/.local/bin/uv and label as 'github binary'; keep pipx/user for pipx venv symlinks.
Detect pipx-installed Python CLIs and prompt to reinstall with 'uv tool', uninstalling pipx version to avoid shim conflicts; re-audit after action.
- audit: show upstream_method as 'uv tool' for PyPI tools
- guide: migrate any pipx/pip-installed Python CLIs (incl. pip/pipx/ansible-core) to uv tool with uninstall of old shims
…y as 'uv venv'/'uv python'\n\n- Prefer ~/.venvs/dev/bin/python or /home/sme/.local/share/uv/python/cpython-3.13.6-linux-x86_64-gnu/bin/python3.13 for installed Python\n- Show proper installed_method for uv-managed Python\n- Keeps PATH scan fallback for non-uv setups
…- Prefer ansible-community for community version; keep ansible-core CLI present\n- Ensure install_ansible.sh also installs ansible-core via uv to retain ansible shim\n- Detect uv-managed tools via real target path; refine pipx detection\n- Classify npm global installs (user/system) via node_modules real path\n- Improve unknown -> /home/.local/bin classification where appropriate
…Add installed_path_resolved and classification_reason in JSON output\n- Introduce CLI_AUDIT_DEBUG to surface suppressed exceptions\n- Refresh AUDIT_JSON after Ansible install in guide.sh\n- Refactor classification into helper for transparency
…asdf/shims and installs as 'asdf'\n- Classify ~/.nodenv/shims and versions as 'nodenv'
…t DPKG path/owner/version caches to CLI_AUDIT_DPKG_CACHE_LIMIT (default 1024)\n- Prevent unbounded growth during repeated audits
… Introduce COLLECT_ONLY/RENDER_ONLY env modes\n- Add snapshot write/read (tools_snapshot.json) with __meta__\n- Render audit strictly from snapshot in render-only mode\n- Persist upstream lookup method to latest_versions.json on success\n- Improve version detection flags (jq, fzf, ctags, ripgrep, ast-grep) and filter error/usage lines\n- Narrow state column and remove subheaders for compact table\n- Add readiness summary and optional streaming rows
Add comprehensive root agent guide covering:
- Overview (Phase 1 complete, Phase 2 planned)
- Setup with Python 3.10+ requirements
- Build & tests (make audit, update, lint)
- Code style (PEP 8, type hints, frozen dataclasses)
- Security (HTTPS-only, no secrets, rate limiting)
- PR/commit checklist (Conventional Commits)
- Good vs bad examples (dataclasses, locks, parallelization)
- When stuck (troubleshooting workflows)
- House Rules (SOLID, DRY, KISS, testing, docs currency)

Thin root file references scoped AGENTS.md files.
Follows https://github.com/anthropics/claude-code convention.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Add comprehensive guide for 13+ installation scripts:
- Overview (install/update/uninstall/reconcile actions)
- Setup (INSTALL_PREFIX, FORCE_INSTALL, DEBUG)
- Build & tests (individual scripts, Make targets, debug mode)
- Code style (Bash 4.0+, set -euo pipefail, error handling)
- Security (HTTPS downloads, checksum verification, sudo safety)
- PR/commit checklist (shellcheck, test all actions)
- Good vs bad examples (robust downloads, version comparison, cleanup)
- When stuck (debug workflows, PATH issues, reconciliation)
- House Rules (vendor tools preferred, parallel reconciliation)

References Phase 2 ADRs for installation strategy decisions.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
CybotTM and others added 8 commits October 18, 2025 21:19
Runtime directories should not be tracked in version control:
- config/: Contains runtime configuration (hypercorn.toml, secret keys)
- logs/: Contains upgrade logs and runtime output

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
GNU Parallel is available via system package managers (apt, brew, dnf, pacman),
no need for custom script installer.

Fixes installation error: "Installer not found: scripts/installers/script.sh"

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Prevents hangs when tools don't support --version flag or expect stdin input.

Changes:
- package_manager.sh: Added timeout 2 and </dev/null to version detection
- github_release_binary.sh: Added timeout 2 and </dev/null to all version checks

Fixes hang when installing tools like sponge that don't have --version flag
and would wait for stdin input indefinitely.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
…tools

Before: Confusing "Nothing to upgrade" message appeared after upgrading uv
After: Clear messages showing:
  - "uv upgraded: X.Y.Z → A.B.C" when uv binary is upgraded
  - "uv already at latest version: X.Y.Z" when no upgrade needed
  - "Checking uv-managed tools..." before checking tool upgrades
  - "Nothing to upgrade" now clearly refers to uv-managed tools

Changes:
- self_update_uv(): Capture before/after versions and show upgrade status
- upgrade_uv_tools(): Add context message before checking tools
- Filter out "info:" progress messages from uv self update

Fixes confusing UX where successful uv upgrade showed "Nothing to upgrade"

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
…ode.js

Problem: npm was detected as "bundled with runtime" and skipped upgrade
Solution: Created npm_self_update.sh installer that uses 'npm install -g npm@latest'

Changes:
- scripts/installers/npm_self_update.sh: New installer for npm upgrades
- catalog/npm.json: Switch from package_manager to npm_self_update method

npm can be upgraded independently from Node.js, even though it comes bundled.
This allows users to get the latest npm version without upgrading Node.js.

Before: npm 11.6.1 → "Already available (bundled with runtime)"
After:  npm 11.6.1 → 11.6.2 "Successfully upgraded"

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Problem: Tools without --version flag (like sponge) couldn't report versions
Solution: Added version_command field to catalog for custom version detection

Changes:
- package_manager.sh: Check for version_command field and eval if present
- sponge.json: Added version_command using dpkg to get moreutils version

This allows tools that are part of larger packages or don't have standard
--version flags to still report their versions correctly.

Before: [sponge] before: <none> / after: <none>
After:  [sponge] before: 0.69-1 / after: 0.69-1

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
GNU Parallel releases frequently (monthly), but system package managers
are typically 1-2 years behind. Current versions:
- apt/Ubuntu: 20231122 (Nov 2023)
- Upstream: 20250922 (Sep 2025)

Trade-off accepted: Simplicity via package manager vs latest version.
Users needing absolute latest can install from GNU website.

Note added to catalog with link to upstream for manual installation.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Problem: codex fails with Python 3.14 due to removed pkgutil.get_loader()
Solution: Pin codex to Python 3.13 via python_version catalog field

Changes:
- uv_tool.sh: Add support for python_version field with --python flag
- uv_tool.sh: Add timeout to version detection to prevent hangs
- codex.json: Pin to Python 3.13 with explanatory note

Python 3.14 removed pkgutil.get_loader() which breaks codex's dependency
'confuse'. Pinning to 3.13 ensures compatibility until upstream fixes.

Error before: AttributeError: module 'pkgutil' has no attribute 'get_loader'
Expected after: codex runs successfully on Python 3.13

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
@renovate renovate bot force-pushed the renovate/configure branch 2 times, most recently from 4e71404 to fc48743 Compare October 20, 2025 18:05
CybotTM and others added 16 commits October 20, 2025 22:19
Added 'make check-python-managers' command to detect multiple Python
package managers (pip, pipx, uv) and guide users toward consolidation.

Changes:
- scripts/check_python_package_managers.sh: New health check script
  * Detects pip, pipx, and uv installations
  * Warns when multiple managers are present
  * Recommends consolidation to uv for 10-100x performance improvement
  * Provides migration commands for pipx and pip tools

- Makefile: Added check-python-managers to .PHONY list
- Makefile.d/user.mk: Added check-python-managers target

Output scenarios:
1. Only uv: "✓ Only uv is installed - optimal configuration!"
2. Multiple managers: Warnings with migration guidance
3. No uv: Recommendation to install uv with benefits

Helps users maintain a clean, fast Python tooling environment by
avoiding conflicts between pip, pipx, and uv.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
- Created scripts/check_node_package_managers.sh to detect npm/yarn/pnpm/bun
- Warns about lock file conflicts and wasted disk space from multiple managers
- Recommends priority: pnpm > bun > npm > yarn
- Added make target: check-node-managers
- Provides project-specific guidance for package manager selection
…de workflow

- Added Stage 6: Package Manager Health Checks to upgrade-all workflow
- Health checks run after all upgrades complete
- Detects conflicts in Python package managers (pip/pipx/uv)
- Detects conflicts in Node.js package managers (npm/yarn/pnpm/bun)
- Provides migration guidance when conflicts are found
- Health check results logged and reported in upgrade summary
- Updated workflow description from 5-stage to 6-stage
- Added health checks to 'make update' after version data collection
- Runs check-path, check-python-managers, and check-node-managers
- Provides early warning about configuration issues before upgrades
- All checks run with '|| true' to not block update process
- Users get immediate feedback about PATH and package manager conflicts
- Created scripts/pin_version.sh to pin tools to specific versions
- Created scripts/unpin_version.sh to remove version pins
- Updated cli_audit.py to treat pinned tools as up-to-date
- Modified guide.sh to prompt for pinning when:
  * User declines an upgrade
  * Upgrade fails or version doesn't change
- Pinned versions stored in catalog JSON as 'pinned_version' field
- Prevents repeated prompts for tools that can't be upgraded
- Changed prompt from [y/N] to [y/N/s/p]
- Added 's' option: Skip this specific version (pin to target, prompt if newer)
- Added 'p' option: Pin to current version (don't ask for upgrades)
- Display option explanations before prompt for clarity
- Removes need for secondary prompt after declining upgrade
- Options only shown when tool is already installed

Example:
  Install/update? [y/N/s/p]
    y = Install/upgrade now
    N = Skip (ask again next time)
    s = Skip version 6.2.0 (ask again if newer available)
    p = Pin to 5.9.0 (don't ask for upgrades)
…ction

Critical bug fix:
- Used undefined PROJECT_ROOT variable in pinning code
- Caused NameError exception for all tools during audit
- Resulted in all tools showing as 'unknown' with no version info

Fix:
- Replaced PROJECT_ROOT with os.path.dirname(os.path.abspath(__file__))
- Use os.path.join() for cross-platform path construction
- Now correctly loads catalog files to check for pinned_version

Affected tools (now working again):
- node, docker, docker-compose, bat, entr, parallel
- And all other tools in the audit system
- Extended [y/N/s/p] prompt to non-installed tools
- Added 's' option for not-installed: Skip this version (prompt if newer)
- Added 'p' option for not-installed: Never install (permanently skip)
- When tool not installed and user selects 'p', pins to 'never'
- Updated audit to treat pinned_version='never' as UP-TO-DATE
- Suppresses install prompts for tools user doesn't want

User experience:
  For installed tools:
    p = Pin to current version (don't ask for upgrades)
  For non-installed tools:
    p = Never install (permanently skip this tool)

Example:
  ==> ❌ Ruby (rbenv)
      installed: <none> via unknown
      target:    3.4.7
      Options:
        y = Install/upgrade now
        N = Skip (ask again next time)
        s = Skip version 3.4.7 (ask again if newer available)
        p = Never install (permanently skip this tool)
  Install/update? [y/N/s/p]
Problem:
- Tools with install_method='auto' (bat, ripgrep, etc.) were not upgrading
- Reconcile system skipped reinstall when tool was via best method
- guide.sh always called install_tool.sh without action parameter
- Default action 'install' triggered reconcile mode which skipped upgrade

Solution:
1. Pass actual action (install/update/reconcile) to reconcile_tool
2. Only skip reinstall if action is 'reconcile' (not update/install)
3. guide.sh now uses 'update' action for already-installed tools
4. Reconcile system reinstalls tool when action is update/install

Result:
- bat successfully upgrades: 0.25.0 → 0.26.0
- All auto-install tools now upgrade correctly
- Reconcile action still skips if already via best method
- Load description and homepage from catalog using catalog_get_property
- Display description below tool name if available
- Display homepage as OSC8 hyperlink if available
- Helps users understand what tools are before installing/upgrading
- Add pre-release filtering for Python in Atom feed fallback
- Filter out alpha, beta, rc versions (e.g., v3.15.0a1, v3.14.0rc3)
- Pick highest stable version by semantic version comparison
- Fixes issue where Python 3.15.0a1 (alpha) was detected as latest
- Now correctly identifies 3.14.0 as latest stable version

The Atom feed fallback is used when GitHub API is rate-limited.
Without this fix, pre-release versions would be treated as stable
upgrades, prompting users to install alpha/beta Python versions.
- Extend pre-release filtering from Python-only to all GitHub repos
- Filter out rc, alpha, beta suffixes (e.g., v29.0.0-rc.1, v3.15.0a1)
- Accept only stable versions matching vX.Y or vX.Y.Z pattern
- Pick highest stable version by semantic version comparison
- Fixes Docker showing 29.0.0-rc.1 as upgrade target when 28.5.1 is latest stable

The Atom feed is a fallback when GitHub API is rate-limited or
/releases/latest doesn't exist. Pre-releases in the Atom feed would
previously be treated as stable versions, causing incorrect upgrade
prompts for alpha/beta/rc versions across all tools.
Updated hints for tools now using filtered Atom feed:
- docker/cli: atom -> atom_filtered (filters v29.0.0-rc.1)
Snapshot now reflects pre-release filtering fixes:
- Python: 3.14.0 (was showing 3.15.0a1 incorrectly)
- Docker: 28.5.1 (was showing 29.0.0-rc.1 incorrectly)
- Status updates from version pinning and testing
@renovate
Copy link
Author

renovate bot commented Oct 27, 2025

Renovate is disabled

Renovate is disabled because there is no Renovate configuration file. To enable Renovate, you can either (a) change this PR's title to get a new onboarding PR, and merge the new onboarding PR, or (b) create a Renovate config file, and commit that file to your base branch.

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.

2 participants