Skip to content

Conversation

@HelderMendes
Copy link
Contributor

This PR contains the complete migration of the frontend based on the initial TODO list. The application is functionally stable.

### What's in it:
πŸš€ Frontend Migration: Next.js Stack
This PR contains the complete migration of the frontend based on the initial TODO list. The application is functionally stable.

βœ… What's Included:
New Stack: Full migration to Next.js in the app-next directory.

Status Logic: Default dataset view and sidebar counts are now filtered to "Active" by default.

Pagination: Implemented a UI warning and block at the 10,000-result limit to handle Elasticsearch deep pagination constraints.

UI Refinements

Require backend/database updates:
OAuth Support: Need backend endpoints for Google/GitHub ID mapping and nullable password logic.

Profile Avatars: Need a storage solution (S3/Filesystem) and a POST /api/v1/user/avatar endpoint.

Social Features (Likes and possibly notebooks): Requires a new likes table and endpoints to toggle likes and fetch user favorites.

Helder Mendes added 30 commits December 9, 2025 09:07
…e side renders a single dataset's details
…lbacks and add GitHub/OpenML avatar domains to allowed images
…on mount, use Flask backend in dev, Vercel Blob in production, better error messages
…en NumberOfClasses/Features/Instances are null
- Add data_id to search_fields with highest weight (5) for exact ID matches
- Fix crash when NumberOfClasses/Features/Instances are null
- Now supports searching datasets by ID (e.g., 47118)
- Remove data_id from search_fields (keyword field incompatible with multi_match)
- Add ID detection logic in OpenMLSearchConnector
- When search term is numeric, add exact term query with boost:100
- Supports data_id, task_id, flow_id, run_id based on index name
- Fixes 400 Elasticsearch error when searching by ID
- Search results header shows 'Search results for "[term]" β€” X results found'
- Displays on all search pages: Datasets, Tasks, Flows, Runs
- Header search bar now syncs with URL query parameter (shows what you searched for)
- Clear visual feedback improves search transparency
- Consistent UX across all entity search pages
Helder Mendes added 30 commits December 19, 2025 15:28
- Removed isSearchingRef and lastNavigatedQueryRef (causing sync issues)
- URL sync only on pathname change (not every param change)
- Auto-search compares debouncedSearchQuery directly with searchParams
- Simpler logic = more reliable behavior
- All searches now work: type + wait, type + Enter, consecutive searches
- Store current URL query in urlQueryRef
- URL sync updates both state AND ref
- Auto-search compares against ref (not searchParams)
- Auto-search does NOT depend on searchParams (prevents loop)
- Clean separation: sync listens to URL, auto-search listens to typing
- When already on /datasets and searching again, use router.replace()
- router.replace() forces SearchProvider to re-initialize with new query
- router.push() only used when navigating to different search page
- This ensures search results actually update on consecutive searches
- Added justNavigatedRef flag to track when we initiated navigation
- URL sync skips updating searchQuery if we just navigated
- Prevents the cycle: type β†’ navigate β†’ sync resets input β†’ can't type
- Now you can continuously type and search works correctly
- Use setTimeout to delay resetting justNavigatedRef
- Prevents sync from running before router operation completes
- Flag stays true during the entire navigation cycle
- Now typing actually triggers searches
- Removed urlQueryRef and justNavigatedRef (causing conflicts)
- Use simple router.push() for all navigation
- Let SearchProvider manage URL state (trackUrlState: true)
- Direct comparison with searchParams for debounce check
- Clean, simple logic like /users search that works
- Use lastUrlQueryRef to track what we last navigated to
- URL sync only on pathname change (not every searchParams)
- Auto-search compares against ref, NOT searchParams (breaks loop)
- Update ref immediately before navigation
- No jumping, no loops, clean behavior
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant