Landing Page → Centered Input → Type Query → View Results → Explore
Steps:
- User lands on index.html
- Sees centered input with placeholder "Ask"
- Optional: Select site from dropdown (defaults to "all")
- Optional: Select mode (list/summarize/generate)
- Types natural language query
- Presses Enter or clicks send button
- Views streaming results
- Can continue conversation or start new
UI Elements:
- Centered input box with site/mode selectors
- Loading animation (three dots)
- Results stream in real-time
- Sidebar hidden initially on mobile
Login → OAuth Provider → Return → Conversations Sync → Enhanced Experience
Steps:
- Click "Login" button in header
- Select OAuth provider (Google/Facebook/Microsoft/GitHub)
- Authenticate with provider
- Return to app with token
- Previous conversations load in sidebar
- User info displayed in header
- Conversations auto-save to server
UI Elements:
- Login button → User menu (when authenticated)
- OAuth popup window
- Provider selection interface
- Loading state during sync
- Conversation list in sidebar
Query → Results List → Click Item → New Tab with Source
- Results ranked by relevance
- Rich snippets with descriptions
- Schema.org data rendered appropriately
- External links open in new tabs
Query → Summary Text → Supporting Results → Explore Sources
- AI-generated summary appears first
- Relevant results listed below
- Summary based on retrieved content
- Citations link to sources
Query → AI Response → Referenced Items → Deep Exploration
- Comprehensive AI-generated answer
- Items used for generation listed
- More conversational response
- Supports follow-up questions
Initial Query → Response → Follow-up Query → Contextual Response
Features:
- Previous queries provide context
- Pronouns resolved (e.g., "it", "that")
- Conversation history in sidebar
- Can switch between conversations
- Delete unwanted conversations
Select Site → Targeted Query → Filtered Results → Site-Specific Features
Examples:
- Recipe sites: Ingredient lists, cook time, ratings
- Real estate: Price, location, amenities with map
- News: Publication date, author, summary
- E-commerce: Price, reviews, availability
- Initial Query: Animated three dots
- Streaming: Results appear as received
- Images: Lazy loaded with placeholders
- Maps: "Loading map..." placeholder
-
No Results
- Message: "No results were found"
- Suggestions for refining query
-
Connection Error
- Message: "Unable to connect to server"
- Retry button
- Offline indicator
-
Authentication Error
- Message: "Authentication failed"
- Clear login state
- Redirect to login
-
Rate Limiting
- Message: "Too many requests"
- Countdown timer
- Suggestion to wait
-
No Conversations:
- "Start a new conversation" prompt
- Centered input visible
-
No Sites Available:
- Default to "all" sites
- Error message in console
-
No Remembered Items:
- Section hidden
- Appears when items added
Request Fails → Retry Logic → User Feedback → Fallback Options
Handling:
- Automatic retry with exponential backoff
- Show user-friendly error message
- Maintain partial results if available
- Allow manual retry
- Cache results locally when possible
Stream Breaks → Reconnect Attempt → Resume or Show Partial
Recovery:
- EventSource error triggers reconnect
- Maximum 3 retry attempts
- Show partial results received
- "Load more" option if stream incomplete
- Complete signal ensures finalization
OAuth Fails → Clear State → Show Error → Remain Anonymous
- OAuth popup blocked: Instruction to allow popups
- Provider error: Return to provider selection
- Token invalid: Clear and re-authenticate
- Network error: Retry with timeout
Token Expires → Refresh Attempt → Re-login if Needed
- 401 response triggers token refresh
- Refresh fails: Clear auth state
- Redirect to login with return URL
- Preserve current conversation locally
Invalid JSON → Parse Error → Show Error → Continue Service
- Log parsing error
- Skip malformed message
- Continue processing stream
- Show partial results
Incomplete Data → Validation → Default Values → Degraded Display
- Missing title: Use URL as fallback
- Missing description: Show "No description"
- Missing score: Default sorting
- Missing site: Categorize as "unknown"
- Tab through all interactive elements
- Enter to send message
- Escape to close dropdowns
- Arrow keys in dropdown lists
- ARIA labels for icons
- Alt text for images
- Semantic HTML structure
- Status announcements for loading
- High contrast text
- Focus indicators
- Sufficient touch targets (44x44px)
- Responsive text sizing
- Critical CSS inlined
- JavaScript modules lazy loaded
- Fonts loaded asynchronously
- Images lazy loaded below fold
- Virtual scrolling for long result lists
- Debounced search input
- Result deduplication
- Memory cleanup for old messages
- Sidebar collapsed by default
- Touch-optimized controls
- Reduced animation on low-end devices
- Offline detection and messaging
- Loading animations
- Hover states
- Active states
- Success/error colors
- Click feedback
- Drag indicators (future)
- Progress indicators
- Completion signals
- User-friendly messages
- Actionable suggestions
- Technical details in console
- Support contact options
- Local storage for unauthenticated users
- Server storage only when authenticated
- Clear data option in settings
- No tracking without consent
- HTTPS enforced
- OAuth tokens in Authorization header
- XSS prevention in rendering
- Content Security Policy headers