Problem/Motivation

In #3159848: [Policy] Always install Drupal with Standard on the UI, pared down of use case specific elements (content types, node listing, commenting, theme) we are making the standard install profile and recipe more of a starting point without use case specific elements. One thing that's not in the standard profile but assumes the intent of the standard profile is the default /node listing in node module, which is created as a view. This is present on Drupal sites even if they don't intend to have a simple blog like listing and some people forget to remove it or disable it.

Also Olivero has special handling of the /node view and presents a welcome guide until you have promoted content which is confusing to some people. We plan to not enable Olivero in the Standard profile anymore in #3590882: Standard profile should not include Olivero anymore, should provide guidance on how to get started as a next step after this, so we need to decouple the welcome message which is otherwise tied to the "frontpage" view in core currently.

Steps to reproduce

Install with the standard profile before and after this MR :)

Proposed resolution

  • Disable the /node view by default. Removing it would be very tricky due to lots of test dependencies. Also this view gives meaning to the "promoted content" checkbox in entities which we don't plan to remove currently.
  • Rename this view from Frontpage to Promoted content. #3593281: Rename "promoted to front page" to "promoted" already changed "Promoted to frontpage" (for the checkbox field) to "Promoted" on nodes.
  • Move the welcome message to the Standard profile as a one-off message. This leaves no trace on the site later. and does not need complicated steps to get rid of it.
  • Update all the tests to explicitly enable the promoted content view where they need it. Most tests also need a route rebuild so the routes become available from the view.
  • Update the Olivero nightwatch tests to test the front page instead of the /node page because the welcome text now appears on the front page (for testing scrolling).

Remaining tasks

Review!

User interface changes

New default front page in the Standard profile is not a node listing but the user (login) page, same as Minimal. On a fresh install, it displays a welcome message which goes away like other messages on page reload or clicking away.

BEFORE:

AFTER:

Promoted content view available as disabled, don't need to disable it if you don't want to use it (no content leakage anymore in Drupal core if you forget to disable it).

Enabling the "Promoted content" view is now a choice, so when there is no promoted content the welcome message is not the task of Olivero anymore and thus the empty text from the view shows up.

When the promoted content view is enabled, nodes that are promoted still show up in the promoted content view under /node. Olivero retains the styling of this:

Introduced terminology

This introduces "Promoted Content" (for the listing) instead of "Frontpage".
#3593281: Rename "promoted to front page" to "promoted" already introduced "Promoted" (for the status) instead of "Promoted to frontpage".

API changes

None.

Data model changes

None.

Release notes snippet

The node listing page is not the default frontpage of Drupal's standard profile anymore. Node module still provides this view (which also serves an RSS feed), but it is now named "Promoted Content" (promoted_content) instead of Frontpage (frontpage) and is disabled by default.

The installer does not add a generic congratulations message at the end of installation, distributions / profiles need to do this on their own. See the Standard profile for how it adds an installer task at the end of the installation and adds a message.

LLM disclosure

LLM was used to accelerate the development of this MR, everything was deeply reviewed though.

CommentFileSizeAuthor
#71 3572350-nr-bot__u80chs4.txt1.91 KBneeds-review-queue-bot
#58 3572350-nr-bot_amcwt3e8.txt91 bytesneeds-review-queue-bot
#50 3572350-nr-bot_j1yg4ilv.txt98 bytesneeds-review-queue-bot
#48 3572350-nr-bot_gj006sat.txt1.42 KBneeds-review-queue-bot
#44 Screenshot 2026-06-23 at 1.03.59 PM.png349.55 KBsmustgrave
#42 screencapture-d12-ddev-site-node-2026-06-16-13_29_49.png661.71 KBgábor hojtsy
#41 3572350-nr-bot_yz8ds8zh.txt2.01 KBneeds-review-queue-bot
#40 screencapture-d12-ddev-site-node-2026-06-16-13_14_56.png640.06 KBgábor hojtsy
#39 screencapture-d12-ddev-site-user-1-2026-06-16-12_58_00.png856.42 KBgábor hojtsy
#37 Screenshot 2026-06-10 at 19.23.49.png425.37 KBgábor hojtsy
#37 Screenshot 2026-06-10 at 19.12.32.png546 KBgábor hojtsy
#33 3572350-nr-bot_4ykamz8c.txt1.48 KBneeds-review-queue-bot
#32 Screenshot 2026-06-10 at 12.02.51.png767.03 KBgábor hojtsy
#32 Screenshot 2026-06-10 at 12.02.19.png735.81 KBgábor hojtsy
#26 Screenshot 2026-06-03 at 06.53.26.png369.89 KBgábor hojtsy
#24 Screenshot 2026-06-02 at 15.55.36.png482.78 KBgábor hojtsy
#24 Screenshot 2026-06-02 at 15.52.45.png142.86 KBgábor hojtsy
#22 3572350-nr-bot_fojxwzyo.txt91 bytesneeds-review-queue-bot
#20 3572350-nr-bot_whf7nh0c.txt1.2 KBneeds-review-queue-bot
#18 3572350-nr-bot_u6_87sj5.txt98 bytesneeds-review-queue-bot
#10 3572350-nr-bot_9e4qe1od.txt91 bytesneeds-review-queue-bot
#9 Screenshot 2026-05-14 at 20.53.18.png445.06 KBgábor hojtsy
#8 Screenshot 2026-05-14 at 20.48.07.png496.06 KBgábor hojtsy

Issue fork drupal-3572350

Command icon 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

gábor hojtsy created an issue. See original summary.

gábor hojtsy’s picture

Summary was based on slack discussion with @catch, so added him to the contribution record :)

gábor hojtsy’s picture

I should disclose that my contribution on this issue is LLM assisted (and closely reviewed).

gábor hojtsy’s picture

Title: Remove the default /node listing view and add a better default front page for new installs » Disable the default /node listing view and add a better default front page for new installs
Issue summary: View changes

Retitling new target discussed with @catch, instead of removing the view, making it disabled to start, since that lowers the required test changed significantly. It is still not the default Standard front page anymore in the MR. Will see if we get to a complete MR sooner with this. Fingers crossed.

gábor hojtsy’s picture

Status: Active » Needs review

I believe this is now down to a random fail :) Yay! Please review!

gábor hojtsy’s picture

Issue summary: View changes

Heavy issue summary update.

gábor hojtsy’s picture

Issue summary: View changes
StatusFileSize
new496.06 KB
gábor hojtsy’s picture

Issue summary: View changes
StatusFileSize
new445.06 KB

Adding a before screenshot too.

needs-review-queue-bot’s picture

Status: Needs review » Needs work
StatusFileSize
new91 bytes

The Needs Review Queue Bot tested this issue. It no longer applies to Drupal core. Therefore, this issue status is now "Needs work".

This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.

Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.

gábor hojtsy’s picture

gábor hojtsy’s picture

Status: Needs work » Needs review
acbramley’s picture

Status: Needs review » Needs work

Left some comments

acbramley’s picture

Status: Needs work » Needs review

Actioned my own feedback, I used ClaudeAI to refactor the trait.

gábor hojtsy’s picture

@acbramely: woah, thanks for the refactor, I think this makes it much easier to read and review :) Yay! I think all your changes look great.

dww’s picture

Not a super thorough review, but spotted a few things I wanted to open threads about. Not worth NW over any of them.

needs-review-queue-bot’s picture

Status: Needs review » Needs work
StatusFileSize
new98 bytes

The Needs Review Queue Bot tested this issue. The merge request has merge conflicts and cannot be merged. Therefore, this issue status is now "Needs work".

This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.

Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.

gábor hojtsy’s picture

Status: Needs work » Needs review

Rebased, green again! Also resolved all concerns from @phenaproxima.

needs-review-queue-bot’s picture

Status: Needs review » Needs work
StatusFileSize
new1.2 KB

The Needs Review Queue Bot tested this issue. It fails the Drupal core commit checks. Therefore, this issue status is now "Needs work".

This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.

Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.

acbramley’s picture

Status: Needs work » Needs review

Fixed attribute

needs-review-queue-bot’s picture

Status: Needs review » Needs work
StatusFileSize
new91 bytes

The Needs Review Queue Bot tested this issue. It no longer applies to Drupal core. Therefore, this issue status is now "Needs work".

This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.

Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.

acbramley’s picture

Status: Needs work » Needs review
gábor hojtsy’s picture

Issue summary: View changes
StatusFileSize
new142.86 KB
new482.78 KB

More screenshots to issue summary based on how the current MR looks like.

acbramley’s picture

I asked claude to analyse the diff in the StandardPerformanceTest since there are so many changes in there, it did a great job, here's the summary:

Key Findings
Net positive:
- The front page itself is dramatically lighter: -10 queries, -47 cache gets, -23 cache sets
- No Views subsystem, no node rendering, no user entity loading on the front page
- Overall the total work budget across a session is lower
Potential regressions to watch:
1. Cache invalidation cost (most significant): Invalidating config:node_type_list (adding a content type) triggers 9 queries and 15 cache sets vs the old 3 queries and 5 cache sets. The 6 wildcard config scans (block_content.type.%, core.base_field_override.%, field.field.%, core.entity_view_display.%, system.menu.%, views.view.%) plus the block_content entity query are all downstream consequences of the config:node_type_list invalidation cascading through the discovery system. This is a 3x increase in rebuild cost after invalidation.
2. Node page cold-cache cost: The node page now bears the full entity loading cost that was previously amortized across the frontpage visit. This is a redistribution, not new work — but if users visit node pages without first visiting the welcome page, they'll see the full load cost.
3. Route cache pressure: The welcome template generates URLs via path() for 5 different routes, causing +2 to +4 extra route cache lookups on every request. These are cheap individually but add up.
4. Admin page +1 query: Every admin front page request now runs a node.type.% config listing query to check for content types. This query runs on every uncached request to the welcome page.

@gábor hojtsy the changes to the invalidation test look great

gábor hojtsy’s picture

Issue summary: View changes
StatusFileSize
new369.89 KB

Explaining updated view empty state in Olivero in the issue summary UI changes :)

gábor hojtsy’s picture

Issue summary: View changes

Updated release notes snippet and introduced terminology to be precise :) Hope that helps with reviews. Fingers crossed.

berdir’s picture

Status: Needs review » Needs work

Did a first review.

gábor hojtsy’s picture

Issue summary: View changes

#3593281: Rename "promoted to front page" to "promoted" is now in, so we can adjust this issue.

gábor hojtsy’s picture

Status: Needs work » Needs review

Ok I have it rebased and fixed up again. Now the main thing left is if we should keep this new route or move the guidance back to special casing in Olivero templates. In the new case we would be special casing the template for the user login and user profile templates page to put admin guidance on them if the front page is not yet modified. Should we?

quietone’s picture

I found an issue yesterday that I think is suitable as a child issue here. It is old, so perhaps outdated, I am not sure. #270919: UB Usability : Labeling Front Page

gábor hojtsy’s picture

Issue summary: View changes
StatusFileSize
new735.81 KB
new767.03 KB

I played around with the idea to moving the welcome text back to Olivero and I think I found a good / nice way. The route/default checking trickery still needs to happen somewhere, but its now back to the theme. I shortened the text as such long prose is just not practical when the message is side content on the page and not the main content. It is shown for logged out (as currently with Olivero before this MR) and logged in (also as currently with Olivero) on the default front page, until it is changed (currently Olivero displays it until you have promoted content for the view we are disabling in this MR). I think this also looks visually as good as Olivero can :)

needs-review-queue-bot’s picture

Status: Needs review » Needs work
StatusFileSize
new1.48 KB

The Needs Review Queue Bot tested this issue. It fails the Drupal core commit checks. Therefore, this issue status is now "Needs work".

This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.

Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.

gábor hojtsy’s picture

