Problem
When a recipe source (e.g. a custom recipe catalog) lists recipes, opening the catalog can return an empty list / HTTP 500 with no indication why. A single applied recipe whose shipped config has diverged from active config is enough to take down the *whole* listing - you end up with a blank page.
Root cause, generated with AI-help: `Normalizer::getActivationInfo()` calls `$activator->getTasks()` (and `getInstructions()`) without catching exceptions. For an Active recipe, `RecipeActivator::getTasks()` calls `Recipe::createFromDirectory()`, which instantiates core's `ConfigConfigurator` and throws `RecipePreExistingConfigException` whenever the recipe's shipped config no longer matches the live config.
Core throwing here is reasonable: `createFromDirectory()` is strict by design (see core #3570467, #3446329). The bug is that Project Browser lets that throw propagate and blank the catalog instead of degrading the one affected project.
Proposed resolution
Catch the exception, log a warning, but render the rest of the list.
Issue fork project_browser-3592067
Show commands
Start within a Git clone of the project using the version control instructions.
Or, if you do not have SSH keys set up on git.drupalcode.org:
Comments
Comment #3
fagoAttached a fix with a test.
Comment #4
fagogreen and working now.
Comment #5
vidit.anjaria commentedComment #6
tormiReviewing
Comment #7
tormiI tested this on the issue branch in DDEV and can confirm the fix.
Reproduction steps used:
1. Applied recipes:
- ddev dr recipe core/recipes/article_content_type -y
- ddev dr recipe core/recipes/article_comment -y
2. Changed active config to diverge from shipped recipe config:
- Edited Article content type field label from Body to Description at
/admin/structure/types/manage/article/fields
Observed result with this patch: Project Browser recipe catalog still loads (no blank page, no HTTP 500).
Comment #8
vidit.anjaria commentedComment #10
chrisfromredfinMerged to 2.1.x.
Cannot cherry-pick to 2.0.x due to merge conflict in src/Activator/RecipeActivator.php
Please open backport branch to 2.0.x!