Skip to content

[#72661] Consolidates Backlogs routes under /projects/:project_id/backlogs#22791

Merged
myabc merged 4 commits intodevfrom
code-maintenance/72661-consolidate-backlogs-routes
Apr 20, 2026
Merged

[#72661] Consolidates Backlogs routes under /projects/:project_id/backlogs#22791
myabc merged 4 commits intodevfrom
code-maintenance/72661-consolidate-backlogs-routes

Conversation

@myabc
Copy link
Copy Markdown
Contributor

@myabc myabc commented Apr 15, 2026

Ticket

https://community.openproject.org/wp/72661

What are you trying to accomplish?

Consolidates the Backlogs Rails edge under a Backlogs:: module namespace and a /projects/:project_id/backlogs/... URL prefix, and renames the legacy rb_* page controllers to conventional Rails names. The deeper OpenProject::Backlogs library internals (patches, API endpoints, hooks) are deliberately left untouched.

Controllers

Before After
RbMasterBacklogsController Backlogs::BacklogController
RbSprintsController Backlogs::SprintsController
RbStoriesController Backlogs::WorkPackagesController
RbTaskboardsController Backlogs::TaskboardController
RbBurndownChartsController Backlogs::BurndownChartController
InboxController Backlogs::InboxController

Routes

Before After
/projects/:project_id/backlogs /projects/:project_id/backlogs → redirects to /projects/:project_id/backlogs/backlog
/projects/:project_id/backlogs/backlog /projects/:project_id/backlogs/backlog
/projects/:project_id/backlogs/details/:work_package_id(/:tab) /projects/:project_id/backlogs/backlog/details/:work_package_id(/:tab)
/projects/:project_id/sprints{,/new_dialog,/refresh_form} /projects/:project_id/backlogs/sprints{,/new_dialog,/refresh_form}
/projects/:project_id/sprints/:id/{update_agile_sprint,start,finish,edit_dialog} /projects/:project_id/backlogs/sprints/:sprint_id{,/start,/finish,/edit_dialog}
/projects/:project_id/sprints/:sprint_id/stories/:id/{menu,move,reorder} /projects/:project_id/backlogs/sprints/:sprint_id/work_packages/:id/{menu,move,reorder}
/projects/:project_id/sprints/:sprint_id/{taskboard,burndown_chart} /projects/:project_id/backlogs/sprints/:sprint_id/{taskboard,burndown_chart}
/projects/:project_id/inbox/:id/{menu,move,reorder,move_to_sprint_dialog} /projects/:project_id/backlogs/inbox/:id/{menu,move,reorder,move_to_sprint_dialog}

Action names are unchanged unless explicitly renamed. The only controller action cleanup in this PR is update_agile_sprint becoming the conventional update on the sprint resource.

What approach did you choose and why?

This is a Rails-edge rename — controllers, views, routes, and their specs. Internal Turbo paths only, so no redirect shims are added for the old /sprints/... and /inbox/... URLs.

Additional follow-up polish landed alongside the rename:

  • Dropped a dead params[:id] fallback in Backlogs::SprintsController (the sprints resource declares param: :sprint_id, so only params[:sprint_id] ever reaches the controller).
  • Moved the rb_burndown_charts.* i18n keys under backlogs.burndown_chart.* in the source en.yml only; Crowdin locale files are regenerated and are not touched here.
  • Moved routing specs under spec/routing/backlogs/ and renamed them to match the new controllers.
  • Singularized Backlogs::BurndownChartController (separate commit). The URL segment is already singular, the sibling Backlogs::TaskboardController is singular, and the project_backlogs_sprint_burndown_chart_path helper name is unchanged — so no caller updates were needed.
  • Renames the controller-layer sprint item routes from stories to work_packages, while intentionally leaving Story model/service/component names untouched in this PR.

Merge checklist

  • Added/updated tests
  • Tested major browsers (Chrome, Firefox, Edge, ...)

@myabc myabc requested a review from Copilot April 15, 2026 23:00
@myabc myabc added DO NOT MERGE maintenance ruby Pull requests that update Ruby code labels Apr 15, 2026
@myabc myabc force-pushed the code-maintenance/72661-consolidate-backlogs-routes branch from 4e2c0b1 to c3b772b Compare April 15, 2026 23:01
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Consolidates the Backlogs engine routing and controller structure by introducing a /projects/:project_id/backlogs/... namespace, updating controllers/views accordingly, and adjusting specs/components to use the canonical route helpers.

Changes:

  • Introduce namespaced Backlogs page controllers (Backlogs::BacklogController, Backlogs::SprintsController, etc.) and update engine permissions/menu wiring.
  • Replace legacy Backlogs route usages with new canonical route helpers and add a redirect shim for /projects/:project_id/backlogs.
  • Update/extend routing, controller, request, view, component, and feature specs to match the new namespace and params (notably :sprint_id).

Reviewed changes

Copilot reviewed 39 out of 40 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
modules/backlogs/spec/views/backlogs/burndown_charts/show_spec.rb Update view spec to match new template path.
modules/backlogs/spec/support/pages/backlog.rb Update page object to use canonical backlog route and wait for Turbo frames.
modules/backlogs/spec/routing/rb_taskboards_routing_spec.rb Update routing expectations for namespaced taskboard route + named route assertion.
modules/backlogs/spec/routing/rb_sprints_routing_spec.rb Update sprints routing to /backlogs/sprints with :sprint_id param + named routes.
modules/backlogs/spec/routing/rb_master_backlogs_routing_spec.rb Update backlog routing to /backlogs/backlog + details under /backlog/details/... + named routes.
modules/backlogs/spec/routing/rb_burndown_charts_routing_spec.rb Update burndown chart routing + named route assertion.
modules/backlogs/spec/requests/backlogs/sprints_spec.rb Add request spec coverage for PUT update via :sprint_id in the new routes.
modules/backlogs/spec/requests/backlogs/burndown_charts_spec.rb Add request spec ensuring namespaced burndown template renders.
modules/backlogs/spec/requests/backlogs/backlog_spec.rb Update request specs to new backlog/show + details routes and templates.
modules/backlogs/spec/lib/open_project/backlogs/permissions_spec.rb Ensure permissions include the new controller/action identifiers.
modules/backlogs/spec/lib/open_project/backlogs/engine_spec.rb Verify project menu entries point to canonical backlog route.
modules/backlogs/spec/features/empty_backlogs_spec.rb Switch feature spec navigation to the Backlog page object.
modules/backlogs/spec/features/backlogs/create_spec.rb Update breadcrumb link expectation to canonical backlog route.
modules/backlogs/spec/controllers/backlogs/taskboard_controller_spec.rb Update controller spec class name and assert controller_path.
modules/backlogs/spec/controllers/backlogs/sprints_controller_spec.rb Update params and action names to update + :sprint_id usage and new redirect paths.
modules/backlogs/spec/controllers/backlogs/burndown_charts_controller_spec.rb Add controller spec for namespaced burndown controller runtime/template.
modules/backlogs/spec/controllers/backlogs/backlog_controller_spec.rb Add controller spec for namespaced backlog controller runtime/template/menu.
modules/backlogs/spec/components/backlogs/inbox_item_component_spec.rb Update split-view URL data attribute to new details route helper.
modules/backlogs/lib/open_project/backlogs/engine.rb Update permissions mapping and project menu URLs to new controllers/actions.
modules/backlogs/config/routes.rb Introduce namespaced Backlogs routes + legacy redirect shim for /projects/:project_id/backlogs.
modules/backlogs/app/views/backlogs/burndown_charts/show.html.erb Update taskboard link helper and partial path; adjust i18n calls.
modules/backlogs/app/views/backlogs/burndown_charts/_burndown.html.erb Add namespaced partial for burndown chart Angular component tag.
modules/backlogs/app/views/backlogs/backlog/show.html.erb Update Turbo frame src and breadcrumb/list URL to canonical backlog route.
modules/backlogs/app/views/backlogs/backlog/_backlog_list.html.erb Update “new sprint” dialog link to new namespaced route helper.
modules/backlogs/app/controllers/rb_sprints_controller.rb Remove legacy non-namespaced sprints controller implementation.
modules/backlogs/app/controllers/backlogs/taskboard_controller.rb Add namespaced taskboard controller redirecting to the board view.
modules/backlogs/app/controllers/backlogs/sprints_controller.rb Add namespaced sprints controller supporting dialog actions + create/update/start/finish.
modules/backlogs/app/controllers/backlogs/burndown_charts_controller.rb Add namespaced burndown charts controller rendering the namespaced template.
modules/backlogs/app/controllers/backlogs/backlog_controller.rb Add namespaced backlog controller handling Turbo frame list + split-view details.
modules/backlogs/app/components/backlogs/story_menu_list_component.html.erb Update “open details” link to canonical details route helper.
modules/backlogs/app/components/backlogs/sprint_page_header_component.rb Update breadcrumb Backlogs link to canonical backlog route helper.
modules/backlogs/app/components/backlogs/sprint_menu_component.html.erb Update edit dialog / taskboard / burndown chart route helpers.
modules/backlogs/app/components/backlogs/sprint_header_component.rb Update start/finish sprint action URLs to namespaced route helpers.
modules/backlogs/app/components/backlogs/sprint_component.rb Update story split-view URL data attribute to canonical details route helper.
modules/backlogs/app/components/backlogs/new_sprint_form_component.rb Update form and refresh URLs to namespaced sprints routes.
modules/backlogs/app/components/backlogs/inbox_menu_component.html.erb Update “open details” link to canonical details route helper.
modules/backlogs/app/components/backlogs/inbox_item_component.rb Update story split-view URL data attribute to canonical details route helper.
modules/backlogs/app/components/backlogs/inbox_component.html.erb Update “show more” link to canonical backlog route helper.
modules/backlogs/app/components/backlogs/finish_sprint_dialog_component.html.erb Update finish URL to namespaced finish route helper.
app/seeders/demo_data/references.rb Update demo data sprint link helper to namespaced taskboard route helper.
.codex/environments/environment.toml Add Codex environment configuration file.
.claude/launch.json Add launch configuration for common dev processes.
Comments suppressed due to low confidence (3)

modules/backlogs/app/views/backlogs/burndown_charts/show.html.erb:28

  • The ERB copyright header terminator is inconsistent with the other Backlogs views: this file now ends the header with +#%> (note the leading +). Other Backlogs templates use ++#%> (e.g., modules/backlogs/app/views/projects/settings/backlogs/show.html.erb:28). Please restore the standard ++#%> terminator here to avoid breaking tooling that relies on the conventional marker.
    modules/backlogs/app/views/backlogs/backlog/show.html.erb:28
  • The ERB copyright header terminator is inconsistent with other Backlogs templates: it currently ends with +#%> (leading +). Backlogs views conventionally use ++#%> (see modules/backlogs/app/views/projects/settings/backlogs/show.html.erb:28). Please change this terminator back to ++#%>.
    modules/backlogs/app/views/backlogs/backlog/_backlog_list.html.erb:28
  • The ERB copyright header terminator is +#%> (leading +), which deviates from the standard marker used elsewhere in Backlogs views (++#%>). Please restore the conventional ++#%> terminator to keep headers consistent and avoid issues with license/header parsing.

Comment thread modules/backlogs/config/routes.rb
@myabc myabc force-pushed the code-maintenance/73798-remove-scrum_projects-feature-flag branch 2 times, most recently from b24d229 to 712fdbc Compare April 17, 2026 09:17
@myabc myabc force-pushed the code-maintenance/72661-consolidate-backlogs-routes branch from c3b772b to 19c927a Compare April 17, 2026 11:39
@myabc myabc requested a review from Copilot April 17, 2026 11:43
@myabc myabc changed the title code maintenance/72661 consolidate backlogs routes [#72661] Consolidates Backlogs routes under /projects/:project_id/backlogs Apr 17, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR consolidates the Backlogs Rails “edge” (routes/controllers/views/specs) under a Backlogs:: namespace and moves all backlogs URLs under /projects/:project_id/backlogs/..., while keeping the internal OpenProject::Backlogs library/API/hooks unchanged.

Changes:

  • Renames legacy rb_*/InboxController page controllers to namespaced Backlogs::*Controller and updates permissions/menu wiring accordingly.
  • Reworks Backlogs routes to live under /projects/:project_id/backlogs/... (including a redirect from /projects/:project_id/backlogs/backlogs/backlog) and updates route helpers across views/components/specs.
  • Updates i18n keys for the burndown chart, and adds/relocates routing/controller/request specs to cover the new endpoints.

Reviewed changes

Copilot reviewed 55 out of 56 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
modules/backlogs/spec/views/backlogs/burndown_chart/show_spec.rb Update view spec template name and i18n key for burndown chart blankslate.
modules/backlogs/spec/support/pages/backlog.rb Update page object paths and add page readiness waits for turbo-frame-based planning page.
modules/backlogs/spec/routing/backlogs/taskboard_routing_spec.rb Update routing spec for namespaced taskboard route + add named route expectation.
modules/backlogs/spec/routing/backlogs/stories_routing_spec.rb Update routing specs for stories menu/move/reorder under new URL prefix/controller.
modules/backlogs/spec/routing/backlogs/sprints_routing_spec.rb Update sprint routing specs for new backlogs-prefixed routes and sprint_id param.
modules/backlogs/spec/routing/backlogs/inbox_routing_spec.rb Update inbox routing specs for new backlogs-prefixed routes/controller.
modules/backlogs/spec/routing/backlogs/burndown_chart_routing_spec.rb Update burndown chart routing spec for new URL/controller + named helper.
modules/backlogs/spec/routing/backlogs/backlog_routing_spec.rb Update backlog routing spec for show/details and add named helper expectations.
modules/backlogs/spec/requests/backlogs/sprints_spec.rb Add request spec validating PUT /backlogs/sprints/:sprint_id updates via sprint_id.
modules/backlogs/spec/requests/backlogs/burndown_chart_spec.rb Add request spec ensuring burndown chart renders under namespaced template.
modules/backlogs/spec/requests/backlogs/backlog_spec.rb Update request spec paths/templates for new backlog show/details routes.
modules/backlogs/spec/lib/open_project/backlogs/permissions_spec.rb Assert permissions reference the new namespaced controller action strings.
modules/backlogs/spec/lib/open_project/backlogs/engine_spec.rb Assert project menu entries point at the canonical namespaced backlog route.
modules/backlogs/spec/features/empty_backlogs_spec.rb Update feature spec to use the Backlog page object and new route.
modules/backlogs/spec/features/backlogs/create_spec.rb Update breadcrumb link expectation to new backlog route helper.
modules/backlogs/spec/controllers/backlogs/taskboard_controller_spec.rb Update controller spec to namespaced controller and validate controller_path.
modules/backlogs/spec/controllers/backlogs/stories_controller_spec.rb Update controller spec to namespaced stories controller.
modules/backlogs/spec/controllers/backlogs/sprints_controller_spec.rb Update controller spec to namespaced sprints controller and sprint_id param usage.
modules/backlogs/spec/controllers/backlogs/inbox_controller_spec.rb Update controller spec to namespaced inbox controller.
modules/backlogs/spec/controllers/backlogs/burndown_chart_controller_spec.rb Add controller spec for namespaced burndown chart controller rendering/runtime.
modules/backlogs/spec/controllers/backlogs/backlog_controller_spec.rb Add controller spec for namespaced backlog controller rendering/menu selection.
modules/backlogs/spec/components/backlogs/sprint_component_spec.rb Update expected drop URL helper for story move endpoint under new prefix.
modules/backlogs/spec/components/backlogs/move_to_sprint_dialog_component_spec.rb Update move path helper for inbox move under new prefix.
modules/backlogs/spec/components/backlogs/inbox_item_component_spec.rb Update split-view details URL helper for inbox items.
modules/backlogs/lib/open_project/backlogs/engine.rb Update permission mappings and project menu URLs to new namespaced controllers/actions.
modules/backlogs/config/routes.rb Introduce new backlogs-prefixed route structure and redirect from /backlogs to /backlogs/backlog.
modules/backlogs/config/locales/en.yml Move burndown chart i18n keys to backlogs.burndown_chart.*.
modules/backlogs/app/views/backlogs/burndown_chart/show.html.erb Update links, partial render path, and i18n lookups for namespaced burndown chart view.
modules/backlogs/app/views/backlogs/burndown_chart/_burndown.html.erb Add namespaced burndown chart partial for Angular chart rendering.
modules/backlogs/app/views/backlogs/backlog/show.html.erb Update route helpers and turbo-frame URLs for canonical backlog show route.
modules/backlogs/app/views/backlogs/backlog/_backlog_list.html.erb Update sprint creation dialog path helper to backlogs-prefixed sprints endpoint.
modules/backlogs/app/controllers/rb_stories_controller.rb Remove legacy RbStoriesController.
modules/backlogs/app/controllers/rb_sprints_controller.rb Remove legacy RbSprintsController.
modules/backlogs/app/controllers/inbox_controller.rb Remove legacy InboxController.
modules/backlogs/app/controllers/backlogs/taskboard_controller.rb Add namespaced taskboard controller redirecting to the project’s task board.
modules/backlogs/app/controllers/backlogs/stories_controller.rb Add namespaced stories controller handling menu/move/reorder via turbo streams.
modules/backlogs/app/controllers/backlogs/sprints_controller.rb Add namespaced sprints controller for dialogs/create/update/start/finish under new routing.
modules/backlogs/app/controllers/backlogs/inbox_controller.rb Add namespaced inbox controller handling menu/move/reorder/dialog via turbo streams.
modules/backlogs/app/controllers/backlogs/burndown_chart_controller.rb Add namespaced burndown chart controller rendering the updated template.
modules/backlogs/app/controllers/backlogs/backlog_controller.rb Add namespaced backlog controller with turbo-frame split rendering and details support.
modules/backlogs/app/components/backlogs/story_menu_list_component.rb Update documentation/comment and reorder URL helper for namespaced stories routes.
modules/backlogs/app/components/backlogs/story_menu_list_component.html.erb Update details link helper to new backlog details route.
modules/backlogs/app/components/backlogs/story_component.rb Update deferred menu src helper to new namespaced stories menu route.
modules/backlogs/app/components/backlogs/sprint_page_header_component.rb Update breadcrumb link helper to canonical backlog route.
modules/backlogs/app/components/backlogs/sprint_menu_component.html.erb Update sprint menu action links to new backlogs-prefixed routes.
modules/backlogs/app/components/backlogs/sprint_header_component.rb Update start/finish button URLs to new backlogs-prefixed sprint routes.
modules/backlogs/app/components/backlogs/sprint_component.rb Update split-view/details and move/drop URLs to new backlogs-prefixed routes.
modules/backlogs/app/components/backlogs/new_sprint_form_component.rb Update create/update/refresh URLs to new backlogs-prefixed sprints routes.
modules/backlogs/app/components/backlogs/move_to_sprint_dialog_component.html.erb Update inbox move form action URL to backlogs-prefixed inbox route.
modules/backlogs/app/components/backlogs/inbox_menu_component.rb Update documentation/comment and reorder URL helper to namespaced inbox route.
modules/backlogs/app/components/backlogs/inbox_menu_component.html.erb Update details and dialog links to new backlogs-prefixed inbox/backlog routes.
modules/backlogs/app/components/backlogs/inbox_item_component.rb Update drop/move URL and split-view details URL to new backlogs-prefixed routes.
modules/backlogs/app/components/backlogs/inbox_item_component.html.erb Update deferred menu src to new namespaced inbox menu route.
modules/backlogs/app/components/backlogs/inbox_component.html.erb Update “show more” link to canonical backlog route helper.
modules/backlogs/app/components/backlogs/finish_sprint_dialog_component.html.erb Update finish sprint form action URL to new backlogs-prefixed sprint finish route.
app/seeders/demo_data/references.rb Update demo data sprint taskboard link helper to new backlogs-prefixed route.
Comments suppressed due to low confidence (3)

modules/backlogs/app/views/backlogs/backlog/show.html.erb:27

  • The copyright header terminator line uses +#%> here, while other ERB templates in this module use the standard ++#%> marker (e.g., modules/backlogs/app/views/projects/settings/backlogs/show.html.erb:28). To keep tooling/headers consistent, please change this terminator to ++#%>.
    modules/backlogs/app/views/backlogs/backlog/_backlog_list.html.erb:27
  • The copyright header terminator line uses +#%> here, while other ERB templates in this module use the standard ++#%> marker (e.g., modules/backlogs/app/views/projects/settings/backlogs/show.html.erb:28). To keep tooling/headers consistent, please change this terminator to ++#%>.
    modules/backlogs/app/views/backlogs/burndown_chart/show.html.erb:27
  • The copyright header terminator line uses +#%> here, while other ERB templates in this module use the standard ++#%> marker (e.g., modules/backlogs/app/views/projects/settings/backlogs/show.html.erb:28). To keep tooling/headers consistent, please change this terminator to ++#%>.

Comment thread modules/backlogs/config/routes.rb Outdated
@myabc myabc force-pushed the code-maintenance/72661-consolidate-backlogs-routes branch 3 times, most recently from f036150 to d60fa1e Compare April 17, 2026 12:26
@myabc myabc marked this pull request as ready for review April 17, 2026 12:29
@myabc myabc force-pushed the code-maintenance/72661-consolidate-backlogs-routes branch from d60fa1e to b525f14 Compare April 17, 2026 13:00
@myabc myabc force-pushed the code-maintenance/72661-consolidate-backlogs-routes branch from b525f14 to 3a23035 Compare April 18, 2026 10:44
@myabc myabc requested a review from Copilot April 18, 2026 10:44
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR consolidates the Backlogs Rails “edge” into a Backlogs:: controller namespace and moves all Backlogs-related URLs under /projects/:project_id/backlogs/..., updating views/components/seed references and aligning specs with the new routing structure.

Changes:

  • Introduces namespaced Backlogs controllers (Backlog, Sprints, Stories, Inbox, Taskboard, BurndownChart) and updates the Backlogs engine permission mappings/menu URLs accordingly.
  • Reworks Backlogs routes to live under /projects/:project_id/backlogs/..., including a redirect from /projects/:project_id/backlogs to /projects/:project_id/backlogs/backlog.
  • Updates Backlogs views/components/i18n keys and expands routing/request/controller/spec coverage to match the new canonical paths.

Reviewed changes

Copilot reviewed 57 out of 58 changed files in this pull request and generated no comments.

Show a summary per file
File Description
spec/seeders/demo_data/work_package_seeder_spec.rb Updates seeded sprint/taskboard link to the new /backlogs/sprints/... path.
spec/seeders/demo_data/project_seeder_spec.rb Updates seeded wiki link to the new taskboard URL under /backlogs/sprints/....
modules/backlogs/spec/views/backlogs/burndown_chart/show_spec.rb Updates view spec description and i18n lookup key for burndown chart blankslate.
modules/backlogs/spec/support/pages/backlog.rb Updates page object paths and adds extra “page ready” waits for Turbo frames.
modules/backlogs/spec/routing/backlogs/taskboard_routing_spec.rb Updates taskboard routing and adds named route assertions for the new URL prefix.
modules/backlogs/spec/routing/backlogs/stories_routing_spec.rb Updates stories routing specs to the new /backlogs/sprints/:sprint_id/... path.
modules/backlogs/spec/routing/backlogs/sprints_routing_spec.rb Updates sprints routes (incl. update via PUT/PATCH on resource) and adds named route assertions.
modules/backlogs/spec/routing/backlogs/inbox_routing_spec.rb Updates inbox routing specs to /backlogs/inbox/....
modules/backlogs/spec/routing/backlogs/burndown_chart_routing_spec.rb Updates burndown chart routing and adds named route assertions.
modules/backlogs/spec/routing/backlogs/backlog_routing_spec.rb Updates backlog routing to /backlogs/backlog + adds named route assertions (and removes legacy index routing expectations).
modules/backlogs/spec/requests/backlogs/sprints_spec.rb Adds request coverage for the namespaced sprint update endpoint using sprint_id.
modules/backlogs/spec/requests/backlogs/burndown_chart_spec.rb Adds request coverage to ensure burndown chart renders the namespaced template.
modules/backlogs/spec/requests/backlogs/backlog_spec.rb Updates request specs to use new backlog and details routes + template names.
modules/backlogs/spec/lib/open_project/backlogs/permissions_spec.rb Verifies permissions include new namespaced controller actions and exclude removed ones.
modules/backlogs/spec/lib/open_project/backlogs/engine_spec.rb Verifies project menu entries point to the new canonical backlog route.
modules/backlogs/spec/features/empty_backlogs_spec.rb Updates feature spec to use the Backlog page object for navigation.
modules/backlogs/spec/features/backlogs/create_spec.rb Updates breadcrumb expectation to the new backlog route helper.
modules/backlogs/spec/controllers/backlogs/taskboard_controller_spec.rb Renames controller under Backlogs:: and asserts controller path.
modules/backlogs/spec/controllers/backlogs/stories_controller_spec.rb Renames stories controller spec to Backlogs::StoriesController.
modules/backlogs/spec/controllers/backlogs/sprints_controller_spec.rb Updates controller spec to use sprint_id and update action + new redirect targets.
modules/backlogs/spec/controllers/backlogs/inbox_controller_spec.rb Renames inbox controller spec to Backlogs::InboxController.
modules/backlogs/spec/controllers/backlogs/burndown_chart_controller_spec.rb Adds controller spec coverage for the namespaced burndown chart controller.
modules/backlogs/spec/controllers/backlogs/backlog_controller_spec.rb Adds controller spec coverage for the namespaced backlog controller and menu item selection.
modules/backlogs/spec/components/backlogs/sprint_component_spec.rb Updates drop URL expectation to the new stories move route helper.
modules/backlogs/spec/components/backlogs/move_to_sprint_dialog_component_spec.rb Updates move path helper to new namespaced inbox route.
modules/backlogs/spec/components/backlogs/inbox_item_component_spec.rb Updates split-view URL expectation to the new backlog details helper.
modules/backlogs/lib/open_project/backlogs/engine.rb Updates permission controller/action mappings and project menu URLs to namespaced controllers.
modules/backlogs/config/routes.rb Moves Backlogs routes under /projects/:project_id/backlogs/... and adds redirect for the legacy entrypoint.
modules/backlogs/config/locales/en.yml Moves burndown chart blankslate translations under backlogs.burndown_chart.*.
modules/backlogs/app/views/backlogs/burndown_chart/show.html.erb Updates taskboard link to the new helper under /backlogs/sprints/:sprint_id/taskboard.
modules/backlogs/app/views/backlogs/burndown_chart/_burndown.html.erb Adds (namespaced) burndown chart partial for the Angular component.
modules/backlogs/app/views/backlogs/backlog/show.html.erb Updates split-view/backlog list URLs and breadcrumbs to new canonical route helpers.
modules/backlogs/app/views/backlogs/backlog/_backlog_list.html.erb Updates “new sprint” dialog links to the new /backlogs/sprints/... helpers.
modules/backlogs/app/controllers/rb_stories_controller.rb Removes legacy RbStoriesController in favor of namespaced controller.
modules/backlogs/app/controllers/rb_sprints_controller.rb Removes legacy RbSprintsController in favor of namespaced controller.
modules/backlogs/app/controllers/inbox_controller.rb Removes legacy InboxController in favor of namespaced controller.
modules/backlogs/app/controllers/backlogs/taskboard_controller.rb Introduces Backlogs::TaskboardController (redirects to board view).
modules/backlogs/app/controllers/backlogs/stories_controller.rb Introduces Backlogs::StoriesController (menu/move/reorder) under namespaced routing.
modules/backlogs/app/controllers/backlogs/sprints_controller.rb Introduces Backlogs::SprintsController and collapses bespoke update action into update.
modules/backlogs/app/controllers/backlogs/inbox_controller.rb Introduces Backlogs::InboxController under namespaced routing.
modules/backlogs/app/controllers/backlogs/burndown_chart_controller.rb Introduces Backlogs::BurndownChartController under namespaced routing.
modules/backlogs/app/controllers/backlogs/backlog_controller.rb Introduces Backlogs::BacklogController (show/details) to replace legacy naming.
modules/backlogs/app/components/backlogs/story_menu_list_component.rb Updates reorder URL helper and references namespaced controller in comment.
modules/backlogs/app/components/backlogs/story_menu_list_component.html.erb Updates details (split view) URL helper to new backlog details route.
modules/backlogs/app/components/backlogs/story_component.rb Updates deferred menu src to the new namespaced stories menu route.
modules/backlogs/app/components/backlogs/sprint_page_header_component.rb Updates breadcrumb “Backlogs” link to the new canonical backlog route.
modules/backlogs/app/components/backlogs/sprint_menu_component.html.erb Updates sprint menu links (edit dialog/taskboard/burndown chart) to new helpers.
modules/backlogs/app/components/backlogs/sprint_header_component.rb Updates start/finish sprint links to new namespaced sprint routes.
modules/backlogs/app/components/backlogs/sprint_component.rb Updates story split URL and move/drop URL helpers to the new namespaced routes.
modules/backlogs/app/components/backlogs/new_sprint_form_component.rb Updates form submit/refresh URLs to the new namespaced sprints routes.
modules/backlogs/app/components/backlogs/move_to_sprint_dialog_component.html.erb Updates inbox move form URL to the new namespaced inbox route.
modules/backlogs/app/components/backlogs/inbox_menu_component.rb Updates reorder URL helper and references namespaced controller in comment.
modules/backlogs/app/components/backlogs/inbox_menu_component.html.erb Updates inbox details/move-to-sprint dialog links to new namespaced helpers.
modules/backlogs/app/components/backlogs/inbox_item_component.rb Updates inbox move/drop + split-view URL helpers to new namespaced routes.
modules/backlogs/app/components/backlogs/inbox_item_component.html.erb Updates deferred menu src to new namespaced inbox menu route.
modules/backlogs/app/components/backlogs/inbox_component.html.erb Updates “show more” backlog link to the new canonical backlog route.
modules/backlogs/app/components/backlogs/finish_sprint_dialog_component.html.erb Updates finish sprint form URL to the new namespaced sprint route.
app/seeders/demo_data/references.rb Updates demo “sprint link” URL helper and inline docs to new canonical path.
Comments suppressed due to low confidence (1)

modules/backlogs/app/controllers/backlogs/burndown_chart_controller.rb:34

  • Backlogs::BurndownChartController no longer sets a menu_item, so the project menu highlighting may be lost when viewing the burndown chart. Consider adding menu_item :backlogs (consistent with Backlogs::TaskboardController) to keep the Backlogs menu entry active on this page.

Base automatically changed from code-maintenance/73798-remove-scrum_projects-feature-flag to dev April 20, 2026 08:42
block: true,
align_content: :start,
underline: true,
href: backlog_backlogs_project_backlogs_path(project, all: 1)
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

@EinLama I'm pleased to say that we've got rid of:

backlog_backlogs_project_backlogs_path

Comment on lines +340 to +343
expect(page).to have_css("turbo-frame#backlogs_container", wait: 10)
expect(page).to have_css("#owner_backlogs_container", wait: 10)
expect(page).to have_css("#sprint_backlogs_container", wait: 10)
wait_for_network_idle
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I don't really like this hack

@myabc myabc added this to the 17.4.x milestone Apr 20, 2026
@myabc myabc force-pushed the code-maintenance/72661-consolidate-backlogs-routes branch 2 times, most recently from 4436dc7 to d02622e Compare April 20, 2026 13:58
myabc added 3 commits April 20, 2026 15:04
Move the Rails-facing Backlogs page and sprint endpoints under the
Backlogs namespace and standardize their route helpers.

This renames the legacy `rb_*` page controllers, moves the canonical
backlog details route under `/backlogs/backlog`, and updates the touched
sprint endpoints to use more conventional controller/action naming.

It leaves the deeper `OpenProject::Backlogs` library internals (patches,
API endpoints, hooks) untouched so this stays a Rails-edge rename.

https://community.openproject.org/wp/72661
Renames the namespaced controller, view directory, and spec files to
use the singular `burndown_chart` form, matching the singular URL
segment (`sprints/:sprint_id/burndown_chart`) and the sibling
`Backlogs::TaskboardController`.

The named route helper `project_backlogs_sprint_burndown_chart_path`
is unchanged, so no caller updates are required.

https://community.openproject.org/wp/72661
Renames the Rails controller layer from stories to work packages.

This updates the sprint item routes, permission mapping, and the touched
component and spec helper calls without renaming the underlying Story
model or service layer.
@myabc myabc force-pushed the code-maintenance/72661-consolidate-backlogs-routes branch from d02622e to bb79537 Compare April 20, 2026 14:04
@myabc myabc requested review from Copilot and ulferts April 20, 2026 14:09
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR restructures the Backlogs “Rails edge” by moving page controllers into a Backlogs:: namespace and consolidating URLs under /projects/:project_id/backlogs/..., while keeping deeper OpenProject::Backlogs internals unchanged.

Changes:

  • Replaces legacy rb_*/InboxController page controllers with namespaced Backlogs::* controllers and updates permissions/menu wiring accordingly.
  • Reworks Backlogs routes to live under /projects/:project_id/backlogs, including a redirect from /projects/:project_id/backlogs/projects/:project_id/backlogs/backlog.
  • Updates specs, components, views, and demo-data link generation to use the new path helpers and i18n keys.

Reviewed changes

Copilot reviewed 57 out of 58 changed files in this pull request and generated no comments.

Show a summary per file
File Description
spec/seeders/demo_data/work_package_seeder_spec.rb Updates expected sprint taskboard link to the new /backlogs/sprints/... route.
spec/seeders/demo_data/project_seeder_spec.rb Updates expected wiki link expansion to the new Backlogs sprint taskboard route.
app/seeders/demo_data/references.rb Updates sprint reference expansion helper to project_backlogs_sprint_taskboard_path.
modules/backlogs/config/routes.rb Consolidates Backlogs routing under /projects/:project_id/backlogs, adds redirect for /backlogs/backlogs/backlog, and renames nested resources/segments.
modules/backlogs/lib/open_project/backlogs/engine.rb Updates permission mappings and project menu entries to point at the new namespaced controllers/actions.
modules/backlogs/config/locales/en.yml Moves burndown blankslate strings under backlogs.burndown_chart.show.*.
modules/backlogs/app/controllers/rb_stories_controller.rb Removes legacy controller (replaced by Backlogs::WorkPackagesController).
modules/backlogs/app/controllers/rb_sprints_controller.rb Removes legacy controller (replaced by Backlogs::SprintsController).
modules/backlogs/app/controllers/inbox_controller.rb Removes legacy controller (replaced by Backlogs::InboxController).
modules/backlogs/app/controllers/backlogs/backlog_controller.rb Adds namespaced backlog page controller and updates split-view base route helper.
modules/backlogs/app/controllers/backlogs/sprints_controller.rb Adds namespaced sprints controller and switches the legacy update_agile_sprint action to a conventional update.
modules/backlogs/app/controllers/backlogs/work_packages_controller.rb Adds namespaced controller for sprint “story” item interactions under work_packages.
modules/backlogs/app/controllers/backlogs/taskboard_controller.rb Adds namespaced taskboard controller routing to the work package board.
modules/backlogs/app/controllers/backlogs/burndown_chart_controller.rb Adds namespaced burndown chart controller and renders the new namespaced template path.
modules/backlogs/app/controllers/backlogs/inbox_controller.rb Adds namespaced inbox controller for backlog inbox interactions.
modules/backlogs/app/views/backlogs/backlog/show.html.erb Updates controller data attributes and breadcrumbs to use new backlog route helpers.
modules/backlogs/app/views/backlogs/backlog/_backlog_list.html.erb Updates “new sprint” dialog links to new Backlogs sprints collection routes.
modules/backlogs/app/views/backlogs/burndown_chart/show.html.erb Updates taskboard link helper and renders new burndown partial.
modules/backlogs/app/views/backlogs/burndown_chart/_burndown.html.erb Introduces a dedicated partial for the Angular burndown chart component rendering.
modules/backlogs/app/components/backlogs/story_menu_list_component.rb Updates reorder link to the new work_packages sprint item route helper.
modules/backlogs/app/components/backlogs/story_menu_list_component.html.erb Updates split-view details link helper to new backlog details route.
modules/backlogs/app/components/backlogs/story_component.rb Updates deferred menu src to new work_packages#menu route.
modules/backlogs/app/components/backlogs/sprint_page_header_component.rb Updates breadcrumb backlog link helper.
modules/backlogs/app/components/backlogs/sprint_menu_component.html.erb Updates sprint menu links to new Backlogs routes (edit dialog, taskboard, burndown chart).
modules/backlogs/app/components/backlogs/sprint_header_component.rb Updates start/finish URLs to new Backlogs sprint member routes.
modules/backlogs/app/components/backlogs/sprint_component.rb Updates split-view and drag/drop URLs for sprint items to new route helpers.
modules/backlogs/app/components/backlogs/new_sprint_form_component.rb Updates create/update/refresh URLs to new Backlogs sprints routes.
modules/backlogs/app/components/backlogs/move_to_sprint_dialog_component.html.erb Updates move form action to new Backlogs inbox move route.
modules/backlogs/app/components/backlogs/inbox_menu_component.rb Updates reorder link helper to new Backlogs inbox reorder route.
modules/backlogs/app/components/backlogs/inbox_menu_component.html.erb Updates split-view and move-to-sprint-dialog link helpers to new Backlogs routes.
modules/backlogs/app/components/backlogs/inbox_item_component.rb Updates drop URL and split-view URL to new Backlogs inbox/backlog details routes.
modules/backlogs/app/components/backlogs/inbox_item_component.html.erb Updates deferred menu src to new Backlogs inbox menu route.
modules/backlogs/app/components/backlogs/inbox_component.html.erb Updates “show more” link to new backlog route helper.
modules/backlogs/app/components/backlogs/finish_sprint_dialog_component.html.erb Updates finish sprint form action to new Backlogs finish route.
modules/backlogs/spec/views/backlogs/burndown_chart/show_spec.rb Updates view spec to the new template path and i18n key.
modules/backlogs/spec/support/pages/backlog.rb Updates page object navigation to the new backlog route and adds load/wait synchronization in visit!.
modules/backlogs/spec/routing/backlogs/backlog_routing_spec.rb Updates routing expectations to new controller/actions and adds named-route assertions.
modules/backlogs/spec/routing/backlogs/sprints_routing_spec.rb Updates sprint routing expectations (including update replacing update_agile_sprint) and adds named-route assertions.
modules/backlogs/spec/routing/backlogs/work_packages_routing_spec.rb Updates sprint item routes from stories to work_packages under the new /backlogs prefix.
modules/backlogs/spec/routing/backlogs/inbox_routing_spec.rb Updates inbox routes under /backlogs/inbox/... and the namespaced controller path.
modules/backlogs/spec/routing/backlogs/taskboard_routing_spec.rb Updates taskboard route/controller mapping and adds named-route assertion.
modules/backlogs/spec/routing/backlogs/burndown_chart_routing_spec.rb Updates burndown chart route/controller mapping and adds named-route assertion.
modules/backlogs/spec/requests/backlogs/backlog_spec.rb Updates request specs for new template/partial paths and new details URL prefix.
modules/backlogs/spec/requests/backlogs/sprints_spec.rb Adds request coverage for PUT /backlogs/sprints/:sprint_id hitting #update.
modules/backlogs/spec/requests/backlogs/burndown_chart_spec.rb Adds request coverage for GET burndown chart rendering the namespaced template.
modules/backlogs/spec/lib/open_project/backlogs/permissions_spec.rb Extends permission expectations to include new namespaced controller actions.
modules/backlogs/spec/lib/open_project/backlogs/engine_spec.rb Verifies project menu items point to the new canonical backlog controller/action.
modules/backlogs/spec/features/empty_backlogs_spec.rb Switches feature navigation to the updated backlog page object/route.
modules/backlogs/spec/features/backlogs/create_spec.rb Updates breadcrumbs expectation to the new backlog route helper.
modules/backlogs/spec/controllers/backlogs/backlog_controller_spec.rb Adds controller spec for namespaced backlog #show.
modules/backlogs/spec/controllers/backlogs/burndown_chart_controller_spec.rb Adds controller spec for namespaced burndown chart #show.
modules/backlogs/spec/controllers/backlogs/sprints_controller_spec.rb Updates controller specs for sprint_id param usage and #update action rename.
modules/backlogs/spec/controllers/backlogs/taskboard_controller_spec.rb Updates controller spec to reference namespaced controller and asserts controller path.
modules/backlogs/spec/controllers/backlogs/work_packages_controller_spec.rb Updates controller spec to reference namespaced Backlogs::WorkPackagesController.
modules/backlogs/spec/controllers/backlogs/inbox_controller_spec.rb Updates controller spec to reference namespaced Backlogs::InboxController.
modules/backlogs/spec/components/backlogs/sprint_component_spec.rb Updates expected drag/drop move URL helper to the new work_packages route.
modules/backlogs/spec/components/backlogs/move_to_sprint_dialog_component_spec.rb Updates expected move path helper to new Backlogs inbox move route.
modules/backlogs/spec/components/backlogs/inbox_item_component_spec.rb Updates expected split-view URL helper to new backlog details route.

Copy link
Copy Markdown
Contributor

@ulferts ulferts left a comment

Choose a reason for hiding this comment

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

I only have a single comment about having redirects for taskboard and burndown routes. Other than that, good to merge.

end

get "taskboard", to: "taskboard#show", as: :sprint_taskboard
get "burndown_chart", to: "burndown_chart#show", as: :sprint_burndown_chart
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The fact that a number of endpoints change their URL (containing backlogs now) is uncritical for most of them since they are not actually user facing. But I would keep a redirect for taskboard and burndown_chart as those might be stored outside of the application. We could then remove them with the next major version as the value of those links will decline with time.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

@ulferts If I recall correctly, then these routes had the /backlogs path segment prior to prior to 17.3. However we can still add a redirect with a note to remove in version 18.0.

Add routing-level redirects for the sprint taskboard and
burndown chart paths introduced in version 17.3.

Keep them as temporary compatibility shims and mark them for
removal in OpenProject 18.
@myabc myabc merged commit 7a117d0 into dev Apr 20, 2026
17 of 18 checks passed
@myabc myabc deleted the code-maintenance/72661-consolidate-backlogs-routes branch April 20, 2026 15:48
@github-actions github-actions Bot locked and limited conversation to collaborators Apr 20, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

maintenance ruby Pull requests that update Ruby code

Development

Successfully merging this pull request may close these issues.

3 participants