One thing that we need to consider is that now the /user/login is a perfectly valid default route that someone would want to keep (assuming its a backend only site let's say), so then a theme setting to disable this would be more appropriate :) While this only affects for this issue Olivero and Olivero is nto expected to be used on backend only sites I don't think, the pattern we set here will be going into potentially other themes, such as Default admin when in the next step we not enable Olivero in Standard anymore (at which point we need to port this message to that theme too). However that issue is #3590882: Standard profile should not include Olivero anymore, should provide guidance on how to get started.

lauriii’s picture

That design is very surprising to me. I would not expect that type of content to show in the footer of a site. Is this not something that should be rendered as a one time message after installation?

gábor hojtsy’s picture

Status: Needs work » Needs review

@laurii: that is certainly an option!

Prior to this MR in Olivero as you can see in the issue summary and changeset there is a welcome template that is shown on any request on the frontpage view of the site until there is promoted content. More specifically core/themes/olivero/templates/includes/get-started.html.twig is included in core/themes/olivero/templates/views/views-view--frontpage.html.twig like so:

  {% elseif empty %}
    {% include '@olivero/includes/get-started.html.twig' %}
  {% endif %}

So prior to this MR with Drupal core Olivero, if you change your front page to /node/1, this message will keep being displayed on /node until you disable that view or somehow make the view not have empty results (change criteria or promote a node). This is the pre-MR experience:

I think the motivation is that if the message goes away on a page reload, then people will have a harder time getting started.

We can also say that the special logic message is too much of a hassle and just chuck all of it or even less of it into the initial message that shows to the user, which is currently "Congratulations, you installed Drupal!" (which goes away on page reload).

gábor hojtsy’s picture

@lauriii: I tried updating the initial ephemeral message as you suggested. The first sentence is already in the installer.

-  $success_message = t('Congratulations, you installed @drupal!', [
+  $success_message = t('Congratulations, you installed @drupal! An open source platform built by a worldwide community. To get started: <a href="@user-guide">read the User Guide</a>, add content and set your frontpage, <a href="@extend-drupal">extend Drupal</a> with community contributions, and join the community at <a href="@events">events</a>, <a href="@slack">Slack</a>, or <a href="@support">get support</a>.', [
     '@drupal' => drupal_install_profile_distribution_name(),
+   '@user-guide' => 'https://www.drupal.org/docs/user_guide/en/',
+    '@extend-drupal' => 'https://www.drupal.org/docs/extending-drupal',
+    '@events' => 'https://www.drupal.org/community/events',
+    '@slack' => 'https://www.drupal.org/slack',
+    '@support' => 'https://www.drupal.org/support',
  ]);
  \Drupal::messenger()->addStatus($success_message);

If there is agreement that this UI is the way to go we need to extend the install profile API to specify the message somehow in PHP, as this is currently generated as-is with the distro name only, so the links, etc. will not make sense for Drupal CMS or other distros this way. But first it would be nice to agree that this is indeed what we would want:

For comparison what we have now is not ephemeral, you can read it multiple times, refer to the links and it "only" goes away once you promote a node or do something else to that view:

pameeela’s picture

None of this applies to Drupal CMS, we don't include the frontpage view and we control the messages that show post install (including silencing the first warning about file permissions).

FWIW I think it makes more sense as a one-time message. The current implementation is pretty confusing, I remember struggling to figure out where it was coming from, and the fact that it magically disappears when you create content is not really expected. I guess I am the type of person who would try to figure out how to delete it before doing anything else.

gábor hojtsy’s picture

Moved the welcome message to a one time message only emmitted by Standard profile now. Also as a consequence removed the generic distro message from the installer, so this would be an "API change" of sorts where distros are now expected to display such a message if they want to. I think that is very sensible TBH, they would also likely be more verbose than the built-in message and this way they don't need to undo / work around that.

This also means installs of the Minimal profile do not get this message but that wonderfully fits into the spirit of the Minimal profile :)

I also further simplified the message text here, do not mention the content type creation and front page setting, since every single other link is some grand source of truth and there is no guarantee you would want to start with creating content types and front page and also since this is a one off message now, I don't think people would methodically open the links in new tabs, so to use this for step by step instructions is IMHO not a good fit. I think that's fine though.

gábor hojtsy’s picture

Issue summary: View changes
StatusFileSize
new640.06 KB

Updated issue summary to message approach, new screenshots for empty view since the view empty text changed in another issue. Also adding the installer message change to the "API changes" and the release note snippet.

needs-review-queue-bot’s picture

Status: Needs review » Needs work
StatusFileSize
new2.01 KB

The Needs Review Queue Bot tested this issue. It fails the Drupal core commit checks. Therefore, this issue status is now "Needs work".

This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.

Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.

gábor hojtsy’s picture

Issue summary: View changes
StatusFileSize
new661.71 KB

After I created the empty view screenshot I recognized that the title and empty state needed adjustments too. Done.

quietone’s picture

Tagging as this is needed for #3590882: Standard profile should not include Olivero anymore, should provide guidance on how to get started, which is a task for deprecating Olivero.

smustgrave’s picture

StatusFileSize
new349.55 KB

Large MR :)

With the MR applied I did a fresh install, assuming they're the only ones affected

example

Is core/modules/node/tests/src/FunctionalJavascript/NodePerformanceTest.php in scope of this issue? Seems to be the focus on discussion so wonder if it should be it's own.

gábor hojtsy’s picture

The way the node performance test came in is that the /node view does not logically fit anymore in the StandardPerformanceTest as it is not a standard feature anymore :) If that is blocking this too much we can try to move it back to StandardPerformanceTest (despite not being Standard), but the default front page that StandardPerformanceTest tests is also changed here so that needs to be kept changed in the test either way, which is what triggered to have a separate /node performance test. I think probably @catch and @Berdir have solid ideas for what it should be, I just don't fully grasp it :D

berdir’s picture

