I just use Logseq (+ syncthing for sync) with extensive tagging (thousands of tags added a year) + a random Pomodora app that keeps records and descriptions of each Pomadora. Simple and effective
How do you manage having thousands of tags? What is your use case? I quite quickly moved away from them because I couldn't have a strict/normalised system for it. E.g., I would end up with #a, #as, #<synonym of a>, #parent/as, etc. After a while of this, it would either reduce to nothing better than keyword search, or the effort of keeping track of existing tags and the "right" tags would prevent me from tagging at all.
Well I try to make sure each topic/page has a unique tag, and then I tag keywords within that. So within a page I will tag with consistent generalizable tags like #docker, #blog, #security, #auth and then underneath those I will have more specific tags like #repository_name #author_name #equipment_name.
Its more of a tiered tagging style where there are more generalizable tags are parents of more specialised tags.
It might not be the best for everyone but my brain works well with it. I can usually derive what the parent tag would be from whatever topic I'm searching back up and then find the children notes/tags from there.
It is essentially keyword search that just somewhat organized.