* Integrate database blob diff and lazy row loading
* chore: load blob
* chore: fix cell render
* chore: create csv api endpoint
* chore: add test
* chore: fix lint
* chore: add test
* chore: add test
* chore: fix test
* chore: stable scroll test
* chore: fix filter test
* fix: row detail modal more actions menu and add test data-testid
- Fix critical bug in DatabaseRowModal where clicking more actions button
closed the modal instead of opening the dropdown menu (removed erroneous
onClick handler from DropdownMenuTrigger)
- Add data-testid attributes for testing:
- row-detail-more-actions: more actions button
- row-detail-duplicate: duplicate menu item
- row-detail-delete: delete menu item
- row-title-input: row title input field
- Update row-detail-helpers.ts selectors to use new data-testid attributes
- Fix row-detail.cy.ts tests to use correct selectors and test logic
* chore: fix sort
* chore: fix sort
* chore: separate test
* chore: stable test
* chore: fix test
* chore: separate test
1. Clear old token before processing OAuth callback to prevent axios
interceptor from attempting auto-refresh of expired old token while
processing new OAuth tokens
2. Add multi-stage authentication checks in AppAuthLayer with proper
timeouts to wait for React state sync before triggering logout
3. Add proactive state sync in AppConfig to ensure isAuthenticated
state matches localStorage token on mount
4. Create AppWorkspaceRedirect component to handle /app -> /app/:workspaceId
navigation after OAuth callback, preventing undefined workspace errors