* feat: put tenant in path everywhere
* fix: no need for a tenant provider
* feat: rm tenant from local storage + query params
* fix: use `tenantId` everywhere we access the id
* fix: couple more
* feat: separate hook for getting just the tenant id
* fix: fix a couple routes
* chore: tons more generated stuff
* fix: login page
* fix: some paths
* fix: onboarding create tenant page
* feat: sent ui version when creating tenant
* fix: new tenant creation on signup
* fix: naming
* feat: redirect to v1 if the tenant has a v1 ui ver
* hack: redirect button if we get stuck
* fix: cruft
* fix: login
* chore: lint
* fix: redirect to signup
* fix: null pointer
* fix: redirects
* fix: redirect to the right place on login
* fix: make `/learn` tenanted
* fix: check tenant exists
* fix: broken lesson styling
* chore: lint
* Feat: Worker Detail (#1765)
* fix: nuke breadcrumbs
* fix: rip out query param state thing for now
* fix: rm more query state
* fix: eslint warnings
* debug: infinite loop
* fix: infinite loop
* fix: worker detail
* feat: initial work on worker filter
* fix: docs
* fix: rename worker services to pools
* fix: copy
* fix: rename
* fix: bunch more renaming
* fix: tsc
* fix: one more
* fix: more "service" refs
* fix: whoooole bunch more naming
* fix: last few
* fix: id -> name
* fix: list task runs on worker
* fix: filter state updates
* feat: worker detail query
* fix: separate components for the two pages
* fix: tsc
* feat: start sending actions over the API for worker list
* feat: actions view
* fix: styling
* fix: group pools by actions
* fix: ordering
* fix: improve sorting
* fix: copilot
* fix: don't set `replace`