I'd say NodePerformanceTest is in scope in that it needs to happen or we lost test coverage that we do not want to lose. Only alternative would be doing that first as a blocker, but it would still require significant changes here I think then, so kind of pointless. It's not really a new test, it's just moving the existing StandardPerformanceTest::testCacheInvalidation() to a separate test class and should be doing the same thing.

I want to have a closer look at the resulting StandardPerformanceTest to see if the result still makes sense or if there are more bits that could be removed or should be adjusted to test something meaningful.

gábor hojtsy’s picture

Title: Disable the default /node listing view and add a better default front page for new installs » Disable the default /node listing view, replace Olivero hardcoded welcome page from /node with welcome message
Issue summary: View changes
Status: Needs work » Needs review

Retitle based on final(?) implementation and also fix up issue summary again. All threads in MR are resolved too :) Hint hint!

needs-review-queue-bot’s picture

Status: Needs review » Needs work
StatusFileSize
new1.42 KB

The Needs Review Queue Bot tested this issue. It fails the Drupal core commit checks. Therefore, this issue status is now "Needs work".

This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.

Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.

gábor hojtsy’s picture

Status: Needs work » Needs review
needs-review-queue-bot’s picture

Status: Needs review » Needs work
StatusFileSize
new98 bytes

The Needs Review Queue Bot tested this issue. The merge request has merge conflicts and cannot be merged. Therefore, this issue status is now "Needs work".

This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.

Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.

gábor hojtsy’s picture

Status: Needs work » Needs review

All thread resolved now :)

berdir’s picture

Status: Needs review » Needs work

Hopefully last performance related comments, we're getting there.

gábor hojtsy’s picture

Issue summary: View changes
Status: Needs work » Needs review

All outstanding concerns resolved again, thanks @berdir for your thorough review. Also minor updates to issue summary.

nitinkumar_7’s picture

I have tested on local and I can see a pipeline failure here (#887456, PHPUnit Unit (Core): 8.6-ubuntu) but not getting this issue on local.
Also checked the performance numbers @berdir raised above and they look addressed now : the cache get/set counts in StandardPerformanceTest match what was discussed.

acbramley’s picture

Status: Needs review » Reviewed & tested by the community

This is looking good to go now, nice job everyone!

gábor hojtsy’s picture

Rebased the MR, still passes fine :)

larowlan’s picture

Status: Reviewed & tested by the community » Needs review

Left a review on the MR - a couple of minor questions.
Thanks for working on this, it will be great to not have to remember to turn this view off on new projects 🎉

needs-review-queue-bot’s picture

Status: Needs review » Needs work
StatusFileSize
new91 bytes

The Needs Review Queue Bot tested this issue. It no longer applies to Drupal core. Therefore, this issue status is now "Needs work".

This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.

Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.

acbramley’s picture

Status: Needs work » Needs review

I really wanted to re-RTBC this but have a couple more comments :(

acbramley’s picture

Status: Needs review » Reviewed & tested by the community

Go go go!

  • larowlan committed cac47031 on main
    task: #3572350 Disable the default /node listing view, replace Olivero...
larowlan’s picture

Version: main » 11.x-dev
Status: Reviewed & tested by the community » Patch (to be ported)

Committed to main, moving to 11.x for backport

Created and published a change record.

larowlan’s picture

Actually published 2 change records

xmacinfo’s picture

This is quite impressive.

Thank you everyone!

gábor hojtsy’s picture

Status: Patch (to be ported) » Needs review

One of the change records were not published. I updated teh other one also with more info.

Working ont he D11 backport but its tricky because some base test changes need backporting too apparently.

gábor hojtsy’s picture

Status: Needs review » Postponed

Rather than backporting the taxonomy base test here, let's get #3591220: Convert functional tests in taxonomy module to kernel tests committed first, so we don't collide IMHO.

gábor hojtsy’s picture

Status: Postponed » Needs review

Backport updated following the landing of #3591220: Convert functional tests in taxonomy module to kernel tests. The only fail that remains is also on 11.x itself pretty consistently. Please review.

smustgrave’s picture

Status: Needs review » Reviewed & tested by the community

Quit a large MR but appears to be a good backport. The failure is on settings_tray which I don't think is related to this.

needs-review-queue-bot’s picture

Status: Reviewed & tested by the community » Needs work
StatusFileSize
new1.91 KB

The Needs Review Queue Bot tested this issue. It fails the Drupal core commit checks. Therefore, this issue status is now "Needs work".

This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.

Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.

quietone’s picture

The branch/version of the change record needs to be updated when this is committed to 11.x

quietone’s picture

The branch/version of the change record needs to be updated when this is committed to 11.x