* Maintain tag casing
* Persist column visibility in zustand
* Persist only visibleColumns key
* merge persisted state
* Only show ColumnVisibilityDropdown after rehydration
* Record storage rehydrated
* Add useIsClientRehydrated hook
* Hide ActionButton text on mobile
* Condense Paginator on mobile
---------
Co-authored-by: Kyle Corbitt <kyle@corbt.com>
Makes it so our most critical jobs go through first. Priority order:
1. Force-refetched cells
2. Cells visible on the current page
3. All other cells
4. Retries
5. Evaluations
We've outgrown the run-everything-on-one-machine setup. This change moves background jobs to a different Docker image in production. It also adds a `jobKey` to certain jobs so if we try to process the same cell multiple times it'll only actually run the job once.
Also added some high-level tests to minimize the chances that we're breaking anything.
The typescript SDK is mostly functional at this point, with the exception that we don't have a build process or way to import it when deployed as an NPM package.
Previously we were opening a new database connection for each task we added. Not a problem at small scale but kinda overwhelming for Postgres now that we have more usage.
This way we don't re-render the entire cell every time a variable changes. Better performance and handles modals correctly.
OutputCell is still a pretty messy component, which we'll have to address at some point, but the complexity is still manageable for now.
* Allow user invitations
* Restyle inviting members
* Remove annoying comment
* Add page for accepting an invitation
* Send invitation email with Brevo
* Prevent admins from removing personal project users
* Mark access ceontrol for cancelProjectInvitation
* Make RadioGroup controlled
* Shorten form helper text
* Use nodemailer to send emails
* Update .env.example
* Fix null case for tag comparisons
* Change debounce time to 500ms
* Add NOT_CONTAINS
* Avoid sql injection
* Store filters by id
* Fix chained NOT_CONTAINS