Discourse Solved

On the homepage by Top, Hot, Latest, etc. how can I add Unsolved?

You can use the Custom Top Navigation Links component to add custom links next to the ones configured in the site settings. To filter the topic list for unsolved topics, you can add solved=no. For example https://meta.discourse.org/?solved=no

6 Likes

Running into the same incompatible plugin error mentioned up above, but we are using official release:

Logs
********************************************************
*** Please be patient, next steps might take a while ***
********************************************************
Cycling Unicorn, to free up memory
Restarting unicorn pid: 551
Waiting for Unicorn to reload.
Waiting for Unicorn to reload..
Waiting for Unicorn to reload...
Waiting for Unicorn to reload....
Waiting for Unicorn to reload.....
Waiting for Unicorn to reload......
Waiting for Unicorn to reload.......
Stopping 3 Unicorn worker(s), to free up memory
Stopping job queue to reclaim memory, master pid is 3004191
$ cd /var/www/discourse/plugins/docker_manager && git fetch --tags --prune-tags --prune --force
$ cd /var/www/discourse/plugins/docker_manager && git reset --hard HEAD@{upstream}
HEAD is now at 930ec25 DEV: Enable smoke specs again
$ bundle install --retry 3 --jobs 4
Bundle complete! 146 Gemfile dependencies, 189 gems now installed.
Gems in the groups 'test' and 'development' were not installed.
Bundled gems are installed into `./vendor/bundle`
3 installed gems you directly depend on are looking for funding.
  Run `bundle fund` for details
$ if [ -f yarn.lock ]; then yarn install; else CI=1 pnpm install; fi
Scope: all 17 workspace projects
Lockfile is up to date, resolution step is skipped
Already up to date

Done in 3.2s
$ LOAD_PLUGINS=0 bundle exec rake plugin:pull_compatible_all
checking out compatible discourse-calendar version: 8d09cf8503b78f4c72b47a7319c0f4b9ad0247e7
HEAD is now at 8d09cf8 DEV: update regions (#717)
checking out compatible discourse-reactions version: f87583d9054421869ba0de16c24ad15e32bbebe7
HEAD is now at f87583d DEV: Add system spec to check core features are working fine (#361)
checking out compatible discourse-solved version: 4f0234f5be3aaa77db277e0f224cd9750d2713cd
HEAD is now at 4f0234f DEV: Add system spec to check core features are working fine (#357)
discourse-spoiler-alert is already at latest compatible version
docker_manager is already at latest compatible version
$ SKIP_POST_DEPLOYMENT_MIGRATIONS=1 bundle exec rake multisite:migrate
	81: from /var/www/discourse/vendor/bundle/ruby/3.3.0/bin/bundle:25:in `<main>'
	80: from /var/www/discourse/vendor/bundle/ruby/3.3.0/bin/bundle:25:in `load'
	79: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/bundler-2.6.4/exe/bundle:20:in `<top (required)>'
	78: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/bundler-2.6.4/lib/bundler/friendly_errors.rb:117:in `with_friendly_errors'
	77: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/bundler-2.6.4/exe/bundle:28:in `block in <top (required)>'
	76: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/bundler-2.6.4/lib/bundler/cli.rb:29:in `start'
	75: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor/base.rb:584:in `start'
	74: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/bundler-2.6.4/lib/bundler/cli.rb:35:in `dispatch'
	73: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor.rb:538:in `dispatch'
	72: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
	71: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor/command.rb:28:in `run'
	70: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/bundler-2.6.4/lib/bundler/cli.rb:452:in `exec'
	69: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/bundler-2.6.4/lib/bundler/cli/exec.rb:23:in `run'
	68: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/bundler-2.6.4/lib/bundler/cli/exec.rb:59:in `kernel_load'
	67: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/bundler-2.6.4/lib/bundler/cli/exec.rb:59:in `load'
	66: from /var/www/discourse/vendor/bundle/ruby/3.3.0/bin/rake:25:in `<top (required)>'
	65: from /var/www/discourse/vendor/bundle/ruby/3.3.0/bin/rake:25:in `load'
	64: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/exe/rake:27:in `<top (required)>'
	63: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/application.rb:80:in `run'
	62: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/application.rb:214:in `standard_exception_handling'
	61: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/application.rb:83:in `block in run'
	60: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/application.rb:132:in `top_level'
	59: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/application.rb:147:in `run_with_threads'
	58: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/application.rb:138:in `block in top_level'
	57: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/application.rb:138:in `each'
	56: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/application.rb:138:in `block (2 levels) in top_level'
	55: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/application.rb:188:in `invoke_task'
	54: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/task.rb:188:in `invoke'
	53: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/task.rb:199:in `invoke_with_call_chain'
	52: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/task.rb:199:in `synchronize'
	51: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/task.rb:218:in `block in invoke_with_call_chain'
	50: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/task.rb:241:in `invoke_prerequisites'
	49: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/task.rb:241:in `each'
	48: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/task.rb:243:in `block in invoke_prerequisites'
	47: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/task.rb:199:in `invoke_with_call_chain'
	46: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/task.rb:199:in `synchronize'
	45: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/task.rb:218:in `block in invoke_with_call_chain'
	44: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/task.rb:241:in `invoke_prerequisites'
	43: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/task.rb:241:in `each'
	42: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/task.rb:243:in `block in invoke_prerequisites'
	41: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/task.rb:199:in `invoke_with_call_chain'
	40: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/task.rb:199:in `synchronize'
	39: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/task.rb:219:in `block in invoke_with_call_chain'
	38: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/task.rb:281:in `execute'
	37: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/task.rb:281:in `each'
	36: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/lib/rake/task.rb:281:in `block in execute'
	35: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.2.2.1/lib/rails/application.rb:559:in `block in run_tasks_blocks'
	34: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.2.2.1/lib/rails/application.rb:411:in `require_environment!'
	33: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/zeitwerk-2.7.2/lib/zeitwerk/core_ext/kernel.rb:34:in `require'
	32: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/bootsnap-1.18.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
	31: from /usr/local/lib/ruby/3.3.0/bundled_gems.rb:69:in `block (2 levels) in replace_require'
	30: from /usr/local/lib/ruby/3.3.0/bundled_gems.rb:69:in `require'
	29: from /var/www/discourse/config/environment.rb:7:in `<main>'
	28: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.2.2.1/lib/rails/application.rb:435:in `initialize!'
	27: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.2.2.1/lib/rails/initializable.rb:60:in `run_initializers'
	26: from /usr/local/lib/ruby/3.3.0/tsort.rb:208:in `tsort_each'
	25: from /usr/local/lib/ruby/3.3.0/tsort.rb:229:in `tsort_each'
	24: from /usr/local/lib/ruby/3.3.0/tsort.rb:350:in `each_strongly_connected_component'
	23: from /usr/local/lib/ruby/3.3.0/tsort.rb:350:in `call'
	22: from /usr/local/lib/ruby/3.3.0/tsort.rb:350:in `each'
	21: from /usr/local/lib/ruby/3.3.0/tsort.rb:352:in `block in each_strongly_connected_component'
	20: from /usr/local/lib/ruby/3.3.0/tsort.rb:434:in `each_strongly_connected_component_from'
	19: from /usr/local/lib/ruby/3.3.0/tsort.rb:353:in `block (2 levels) in each_strongly_connected_component'
	18: from /usr/local/lib/ruby/3.3.0/tsort.rb:231:in `block in tsort_each'
	17: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.2.2.1/lib/rails/initializable.rb:61:in `block in run_initializers'
	16: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.2.2.1/lib/rails/initializable.rb:32:in `run'
	15: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.2.2.1/lib/rails/initializable.rb:32:in `instance_exec'
	14: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.2.2.1/lib/rails/application/finisher.rb:94:in `block in <module:Finisher>'
	13: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.2.1/lib/active_support/lazy_load_hooks.rb:77:in `run_load_hooks'
	12: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.2.1/lib/active_support/lazy_load_hooks.rb:77:in `each'
	11: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.2.1/lib/active_support/lazy_load_hooks.rb:78:in `block in run_load_hooks'
	10: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.2.1/lib/active_support/lazy_load_hooks.rb:92:in `execute_hook'
	9: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.2.1/lib/active_support/lazy_load_hooks.rb:87:in `with_execution_control'
	8: from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.2.1/lib/active_support/lazy_load_hooks.rb:94:in `block in execute_hook'
	7: from /var/www/discourse/config/application.rb:241:in `block in <class:Application>'
	6: from /var/www/discourse/lib/plugin.rb:6:in `initialization_guard'
	5: from /var/www/discourse/config/application.rb:241:in `block (2 levels) in <class:Application>'
	4: from /var/www/discourse/config/application.rb:241:in `each'
	3: from /var/www/discourse/lib/plugin/instance.rb:629:in `notify_after_initialize'
	2: from /var/www/discourse/lib/plugin/instance.rb:629:in `each'
	1: from /var/www/discourse/lib/plugin/instance.rb:631:in `block in notify_after_initialize'
/var/www/discourse/plugins/discourse-solved/plugin.rb:172:in `block in activate!': undefined method `register_category_list_topics_preloader_associations' for an instance of Plugin::Instance (NoMethodError)

** INCOMPATIBLE PLUGIN **

You are unable to start Discourse due to errors in the plugin at
/var/www/discourse/plugins/discourse-solved

Please try removing this plugin and rebuilding again!
Docker Manager: FAILED TO UPGRADE
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:211:in `run'
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:109:in `upgrade'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:19:in `block in <main>'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `fork'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `<main>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.2.2.1/lib/rails/commands/runner/runner_command.rb:44:in `load'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.2.2.1/lib/rails/commands/runner/runner_command.rb:44:in `block in perform'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.2.1/lib/active_support/execution_wrapper.rb:91:in `wrap'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.2.2.1/lib/rails/commands/runner/runner_command.rb:70:in `conditional_executor'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.2.2.1/lib/rails/commands/runner/runner_command.rb:43:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/thor-1.3.2/lib/thor/command.rb:28:in `run'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/thor-1.3.2/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.2.2.1/lib/rails/command/base.rb:178:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/thor-1.3.2/lib/thor.rb:538:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.2.2.1/lib/rails/command/base.rb:73:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.2.2.1/lib/rails/command.rb:71:in `block in invoke'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.2.2.1/lib/rails/command.rb:149:in `with_argv'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.2.2.1/lib/rails/command.rb:69:in `invoke'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.2.2.1/lib/rails/commands.rb:18:in `<main>'
/usr/local/lib/ruby/3.3.0/bundled_gems.rb:69:in `require'
/usr/local/lib/ruby/3.3.0/bundled_gems.rb:69:in `block (2 levels) in replace_require'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/bootsnap-1.18.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
bin/rails:18:in `<main>'
Spinning up 3 Unicorn worker(s) that were stopped initially

tldr logs:

** INCOMPATIBLE PLUGIN **

You are unable to start Discourse due to errors in the plugin at
/var/www/discourse/plugins/discourse-solved

Please try removing this plugin and rebuilding again!
Docker Manager: FAILED TO UPGRADE
#<RuntimeError: RuntimeError>


We aren’t too far behind, but something is unhappy.

Edit: So, everything about this update went south. docker_manager failed as logged above, but then it showed as ‘up to date’ afterward. A main Discourse update utterly failed - showed as updating but never made progress and no processes changed. I disabled Solved! in app.yml and rebuilt the app - everything seems good now - minus Solved. If anyone comments that it’s safe to turn back on I’ll rerebuild it.

3 Likes

FWIW I have the Solved plugin installed and I updated earlier today through the UI and it went through okay. :+1:


Should have checked before I posted
 :slight_smile: Looks like there’s one new commit for Solved that has been added in the meantime. Let me do a command line rebuild just to check and confirm everything goes through okay.

ETA: @Frully My rebuild (including Solved) was successful :partying_face:

2 Likes

To add to what Jam said. I too haven’t had any issues with solved

If this is the first time you installed Solved verify that your GitHub address is correct.

If you can maybe also share if you’re running Stable or the Recommended Test-Passed

If you can post part of your app.yml plugin section may help as well.

2 Likes

Thanks both for checking. Now that it is updated I feel safer reenabling the plugin. Will advise when I have time to test and note the results.

3 Likes

We’re still suffering from this issue (although as no-one else seems to have reported it, I’m starting to wonder if it’s just us?)

Digging a little deeper, I have found that adding a padding-top and padding-bottom of 15px to the topic-statuses CSS class works around the problem. I’m hoping for a maintainer of the plugin to be able to fix this in a more permanent way.

3 Likes

I think this is connected to Discourse Tooltips. It’s not just the unsolved boxes on your site, but also any pins and padlocks as well.

I think there are a couple of other reports too:

5 Likes

Since we’ve updated discourse, solved webhooks are inverted.

If I solve a topic the webhook will be sent like this :

    "can_accept_answer": true,
    "can_unaccept_answer": false,
    "accepted_answer": false,
    "topic_accepted_answer": null

and if I unaccept the answer, it’s the other way around

:partying_face: This plugin is now bundled with Discourse core as part of Bundling more popular plugins with Discourse core. If you are self-hosting and use the plugin, you need to remove it from your app.yml before your next upgrade.

3 Likes

It has error with the latest version of discourse

I have to disable this to rebuild app (discourse)

It’s now included in core

3 Likes

Home > Posts in the category will show resolved topics as unresolved topics

Do I need other settings?

1 Like

Is it possible to add an entry in Advanced filters in the search area of Discourse to show only non-resolved?

Edit: This is an option in Where topics in the search, I should let my medicaiton kick in before asking questions :smiley:

you can use /filter and in:solved / in:unsolved

3 Likes

My understanding is that we can use the triggerable “first_accepted_solution“ from Solved when creating a automation. Would an automation with this trigger run only once for every topic that gets solved or it is first accepted solution from an user and not a topic? Not sure if the question makes sense, sorry

Where can I read more about the triggerable I can use in automations, but my focus in on the “accepted_solutions“, which if I’m not mistaken, comes from the Solved. Thus the question here.

“First-accepted-solution” triggers the first time a user’s post is selected as the solution to any topic.

You can, for example, use it to thank a user for helping someone the first time they did it.

Hi @Moin ,

Thanks a lot for the clarification, it makes sense.

Follow-up question: Is there any “accepted-solution“ trigger or only “first-accepted-solution“ ?

Reasoning: I would like to create a custom automation that creates a Post every time a Topic is Solved (a Post is marked as solution)

I tried with the “first-accepted-solution“ but it only works once, as I can see now, it is expected.

Any recommendation or ideas?

Thanks again :slight_smile:

Without knowing what you want to do with that post or why you need it, it’s a little difficult to suggest something helpful for you.
Do you simply want to know about posts being marked as the solution?

Then you could use a data explorer query and the “Schedule a post in a topic with Data Explorer results” script. You could, for example, run a query that returns the solutions from the past 10 minutes every 10 minutes.

I guess you could also run it more often, but I am unsure how much this adds on the server. But even if you ran it every minute, you wouldn’t necessarily get a post for each solution. Maybe there are 2 topics solved within the minute.

Furthermore, the resulting post can only be customized to a limited extent. (Of course, you can customize the texts used like any other text, but you should bear in mind that you will then have to do this for every post that is changed by automation with this script. So it doesn’t really work if you want to be too individual.)

Simple example of a post created by that automation:

The content of the table depends on the query. It is possible to expand the query, for example, to display a link to the topic or the solution. I kept it simple for demonstrating how the feature generally works.

The query I used
SELECT
  dst.created_at AS solution_accepted_at,
  dst.topic_id,
  dst.answer_post_id,
  dst.accepter_user_id
FROM discourse_solved_solved_topics dst
WHERE dst.created_at >= NOW() - INTERVAL '10 minutes'
ORDER BY dst.created_at DESC
1 Like

Hi @Moin ,

Thanks a lot for your reply :slight_smile:

It is nice, I tested and made it work - thanks to your reply:

Moreover, it is still not what I was looking for.
Sorry if I wasn’t clear in my previous question.

What I’m trying to do is to create an Automation that will create a post (from system user) every time a Topic gets solved. In this Topic, the newly generated Post will contain a survey (the survey will be the markdown of the Discourse Surveys)