Project: Quick Switcher Revamp

Problem

The quick switcher suffers from a few problems. Most importantly we suffer from performance because the switcher loads all groups, documents, and accounts into memory. In some cases the entity with the identical name as the query is not shown.
In other cases the switcher slows down the whole application while it does something, for example if the user has most of the network documents synced and they type "release notes" into the switcher.
We can not easily fix these problems because the cmdk library does too much. This prevents us from having consistent theming, customizing the source code, and prevents us from easily fixing issues such as clicking away from the quick switcher.
Also, users need a quick way to access the"recent" pages they have seen, and the quick switcher can be pre-populated with these entities to allow quick re-opening of something you have just seen.

Solution

We will rebuild the quick switcher in our application code, removing the "cmdk" library that we currently use for the UI.
New backend endpoints will be created for quickly searching the user's database. A single API endpoint will search for:
    Documents
    Accounts
    Groups
    Comments (maybe, they do not have a title for easy indexing)
Eventually it would be ideal to search the content of entities but that is "nice to have" and is not needed to complete this project.
For each item that the API finds, it will return:
    The ID of the resource
    The type of the resource
    The full title
The middle end will keep track of a list of "recent" entities that the user has navigated to, and will offer these as the default list of items that will be seen when opening the new quick switcher.
In the case of recent documents, the quick switcher will take you to the variant that you most recently had open.

Scope

1 week backend
1 week frontend

Rabbit Holes

    Document Variant information may be confusing- what if a document has different titles in different variants? Are we only searching titles of the owner variant?

No Goes