🤖 Integrate Renovatebot for Automated Dependency Updates #187

Description

@matrixise

Overview

Explore integrating Renovatebot as our automated dependency management solution. This complements our recent migration to uv while providing automated dependency updates without requiring migration to pyproject.toml immediately.

Why Renovatebot?

Following discussion in #184, Renovatebot emerged as a superior alternative to Dependabot for our workflow:

✅ Advantages over Manual Workflow

  1. Automated security updates: Get notified of vulnerabilities with automated fix PRs
  2. Time savings: No more manual task dependencies:upgrade runs
  3. Granular control: Group related updates (e.g., Django ecosystem), schedule updates (e.g., Mondays only)
  4. Better visibility: Track all dependency updates in one place with proper PR descriptions

✅ Advantages over Dependabot

Based on research and community feedback (see #184):

  • Native uv support: Handles both uv.lock and pip-compile workflows
  • Better lock file handling: No issues with marking security fixes as resolved without updating locks
  • More mature: ~10 years old, actively maintained
  • Better configuration: Advanced grouping, scheduling, automerge options
  • Higher API limits: 15,000 requests/hour vs 5,000/hour

✅ Works with Our Current Workflow

Renovatebot supports our current requirements/*.inrequirements/*.txt (pip-compile) workflow:

  • Updates source files (.in)
  • Automatically regenerates compiled files (.txt)
  • Creates PRs with both changes included

Heroku Native uv Support

Heroku now supports uv natively (announcement, docs) as of May 2025.

Requirements for Heroku uv support:

  • pyproject.toml + uv.lock + .python-version
  • Must remove requirements.txt files (other package managers take precedence)

Implication: To use Heroku's native uv support, we'd need to migrate from our current .in/.txt workflow to pyproject.toml + uv.lock.

Renovatebot advantage: Supports BOTH workflows, so we can:

  1. Enable Renovatebot now with our current pip-compile setup
  2. Migrate to pyproject.toml + uv.lock when ready for Heroku's native uv support
  3. Renovatebot will continue working seamlessly after migration

Implementation Cost

Zero cost, minimal setup:

  • Free: Mend Renovate GitHub App is free for open source projects
  • No infrastructure: Cloud-hosted, no self-hosting required
  • 5-minute setup: Install GitHub App + merge onboarding PR
  • No scripts: Just a renovate.json config file

Proposed Configuration

{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["config:recommended"],
"pip-compile": {
"managerFilePatterns": ["requirements/.*\\.txt$"]
},
"pip_requirements": { "enabled": false },
"packageRules": [
{
"groupName": "Django ecosystem",
"matchPackagePatterns": ["^[Dd]jango", "^[Ww]agtail"],
"schedule": ["before 9am on monday"]
},
{
"matchUpdateTypes": ["patch"],
"automerge": true,
"automergeType": "pr"
}
],
"lockFileMaintenance": {
"enabled": true,
"schedule": ["before 9am on the first day of the month"]
}
}

Key features:

  • Groups Django/Wagtail updates together
  • Schedules updates for Monday mornings
  • Auto-merges patch updates (e.g., 6.0.1 → 6.0.2)
  • Monthly lock file refresh for transitive dependencies

Migration Path

Phase 1: Enable Renovatebot (current workflow)

  1. Install Mend Renovate GitHub App
  2. Configure for pip-compile workflow
  3. Merge onboarding PR
  4. Monitor and tune configuration

Phase 2 (Future): Migrate to pyproject.toml + uv.lock

When ready to use Heroku's native uv support:

  1. Migrate to pyproject.toml + uv.lock
  2. Update Renovatebot config to use PEP 621 manager
  3. Remove pip-compile configuration
  4. Benefit from Heroku's faster uv deployments

Comparison with Manual Workflow

AspectManual (task dependencies:upgrade)Renovatebot
FrequencyWhen we rememberAutomated schedule
Security alertsManual monitoringAutomated PRs
GranularityAll-or-nothingPer-package or grouped
Test before mergeManualCI runs automatically
Time investment~30min monthly~5min to review PRs

Next Steps

  • Community feedback on this proposal
  • Install Mend Renovate GitHub App: https://github.com/apps/renovate
  • Create renovate.json with proposed configuration
  • Merge onboarding PR
  • Monitor first round of dependency update PRs
  • Fine-tune configuration based on experience

References

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
       blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
      }
      } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
      })();
      (function(){
      try {
      var __m = "github.com";
      var __re = new RegExp('^' + "github\\.com" + '
      
      Skip to content

      🤖 Integrate Renovatebot for Automated Dependency Updates #187

      Description

      @matrixise

      Overview

      Explore integrating Renovatebot as our automated dependency management solution. This complements our recent migration to uv while providing automated dependency updates without requiring migration to pyproject.toml immediately.

      Why Renovatebot?

      Following discussion in #184, Renovatebot emerged as a superior alternative to Dependabot for our workflow:

      ✅ Advantages over Manual Workflow

      1. Automated security updates: Get notified of vulnerabilities with automated fix PRs
      2. Time savings: No more manual task dependencies:upgrade runs
      3. Granular control: Group related updates (e.g., Django ecosystem), schedule updates (e.g., Mondays only)
      4. Better visibility: Track all dependency updates in one place with proper PR descriptions

      ✅ Advantages over Dependabot

      Based on research and community feedback (see #184):

      • Native uv support: Handles both uv.lock and pip-compile workflows
      • Better lock file handling: No issues with marking security fixes as resolved without updating locks
      • More mature: ~10 years old, actively maintained
      • Better configuration: Advanced grouping, scheduling, automerge options
      • Higher API limits: 15,000 requests/hour vs 5,000/hour

      ✅ Works with Our Current Workflow

      Renovatebot supports our current requirements/*.inrequirements/*.txt (pip-compile) workflow:

      • Updates source files (.in)
      • Automatically regenerates compiled files (.txt)
      • Creates PRs with both changes included

      Heroku Native uv Support

      Heroku now supports uv natively (announcement, docs) as of May 2025.

      Requirements for Heroku uv support:

      • pyproject.toml + uv.lock + .python-version
      • Must remove requirements.txt files (other package managers take precedence)

      Implication: To use Heroku's native uv support, we'd need to migrate from our current .in/.txt workflow to pyproject.toml + uv.lock.

      Renovatebot advantage: Supports BOTH workflows, so we can:

      1. Enable Renovatebot now with our current pip-compile setup
      2. Migrate to pyproject.toml + uv.lock when ready for Heroku's native uv support
      3. Renovatebot will continue working seamlessly after migration

      Implementation Cost

      Zero cost, minimal setup:

      • Free: Mend Renovate GitHub App is free for open source projects
      • No infrastructure: Cloud-hosted, no self-hosting required
      • 5-minute setup: Install GitHub App + merge onboarding PR
      • No scripts: Just a renovate.json config file

      Proposed Configuration

      {
      "$schema": "https://docs.renovatebot.com/renovate-schema.json",
      "extends": ["config:recommended"],
      "pip-compile": {
      "managerFilePatterns": ["requirements/.*\\.txt$"]
      },
      "pip_requirements": { "enabled": false },
      "packageRules": [
      {
      "groupName": "Django ecosystem",
      "matchPackagePatterns": ["^[Dd]jango", "^[Ww]agtail"],
      "schedule": ["before 9am on monday"]
      },
      {
      "matchUpdateTypes": ["patch"],
      "automerge": true,
      "automergeType": "pr"
      }
      ],
      "lockFileMaintenance": {
      "enabled": true,
      "schedule": ["before 9am on the first day of the month"]
      }
      }

      Key features:

      • Groups Django/Wagtail updates together
      • Schedules updates for Monday mornings
      • Auto-merges patch updates (e.g., 6.0.1 → 6.0.2)
      • Monthly lock file refresh for transitive dependencies

      Migration Path

      Phase 1: Enable Renovatebot (current workflow)

      1. Install Mend Renovate GitHub App
      2. Configure for pip-compile workflow
      3. Merge onboarding PR
      4. Monitor and tune configuration

      Phase 2 (Future): Migrate to pyproject.toml + uv.lock

      When ready to use Heroku's native uv support:

      1. Migrate to pyproject.toml + uv.lock
      2. Update Renovatebot config to use PEP 621 manager
      3. Remove pip-compile configuration
      4. Benefit from Heroku's faster uv deployments

      Comparison with Manual Workflow

      AspectManual (task dependencies:upgrade)Renovatebot
      FrequencyWhen we rememberAutomated schedule
      Security alertsManual monitoringAutomated PRs
      GranularityAll-or-nothingPer-package or grouped
      Test before mergeManualCI runs automatically
      Time investment~30min monthly~5min to review PRs

      Next Steps

      • Community feedback on this proposal
      • Install Mend Renovate GitHub App: https://github.com/apps/renovate
      • Create renovate.json with proposed configuration
      • Merge onboarding PR
      • Monitor first round of dependency update PRs
      • Fine-tune configuration based on experience

      References

      Activity

      Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

      Metadata

      Metadata

      Assignees

      No one assigned

        Labels

        Type

        No type

        Projects

        No projects

          Milestone

          No milestone

          Relationships

          None yet

          Development

          No branches or pull requests

          Issue actions

          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
          Skip to content

          🤖 Integrate Renovatebot for Automated Dependency Updates #187

          Description

          @matrixise

          Overview

          Explore integrating Renovatebot as our automated dependency management solution. This complements our recent migration to uv while providing automated dependency updates without requiring migration to pyproject.toml immediately.

          Why Renovatebot?

          Following discussion in #184, Renovatebot emerged as a superior alternative to Dependabot for our workflow:

          ✅ Advantages over Manual Workflow

          1. Automated security updates: Get notified of vulnerabilities with automated fix PRs
          2. Time savings: No more manual task dependencies:upgrade runs
          3. Granular control: Group related updates (e.g., Django ecosystem), schedule updates (e.g., Mondays only)
          4. Better visibility: Track all dependency updates in one place with proper PR descriptions

          ✅ Advantages over Dependabot

          Based on research and community feedback (see #184):

          • Native uv support: Handles both uv.lock and pip-compile workflows
          • Better lock file handling: No issues with marking security fixes as resolved without updating locks
          • More mature: ~10 years old, actively maintained
          • Better configuration: Advanced grouping, scheduling, automerge options
          • Higher API limits: 15,000 requests/hour vs 5,000/hour

          ✅ Works with Our Current Workflow

          Renovatebot supports our current requirements/*.inrequirements/*.txt (pip-compile) workflow:

          • Updates source files (.in)
          • Automatically regenerates compiled files (.txt)
          • Creates PRs with both changes included

          Heroku Native uv Support

          Heroku now supports uv natively (announcement, docs) as of May 2025.

          Requirements for Heroku uv support:

          • pyproject.toml + uv.lock + .python-version
          • Must remove requirements.txt files (other package managers take precedence)

          Implication: To use Heroku's native uv support, we'd need to migrate from our current .in/.txt workflow to pyproject.toml + uv.lock.

          Renovatebot advantage: Supports BOTH workflows, so we can:

          1. Enable Renovatebot now with our current pip-compile setup
          2. Migrate to pyproject.toml + uv.lock when ready for Heroku's native uv support
          3. Renovatebot will continue working seamlessly after migration

          Implementation Cost

          Zero cost, minimal setup:

          • Free: Mend Renovate GitHub App is free for open source projects
          • No infrastructure: Cloud-hosted, no self-hosting required
          • 5-minute setup: Install GitHub App + merge onboarding PR
          • No scripts: Just a renovate.json config file

          Proposed Configuration

          {
          "$schema": "https://docs.renovatebot.com/renovate-schema.json",
          "extends": ["config:recommended"],
          "pip-compile": {
          "managerFilePatterns": ["requirements/.*\\.txt$"]
          },
          "pip_requirements": { "enabled": false },
          "packageRules": [
          {
          "groupName": "Django ecosystem",
          "matchPackagePatterns": ["^[Dd]jango", "^[Ww]agtail"],
          "schedule": ["before 9am on monday"]
          },
          {
          "matchUpdateTypes": ["patch"],
          "automerge": true,
          "automergeType": "pr"
          }
          ],
          "lockFileMaintenance": {
          "enabled": true,
          "schedule": ["before 9am on the first day of the month"]
          }
          }

          Key features:

          • Groups Django/Wagtail updates together
          • Schedules updates for Monday mornings
          • Auto-merges patch updates (e.g., 6.0.1 → 6.0.2)
          • Monthly lock file refresh for transitive dependencies

          Migration Path

          Phase 1: Enable Renovatebot (current workflow)

          1. Install Mend Renovate GitHub App
          2. Configure for pip-compile workflow
          3. Merge onboarding PR
          4. Monitor and tune configuration

          Phase 2 (Future): Migrate to pyproject.toml + uv.lock

          When ready to use Heroku's native uv support:

          1. Migrate to pyproject.toml + uv.lock
          2. Update Renovatebot config to use PEP 621 manager
          3. Remove pip-compile configuration
          4. Benefit from Heroku's faster uv deployments

          Comparison with Manual Workflow

          AspectManual (task dependencies:upgrade)Renovatebot
          FrequencyWhen we rememberAutomated schedule
          Security alertsManual monitoringAutomated PRs
          GranularityAll-or-nothingPer-package or grouped
          Test before mergeManualCI runs automatically
          Time investment~30min monthly~5min to review PRs

          Next Steps

          • Community feedback on this proposal
          • Install Mend Renovate GitHub App: https://github.com/apps/renovate
          • Create renovate.json with proposed configuration
          • Merge onboarding PR
          • Monitor first round of dependency update PRs
          • Fine-tune configuration based on experience

          References

          Activity

          Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

          Metadata

          Metadata

          Assignees

          No one assigned

            Labels

            Type

            No type

            Projects

            No projects

              Milestone

              No milestone

              Relationships

              None yet

              Development

              No branches or pull requests

              Issue actions

              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
              Skip to content

              🤖 Integrate Renovatebot for Automated Dependency Updates #187

              Description

              @matrixise

              Overview

              Explore integrating Renovatebot as our automated dependency management solution. This complements our recent migration to uv while providing automated dependency updates without requiring migration to pyproject.toml immediately.

              Why Renovatebot?

              Following discussion in #184, Renovatebot emerged as a superior alternative to Dependabot for our workflow:

              ✅ Advantages over Manual Workflow

              1. Automated security updates: Get notified of vulnerabilities with automated fix PRs
              2. Time savings: No more manual task dependencies:upgrade runs
              3. Granular control: Group related updates (e.g., Django ecosystem), schedule updates (e.g., Mondays only)
              4. Better visibility: Track all dependency updates in one place with proper PR descriptions

              ✅ Advantages over Dependabot

              Based on research and community feedback (see #184):

              • Native uv support: Handles both uv.lock and pip-compile workflows
              • Better lock file handling: No issues with marking security fixes as resolved without updating locks
              • More mature: ~10 years old, actively maintained
              • Better configuration: Advanced grouping, scheduling, automerge options
              • Higher API limits: 15,000 requests/hour vs 5,000/hour

              ✅ Works with Our Current Workflow

              Renovatebot supports our current requirements/*.inrequirements/*.txt (pip-compile) workflow:

              • Updates source files (.in)
              • Automatically regenerates compiled files (.txt)
              • Creates PRs with both changes included

              Heroku Native uv Support

              Heroku now supports uv natively (announcement, docs) as of May 2025.

              Requirements for Heroku uv support:

              • pyproject.toml + uv.lock + .python-version
              • Must remove requirements.txt files (other package managers take precedence)

              Implication: To use Heroku's native uv support, we'd need to migrate from our current .in/.txt workflow to pyproject.toml + uv.lock.

              Renovatebot advantage: Supports BOTH workflows, so we can:

              1. Enable Renovatebot now with our current pip-compile setup
              2. Migrate to pyproject.toml + uv.lock when ready for Heroku's native uv support
              3. Renovatebot will continue working seamlessly after migration

              Implementation Cost

              Zero cost, minimal setup:

              • Free: Mend Renovate GitHub App is free for open source projects
              • No infrastructure: Cloud-hosted, no self-hosting required
              • 5-minute setup: Install GitHub App + merge onboarding PR
              • No scripts: Just a renovate.json config file

              Proposed Configuration

              {
              "$schema": "https://docs.renovatebot.com/renovate-schema.json",
              "extends": ["config:recommended"],
              "pip-compile": {
              "managerFilePatterns": ["requirements/.*\\.txt$"]
              },
              "pip_requirements": { "enabled": false },
              "packageRules": [
              {
              "groupName": "Django ecosystem",
              "matchPackagePatterns": ["^[Dd]jango", "^[Ww]agtail"],
              "schedule": ["before 9am on monday"]
              },
              {
              "matchUpdateTypes": ["patch"],
              "automerge": true,
              "automergeType": "pr"
              }
              ],
              "lockFileMaintenance": {
              "enabled": true,
              "schedule": ["before 9am on the first day of the month"]
              }
              }

              Key features:

              • Groups Django/Wagtail updates together
              • Schedules updates for Monday mornings
              • Auto-merges patch updates (e.g., 6.0.1 → 6.0.2)
              • Monthly lock file refresh for transitive dependencies

              Migration Path

              Phase 1: Enable Renovatebot (current workflow)

              1. Install Mend Renovate GitHub App
              2. Configure for pip-compile workflow
              3. Merge onboarding PR
              4. Monitor and tune configuration

              Phase 2 (Future): Migrate to pyproject.toml + uv.lock

              When ready to use Heroku's native uv support:

              1. Migrate to pyproject.toml + uv.lock
              2. Update Renovatebot config to use PEP 621 manager
              3. Remove pip-compile configuration
              4. Benefit from Heroku's faster uv deployments

              Comparison with Manual Workflow

              AspectManual (task dependencies:upgrade)Renovatebot
              FrequencyWhen we rememberAutomated schedule
              Security alertsManual monitoringAutomated PRs
              GranularityAll-or-nothingPer-package or grouped
              Test before mergeManualCI runs automatically
              Time investment~30min monthly~5min to review PRs

              Next Steps

              • Community feedback on this proposal
              • Install Mend Renovate GitHub App: https://github.com/apps/renovate
              • Create renovate.json with proposed configuration
              • Merge onboarding PR
              • Monitor first round of dependency update PRs
              • Fine-tune configuration based on experience

              References

              Activity

              Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

              Metadata

              Metadata

              Assignees

              No one assigned

                Labels

                Type

                No type

                Projects

                No projects

                  Milestone

                  No milestone

                  Relationships

                  None yet

                  Development

                  No branches or pull requests

                  Issue actions

                  , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
                  Skip to content

                  🤖 Integrate Renovatebot for Automated Dependency Updates #187

                  Description

                  @matrixise

                  Overview

                  Explore integrating Renovatebot as our automated dependency management solution. This complements our recent migration to uv while providing automated dependency updates without requiring migration to pyproject.toml immediately.

                  Why Renovatebot?

                  Following discussion in #184, Renovatebot emerged as a superior alternative to Dependabot for our workflow:

                  ✅ Advantages over Manual Workflow

                  1. Automated security updates: Get notified of vulnerabilities with automated fix PRs
                  2. Time savings: No more manual task dependencies:upgrade runs
                  3. Granular control: Group related updates (e.g., Django ecosystem), schedule updates (e.g., Mondays only)
                  4. Better visibility: Track all dependency updates in one place with proper PR descriptions

                  ✅ Advantages over Dependabot

                  Based on research and community feedback (see #184):

                  • Native uv support: Handles both uv.lock and pip-compile workflows
                  • Better lock file handling: No issues with marking security fixes as resolved without updating locks
                  • More mature: ~10 years old, actively maintained
                  • Better configuration: Advanced grouping, scheduling, automerge options
                  • Higher API limits: 15,000 requests/hour vs 5,000/hour

                  ✅ Works with Our Current Workflow

                  Renovatebot supports our current requirements/*.inrequirements/*.txt (pip-compile) workflow:

                  • Updates source files (.in)
                  • Automatically regenerates compiled files (.txt)
                  • Creates PRs with both changes included

                  Heroku Native uv Support

                  Heroku now supports uv natively (announcement, docs) as of May 2025.

                  Requirements for Heroku uv support:

                  • pyproject.toml + uv.lock + .python-version
                  • Must remove requirements.txt files (other package managers take precedence)

                  Implication: To use Heroku's native uv support, we'd need to migrate from our current .in/.txt workflow to pyproject.toml + uv.lock.

                  Renovatebot advantage: Supports BOTH workflows, so we can:

                  1. Enable Renovatebot now with our current pip-compile setup
                  2. Migrate to pyproject.toml + uv.lock when ready for Heroku's native uv support
                  3. Renovatebot will continue working seamlessly after migration

                  Implementation Cost

                  Zero cost, minimal setup:

                  • Free: Mend Renovate GitHub App is free for open source projects
                  • No infrastructure: Cloud-hosted, no self-hosting required
                  • 5-minute setup: Install GitHub App + merge onboarding PR
                  • No scripts: Just a renovate.json config file

                  Proposed Configuration

                  {
                  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
                  "extends": ["config:recommended"],
                  "pip-compile": {
                  "managerFilePatterns": ["requirements/.*\\.txt$"]
                  },
                  "pip_requirements": { "enabled": false },
                  "packageRules": [
                  {
                  "groupName": "Django ecosystem",
                  "matchPackagePatterns": ["^[Dd]jango", "^[Ww]agtail"],
                  "schedule": ["before 9am on monday"]
                  },
                  {
                  "matchUpdateTypes": ["patch"],
                  "automerge": true,
                  "automergeType": "pr"
                  }
                  ],
                  "lockFileMaintenance": {
                  "enabled": true,
                  "schedule": ["before 9am on the first day of the month"]
                  }
                  }

                  Key features:

                  • Groups Django/Wagtail updates together
                  • Schedules updates for Monday mornings
                  • Auto-merges patch updates (e.g., 6.0.1 → 6.0.2)
                  • Monthly lock file refresh for transitive dependencies

                  Migration Path

                  Phase 1: Enable Renovatebot (current workflow)

                  1. Install Mend Renovate GitHub App
                  2. Configure for pip-compile workflow
                  3. Merge onboarding PR
                  4. Monitor and tune configuration

                  Phase 2 (Future): Migrate to pyproject.toml + uv.lock

                  When ready to use Heroku's native uv support:

                  1. Migrate to pyproject.toml + uv.lock
                  2. Update Renovatebot config to use PEP 621 manager
                  3. Remove pip-compile configuration
                  4. Benefit from Heroku's faster uv deployments

                  Comparison with Manual Workflow

                  AspectManual (task dependencies:upgrade)Renovatebot
                  FrequencyWhen we rememberAutomated schedule
                  Security alertsManual monitoringAutomated PRs
                  GranularityAll-or-nothingPer-package or grouped
                  Test before mergeManualCI runs automatically
                  Time investment~30min monthly~5min to review PRs

                  Next Steps

                  • Community feedback on this proposal
                  • Install Mend Renovate GitHub App: https://github.com/apps/renovate
                  • Create renovate.json with proposed configuration
                  • Merge onboarding PR
                  • Monitor first round of dependency update PRs
                  • Fine-tune configuration based on experience

                  References

                  Activity

                  Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

                  Metadata

                  Metadata

                  Assignees

                  No one assigned

                    Labels

                    Type

                    No type

                    Projects

                    No projects

                      Milestone

                      No milestone

                      Relationships

                      None yet

                      Development

                      No branches or pull requests

                      Issue actions

                      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
                      Skip to content

                      🤖 Integrate Renovatebot for Automated Dependency Updates #187

                      Description

                      @matrixise

                      Overview

                      Explore integrating Renovatebot as our automated dependency management solution. This complements our recent migration to uv while providing automated dependency updates without requiring migration to pyproject.toml immediately.

                      Why Renovatebot?

                      Following discussion in #184, Renovatebot emerged as a superior alternative to Dependabot for our workflow:

                      ✅ Advantages over Manual Workflow

                      1. Automated security updates: Get notified of vulnerabilities with automated fix PRs
                      2. Time savings: No more manual task dependencies:upgrade runs
                      3. Granular control: Group related updates (e.g., Django ecosystem), schedule updates (e.g., Mondays only)
                      4. Better visibility: Track all dependency updates in one place with proper PR descriptions

                      ✅ Advantages over Dependabot

                      Based on research and community feedback (see #184):

                      • Native uv support: Handles both uv.lock and pip-compile workflows
                      • Better lock file handling: No issues with marking security fixes as resolved without updating locks
                      • More mature: ~10 years old, actively maintained
                      • Better configuration: Advanced grouping, scheduling, automerge options
                      • Higher API limits: 15,000 requests/hour vs 5,000/hour

                      ✅ Works with Our Current Workflow

                      Renovatebot supports our current requirements/*.inrequirements/*.txt (pip-compile) workflow:

                      • Updates source files (.in)
                      • Automatically regenerates compiled files (.txt)
                      • Creates PRs with both changes included

                      Heroku Native uv Support

                      Heroku now supports uv natively (announcement, docs) as of May 2025.

                      Requirements for Heroku uv support:

                      • pyproject.toml + uv.lock + .python-version
                      • Must remove requirements.txt files (other package managers take precedence)

                      Implication: To use Heroku's native uv support, we'd need to migrate from our current .in/.txt workflow to pyproject.toml + uv.lock.

                      Renovatebot advantage: Supports BOTH workflows, so we can:

                      1. Enable Renovatebot now with our current pip-compile setup
                      2. Migrate to pyproject.toml + uv.lock when ready for Heroku's native uv support
                      3. Renovatebot will continue working seamlessly after migration

                      Implementation Cost

                      Zero cost, minimal setup:

                      • Free: Mend Renovate GitHub App is free for open source projects
                      • No infrastructure: Cloud-hosted, no self-hosting required
                      • 5-minute setup: Install GitHub App + merge onboarding PR
                      • No scripts: Just a renovate.json config file

                      Proposed Configuration

                      {
                      "$schema": "https://docs.renovatebot.com/renovate-schema.json",
                      "extends": ["config:recommended"],
                      "pip-compile": {
                      "managerFilePatterns": ["requirements/.*\\.txt$"]
                      },
                      "pip_requirements": { "enabled": false },
                      "packageRules": [
                      {
                      "groupName": "Django ecosystem",
                      "matchPackagePatterns": ["^[Dd]jango", "^[Ww]agtail"],
                      "schedule": ["before 9am on monday"]
                      },
                      {
                      "matchUpdateTypes": ["patch"],
                      "automerge": true,
                      "automergeType": "pr"
                      }
                      ],
                      "lockFileMaintenance": {
                      "enabled": true,
                      "schedule": ["before 9am on the first day of the month"]
                      }
                      }

                      Key features:

                      • Groups Django/Wagtail updates together
                      • Schedules updates for Monday mornings
                      • Auto-merges patch updates (e.g., 6.0.1 → 6.0.2)
                      • Monthly lock file refresh for transitive dependencies

                      Migration Path

                      Phase 1: Enable Renovatebot (current workflow)

                      1. Install Mend Renovate GitHub App
                      2. Configure for pip-compile workflow
                      3. Merge onboarding PR
                      4. Monitor and tune configuration

                      Phase 2 (Future): Migrate to pyproject.toml + uv.lock

                      When ready to use Heroku's native uv support:

                      1. Migrate to pyproject.toml + uv.lock
                      2. Update Renovatebot config to use PEP 621 manager
                      3. Remove pip-compile configuration
                      4. Benefit from Heroku's faster uv deployments

                      Comparison with Manual Workflow

                      AspectManual (task dependencies:upgrade)Renovatebot
                      FrequencyWhen we rememberAutomated schedule
                      Security alertsManual monitoringAutomated PRs
                      GranularityAll-or-nothingPer-package or grouped
                      Test before mergeManualCI runs automatically
                      Time investment~30min monthly~5min to review PRs

                      Next Steps

                      • Community feedback on this proposal
                      • Install Mend Renovate GitHub App: https://github.com/apps/renovate
                      • Create renovate.json with proposed configuration
                      • Merge onboarding PR
                      • Monitor first round of dependency update PRs
                      • Fine-tune configuration based on experience

                      References

                      Activity

                      Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

                      Metadata

                      Metadata

                      Assignees

                      No one assigned

                        Labels

                        Type

                        No type

                        Projects

                        No projects

                          Milestone

                          No milestone

                          Relationships

                          None yet

                          Development

                          No branches or pull requests

                          Issue actions

                          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
                          Skip to content

                          🤖 Integrate Renovatebot for Automated Dependency Updates #187

                          Description

                          @matrixise

                          Overview

                          Explore integrating Renovatebot as our automated dependency management solution. This complements our recent migration to uv while providing automated dependency updates without requiring migration to pyproject.toml immediately.

                          Why Renovatebot?

                          Following discussion in #184, Renovatebot emerged as a superior alternative to Dependabot for our workflow:

                          ✅ Advantages over Manual Workflow

                          1. Automated security updates: Get notified of vulnerabilities with automated fix PRs
                          2. Time savings: No more manual task dependencies:upgrade runs
                          3. Granular control: Group related updates (e.g., Django ecosystem), schedule updates (e.g., Mondays only)
                          4. Better visibility: Track all dependency updates in one place with proper PR descriptions

                          ✅ Advantages over Dependabot

                          Based on research and community feedback (see #184):

                          • Native uv support: Handles both uv.lock and pip-compile workflows
                          • Better lock file handling: No issues with marking security fixes as resolved without updating locks
                          • More mature: ~10 years old, actively maintained
                          • Better configuration: Advanced grouping, scheduling, automerge options
                          • Higher API limits: 15,000 requests/hour vs 5,000/hour

                          ✅ Works with Our Current Workflow

                          Renovatebot supports our current requirements/*.inrequirements/*.txt (pip-compile) workflow:

                          • Updates source files (.in)
                          • Automatically regenerates compiled files (.txt)
                          • Creates PRs with both changes included

                          Heroku Native uv Support

                          Heroku now supports uv natively (announcement, docs) as of May 2025.

                          Requirements for Heroku uv support:

                          • pyproject.toml + uv.lock + .python-version
                          • Must remove requirements.txt files (other package managers take precedence)

                          Implication: To use Heroku's native uv support, we'd need to migrate from our current .in/.txt workflow to pyproject.toml + uv.lock.

                          Renovatebot advantage: Supports BOTH workflows, so we can:

                          1. Enable Renovatebot now with our current pip-compile setup
                          2. Migrate to pyproject.toml + uv.lock when ready for Heroku's native uv support
                          3. Renovatebot will continue working seamlessly after migration

                          Implementation Cost

                          Zero cost, minimal setup:

                          • Free: Mend Renovate GitHub App is free for open source projects
                          • No infrastructure: Cloud-hosted, no self-hosting required
                          • 5-minute setup: Install GitHub App + merge onboarding PR
                          • No scripts: Just a renovate.json config file

                          Proposed Configuration

                          {
                          "$schema": "https://docs.renovatebot.com/renovate-schema.json",
                          "extends": ["config:recommended"],
                          "pip-compile": {
                          "managerFilePatterns": ["requirements/.*\\.txt$"]
                          },
                          "pip_requirements": { "enabled": false },
                          "packageRules": [
                          {
                          "groupName": "Django ecosystem",
                          "matchPackagePatterns": ["^[Dd]jango", "^[Ww]agtail"],
                          "schedule": ["before 9am on monday"]
                          },
                          {
                          "matchUpdateTypes": ["patch"],
                          "automerge": true,
                          "automergeType": "pr"
                          }
                          ],
                          "lockFileMaintenance": {
                          "enabled": true,
                          "schedule": ["before 9am on the first day of the month"]
                          }
                          }

                          Key features:

                          • Groups Django/Wagtail updates together
                          • Schedules updates for Monday mornings
                          • Auto-merges patch updates (e.g., 6.0.1 → 6.0.2)
                          • Monthly lock file refresh for transitive dependencies

                          Migration Path

                          Phase 1: Enable Renovatebot (current workflow)

                          1. Install Mend Renovate GitHub App
                          2. Configure for pip-compile workflow
                          3. Merge onboarding PR
                          4. Monitor and tune configuration

                          Phase 2 (Future): Migrate to pyproject.toml + uv.lock

                          When ready to use Heroku's native uv support:

                          1. Migrate to pyproject.toml + uv.lock
                          2. Update Renovatebot config to use PEP 621 manager
                          3. Remove pip-compile configuration
                          4. Benefit from Heroku's faster uv deployments

                          Comparison with Manual Workflow

                          AspectManual (task dependencies:upgrade)Renovatebot
                          FrequencyWhen we rememberAutomated schedule
                          Security alertsManual monitoringAutomated PRs
                          GranularityAll-or-nothingPer-package or grouped
                          Test before mergeManualCI runs automatically
                          Time investment~30min monthly~5min to review PRs

                          Next Steps

                          • Community feedback on this proposal
                          • Install Mend Renovate GitHub App: https://github.com/apps/renovate
                          • Create renovate.json with proposed configuration
                          • Merge onboarding PR
                          • Monitor first round of dependency update PRs
                          • Fine-tune configuration based on experience

                          References

                          Activity

                          Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

                          Metadata

                          Metadata

                          Assignees

                          No one assigned

                            Labels

                            Type

                            No type

                            Projects

                            No projects

                              Milestone

                              No milestone

                              Relationships

                              None yet

                              Development

                              No branches or pull requests

                              Issue actions

                              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
                              Skip to content

                              🤖 Integrate Renovatebot for Automated Dependency Updates #187

                              Description

                              @matrixise

                              Overview

                              Explore integrating Renovatebot as our automated dependency management solution. This complements our recent migration to uv while providing automated dependency updates without requiring migration to pyproject.toml immediately.

                              Why Renovatebot?

                              Following discussion in #184, Renovatebot emerged as a superior alternative to Dependabot for our workflow:

                              ✅ Advantages over Manual Workflow

                              1. Automated security updates: Get notified of vulnerabilities with automated fix PRs
                              2. Time savings: No more manual task dependencies:upgrade runs
                              3. Granular control: Group related updates (e.g., Django ecosystem), schedule updates (e.g., Mondays only)
                              4. Better visibility: Track all dependency updates in one place with proper PR descriptions

                              ✅ Advantages over Dependabot

                              Based on research and community feedback (see #184):

                              • Native uv support: Handles both uv.lock and pip-compile workflows
                              • Better lock file handling: No issues with marking security fixes as resolved without updating locks
                              • More mature: ~10 years old, actively maintained
                              • Better configuration: Advanced grouping, scheduling, automerge options
                              • Higher API limits: 15,000 requests/hour vs 5,000/hour

                              ✅ Works with Our Current Workflow

                              Renovatebot supports our current requirements/*.inrequirements/*.txt (pip-compile) workflow:

                              • Updates source files (.in)
                              • Automatically regenerates compiled files (.txt)
                              • Creates PRs with both changes included

                              Heroku Native uv Support

                              Heroku now supports uv natively (announcement, docs) as of May 2025.

                              Requirements for Heroku uv support:

                              • pyproject.toml + uv.lock + .python-version
                              • Must remove requirements.txt files (other package managers take precedence)

                              Implication: To use Heroku's native uv support, we'd need to migrate from our current .in/.txt workflow to pyproject.toml + uv.lock.

                              Renovatebot advantage: Supports BOTH workflows, so we can:

                              1. Enable Renovatebot now with our current pip-compile setup
                              2. Migrate to pyproject.toml + uv.lock when ready for Heroku's native uv support
                              3. Renovatebot will continue working seamlessly after migration

                              Implementation Cost

                              Zero cost, minimal setup:

                              • Free: Mend Renovate GitHub App is free for open source projects
                              • No infrastructure: Cloud-hosted, no self-hosting required
                              • 5-minute setup: Install GitHub App + merge onboarding PR
                              • No scripts: Just a renovate.json config file

                              Proposed Configuration

                              {
                              "$schema": "https://docs.renovatebot.com/renovate-schema.json",
                              "extends": ["config:recommended"],
                              "pip-compile": {
                              "managerFilePatterns": ["requirements/.*\\.txt$"]
                              },
                              "pip_requirements": { "enabled": false },
                              "packageRules": [
                              {
                              "groupName": "Django ecosystem",
                              "matchPackagePatterns": ["^[Dd]jango", "^[Ww]agtail"],
                              "schedule": ["before 9am on monday"]
                              },
                              {
                              "matchUpdateTypes": ["patch"],
                              "automerge": true,
                              "automergeType": "pr"
                              }
                              ],
                              "lockFileMaintenance": {
                              "enabled": true,
                              "schedule": ["before 9am on the first day of the month"]
                              }
                              }

                              Key features:

                              • Groups Django/Wagtail updates together
                              • Schedules updates for Monday mornings
                              • Auto-merges patch updates (e.g., 6.0.1 → 6.0.2)
                              • Monthly lock file refresh for transitive dependencies

                              Migration Path

                              Phase 1: Enable Renovatebot (current workflow)

                              1. Install Mend Renovate GitHub App
                              2. Configure for pip-compile workflow
                              3. Merge onboarding PR
                              4. Monitor and tune configuration

                              Phase 2 (Future): Migrate to pyproject.toml + uv.lock

                              When ready to use Heroku's native uv support:

                              1. Migrate to pyproject.toml + uv.lock
                              2. Update Renovatebot config to use PEP 621 manager
                              3. Remove pip-compile configuration
                              4. Benefit from Heroku's faster uv deployments

                              Comparison with Manual Workflow

                              AspectManual (task dependencies:upgrade)Renovatebot
                              FrequencyWhen we rememberAutomated schedule
                              Security alertsManual monitoringAutomated PRs
                              GranularityAll-or-nothingPer-package or grouped
                              Test before mergeManualCI runs automatically
                              Time investment~30min monthly~5min to review PRs

                              Next Steps

                              • Community feedback on this proposal
                              • Install Mend Renovate GitHub App: https://github.com/apps/renovate
                              • Create renovate.json with proposed configuration
                              • Merge onboarding PR
                              • Monitor first round of dependency update PRs
                              • Fine-tune configuration based on experience

                              References

                              Activity

                              Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

                              Metadata

                              Metadata

                              Assignees

                              No one assigned

                                Labels

                                Type

                                No type

                                Projects

                                No projects

                                  Milestone

                                  No milestone

                                  Relationships

                                  None yet

                                  Development

                                  No branches or pull requests

                                  Issue actions