Skip to content

[DREAM-803] Migrate wiki, OAuth and project settings lists to BorderBoxList - #24645

Merged
myabc merged 9 commits into
implementation/DREAM-802-admin-list-migrationsfrom
implementation/DREAM-803-project-core-list-migrations
Aug 12, 2026
Merged

[DREAM-803] Migrate wiki, OAuth and project settings lists to BorderBoxList#24645
myabc merged 9 commits into
implementation/DREAM-802-admin-list-migrationsfrom
implementation/DREAM-803-project-core-list-migrations

Conversation

@myabc

@myabc myabc commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

Ticket

https://community.openproject.org/wp/DREAM-803

What are you trying to accomplish?

Third slice of the DREAM-697 split: mechanical consumer migrations from Primer::Beta::BorderBox / border_box_container to OpenProject::Common::BorderBoxListComponent, one commit per surface.

  • Wikis::CollapsiblePageLinksComponent and Wikis::RelationPageLinksComponent
  • Portfolios::IndexComponent
  • OAuth::Applications::IndexComponent
  • Projects::Settings::LifeCycle::IndexComponent
  • Projects::Settings::ProjectCustomFieldSections::ShowComponent and its CreationWizard twin
  • My::Notifications::ShowPageComponent

The life cycle and project custom-field sections lists opt into empty_state_behavior: :dynamic: filtering to no matches shows the blankslate inside each box, replacing the life cycle page's detached plain-text "No items found" notice.

What approach did you choose and why?

Each migration is a focused vertical slice with its component spec, so surfaces can be reviewed independently and reverted individually if needed. Stacked on #24644 only for linear review order; it does not depend on those surfaces.

Visual comparisons

Show baseline/candidate screenshots

Baseline is shown on the left; the candidate stack is shown on the right. (Screenshots predate the empty-state rework; regeneration pending.)

Work package wiki tab

Work package wiki tab — baseline left, candidate right

Portfolios

Portfolios — baseline left, candidate right

OAuth applications

OAuth applications — baseline left, candidate right

Project life cycle

Project life cycle — baseline left, candidate right

Project custom-field sections

Project custom-field sections — baseline left, candidate right

Project creation wizard attributes

Project creation wizard attributes — baseline left, candidate right

My notifications

My notifications — baseline left, candidate right

Merge checklist

  • Added/updated tests
  • Added/updated documentation in Lookbook (patterns, previews, etc)
  • Tested major browsers (Chrome, Firefox, Edge, ...)

@myabc myabc changed the title implementation/DREAM 803 project core list migrations [DREAM-803] Migrate wiki, OAuth and project settings lists to BorderBoxList Aug 6, 2026
@myabc
myabc requested a lite review from Copilot August 6, 2026 17:46
Comment thread app/components/projects/settings/life_cycle/index_component.html.erb Outdated

Copilot AI left a comment

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.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

@myabc
myabc force-pushed the implementation/DREAM-803-project-core-list-migrations branch from 99c9faa to 68015cd Compare August 6, 2026 19:43
@myabc
myabc requested a lite review from Copilot August 6, 2026 19:49

Copilot AI left a comment

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.

Pull request overview

Copilot reviewed 20 out of 20 changed files in this pull request and generated no new comments.

Suppressed comments (3)

app/components/projects/settings/project_custom_field_sections/show_component.html.erb:10

  • Argument indentation is inconsistent: test_selector: is over-indented relative to the other keyword arguments in this BorderBoxListComponent.new call. This diverges from existing BorderBoxListComponent usages and can trigger ERB/Ruby linting alignment cops.
      OpenProject::Common::BorderBoxListComponent.new(
        container: "project-custom-field-section-#{@project_custom_field_section.id}",
        position: :relative,
        mb: 3,
        classes: "op-project-custom-field-section",
                test_selector: "project-custom-field-section-#{@project_custom_field_section.id}"
      )

app/components/projects/settings/creation_wizard/project_custom_field_sections/show_component.html.erb:10

  • Argument indentation is inconsistent: test_selector: is over-indented relative to the other keyword arguments in this BorderBoxListComponent.new call. Aligning the keyword arguments matches existing component usages and avoids potential lint failures.
      OpenProject::Common::BorderBoxListComponent.new(
        container: "project-custom-field-section-#{@project_custom_field_section.id}",
        position: :relative,
        mb: 3,
        classes: "op-project-custom-field-section",
                test_selector: "project-custom-field-section-#{@project_custom_field_section.id}"
      )

app/components/projects/settings/life_cycle/index_component.html.erb:31

  • test_selector: is mis-indented in the BorderBoxListComponent.new argument list, which is inconsistent with surrounding keyword alignment and may fail ERB/Ruby alignment linting.
        OpenProject::Common::BorderBoxListComponent.new(
          container: "project-life-cycle-administration",
          position: :relative,
          mb: 3,
                    test_selector: "project-life-cycle-administration"
        )

@myabc
myabc force-pushed the implementation/DREAM-803-project-core-list-migrations branch 2 times, most recently from 2318fc1 to c31d5e5 Compare August 6, 2026 21:06
@myabc
myabc marked this pull request as ready for review August 6, 2026 21:16
@myabc myabc added maintenance styling ruby Pull requests that update Ruby code needs review labels Aug 6, 2026
@myabc myabc added this to the 17.8.x milestone Aug 6, 2026
@myabc
myabc force-pushed the implementation/DREAM-803-project-core-list-migrations branch from c31d5e5 to e23cee9 Compare August 6, 2026 21:38
@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown

Warning

Flaky specs

  • rspec ./modules/wikis/spec/features/admin/internal_provider_spec.rb[1:1]
🤖 Ask Copilot to investigate

Copy the prompt below into a new comment on this PR to delegate the investigation to GitHub Copilot. It will look into the flakiness and open a separate pull request with you as reviewer.

@copilot The following spec(s) are flaky in CI (first seen on PR #24645, linked for reference only):

- `rspec ./modules/wikis/spec/features/admin/internal_provider_spec.rb[1:1]`

Treat this as a standalone task, unrelated to PR #24645. Create a new branch from origin/dev and open a new pull request targeting dev — do not stack it on PR #24645 or reuse that branch.

Follow the playbook in docs/development/testing/handling-flaky-tests/README.md to find the root cause and fix the underlying race — do not skip, delete, or weaken the spec to make it pass; disabling is a last resort per the playbook, and only with a bug ticket. Verify the fix by running the spec(s) repeatedly (e.g. `script/bulk_run_rspec --run-count 10`).

If you cannot reproduce the flake or are not confident in a fix after reasonable investigation, do not fabricate a change or skip the spec to force CI green. Instead, leave the pull request in draft and document what you tried, the suspected cause, and any leads in its description, then assign @myabc to take over.

Once the fix is verified, title the PR after the spec(s) it fixes, and use the PR description to explain the root cause, how the change resolves it, and the before/after results. Label the PR `flaky-spec`, assign @myabc, and request a review from @myabc.
On every commit, set @myabc as the sole co-author with a `Co-authored-by:` trailer (use their GitHub no-reply email so it links to their account), so it is traceable who dispatched the fix.

@myabc
myabc force-pushed the implementation/DREAM-803-project-core-list-migrations branch 2 times, most recently from 3cddcb9 to ab960f6 Compare August 7, 2026 07:39
@myabc
myabc force-pushed the implementation/DREAM-803-project-core-list-migrations branch from ab960f6 to 86a672c Compare August 7, 2026 19:07
@myabc
myabc force-pushed the implementation/DREAM-803-project-core-list-migrations branch from 86a672c to 5b3996f Compare August 12, 2026 08:20
@myabc
myabc force-pushed the implementation/DREAM-803-project-core-list-migrations branch from e9d9d77 to deeee00 Compare August 12, 2026 08:40
@myabc
myabc force-pushed the implementation/DREAM-803-project-core-list-migrations branch 2 times, most recently from 94e06bb to 683ab4b Compare August 12, 2026 11:01
@myabc
myabc force-pushed the implementation/DREAM-803-project-core-list-migrations branch from 683ab4b to 99ddc98 Compare August 12, 2026 11:04
@myabc
myabc force-pushed the implementation/DREAM-803-project-core-list-migrations branch from fc1c2f1 to c781345 Compare August 12, 2026 11:23
@myabc
myabc requested a review from bsatarnejad August 12, 2026 11:43

@bsatarnejad bsatarnejad left a comment

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.

LGTM 👍🏼

myabc added 9 commits August 12, 2026 14:25
Moves collapsible wiki links onto the shared list component.

https://community.openproject.org/wp/DREAM-697
Moves wiki relation links onto the shared list component.

https://community.openproject.org/wp/DREAM-697
Moves the portfolios index rows and empty state onto the shared list.

https://community.openproject.org/wp/DREAM-697
Moves OAuth application rows and placeholders onto the shared list.

https://community.openproject.org/wp/DREAM-697
Moves project life-cycle rows and actions onto the shared list.

https://community.openproject.org/wp/DREAM-697
Moves project attribute section rows in settings and creation wizard.

https://community.openproject.org/wp/DREAM-697
Uses the shared list for project-specific notification settings.

https://community.openproject.org/wp/DREAM-697
Applies the dynamic empty-state lifecycle to the project life cycle
and project attributes settings lists, replacing the detached
plain-text no-results notice.

https://community.openproject.org/wp/DREAM-803
The migration spec still asserted the always-rendered empty-state row
from the reverted behavior; populated lists render no such row now.

https://community.openproject.org/wp/DREAM-803
@myabc
myabc force-pushed the implementation/DREAM-803-project-core-list-migrations branch from c781345 to 6b3c4d5 Compare August 12, 2026 12:26
@myabc
myabc merged commit 768b1b8 into dev Aug 12, 2026
15 checks passed
@myabc
myabc deleted the implementation/DREAM-803-project-core-list-migrations branch August 12, 2026 12:54
@github-actions github-actions Bot locked and limited conversation to collaborators Aug 12, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

maintenance needs review ruby Pull requests that update Ruby code styling

Development

Successfully merging this pull request may close these issues.

3 participants