Conversation
…lugin pages Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… titles to eliminate 8,200+ sidebar 301s The /plugins/arborescence API and /plugins/subgroups API can return different `title` values for the same subgroup. Both PluginSidebar.vue (subGroupHref) and PluginElements.vue (getElementHref) build URLs using slugify(subGroupName(plugin)), which reads plugin.title. When the arborescence title differs from the allPlugins title, the sidebar generates non-canonical slugs (e.g. "slack-chats" instead of "chat"), causing every link to trigger a 301 redirect. Fix: before passing arborescencePlugins to the sidebar, replace each subgroup's title with the canonical title from allPlugins (the same source used by generateNavigation.ts and the route validation guard). allPlugins remains the single source of truth for URL slug generation. Closes #4576 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This was referenced Apr 13, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
PluginSidebar.vueandPluginElements.vuebuild subgroup URLs fromarborescencePlugins[i].title(via/plugins/arborescenceAPI). The canonical URL validation in[...slug].astrousesallPlugins[i].title(via/plugins/subgroupsAPI). When these two APIs return different titles for the same subgroup, the sidebar generates non-canonical slugs → 301 redirects on every plugin page.buildPluginPageProps.ts, overwrite each arborescence subgroup'stitlewith the canonical title fromallPluginsbefore the sidebar consumes it.allPluginsis already the source of truth forgenerateNavigation.tsand the route guard — this simply ensures the sidebar uses the same data.Changed file
src/utils/plugins/buildPluginPageProps.ts— 16 lines added, 1 changedTest plan
/plugins/plugin-slack/chat/io.kestra.plugin.slack.chat.ChatMessage) and inspect all sidebar<a href>values — none should match an old-style slug (e.g.slack-chats,docker-task-runner,cosmos-db,aws-cli,gcp-cli)titleis used for the URL slug, not the display label shown to users — both APIs should agree on display names too)Closes #4576
🤖 Generated with Claude Code