Commit Graph

6 Commits

Author SHA1 Message Date
Ubbe
4a1cb6d64b fix(frontend): performance and layout issues (#11036)
## Changes 🏗️

### Performance (Onboarding) 🐎 

- Moved non-UI logic into `providers/onboarding/helpers.ts` to reduce
provider complexity.
- Memoized provider value and narrowed state updates to cut unnecessary
re-renders.
- Deferred non-critical effects until after mount to lower initial JS
work.
 
**Result:** faster initial render and smoother onboarding flows under
load.

### Layout and overflow fixes 📐 

- Replaced `w-screen` with `w-full` in platform/admin/profile layouts
and marketplace wrappers to avoid 100vw scrollbar overflow.
- Adjusted mobile navbar position (`right-0` instead of `-right-4`) to
prevent off-viewport elements.

**Result:** removed horizontal scrolling on Marketplace, Library, and
Settings pages; Build remains unaffected.

### New Generic Error pages

- Standardized global error handling in `app/global-error.tsx` for
consistent display and user feedback.
- Added platform-scoped error page(s) under `app/(platform)/error` for
route-level failures with a consistent layout.
- Improved retry affordances using existing `ErrorCard`.

## Checklist 📋

### For code changes:
- [x] I have clearly listed my changes in the PR description
- [x] I have made a test plan
- [x] I have tested my changes according to the test plan:
- [x] Verify onboarding flows render faster and re-render less (DevTools
flamegraph)
- [x] Confirm no horizontal scrolling on Marketplace, Library, Settings
at common widths
  - [x] Validate mobile navbar stays within viewport
- [x] Trigger errors to confirm global and platform error pages render
consistently

### For configuration changes:

None
2025-10-02 10:21:31 +00:00
Zamil Majdy
047f011520 fix(platform): resolve authentication performance bottlenecks and improve reliability (#11028)
## Summary
Fix critical authentication performance bottlenecks causing infinite
loading during login and malformed redirect URL handling.

## Root Cause Analysis
- **OnboardingProvider** was running expensive `isOnboardingEnabled()`
database queries on every route for all users
- **Timezone detection** was calling backend APIs during authentication
flow instead of only during onboarding
- **Malformed redirect URLs** like `/marketplace,%20/marketplace`
causing authentication callback failures
- **Arbitrary setTimeout** creating race conditions instead of proper
authentication state management

## Changes Made

### 1. Backend: Cache Expensive Onboarding Queries
(`backend/data/onboarding.py`)
- Add `@cached(maxsize=1, ttl_seconds=300)` decorator to
`onboarding_enabled()`
- Cache expensive database queries for 5 minutes to prevent repeated
execution during auth
- Optimize query with `take=MIN_AGENT_COUNT + 1` to stop counting early
- Fix typo: "Onboading" → "Onboarding"

### 2. Frontend: Optimize OnboardingProvider
(`providers/onboarding/onboarding-provider.tsx`)
- **Route-based optimization**: Only call `isOnboardingEnabled()` when
user is actually on `/onboarding/*` routes
- **Preserve functionality**: Still fetch `getUserOnboarding()` for step
completion tracking on all routes
- **Smart redirects**: Only handle onboarding completion redirects when
on onboarding routes
- **Performance improvement**: Eliminates expensive database calls for
95% of page loads

### 3. Frontend: Fix Timezone Detection Race Conditions
(`hooks/useOnboardingTimezoneDetection.ts`)
- **Remove setTimeout hack**: Replace arbitrary 1000ms timeout with
proper authentication state checks
- **Add route filtering**: Only run timezone detection on
`/onboarding/*` routes using `pathname.startsWith()`
- **Proper auth dependencies**: Use `useSupabase()` hook to wait for
`user` and `!isUserLoading`
- **Fire-and-forget updates**: Change from `mutateAsync()` to `mutate()`
to prevent blocking UI

### 4. Frontend: Apply Fire-and-Forget Pattern
(`hooks/useTimezoneDetection.ts`)
- Change timezone auto-detection from `mutateAsync()` to `mutate()`
- Prevents blocking user interactions during background timezone updates
- API still executes successfully, user doesn't wait for response

### 5. Frontend: Enhanced URL Validation (`auth/callback/route.ts`)
- **Add malformed URL detection**: Check for commas and spaces in
redirect URLs
- **Constants**: Use `DEFAULT_REDIRECT_PATH = "/marketplace"` instead of
hardcoded strings
- **Better error handling**: Try-catch with fallback to safe default
path
- **Path depth limits**: Reject suspiciously deep URLs (>5 segments)
- **Race condition mitigation**: Default to `/marketplace` for corrupted
URLs with warning logs

## Technical Implementation

### Performance Optimizations
- **Database caching**: 5-minute cache prevents repeated expensive
onboarding queries
- **Route-aware logic**: Heavy operations only run where needed
(`/onboarding/*` routes)
- **Non-blocking updates**: Timezone updates don't block authentication
flow
- **Proper state management**: Wait for actual authentication instead of
arbitrary delays

### Authentication Flow Improvements
- **Eliminate race conditions**: No more setTimeout guessing - wait for
proper auth state
- **Faster auth**: Remove blocking timezone API calls during login flow
- **Better UX**: Handle malformed URLs gracefully instead of failing

## Files Changed
- `backend/data/onboarding.py` - Add caching to expensive queries
- `providers/onboarding/onboarding-provider.tsx` - Route-based
optimization
- `hooks/useOnboardingTimezoneDetection.ts` - Proper auth state + route
filtering + fire-and-forget
- `hooks/useTimezoneDetection.ts` - Fire-and-forget pattern
- `auth/callback/route.ts` - Enhanced URL validation

## Impact
- **Eliminates infinite loading** during authentication flow
- **Improves auth response times** from 5-11+ seconds to sub-second
- **Prevents malformed redirect URLs** that confused users
- **Reduces database load** through intelligent caching  
- **Maintains all existing functionality** with better performance
- **Eliminates race conditions** from arbitrary timeouts

## Validation
-  All pre-commit hooks pass (format, lint, typecheck)
-  No breaking changes to existing functionality
-  Backward compatible with all onboarding flows
-  Enhanced error logging and graceful fallbacks

🤖 Generated with [Claude Code](https://claude.ai/code)

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-10-02 01:26:49 +00:00
Krzysztof Czerwinski
48a0faa611 feat(frontend): Restore onboarding steps (#11027)
Wallet update removed `BUILDER_OPEN` and `BUILDER_RUN_AGENT`.

### Changes 🏗️

- Restore completion codepaths for `BUILDER_OPEN` and
`BUILDER_RUN_AGENT` for analytical purposes

### Checklist 📋

#### For code changes:
- [x] I have clearly listed my changes in the PR description
- [x] I have made a test plan
- [x] I have tested my changes according to the test plan:
  - [x] Tasks are completed silently
2025-10-01 04:53:51 +00:00
Krzysztof Czerwinski
f33ec1f2ec feat(platform): New retention-focused tasks and wallet update (#10977)
### Changes 🏗️

- Rename wallet and update design
- Update tasks and add Hidden Tasks section
- Update onboarding backend code and related db migration
- Add progress bar for some tasks

### Checklist 📋

#### For code changes:
- [x] I have clearly listed my changes in the PR description
- [x] I have made a test plan
- [x] I have tested my changes according to the test plan:
  - [x] All tasks can be finished
  - [x] Finished tasks add correct amount of credits

---------

Co-authored-by: Zamil Majdy <zamil.majdy@agpt.co>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Nicholas Tindle <nicholas.tindle@agpt.co>
Co-authored-by: Reinier van der Leer <pwuts@agpt.co>
2025-10-01 01:29:30 +00:00
Ubbe
e5d870a348 refactor(frontend): move old components to __legacy__ (#10953)
## Changes 🏗️

Moving non-design-system components ( old ) to a `components/__legacy__`
folder 📁 so like this is more obvious for developers that they should
not import them or use them on new features. What is now top-level in
`/components` is what it is actively maintained.

Document some existing components like `<Alert />`. More on this coming
on follow-up PRs.

## Checklist 📋

### For code changes:
- [x] I have clearly listed my changes in the PR description
- [x] I have made a test plan
- [x] I have tested my changes according to the test plan:
  - [x] Test and types pass on the CI
  - [x] Run app locally, click around, looks good 

### For configuration changes:

None
2025-09-18 21:37:43 +00:00
Ubbe
f283e6c514 refactor(frontend): cleanup of components folder (2/3) (#10942)
## Changes 🏗️

Following up my initial PR to tidy up the `components` folder
https://github.com/Significant-Gravitas/AutoGPT/pull/10940.

This is mostly moving files around and renaming some + documenting them
on the design system as needed. Should be pretty safe as long as types
on the CI pass.

## Checklist 📋

### For code changes:

- [x] I have clearly listed my changes in the PR description
- [x] I have made a test plan
- [x] I have tested my changes according to the test plan:
  - [x] Run the app locally
  - [x] Click around, looks ok
  - [x] Test and types pass on the CI  

### For configuration changes:

None
2025-09-18 16:21:18 +09:00