Conversation
* update * fix: update * update * update * update * update * fix: opening threads * fix: rm threads dropdwon & added back link to bot page thread view page * fix: rm threads dropdwon & added back link to bot page thread view page * fix: update * fix: added back to profile page * fix: added sticky and color
…ock & clipboard hook (#425) * fix: codeblock ctas * fix: ts build
…426) * fix: css handleCLick condition * fix: get latest search params, continuous thread * fix(impr): all messages sorting * perf(impr): sign in & up redirection tweak * perf(impr): mobile chat css
…ck (#432) * refactor: use chat and continue generation * fix: uniq slug and id gen (#433) * fix: uniq thread + msg slug gen * style: formatting * fix: thread user attachments state upt * perf: impr thread component at all pages + mobile tweaks * refactor: thread-component card * chore: restore continue generation v1 * feat(impr): thread component card * fix: admin panel n actions * fix: fetch getThreads * chore: continue conversation v1.2 * chore: continue and update thread content * chore: add ui control continue generation state * chore: fix infinity loop * chore(impr): enable upt msg table permission * fix: seo thread fetch * chore: style formating * fix(impr): continued thread title + thread component reusability * chore: refactor loadings + extending sonners --------- Co-authored-by: bran18 <andreyfdez18@gmail.com> --------- Co-authored-by: Roberto Lucas <andler@bitcash.org>
* feat: add gemini provider * chore: update icons
* feat(wip): impr continuing thread tags + accordion first msg toggle * feat(impr): continuing thread tags + accordion at first message + header mobile tweak * style(impr): mobile thread-component x-axis space * perf(style): coderabbitai feedbacks * fix: css typo * perf: sendMessageFromResponse clicked guard + continued thread tags label tweak * chore: user thread panel clean up * fix: user-thread-panel infinite loader * perf: impr shared accordion animation and ux * style: defaultAccordionState comments loc * fix: record type warning, hasura updateMessage * fix: getThread user data, shared-accordion
…bels, parent thread guard
* update * fix: update * update * update * update * update * refactor: profile page threads pop up * fix: update config * fix: update * fix: update * fix: make profile page scroll on hero * fix: bot make popup and scroll * fix: make profile page sidebar scroll independently * fix: make profile page sidebar scroll independently * fix: check the category along the chatbot when it's not checked * fix: check the category along the chatbot when it's not checked --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> Co-authored-by: Roberto Lucas <andler@bitcash.org>
* feat-add-models * feat-add-models * feat-add-models * chore: add model * fix: typo * chore: add toggler color
… seeds (#447) * feat(wip): thread llm context, prev questions * fix: previousQuestionsString slice * fix: clickedContentId in followingQuestionsPrompt * feat: isContinued + model type in message table * fix: ts typo + sendMessageFromResponse callback call * fix: ts typo
* fix(wip): bot profile thread list * style: formatting
* fix: new chat state reset * fix: genql gen + share link check * fix: og img * fix: duplicate role permission in msg table
* chore: restore base version * chore: add new logic and hooks * chore: fix providers file * chore: improve continuation prompt * chore: add exlucision flag * chore: add better handler * chore: updated flow + experimental delay * chore: extended time * chore(impr): streamDelayMs experimental feat flag * style: formatting --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com>
* fix: profile sidebar cat opt render * chore: clean-up
…ess and type support (#456) * fix: slugify fn * chore: devMode logs
* fix: slugify first request delay incr + genql ts, seeds & model migration upt * fix: create thread & msg ts
* update * fix: update * update * update * update * update * fix: use the user avatar or robohash * fix: added avater to user menu * fix: user avatar * fix: reset search input when filter by category or chatbot * fix: personal chat browse provider + username chk in sign up * chore: clean duplicated if condition signup --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com>
* impr: continuation logic flow * impr: continuation logic flow * chore: update createImprovementPrompt * chore: upt logs --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com>
…gic (#462) * feat: models table * style: formatting * fix: continuation accordion content * fix: sql + metadata typo
* fix: mob prof sidebar + sign-up pw verif + username chk * chore: upt genql gen
* wip: model selector query * wip: model selector query * chore: improve funtions * chore: add coderabbit suggestion * chore: add hasura permissions, models table * style: formatting * chore: fix get model client type * chore: add model --------- Co-authored-by: Roberto Romero Lucas <contact@andler.dev>
* chore: remove prefetch on sidebar & profile navigation * perf: impr profile sidebar * fix: infinite scroll load more fetch * perf(impr): google sign-in * perf(impr): session loaders tweak * perf: impr categoriesId obtention * fix: tailwind typo
Reviewer's GuideThis pull request refactors the AI model selection to fetch models dynamically from the backend instead of using a hardcoded list. It introduces a new Hasura service and updates the File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
|
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
WalkthroughThis update introduces several UI and backend improvements across the application. The profile sidebar is refactored to use an accordion UI for threads, with improved toggle state management and accessibility. CSS selectors are broadened to unify styling between the Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant UI
participant Auth
participant HasuraService
User->>UI: Clicks "Sign in with Google"
UI->>Auth: Triggers Google sign-in
Auth->>Auth: Generate username and profile picture
Auth->>HasuraService: Create user with generated info
HasuraService-->>Auth: Return user data
Auth-->>UI: Complete sign-in flow
UI-->>User: Display authenticated UI
sequenceDiagram
participant User
participant Sidebar
participant Accordion
User->>Sidebar: Loads profile page
Sidebar->>Accordion: Render threads section as accordion
User->>Accordion: Toggles threads section
Accordion-->>Sidebar: Update open/close state
Sidebar-->>User: Show/hide threads content
Possibly related PRs
Suggested labels
Poem
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 ESLint
apps/masterbots.ai/app/globals.cssOops! Something went wrong! :( ESLint: 8.57.1 ESLint couldn't find the config "next/core-web-vitals" to extend from. Please check that the name of the config is correct. The config "next/core-web-vitals" was referenced from the config file in "/apps/masterbots.ai/.eslintrc.json". If you still have problems, please stop by https://eslint.org/chat/help to chat with the team. apps/masterbots.ai/components/auth/user-login.tsxOops! Something went wrong! :( ESLint: 8.57.1 ESLint couldn't find the config "next/core-web-vitals" to extend from. Please check that the name of the config is correct. The config "next/core-web-vitals" was referenced from the config file in "/apps/masterbots.ai/.eslintrc.json". If you still have problems, please stop by https://eslint.org/chat/help to chat with the team. apps/masterbots.ai/auth.tsOops! Something went wrong! :( ESLint: 8.57.1 ESLint couldn't find the config "next/core-web-vitals" to extend from. Please check that the name of the config is correct. The config "next/core-web-vitals" was referenced from the config file in "/apps/masterbots.ai/.eslintrc.json". If you still have problems, please stop by https://eslint.org/chat/help to chat with the team.
✨ Finishing Touches
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Pull Request Overview
This PR implements a series of updates across the application including adjustments to pagination constants, UI and icon improvements, and enhancements to thread fetching and model selection logic. Key changes include reducing page size constants and updating icon properties, refining thread pagination and search placeholder logic, and introducing a new model grouping component with updated model enum definitions.
Reviewed Changes
Copilot reviewed 30 out of 31 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| apps/masterbots.ai/lib/constants/hasura.ts | Reduced page size constants to support finer pagination control. |
| apps/masterbots.ai/components/ui/icons.tsx | Added size props to SVG icons and introduced a new IconGoogle component. |
| apps/masterbots.ai/components/shared/shared-search.tsx | Updated placeholder text from “category” to “topic” for consistency. |
| apps/masterbots.ai/components/shared/no-results-card.tsx | Improved no-results icon logic and adjusted layout for clarity. |
| apps/masterbots.ai/components/shared/login-button.tsx | Changed button variant and updated signIn callback URL along with Google icon integration. |
| apps/masterbots.ai/components/routes/thread/user-thread-panel.tsx | Refactored pagination logic and state updates; removed PAGE_SM_SIZE usage in favor of PAGE_SIZE. |
| apps/masterbots.ai/components/routes/chat/prompt-form/index.tsx | Updated model matching regex to reflect new naming conventions. |
| apps/masterbots.ai/components/routes/chat/chat-model-group.tsx | Introduced a new component to group models based on type and availability. |
| apps/masterbots.ai/components/routes/chat/chat-combobox.tsx | Revised model selection logic and integrated multi-model feature flag. |
| Other files | Minor adjustments including disabling prefetch on links, API updates in auth, and metadata improvements in Hasura YAML. |
Files not reviewed (1)
- apps/masterbots.ai/app/globals.css: Language not supported
Comments suppressed due to low confidence (4)
apps/masterbots.ai/lib/constants/hasura.ts:1
- [nitpick] Ensure that the updated PAGE_SIZE and PAGE_SM_SIZE values are reflected in the related pagination documentation and tested across the application for consistent behavior.
export const PAGE_SIZE = 20
apps/masterbots.ai/components/routes/thread/user-thread-panel.tsx:172
- [nitpick] Review the updated pagination logic here—using PAGE_SIZE for the loadMore function—to ensure that merging new threads into state works as intended without unexpected omissions.
if (totalThreads === count) return
apps/masterbots.ai/components/routes/chat/prompt-form/index.tsx:257
- [nitpick] Verify that the updated regex pattern correctly matches the intended model naming conventions after the recent enum changes; adjust if the order or casing needs further refinement.
selectedModel.match(/(DeepSeekR1|GroqDeepSeek)/)
apps/masterbots.ai/app/api/chat/models/models.ts:14
- [nitpick] Double-check that the updated enum values and ordering are consistent with the rest of the codebase and that no deprecated keys remain in use; update references as needed.
Default = 'gpt-4.1-mini-2025-04-14', //! OpenAI_4_1_mini
There was a problem hiding this comment.
Hey @AndlerRL - I've reviewed your changes - here's some feedback:
- The
getModelClientTypefunction relies on string matching for model names; consider using a dedicated field from the database model data for more robust client type determination. - The CSS changes introduce duplicated styles for
[data-route="profile"]and[data-route="public"]; explore consolidating these rules for better maintainability. - Several links now have
prefetch={false}; ensure this change doesn't negatively impact perceived navigation performance where prefetching might be beneficial.
Here's what I looked at during the review
- 🟡 General issues: 1 issue found
- 🟢 Security: all looks good
- 🟢 Testing: all looks good
- 🟢 Documentation: all looks good
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.
|
@coderabbitai review |
✅ Actions performedReview triggered.
|
There was a problem hiding this comment.
Actionable comments posted: 2
🔭 Outside diff range comments (1)
apps/masterbots.ai/lib/helpers/ai-helpers.ts (1)
25-46: 💡 Verification agent🧩 Analysis chain
TODO comment should be addressed
There's a TODO comment at line 25 indicating that this function needs to be refactored to use an enum from Hasura instead of the
AiClientType.
🏁 Script executed:
#!/bin/bash # Check if there's a model enum type in the Hasura schema files fd -g "*schema*.{graphql,ts,js}" | xargs grep -l "enum.*model" 2>/dev/nullLength of output: 102
🏁 Script executed:
#!/bin/bash # Display the model enum block from the Hasura-generated schema grep -R -n "enum.*model" packages/mb-genql/generated/schema.ts | sed -n '1p' | cut -d: -f1 | xargs -I{} sed -n "{},+10p" packages/mb-genql/generated/schema.tsLength of output: 436
Refactor
getModelClientTypeto use Hasura’sModelsEnumEnumThe TODO at line 25 should be addressed by importing and using the generated enum from
packages/mb-genql/generated/schema.tsrather than working off a plain string. Specifically:• Update the function signature to
import { ModelsEnumEnum } from 'packages/mb-genql/generated/schema'; export function getModelClientType(model: ModelsEnumEnum): AiClientType { … }• Replace the lowercase‐string checks with a
switch(or a lookup object) on the enum values:-export function getModelClientType(model: string): AiClientType { - const modelLower = model.toLowerCase() - if (modelLower.includes('gpt') || modelLower.includes('o4-mini')) { - return 'OpenAI' - } - if (modelLower.includes('claude')) { - return 'Anthropic' - } - if (modelLower.startsWith('deepseek')) { - return 'GroqDeepSeek' - } - if (modelLower.startsWith('gemini')) { - return 'Gemini' - } - console.error(`Unsupported model specified: ${model}`) - throw new Error('Unsupported model specified') -} +export function getModelClientType(model: ModelsEnumEnum): AiClientType { + switch (model) { + case 'OPENAI': + case 'OPENAI__4_1': + return 'OpenAI' + + case 'CLAUDE__3_7__SONNET': + return 'Anthropic' + + case 'DEEPSEEK': + case 'GROQDEEPSEEK': + return 'GroqDeepSeek' + + case 'GEMINI__2_5__FLASH': + case 'GEMINI__2_5__PRO': + case 'GEMINI__FLASH__LITE': + return 'Gemini' + + default: + console.error(`Unsupported model specified: ${model}`) + throw new Error('Unsupported model specified') + } +}• Remove the old string‐based TODO once refactored.
♻️ Duplicate comments (3)
apps/masterbots.ai/components/routes/chat/chat-combobox.tsx (1)
43-43: Add braces to conditionalThis single-line if statement should follow best practices by using braces.
- if (!session?.user?.hasuraJwt) return null + if (!session?.user?.hasuraJwt) { + return null + }apps/masterbots.ai/components/layout/profile/profile-page-sidebar.tsx (1)
44-49: Use braces for conditional statementsThe if statement should use block braces even for single-line statements to prevent potential bugs when additional statements are added later.
apps/masterbots.ai/components/routes/thread/user-thread-panel.tsx (1)
172-172: Use braces for conditional statementsThe if statement should use block braces even for single-line statements to prevent potential bugs when additional statements are added later.
🧹 Nitpick comments (8)
apps/masterbots.ai/app/globals.css (1)
457-465: Duplicated CSS selectorsThere appears to be a duplication of the same selectors and rules that were defined earlier in the file (lines 397-400, 402-405). This redundancy should be removed to improve maintainability.
Consider removing these duplicate selectors to avoid potential maintenance issues where one set might be updated while the other is forgotten:
-/* Public route styles */ -[data-route="public"] .sidebar-gradient:hover:not(.selected), -[data-route="profile"] .sidebar-gradient:hover:not(.selected) { - background-image: var(--background-public-hover-gradient); -} - -[data-route="public"] .sidebar-gradient.selected, -[data-route="profile"] .sidebar-gradient.selected { - background-image: var(--background-public-gradient); -}apps/masterbots.ai/components/shared/shared-search.tsx (1)
166-166: Updated fallback placeholder text for consistency.The fallback search placeholder text has been updated from "any category" to "any topic", maintaining consistent terminology throughout the user interface.
Consider simplifying this ternary expression:
- `Search all messages in ${searchPlaceholder ? searchPlaceholder : 'any topic'}...` + `Search all messages in ${searchPlaceholder || 'any topic'}...`apps/masterbots.ai/components/routes/chat/chat-model-group.tsx (1)
32-34: Added conditional debug logging.Good practice using a feature flag for debug logs to prevent them from appearing in production.
Consider removing these debug logs before deploying to production or adding a more descriptive message to help troubleshoot specific issues.
apps/masterbots.ai/components/routes/chat/chat-combobox.tsx (2)
37-54: Enhance error handling for user data fetchingThe user data fetching logic correctly handles authentication state, but could benefit from improved error handling.
Consider adding a notification or visual feedback when the user data fetch fails:
} = useAsync(async () => { if (!session?.user?.hasuraJwt) return null const userResults = await getUserBySlug({ slug: session?.user.slug || '', isSameUser: true, }) if (userResults.error) { + console.error('Failed to fetch user data:', userResults.error) throw new Error(userResults.error) } return userResults.user }, [session?.user?.hasuraJwt]) + + React.useEffect(() => { + if (errorUserData) { + // Add toast or notification here + console.error('Error fetching user data:', errorUserData) + } + }, [errorUserData])
81-104: Consider refactoring complex model selection logicThe model selection logic remains complex and would benefit from extraction into helper functions for improved readability.
Consider refactoring the handleModelSelect function to improve readability:
const handleModelSelect = (modelValue: string) => { if (!appConfig.features.devMode || processingSelectionRef.current) return processingSelectionRef.current = true setOpen(false) setTimeout(() => { try { - if (modelValue.includes('deepseek-r1-distill-llama-70b')) { - if (!isDeepThinking) { - toggleDeepThinking() - } - } else if (modelValue.includes('deepseek') && isDeepThinking) { - toggleDeepThinking() - } else if (!modelValue.includes('deepseek') && !isDeepThinking) { - changeModel(modelValue) - } + handleDeepThinkingToggle(modelValue) } finally { setTimeout(() => { processingSelectionRef.current = false }, 150) } }, 100) } + + // Helper function to handle deep thinking toggle logic + const handleDeepThinkingToggle = (modelValue: string) => { + const isDeepSeekDistill = modelValue.includes('deepseek-r1-distill-llama-70b') + const isDeepSeekModel = modelValue.includes('deepseek') + + if (isDeepSeekDistill && !isDeepThinking) { + toggleDeepThinking() + } else if (isDeepSeekModel && isDeepThinking) { + toggleDeepThinking() + } else if (!isDeepSeekModel && !isDeepThinking) { + changeModel(modelValue) + } + }apps/masterbots.ai/lib/helpers/ai-helpers.ts (2)
35-37: Code cleanup - commented out code should be removedRather than commenting out the Perplexity model client type detection, consider removing it entirely if it's no longer needed.
- // if (modelLower.includes('llama') || modelLower.includes('sonar')) { - // return 'Perplexity' - // }
89-106: Code cleanup needed - commented case and duplicate logicThe commented out
DeepSeekcase and duplicate streamer payload logic should be cleaned up.- // case 'DeepSeek': case 'GroqDeepSeek': return payload.map((message) => { if (message.role === 'assistant') { const content = message.content as string const reasoningMatch = content.match(/<think>(.*?)<\/think>/s) const answerMatch = content.match(/<answer>(.*?)<\/answer>/s) return { ...message, content: answerMatch ? content : `<answer>${content}</answer>`, reasoning: reasoningMatch ? reasoningMatch[1] : '<think>Analyzing the context and formulating a response...</think>', } } return message })apps/masterbots.ai/components/routes/thread/user-thread-panel.tsx (1)
137-162: Refactored fetchBrowseThreads function for better parameter handlingThe function now uses a typed parameter object and more clearly handles conditional logic for category selection and chatbot name resolution.
However, there's a console.log statement on line 159 that should be removed before production deployment:
- console.log('browseThreadGetParams', browseThreadGetParams)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (24)
apps/masterbots.ai/app/globals.css(3 hunks)apps/masterbots.ai/auth.ts(1 hunks)apps/masterbots.ai/components/auth/user-login.tsx(2 hunks)apps/masterbots.ai/components/layout/header/user-menu.tsx(1 hunks)apps/masterbots.ai/components/layout/profile/profile-page-sidebar.tsx(4 hunks)apps/masterbots.ai/components/layout/sidebar/sidebar-link.tsx(1 hunks)apps/masterbots.ai/components/routes/chat/chat-combobox.tsx(4 hunks)apps/masterbots.ai/components/routes/chat/chat-model-group.tsx(4 hunks)apps/masterbots.ai/components/routes/chat/prompt-form/index.tsx(2 hunks)apps/masterbots.ai/components/routes/thread/profile-avatar.tsx(1 hunks)apps/masterbots.ai/components/routes/thread/user-thread-panel.tsx(9 hunks)apps/masterbots.ai/components/shared/chatbot-avatar.tsx(1 hunks)apps/masterbots.ai/components/shared/login-button.tsx(3 hunks)apps/masterbots.ai/components/shared/no-results-card.tsx(2 hunks)apps/masterbots.ai/components/shared/shared-search.tsx(2 hunks)apps/masterbots.ai/components/ui/icons.tsx(3 hunks)apps/masterbots.ai/lib/constants/hasura.ts(1 hunks)apps/masterbots.ai/lib/helpers/ai-helpers.ts(2 hunks)apps/masterbots.ai/lib/hooks/use-chat-attachments.ts(1 hunks)apps/masterbots.ai/lib/hooks/use-deep-thinking.tsx(2 hunks)apps/masterbots.ai/lib/hooks/use-sidebar.tsx(1 hunks)apps/masterbots.ai/lib/models.tsx(1 hunks)apps/masterbots.ai/lib/sentry.ts(1 hunks)apps/masterbots.ai/services/hasura/hasura.service.ts(2 hunks)
🧰 Additional context used
🧠 Learnings (1)
apps/masterbots.ai/components/routes/thread/user-thread-panel.tsx (1)
Learnt from: AndlerRL
PR: bitcashorg/masterbots#287
File: apps/masterbots.ai/components/routes/thread/user-thread-panel.tsx:39-45
Timestamp: 2024-10-23T19:11:47.520Z
Learning: In the `UserThreadPanel` component (`apps/masterbots.ai/components/routes/thread/user-thread-panel.tsx`), the `count` state variable is used in the `loadMore` function and depends on `finalThreads.length`, so updating `count` in the `useEffect` is necessary.
🧬 Code Graph Analysis (5)
apps/masterbots.ai/lib/models.tsx (1)
apps/masterbots.ai/components/ui/icons.tsx (6)
IconOpenAI(904-904)IconClaude(886-886)IconLlama(900-900)IconDeepSeek(890-890)IconGemini(896-896)IconWordware(918-918)
apps/masterbots.ai/auth.ts (1)
apps/masterbots.ai/lib/username.ts (1)
generateUsername(21-35)
apps/masterbots.ai/components/routes/chat/chat-model-group.tsx (2)
packages/mb-env/src/config.env.ts (1)
appConfig(2-38)apps/masterbots.ai/lib/models.tsx (1)
formatModelName(37-42)
apps/masterbots.ai/components/shared/login-button.tsx (2)
apps/masterbots.ai/auth.ts (1)
signIn(191-246)apps/masterbots.ai/components/ui/icons.tsx (1)
IconGoogle(898-898)
apps/masterbots.ai/lib/hooks/use-sidebar.tsx (1)
packages/mb-lib/src/text/text.lib.ts (1)
toSlug(12-44)
🔇 Additional comments (55)
apps/masterbots.ai/components/shared/chatbot-avatar.tsx (1)
29-29: Performance optimization: Disabled link prefetchingExplicitly setting
prefetch={false}prevents Next.js from automatically prefetching the linked page when it appears in the viewport, which can reduce unnecessary network requests and improve overall application performance.apps/masterbots.ai/components/routes/thread/profile-avatar.tsx (1)
51-51: Performance optimization: Disabled link prefetchingExplicitly setting
prefetch={false}prevents Next.js from automatically prefetching the linked page, which helps reduce unnecessary network requests and improve performance, especially important for profile links that may not always be visited.apps/masterbots.ai/components/layout/sidebar/sidebar-link.tsx (2)
216-216: Performance optimization: Disabled link prefetching for category linksSetting
prefetch={false}prevents automatic prefetching of linked pages, reducing unnecessary network requests.
356-356: Inconsistent prefetching behavior in sidebar linksThere's an inconsistency in the prefetching behavior within the same component. The category link has
prefetch={false}(line 216) while the chatbot link explicitly usesprefetchwithout a value (which defaults totrue).Consider making the prefetching behavior consistent across all navigation links in the sidebar for predictable performance:
- prefetch + prefetch={false}apps/masterbots.ai/lib/constants/hasura.ts (1)
1-2: Reduced pagination sizes for improved performanceDecreasing the page sizes (from 50 to 20 for
PAGE_SIZEand from 20 to 10 forPAGE_SM_SIZE) will reduce the amount of data fetched per request, which can improve initial load times and reduce memory usage.While this change improves performance, it may impact user experience by requiring more frequent pagination. Consider monitoring user behavior after this change to ensure it doesn't negatively affect users who frequently browse through large sets of data.
apps/masterbots.ai/lib/models.tsx (2)
26-33: Improved model name detection logicChanging from
includes()tostartsWith()for model name detection is a good improvement. This makes the matching more precise and prevents false positives where a model name might contain a substring that matches multiple model types.
37-42: Well-implemented model name formatting utilityThe new
formatModelNamefunction provides a consistent way to transform model identifiers into user-friendly display names. This is a good abstraction that can be reused across the application.The function correctly handles:
- Double underscores converting to spaces
- Single underscores converting to dots
- Trimming any excess whitespace
apps/masterbots.ai/components/ui/icons.tsx (3)
846-848: Fixed DeepSeek icon sizingAdding explicit
height="1em"andwidth="1em"attributes ensures the icon will scale properly with the surrounding text size. This is good for accessibility and consistent UI rendering.
858-873: Well-structured Google icon implementationThe new
IconGooglecomponent follows the same pattern as other icon components in this file. It properly includes accessibility attributes and maintains consistent styling with the icon system.
897-898: Proper export of new icon componentThe export list has been correctly updated to include the new
IconGooglecomponent while maintaining alphabetical order.apps/masterbots.ai/app/globals.css (2)
397-400: Unified styling for public and profile routesExtending the selectors to include both
[data-route="public"]and[data-route="profile"]ensures consistent styling between these routes. This is a good approach for maintaining visual consistency across different parts of the application.Also applies to: 402-405, 407-410
418-421: Consistent component styling across routesThe styling for avatar rings, text colors, and icon fills is now unified between public and profile routes. This maintains visual cohesion throughout the application.
Also applies to: 427-430, 436-439
apps/masterbots.ai/components/auth/user-login.tsx (2)
6-6: Added Skeleton component importGood addition of the Skeleton component import to support the UI enhancement for loading states.
17-17: Improved loading state UIReplacing the plain text "Loading..." with a styled Skeleton component enhances the visual feedback during loading states. This creates a more polished user experience and aligns with modern UI patterns.
apps/masterbots.ai/components/shared/shared-search.tsx (1)
92-92: Terminology updated from "category" to "topic".The search placeholder text has been changed from "category" to "topic", aligning with the application's broader terminology update.
apps/masterbots.ai/components/routes/chat/chat-model-group.tsx (3)
8-11: Added formatModelName and appConfig imports.The new imports support model name formatting and conditional debug logging features.
52-52: Improved model name formatting.Using the formatModelName function standardizes how model names are displayed throughout the application, improving consistency.
61-61: Increased CheckIcon size.Changed from size-4 to size-5 for better visibility and UI balance.
apps/masterbots.ai/services/hasura/hasura.service.ts (1)
895-895:Details
✅ Verification successful
Reduced thread fetch limit.
The number of threads fetched per request has been halved from
(limit || 30) * 2tolimit || 30, which should improve performance but may affect pagination behavior.Verify that this reduction in fetch limit doesn't negatively impact the user experience, especially with pagination or infinite scroll implementations:
🏁 Script executed:
#!/bin/bash # Check if there are any pagination or infinite scroll components relying on specific batch sizes rg -A 3 -B 3 "(PAGE_SIZE|limit.*30|ThreadPagination|useInfiniteScroll)"Length of output: 67172
Reduced thread fetch limit — no impact on pagination/infinite‐scroll
All front-end callers explicitly pass the
PAGE_SIZEconstant (20) into yourgetThreads/getBrowseThreadsfunctions, so the new fallback oflimit || 30is never actually exercised. Pagination and infinite-scroll components always rely onPAGE_SIZE, not the service default.apps/masterbots.ai/components/layout/header/user-menu.tsx (1)
45-54: Improved error handling for user data fetching.The user data fetching logic has been refactored with proper error handling using try-catch, making the component more robust against API failures.
The addition of early return when user slug is missing and proper error handling with try-catch improves reliability. Good defensive programming practice!
apps/masterbots.ai/lib/hooks/use-chat-attachments.ts (1)
190-190: Consistent model naming update.The code correctly updates the model name pattern from "DeepSeekGroq" to "GroqDeepSeek", maintaining the same file filtering behavior while aligning with the renamed model across the application.
apps/masterbots.ai/components/shared/login-button.tsx (4)
4-4: Good addition of Google icon.Adding the IconGoogle import supports the UI enhancement for the login button.
24-25: Enhanced button styling.The button styling changes from "outline" to "secondary" variant and size to "xl" improve the visual prominence of the login action.
29-29: Improved post-login navigation.Changing the callback URL from '/' to '/chat' provides a better user experience by directing users straight to the chat interface after login.
40-40: Better visual identity with Google icon.Adding the Google icon provides clear visual indication of the authentication method while replacing the previously commented-out icons.
apps/masterbots.ai/components/routes/chat/prompt-form/index.tsx (2)
257-257: Consistent model naming update.The model name has been updated from "DeepSeekGroq" to "GroqDeepSeek" in the regex pattern, maintaining consistency with the same change in other files.
270-270: Minor CSS class reordering.The order of CSS classes changed from "overflow-hidden w-full p-0" to "w-full p-0 overflow-hidden", which is a cosmetic change that doesn't affect functionality.
apps/masterbots.ai/auth.ts (1)
211-215: Optimized user creation logic.Good refactoring of the Google sign-in flow:
- Username is now generated once and stored in a variable.
- Profile picture assignment is optimized with conditional logic to use the user's Google image if available, or generate a default RoboHash image based on the username.
This improves code efficiency and ensures consistent user profile creation.
apps/masterbots.ai/lib/hooks/use-deep-thinking.tsx (1)
29-29: Model name change looks consistentThe model identifier has been updated from
DeepSeekGroqtoGroqDeepSeekconsistently across the deep thinking component. This naming convention change aligns with other files in the codebase.Also applies to: 34-34, 47-47
apps/masterbots.ai/components/shared/no-results-card.tsx (4)
7-7: Import addition looks goodAdded
MessageSquareXIconto support the new "no more threads" state.
27-39: Good UX improvement with context-aware iconsThe addition of conditional logic to display a thread-specific icon when "no more threads" is detected improves the user experience by providing visual context.
42-42: Appropriate spacing addedThe added top margin (
mt-10) improves the visual layout when no results are displayed.
44-44: Icon selection logic looks goodUpdated to use the context-aware icon variable.
apps/masterbots.ai/components/routes/chat/chat-combobox.tsx (4)
24-24: Imports added correctly for new user data fetching functionalityAdded necessary imports to support user subscription status checking.
Also applies to: 28-30
106-108: Good implementation of pro model access controlThe logic for determining if pro models should be disabled is well implemented, considering both the loading state and presence of subscription ID.
138-138: UI enhancement with scrollbar classAdded scrollbar styling to the command list for better usability.
154-154: Improved premium model access controlUpdated the disabled state to respect user subscription status, which enhances the user experience by clearly indicating which models are available based on subscription.
apps/masterbots.ai/lib/helpers/ai-helpers.ts (2)
38-40: Improved model detection withstartsWithUsing
startsWithinstead ofincludesfor model detection is more precise and helps avoid potential false matches.
41-43: Consistent model detection pattern appliedUsing
startsWithfor Gemini model detection matches the pattern used for other models, improving consistency.apps/masterbots.ai/lib/hooks/use-sidebar.tsx (4)
165-169: Added new path variables to support profile routesThese new variables improve the pathname destructuring to better handle profile-related routes by explicitly naming path segments that were previously ignored or handled generically. This change provides better support for the new accordion UI in the profile sidebar.
174-176: Enhanced category matching logicThe additional condition to check for
personalChatbotSlugProfileTopicOrThreadSlugallows the sidebar to correctly identify categories when navigating through profile-specific routes.
182-186: Improved conditional logic for chatbot findingThe extended conditional now checks for the presence of additional path variables, ensuring the correct chatbot is found regardless of whether the user is navigating through profile or public routes.
189-192: Updated chatbot matching logicAdded new conditions to match chatbots against profile-specific path variables, which ensures consistent chatbot selection across different routing patterns.
apps/masterbots.ai/components/layout/profile/profile-page-sidebar.tsx (5)
4-9: Added Accordion components for improved UI structureThe addition of these accordion components allows for a more standardized and accessible UI pattern for the threads section.
32-35: Enhanced state management for thread toggleAdded state management for thread accordion with proper integration with the sidebar context, which allows for better control of the accordion state.
72-73: Improved sidebar positioning and height calculationChanged to fixed positioning with a viewport-relative height calculation, which ensures consistent sidebar appearance regardless of content size.
84-127: Implemented accordion UI for threads sectionReplaced the previous custom toggle implementation with a standardized accordion component that provides better accessibility and user experience. The implementation includes proper ARIA attributes and keyboard navigation support.
128-161: Enhanced conditional rendering of preference linksImproved the conditional rendering logic for preference and subscription links with better styling and consistent spacing.
apps/masterbots.ai/components/routes/thread/user-thread-panel.tsx (7)
36-36: Updated pagination constant importReplaced PAGE_SM_SIZE with PAGE_SIZE for more consistent pagination handling across the application.
49-49: Added type import for better type safetyIncluding the GetBrowseThreadsParams type improves type safety when constructing parameters for the fetchBrowseThreads function.
80-85: Enhanced useSidebar hook usageAdded selectedCategories to the destructured values from useSidebar, which supports the new functionality for fetching threads based on multiple categories.
197-204: Simplified state update logicImproved state management by directly updating threads and totalThreads without redundant properties, making the code cleaner and easier to understand.
356-356: Optimized effect dependenciesRemoved 'threads' from the effect dependencies to prevent unnecessary re-renders, focusing instead on the critical dependencies: isOpenPopup, pathname, and shouldRefreshThreads.
363-366: Enhanced no-results messagingAdded a more specific message for when all threads have been loaded versus when no threads are available, improving the user experience with clearer feedback.
439-445: Improved NoResults component rendering conditionUpdated the condition to show the NoResults component when either no search results are found or all threads have been loaded, providing better feedback to users in different scenarios.
| error: Error | unknown // The error object or value | ||
| message?: string // Optional descriptive message | ||
| level?: Sentry.SeverityLevel // Severity level (e.g., 'error', 'warning', 'info', 'debug') | ||
| // biome-ignore lint/suspicious/noExplicitAny: <explanation> |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Replace placeholder <explanation> and avoid suppressing the rule.
The biome-ignore comment includes a placeholder <explanation>, which should be replaced with a concrete justification. Even better, consider changing the type from Record<string, any> to Record<string, unknown> or a more specific interface for extra so that you don’t need to suppress noExplicitAny.
| slug: true, | ||
| bio: true, | ||
| favouriteTopic: true, | ||
| proUserSubscriptionId: true, |
There was a problem hiding this comment.
💡 Verification agent
🧩 Analysis chain
Added proUserSubscriptionId to user query.
This field has been added to the getUserBySlug function to support subscription-aware features throughout the application.
Verify where this subscription ID is used to understand the impact of this change:
🏁 Script executed:
#!/bin/bash
# Find where proUserSubscriptionId is being used in the codebase
rg "proUserSubscriptionId" -lLength of output: 384
Ensure Dependent Code Is Updated for proUserSubscriptionId
We’ve added proUserSubscriptionId to getUserBySlug, but this field now surfaces across several parts of the codebase:
- Drizzle schema: packages/mb-drizzle/src/schema/auth.ts
- Generated GraphQL schema & types: packages/mb-genql/generated/schema.graphql, schema.ts, types.ts
- Admin service: apps/masterbots.ai/services/admin/admin.service.ts
- Chat UI component: apps/masterbots.ai/components/routes/chat/chat-combobox.tsx
- Shared TS types: apps/masterbots.ai/types/types.ts
Please address the following before merging:
- Add/migrate the corresponding DB column and update the Drizzle schema
- Rerun GraphQL codegen to regenerate schema and types
- Verify all consumers handle
proUserSubscriptionId(e.g., nullability, optional chaining) appropriately
…ow (#474) * fix: change toggler wording + util hook (#424) * impr: makes threads open on profile page and profile tweaks (#421) * update * fix: update * update * update * update * update * fix: opening threads * fix: rm threads dropdwon & added back link to bot page thread view page * fix: rm threads dropdwon & added back link to bot page thread view page * fix: update * fix: added back to profile page * fix: added sticky and color * fix: codeblock ctas refactor markdown rendering, sidebar nav, code block & clipboard hook (#425) * fix: codeblock ctas * fix: ts build * fix: continue thread + allMessages sequence + mobile chat css tweak (#426) * fix: css handleCLick condition * fix: get latest search params, continuous thread * fix(impr): all messages sorting * perf(impr): sign in & up redirection tweak * perf(impr): mobile chat css * chore: next + react security ver upt (#427) * refactor: use chat and continue thread + continue conversation fallback (#432) * refactor: use chat and continue generation * fix: uniq slug and id gen (#433) * fix: uniq thread + msg slug gen * style: formatting * fix: thread user attachments state upt * perf: impr thread component at all pages + mobile tweaks * refactor: thread-component card * chore: restore continue generation v1 * feat(impr): thread component card * fix: admin panel n actions * fix: fetch getThreads * chore: continue conversation v1.2 * chore: continue and update thread content * chore: add ui control continue generation state * chore: fix infinity loop * chore(impr): enable upt msg table permission * fix: seo thread fetch * chore: style formating * fix(impr): continued thread title + thread component reusability * chore: refactor loadings + extending sonners --------- Co-authored-by: bran18 <andreyfdez18@gmail.com> --------- Co-authored-by: Roberto Lucas <andler@bitcash.org> * feat: add gemini provider (#437) * feat: add gemini provider * chore: update icons * feat: impr continuing thread tags + accordion first msg toggle (#435) * feat(wip): impr continuing thread tags + accordion first msg toggle * feat(impr): continuing thread tags + accordion at first message + header mobile tweak * style(impr): mobile thread-component x-axis space * perf(style): coderabbitai feedbacks * fix: css typo * perf: sendMessageFromResponse clicked guard + continued thread tags label tweak * chore: user thread panel clean up * fix: user-thread-panel infinite loader * perf: impr shared accordion animation and ux * style: defaultAccordionState comments loc * fix: record type warning, hasura updateMessage * fix: getThread user data, shared-accordion * fix: coderabbitai observations * fix: impr file management per llm, multimodel feat flag, chat tool labels, parent thread guard * fix: tunningUserContent parentThread condition * fix: feature flag typo * feat: profile page thread popup feature flag and tweaks (#434) * update * fix: update * update * update * update * update * refactor: profile page threads pop up * fix: update config * fix: update * fix: update * fix: make profile page scroll on hero * fix: bot make popup and scroll * fix: make profile page sidebar scroll independently * fix: make profile page sidebar scroll independently * fix: check the category along the chatbot when it's not checked * fix: check the category along the chatbot when it's not checked --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> Co-authored-by: Roberto Lucas <andler@bitcash.org> * feat: add new llm models (#444) * feat-add-models * feat-add-models * feat-add-models * chore: add model * fix: typo * chore: add toggler color * perf(impr): thread llm context, last question & response + new models seeds (#447) * feat(wip): thread llm context, prev questions * fix: previousQuestionsString slice * fix: clickedContentId in followingQuestionsPrompt * feat: isContinued + model type in message table * fix: ts typo + sendMessageFromResponse callback call * fix: ts typo * fix: bot profile page view (#449) * fix(wip): bot profile thread list * style: formatting * fix: new chats and share + og img (#451) * fix: new chat state reset * fix: genql gen + share link check * fix: og img * fix: duplicate role permission in msg table * feat: initial continuation logic flow (#450) * chore: restore base version * chore: add new logic and hooks * chore: fix providers file * chore: improve continuation prompt * chore: add exlucision flag * chore: add better handler * chore: updated flow + experimental delay * chore: extended time * chore(impr): streamDelayMs experimental feat flag * style: formatting --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * fix: profile sidebar cat opt render (#453) * fix: profile sidebar cat opt render * chore: clean-up * [masterbots.ai] refactor: slug generation logic with improved uniqueness and type support (#456) * fix: slugify fn * chore: devMode logs * fix: uniq slug gen fn nanoid flag typo * feat: sentry logs in webapp (#457) * fix(impr): llm enum data, thread creation, ts, and log behavior (#458) * fix: slugify first request delay incr + genql ts, seeds & model migration upt * fix: create thread & msg ts * fix(impr): profile page bugs & tweaks v1 4/15/25 (#455) * update * fix: update * update * update * update * update * fix: use the user avatar or robohash * fix: added avater to user menu * fix: user avatar * fix: reset search input when filter by category or chatbot * fix: personal chat browse provider + username chk in sign up * chore: clean duplicated if condition signup --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * refactor: continuation flow (#460) * impr: continuation logic flow * impr: continuation logic flow * chore: update createImprovementPrompt * chore: upt logs --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * feat: models table, enum type, and refactor chat msg deduplication logic (#462) * feat: models table * style: formatting * fix: continuation accordion content * fix: sql + metadata typo * fix: db migrations and messages uniqby condition (#463) * fix: db migrations + messages uniqby condition * fix: typo * perf(impr): verify duplicate message return condition * chore: upt default available models * perf(impr): reassign continued prompt * chore: incr fn stream max duration * fix: mob prof sidebar + sign-up pw verif + username chk (#464) * fix: mob prof sidebar + sign-up pw verif + username chk * chore: upt genql gen * perf(impr): profile navigation * feat: model selector (#466) * wip: model selector query * wip: model selector query * chore: improve funtions * chore: add coderabbit suggestion * chore: add hasura permissions, models table * style: formatting * chore: fix get model client type * chore: add model --------- Co-authored-by: Roberto Romero Lucas <contact@andler.dev> * chore: impr models (#472) * chore: fix model name and condition (#473) * refactor: user fetching code (#471) * refactor: profile sidebar ui, upt styling, and disable prefetch (#470) * chore: remove prefetch on sidebar & profile navigation * perf: impr profile sidebar * fix: infinite scroll load more fetch * perf(impr): google sign-in * perf(impr): session loaders tweak * perf: impr categoriesId obtention * fix: tailwind typo * chore(impr): pro user guard in model selector * chore: category label upt to topic --------- Co-authored-by: Brandon Fernández <31634868+Bran18@users.noreply.github.com> Co-authored-by: Jimoh sherifdeen <63134009+sheriffjimoh@users.noreply.github.com>
…ow (#474) * fix: change toggler wording + util hook (#424) * impr: makes threads open on profile page and profile tweaks (#421) * update * fix: update * update * update * update * update * fix: opening threads * fix: rm threads dropdwon & added back link to bot page thread view page * fix: rm threads dropdwon & added back link to bot page thread view page * fix: update * fix: added back to profile page * fix: added sticky and color * fix: codeblock ctas refactor markdown rendering, sidebar nav, code block & clipboard hook (#425) * fix: codeblock ctas * fix: ts build * fix: continue thread + allMessages sequence + mobile chat css tweak (#426) * fix: css handleCLick condition * fix: get latest search params, continuous thread * fix(impr): all messages sorting * perf(impr): sign in & up redirection tweak * perf(impr): mobile chat css * chore: next + react security ver upt (#427) * refactor: use chat and continue thread + continue conversation fallback (#432) * refactor: use chat and continue generation * fix: uniq slug and id gen (#433) * fix: uniq thread + msg slug gen * style: formatting * fix: thread user attachments state upt * perf: impr thread component at all pages + mobile tweaks * refactor: thread-component card * chore: restore continue generation v1 * feat(impr): thread component card * fix: admin panel n actions * fix: fetch getThreads * chore: continue conversation v1.2 * chore: continue and update thread content * chore: add ui control continue generation state * chore: fix infinity loop * chore(impr): enable upt msg table permission * fix: seo thread fetch * chore: style formating * fix(impr): continued thread title + thread component reusability * chore: refactor loadings + extending sonners --------- Co-authored-by: bran18 <andreyfdez18@gmail.com> --------- Co-authored-by: Roberto Lucas <andler@bitcash.org> * feat: add gemini provider (#437) * feat: add gemini provider * chore: update icons * feat: impr continuing thread tags + accordion first msg toggle (#435) * feat(wip): impr continuing thread tags + accordion first msg toggle * feat(impr): continuing thread tags + accordion at first message + header mobile tweak * style(impr): mobile thread-component x-axis space * perf(style): coderabbitai feedbacks * fix: css typo * perf: sendMessageFromResponse clicked guard + continued thread tags label tweak * chore: user thread panel clean up * fix: user-thread-panel infinite loader * perf: impr shared accordion animation and ux * style: defaultAccordionState comments loc * fix: record type warning, hasura updateMessage * fix: getThread user data, shared-accordion * fix: coderabbitai observations * fix: impr file management per llm, multimodel feat flag, chat tool labels, parent thread guard * fix: tunningUserContent parentThread condition * fix: feature flag typo * feat: profile page thread popup feature flag and tweaks (#434) * update * fix: update * update * update * update * update * refactor: profile page threads pop up * fix: update config * fix: update * fix: update * fix: make profile page scroll on hero * fix: bot make popup and scroll * fix: make profile page sidebar scroll independently * fix: make profile page sidebar scroll independently * fix: check the category along the chatbot when it's not checked * fix: check the category along the chatbot when it's not checked --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> Co-authored-by: Roberto Lucas <andler@bitcash.org> * feat: add new llm models (#444) * feat-add-models * feat-add-models * feat-add-models * chore: add model * fix: typo * chore: add toggler color * perf(impr): thread llm context, last question & response + new models seeds (#447) * feat(wip): thread llm context, prev questions * fix: previousQuestionsString slice * fix: clickedContentId in followingQuestionsPrompt * feat: isContinued + model type in message table * fix: ts typo + sendMessageFromResponse callback call * fix: ts typo * fix: bot profile page view (#449) * fix(wip): bot profile thread list * style: formatting * fix: new chats and share + og img (#451) * fix: new chat state reset * fix: genql gen + share link check * fix: og img * fix: duplicate role permission in msg table * feat: initial continuation logic flow (#450) * chore: restore base version * chore: add new logic and hooks * chore: fix providers file * chore: improve continuation prompt * chore: add exlucision flag * chore: add better handler * chore: updated flow + experimental delay * chore: extended time * chore(impr): streamDelayMs experimental feat flag * style: formatting --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * fix: profile sidebar cat opt render (#453) * fix: profile sidebar cat opt render * chore: clean-up * [masterbots.ai] refactor: slug generation logic with improved uniqueness and type support (#456) * fix: slugify fn * chore: devMode logs * fix: uniq slug gen fn nanoid flag typo * feat: sentry logs in webapp (#457) * fix(impr): llm enum data, thread creation, ts, and log behavior (#458) * fix: slugify first request delay incr + genql ts, seeds & model migration upt * fix: create thread & msg ts * fix(impr): profile page bugs & tweaks v1 4/15/25 (#455) * update * fix: update * update * update * update * update * fix: use the user avatar or robohash * fix: added avater to user menu * fix: user avatar * fix: reset search input when filter by category or chatbot * fix: personal chat browse provider + username chk in sign up * chore: clean duplicated if condition signup --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * refactor: continuation flow (#460) * impr: continuation logic flow * impr: continuation logic flow * chore: update createImprovementPrompt * chore: upt logs --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * feat: models table, enum type, and refactor chat msg deduplication logic (#462) * feat: models table * style: formatting * fix: continuation accordion content * fix: sql + metadata typo * fix: db migrations and messages uniqby condition (#463) * fix: db migrations + messages uniqby condition * fix: typo * perf(impr): verify duplicate message return condition * chore: upt default available models * perf(impr): reassign continued prompt * chore: incr fn stream max duration * fix: mob prof sidebar + sign-up pw verif + username chk (#464) * fix: mob prof sidebar + sign-up pw verif + username chk * chore: upt genql gen * perf(impr): profile navigation * feat: model selector (#466) * wip: model selector query * wip: model selector query * chore: improve funtions * chore: add coderabbit suggestion * chore: add hasura permissions, models table * style: formatting * chore: fix get model client type * chore: add model --------- Co-authored-by: Roberto Romero Lucas <contact@andler.dev> * chore: impr models (#472) * chore: fix model name and condition (#473) * refactor: user fetching code (#471) * refactor: profile sidebar ui, upt styling, and disable prefetch (#470) * chore: remove prefetch on sidebar & profile navigation * perf: impr profile sidebar * fix: infinite scroll load more fetch * perf(impr): google sign-in * perf(impr): session loaders tweak * perf: impr categoriesId obtention * fix: tailwind typo * chore(impr): pro user guard in model selector * chore: category label upt to topic --------- Co-authored-by: Brandon Fernández <31634868+Bran18@users.noreply.github.com> Co-authored-by: Jimoh sherifdeen <63134009+sheriffjimoh@users.noreply.github.com>
Summary by Sourcery
Refactor and enhance the model selection and user experience across multiple components, introducing dynamic model loading, improved model grouping, and better user interaction flows.
New Features:
Bug Fixes:
Enhancements:
Documentation:
Tests:
Summary by CodeRabbit
New Features
Improvements
Bug Fixes
Chores