I think what they are suggesting is that if a plugin that was already bundled with core was listed in app.yaml, then it would just be ignored. With a notification stating that including in app.yaml was redundant and the owner could remove it.
I too find it a little annoying that as long as I have any plugins listed in my app.yaml, I always run the risk of a failed update. So every time I do the update I need to double check to see if one of my plugins has been added to core.
Why not simply have a script that does it for the Sysop?
I myself organize plugins by team or author to make my life a bit easier so I know which plugins are official and such. But if the idea is to make discourse more user friendly that needs to be done on the team end.
Not really all that different when you counselled ppl when a user has a broken upgrade due to Postreq(so?) upgrade failure.
With plugins this is exactly where the concept of the Procourse Installer was a great idea for simplifying plugin install and uninstall without needing to use the command line
Granted I understand it maybe needed some more polish in event something went wrong. But that could be easy enough with a log file or a simple fallback if needed from the command line. I do appreciate that this might make it more appealing for self hosting vs a paid plan. However there are enough pros for a paid plan to still go that way.
This type of plugin manager could also be crafted or forked to allow hosted plans to install plugins within their hosted tier as some plugins may not be needed in the specific plan.
Indeed I missed a post long ago regarding chat being bundled and had tried to install it. I donāt think the tag was updated on the plugin. Of course it crashed the site as it didnāt like trying to install the plugin when in theory it could simply have maybe ignored the entry with a completed rebuild advising it could be removed as it was unnecessary.
With the recent initiative to bundle more official plugins into core, I was wondering whether the Whoās Online plugin is being considered for inclusion.
Iāve noticed itās available on the official hosting plans (counting toward plugin quota), so Iām curious if that indicates movement toward broader adoption.
Totally understand if performance constraints or philosophical fit mean it should remain off by default unless specific otherwise in the app.yml .
We donāt currently plan to move any more plugins into core. Cakeday was the last one, and had to be done separately to the main batch because of some complications with the way it was previously enabled-by-default.
Completely understand the frustration about the process here - itās certainly not as smooth as Iād like. To give some context: the fundamental problem is that the app.yml files are not a Discourse config file. They are a pups config, and the plugin installation lines are just shell commands.
Bringing Discourse-specific logic into pups, and making it ignore certain shell commands, isnāt really an option. This tool isnāt just used for Discourse. Plus, I suspect a number of people would be unhappy to have us change the shell commands running during bootstrap without their knowledge.
So we landed on the cleanest solution we could find with the tools available: force a CLI rebuild, and then display a message asking people to remove the affected line from their config.
I think āinstallingā might be better phrased as āenablingā there - if thatās technically correct.
The current phrasing could give the impression that having additional bundled plugins present is a philosophical or performance concern - when itās really only about whether they are enabled. Since a newly core plugin that wasnāt enabled before is disabled by default after rebuild, the risk isnāt in having it installed with core, but in turning it on.
The discourse-categories-suppressed plugin adds a simple, optional UI to hide selected categories from the Latest feed. It integrates through a single dropdown in:
Admin ā Settings ā Categories
ācategories suppressed from latestā
This feels like a very natural core setting ā especially since:
⢠Itās official and actively maintained
⢠It remains disabled by default unless an admin opts into it
⢠Many communities (mine included) rely on āLatestā as the primary landing view and want finer control over what appears there
Would the team consider bundling this plugin (still disabled by default), so admins can use this toggle without needing to install anything extra?
Thanks for considering ā it seems like a small UI preference that a lot of sites would benefit from having available out-of-the-box.
Iām not sure if this is intended, but wanted to report it:
We are on an outdated stable v3.5.4 and were using the cakeday. plugin. However, rebuilds (of the same Discourse version) stopped working because cakeday had been merged into the core. So, I disabled the plugin on the yml file and⦠well, itās gone. Now it builds again, but we no longer have cake days as the admin UI shows no sign of the functionality being installed.
Iām guessing itās because we are on a outdated stable version, but was still an unexpected result for a rebuild of the same version of Discourse.
The cakeday plugin isnāt bundled in 3.5.4, so thatāll be why youāre not seeing it any more.
Are you sure thatās why they started failing? If you saw something like:
HINT: The plugin ā$pluginā is now bundled with Discourse and should not be included in your container configuration
then Iām afraid that will be shown for any failed rebuild when the cakeday plugin is included in the config file. This was the most efficient way we could warn people about the issue, but it can be confusing for people running older core versions.
So if you need the cakeday plugin, I think you should be able to re-add it to your app.yml file and rebuild. I suspect the failure was caused by something else, which youāve now resolved.
As an aside: Iād strongly recommend upgrading to a supported version. 3.5 is not receiving security updates any more, and may be vulnerable to attack.
Cloning into 'docker_manager'...
I, [2026-03-09T15:05:49.126710 #1] INFO -- : > cd /var/www/discourse/plugins && git clone https://github.com/discourse/discourse-cakeday.git
fatal: destination path 'discourse-cakeday' already exists and is not an empty directory.
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse/plugins && git clone https://github.com/discourse/discourse-cakeday.git failed with return #<Process::Status: pid 146 exit 128>
Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.4.0/lib/pups/exec_command.rb:138:in `spawn'
exec failed with the params {"cd"=>"$home/plugins", "cmd"=>["git clone https://github.com/discourse/docker_manager.git", "git clone https://github.com/discourse/discourse-cakeday.git", "git clone https://github.com/discourse/discourse-whos-online.git", "git clone -b no-regional-flags https://github.com/mentalstring/discourse-nationalflags.git", "git clone https://github.com/discourse/discourse-yearly-review.git", "git clone https://0fa273b19b56a1a58c41484d49a01d99f1b5b8d2@github.com/mentalstring/custom-username-validator", "git clone https://github.com/discourse/discourse-saved-searches"]}
bootstrap failed with exit code 128
---
HINT: The plugin 'discourse-cakeday' is now bundled with Discourse and should not be included in your container configuration.
Remove the line 'git clone https://github.com/discourse/discourse-cakeday' from your containers/web_only.yml file, then try again.
For more information, see https://meta.discourse.org/t/373574
---
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
Re-adding the plugin to app.yml causes the error above. Removing it immediately makes the build work again. This plugin seems to be the only issue.
Iām aware we are on a outdated version and itās on the roadmap to upgrade. Just wanted to point out that, although we have not changed the version we are running, 3.5.4 went from building fine (with the plugin) to no longer building with the plugin and we donāt seem to have any way to get the plugin functionality back (through plugin or in core).
Interesting! I wonder if itās because our docker image now includes discourse-cakeday, and then when core is ādowngradedā to 3.5, it leaves an empty directory behind.
If you add rm -rf discourse-cakeday before the git clone https://.../discourse-cakeday line, then that should clean it up. So it would look something like: