Conversation
|
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
Reviewer's Guide by SourceryThis PR improves web search response handling and error management in the chat functionality. The changes include better error handling for message operations, enhanced web search response formatting, and adjustments to AI model configurations. Sequence diagram for improved error handling in message operationssequenceDiagram
participant User
participant ChatApp
participant Server
User->>ChatApp: Send message
ChatApp->>Server: Process message
alt Message processed successfully
Server-->>ChatApp: Message processed
ChatApp-->>User: Display message
else Error in processing
Server-->>ChatApp: Error response
ChatApp->>User: Display error message
alt New chat
ChatApp->>Server: Delete thread
end
end
Updated class diagram for useMBChat hookclassDiagram
class useMBChat {
+useMBChat(config: MBChatHookConfig)
-setLoadingState(state)
-setActiveTool(tool)
-setIsNewResponse(flag)
-appendNewMessage(userMessage)
-onFinish(message, options)
}
note for useMBChat "Improved error handling and state management in onFinish and appendNewMessage methods"
Updated class diagram for getWebSearchTool functionclassDiagram
class getWebSearchTool {
+getWebSearchTool(params)
-Error handling for app data fetching
-Error handling for web search completion
}
note for getWebSearchTool "Enhanced error handling and response formatting"
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
|
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/actions/ai-executers.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. WalkthroughThe pull request introduces several modifications across multiple files, focusing on enhancing error handling, response formatting, and functionality related to web search capabilities. Key changes include updates to error messages in the Changes
Possibly related PRs
Suggested labels
Suggested reviewers
✨ Finishing Touches
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 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.
Hey @AndlerRL - I've reviewed your changes and they look great!
Here's what I looked at during the review
- 🟡 General issues: 1 issue found
- 🟢 Security: all looks good
- 🟢 Testing: all looks good
- 🟢 Complexity: 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.
| } catch (error) { | ||
| console.error('Error fetching app data: ', error) | ||
| throw error | ||
| return `Something went wrong with web search that failed to provide results. Please try again later. |
There was a problem hiding this comment.
suggestion (bug_risk): Consider throwing or logging the original error for better debugging
While returning a user-friendly message is good, completely swallowing the original error makes debugging harder. Consider logging the full error details or maintaining the throw with a wrapped error that includes both messages.
console.error('Web search error:', error);
throw new Error(`Something went wrong with web search that failed to provide results. Please try again later. Original error: ${error.message}`);There was a problem hiding this comment.
Actionable comments posted: 5
🧹 Outside diff range and nitpick comments (4)
apps/masterbots.ai/app/actions/ai-executers.ts (3)
104-106: Consider extracting duplicate error messagesThis error message is identical to the one on lines 70-72. Consider extracting it to a constant to avoid duplication.
+const INTERNAL_SERVER_ERROR_MESSAGE = + 'Internal Server Error while fetching app data. Please try again later.' + // ... later in code ... -throw new Error( - 'Internal Server Error while fetching app data. Please try again later.' -) +throw new Error(INTERNAL_SERVER_ERROR_MESSAGE)
118-125: Consider implementing structured loggingWhile the added logging is helpful for debugging, consider:
- Using a proper logging library with log levels
- Ensuring sensitive information isn't logged in production
- Adding request IDs for better traceability
+import { logger } from '@/lib/logger' // Add proper logging library + -console.log( - '[SERVER] Web Search Response web search status --> ', - response.status -) -console.log( - '[SERVER] Web Search Response web search outputs --> ', - response.outputs['web search'] -) +logger.debug('Web Search Response', { + status: response.status, + outputs: response.outputs['web search'] +})
138-144: Consider structuring the error responseWhile the current format is more readable, consider returning a structured error response that can be consistently parsed by the client.
-return `Something went wrong with web search that failed to provide results. Please try again later. - - [ERROR LOG]: ${JSON.stringify(error, null, 2)}` +return `## ERROR + +Something went wrong with web search that failed to provide results. Please try again later. + +\`\`\`json +${JSON.stringify({ + message: error instanceof Error ? error.message : 'Unknown error', + timestamp: new Date().toISOString(), + details: error +}, null, 2)} +\`\`\``apps/masterbots.ai/app/actions/ai-main-call.ts (1)
226-226: Remove or replace console.log with proper loggingServer-side debugging statements should use proper logging mechanisms instead of console.log.
Consider using a proper logging utility or removing this debug statement:
- console.log('[SERVER] webSearch', webSearch) + // Use your logging utility here, e.g.: + logger.debug('Processing web search request', { webSearch })
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
📒 Files selected for processing (4)
apps/masterbots.ai/app/actions/ai-executers.ts(3 hunks)apps/masterbots.ai/app/actions/ai-main-call.ts(3 hunks)apps/masterbots.ai/lib/constants/prompts.ts(1 hunks)apps/masterbots.ai/lib/hooks/use-mb-chat.ts(5 hunks)
🧰 Additional context used
🪛 Biome (1.9.4)
apps/masterbots.ai/lib/hooks/use-mb-chat.ts
[error] 141-141: Forbidden non-null assertion.
Unsafe fix: Replace with optional chain operator ?. This operator includes runtime checks, so it is safer than the compile-only non-null assertion operator
(lint/style/noNonNullAssertion)
[error] 142-142: Forbidden non-null assertion.
Unsafe fix: Replace with optional chain operator ?. This operator includes runtime checks, so it is safer than the compile-only non-null assertion operator
(lint/style/noNonNullAssertion)
[error] 262-262: Forbidden non-null assertion.
Unsafe fix: Replace with optional chain operator ?. This operator includes runtime checks, so it is safer than the compile-only non-null assertion operator
(lint/style/noNonNullAssertion)
[error] 263-263: Forbidden non-null assertion.
Unsafe fix: Replace with optional chain operator ?. This operator includes runtime checks, so it is safer than the compile-only non-null assertion operator
(lint/style/noNonNullAssertion)
[error] 270-270: Forbidden non-null assertion.
Unsafe fix: Replace with optional chain operator ?. This operator includes runtime checks, so it is safer than the compile-only non-null assertion operator
(lint/style/noNonNullAssertion)
🔇 Additional comments (8)
apps/masterbots.ai/lib/constants/prompts.ts (1)
70-70: LGTM! Clear improvement to the guideline.
The rewording makes it more explicit that only the format should be changed when requested, preventing unintended modifications to other response attributes.
apps/masterbots.ai/app/actions/ai-executers.ts (3)
70-72: LGTM! Improved error message clarity
The error message is now more user-friendly and includes a clear suggestion for the user.
131-134: LGTM! Improved null checking
The additional check for logs alongside output improves the robustness of the error handling.
138-140: Verify output sanitization
The web search output is directly interpolated into the response string. Ensure that the output is properly sanitized to prevent XSS attacks if this content is rendered in a web interface.
✅ Verification successful
Web search output is safely rendered through React Markdown
The web search output is properly sanitized:
- Output is rendered using
MemoizedReactMarkdowncomponent which safely converts markdown to HTML - The component uses
cleanPromptutility before rendering - Custom components are defined for rendering different elements (p, li, code, etc.)
- No usage of dangerouslySetInnerHTML or direct HTML interpolation
- Links are rendered with proper security attributes (target="_blank", rel="noopener noreferrer")
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Search for potential XSS vulnerabilities in the codebase
# Look for places where the web search output is rendered
# Search for direct rendering of web search output
rg -l "dangerouslySetInnerHTML|innerHTML" --type ts --type tsx
# Search for components that might render the web search response
ast-grep --pattern 'const $component = $props => {
$$$
webSearch
$$$
}'
Length of output: 172
Script:
#!/bin/bash
# Let's try a different approach to find potential XSS vulnerabilities
# Search for files that might render the web search output
rg -l "webSearch|web search" --type ts
# Look for any dangerous HTML rendering patterns
rg -l "dangerouslySetInnerHTML|innerHTML" --type ts
# Search for markdown or HTML rendering components
rg -l "markdown|html|render" --type ts
# Check how the output from ai-executers is used
rg -A 5 "ai-executers" --type ts
Length of output: 2406
Script:
#!/bin/bash
# Let's check how the web search output is actually rendered in the UI components
# Check the markdown component implementation
cat apps/masterbots.ai/components/shared/markdown.tsx
# Check chat message component that likely renders the content
cat apps/masterbots.ai/components/routes/chat/chat-message.tsx
# Check how the web search output flows from ai-executers to the UI
rg -A 5 "outputs\['web search'\]" --type ts
Length of output: 6676
apps/masterbots.ai/app/actions/ai-main-call.ts (2)
226-226: Verify impact of increased tool roundtrips
Increasing maxToolRoundtrips to 2 across all AI clients will allow for more thorough web searches but may have implications:
- Could increase response times
- May affect API costs
- Might impact rate limits
Please ensure these aspects have been considered and tested.
Also applies to: 245-245, 265-265
Line range hint 226-265: Implementation looks good!
The changes consistently implement increased tool roundtrips across all AI clients while maintaining proper error handling and client-specific configurations. This aligns well with the PR objective of improving web search response.
apps/masterbots.ai/lib/hooks/use-mb-chat.ts (2)
18-18: Import statements are necessary and properly used
The imported types AiClientType and AiToolCall are utilized correctly in the code, ensuring proper type definitions.
75-79: Correctly mapping messages from the database to AiMessage format
The transformation of messagesFromDB into the AiMessage format is accurately implemented, preserving all necessary properties.
| `- When performing Web Search, your response format will be in the following format example: | ||
|
|
||
| ## Example: ## | ||
|
|
||
| **Resume:** | ||
| Brewers: 9 | ||
| Dodgers: 2 | ||
|
|
||
| **Summary** | ||
| Yelich, Perkins power Brewers to 9-2 victory over Dodgers and avoid being swept in weekend series. — Christian Yelich and Blake Perkins both homered, had three hits and drove in three runs as the Milwaukee Brewers beat the Los Angeles Dodgers 9-2 Sunday to snap a seven-game losing streak at Dodger Stadium. | ||
|
|
||
| **Homeruns:** | ||
| Yelich | ||
|
|
||
| **Winning Pitcher:** | ||
| J. Junis | ||
|
|
||
| **Sources**: | ||
|
|
||
| | [https://website1.com/](https://website1.com/) | | ||
| |--| | ||
| | Website1 Metadata Description | | ||
| |  | | ||
|
|
||
| | [https://website2.com/](https://website2.com/) | | ||
| |--| | ||
| | Website2 Metadata Description | | ||
| |  |` |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Improve the web search response format example.
The current example has several areas for improvement:
- The sports-specific example might not translate well to other domains. Consider using a more generic example.
- The markdown table syntax needs proper escaping in the template string.
- The format is quite rigid and might not suit all types of search results.
Consider this more flexible format:
- ## Example: ##
-
- **Resume:**
- Brewers: 9
- Dodgers: 2
-
- **Summary**
- Yelich, Perkins power Brewers to 9-2 victory over Dodgers and avoid being swept in weekend series. — Christian Yelich and Blake Perkins both homered, had three hits and drove in three runs as the Milwaukee Brewers beat the Los Angeles Dodgers 9-2 Sunday to snap a seven-game losing streak at Dodger Stadium.
-
- **Homeruns:**
- Yelich
-
- **Winning Pitcher:**
- J. Junis
-
- **Sources**:
-
- | [https://website1.com/](https://website1.com/) |
- |--|
- | Website1 Metadata Description |
- |  |
+ ## Example Response Format ##
+
+ **Summary**
+ [Main information synthesized from the search results]
+
+ **Key Points**
+ - [Important point 1]
+ - [Important point 2]
+
+ **Sources**
+ 1. [Source Title](source_url)
+ - Brief description of source content
+ -  (if available)
+
+ Note: Format sections can be adapted based on the type of information being presented.This format:
- Is more generic and adaptable
- Properly escapes markdown syntax
- Provides flexibility for different types of content
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| `- When performing Web Search, your response format will be in the following format example: | |
| ## Example: ## | |
| **Resume:** | |
| Brewers: 9 | |
| Dodgers: 2 | |
| **Summary** | |
| Yelich, Perkins power Brewers to 9-2 victory over Dodgers and avoid being swept in weekend series. — Christian Yelich and Blake Perkins both homered, had three hits and drove in three runs as the Milwaukee Brewers beat the Los Angeles Dodgers 9-2 Sunday to snap a seven-game losing streak at Dodger Stadium. | |
| **Homeruns:** | |
| Yelich | |
| **Winning Pitcher:** | |
| J. Junis | |
| **Sources**: | |
| | [https://website1.com/](https://website1.com/) | | |
| |--| | |
| | Website1 Metadata Description | | |
| |  | | |
| | [https://website2.com/](https://website2.com/) | | |
| |--| | |
| | Website2 Metadata Description | | |
| |  |` | |
| `- When performing Web Search, your response format will be in the following format example: | |
| ## Example Response Format ## | |
| **Summary** | |
| [Main information synthesized from the search results] | |
| **Key Points** | |
| - [Important point 1] | |
| - [Important point 2] | |
| **Sources** | |
| 1. [Source Title](source_url) | |
| - Brief description of source content | |
| -  (if available) | |
| Note: Format sections can be adapted based on the type of information being presented.` |
| '- You may be capable of performing Web Search. When available, use it to verify information before making assumptions. ' + | ||
| '- Whenever you are capable of performing Web Search, you must provide the source of the information at the end. Use the "thumbnail.original" to render an initial image from the given input. ' + |
There was a problem hiding this comment.
💡 Codebase verification
Based on the search results, I can now provide a final response:
The thumbnail.original reference needs to be removed or properly documented
The thumbnail.original reference in the web search guidelines appears to be incorrect or incomplete:
- There's no implementation or handling of
thumbnail.originalproperty in the web search response processing - The web search output schema (in
ai-schemas.ts) only definessearchResultsandsourcesfields - The example format shown in the prompt demonstrates images using standard markdown image syntax (
) without any thumbnail processing
🔗 Analysis chain
Clarify the thumbnail.original reference.
While requiring source attribution is good, the thumbnail.original reference needs clarification:
- What is the expected format/structure of this thumbnail data?
- How should the AI handle cases where thumbnails are missing?
Let's check if this thumbnail property is defined elsewhere:
Let me search for more context about web search and thumbnail handling in the codebase.
Let me search for web search response formats and any image/thumbnail handling in the codebase.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Search for thumbnail.original references or definitions
rg -g '!*.{jpg,png,gif}' -i 'thumbnail\.original'
Length of output: 294
Script:
#!/bin/bash
# Search for web search related configurations and implementations
rg -i "web\s*search" -A 5 -B 5
# Search for thumbnail handling patterns
ast-grep --pattern 'thumbnail = $_'
ast-grep --pattern 'thumbnail: $_'
ast-grep --pattern 'const thumbnail = $_'
# Look for any image or thumbnail processing logic
rg -i "thumbnail" -g "*.{ts,js,tsx,jsx}" -A 3 -B 3
Length of output: 37005
Script:
#!/bin/bash
# Search for web search response examples or formats
rg -i "source|reference|image" -g "*.{ts,js}" -A 5 -B 5 "apps/masterbots.ai/lib/constants/prompts.ts"
# Look for web search response handling
ast-grep --pattern 'function $_(response) {
$$$
thumbnail $$$
$$$
}'
# Search for web search output structure
rg -i "output.*web.*search" -g "*.{ts,js}" -A 5 -B 5
Length of output: 4696
| // * Loading: Here is the information you need... 'finish' | ||
| const thread = await getThread({ | ||
| threadId: threadId as string, | ||
| jwt: session!.user?.hasuraJwt |
There was a problem hiding this comment.
Remove non-null assertion on session; use optional chaining for safety
The use of session! can cause runtime exceptions if session is null or undefined. Modify the code to handle possible null values.
Apply this diff:
- jwt: session!.user?.hasuraJwt
+ jwt: session?.user?.hasuraJwt📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| jwt: session!.user?.hasuraJwt | |
| jwt: session?.user?.hasuraJwt |
🧰 Tools
🪛 Biome (1.9.4)
[error] 270-270: Forbidden non-null assertion.
Unsafe fix: Replace with optional chain operator ?. This operator includes runtime checks, so it is safer than the compile-only non-null assertion operator
(lint/style/noNonNullAssertion)
| jwt: session!.user?.hasuraJwt, | ||
| userId: session!.user.id, |
There was a problem hiding this comment.
Handle potential null values for session and session.user
Using session! assumes that session is always defined, which may not be the case. Replace the non-null assertion operator with optional chaining or add null checks to prevent runtime errors.
Apply this diff:
- jwt: session!.user?.hasuraJwt,
- userId: session!.user.id,
+ jwt: session?.user?.hasuraJwt,
+ userId: session?.user?.id,📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| jwt: session!.user?.hasuraJwt, | |
| userId: session!.user.id, | |
| jwt: session?.user?.hasuraJwt, | |
| userId: session?.user?.id, |
🧰 Tools
🪛 Biome (1.9.4)
[error] 262-262: Forbidden non-null assertion.
Unsafe fix: Replace with optional chain operator ?. This operator includes runtime checks, so it is safer than the compile-only non-null assertion operator
(lint/style/noNonNullAssertion)
[error] 263-263: Forbidden non-null assertion.
Unsafe fix: Replace with optional chain operator ?. This operator includes runtime checks, so it is safer than the compile-only non-null assertion operator
(lint/style/noNonNullAssertion)
| jwt: session!.user?.hasuraJwt, | ||
| userId: session!.user.id |
There was a problem hiding this comment.
Avoid using non-null assertion operator !; handle possible null values safely
Using the non-null assertion operator ! on session and session.user can lead to runtime errors if they are null or undefined. Incorporate null checks or use optional chaining to handle these cases safely.
Apply this diff to fix the issue:
- jwt: session!.user?.hasuraJwt,
- userId: session!.user.id,
+ jwt: session?.user?.hasuraJwt,
+ userId: session?.user?.id,📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| jwt: session!.user?.hasuraJwt, | |
| userId: session!.user.id | |
| jwt: session?.user?.hasuraJwt, | |
| userId: session?.user?.id |
🧰 Tools
🪛 Biome (1.9.4)
[error] 141-141: Forbidden non-null assertion.
Unsafe fix: Replace with optional chain operator ?. This operator includes runtime checks, so it is safer than the compile-only non-null assertion operator
(lint/style/noNonNullAssertion)
[error] 142-142: Forbidden non-null assertion.
Unsafe fix: Replace with optional chain operator ?. This operator includes runtime checks, so it is safer than the compile-only non-null assertion operator
(lint/style/noNonNullAssertion)
New Issue found:The web search results are being affected by the formatting that is happening after receiving the assistant response. I made a video where it shows that it removes the source links at the end of each bullet point. DEMO Issue:2024-11-22.20-00-46.online-video-cutter.com.mp4@Bran18 -- can you check this out? We might need to add the |
There was a problem hiding this comment.
Actionable comments posted: 4
🧹 Outside diff range and nitpick comments (3)
apps/masterbots.ai/components/routes/chat/chat-clickable-text.tsx (1)
66-66: Avoid using array index as key to prevent rendering issuesUsing the array index
indexas a key in list items can lead to unexpected behavior and performance issues if the list order changes. It's better to use a unique and stable identifier for the key.Consider modifying the key to use a unique value from
contentif possible:- <React.Fragment key={`clickable-${index}`}> + <React.Fragment key={`clickable-${content}`}>Or if
clickableTextis unique:- <React.Fragment key={`clickable-${index}`}> + <React.Fragment key={`clickable-${clickableText}`}>Ensure that the key is unique and consistent to maintain optimal rendering behavior.
🧰 Tools
🪛 Biome (1.9.4)
[error] 66-66: Avoid using the index of an array as key property in an element.
This is the source of the key value.
The order of the items may change, and this also affects performances and component state.
Check the React documentation.(lint/suspicious/noArrayIndexKey)
apps/masterbots.ai/lib/clickable-results.ts (2)
25-25: Remove unnecessary character in commentThe comment at line 25 starts with
// ?, which may be unintended. Removing the?can improve clarity.Apply this diff to correct the comment:
-// ? It recursively extracts text from a ReactNode, preserving React elements and returning plain text for strings, numbers, and arrays. +// It recursively extracts text from a ReactNode, preserving React elements and returning plain text for strings, numbers, and arrays.
47-47: Fix typo in commentThere's a typo in the comment at line 47: "Tthis" should be "This".
Apply this diff to fix the typo:
-// ? Tthis does the following: extracts plain text from a ReactNode, ignoring React elements and returning concatenated strings from arrays +// This function extracts plain text from a ReactNode, ignoring React elements and returning concatenated strings from arrays
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
📒 Files selected for processing (4)
apps/masterbots.ai/components/routes/chat/chat-clickable-text.tsx(2 hunks)apps/masterbots.ai/components/routes/chat/chat-message.tsx(5 hunks)apps/masterbots.ai/lib/clickable-results.ts(1 hunks)apps/masterbots.ai/lib/utils.ts(1 hunks)
🧰 Additional context used
🪛 Biome (1.9.4)
apps/masterbots.ai/components/routes/chat/chat-clickable-text.tsx
[error] 66-66: Avoid using the index of an array as key property in an element.
This is the source of the key value.
The order of the items may change, and this also affects performances and component state.
Check the React documentation.
(lint/suspicious/noArrayIndexKey)
apps/masterbots.ai/components/routes/chat/chat-message.tsx
[error] 88-88: Use === instead of ==. == is only allowed when comparing against null
== is only allowed when comparing against null
Using == may be unsafe if you are relying on type coercion
Unsafe fix: Use ===
(lint/suspicious/noDoubleEquals)
🔇 Additional comments (3)
apps/masterbots.ai/components/routes/chat/chat-message.tsx (2)
12-16: Verify removal of ChatMessageProps export
The ChatMessageProps interface is no longer exported. This could be a breaking change if other components were importing this type.
✅ Verification successful
Removing ChatMessageProps export is safe
The interface removal is not a breaking change. The search results show that:
- No other components are importing the ChatMessageProps type from chat-message.tsx
- The only other usage is in browse-chat-message.tsx, which has its own exported ChatMessageProps interface
- The ChatMessage component itself is imported by chat-list.tsx, but only the component is imported, not the props interface
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Search for any imports of ChatMessageProps
rg "import.*ChatMessageProps.*from.*chat-message"
Length of output: 51
Script:
#!/bin/bash
# Let's try a broader search for ChatMessageProps usage
rg "ChatMessageProps" -A 2
Length of output: 1829
Script:
#!/bin/bash
# Search for any imports from chat-message.tsx
rg "from ['\"].*chat-message['\"]"
Length of output: 320
Script:
#!/bin/bash
# Check if ChatMessageProps was previously exported
git log -p -- "apps/masterbots.ai/components/routes/chat/chat-message.tsx" | rg "export.*interface ChatMessageProps"
Length of output: 0
Script:
#!/bin/bash
# Find any type references to ChatMessageProps
ast-grep --pattern 'type $_ = ChatMessageProps'
Length of output: 2851
Line range hint 51-62: Review list item formatting for web search results
Given the reported issue with source links visibility in web search results, the current list item implementation might be affecting the display of source links at the end of bullet points.
✅ Verification successful
List item formatting in web search results is properly implemented
The implementation of ClickableText component shows that list items are correctly styled with text-blue-500 class when isListItem is true, which provides proper visibility for web search results. The component also handles web search specific text extraction through extractTextFromReactNodeWeb when webSearch is enabled. This implementation ensures source links are visually distinct and accessible.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Search for web search related formatting in ClickableText
rg -A 5 "isListItem.*true" ./apps/masterbots.ai/components/routes/chat/chat-clickable-text.tsx
Length of output: 96
Script:
#!/bin/bash
# Let's first check if the ClickableText component exists and examine its implementation
fd "chat-clickable-text" --type f
# Then let's look at the implementation of ClickableText component
ast-grep --pattern 'export $_ function ClickableText' -A 10
# Also search for any isListItem prop usage
rg "isListItem" --type tsx
Length of output: 216
Script:
#!/bin/bash
# Let's examine the content of the ClickableText component
cat apps/masterbots.ai/components/routes/chat/chat-clickable-text.tsx
# Also search for isListItem without file type restriction
rg "isListItem"
Length of output: 2722
apps/masterbots.ai/lib/utils.ts (1)
Line range hint 63-89: Verify the impact of making endMarker optional.
The changes to extractBetweenMarkers function introduce new behavior:
- When
endMarkeris not provided, it returns the entire remaining string afterstartMarker - When
startMarkeris not found, it returns the whole string - When
endMarkeris provided but not found or in wrong order, it returns an empty string
Please verify that this behavior change doesn't break existing usages of this function.
✅ Verification successful
Let me gather more context about the usage in threads.ts to understand the impact better.
Let me try one more search with a different approach to ensure we haven't missed any usages.
The changes to extractBetweenMarkers are safe to proceed
The function is only used in one place in threads.ts where it's called with just the start marker 'Then answer this question:' and no end marker. The new optional end marker behavior perfectly matches this usage case, as it will return the remaining string after the start marker. The other behavior changes (returning whole string when start marker not found, or empty string when end marker is wrong) don't affect this usage since it only uses a start marker.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Search for all calls to extractBetweenMarkers to verify the impact
rg -A 2 "extractBetweenMarkers\(" --type ts --type tsx
# Search for potential test files that might need updates
fd -e test.ts -e test.tsx -e spec.ts -e spec.tsx | xargs rg "extractBetweenMarkers"
Length of output: 426
Script:
#!/bin/bash
# Get the content of threads.ts to see how extractBetweenMarkers is used
cat apps/masterbots.ai/lib/threads.ts
# Try rg with correct file type
rg -A 2 "extractBetweenMarkers\(" --type typescript
Length of output: 1159
Script:
#!/bin/bash
# Search with just 'rg' without file type filtering
rg "extractBetweenMarkers" -A 3
# Also check if there are any test files specifically for utils.ts
fd "utils\.(test|spec)\.(ts|tsx)"
Length of output: 869
@AndlerRL I’ve got a better understanding of the issue now and moved the logic into a separate utility file so we can work more efficiently on the three related files. The issue is still there — the functions aren’t making the elements after each bullet and before the colon clickable. This is probably because the LLM is sending the elements differently when webSearch is enabled. Here’s what this commit does (about 70/30 in fixing the issue): I’ll keep working on this, but I made this commit so I don’t block you while you’re fixing other bugs in the branch. Note: When webSearch is on, you can’t continue the conversation — something weird happens, and the only fix is to refresh. Screen.Recording.2024-11-27.at.12.53.32.PM.mov |
There was a problem hiding this comment.
Actionable comments posted: 3
🧹 Outside diff range and nitpick comments (5)
apps/masterbots.ai/components/routes/chat/chat-clickable-text.tsx (2)
29-34: Consider adding error handling for edge cases.While the click handler works correctly, it might benefit from additional error handling for edge cases.
Consider this enhancement:
const createClickHandler = (text: string) => () => { + try { if (sendMessageFromResponse && text.trim()) { const cleanedText = cleanClickableText(text) sendMessageFromResponse(`Tell me more about ${cleanedText}`) } + } catch (error) { + console.error('Error handling click:', error) + } }
Line range hint
36-51: Fix accessibility issues in clickable content.The current implementation has accessibility issues that need to be addressed:
- Missing keyboard event handlers
- Using span instead of semantic button element
Apply these changes to improve accessibility:
const renderClickableContent = (clickableText: string, restText: string) => ( <> - <span + <button className={cn( 'cursor-pointer hover:underline', isListItem ? 'text-blue-500' : 'text-link' )} onClick={createClickHandler(clickableText)} + onKeyDown={(e) => { + if (e.key === 'Enter' || e.key === ' ') { + createClickHandler(clickableText)() + } + }} - role="button" - tabIndex={0} > {clickableText} - </span> + </button> {restText} </> )🧰 Tools
🪛 Biome (1.9.4)
[error] 38-46: Enforce to have the onClick mouse event with the onKeyUp, the onKeyDown, or the onKeyPress keyboard event.
Actions triggered using mouse events should have corresponding keyboard events to account for keyboard-only navigation.
(lint/a11y/useKeyWithClickEvents)
[error] 43-44: The elements with the following roles can be changed to the following elements:
For examples and more information, see WAI-ARIA Roles
(lint/a11y/useSemanticElements)
apps/masterbots.ai/lib/clickable-results.ts (3)
5-18: Standardize phrase casing and prevent mutationsThe
UNIQUE_PHRASESarray has inconsistent casing across phrases (e.g., "Unique Tip" vs "For a UNIQUE, LESSER-KNOWN phrase"). This could lead to matching issues despite the case-insensitive regex.Consider:
- Standardizing the casing across all phrases
- Using
as constwith readonly arrays to prevent accidental mutations:-export const UNIQUE_PHRASES = [ +export const UNIQUE_PHRASES = Object.freeze([ 'Unique, lesser-known', // ... other phrases -] as const +] as const) as readonly string[]
27-28: Translate Spanish comments to English for consistencyThe comment "Si es un elemento React válido" should be in English to maintain consistency with the codebase.
- // Si es un elemento React válido + // Check if it's a valid React element
25-55: Enhance type safety in extractTextFromReactNodeWebThe function handles React nodes well but could benefit from more explicit type checking.
Consider:
- Adding type guards for React elements
- Using more specific types for object checks:
- if (typeof node === 'object' && node !== null && 'props' in node) { + if (node && typeof node === 'object' && !React.isValidElement(node) && 'props' in node) {
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
📒 Files selected for processing (2)
apps/masterbots.ai/components/routes/chat/chat-clickable-text.tsx(2 hunks)apps/masterbots.ai/lib/clickable-results.ts(1 hunks)
🧰 Additional context used
🪛 Biome (1.9.4)
apps/masterbots.ai/components/routes/chat/chat-clickable-text.tsx
[error] 63-72: Enforce to have the onClick mouse event with the onKeyUp, the onKeyDown, or the onKeyPress keyboard event.
Actions triggered using mouse events should have corresponding keyboard events to account for keyboard-only navigation.
(lint/a11y/useKeyWithClickEvents)
[error] 69-70: The elements with the following roles can be changed to the following elements:
For examples and more information, see WAI-ARIA Roles
(lint/a11y/useSemanticElements)
[error] 64-64: Avoid using the index of an array as key property in an element.
This is the source of the key value.
The order of the items may change, and this also affects performances and component state.
Check the React documentation.
(lint/suspicious/noArrayIndexKey)
[error] 89-89: Avoid using the index of an array as key property in an element.
This is the source of the key value.
The order of the items may change, and this also affects performances and component state.
Check the React documentation.
(lint/suspicious/noArrayIndexKey)
🔇 Additional comments (5)
apps/masterbots.ai/components/routes/chat/chat-clickable-text.tsx (3)
24-27: LGTM! Good separation of extraction methods.
The conditional extraction based on webSearch state effectively addresses the formatting issues mentioned in the PR objectives.
96-109: LGTM! Clean handling of React elements.
The fallback logic for handling React elements and default content is well-implemented.
25-27: Verify web search response formatting.
Please verify that these changes resolve the source links visibility issues mentioned in the PR comments.
✅ Verification successful
Web search formatting changes are properly implemented
The implementation correctly handles source links visibility through two distinct text extraction methods:
extractTextFromReactNodeWeb: Preserves React elements (especially<strong>tags) and structure when web search is enabledextractTextFromReactNodeNormal: Extracts plain text when web search is disabled
The changes ensure that:
- Source links and references are preserved in web search mode
- Strong tags are properly handled for clickable content
- Text extraction methods are correctly toggled based on the
webSearchstate
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Search for related test files to ensure coverage of web search functionality
fd -e test.tsx -e spec.tsx chat-clickable-text
# Search for usage of webSearch flag in related components
rg "webSearch" --type tsx
Length of output: 102
Script:
#!/bin/bash
# Search for test files with any extension
fd "chat-clickable-text.*test" || fd "chat-clickable-text.*spec"
# Search for webSearch usage with ripgrep (using typescript files)
rg "webSearch" -t ts -t tsx
# Look for the implementation of text extraction functions
rg "extractTextFromReactNodeWeb|extractTextFromReactNodeNormal" -t ts -t tsx
Length of output: 195
Script:
#!/bin/bash
# Search for test files
fd "chat-clickable-text.*test"
fd "chat-clickable-text.*spec"
# Search for webSearch usage (without file type filtering)
rg "webSearch"
# Look for the implementation of text extraction functions
rg "extractTextFromReactNodeWeb"
rg "extractTextFromReactNodeNormal"
# Look for any web search related files
fd -e ts -e tsx | rg -i "websearch|web.?search"
Length of output: 5055
Script:
#!/bin/bash
# Look at the implementation of both extraction functions to understand their differences
cat apps/masterbots.ai/lib/clickable-results.ts
# Check the chat-clickable-text component implementation
cat apps/masterbots.ai/components/routes/chat/chat-clickable-text.tsx
Length of output: 6688
apps/masterbots.ai/lib/clickable-results.ts (2)
70-72: Previous review comment still applies
The issue with unescaped special regex characters in createUniquePattern remains unaddressed.
1-119: Verify the implementation with various search result formats
The implementation needs thorough testing with different web search result formats to ensure it correctly preserves source links.
Let's check for similar implementations and test cases:
✅ Verification successful
Implementation verified for web search result formatting
The implementation in clickable-results.ts is correctly used in chat-clickable-text.tsx component with proper handling of:
- Web search vs normal text extraction modes
- URL preservation (not making URLs clickable)
- Strong tag content preservation
- Array of content elements
- Clean text formatting for click actions
- Edge cases like empty or dot-only titles
The code successfully addresses the source links visibility issue by:
- Preserving URLs in their original form
- Maintaining proper text structure with the
parseClickableTextfunction - Correctly handling both web search and normal text modes
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Search for similar text processing implementations and test cases
echo "Searching for related test files..."
fd -e test.ts -e spec.ts --exec grep -l "clickable.*text\|web.*search"
# Look for existing usage patterns
echo "Checking usage patterns..."
rg -l "parseClickableText|extractTextFromReactNode" --type ts
Length of output: 390
Script:
#!/bin/bash
# Let's examine the usage in chat-clickable-text.tsx to understand test cases
echo "Content of chat-clickable-text.tsx:"
cat apps/masterbots.ai/components/routes/chat/chat-clickable-text.tsx
# Let's also search for any test files that might have been missed
echo -e "\nSearching for test files in the entire codebase:"
rg -l "describe.*clickable|test.*clickable" --type ts
Length of output: 3327
|
UPDATE 2.0
Screen.Recording.2024-11-27.at.10.38.49.PM.movWIP Step 3: integrating https://ui.shadcn.com/docs/components/carousel#spacing into CTA references links |
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Outside diff range and nitpick comments (2)
apps/masterbots.ai/components/routes/chat/chat-clickable-text.tsx (2)
Line range hint
36-52: Use semantic button element instead of spanFor better accessibility, use a semantic
buttonelement instead of aspanwithrole="button".Apply this improvement:
- const renderClickableContent = (clickableText: string, restText: string) => ( - <> - <span - className={cn( - 'cursor-pointer hover:underline', - isListItem ? 'text-blue-500' : 'text-link' - )} - onClick={createClickHandler(clickableText)} - role="button" - tabIndex={0} - > - {clickableText} - </span> - {restText} - </> + const renderClickableContent = (clickableText: string, restText: string) => ( + <> + <button + type="button" + className={cn( + 'cursor-pointer hover:underline p-0 m-0 border-none bg-transparent', + isListItem ? 'text-blue-500' : 'text-link' + )} + onClick={createClickHandler(clickableText)} + onKeyDown={createClickHandler(clickableText)} + > + {clickableText} + </button> + {restText} + </> )🧰 Tools
🪛 Biome (1.9.4)
[error] 38-46: Enforce to have the onClick mouse event with the onKeyUp, the onKeyDown, or the onKeyPress keyboard event.
Actions triggered using mouse events should have corresponding keyboard events to account for keyboard-only navigation.
(lint/a11y/useKeyWithClickEvents)
[error] 43-44: The elements with the following roles can be changed to the following elements:
For examples and more information, see WAI-ARIA Roles
(lint/a11y/useSemanticElements)
Line range hint
1-109: Consider extracting click handling logicTo improve maintainability and reusability, consider extracting the click handling logic into a custom hook (e.g.,
useClickableText). This would make it easier to maintain consistent behavior across different components that need similar functionality.Would you like me to provide an example implementation of this custom hook?
🧰 Tools
🪛 Biome (1.9.4)
[error] 63-72: Enforce to have the onClick mouse event with the onKeyUp, the onKeyDown, or the onKeyPress keyboard event.
Actions triggered using mouse events should have corresponding keyboard events to account for keyboard-only navigation.
(lint/a11y/useKeyWithClickEvents)
[error] 69-70: The elements with the following roles can be changed to the following elements:
For examples and more information, see WAI-ARIA Roles
(lint/a11y/useSemanticElements)
[error] 64-64: Avoid using the index of an array as key property in an element.
This is the source of the key value.
The order of the items may change, and this also affects performances and component state.
Check the React documentation.(lint/suspicious/noArrayIndexKey)
[error] 89-89: Avoid using the index of an array as key property in an element.
This is the source of the key value.
The order of the items may change, and this also affects performances and component state.
Check the React documentation.(lint/suspicious/noArrayIndexKey)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
📒 Files selected for processing (1)
apps/masterbots.ai/components/routes/chat/chat-clickable-text.tsx(2 hunks)
🧰 Additional context used
🪛 Biome (1.9.4)
apps/masterbots.ai/components/routes/chat/chat-clickable-text.tsx
[error] 63-72: Enforce to have the onClick mouse event with the onKeyUp, the onKeyDown, or the onKeyPress keyboard event.
Actions triggered using mouse events should have corresponding keyboard events to account for keyboard-only navigation.
(lint/a11y/useKeyWithClickEvents)
[error] 69-70: The elements with the following roles can be changed to the following elements:
For examples and more information, see WAI-ARIA Roles
(lint/a11y/useSemanticElements)
[error] 64-64: Avoid using the index of an array as key property in an element.
This is the source of the key value.
The order of the items may change, and this also affects performances and component state.
Check the React documentation.
(lint/suspicious/noArrayIndexKey)
[error] 89-89: Avoid using the index of an array as key property in an element.
This is the source of the key value.
The order of the items may change, and this also affects performances and component state.
Check the React documentation.
(lint/suspicious/noArrayIndexKey)
🔇 Additional comments (4)
apps/masterbots.ai/components/routes/chat/chat-clickable-text.tsx (4)
1-9: LGTM: Clean imports and well-structured interface
The imports are properly organized and the new utilities from clickable-results are clearly imported.
95-109: LGTM: Clean element and text handling
The fallback logic for handling React elements and plain text is well-implemented with proper type checking.
53-94: 🛠️ Refactor suggestion
Multiple improvements needed in array content handling
- Using array indices as React keys can lead to rendering issues
- Comments should be in English for consistency
- Same accessibility issues as previously mentioned with span vs button
Consider these improvements:
- // Si es un strong, procesamos su contenido manteniendo el texto original
+ // If it's a strong element, process its content while maintaining the original text
if (content.type === 'strong') {
const strongContent = extractTextFromReactNodeNormal((content.props as { children: React.ReactNode }).children)
const { clickableText, restText } = parseClickableText(strongContent + ':')
if (clickableText.trim()) {
return (
- <span
- key={`clickable-${index}`}
+ <button
+ type="button"
+ key={`${strongContent}-${Date.now()}`}
className={cn(
- 'cursor-pointer hover:underline',
+ 'cursor-pointer hover:underline p-0 m-0 border-none bg-transparent',
isListItem ? 'text-blue-500' : 'text-link'
)}
onClick={createClickHandler(clickableText)}
- role="button"
- tabIndex={0}
+ onKeyDown={createClickHandler(clickableText)}
- </span>
+ </button>Likely invalid or redundant comment.
🧰 Tools
🪛 Biome (1.9.4)
[error] 63-72: Enforce to have the onClick mouse event with the onKeyUp, the onKeyDown, or the onKeyPress keyboard event.
Actions triggered using mouse events should have corresponding keyboard events to account for keyboard-only navigation.
(lint/a11y/useKeyWithClickEvents)
[error] 69-70: The elements with the following roles can be changed to the following elements:
For examples and more information, see WAI-ARIA Roles
(lint/a11y/useSemanticElements)
[error] 64-64: Avoid using the index of an array as key property in an element.
This is the source of the key value.
The order of the items may change, and this also affects performances and component state.
Check the React documentation.
(lint/suspicious/noArrayIndexKey)
[error] 89-89: Avoid using the index of an array as key property in an element.
This is the source of the key value.
The order of the items may change, and this also affects performances and component state.
Check the React documentation.
(lint/suspicious/noArrayIndexKey)
22-28: Verify extraction method selection logic
The conditional selection of extraction methods based on webSearch state aligns with the PR's objective to fix web search formatting issues.
Let's verify the extraction functions are properly implemented:
✅ Verification successful
Extraction methods are properly implemented and used correctly
The verification confirms that both extraction functions are well-implemented in apps/masterbots.ai/lib/clickable-results.ts:
extractTextFromReactNodeWebpreserves strong elements and handles React nodes appropriately for web search formattingextractTextFromReactNodeNormalconverts React nodes to plain text by joining their content
The conditional selection based on webSearch state is appropriate for the different formatting requirements.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Check implementation of extraction functions
ast-grep --pattern 'export function extractTextFromReactNodeWeb($_) {
$$$
}'
ast-grep --pattern 'export function extractTextFromReactNodeNormal($_) {
$$$
}'
Length of output: 164
Script:
#!/bin/bash
# Let's try searching for these functions without the 'export' keyword
ast-grep --pattern 'function extractTextFromReactNodeWeb($_) {
$$$
}'
ast-grep --pattern 'function extractTextFromReactNodeNormal($_) {
$$$
}'
# Also search using ripgrep to find any occurrence of these function names
rg "extractTextFromReactNodeWeb" -A 5
rg "extractTextFromReactNodeNormal" -A 5
Length of output: 5944
There was a problem hiding this comment.
Actionable comments posted: 6
🧹 Outside diff range and nitpick comments (9)
apps/masterbots.ai/components/routes/chat/chat-clickable-text.tsx (3)
4-11: Useimport typefor type-only importsFor better tree-shaking and clearer code organization, use the
import typesyntax for type-only imports.-import { +import type { cleanClickableText, extractTextFromReactNodeNormal, extractTextFromReactNodeWeb, parseClickableText, transformLink } from '@/lib/clickable-results' -import { ClickableTextProps } from '@/types/types' +import type { ClickableTextProps } from '@/types/types'🧰 Tools
🪛 Biome (1.9.4)
[error] 11-11: All these imports are only used as types.
Importing the types with import type ensures that they are removed by the compilers and avoids loading unnecessary modules.
Safe fix: Use import type.(lint/style/useImportType)
35-43: Translate comments to English for consistencyMaintain codebase consistency by using English comments.
- // Buscar la referencia correspondiente + // Find the corresponding reference const reference = webSearchResults.find(result => result.url === href) if (reference && onReferenceFound) { onReferenceFound(reference) - return null // Remover el link inline + return null // Remove the inline link } - return linkElement // Mantener links que no son de búsqueda web + return linkElement // Keep non-web-search links
97-114: Translate comments and improve web search link handlingTranslate comments to English and consider adding error handling for invalid links.
- // Manejo de links cuando webSearch está activo + // Handle links when webSearch is active if (content.type === 'a' && webSearch) { + if (!content.props?.href) { + console.warn('Link found without href attribute'); + return content; + }apps/masterbots.ai/lib/clickable-results.ts (5)
4-4: Consider making the GENERAL_PATTERN more specificThe current pattern
/(.*?)([:.,])(?:\s|$)/gis too permissive and might match unintended text. Consider making it more specific to your use case.-export const GENERAL_PATTERN = /(.*?)([:.,])(?:\s|$)/g +export const GENERAL_PATTERN = /([^:.,]+)([:.,])(?:\s|$)/g
7-20: Standardize UNIQUE_PHRASES case and remove redundancyThe array contains phrases with inconsistent casing (e.g., "Unique Tip" vs "UNIQUE, LESSER-KNOWN") and redundant entries (e.g., "Unique, lesser-known" and "Unique, Lesser-Known Destination" follow similar patterns).
Consider:
- Standardizing the case (preferably Title Case)
- Removing redundant patterns
- Using a more maintainable structure
export const UNIQUE_PHRASES = [ - 'Unique, lesser-known', - 'Unique insight', - 'Unique Tip', - 'Unique, lesser-known solution', - 'Unique Solution', - 'Unique, lesser-known option', - 'Unique Insight: Lesser-Known Solution', - 'Unique Recommendation', - 'Lesser-Known Gem', - 'For a UNIQUE, LESSER-KNOWN phrase', - 'Unique, Lesser-Known Destination', - 'For more detailed insights' + 'Unique Insight', + 'Unique Solution', + 'Unique Tip', + 'Unique Recommendation', + 'Lesser-Known Gem', + 'Detailed Insights' ] as const
29-30: Translate Spanish comments to EnglishFor consistency and maintainability, translate the Spanish comment to English.
- // Si es un elemento React válido + // If it's a valid React element
59-60: Fix typo in comment and improve clarityThe comment has a typo and could be more descriptive.
-// ? Tthis does the following: extracts plain text from a ReactNode, ignoring React elements and returning concatenated strings from arrays +// Extracts plain text from a ReactNode by concatenating strings and ignoring React elements
112-114: Enhance cleanClickableText to handle more casesThe current regex only handles a limited set of trailing punctuation marks.
- return text.replace(/[,.()[\]]$/, '').trim() + return text.replace(/[,.()[\]{}'"`;:!?]$/, '').trim()apps/masterbots.ai/types/types.ts (1)
233-243: Consider adding properties to handle formatting issuesBased on the PR comments about formatting issues with source links, consider adding properties to help preserve link visibility:
- A property to indicate if the result contains images
- A property to track formatting state
This could help address the reported issues where source links become invisible after formatting.
export interface WebSearchResult { title: string; url: string; description: string; thumbnail?: { src: string; }; profile: { name: string; }; + hasImages?: boolean; + formattingPreserved?: boolean; }
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
📒 Files selected for processing (4)
apps/masterbots.ai/components/routes/chat/chat-clickable-text.tsx(2 hunks)apps/masterbots.ai/components/routes/chat/chat-message.tsx(5 hunks)apps/masterbots.ai/lib/clickable-results.ts(1 hunks)apps/masterbots.ai/types/types.ts(2 hunks)
🧰 Additional context used
🪛 Biome (1.9.4)
apps/masterbots.ai/components/routes/chat/chat-clickable-text.tsx
[error] 11-11: All these imports are only used as types.
Importing the types with import type ensures that they are removed by the compilers and avoids loading unnecessary modules.
Safe fix: Use import type.
(lint/style/useImportType)
[error] 80-89: Enforce to have the onClick mouse event with the onKeyUp, the onKeyDown, or the onKeyPress keyboard event.
Actions triggered using mouse events should have corresponding keyboard events to account for keyboard-only navigation.
(lint/a11y/useKeyWithClickEvents)
[error] 86-87: The elements with the following roles can be changed to the following elements:
For examples and more information, see WAI-ARIA Roles
(lint/a11y/useSemanticElements)
[error] 81-81: Avoid using the index of an array as key property in an element.
This is the source of the key value.
The order of the items may change, and this also affects performances and component state.
Check the React documentation.
(lint/suspicious/noArrayIndexKey)
[error] 126-126: Avoid using the index of an array as key property in an element.
This is the source of the key value.
The order of the items may change, and this also affects performances and component state.
Check the React documentation.
(lint/suspicious/noArrayIndexKey)
apps/masterbots.ai/components/routes/chat/chat-message.tsx
[error] 10-10: All these imports are only used as types.
Importing the types with import type ensures that they are removed by the compilers and avoids loading unnecessary modules.
Safe fix: Use import type.
(lint/style/useImportType)
[error] 31-31: Avoid using the index of an array as key property in an element.
This is the source of the key value.
The order of the items may change, and this also affects performances and component state.
Check the React documentation.
(lint/suspicious/noArrayIndexKey)
[error] 122-122: Use === instead of ==. == is only allowed when comparing against null
== is only allowed when comparing against null
Using == may be unsafe if you are relying on type coercion
Unsafe fix: Use ===
(lint/suspicious/noDoubleEquals)
apps/masterbots.ai/types/types.ts
[error] 8-8: All these imports are only used as types.
Importing the types with import type ensures that they are removed by the compilers and avoids loading unnecessary modules.
Safe fix: Use import type.
(lint/style/useImportType)
🔇 Additional comments (8)
apps/masterbots.ai/components/routes/chat/chat-clickable-text.tsx (3)
22-24: LGTM! Good separation of web search content extraction
The conditional extraction logic properly addresses the web search formatting issues mentioned in the PR objectives.
26-31:
Add keyboard event handling for accessibility
The click handler still needs keyboard event support for accessibility.
- const createClickHandler = (text: string) => () => {
+ const createClickHandler = (text: string) => (event?: React.MouseEvent | React.KeyboardEvent) => {
+ if (event?.type === 'keydown' && (event as React.KeyboardEvent).key !== 'Enter') {
+ return;
+ }
if (sendMessageFromResponse && text.trim()) {
const cleanedText = cleanClickableText(text)
sendMessageFromResponse(`Tell me more about ${cleanedText}`)
}
}69-95:
Improve strong element handling and accessibility
Several improvements needed in the strong element handling:
- Replace array index keys with content-based keys
- Add keyboard event handling
- Translate Spanish comments
- // Manejo de elementos strong
+ // Handle strong elements
if (content.type === 'strong') {
const strongContent = extractTextFromReactNodeNormal(
(content.props as { children: React.ReactNode }).children
)
const { clickableText, restText } = parseClickableText(
strongContent + ':'
)
if (clickableText.trim()) {
return (
- <span
- key={`clickable-${index}`}
+ <button
+ key={`${strongContent}-${index}`}
className={cn(
'cursor-pointer hover:underline',
isListItem ? 'text-blue-500' : 'text-link'
)}
- onClick={createClickHandler(clickableText)}
+ onClick={createClickHandler(clickableText)}
+ onKeyDown={createClickHandler(clickableText)}
role="button"
tabIndex={0}
- >
+ >
{strongContent}
- </span>
+ </button>
)
}Likely invalid or redundant comment.
🧰 Tools
🪛 Biome (1.9.4)
[error] 80-89: Enforce to have the onClick mouse event with the onKeyUp, the onKeyDown, or the onKeyPress keyboard event.
Actions triggered using mouse events should have corresponding keyboard events to account for keyboard-only navigation.
(lint/a11y/useKeyWithClickEvents)
[error] 86-87: The elements with the following roles can be changed to the following elements:
For examples and more information, see WAI-ARIA Roles
(lint/a11y/useSemanticElements)
[error] 81-81: Avoid using the index of an array as key property in an element.
This is the source of the key value.
The order of the items may change, and this also affects performances and component state.
Check the React documentation.
(lint/suspicious/noArrayIndexKey)
apps/masterbots.ai/lib/clickable-results.ts (1)
77-82: 🛠️ Refactor suggestion
Improve URL detection regex
The current URL regex pattern is basic and might miss valid URLs or match invalid ones.
apps/masterbots.ai/types/types.ts (2)
224-230: LGTM! Well-structured interface for chat messages
The ChatMessageProps interface properly integrates web search results while maintaining backward compatibility with optional properties.
245-251: Verify integration with formatting logic
The interface looks good, but given the reported issues with link formatting:
- Verify that
onReferenceFoundis called before any formatting is applied - Ensure that
isListItemproperly identifies bullet points that contain source links
✅ Verification successful
Implementation correctly handles link formatting and reference detection
After reviewing the implementation, the concerns are properly addressed:
- The
onReferenceFoundis called inprocessLinkfunction before any formatting is applied, specifically when a web search URL match is found. - The
isListItemproperty is correctly used to style bullet points differently (blue color) from regular links, helping distinguish source links.
The implementation follows a clear flow:
- Text extraction based on web search mode
- Link processing that removes inline links after reference detection
- Proper formatting applied after reference handling
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Search for the implementation of ClickableText component and its usage
ast-grep --pattern 'export const ClickableText = ({ children, isListItem, sendMessageFromResponse, webSearchResults, onReferenceFound }: ClickableTextProps) => {
$$$
}'
Length of output: 172
Script:
#!/bin/bash
# Let's try a broader search for ClickableText implementation
rg -l "ClickableText" --type ts --type tsx
# Then search for files that use onReferenceFound
rg "onReferenceFound" --type ts --type tsx -A 5
# Also search for isListItem usage with formatting
rg "isListItem.*format" --type ts --type tsx -A 5
Length of output: 226
Script:
#!/bin/bash
# Search for ClickableText implementation without file type filters
rg -l "ClickableText"
# Then search for onReferenceFound usage
rg "onReferenceFound" -A 5
# Search for isListItem with formatting
rg "isListItem" -A 5
Length of output: 5491
Script:
#!/bin/bash
# Let's examine the content of chat-clickable-text.tsx to see the formatting logic
cat apps/masterbots.ai/components/routes/chat/chat-clickable-text.tsx
# Also check the text extraction function
rg "extractTextFromReactNodeWeb" -A 10
Length of output: 8902
apps/masterbots.ai/components/routes/chat/chat-message.tsx (2)
107-118: Enhance link handling for web search sources
Consider adding specific styling or handling for web search source links to ensure they remain visible and distinct from regular links.
Apply this diff:
a({ href, children, ...props }) {
return (
<a
- className="text-blue-500 underline"
+ className={cn(
+ "text-blue-500 underline",
+ props['data-source'] && "ml-2 font-medium"
+ )}
target="_blank"
rel="noopener noreferrer"
href={href}
{...props}
>
{children}
</a>
)
}122-122: Fix loose equality comparison
Replace the loose equality operator with strict equality for better type safety.
This issue was previously raised.
Apply this diff:
- if (children[0] == '▍') {
+ if (children[0] === '▍') {🧰 Tools
🪛 Biome (1.9.4)
[error] 122-122: Use === instead of ==. == is only allowed when comparing against null
== is only allowed when comparing against null
Using == may be unsafe if you are relying on type coercion
Unsafe fix: Use ===
(lint/suspicious/noDoubleEquals)
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (7)
apps/masterbots.ai/lib/utils.ts (1)
Line range hint
18-31: Consider using a more specific type instead ofany.While the error handling is robust, using
anyreduces type safety. Consider:
- Creating an interface for the expected JSON response
- Using a generic type parameter with constraints
Example implementation:
interface ApiResponse { error?: string; // Add other expected response fields } export async function fetcher<T extends ApiResponse>( input: RequestInfo, init?: RequestInit ): Promise<T> { // ... rest of the implementation }apps/masterbots.ai/components/routes/chat/chat-clickable-text.tsx (3)
35-43: Translate Spanish comments to English.For consistency and maintainability, comments should be in English:
-// Buscar la referencia correspondiente +// Find the corresponding reference -return linkElement // Mantener links que no son de búsqueda web +return linkElement // Keep non-web-search links
48-54: Add ARIA label for better accessibility.The button should have an ARIA label to improve screen reader support.
<button className={cn('cursor-pointer hover:underline bg-transparent border-none p-0 m-0', isListItem ? 'text-blue-500' : 'text-link')} onClick={createClickHandler(clickableText)} type="button" + aria-label={`Learn more about ${clickableText}`} >
91-92: Translate Spanish comments to English.For consistency and maintainability, comments should be in English:
-// Manejo de links cuando webSearch está activo +// Handle links when webSearch is activeapps/masterbots.ai/components/routes/chat/chat-message.tsx (3)
31-39: Add error handling for thumbnail images and improve accessibilityConsider adding error handling for image loading and improving accessibility:
<img src={ref.thumbnail.src} alt={ref.title} + onError={(e) => { + e.currentTarget.style.display = 'none' + }} className="object-cover w-20 h-20 rounded" + loading="lazy" + width={80} + height={80} />🧰 Tools
🪛 Biome (1.9.4)
[error] 31-31: Avoid using the index of an array as key property in an element.
This is the source of the key value.
The order of the items may change, and this also affects performances and component state.
Check the React documentation.(lint/suspicious/noArrayIndexKey)
41-49: Enhance reference link accessibility and SEOThe reference title and source name should be more descriptive for accessibility and SEO purposes.
-<h4 className="font-medium">{ref.title}</h4> +<h4 className="font-medium"> + <a + href={ref.url} + target="_blank" + rel="noopener noreferrer" + className="text-blue-500 hover:underline" + aria-label={`Read more about ${ref.title}`} + > + {ref.title} + </a> +</h4> -<a - href={ref.url} - target="_blank" - rel="noopener noreferrer" - className="text-blue-500 hover:underline" -> - {ref.profile.name} -</a> +<p className="text-sm text-gray-600"> + Source: {ref.profile.name} +</p>
85-94: Make list item component more flexibleThe list item implementation could be more flexible by supporting both ordered and unordered list styles.
-<li className="ml-6 list-disc list-outside"> +<li className={cn( + "ml-6 list-outside", + props.ordered ? "list-decimal" : "list-disc" +)}> <ClickableText isListItem sendMessageFromResponse={sendMessageFromResponse} + webSearchResults={webSearchResults} + onReferenceFound={ref => setReferences(prev => [...prev, ref])} > {children} </ClickableText> </li>
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (7)
apps/masterbots.ai/app/actions/ai-executers.ts(1 hunks)apps/masterbots.ai/components/routes/chat/chat-clickable-text.tsx(1 hunks)apps/masterbots.ai/components/routes/chat/chat-message.tsx(4 hunks)apps/masterbots.ai/lib/constants/prompts.ts(1 hunks)apps/masterbots.ai/lib/hooks/use-mb-chat.ts(19 hunks)apps/masterbots.ai/lib/utils.ts(12 hunks)apps/masterbots.ai/types/types.ts(4 hunks)
🚧 Files skipped from review as they are similar to previous changes (3)
- apps/masterbots.ai/lib/constants/prompts.ts
- apps/masterbots.ai/app/actions/ai-executers.ts
- apps/masterbots.ai/types/types.ts
🧰 Additional context used
🪛 Biome (1.9.4)
apps/masterbots.ai/components/routes/chat/chat-message.tsx
[error] 31-31: Avoid using the index of an array as key property in an element.
This is the source of the key value.
The order of the items may change, and this also affects performances and component state.
Check the React documentation.
(lint/suspicious/noArrayIndexKey)
[error] 122-122: Use === instead of ==. == is only allowed when comparing against null
== is only allowed when comparing against null
Using == may be unsafe if you are relying on type coercion
Unsafe fix: Use ===
(lint/suspicious/noDoubleEquals)
apps/masterbots.ai/lib/hooks/use-mb-chat.ts
[error] 109-109: Forbidden non-null assertion.
Unsafe fix: Replace with optional chain operator ?. This operator includes runtime checks, so it is safer than the compile-only non-null assertion operator
(lint/style/noNonNullAssertion)
[error] 125-125: Forbidden non-null assertion.
Unsafe fix: Replace with optional chain operator ?. This operator includes runtime checks, so it is safer than the compile-only non-null assertion operator
(lint/style/noNonNullAssertion)
[error] 126-126: Forbidden non-null assertion.
Unsafe fix: Replace with optional chain operator ?. This operator includes runtime checks, so it is safer than the compile-only non-null assertion operator
(lint/style/noNonNullAssertion)
[error] 138-138: Forbidden non-null assertion.
Unsafe fix: Replace with optional chain operator ?. This operator includes runtime checks, so it is safer than the compile-only non-null assertion operator
(lint/style/noNonNullAssertion)
[error] 146-146: Forbidden non-null assertion.
Unsafe fix: Replace with optional chain operator ?. This operator includes runtime checks, so it is safer than the compile-only non-null assertion operator
(lint/style/noNonNullAssertion)
[error] 166-166: Forbidden non-null assertion.
Unsafe fix: Replace with optional chain operator ?. This operator includes runtime checks, so it is safer than the compile-only non-null assertion operator
(lint/style/noNonNullAssertion)
[error] 167-167: Forbidden non-null assertion.
Unsafe fix: Replace with optional chain operator ?. This operator includes runtime checks, so it is safer than the compile-only non-null assertion operator
(lint/style/noNonNullAssertion)
[error] 242-242: Forbidden non-null assertion.
Unsafe fix: Replace with optional chain operator ?. This operator includes runtime checks, so it is safer than the compile-only non-null assertion operator
(lint/style/noNonNullAssertion)
[error] 243-243: Forbidden non-null assertion.
Unsafe fix: Replace with optional chain operator ?. This operator includes runtime checks, so it is safer than the compile-only non-null assertion operator
(lint/style/noNonNullAssertion)
[error] 250-250: Forbidden non-null assertion.
Unsafe fix: Replace with optional chain operator ?. This operator includes runtime checks, so it is safer than the compile-only non-null assertion operator
(lint/style/noNonNullAssertion)
[error] 315-315: Forbidden non-null assertion.
Unsafe fix: Replace with optional chain operator ?. This operator includes runtime checks, so it is safer than the compile-only non-null assertion operator
(lint/style/noNonNullAssertion)
apps/masterbots.ai/components/routes/chat/chat-clickable-text.tsx
[error] 75-75: Avoid using the index of an array as key property in an element.
This is the source of the key value.
The order of the items may change, and this also affects performances and component state.
Check the React documentation.
(lint/suspicious/noArrayIndexKey)
[error] 119-119: Avoid using the index of an array as key property in an element.
This is the source of the key value.
The order of the items may change, and this also affects performances and component state.
Check the React documentation.
(lint/suspicious/noArrayIndexKey)
apps/masterbots.ai/lib/utils.ts
[error] 18-18: Unexpected any. Specify a different type.
any disables many type checking rules. Its use should be avoided.
(lint/suspicious/noExplicitAny)
🔇 Additional comments (17)
apps/masterbots.ai/lib/utils.ts (7)
15-15: LGTM: Appropriate ID length configuration.The 7-character length provides a good balance between uniqueness and readability for generated IDs.
38-38: LGTM: Improved function signatures.The changes enhance code clarity and flexibility, particularly making
endMarkeroptional inextractBetweenMarkers.Also applies to: 58-58, 61-61
107-111: LGTM: Enhanced message content cleaning.The addition of
cleanPromptaligns well with the PR's objective to improve web search response formatting.
308-334: Consider adding test cases for edge cases.The number formatting implementation looks solid but should be tested with various edge cases:
- Zero
- Numbers close to suffix boundaries (e.g., 999,999)
- Very large numbers (> 999B)
- Decimal numbers
Would you like me to generate comprehensive test cases for these scenarios?
337-341: LGTM: Improved type safety.Good use of readonly arrays and proper null handling with the optional chaining operator.
94-95: Verify the message pairing behavior change.The switch from
continuetobreakmeans only the first assistant message will be collected for each user message, instead of all subsequent ones. Please confirm if this is the intended behavior for web search responses.Also applies to: 99-99
✅ Verification successful
Change from
continuetobreakis correct and intentionalThe modification ensures each user message is paired with exactly one assistant response, which aligns with the UI components' usage patterns in both browse and chat views. This creates a more predictable and cleaner chat display experience.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Search for any tests or usage patterns of createMessagePairs rg -l "createMessagePairs" | xargs rg -A 5 "createMessagePairs"Length of output: 3871
Script:
#!/bin/bash # Check the full implementation of createMessagePairs and surrounding context rg -B 10 -A 20 "export function createMessagePairs" apps/masterbots.ai/lib/utils.tsLength of output: 908
Line range hint
251-301: Verify no remaining references to removed functions.The text parsing functions have been moved to a separate file. Let's verify there are no remaining references to these functions in the codebase.
✅ Verification successful
Functions properly moved and referenced from new location
The text parsing functions have been successfully moved to
clickable-results.tsand all references in the codebase are properly importing them from the new location. No cleanup needed.🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Search for any remaining references to the removed functions echo "Checking for references to removed functions..." rg -l "extractTextFromReactNode|createUniquePattern|parseClickableText|cleanClickableText"Length of output: 339
Script:
#!/bin/bash # Check the actual usage context in each file echo "=== Content of clickable-results.ts ===" rg -A 2 "extractTextFromReactNode|createUniquePattern|parseClickableText" "apps/masterbots.ai/lib/clickable-results.ts" echo -e "\n=== Content of chat-clickable-text.tsx ===" rg -A 2 "extractTextFromReactNode|createUniquePattern|parseClickableText" "apps/masterbots.ai/components/routes/chat/chat-clickable-text.tsx"Length of output: 2687
apps/masterbots.ai/components/routes/chat/chat-clickable-text.tsx (2)
3-18: LGTM! Import statements and props are well-structured.The new imports and props effectively support the web search functionality enhancements.
26-31: 🛠️ Refactor suggestionAdd keyboard event handling for accessibility.
The click handler should support keyboard navigation for better accessibility.
-const createClickHandler = (text: string) => () => { +const createClickHandler = (text: string) => (event?: React.KeyboardEvent | React.MouseEvent) => { + if (event?.type === 'keydown' && (event as React.KeyboardEvent).key !== 'Enter') { + return + } if (sendMessageFromResponse && text.trim()) { const cleanedText = cleanClickableText(text) sendMessageFromResponse(`Tell me more about ${cleanedText}`) } }Likely invalid or redundant comment.
apps/masterbots.ai/lib/hooks/use-mb-chat.ts (6)
235-278: Well-structured error handling and state management.The function properly manages loading states and handles errors with appropriate cleanup.
🧰 Tools
🪛 Biome (1.9.4)
[error] 242-242: Forbidden non-null assertion.
Unsafe fix: Replace with optional chain operator ?. This operator includes runtime checks, so it is safer than the compile-only non-null assertion operator
(lint/style/noNonNullAssertion)
[error] 243-243: Forbidden non-null assertion.
Unsafe fix: Replace with optional chain operator ?. This operator includes runtime checks, so it is safer than the compile-only non-null assertion operator
(lint/style/noNonNullAssertion)
[error] 250-250: Forbidden non-null assertion.
Unsafe fix: Replace with optional chain operator ?. This operator includes runtime checks, so it is safer than the compile-only non-null assertion operator
(lint/style/noNonNullAssertion)
288-291: Good error handling with user-friendly messages.The error message is clear and actionable for users.
Line range hint
417-449: Well-structured type definitions.The types are comprehensive and properly document the hook's interface.
124-127:⚠️ Potential issueReplace non-null assertions with optional chaining.
Using non-null assertions (!.) can lead to runtime errors if the session object is undefined.
-jwt: session!.user?.hasuraJwt, -userId: session!.user.id, +jwt: session?.user?.hasuraJwt, +userId: session?.user?.id,Likely invalid or redundant comment.
🧰 Tools
🪛 Biome (1.9.4)
[error] 125-125: Forbidden non-null assertion.
Unsafe fix: Replace with optional chain operator ?. This operator includes runtime checks, so it is safer than the compile-only non-null assertion operator
(lint/style/noNonNullAssertion)
[error] 126-126: Forbidden non-null assertion.
Unsafe fix: Replace with optional chain operator ?. This operator includes runtime checks, so it is safer than the compile-only non-null assertion operator
(lint/style/noNonNullAssertion)
315-315:⚠️ Potential issueReplace non-null assertion with optional chaining.
Using non-null assertion (!.) can lead to runtime errors.
-userId: session!.user.id, +userId: session?.user?.id,Likely invalid or redundant comment.
🧰 Tools
🪛 Biome (1.9.4)
[error] 315-315: Forbidden non-null assertion.
Unsafe fix: Replace with optional chain operator ?. This operator includes runtime checks, so it is safer than the compile-only non-null assertion operator
(lint/style/noNonNullAssertion)
242-243:⚠️ Potential issueReplace non-null assertions with optional chaining.
Using non-null assertions (!.) can lead to runtime errors if the session object is undefined.
-jwt: session!.user?.hasuraJwt, -userId: session!.user.id, +jwt: session?.user?.hasuraJwt, +userId: session?.user?.id,Likely invalid or redundant comment.
🧰 Tools
🪛 Biome (1.9.4)
[error] 242-242: Forbidden non-null assertion.
Unsafe fix: Replace with optional chain operator ?. This operator includes runtime checks, so it is safer than the compile-only non-null assertion operator
(lint/style/noNonNullAssertion)
[error] 243-243: Forbidden non-null assertion.
Unsafe fix: Replace with optional chain operator ?. This operator includes runtime checks, so it is safer than the compile-only non-null assertion operator
(lint/style/noNonNullAssertion)
apps/masterbots.ai/components/routes/chat/chat-message.tsx (2)
120-127: 🛠️ Refactor suggestionSimplify cursor animation logic and fix equality comparison
The cursor animation logic can be simplified, and the loose equality comparison should be fixed.
code({ inline, className, children, ...props }) { if (children.length) { - if (children[0] == '▍') { + if (children[0] === '▍') { return ( <span className="mt-1 cursor-default animate-pulse">▍</span> ) } - children[0] = (children[0] as string).replace('▍', '▍') }The line
children[0] = (children[0] as string).replace('▍', '▍')appears to be unnecessary as it's replacing '▍' with itself.Likely invalid or redundant comment.
🧰 Tools
🪛 Biome (1.9.4)
[error] 122-122: Use === instead of ==. == is only allowed when comparing against
null== is only allowed when comparing against null
Using == may be unsafe if you are relying on type coercion
Unsafe fix: Use ===(lint/suspicious/noDoubleEquals)
23-56: Verify web search results renderingThe new
ReferencesSectioncomponent successfully addresses the source links visibility issue mentioned in the PR objectives. However, please test the following scenarios:
- Long titles and URLs wrapping correctly
- Multiple references with and without thumbnails
- Different viewport sizes (mobile, tablet, desktop)
Run the following script to check for potential edge cases in the references data:
🧰 Tools
🪛 Biome (1.9.4)
[error] 31-31: Avoid using the index of an array as key property in an element.
This is the source of the key value.
The order of the items may change, and this also affects performances and component state.
Check the React documentation.(lint/suspicious/noArrayIndexKey)
| if (clickableText.trim()) { | ||
| return ( | ||
| <button | ||
| key={`clickable-${index}`} |
There was a problem hiding this comment.
🛠️ Refactor suggestion
Replace array indices with stable unique keys.
Using array indices as React keys can lead to rendering issues when items are reordered or removed.
-key={`clickable-${index}`}
+key={`clickable-${clickableText}-${index}`}Also applies to: 119-119
🧰 Tools
🪛 Biome (1.9.4)
[error] 75-75: Avoid using the index of an array as key property in an element.
This is the source of the key value.
The order of the items may change, and this also affects performances and component state.
Check the React documentation.
(lint/suspicious/noArrayIndexKey)
* devops: force deploy * devops: trigger automated build * devops: trigger automated build * devops: trigger automated build * devops: trigger automated build * devops: trigger automated build * devops: trigger automated build * devops: trigger automated build * impr(masterbots.ai): add return to browse on bot thread page view (#204) * ✨ Added back button to thread details page * ⚡️ changed char to svg * feat: ai gen 404 image for custom 404 error page (#210) * ⚡️ added custom error page * ⚡️ clean up * fix(masterbots.ai): terms page visibility and access * feat(masterbots.ai): consistent og image style design and dynamic metadata (#215) * feat: added og api endpoint * feat: design og image for dark mode * fix: file formated * fix: amend og image to pick current theme color and adapt * feat: added custom metadata to thread page * feat: added custom metadata to bot page * fix: clean up * fix: move bg to a component * fix: move og-image design to a component * fix: use variable for URL * fix: to slug func * ⚡️ Move and clean up UrlToSlug * fix(masterbots.ai): zod dependecy * fix: type error * fix: type error for metadata * fix: clean and build fix --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * fix(masterbots.ai): OG not redering (#224) * fix: og to render first letter of username if there's no avatar * fix: clean up * fix: clean up * fix(masterbots.ai): share function (#225) * feat: create action.ts * fix: upt share button * fix: add axios module * fix: add resend module * fix: update vercel env config * fix: split share function * fix: update share component * [coderabbitai] style: upt thread-user-actions condition Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: Roberto Lucas <andre.rlucas@outlook.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * feat(hasura): update user db schema for pro users (#227) * feat: add get_free_month column to user table * feat: create referral table * feat: add is_blocked column to user table * feat: add pro_user_subscription_id column to user table * fix: upt metadata * fix: update relationship name * feat(hasura): add Ai Model Tracker To Threads (#229) * feat: create 'models' table AI models * fix: add 'model' column to 'thread' table with foreign key constraint * feat: add model_value into models * [masterbots.ai] feat: multi AI models integration (#228) * [masterbots.ai]feat:(multimodels-integration)add actions - helpers - routes * [masterbots.ai]feat:(multimodels-integration)add NextTopLoader * [masterbots.ai]feat:(multimodels-integration)add NextTopLoaders * [masterbots.ai]feat:(multimodels-integration)add new chat components * [masterbots.ai]chore:next version * [masterbots.ai]feat:(multimodels-integration)update use context * [masterbots.ai]feat:(multimodels-integration)icons update * [masterbots.ai]chore:command ui * [masterbots.ai]refactor:moving chat componets to folder * [masterbots.ai]feat:env checker * [masterbots.ai]feat:env guard * docs: site map diagram * [masterbots.ai] fix: multi AI models guard (#235) * fix-guards + dom warning * fix-rename env var - vercel name * chore(masterbots.ai): update payment terms & conditions (#233) * fix: update terms * fix: building error * fix: update terms content * fix: rm the older part at the bottom * feat(masterbots.ai): pro subscription payment + wizard (#226) * feat: added free card * feat: added animation to the plan card * feat: added more plan card and referral code link * fix: clean up * wip: wizard * feat: wizard & modal * feat: plan Design theme and modal Header and Footer * feat: plan clean up * update * clean up * fix: rm plan comp on browse page * fix: wizard clean up * feat: succes & error modal * feat: loading comp * feat: added checkout comp * feat: set up stripe and context * wip: implementing subscription * feat: implementing subscription * feat: payment reciept * fix: clean up receipt * fix: modal not showing & shallow routing * fix: small fix * fix: receipt comp * fix: clean up * fix: shallow rerouting * feat: check if user has an active subscription * fix: coderabbit ob * fix: coderabbit ob * fix: coderabbit clean up update * fix: coderabbit clean up update * fix: coderabbit clean up update * fix: clean up * fix: clean up * fix: page restructuring and status on the receipt * fix: revamp receipt and structure * fix: rm unused file * fix: clean up * fix: update & clean up * fix: update * fix: rm the svg * fix: revamp formatSystemPrompts * fix: revamp msg to formatSystemPrompts * fix: update * fix: refactor the receipt page * fix: rm public key * fix: update * fix: update * fix: update * fix: code refactor for error and loading rendering * ref: calling secret keys from server * ref: receipt page and small fix * fix: rm file * fix(impr): subs & flow ux + cleanup * fix(masterbots.ai): OG not redering (#224) * fix: og to render first letter of username if there's no avatar * fix: clean up * fix: clean up * fix(masterbots.ai): share function (#225) * feat: create action.ts * fix: upt share button * fix: add axios module * fix: add resend module * fix: update vercel env config * fix: split share function * fix: update share component * [coderabbitai] style: upt thread-user-actions condition Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: Roberto Lucas <andre.rlucas@outlook.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * feat(hasura): update user db schema for pro users (#227) * feat: add get_free_month column to user table * feat: create referral table * feat: add is_blocked column to user table * feat: add pro_user_subscription_id column to user table * fix: upt metadata * fix: update relationship name * feat(hasura): add Ai Model Tracker To Threads (#229) * feat: create 'models' table AI models * fix: add 'model' column to 'thread' table with foreign key constraint * feat: add model_value into models * [masterbots.ai] feat: multi AI models integration (#228) * [masterbots.ai]feat:(multimodels-integration)add actions - helpers - routes * [masterbots.ai]feat:(multimodels-integration)add NextTopLoader * [masterbots.ai]feat:(multimodels-integration)add NextTopLoaders * [masterbots.ai]feat:(multimodels-integration)add new chat components * [masterbots.ai]chore:next version * [masterbots.ai]feat:(multimodels-integration)update use context * [masterbots.ai]feat:(multimodels-integration)icons update * [masterbots.ai]chore:command ui * [masterbots.ai]refactor:moving chat componets to folder * [masterbots.ai]feat:env checker * [masterbots.ai]feat:env guard * docs: site map diagram * feat: set up stripe and context * wip: implementing subscription * fix: rm the svg * fix: replace secret with variable * fix: chat restructure * fix(update): chat restructure * fix(deployment error): can't find an icon or not exported * fix: deployment issues * fix: deployment issues * fix: deployment issues * fix: adjust design * fix: clean up * fix: clean up * fix: color var updaye * [coderabbitai] impr: update apps/masterbots.ai/components/stripe-element.tsx Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * [coderabitai] impr: update apps/masterbots.ai/components/succes-content.tsx Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix: success close button * fix: bg image for yearly card * fix: move func to util * ref: receipt page function to use reac-use * fix: move depencies to the app * fix: clean up * ref: wizard to use radix dialog components * update * fix: coderabitai update --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> Co-authored-by: Nathanael Liu <supernathanliu@gmail.com> Co-authored-by: Roberto Lucas <andre.rlucas@outlook.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Brandon Fernández <31634868+Bran18@users.noreply.github.com> * [masterbots.ai] fix: llama3 models (#236) * fix-guards + dom warning * fix-rename env var - vercel name * fix-changed PERPLEXITY-LLama model * [masterbots.ai] impr(fix): ui tweaks (#237) * fix(UI):varius UI fixes * fix(UI):varius UI fixes * fix(UI): Tailwind class corrections, conflict resolution, text alignent to the left * fix(UI):update * fix(masterbots.ai): payment feedbacks (#240) * fix: make the dialog content responsive * fix: free plan card adjusted * fix: update * fix: update receipt styles * fix: build error * fix: build error * fix: build error update * fix: update * fix: observation * fix(masterbots.ai): update env variable (#244) * feat: sitemap (#238) * feat: add redirection rules * fix: update all links with new shorten urls * fix: update all links with new shorten urls * feat: make folder structure according to sitemap * [coderabbitai] impr(masterbots.ai): update app/c/page.tsx error handling Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * [coderabbitai] impr(masterbots.ai): update app/c/[category]/[chatbot]/page.tsx error handling Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix: build error * [coderabbitai] impr(masterbots.ai): update app/c/[category]/[chatbot]/page.tsx error handling Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * feat: add sitemap and metagraph * fix: use original generateMetadata * fix: update page links * fix: show only filtered threads on page reload * fix: build error --------- Co-authored-by: Roberto Lucas <andler@bitcash.org> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix(masterbots.ai): show first question & answer in thread list (#246) * feat: add 'disabled' state to ChatAccordion * fix: show default question's answer in thread list * fix: use braces and create explicit statement blocks * fix: subscription mobile responsive tweaks (#245) * update * fix: update * fix: responsiveness * fix: update * fix: few clean up * fix: rm unused image * fix: rm unused image * fix(impr): models enum table migrations (#247) * impr(hasura): db tables * impr(hasura): db tables * fix(hasura): user permissions * impr(hasura): sql models enum migration * fix(hasura): models_enum pk * fix(hasura): ci/cd default regional log bucket * docs: bun to requirements (#250) Co-authored-by: b <b> * feat: next auth, email/pw strategy (#249) * (masterbots.ia)-chore-auth-dependencies * (masterbots.ia)-feat-webauth-nextauth * wip(masterbots.ai): email/pw login + signup * feat-login ui * feat-login-component+page * feat-login-component+page * feat-auth-middleware.ts * feat-auth-nextauth + googleauth * feat-auth-coderabit-feedback * feat-auth-callback + elements added * wip(webapp): email/pw login+signup * feat:add toke storage for webauth * feat:updates webauth * feat:updates webauth * fix(masterbots.ai): blankBot fetch --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> Co-authored-by: Roberto Romero Lucas <andre.rlucas@outlook.com> * docs: mb sytem diagram v1.0a * feat(impr): next auth environment helper function (#251) * (masterbots.ia)-chore-auth-dependencies * (masterbots.ia)-feat-webauth-nextauth * wip(masterbots.ai): email/pw login + signup * feat-login ui * feat-login-component+page * feat-login-component+page * feat-auth-middleware.ts * feat-auth-nextauth + googleauth * feat-auth-coderabit-feedback * feat-auth-callback + elements added * wip(webapp): email/pw login+signup * feat:add toke storage for webauth * feat:updates webauth * feat:updates webauth * fix(masterbots.ai): blankBot fetch * feat:protecting env --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> Co-authored-by: Roberto Romero Lucas <andre.rlucas@outlook.com> * impr(masterbots.ai): sign up form + sign in session data * docs: claude3 project knowledge docs * fix(masterbots.ai): devMode conditional * chore(masterbots.ai): rm console.log * chore: upt default hardcoded gpt model * fix: toSlug imports * fix: typo * fix(hasura): seeds * chore(impr): MB seeds update and upgrade (#253) * wip: upt seeds * chore: rm alter and table creations * chore(impr): MB seeds update and upgrade * fix: set thread to private by default * fix: prompt row typo * chore(hasura): seeds update default thread publicity * fix(masterbots.ai): adjust arrow direction in thread list (#255) * feat(impr): Vercel AI SDK Update (#256) * chore:ai version upt * chore:ai version upt * upt-ai delete * upt-ai versions * upt-sdk-actions * upt-complete-sdk-3.3 + dev notes * upt-@anthropic-ai/sdk + MessageParam * Delete apps/masterbots.ai/apps/masterbots.ai/package.json * Delete apps/masterbots.ai/apps/masterbots.ai/package-lock.json * impr-convertToCoreMessages ternary * Leandro/develop (#257) * chore: create thread-component to avoid to become thread list into a client component * refactor: remove unnecesary hooks from thread component * refactor: remove unnecesary hooks on thread componen * impr(masterbots): components folder structur (#259) * impr:refactor components folders + names + imports * hotfix:chat-list useEffect dependency removal * fix(masterbots): google signIn (#260) * fix(masterbots.ai): fix thread-component loop (#261) * fix:(masterbots.ai) add useScroll hook (#263) * fix:introducing Two-phase scroll * impr: new hook to handle scrolling * impr: useScroll + respo * feat(masterbots.ai): chat sidebar filtering (#264) * sidebar refactor with ai * fix: sidebar AI V - Prev Jun (#262) * fix:semistable * fix:stable v * impr:delete nonused component * fix: upt category filtering * fix typo --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * feat: sidebar state * fix(masterbots.ai): logic typo * fix(masterbots.ai): ts typo --------- Co-authored-by: Jun Dam <jun@bitcash.org> Co-authored-by: Brandon Fernández <31634868+Bran18@users.noreply.github.com> * fix(masterbots.ai): bot button redirect change (#265) * wip(masterbots.ai): seo data impr (#267) * wip: seo data impr * impr(chore): ga tags * feat: add chat publicity trigger (#258) * update * feat: design thread visibilty * fix: added the backend * fix: added the backend * fix: rm files * fix: few clean up * fix(masterbots): google signIn (#260) * feat: design thread visibilty * fix: added the backend * fix: few clean up * Leandro/develop (#257) * chore: create thread-component to avoid to become thread list into a client component * refactor: remove unnecesary hooks from thread component * refactor: remove unnecesary hooks on thread componen * impr(masterbots): components folder structur (#259) * impr:refactor components folders + names + imports * hotfix:chat-list useEffect dependency removal * feat: design thread visibilty * fix: added the backend * fix: few clean up * fix: update * fix: add permission * fix: update query * fix(masterbots.ai): fix thread-component loop (#261) * feat: design thread visibilty * fix: added the backend * fix: few clean up * feat: design thread visibilty * fix: added the backend * fix: few clean up * Leandro/develop (#257) * chore: create thread-component to avoid to become thread list into a client component * refactor: remove unnecesary hooks from thread component * refactor: remove unnecesary hooks on thread componen * impr(masterbots): components folder structur (#259) * impr:refactor components folders + names + imports * hotfix:chat-list useEffect dependency removal * feat: design thread visibilty * fix: added the backend * fix: few clean up * update * fix: update * fix: publicity toggle * fix: error catch in the functions * fix: observations * fix: design impr * fix: thread pop-up height * chore(masterbots.ai): log rm & app version upt --------- Co-authored-by: Roberto Lucas <andler@bitcash.org> Co-authored-by: Leandro Gavidia Santamaria <93232139+leandrogavidia@users.noreply.github.com> Co-authored-by: Brandon Fernández <31634868+Bran18@users.noreply.github.com> Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * feat(masterbots.ai): user messages ai refactor (#266) * feat:userMessages refactor + hooks and utils * upt:rm console.log * fix:rollback useAiChat hook * fix:rollback - actions * fix(masterbots.ai): sidebar trigger * chore(hasura: s --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * wip: browse sidebar * impr(masterbots.ai): browse sidebar (#270) * fix: browse layout * feat(masterbots.ai): browse sidebar * fix: browse sidebar link condition * chore: upt signup default profile pic * chore: seeds upt (#269) * wip: seeds upt * chore(hasura): seeds review * feat(hasura): add "is_approved" thread field + seeds * chore: mb-genql upt * fix(hasura): thread param permission * fix(masterbots.ai): typo * fix(masterbots.ai): allow svg content-type * fix: chat + browse layout * style: clean up * Seo data (#273) * fix: build error * feat: Add SEO data to the chat page * feat: add default image, if not found * feat: Add SEO data to the browse page * fix: generates the image with error, in api/og * Update route.tsx fix: generates the image with error, in api/og * impr(masterbots.ai): title impr prompt * impr(masterbots.ai): improve current features v2 (#274) * add-impr-chat-prompt-footer-header-disclaimer * add-impr-chat-prompt-footer-header-disclaimer * add-UI-upt * add-UI-upt * add-action-prompt * add-clickable-upt * add-clickable-upt * Masterbots/fix redirects (#275) * fix:avatar-redirects * fix:avatar-redirect * fix(masterbots.ai): upt components/ui/button.tsx Coderabbitai suggestion. Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix:URL correction --------- Co-authored-by: Roberto Lucas <andler@bitcash.org> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * [masterbots.ai] feat: wordware api (#276) * feat: add wordware api + vercel sdk strategy * feat: add wordware api + vercel sdk * wordware describe feat * wordware run + interface * impr(masterbots.ai): upt /api/wordware/describe/route.ts coderabbitai code suggestion. Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * impr(masterbots.ai): upt /api/wordware/describe/route.ts coderabbitai code suggestion. Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix(masterbots.ai): typo /api/wordware/describe/route.ts coderabbitai code suggestion. Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: Roberto Lucas <andler@bitcash.org> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * doc: mb system diagram upt * wip: icl calls integrations * impr(masterbots.ai): permission for thread & user action mode (#281) * update * feat: added permissions & new column * fix: rm unnessecary files * fix: rm permission check * feat(masterbots.ai): create password recovery (#282) * feat:add-recovery-strategy * chore:add nodeemailer * upt:hasura * upt:hasura * upt:gmail service * feat(hasura): otp, token table + junction w/user + mb-genql gen * feat:add recovery password API * fix:ai suggestion + UX * feat:improve ux show password feat * chore:env sample * chore:useSetState * chore:roles --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * [masterbots.ai] impr: WW API sanitize and keep alive (#284) * keep-alive + API sanitize + timeOut guard * impr streamAndValidateResponse fn * wip(masterbots.ai): impr createImprovementPrompt * style(masterbots.ai): chat loading states comments * feat(masterbots.ai): add admin mode to approve thread (#283) * feat:added mode toggle and approve btn * feat: added migration for user role * feat: user role flow implet * fix: impr admin approve process * fix: clean up * fix: toggle CTA changed * fix: update * fix: update * fix: observ * fix: obs clean up * fix: update * fix: clean up * impr(masterbots.ai): alpha metadata chatbot labels (#288) * wip: metadata chatbot labels * wip(masterbots.ai): chatbot metadata labels * impr(masterbots.ai): gen chatMetadata * impr: simplifying prompt defitions + biome.json base config * impr(masterbots.ai): recursive improved text prompt * style: code comments + eslint chk * impr: biome.json config * fix(masterbots.ai): conflicts typo fix * style(impr): cleanPrompt + followingQuestionsPrompt relocation & cleanup * doc: map system (simplified) * fix(masterbots.ai): sideBar updating URL (#286) * fix:sideBar updating URL * feat: coderabbit-ai suggestions * fix: Implement auto-expanding sidebar categories and chatbot highlighting based on URL * feat: optimize sidebar navigation with Link * feat: thread options (#287) * feat: added verified and label to the options * usethreadvisibility as context * feat: added option design and functions * fix: clean up * fix: update * fix: update * fix: obsv * fix: merge and update * fix: update the delete popup * fix: observ * fix: update * fix: delete thread flow * update * fix: update * fix: types * fix: chatbot not required * fix: testing * fix: rm bun.lock * fix: clean up * fix: update * fix(masterbots.ai): temp freezing next version --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * [masterbots.ai] feat: email verification (#289) * feat: email verification * feat: email verification * feat: email verification * upt:build * feat: handle error redirection * chore:cron task * upt: cron blocking instead erasing * feat(hasura): create social following table. (#292) * feat(db): create social following table. * create user following and followers relationships. * fix(db): ensure users can only manage their own follow relationships. * feat(db): social following and user table permissions improvements. * feat(db): improving social following table with timestamp and idx. * impr(db): permissions and tracked object relationships. * impr(db): avoid self follow. * chore(masterbots.ai): guard WordWare for prod routing * [masterbots.ai] fix: public/private tag bg on dark mode (#294) * fix: tag bg * fix: text color * fix: browse page error * fix: debugging * fix: debugging * fix: debugging * fix: added func to generate short link * fix(hasura): upt user permissions (#296) * update user permission * fix: reverse the following table * fix(hasura): build error (#297) * fix: error build * fix: reverse select perm * [masterbots.ai] feat: thread list display + components comments for ai (#299) * merged from develop * feat:add new ui-thread-representation-browse * feat:add comments for ai - C * feat:add comments for ai - b/p * feat:add comments for ai - b/p * feat:add comments for ai - b/p * feat:add app theme colors effects * feat:add comments for ai - b/p * [masterbots.ai] feat: chatbot search tool v0.1a (#295) * wip: chatbot search tool * wip(impr): ww api + chat ui tweaks * fix: init sidebar load state * fix: nesting layout * fix: thread-popup ui header * wip(impr): chatbot tooling * impr: loading state + debug chatbot tools * wip(fix): nodejs context * fix(temp): rm edge runtime api config * [masterbots.ai] feat: reorganize navigation menu for mobile view (#298) * feat: reorganize navigation menu for mobile view * UI: add sideBar style * feat: add link profile and logout icon * Update profile-sidebar.tsx Tailwind class fix * [masterbots.ai] feat: UI + Logic Improvements (#301) * feat:impr responsive * feat:impr password strenght checker * feat:impr responsive * upt-build * feat:respomsive tweask * feat:back arrow aria label * fix:chat mobile layout * fix:code section * fix:chat pannel * fix:chatBot redirection * feat:restore appConfig header * [masterbots.ai] fix: restore desktop navigation link - browse section (#303) * fix:restore desktop navigation link - browse * fix:formating * feat:yellow combobox btn (JUN-REQUEST) * glowing effect variant * upt:removed /b navigation as original v * feat:powerup mode + provider * [masterbots.ai] fix(impr): browse and chat content search (#304) * feat:browse title and content search * feat:browse title and content search * fix:typo * impr:reusable non result component * feat:skeletons * feat:guard * fix:skeletons * fix:chat searching * fix: add accent colour --------- Co-authored-by: Roberto Lucas <andler@bitcash.org> * [masterbots.ai] impr: seo sitemap (#306) * chore: sitemap creation * chore: add description based on category * chore: update queries in services * chore: truncate text * impr: upt (browse)/[category]/[threadId]/sitemap.ts coderabbitai code suggestion. Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: Roberto Lucas <andler@bitcash.org> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * [masterbots.ai] impr: ai tools (#302) * wip: ai tools * fix: WW json regexp * impr: simplifying main ai call * wip(fix): chat component re-render + cleanup * impr(refactor): chat hooks * fix: ts build * fix: ts build * fix: ts typo * fix: typo * impr: ai feedbacks * [masterbots.ai] wip(impr): web search (#309) * impr: web search tool call * fix: colour values * fix: typo * impr: code suggestions * fix: class name typo * wip(fix): web search false positive response + webSearch context * fix: web search callback * fix: typo * feat: profile page (#300) * feat: user card * fix: update * merge develop && update * feat: user generate bio & favourite topic * fix: update user card * feat: added profile sidebar * fix: update * update * update * update * fix: fetch approved and public threads * fix: fetch approved and public threads * update * fix: clean up and update * update * make fetch user work with bio * update * update * design updating * update * update * fix: few changes * update * fix: design update * fix: footer in layout * fix: update * fix: resercation * update * profile upload * feat: move the cloudinary key to env * fix: layout * fix: layout update * [masterbots.ai] fix: shallow routing for category & chatbots for chat & profile page (#313) * update * feat: added shallow link to the sidebar link * update' * fix: routing and content fetching * fix:update on routing * fix:update * update * update * update * fix: clean up * update * update * [masterbots.ai] feat: update ChatChatbotDetails (#314) * feat: new bot profile - chat * chore: dev comments * chore: white bg bot avatar * feat: add skeleton bot profile * [masterbots.ai] feat: include custom settings options (#317) * feat:relocation of theme switch(jun) * feat: create font-size accessibility provider(jun) * feat: r-sidebar theme switcher relocation + skeleton * feat: impr add rem instead px * [masterbots.ai] feat: integrate drizzle ORM (#320) * feat: create mb-drizzle package initial structure * feat:(masterbots.ai) add drizzle endpoint + service * chore: include database url * chore: upt mb-drizzle * feat: refactor drizzle config + generations * chore: impr migrate * chore: add working drizzle connection + migrations * feat: add centralized actions * chore: add ai review recomendations * chore: webSearch feature flag + use cloudinary upload preset * fix: responsive sidebar fix * fix: ts chk build * fix: sidebar async call * fix: ts build * chore: typo * [masterbots.ai] fix: browse category navigation (#316) * update * fix: rm category * update * fix: pop up on the user threads * update * update clean up * update * fix: clean up * fix: clean up and update * fix: update * fix: popup on navigation * fix: update * update * update * update * clean up * update * merge * fix: hasura thread delete + user dup permissions (#330) * [masterbots.ai] feat: onboarding bot profile variants (#324) * add chatbot-details and browse-details variants * feat: add bio generation * feat: chat profile bg * chore: update bot profile designs * chore: remove internal padding from cardHeader component * impr: iconography + border thickness * fix: numberShortener util fn --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * feat: user following (#319) * update * added follow user * update * fix: upt hasura metadata databases, public_social_following.yaml coderabbitai code suggestion. Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix: upt masterbots.ai lib, utils.ts coderabbitai suggestion. Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix: user card * update * fix: permission * update * fix: added more column for chatbot followee * fix:foloow chatbot implementation * update * threads by following user/bots * update * update * update * update * update * update * update * update --------- Co-authored-by: Roberto Lucas <andler@bitcash.org> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * [masterbots.ai] impr: new sonner (#334) * chore: add new icons * feat: Sonner custom hooks and setup * feat: use useSonner hook throughout the app * fix: overflow of the width of the sonner * chore: add new icons * feat: Sonner custom hooks and setup * feat: use useSonner hook throughout the app * chore: use hook sonner * refactor: changes according to coderabbitai * refactor: update use of sonner * chore:remove icons and use lucide icons * chore: Using Lucide Icons * chore: bun pkg mngr upt * Standardize url building using urlbuilders utility (#341) * fix: update url * fix: url update * update * [masterbots.ai] impr: og Image api dynamic to be useful without thread ID (#335) * update * fix: make OG image use default * fix: update * fix: update * fix: obs * fix: update * fix: added og to browse and chat * update * update * update * fix: provider types error * fix: updfate UUID * fix: update UUID * [masterbots.ai] docs: hook useSonner (#343) * chore: document hook useSonner * refactor: document hook useSonner, according coderabbit * impr: web search response (#310) * impr: web search response * refactor: extracting clickable generation logic * refactor: extracting clickable generation logic * fix: webSearch clickable text + reference links * chore: fix build * feat:(impr) stable version link to references format step 1 * feat:(impr) stable version link to references format step 2 --------- Co-authored-by: Bran18 <andreyfdez18@gmail.com> * [masterbots.ai] refactor: prelaunch ux/ui changes (#336) * refactor: replicate tooltip effect in desktop bot chatbot details * fix: add guard and removed re-render * fix: refactor mobile bot chatbot details * refactor: make chatPannel bigger * chore:add new bot card design + sidebar hover color * chore: delete public and private sw + icons * chore: include public + delete extra actions * chore: add sidebar bg * add sidebar new styles + lib fn * feat: add select bot * chore: cleaning * fix: build - removing BotMessageSquareIcon * fix: types/node version + node min ver req --------- Co-authored-by: sheriffjimoh <sheriffjimoh88@gmail.com> Co-authored-by: Roberto Lucas <andre.rlucas@outlook.com> --------- Co-authored-by: Gabo Esquivel <contact@gaboesquivel.com> Co-authored-by: Jimoh sherifdeen <63134009+sheriffjimoh@users.noreply.github.com> Co-authored-by: Nathanael Liu <supernathanliu@gmail.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Brandon Fernández <31634868+Bran18@users.noreply.github.com> Co-authored-by: Anouk Rímola <77553677+AnoukRImola@users.noreply.github.com> Co-authored-by: Trivium <25100787+Nemunas@users.noreply.github.com> Co-authored-by: Leandro Gavidia Santamaria <93232139+leandrogavidia@users.noreply.github.com> Co-authored-by: Jun Dam <jun@bitcash.org> Co-authored-by: Luis Carrión <41096968+luighis@users.noreply.github.com> Co-authored-by: Marco Ledezma <marcoledezmacordero09@gmail.com> Co-authored-by: Bran18 <andreyfdez18@gmail.com> Co-authored-by: sheriffjimoh <sheriffjimoh88@gmail.com>
* devops: force deploy * devops: trigger automated build * devops: trigger automated build * devops: trigger automated build * devops: trigger automated build * devops: trigger automated build * devops: trigger automated build * devops: trigger automated build * impr(masterbots.ai): add return to browse on bot thread page view (#204) * ✨ Added back button to thread details page * ⚡️ changed char to svg * feat: ai gen 404 image for custom 404 error page (#210) * ⚡️ added custom error page * ⚡️ clean up * fix(masterbots.ai): terms page visibility and access * feat(masterbots.ai): consistent og image style design and dynamic metadata (#215) * feat: added og api endpoint * feat: design og image for dark mode * fix: file formated * fix: amend og image to pick current theme color and adapt * feat: added custom metadata to thread page * feat: added custom metadata to bot page * fix: clean up * fix: move bg to a component * fix: move og-image design to a component * fix: use variable for URL * fix: to slug func * ⚡️ Move and clean up UrlToSlug * fix(masterbots.ai): zod dependecy * fix: type error * fix: type error for metadata * fix: clean and build fix --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * fix(masterbots.ai): OG not redering (#224) * fix: og to render first letter of username if there's no avatar * fix: clean up * fix: clean up * fix(masterbots.ai): share function (#225) * feat: create action.ts * fix: upt share button * fix: add axios module * fix: add resend module * fix: update vercel env config * fix: split share function * fix: update share component * [coderabbitai] style: upt thread-user-actions condition Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: Roberto Lucas <andre.rlucas@outlook.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * feat(hasura): update user db schema for pro users (#227) * feat: add get_free_month column to user table * feat: create referral table * feat: add is_blocked column to user table * feat: add pro_user_subscription_id column to user table * fix: upt metadata * fix: update relationship name * feat(hasura): add Ai Model Tracker To Threads (#229) * feat: create 'models' table AI models * fix: add 'model' column to 'thread' table with foreign key constraint * feat: add model_value into models * [masterbots.ai] feat: multi AI models integration (#228) * [masterbots.ai]feat:(multimodels-integration)add actions - helpers - routes * [masterbots.ai]feat:(multimodels-integration)add NextTopLoader * [masterbots.ai]feat:(multimodels-integration)add NextTopLoaders * [masterbots.ai]feat:(multimodels-integration)add new chat components * [masterbots.ai]chore:next version * [masterbots.ai]feat:(multimodels-integration)update use context * [masterbots.ai]feat:(multimodels-integration)icons update * [masterbots.ai]chore:command ui * [masterbots.ai]refactor:moving chat componets to folder * [masterbots.ai]feat:env checker * [masterbots.ai]feat:env guard * docs: site map diagram * [masterbots.ai] fix: multi AI models guard (#235) * fix-guards + dom warning * fix-rename env var - vercel name * chore(masterbots.ai): update payment terms & conditions (#233) * fix: update terms * fix: building error * fix: update terms content * fix: rm the older part at the bottom * feat(masterbots.ai): pro subscription payment + wizard (#226) * feat: added free card * feat: added animation to the plan card * feat: added more plan card and referral code link * fix: clean up * wip: wizard * feat: wizard & modal * feat: plan Design theme and modal Header and Footer * feat: plan clean up * update * clean up * fix: rm plan comp on browse page * fix: wizard clean up * feat: succes & error modal * feat: loading comp * feat: added checkout comp * feat: set up stripe and context * wip: implementing subscription * feat: implementing subscription * feat: payment reciept * fix: clean up receipt * fix: modal not showing & shallow routing * fix: small fix * fix: receipt comp * fix: clean up * fix: shallow rerouting * feat: check if user has an active subscription * fix: coderabbit ob * fix: coderabbit ob * fix: coderabbit clean up update * fix: coderabbit clean up update * fix: coderabbit clean up update * fix: clean up * fix: clean up * fix: page restructuring and status on the receipt * fix: revamp receipt and structure * fix: rm unused file * fix: clean up * fix: update & clean up * fix: update * fix: rm the svg * fix: revamp formatSystemPrompts * fix: revamp msg to formatSystemPrompts * fix: update * fix: refactor the receipt page * fix: rm public key * fix: update * fix: update * fix: update * fix: code refactor for error and loading rendering * ref: calling secret keys from server * ref: receipt page and small fix * fix: rm file * fix(impr): subs & flow ux + cleanup * fix(masterbots.ai): OG not redering (#224) * fix: og to render first letter of username if there's no avatar * fix: clean up * fix: clean up * fix(masterbots.ai): share function (#225) * feat: create action.ts * fix: upt share button * fix: add axios module * fix: add resend module * fix: update vercel env config * fix: split share function * fix: update share component * [coderabbitai] style: upt thread-user-actions condition Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: Roberto Lucas <andre.rlucas@outlook.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * feat(hasura): update user db schema for pro users (#227) * feat: add get_free_month column to user table * feat: create referral table * feat: add is_blocked column to user table * feat: add pro_user_subscription_id column to user table * fix: upt metadata * fix: update relationship name * feat(hasura): add Ai Model Tracker To Threads (#229) * feat: create 'models' table AI models * fix: add 'model' column to 'thread' table with foreign key constraint * feat: add model_value into models * [masterbots.ai] feat: multi AI models integration (#228) * [masterbots.ai]feat:(multimodels-integration)add actions - helpers - routes * [masterbots.ai]feat:(multimodels-integration)add NextTopLoader * [masterbots.ai]feat:(multimodels-integration)add NextTopLoaders * [masterbots.ai]feat:(multimodels-integration)add new chat components * [masterbots.ai]chore:next version * [masterbots.ai]feat:(multimodels-integration)update use context * [masterbots.ai]feat:(multimodels-integration)icons update * [masterbots.ai]chore:command ui * [masterbots.ai]refactor:moving chat componets to folder * [masterbots.ai]feat:env checker * [masterbots.ai]feat:env guard * docs: site map diagram * feat: set up stripe and context * wip: implementing subscription * fix: rm the svg * fix: replace secret with variable * fix: chat restructure * fix(update): chat restructure * fix(deployment error): can't find an icon or not exported * fix: deployment issues * fix: deployment issues * fix: deployment issues * fix: adjust design * fix: clean up * fix: clean up * fix: color var updaye * [coderabbitai] impr: update apps/masterbots.ai/components/stripe-element.tsx Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * [coderabitai] impr: update apps/masterbots.ai/components/succes-content.tsx Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix: success close button * fix: bg image for yearly card * fix: move func to util * ref: receipt page function to use reac-use * fix: move depencies to the app * fix: clean up * ref: wizard to use radix dialog components * update * fix: coderabitai update --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> Co-authored-by: Nathanael Liu <supernathanliu@gmail.com> Co-authored-by: Roberto Lucas <andre.rlucas@outlook.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Brandon Fernández <31634868+Bran18@users.noreply.github.com> * [masterbots.ai] fix: llama3 models (#236) * fix-guards + dom warning * fix-rename env var - vercel name * fix-changed PERPLEXITY-LLama model * [masterbots.ai] impr(fix): ui tweaks (#237) * fix(UI):varius UI fixes * fix(UI):varius UI fixes * fix(UI): Tailwind class corrections, conflict resolution, text alignent to the left * fix(UI):update * fix(masterbots.ai): payment feedbacks (#240) * fix: make the dialog content responsive * fix: free plan card adjusted * fix: update * fix: update receipt styles * fix: build error * fix: build error * fix: build error update * fix: update * fix: observation * fix(masterbots.ai): update env variable (#244) * feat: sitemap (#238) * feat: add redirection rules * fix: update all links with new shorten urls * fix: update all links with new shorten urls * feat: make folder structure according to sitemap * [coderabbitai] impr(masterbots.ai): update app/c/page.tsx error handling Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * [coderabbitai] impr(masterbots.ai): update app/c/[category]/[chatbot]/page.tsx error handling Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix: build error * [coderabbitai] impr(masterbots.ai): update app/c/[category]/[chatbot]/page.tsx error handling Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * feat: add sitemap and metagraph * fix: use original generateMetadata * fix: update page links * fix: show only filtered threads on page reload * fix: build error --------- Co-authored-by: Roberto Lucas <andler@bitcash.org> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix(masterbots.ai): show first question & answer in thread list (#246) * feat: add 'disabled' state to ChatAccordion * fix: show default question's answer in thread list * fix: use braces and create explicit statement blocks * fix: subscription mobile responsive tweaks (#245) * update * fix: update * fix: responsiveness * fix: update * fix: few clean up * fix: rm unused image * fix: rm unused image * fix(impr): models enum table migrations (#247) * impr(hasura): db tables * impr(hasura): db tables * fix(hasura): user permissions * impr(hasura): sql models enum migration * fix(hasura): models_enum pk * fix(hasura): ci/cd default regional log bucket * docs: bun to requirements (#250) Co-authored-by: b <b> * feat: next auth, email/pw strategy (#249) * (masterbots.ia)-chore-auth-dependencies * (masterbots.ia)-feat-webauth-nextauth * wip(masterbots.ai): email/pw login + signup * feat-login ui * feat-login-component+page * feat-login-component+page * feat-auth-middleware.ts * feat-auth-nextauth + googleauth * feat-auth-coderabit-feedback * feat-auth-callback + elements added * wip(webapp): email/pw login+signup * feat:add toke storage for webauth * feat:updates webauth * feat:updates webauth * fix(masterbots.ai): blankBot fetch --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> Co-authored-by: Roberto Romero Lucas <andre.rlucas@outlook.com> * docs: mb sytem diagram v1.0a * feat(impr): next auth environment helper function (#251) * (masterbots.ia)-chore-auth-dependencies * (masterbots.ia)-feat-webauth-nextauth * wip(masterbots.ai): email/pw login + signup * feat-login ui * feat-login-component+page * feat-login-component+page * feat-auth-middleware.ts * feat-auth-nextauth + googleauth * feat-auth-coderabit-feedback * feat-auth-callback + elements added * wip(webapp): email/pw login+signup * feat:add toke storage for webauth * feat:updates webauth * feat:updates webauth * fix(masterbots.ai): blankBot fetch * feat:protecting env --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> Co-authored-by: Roberto Romero Lucas <andre.rlucas@outlook.com> * impr(masterbots.ai): sign up form + sign in session data * docs: claude3 project knowledge docs * fix(masterbots.ai): devMode conditional * chore(masterbots.ai): rm console.log * chore: upt default hardcoded gpt model * fix: toSlug imports * fix: typo * fix(hasura): seeds * chore(impr): MB seeds update and upgrade (#253) * wip: upt seeds * chore: rm alter and table creations * chore(impr): MB seeds update and upgrade * fix: set thread to private by default * fix: prompt row typo * chore(hasura): seeds update default thread publicity * fix(masterbots.ai): adjust arrow direction in thread list (#255) * feat(impr): Vercel AI SDK Update (#256) * chore:ai version upt * chore:ai version upt * upt-ai delete * upt-ai versions * upt-sdk-actions * upt-complete-sdk-3.3 + dev notes * upt-@anthropic-ai/sdk + MessageParam * Delete apps/masterbots.ai/apps/masterbots.ai/package.json * Delete apps/masterbots.ai/apps/masterbots.ai/package-lock.json * impr-convertToCoreMessages ternary * Leandro/develop (#257) * chore: create thread-component to avoid to become thread list into a client component * refactor: remove unnecesary hooks from thread component * refactor: remove unnecesary hooks on thread componen * impr(masterbots): components folder structur (#259) * impr:refactor components folders + names + imports * hotfix:chat-list useEffect dependency removal * fix(masterbots): google signIn (#260) * fix(masterbots.ai): fix thread-component loop (#261) * fix:(masterbots.ai) add useScroll hook (#263) * fix:introducing Two-phase scroll * impr: new hook to handle scrolling * impr: useScroll + respo * feat(masterbots.ai): chat sidebar filtering (#264) * sidebar refactor with ai * fix: sidebar AI V - Prev Jun (#262) * fix:semistable * fix:stable v * impr:delete nonused component * fix: upt category filtering * fix typo --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * feat: sidebar state * fix(masterbots.ai): logic typo * fix(masterbots.ai): ts typo --------- Co-authored-by: Jun Dam <jun@bitcash.org> Co-authored-by: Brandon Fernández <31634868+Bran18@users.noreply.github.com> * fix(masterbots.ai): bot button redirect change (#265) * wip(masterbots.ai): seo data impr (#267) * wip: seo data impr * impr(chore): ga tags * feat: add chat publicity trigger (#258) * update * feat: design thread visibilty * fix: added the backend * fix: added the backend * fix: rm files * fix: few clean up * fix(masterbots): google signIn (#260) * feat: design thread visibilty * fix: added the backend * fix: few clean up * Leandro/develop (#257) * chore: create thread-component to avoid to become thread list into a client component * refactor: remove unnecesary hooks from thread component * refactor: remove unnecesary hooks on thread componen * impr(masterbots): components folder structur (#259) * impr:refactor components folders + names + imports * hotfix:chat-list useEffect dependency removal * feat: design thread visibilty * fix: added the backend * fix: few clean up * fix: update * fix: add permission * fix: update query * fix(masterbots.ai): fix thread-component loop (#261) * feat: design thread visibilty * fix: added the backend * fix: few clean up * feat: design thread visibilty * fix: added the backend * fix: few clean up * Leandro/develop (#257) * chore: create thread-component to avoid to become thread list into a client component * refactor: remove unnecesary hooks from thread component * refactor: remove unnecesary hooks on thread componen * impr(masterbots): components folder structur (#259) * impr:refactor components folders + names + imports * hotfix:chat-list useEffect dependency removal * feat: design thread visibilty * fix: added the backend * fix: few clean up * update * fix: update * fix: publicity toggle * fix: error catch in the functions * fix: observations * fix: design impr * fix: thread pop-up height * chore(masterbots.ai): log rm & app version upt --------- Co-authored-by: Roberto Lucas <andler@bitcash.org> Co-authored-by: Leandro Gavidia Santamaria <93232139+leandrogavidia@users.noreply.github.com> Co-authored-by: Brandon Fernández <31634868+Bran18@users.noreply.github.com> Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * feat(masterbots.ai): user messages ai refactor (#266) * feat:userMessages refactor + hooks and utils * upt:rm console.log * fix:rollback useAiChat hook * fix:rollback - actions * fix(masterbots.ai): sidebar trigger * chore(hasura: s --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * wip: browse sidebar * impr(masterbots.ai): browse sidebar (#270) * fix: browse layout * feat(masterbots.ai): browse sidebar * fix: browse sidebar link condition * chore: upt signup default profile pic * chore: seeds upt (#269) * wip: seeds upt * chore(hasura): seeds review * feat(hasura): add "is_approved" thread field + seeds * chore: mb-genql upt * fix(hasura): thread param permission * fix(masterbots.ai): typo * fix(masterbots.ai): allow svg content-type * fix: chat + browse layout * style: clean up * Seo data (#273) * fix: build error * feat: Add SEO data to the chat page * feat: add default image, if not found * feat: Add SEO data to the browse page * fix: generates the image with error, in api/og * Update route.tsx fix: generates the image with error, in api/og * impr(masterbots.ai): title impr prompt * impr(masterbots.ai): improve current features v2 (#274) * add-impr-chat-prompt-footer-header-disclaimer * add-impr-chat-prompt-footer-header-disclaimer * add-UI-upt * add-UI-upt * add-action-prompt * add-clickable-upt * add-clickable-upt * Masterbots/fix redirects (#275) * fix:avatar-redirects * fix:avatar-redirect * fix(masterbots.ai): upt components/ui/button.tsx Coderabbitai suggestion. Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix:URL correction --------- Co-authored-by: Roberto Lucas <andler@bitcash.org> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * [masterbots.ai] feat: wordware api (#276) * feat: add wordware api + vercel sdk strategy * feat: add wordware api + vercel sdk * wordware describe feat * wordware run + interface * impr(masterbots.ai): upt /api/wordware/describe/route.ts coderabbitai code suggestion. Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * impr(masterbots.ai): upt /api/wordware/describe/route.ts coderabbitai code suggestion. Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix(masterbots.ai): typo /api/wordware/describe/route.ts coderabbitai code suggestion. Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: Roberto Lucas <andler@bitcash.org> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * doc: mb system diagram upt * wip: icl calls integrations * impr(masterbots.ai): permission for thread & user action mode (#281) * update * feat: added permissions & new column * fix: rm unnessecary files * fix: rm permission check * feat(masterbots.ai): create password recovery (#282) * feat:add-recovery-strategy * chore:add nodeemailer * upt:hasura * upt:hasura * upt:gmail service * feat(hasura): otp, token table + junction w/user + mb-genql gen * feat:add recovery password API * fix:ai suggestion + UX * feat:improve ux show password feat * chore:env sample * chore:useSetState * chore:roles --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * [masterbots.ai] impr: WW API sanitize and keep alive (#284) * keep-alive + API sanitize + timeOut guard * impr streamAndValidateResponse fn * wip(masterbots.ai): impr createImprovementPrompt * style(masterbots.ai): chat loading states comments * feat(masterbots.ai): add admin mode to approve thread (#283) * feat:added mode toggle and approve btn * feat: added migration for user role * feat: user role flow implet * fix: impr admin approve process * fix: clean up * fix: toggle CTA changed * fix: update * fix: update * fix: observ * fix: obs clean up * fix: update * fix: clean up * impr(masterbots.ai): alpha metadata chatbot labels (#288) * wip: metadata chatbot labels * wip(masterbots.ai): chatbot metadata labels * impr(masterbots.ai): gen chatMetadata * impr: simplifying prompt defitions + biome.json base config * impr(masterbots.ai): recursive improved text prompt * style: code comments + eslint chk * impr: biome.json config * fix(masterbots.ai): conflicts typo fix * style(impr): cleanPrompt + followingQuestionsPrompt relocation & cleanup * doc: map system (simplified) * fix(masterbots.ai): sideBar updating URL (#286) * fix:sideBar updating URL * feat: coderabbit-ai suggestions * fix: Implement auto-expanding sidebar categories and chatbot highlighting based on URL * feat: optimize sidebar navigation with Link * feat: thread options (#287) * feat: added verified and label to the options * usethreadvisibility as context * feat: added option design and functions * fix: clean up * fix: update * fix: update * fix: obsv * fix: merge and update * fix: update the delete popup * fix: observ * fix: update * fix: delete thread flow * update * fix: update * fix: types * fix: chatbot not required * fix: testing * fix: rm bun.lock * fix: clean up * fix: update * fix(masterbots.ai): temp freezing next version --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * [masterbots.ai] feat: email verification (#289) * feat: email verification * feat: email verification * feat: email verification * upt:build * feat: handle error redirection * chore:cron task * upt: cron blocking instead erasing * feat(hasura): create social following table. (#292) * feat(db): create social following table. * create user following and followers relationships. * fix(db): ensure users can only manage their own follow relationships. * feat(db): social following and user table permissions improvements. * feat(db): improving social following table with timestamp and idx. * impr(db): permissions and tracked object relationships. * impr(db): avoid self follow. * chore(masterbots.ai): guard WordWare for prod routing * [masterbots.ai] fix: public/private tag bg on dark mode (#294) * fix: tag bg * fix: text color * fix: browse page error * fix: debugging * fix: debugging * fix: debugging * fix: added func to generate short link * fix(hasura): upt user permissions (#296) * update user permission * fix: reverse the following table * fix(hasura): build error (#297) * fix: error build * fix: reverse select perm * [masterbots.ai] feat: thread list display + components comments for ai (#299) * merged from develop * feat:add new ui-thread-representation-browse * feat:add comments for ai - C * feat:add comments for ai - b/p * feat:add comments for ai - b/p * feat:add comments for ai - b/p * feat:add app theme colors effects * feat:add comments for ai - b/p * [masterbots.ai] feat: chatbot search tool v0.1a (#295) * wip: chatbot search tool * wip(impr): ww api + chat ui tweaks * fix: init sidebar load state * fix: nesting layout * fix: thread-popup ui header * wip(impr): chatbot tooling * impr: loading state + debug chatbot tools * wip(fix): nodejs context * fix(temp): rm edge runtime api config * [masterbots.ai] feat: reorganize navigation menu for mobile view (#298) * feat: reorganize navigation menu for mobile view * UI: add sideBar style * feat: add link profile and logout icon * Update profile-sidebar.tsx Tailwind class fix * [masterbots.ai] feat: UI + Logic Improvements (#301) * feat:impr responsive * feat:impr password strenght checker * feat:impr responsive * upt-build * feat:respomsive tweask * feat:back arrow aria label * fix:chat mobile layout * fix:code section * fix:chat pannel * fix:chatBot redirection * feat:restore appConfig header * [masterbots.ai] fix: restore desktop navigation link - browse section (#303) * fix:restore desktop navigation link - browse * fix:formating * feat:yellow combobox btn (JUN-REQUEST) * glowing effect variant * upt:removed /b navigation as original v * feat:powerup mode + provider * [masterbots.ai] fix(impr): browse and chat content search (#304) * feat:browse title and content search * feat:browse title and content search * fix:typo * impr:reusable non result component * feat:skeletons * feat:guard * fix:skeletons * fix:chat searching * fix: add accent colour --------- Co-authored-by: Roberto Lucas <andler@bitcash.org> * [masterbots.ai] impr: seo sitemap (#306) * chore: sitemap creation * chore: add description based on category * chore: update queries in services * chore: truncate text * impr: upt (browse)/[category]/[threadId]/sitemap.ts coderabbitai code suggestion. Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: Roberto Lucas <andler@bitcash.org> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * [masterbots.ai] impr: ai tools (#302) * wip: ai tools * fix: WW json regexp * impr: simplifying main ai call * wip(fix): chat component re-render + cleanup * impr(refactor): chat hooks * fix: ts build * fix: ts build * fix: ts typo * fix: typo * impr: ai feedbacks * [masterbots.ai] wip(impr): web search (#309) * impr: web search tool call * fix: colour values * fix: typo * impr: code suggestions * fix: class name typo * wip(fix): web search false positive response + webSearch context * fix: web search callback * fix: typo * feat: profile page (#300) * feat: user card * fix: update * merge develop && update * feat: user generate bio & favourite topic * fix: update user card * feat: added profile sidebar * fix: update * update * update * update * fix: fetch approved and public threads * fix: fetch approved and public threads * update * fix: clean up and update * update * make fetch user work with bio * update * update * design updating * update * update * fix: few changes * update * fix: design update * fix: footer in layout * fix: update * fix: resercation * update * profile upload * feat: move the cloudinary key to env * fix: layout * fix: layout update * [masterbots.ai] fix: shallow routing for category & chatbots for chat & profile page (#313) * update * feat: added shallow link to the sidebar link * update' * fix: routing and content fetching * fix:update on routing * fix:update * update * update * update * fix: clean up * update * update * [masterbots.ai] feat: update ChatChatbotDetails (#314) * feat: new bot profile - chat * chore: dev comments * chore: white bg bot avatar * feat: add skeleton bot profile * [masterbots.ai] feat: include custom settings options (#317) * feat:relocation of theme switch(jun) * feat: create font-size accessibility provider(jun) * feat: r-sidebar theme switcher relocation + skeleton * feat: impr add rem instead px * [masterbots.ai] feat: integrate drizzle ORM (#320) * feat: create mb-drizzle package initial structure * feat:(masterbots.ai) add drizzle endpoint + service * chore: include database url * chore: upt mb-drizzle * feat: refactor drizzle config + generations * chore: impr migrate * chore: add working drizzle connection + migrations * feat: add centralized actions * chore: add ai review recomendations * chore: webSearch feature flag + use cloudinary upload preset * fix: responsive sidebar fix * fix: ts chk build * fix: sidebar async call * fix: ts build * chore: typo * [masterbots.ai] fix: browse category navigation (#316) * update * fix: rm category * update * fix: pop up on the user threads * update * update clean up * update * fix: clean up * fix: clean up and update * fix: update * fix: popup on navigation * fix: update * update * update * update * clean up * update * merge * fix: hasura thread delete + user dup permissions (#330) * [masterbots.ai] feat: onboarding bot profile variants (#324) * add chatbot-details and browse-details variants * feat: add bio generation * feat: chat profile bg * chore: update bot profile designs * chore: remove internal padding from cardHeader component * impr: iconography + border thickness * fix: numberShortener util fn --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * feat: user following (#319) * update * added follow user * update * fix: upt hasura metadata databases, public_social_following.yaml coderabbitai code suggestion. Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix: upt masterbots.ai lib, utils.ts coderabbitai suggestion. Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix: user card * update * fix: permission * update * fix: added more column for chatbot followee * fix:foloow chatbot implementation * update * threads by following user/bots * update * update * update * update * update * update * update * update --------- Co-authored-by: Roberto Lucas <andler@bitcash.org> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * [masterbots.ai] impr: new sonner (#334) * chore: add new icons * feat: Sonner custom hooks and setup * feat: use useSonner hook throughout the app * fix: overflow of the width of the sonner * chore: add new icons * feat: Sonner custom hooks and setup * feat: use useSonner hook throughout the app * chore: use hook sonner * refactor: changes according to coderabbitai * refactor: update use of sonner * chore:remove icons and use lucide icons * chore: Using Lucide Icons * chore: bun pkg mngr upt * Standardize url building using urlbuilders utility (#341) * fix: update url * fix: url update * update * [masterbots.ai] impr: og Image api dynamic to be useful without thread ID (#335) * update * fix: make OG image use default * fix: update * fix: update * fix: obs * fix: update * fix: added og to browse and chat * update * update * update * fix: provider types error * fix: updfate UUID * fix: update UUID * [masterbots.ai] docs: hook useSonner (#343) * chore: document hook useSonner * refactor: document hook useSonner, according coderabbit * impr: web search response (#310) * impr: web search response * refactor: extracting clickable generation logic * refactor: extracting clickable generation logic * fix: webSearch clickable text + reference links * chore: fix build * feat:(impr) stable version link to references format step 1 * feat:(impr) stable version link to references format step 2 --------- Co-authored-by: Bran18 <andreyfdez18@gmail.com> * [masterbots.ai] refactor: prelaunch ux/ui changes (#336) * refactor: replicate tooltip effect in desktop bot chatbot details * fix: add guard and removed re-render * fix: refactor mobile bot chatbot details * refactor: make chatPannel bigger * chore:add new bot card design + sidebar hover color * chore: delete public and private sw + icons * chore: include public + delete extra actions * chore: add sidebar bg * add sidebar new styles + lib fn * feat: add select bot * chore: cleaning * fix: build - removing BotMessageSquareIcon * fix: types/node version + node min ver req --------- Co-authored-by: sheriffjimoh <sheriffjimoh88@gmail.com> Co-authored-by: Roberto Lucas <andre.rlucas@outlook.com> * [masterbots.ai] feat: continuous thread ui functionality (#340) * wip: continuos thread logic and functionality. * feat: updating parent thread functionality. * feat: continuous thread UI and finalize functionality. * fix: lowering resolveThreadId logic complexity. * Update apps/hasura/migrations/masterbots/1736934906237_set_fk_public_thread_parent_thread/down.sql Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Update apps/masterbots.ai/lib/hooks/use-mb-chat.ts Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix: ts build --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * [masterbots.ai] fix: refactored components - pre icl v3 (#348) * chore: add refactored components - pre icl v3 * chore: add navigation color + text-input color * fix: type * wip: header active state * fix: them toggle --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * feat: icl v1a (#344) * wip: vercel ai sdk upt * wip: icl web feature * chore: icl hasura migrations, metadata and seeds * chore: genql gen * impr: chat opt separator render * impr: accordion chevron pos * impr: chat-list space * Fix observations from Jun (#353) * update * fix: update * fix: added empty state * fix: rm favourt and added card empty state * fix: hide sibe category without threads on user profile * fix: update * fix: update * [masterbots.ai] fix: reduce prompt input validation * fix: hasura moderator augmentedFrom msg prop * impr: ai prompt examples flow * fix: hasura moderator role thread upt permissions * [masterbots.ai] feat: chatbot following + thread highlight + bot thread page to blog (#337) * update * feat: added chatbot follow function to other component * update profile thread * thread highligh * thread highligh update * update * fix: thread blog * fix: follow chat bot * update * fix: observations * fix provider types issue * fix provider update * feat: update blog template * fix: rm p tag from list items * fix: merge * fix: rm parentid and continiue reading * update * update * merge * fix: generated types * update * updatd * update code * impr: profile page layout * fix: mg-genql gen ts --------- Co-authored-by: Roberto Lucas <andre.rlucas@outlook.com> Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * [masterbots.ai] fix: init threads render + icl init cleanup (#354) * wip: fix init threads render + icl cleanup This fixes the following issues: 1. Reduced the amount of re-renders when sending the new data. 2. Clean up the ICL functions and types. 3. State management for the user-thread-panel. 4. Debug the re-rendering uissue that is replacing the main thread content. 5. Debug opening a new thread with the new ICL system. They show in the list but not returning the messages when opening it up. 6. Few code clean ups. * impr: thread list re-render in chat page * fix: initialMessages in useChat * fix: hasura moderator role thread upt permissions * impr: thread list re-render * fix: markdown pkg ts * fix: markdown pkg ts * fix: downgrade react-markdown (#358) * fix: downgrade react-markdown * fix: downgrade react-markdown * fix: markdown dep version + layout thread list ui * impr: gray-ish overlay bg rm * chore: console log rm --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * refactor: icl seeds v2 (#357) * chore: upt hasura icl seeds * chore: chat legacy table rm * chore(wip): icl seeds curation * chore: upt icl init seed pt2 * chore: upt icl init seed pt3 * chore: upt icl init seed pt3 * chore: upt icl init seed pt4 * fix: cat + chatbot seeds revision * chore: tag seeds note upt * fix: drop and create chatbot_domain table (#360) * fix: drop and create chatbot_domain table * fix: chatbot_domain permissions * fix: SQL typo * [masterbots.ai] feat: improve common components and features (#356) * fix: sidebar * feat: add DeepSeek integration * chore: wip accordions * fix: include popup accordion * chore: add shared accordion to thread list * fix: extra space * fix: extra space * chore: add tabs effect * chore: add colors based on routes * chore: add colors based on routes --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * fix: useRouter import * [masterbots.ai] fix: sidebar category render (#362) * fix: sidebar category render * docs: toggleChatbotSelection * [hasura] chore: label + label_chatbot_category_domain dropping tables migration (#361) * fix: fetch chatbotDomain * [hasura] chore: rm wip example seed part * chore: rm legacy tables + fix getChatbotMetadata props (#363) * chore: rm legacy tables * fix: getChatbotMetadata * fix: chatbotMetadata ts * wip(refactor): icl init tags & categories fetch * chore: bun.lockb upt * fix: hotfix build error * impr: icl metadata requests v1 (#365) * wip: icl fetch + meta prompt impr * impr: sidebar paddings * wip: icl fetch + meta prompt impr * wip: icl fetch + meta prompt impr * impr: icl metadata request v2 (#366) * wip: icl fetch + meta prompt impr * fix: icl fetch + meta prompt impr * impr: icl output + prompts * chore: console.log rm * chore: console.log icl metadata devMode * [masterbots.ai] test: sytem prompt as user role * fix: show sidebar in profile (#364) * chore: clickable responses update * [masterbots.ai] refactor: use chat hook context + state management perf (#369) * chore: system prompt as system role * refactor: use-mb-chat to context * fix: mbchat provider location * impr: profile page scroll & footer position (#367) * update * fix: update * update * update * fix: profile page scroll and footer positioning * fix: profile sidebar * update * update * Revert "update" This reverts commit ef7ee8c. * Revert "Revert "update"" This reverts commit 553f82f. * Revert "Revert "Revert "update""" This reverts commit c645eca. * fix: profile page footer positioning * fix: visitor should be able to scroll through the categories * fix: profile page side bar * fix: rm loading when user not logged in * fix: update * [masterbots.ai] fix: clickable text feature (#372) * fix: accordion arrow * fix: clickable text formating * wip: fix thread load (#373) * wip: fix thread-list load * fix: continuous system prompt context * fix: render flickr + followup question logic impr * impr: prompt tags segmentation * chore: impr following question prompt * feat: public continue thread (#375) * refactor: integrating chatPannelHeader into chatPannel * chore: update browse-chat-message with shared accordion * chore: continue conversation + full conversations fix * fix: left align text * [masterbots.ai] fix: show appropriate bot cards in the user thread list (#368) * update * fix: update * update * update * fix: filter category & chatbot by userId on profile page * fix: hide empty chatbots * fix: followee permission error as moderator to follow and unfollow (#374) * update * fix: update * update * update * fix: permission issue for moderator when following other user * fix: shift on user card when loading or empty * update * [masterbots.ai] fix: isNewChat guard + continuous thread messages + power up prompts (#377) * fix: thread render at pop-up close * impr: getRouteType + chat layout * wip: isNewChat state * impr: prompt tags segmentation * fix: chat messages list render + open last according by default on new responses * impr: thread list render guard * feat(wip): isPowerUp mode * impr: memoizing getChatbotMetadata * fix: grabbing previous messages, continous chat * chore: add todo comment * impr: previous thread ui + coderabbitai observations * fix: previous conversation re-render * doc: useEffect biome-ignore * impr: deep obj compare for msg pairs * fix: ts build * fix: ts build * [masterbots.ai] refactor: useScroll hook (#376) * chore: refactor useScroll * chore: refactor useScroll * chore: refactor useScroll * Delete apps/masterbots.ai/lib/context/thread-context.tsx * chore: test commit * fix: import type * chore: add clearTimeout * chore: add destructuring * feat: update use-mb-scroll * feat: update thread component --------- Co-authored-by: Brandon fernandez <brandonfdez@Brandons-MacBook-Air.local> * [masterbots.ai] fix: chat stream render (#380) * fix: chat stream render * fix: typo * chore: chatbot prompts init config + active thread hotfixes (#378) * wip: chatbot prompts init config * wip: upt init config seeds, adding prompt configs * chore: upt init config seeds * fix: resetActiveThread guard * impr(wip): masterbot config prompt * chore: icl data curation, domain + category + sub-category * chore: init domain seeds curation * fix: moderator + user role table selection * impr: web prompt config + fix thread list render + code comments * fix: coderabbitai observations * [hasura] chore: upt user insert rows seed * fix: conflict fix --------- Co-authored-by: Gabo Esquivel <contact@gaboesquivel.com> Co-authored-by: Jimoh sherifdeen <63134009+sheriffjimoh@users.noreply.github.com> Co-authored-by: Nathanael Liu <supernathanliu@gmail.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Brandon Fernández <31634868+Bran18@users.noreply.github.com> Co-authored-by: Anouk Rímola <77553677+AnoukRImola@users.noreply.github.com> Co-authored-by: Trivium <25100787+Nemunas@users.noreply.github.com> Co-authored-by: Leandro Gavidia Santamaria <93232139+leandrogavidia@users.noreply.github.com> Co-authored-by: Jun Dam <jun@bitcash.org> Co-authored-by: Luis Carrión <41096968+luighis@users.noreply.github.com> Co-authored-by: Marco Ledezma <marcoledezmacordero09@gmail.com> Co-authored-by: Bran18 <andreyfdez18@gmail.com> Co-authored-by: sheriffjimoh <sheriffjimoh88@gmail.com> Co-authored-by: Brandon fernandez <brandonfdez@Brandons-MacBook-Air.local>
* impr: web search response * refactor: extracting clickable generation logic * refactor: extracting clickable generation logic * fix: webSearch clickable text + reference links * chore: fix build * feat:(impr) stable version link to references format step 1 * feat:(impr) stable version link to references format step 2 --------- Co-authored-by: Bran18 <andreyfdez18@gmail.com>
* devops: force deploy * devops: trigger automated build * devops: trigger automated build * devops: trigger automated build * devops: trigger automated build * devops: trigger automated build * devops: trigger automated build * devops: trigger automated build * impr(masterbots.ai): add return to browse on bot thread page view (#204) * ✨ Added back button to thread details page * ⚡️ changed char to svg * feat: ai gen 404 image for custom 404 error page (#210) * ⚡️ added custom error page * ⚡️ clean up * fix(masterbots.ai): terms page visibility and access * feat(masterbots.ai): consistent og image style design and dynamic metadata (#215) * feat: added og api endpoint * feat: design og image for dark mode * fix: file formated * fix: amend og image to pick current theme color and adapt * feat: added custom metadata to thread page * feat: added custom metadata to bot page * fix: clean up * fix: move bg to a component * fix: move og-image design to a component * fix: use variable for URL * fix: to slug func * ⚡️ Move and clean up UrlToSlug * fix(masterbots.ai): zod dependecy * fix: type error * fix: type error for metadata * fix: clean and build fix --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * fix(masterbots.ai): OG not redering (#224) * fix: og to render first letter of username if there's no avatar * fix: clean up * fix: clean up * fix(masterbots.ai): share function (#225) * feat: create action.ts * fix: upt share button * fix: add axios module * fix: add resend module * fix: update vercel env config * fix: split share function * fix: update share component * [coderabbitai] style: upt thread-user-actions condition Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: Roberto Lucas <andre.rlucas@outlook.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * feat(hasura): update user db schema for pro users (#227) * feat: add get_free_month column to user table * feat: create referral table * feat: add is_blocked column to user table * feat: add pro_user_subscription_id column to user table * fix: upt metadata * fix: update relationship name * feat(hasura): add Ai Model Tracker To Threads (#229) * feat: create 'models' table AI models * fix: add 'model' column to 'thread' table with foreign key constraint * feat: add model_value into models * [masterbots.ai] feat: multi AI models integration (#228) * [masterbots.ai]feat:(multimodels-integration)add actions - helpers - routes * [masterbots.ai]feat:(multimodels-integration)add NextTopLoader * [masterbots.ai]feat:(multimodels-integration)add NextTopLoaders * [masterbots.ai]feat:(multimodels-integration)add new chat components * [masterbots.ai]chore:next version * [masterbots.ai]feat:(multimodels-integration)update use context * [masterbots.ai]feat:(multimodels-integration)icons update * [masterbots.ai]chore:command ui * [masterbots.ai]refactor:moving chat componets to folder * [masterbots.ai]feat:env checker * [masterbots.ai]feat:env guard * docs: site map diagram * [masterbots.ai] fix: multi AI models guard (#235) * fix-guards + dom warning * fix-rename env var - vercel name * chore(masterbots.ai): update payment terms & conditions (#233) * fix: update terms * fix: building error * fix: update terms content * fix: rm the older part at the bottom * feat(masterbots.ai): pro subscription payment + wizard (#226) * feat: added free card * feat: added animation to the plan card * feat: added more plan card and referral code link * fix: clean up * wip: wizard * feat: wizard & modal * feat: plan Design theme and modal Header and Footer * feat: plan clean up * update * clean up * fix: rm plan comp on browse page * fix: wizard clean up * feat: succes & error modal * feat: loading comp * feat: added checkout comp * feat: set up stripe and context * wip: implementing subscription * feat: implementing subscription * feat: payment reciept * fix: clean up receipt * fix: modal not showing & shallow routing * fix: small fix * fix: receipt comp * fix: clean up * fix: shallow rerouting * feat: check if user has an active subscription * fix: coderabbit ob * fix: coderabbit ob * fix: coderabbit clean up update * fix: coderabbit clean up update * fix: coderabbit clean up update * fix: clean up * fix: clean up * fix: page restructuring and status on the receipt * fix: revamp receipt and structure * fix: rm unused file * fix: clean up * fix: update & clean up * fix: update * fix: rm the svg * fix: revamp formatSystemPrompts * fix: revamp msg to formatSystemPrompts * fix: update * fix: refactor the receipt page * fix: rm public key * fix: update * fix: update * fix: update * fix: code refactor for error and loading rendering * ref: calling secret keys from server * ref: receipt page and small fix * fix: rm file * fix(impr): subs & flow ux + cleanup * fix(masterbots.ai): OG not redering (#224) * fix: og to render first letter of username if there's no avatar * fix: clean up * fix: clean up * fix(masterbots.ai): share function (#225) * feat: create action.ts * fix: upt share button * fix: add axios module * fix: add resend module * fix: update vercel env config * fix: split share function * fix: update share component * [coderabbitai] style: upt thread-user-actions condition Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: Roberto Lucas <andre.rlucas@outlook.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * feat(hasura): update user db schema for pro users (#227) * feat: add get_free_month column to user table * feat: create referral table * feat: add is_blocked column to user table * feat: add pro_user_subscription_id column to user table * fix: upt metadata * fix: update relationship name * feat(hasura): add Ai Model Tracker To Threads (#229) * feat: create 'models' table AI models * fix: add 'model' column to 'thread' table with foreign key constraint * feat: add model_value into models * [masterbots.ai] feat: multi AI models integration (#228) * [masterbots.ai]feat:(multimodels-integration)add actions - helpers - routes * [masterbots.ai]feat:(multimodels-integration)add NextTopLoader * [masterbots.ai]feat:(multimodels-integration)add NextTopLoaders * [masterbots.ai]feat:(multimodels-integration)add new chat components * [masterbots.ai]chore:next version * [masterbots.ai]feat:(multimodels-integration)update use context * [masterbots.ai]feat:(multimodels-integration)icons update * [masterbots.ai]chore:command ui * [masterbots.ai]refactor:moving chat componets to folder * [masterbots.ai]feat:env checker * [masterbots.ai]feat:env guard * docs: site map diagram * feat: set up stripe and context * wip: implementing subscription * fix: rm the svg * fix: replace secret with variable * fix: chat restructure * fix(update): chat restructure * fix(deployment error): can't find an icon or not exported * fix: deployment issues * fix: deployment issues * fix: deployment issues * fix: adjust design * fix: clean up * fix: clean up * fix: color var updaye * [coderabbitai] impr: update apps/masterbots.ai/components/stripe-element.tsx Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * [coderabitai] impr: update apps/masterbots.ai/components/succes-content.tsx Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix: success close button * fix: bg image for yearly card * fix: move func to util * ref: receipt page function to use reac-use * fix: move depencies to the app * fix: clean up * ref: wizard to use radix dialog components * update * fix: coderabitai update --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> Co-authored-by: Nathanael Liu <supernathanliu@gmail.com> Co-authored-by: Roberto Lucas <andre.rlucas@outlook.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Brandon Fernández <31634868+Bran18@users.noreply.github.com> * [masterbots.ai] fix: llama3 models (#236) * fix-guards + dom warning * fix-rename env var - vercel name * fix-changed PERPLEXITY-LLama model * [masterbots.ai] impr(fix): ui tweaks (#237) * fix(UI):varius UI fixes * fix(UI):varius UI fixes * fix(UI): Tailwind class corrections, conflict resolution, text alignent to the left * fix(UI):update * fix(masterbots.ai): payment feedbacks (#240) * fix: make the dialog content responsive * fix: free plan card adjusted * fix: update * fix: update receipt styles * fix: build error * fix: build error * fix: build error update * fix: update * fix: observation * fix(masterbots.ai): update env variable (#244) * feat: sitemap (#238) * feat: add redirection rules * fix: update all links with new shorten urls * fix: update all links with new shorten urls * feat: make folder structure according to sitemap * [coderabbitai] impr(masterbots.ai): update app/c/page.tsx error handling Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * [coderabbitai] impr(masterbots.ai): update app/c/[category]/[chatbot]/page.tsx error handling Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix: build error * [coderabbitai] impr(masterbots.ai): update app/c/[category]/[chatbot]/page.tsx error handling Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * feat: add sitemap and metagraph * fix: use original generateMetadata * fix: update page links * fix: show only filtered threads on page reload * fix: build error --------- Co-authored-by: Roberto Lucas <andler@bitcash.org> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix(masterbots.ai): show first question & answer in thread list (#246) * feat: add 'disabled' state to ChatAccordion * fix: show default question's answer in thread list * fix: use braces and create explicit statement blocks * fix: subscription mobile responsive tweaks (#245) * update * fix: update * fix: responsiveness * fix: update * fix: few clean up * fix: rm unused image * fix: rm unused image * fix(impr): models enum table migrations (#247) * impr(hasura): db tables * impr(hasura): db tables * fix(hasura): user permissions * impr(hasura): sql models enum migration * fix(hasura): models_enum pk * fix(hasura): ci/cd default regional log bucket * docs: bun to requirements (#250) Co-authored-by: b <b> * feat: next auth, email/pw strategy (#249) * (masterbots.ia)-chore-auth-dependencies * (masterbots.ia)-feat-webauth-nextauth * wip(masterbots.ai): email/pw login + signup * feat-login ui * feat-login-component+page * feat-login-component+page * feat-auth-middleware.ts * feat-auth-nextauth + googleauth * feat-auth-coderabit-feedback * feat-auth-callback + elements added * wip(webapp): email/pw login+signup * feat:add toke storage for webauth * feat:updates webauth * feat:updates webauth * fix(masterbots.ai): blankBot fetch --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> Co-authored-by: Roberto Romero Lucas <andre.rlucas@outlook.com> * docs: mb sytem diagram v1.0a * feat(impr): next auth environment helper function (#251) * (masterbots.ia)-chore-auth-dependencies * (masterbots.ia)-feat-webauth-nextauth * wip(masterbots.ai): email/pw login + signup * feat-login ui * feat-login-component+page * feat-login-component+page * feat-auth-middleware.ts * feat-auth-nextauth + googleauth * feat-auth-coderabit-feedback * feat-auth-callback + elements added * wip(webapp): email/pw login+signup * feat:add toke storage for webauth * feat:updates webauth * feat:updates webauth * fix(masterbots.ai): blankBot fetch * feat:protecting env --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> Co-authored-by: Roberto Romero Lucas <andre.rlucas@outlook.com> * impr(masterbots.ai): sign up form + sign in session data * docs: claude3 project knowledge docs * fix(masterbots.ai): devMode conditional * chore(masterbots.ai): rm console.log * chore: upt default hardcoded gpt model * fix: toSlug imports * fix: typo * fix(hasura): seeds * chore(impr): MB seeds update and upgrade (#253) * wip: upt seeds * chore: rm alter and table creations * chore(impr): MB seeds update and upgrade * fix: set thread to private by default * fix: prompt row typo * chore(hasura): seeds update default thread publicity * fix(masterbots.ai): adjust arrow direction in thread list (#255) * feat(impr): Vercel AI SDK Update (#256) * chore:ai version upt * chore:ai version upt * upt-ai delete * upt-ai versions * upt-sdk-actions * upt-complete-sdk-3.3 + dev notes * upt-@anthropic-ai/sdk + MessageParam * Delete apps/masterbots.ai/apps/masterbots.ai/package.json * Delete apps/masterbots.ai/apps/masterbots.ai/package-lock.json * impr-convertToCoreMessages ternary * Leandro/develop (#257) * chore: create thread-component to avoid to become thread list into a client component * refactor: remove unnecesary hooks from thread component * refactor: remove unnecesary hooks on thread componen * impr(masterbots): components folder structur (#259) * impr:refactor components folders + names + imports * hotfix:chat-list useEffect dependency removal * fix(masterbots): google signIn (#260) * fix(masterbots.ai): fix thread-component loop (#261) * fix:(masterbots.ai) add useScroll hook (#263) * fix:introducing Two-phase scroll * impr: new hook to handle scrolling * impr: useScroll + respo * feat(masterbots.ai): chat sidebar filtering (#264) * sidebar refactor with ai * fix: sidebar AI V - Prev Jun (#262) * fix:semistable * fix:stable v * impr:delete nonused component * fix: upt category filtering * fix typo --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * feat: sidebar state * fix(masterbots.ai): logic typo * fix(masterbots.ai): ts typo --------- Co-authored-by: Jun Dam <jun@bitcash.org> Co-authored-by: Brandon Fernández <31634868+Bran18@users.noreply.github.com> * fix(masterbots.ai): bot button redirect change (#265) * wip(masterbots.ai): seo data impr (#267) * wip: seo data impr * impr(chore): ga tags * feat: add chat publicity trigger (#258) * update * feat: design thread visibilty * fix: added the backend * fix: added the backend * fix: rm files * fix: few clean up * fix(masterbots): google signIn (#260) * feat: design thread visibilty * fix: added the backend * fix: few clean up * Leandro/develop (#257) * chore: create thread-component to avoid to become thread list into a client component * refactor: remove unnecesary hooks from thread component * refactor: remove unnecesary hooks on thread componen * impr(masterbots): components folder structur (#259) * impr:refactor components folders + names + imports * hotfix:chat-list useEffect dependency removal * feat: design thread visibilty * fix: added the backend * fix: few clean up * fix: update * fix: add permission * fix: update query * fix(masterbots.ai): fix thread-component loop (#261) * feat: design thread visibilty * fix: added the backend * fix: few clean up * feat: design thread visibilty * fix: added the backend * fix: few clean up * Leandro/develop (#257) * chore: create thread-component to avoid to become thread list into a client component * refactor: remove unnecesary hooks from thread component * refactor: remove unnecesary hooks on thread componen * impr(masterbots): components folder structur (#259) * impr:refactor components folders + names + imports * hotfix:chat-list useEffect dependency removal * feat: design thread visibilty * fix: added the backend * fix: few clean up * update * fix: update * fix: publicity toggle * fix: error catch in the functions * fix: observations * fix: design impr * fix: thread pop-up height * chore(masterbots.ai): log rm & app version upt --------- Co-authored-by: Roberto Lucas <andler@bitcash.org> Co-authored-by: Leandro Gavidia Santamaria <93232139+leandrogavidia@users.noreply.github.com> Co-authored-by: Brandon Fernández <31634868+Bran18@users.noreply.github.com> Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * feat(masterbots.ai): user messages ai refactor (#266) * feat:userMessages refactor + hooks and utils * upt:rm console.log * fix:rollback useAiChat hook * fix:rollback - actions * fix(masterbots.ai): sidebar trigger * chore(hasura: s --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * wip: browse sidebar * impr(masterbots.ai): browse sidebar (#270) * fix: browse layout * feat(masterbots.ai): browse sidebar * fix: browse sidebar link condition * chore: upt signup default profile pic * chore: seeds upt (#269) * wip: seeds upt * chore(hasura): seeds review * feat(hasura): add "is_approved" thread field + seeds * chore: mb-genql upt * fix(hasura): thread param permission * fix(masterbots.ai): typo * fix(masterbots.ai): allow svg content-type * fix: chat + browse layout * style: clean up * Seo data (#273) * fix: build error * feat: Add SEO data to the chat page * feat: add default image, if not found * feat: Add SEO data to the browse page * fix: generates the image with error, in api/og * Update route.tsx fix: generates the image with error, in api/og * impr(masterbots.ai): title impr prompt * impr(masterbots.ai): improve current features v2 (#274) * add-impr-chat-prompt-footer-header-disclaimer * add-impr-chat-prompt-footer-header-disclaimer * add-UI-upt * add-UI-upt * add-action-prompt * add-clickable-upt * add-clickable-upt * Masterbots/fix redirects (#275) * fix:avatar-redirects * fix:avatar-redirect * fix(masterbots.ai): upt components/ui/button.tsx Coderabbitai suggestion. Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix:URL correction --------- Co-authored-by: Roberto Lucas <andler@bitcash.org> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * [masterbots.ai] feat: wordware api (#276) * feat: add wordware api + vercel sdk strategy * feat: add wordware api + vercel sdk * wordware describe feat * wordware run + interface * impr(masterbots.ai): upt /api/wordware/describe/route.ts coderabbitai code suggestion. Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * impr(masterbots.ai): upt /api/wordware/describe/route.ts coderabbitai code suggestion. Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix(masterbots.ai): typo /api/wordware/describe/route.ts coderabbitai code suggestion. Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: Roberto Lucas <andler@bitcash.org> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * doc: mb system diagram upt * wip: icl calls integrations * impr(masterbots.ai): permission for thread & user action mode (#281) * update * feat: added permissions & new column * fix: rm unnessecary files * fix: rm permission check * feat(masterbots.ai): create password recovery (#282) * feat:add-recovery-strategy * chore:add nodeemailer * upt:hasura * upt:hasura * upt:gmail service * feat(hasura): otp, token table + junction w/user + mb-genql gen * feat:add recovery password API * fix:ai suggestion + UX * feat:improve ux show password feat * chore:env sample * chore:useSetState * chore:roles --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * [masterbots.ai] impr: WW API sanitize and keep alive (#284) * keep-alive + API sanitize + timeOut guard * impr streamAndValidateResponse fn * wip(masterbots.ai): impr createImprovementPrompt * style(masterbots.ai): chat loading states comments * feat(masterbots.ai): add admin mode to approve thread (#283) * feat:added mode toggle and approve btn * feat: added migration for user role * feat: user role flow implet * fix: impr admin approve process * fix: clean up * fix: toggle CTA changed * fix: update * fix: update * fix: observ * fix: obs clean up * fix: update * fix: clean up * impr(masterbots.ai): alpha metadata chatbot labels (#288) * wip: metadata chatbot labels * wip(masterbots.ai): chatbot metadata labels * impr(masterbots.ai): gen chatMetadata * impr: simplifying prompt defitions + biome.json base config * impr(masterbots.ai): recursive improved text prompt * style: code comments + eslint chk * impr: biome.json config * fix(masterbots.ai): conflicts typo fix * style(impr): cleanPrompt + followingQuestionsPrompt relocation & cleanup * doc: map system (simplified) * fix(masterbots.ai): sideBar updating URL (#286) * fix:sideBar updating URL * feat: coderabbit-ai suggestions * fix: Implement auto-expanding sidebar categories and chatbot highlighting based on URL * feat: optimize sidebar navigation with Link * feat: thread options (#287) * feat: added verified and label to the options * usethreadvisibility as context * feat: added option design and functions * fix: clean up * fix: update * fix: update * fix: obsv * fix: merge and update * fix: update the delete popup * fix: observ * fix: update * fix: delete thread flow * update * fix: update * fix: types * fix: chatbot not required * fix: testing * fix: rm bun.lock * fix: clean up * fix: update * fix(masterbots.ai): temp freezing next version --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * [masterbots.ai] feat: email verification (#289) * feat: email verification * feat: email verification * feat: email verification * upt:build * feat: handle error redirection * chore:cron task * upt: cron blocking instead erasing * feat(hasura): create social following table. (#292) * feat(db): create social following table. * create user following and followers relationships. * fix(db): ensure users can only manage their own follow relationships. * feat(db): social following and user table permissions improvements. * feat(db): improving social following table with timestamp and idx. * impr(db): permissions and tracked object relationships. * impr(db): avoid self follow. * chore(masterbots.ai): guard WordWare for prod routing * [masterbots.ai] fix: public/private tag bg on dark mode (#294) * fix: tag bg * fix: text color * fix: browse page error * fix: debugging * fix: debugging * fix: debugging * fix: added func to generate short link * fix(hasura): upt user permissions (#296) * update user permission * fix: reverse the following table * fix(hasura): build error (#297) * fix: error build * fix: reverse select perm * [masterbots.ai] feat: thread list display + components comments for ai (#299) * merged from develop * feat:add new ui-thread-representation-browse * feat:add comments for ai - C * feat:add comments for ai - b/p * feat:add comments for ai - b/p * feat:add comments for ai - b/p * feat:add app theme colors effects * feat:add comments for ai - b/p * [masterbots.ai] feat: chatbot search tool v0.1a (#295) * wip: chatbot search tool * wip(impr): ww api + chat ui tweaks * fix: init sidebar load state * fix: nesting layout * fix: thread-popup ui header * wip(impr): chatbot tooling * impr: loading state + debug chatbot tools * wip(fix): nodejs context * fix(temp): rm edge runtime api config * [masterbots.ai] feat: reorganize navigation menu for mobile view (#298) * feat: reorganize navigation menu for mobile view * UI: add sideBar style * feat: add link profile and logout icon * Update profile-sidebar.tsx Tailwind class fix * [masterbots.ai] feat: UI + Logic Improvements (#301) * feat:impr responsive * feat:impr password strenght checker * feat:impr responsive * upt-build * feat:respomsive tweask * feat:back arrow aria label * fix:chat mobile layout * fix:code section * fix:chat pannel * fix:chatBot redirection * feat:restore appConfig header * [masterbots.ai] fix: restore desktop navigation link - browse section (#303) * fix:restore desktop navigation link - browse * fix:formating * feat:yellow combobox btn (JUN-REQUEST) * glowing effect variant * upt:removed /b navigation as original v * feat:powerup mode + provider * [masterbots.ai] fix(impr): browse and chat content search (#304) * feat:browse title and content search * feat:browse title and content search * fix:typo * impr:reusable non result component * feat:skeletons * feat:guard * fix:skeletons * fix:chat searching * fix: add accent colour --------- Co-authored-by: Roberto Lucas <andler@bitcash.org> * [masterbots.ai] impr: seo sitemap (#306) * chore: sitemap creation * chore: add description based on category * chore: update queries in services * chore: truncate text * impr: upt (browse)/[category]/[threadId]/sitemap.ts coderabbitai code suggestion. Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: Roberto Lucas <andler@bitcash.org> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * [masterbots.ai] impr: ai tools (#302) * wip: ai tools * fix: WW json regexp * impr: simplifying main ai call * wip(fix): chat component re-render + cleanup * impr(refactor): chat hooks * fix: ts build * fix: ts build * fix: ts typo * fix: typo * impr: ai feedbacks * [masterbots.ai] wip(impr): web search (#309) * impr: web search tool call * fix: colour values * fix: typo * impr: code suggestions * fix: class name typo * wip(fix): web search false positive response + webSearch context * fix: web search callback * fix: typo * feat: profile page (#300) * feat: user card * fix: update * merge develop && update * feat: user generate bio & favourite topic * fix: update user card * feat: added profile sidebar * fix: update * update * update * update * fix: fetch approved and public threads * fix: fetch approved and public threads * update * fix: clean up and update * update * make fetch user work with bio * update * update * design updating * update * update * fix: few changes * update * fix: design update * fix: footer in layout * fix: update * fix: resercation * update * profile upload * feat: move the cloudinary key to env * fix: layout * fix: layout update * [masterbots.ai] fix: shallow routing for category & chatbots for chat & profile page (#313) * update * feat: added shallow link to the sidebar link * update' * fix: routing and content fetching * fix:update on routing * fix:update * update * update * update * fix: clean up * update * update * [masterbots.ai] feat: update ChatChatbotDetails (#314) * feat: new bot profile - chat * chore: dev comments * chore: white bg bot avatar * feat: add skeleton bot profile * [masterbots.ai] feat: include custom settings options (#317) * feat:relocation of theme switch(jun) * feat: create font-size accessibility provider(jun) * feat: r-sidebar theme switcher relocation + skeleton * feat: impr add rem instead px * [masterbots.ai] feat: integrate drizzle ORM (#320) * feat: create mb-drizzle package initial structure * feat:(masterbots.ai) add drizzle endpoint + service * chore: include database url * chore: upt mb-drizzle * feat: refactor drizzle config + generations * chore: impr migrate * chore: add working drizzle connection + migrations * feat: add centralized actions * chore: add ai review recomendations * chore: webSearch feature flag + use cloudinary upload preset * fix: responsive sidebar fix * fix: ts chk build * fix: sidebar async call * fix: ts build * chore: typo * [masterbots.ai] fix: browse category navigation (#316) * update * fix: rm category * update * fix: pop up on the user threads * update * update clean up * update * fix: clean up * fix: clean up and update * fix: update * fix: popup on navigation * fix: update * update * update * update * clean up * update * merge * fix: hasura thread delete + user dup permissions (#330) * [masterbots.ai] feat: onboarding bot profile variants (#324) * add chatbot-details and browse-details variants * feat: add bio generation * feat: chat profile bg * chore: update bot profile designs * chore: remove internal padding from cardHeader component * impr: iconography + border thickness * fix: numberShortener util fn --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * feat: user following (#319) * update * added follow user * update * fix: upt hasura metadata databases, public_social_following.yaml coderabbitai code suggestion. Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix: upt masterbots.ai lib, utils.ts coderabbitai suggestion. Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix: user card * update * fix: permission * update * fix: added more column for chatbot followee * fix:foloow chatbot implementation * update * threads by following user/bots * update * update * update * update * update * update * update * update --------- Co-authored-by: Roberto Lucas <andler@bitcash.org> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * [masterbots.ai] impr: new sonner (#334) * chore: add new icons * feat: Sonner custom hooks and setup * feat: use useSonner hook throughout the app * fix: overflow of the width of the sonner * chore: add new icons * feat: Sonner custom hooks and setup * feat: use useSonner hook throughout the app * chore: use hook sonner * refactor: changes according to coderabbitai * refactor: update use of sonner * chore:remove icons and use lucide icons * chore: Using Lucide Icons * chore: bun pkg mngr upt * Standardize url building using urlbuilders utility (#341) * fix: update url * fix: url update * update * [masterbots.ai] impr: og Image api dynamic to be useful without thread ID (#335) * update * fix: make OG image use default * fix: update * fix: update * fix: obs * fix: update * fix: added og to browse and chat * update * update * update * fix: provider types error * fix: updfate UUID * fix: update UUID * [masterbots.ai] docs: hook useSonner (#343) * chore: document hook useSonner * refactor: document hook useSonner, according coderabbit * impr: web search response (#310) * impr: web search response * refactor: extracting clickable generation logic * refactor: extracting clickable generation logic * fix: webSearch clickable text + reference links * chore: fix build * feat:(impr) stable version link to references format step 1 * feat:(impr) stable version link to references format step 2 --------- Co-authored-by: Bran18 <andreyfdez18@gmail.com> * [masterbots.ai] refactor: prelaunch ux/ui changes (#336) * refactor: replicate tooltip effect in desktop bot chatbot details * fix: add guard and removed re-render * fix: refactor mobile bot chatbot details * refactor: make chatPannel bigger * chore:add new bot card design + sidebar hover color * chore: delete public and private sw + icons * chore: include public + delete extra actions * chore: add sidebar bg * add sidebar new styles + lib fn * feat: add select bot * chore: cleaning * fix: build - removing BotMessageSquareIcon * fix: types/node version + node min ver req --------- Co-authored-by: sheriffjimoh <sheriffjimoh88@gmail.com> Co-authored-by: Roberto Lucas <andre.rlucas@outlook.com> --------- Co-authored-by: Gabo Esquivel <contact@gaboesquivel.com> Co-authored-by: Jimoh sherifdeen <63134009+sheriffjimoh@users.noreply.github.com> Co-authored-by: Nathanael Liu <supernathanliu@gmail.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Brandon Fernández <31634868+Bran18@users.noreply.github.com> Co-authored-by: Anouk Rímola <77553677+AnoukRImola@users.noreply.github.com> Co-authored-by: Trivium <25100787+Nemunas@users.noreply.github.com> Co-authored-by: Leandro Gavidia Santamaria <93232139+leandrogavidia@users.noreply.github.com> Co-authored-by: Jun Dam <jun@bitcash.org> Co-authored-by: Luis Carrión <41096968+luighis@users.noreply.github.com> Co-authored-by: Marco Ledezma <marcoledezmacordero09@gmail.com> Co-authored-by: Bran18 <andreyfdez18@gmail.com> Co-authored-by: sheriffjimoh <sheriffjimoh88@gmail.com>
* devops: force deploy * devops: trigger automated build * devops: trigger automated build * devops: trigger automated build * devops: trigger automated build * devops: trigger automated build * devops: trigger automated build * devops: trigger automated build * impr(masterbots.ai): add return to browse on bot thread page view (#204) * ✨ Added back button to thread details page * ⚡️ changed char to svg * feat: ai gen 404 image for custom 404 error page (#210) * ⚡️ added custom error page * ⚡️ clean up * fix(masterbots.ai): terms page visibility and access * feat(masterbots.ai): consistent og image style design and dynamic metadata (#215) * feat: added og api endpoint * feat: design og image for dark mode * fix: file formated * fix: amend og image to pick current theme color and adapt * feat: added custom metadata to thread page * feat: added custom metadata to bot page * fix: clean up * fix: move bg to a component * fix: move og-image design to a component * fix: use variable for URL * fix: to slug func * ⚡️ Move and clean up UrlToSlug * fix(masterbots.ai): zod dependecy * fix: type error * fix: type error for metadata * fix: clean and build fix --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * fix(masterbots.ai): OG not redering (#224) * fix: og to render first letter of username if there's no avatar * fix: clean up * fix: clean up * fix(masterbots.ai): share function (#225) * feat: create action.ts * fix: upt share button * fix: add axios module * fix: add resend module * fix: update vercel env config * fix: split share function * fix: update share component * [coderabbitai] style: upt thread-user-actions condition Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: Roberto Lucas <andre.rlucas@outlook.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * feat(hasura): update user db schema for pro users (#227) * feat: add get_free_month column to user table * feat: create referral table * feat: add is_blocked column to user table * feat: add pro_user_subscription_id column to user table * fix: upt metadata * fix: update relationship name * feat(hasura): add Ai Model Tracker To Threads (#229) * feat: create 'models' table AI models * fix: add 'model' column to 'thread' table with foreign key constraint * feat: add model_value into models * [masterbots.ai] feat: multi AI models integration (#228) * [masterbots.ai]feat:(multimodels-integration)add actions - helpers - routes * [masterbots.ai]feat:(multimodels-integration)add NextTopLoader * [masterbots.ai]feat:(multimodels-integration)add NextTopLoaders * [masterbots.ai]feat:(multimodels-integration)add new chat components * [masterbots.ai]chore:next version * [masterbots.ai]feat:(multimodels-integration)update use context * [masterbots.ai]feat:(multimodels-integration)icons update * [masterbots.ai]chore:command ui * [masterbots.ai]refactor:moving chat componets to folder * [masterbots.ai]feat:env checker * [masterbots.ai]feat:env guard * docs: site map diagram * [masterbots.ai] fix: multi AI models guard (#235) * fix-guards + dom warning * fix-rename env var - vercel name * chore(masterbots.ai): update payment terms & conditions (#233) * fix: update terms * fix: building error * fix: update terms content * fix: rm the older part at the bottom * feat(masterbots.ai): pro subscription payment + wizard (#226) * feat: added free card * feat: added animation to the plan card * feat: added more plan card and referral code link * fix: clean up * wip: wizard * feat: wizard & modal * feat: plan Design theme and modal Header and Footer * feat: plan clean up * update * clean up * fix: rm plan comp on browse page * fix: wizard clean up * feat: succes & error modal * feat: loading comp * feat: added checkout comp * feat: set up stripe and context * wip: implementing subscription * feat: implementing subscription * feat: payment reciept * fix: clean up receipt * fix: modal not showing & shallow routing * fix: small fix * fix: receipt comp * fix: clean up * fix: shallow rerouting * feat: check if user has an active subscription * fix: coderabbit ob * fix: coderabbit ob * fix: coderabbit clean up update * fix: coderabbit clean up update * fix: coderabbit clean up update * fix: clean up * fix: clean up * fix: page restructuring and status on the receipt * fix: revamp receipt and structure * fix: rm unused file * fix: clean up * fix: update & clean up * fix: update * fix: rm the svg * fix: revamp formatSystemPrompts * fix: revamp msg to formatSystemPrompts * fix: update * fix: refactor the receipt page * fix: rm public key * fix: update * fix: update * fix: update * fix: code refactor for error and loading rendering * ref: calling secret keys from server * ref: receipt page and small fix * fix: rm file * fix(impr): subs & flow ux + cleanup * fix(masterbots.ai): OG not redering (#224) * fix: og to render first letter of username if there's no avatar * fix: clean up * fix: clean up * fix(masterbots.ai): share function (#225) * feat: create action.ts * fix: upt share button * fix: add axios module * fix: add resend module * fix: update vercel env config * fix: split share function * fix: update share component * [coderabbitai] style: upt thread-user-actions condition Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: Roberto Lucas <andre.rlucas@outlook.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * feat(hasura): update user db schema for pro users (#227) * feat: add get_free_month column to user table * feat: create referral table * feat: add is_blocked column to user table * feat: add pro_user_subscription_id column to user table * fix: upt metadata * fix: update relationship name * feat(hasura): add Ai Model Tracker To Threads (#229) * feat: create 'models' table AI models * fix: add 'model' column to 'thread' table with foreign key constraint * feat: add model_value into models * [masterbots.ai] feat: multi AI models integration (#228) * [masterbots.ai]feat:(multimodels-integration)add actions - helpers - routes * [masterbots.ai]feat:(multimodels-integration)add NextTopLoader * [masterbots.ai]feat:(multimodels-integration)add NextTopLoaders * [masterbots.ai]feat:(multimodels-integration)add new chat components * [masterbots.ai]chore:next version * [masterbots.ai]feat:(multimodels-integration)update use context * [masterbots.ai]feat:(multimodels-integration)icons update * [masterbots.ai]chore:command ui * [masterbots.ai]refactor:moving chat componets to folder * [masterbots.ai]feat:env checker * [masterbots.ai]feat:env guard * docs: site map diagram * feat: set up stripe and context * wip: implementing subscription * fix: rm the svg * fix: replace secret with variable * fix: chat restructure * fix(update): chat restructure * fix(deployment error): can't find an icon or not exported * fix: deployment issues * fix: deployment issues * fix: deployment issues * fix: adjust design * fix: clean up * fix: clean up * fix: color var updaye * [coderabbitai] impr: update apps/masterbots.ai/components/stripe-element.tsx Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * [coderabitai] impr: update apps/masterbots.ai/components/succes-content.tsx Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix: success close button * fix: bg image for yearly card * fix: move func to util * ref: receipt page function to use reac-use * fix: move depencies to the app * fix: clean up * ref: wizard to use radix dialog components * update * fix: coderabitai update --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> Co-authored-by: Nathanael Liu <supernathanliu@gmail.com> Co-authored-by: Roberto Lucas <andre.rlucas@outlook.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Brandon Fernández <31634868+Bran18@users.noreply.github.com> * [masterbots.ai] fix: llama3 models (#236) * fix-guards + dom warning * fix-rename env var - vercel name * fix-changed PERPLEXITY-LLama model * [masterbots.ai] impr(fix): ui tweaks (#237) * fix(UI):varius UI fixes * fix(UI):varius UI fixes * fix(UI): Tailwind class corrections, conflict resolution, text alignent to the left * fix(UI):update * fix(masterbots.ai): payment feedbacks (#240) * fix: make the dialog content responsive * fix: free plan card adjusted * fix: update * fix: update receipt styles * fix: build error * fix: build error * fix: build error update * fix: update * fix: observation * fix(masterbots.ai): update env variable (#244) * feat: sitemap (#238) * feat: add redirection rules * fix: update all links with new shorten urls * fix: update all links with new shorten urls * feat: make folder structure according to sitemap * [coderabbitai] impr(masterbots.ai): update app/c/page.tsx error handling Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * [coderabbitai] impr(masterbots.ai): update app/c/[category]/[chatbot]/page.tsx error handling Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix: build error * [coderabbitai] impr(masterbots.ai): update app/c/[category]/[chatbot]/page.tsx error handling Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * feat: add sitemap and metagraph * fix: use original generateMetadata * fix: update page links * fix: show only filtered threads on page reload * fix: build error --------- Co-authored-by: Roberto Lucas <andler@bitcash.org> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix(masterbots.ai): show first question & answer in thread list (#246) * feat: add 'disabled' state to ChatAccordion * fix: show default question's answer in thread list * fix: use braces and create explicit statement blocks * fix: subscription mobile responsive tweaks (#245) * update * fix: update * fix: responsiveness * fix: update * fix: few clean up * fix: rm unused image * fix: rm unused image * fix(impr): models enum table migrations (#247) * impr(hasura): db tables * impr(hasura): db tables * fix(hasura): user permissions * impr(hasura): sql models enum migration * fix(hasura): models_enum pk * fix(hasura): ci/cd default regional log bucket * docs: bun to requirements (#250) Co-authored-by: b <b> * feat: next auth, email/pw strategy (#249) * (masterbots.ia)-chore-auth-dependencies * (masterbots.ia)-feat-webauth-nextauth * wip(masterbots.ai): email/pw login + signup * feat-login ui * feat-login-component+page * feat-login-component+page * feat-auth-middleware.ts * feat-auth-nextauth + googleauth * feat-auth-coderabit-feedback * feat-auth-callback + elements added * wip(webapp): email/pw login+signup * feat:add toke storage for webauth * feat:updates webauth * feat:updates webauth * fix(masterbots.ai): blankBot fetch --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> Co-authored-by: Roberto Romero Lucas <andre.rlucas@outlook.com> * docs: mb sytem diagram v1.0a * feat(impr): next auth environment helper function (#251) * (masterbots.ia)-chore-auth-dependencies * (masterbots.ia)-feat-webauth-nextauth * wip(masterbots.ai): email/pw login + signup * feat-login ui * feat-login-component+page * feat-login-component+page * feat-auth-middleware.ts * feat-auth-nextauth + googleauth * feat-auth-coderabit-feedback * feat-auth-callback + elements added * wip(webapp): email/pw login+signup * feat:add toke storage for webauth * feat:updates webauth * feat:updates webauth * fix(masterbots.ai): blankBot fetch * feat:protecting env --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> Co-authored-by: Roberto Romero Lucas <andre.rlucas@outlook.com> * impr(masterbots.ai): sign up form + sign in session data * docs: claude3 project knowledge docs * fix(masterbots.ai): devMode conditional * chore(masterbots.ai): rm console.log * chore: upt default hardcoded gpt model * fix: toSlug imports * fix: typo * fix(hasura): seeds * chore(impr): MB seeds update and upgrade (#253) * wip: upt seeds * chore: rm alter and table creations * chore(impr): MB seeds update and upgrade * fix: set thread to private by default * fix: prompt row typo * chore(hasura): seeds update default thread publicity * fix(masterbots.ai): adjust arrow direction in thread list (#255) * feat(impr): Vercel AI SDK Update (#256) * chore:ai version upt * chore:ai version upt * upt-ai delete * upt-ai versions * upt-sdk-actions * upt-complete-sdk-3.3 + dev notes * upt-@anthropic-ai/sdk + MessageParam * Delete apps/masterbots.ai/apps/masterbots.ai/package.json * Delete apps/masterbots.ai/apps/masterbots.ai/package-lock.json * impr-convertToCoreMessages ternary * Leandro/develop (#257) * chore: create thread-component to avoid to become thread list into a client component * refactor: remove unnecesary hooks from thread component * refactor: remove unnecesary hooks on thread componen * impr(masterbots): components folder structur (#259) * impr:refactor components folders + names + imports * hotfix:chat-list useEffect dependency removal * fix(masterbots): google signIn (#260) * fix(masterbots.ai): fix thread-component loop (#261) * fix:(masterbots.ai) add useScroll hook (#263) * fix:introducing Two-phase scroll * impr: new hook to handle scrolling * impr: useScroll + respo * feat(masterbots.ai): chat sidebar filtering (#264) * sidebar refactor with ai * fix: sidebar AI V - Prev Jun (#262) * fix:semistable * fix:stable v * impr:delete nonused component * fix: upt category filtering * fix typo --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * feat: sidebar state * fix(masterbots.ai): logic typo * fix(masterbots.ai): ts typo --------- Co-authored-by: Jun Dam <jun@bitcash.org> Co-authored-by: Brandon Fernández <31634868+Bran18@users.noreply.github.com> * fix(masterbots.ai): bot button redirect change (#265) * wip(masterbots.ai): seo data impr (#267) * wip: seo data impr * impr(chore): ga tags * feat: add chat publicity trigger (#258) * update * feat: design thread visibilty * fix: added the backend * fix: added the backend * fix: rm files * fix: few clean up * fix(masterbots): google signIn (#260) * feat: design thread visibilty * fix: added the backend * fix: few clean up * Leandro/develop (#257) * chore: create thread-component to avoid to become thread list into a client component * refactor: remove unnecesary hooks from thread component * refactor: remove unnecesary hooks on thread componen * impr(masterbots): components folder structur (#259) * impr:refactor components folders + names + imports * hotfix:chat-list useEffect dependency removal * feat: design thread visibilty * fix: added the backend * fix: few clean up * fix: update * fix: add permission * fix: update query * fix(masterbots.ai): fix thread-component loop (#261) * feat: design thread visibilty * fix: added the backend * fix: few clean up * feat: design thread visibilty * fix: added the backend * fix: few clean up * Leandro/develop (#257) * chore: create thread-component to avoid to become thread list into a client component * refactor: remove unnecesary hooks from thread component * refactor: remove unnecesary hooks on thread componen * impr(masterbots): components folder structur (#259) * impr:refactor components folders + names + imports * hotfix:chat-list useEffect dependency removal * feat: design thread visibilty * fix: added the backend * fix: few clean up * update * fix: update * fix: publicity toggle * fix: error catch in the functions * fix: observations * fix: design impr * fix: thread pop-up height * chore(masterbots.ai): log rm & app version upt --------- Co-authored-by: Roberto Lucas <andler@bitcash.org> Co-authored-by: Leandro Gavidia Santamaria <93232139+leandrogavidia@users.noreply.github.com> Co-authored-by: Brandon Fernández <31634868+Bran18@users.noreply.github.com> Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * feat(masterbots.ai): user messages ai refactor (#266) * feat:userMessages refactor + hooks and utils * upt:rm console.log * fix:rollback useAiChat hook * fix:rollback - actions * fix(masterbots.ai): sidebar trigger * chore(hasura: s --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * wip: browse sidebar * impr(masterbots.ai): browse sidebar (#270) * fix: browse layout * feat(masterbots.ai): browse sidebar * fix: browse sidebar link condition * chore: upt signup default profile pic * chore: seeds upt (#269) * wip: seeds upt * chore(hasura): seeds review * feat(hasura): add "is_approved" thread field + seeds * chore: mb-genql upt * fix(hasura): thread param permission * fix(masterbots.ai): typo * fix(masterbots.ai): allow svg content-type * fix: chat + browse layout * style: clean up * Seo data (#273) * fix: build error * feat: Add SEO data to the chat page * feat: add default image, if not found * feat: Add SEO data to the browse page * fix: generates the image with error, in api/og * Update route.tsx fix: generates the image with error, in api/og * impr(masterbots.ai): title impr prompt * impr(masterbots.ai): improve current features v2 (#274) * add-impr-chat-prompt-footer-header-disclaimer * add-impr-chat-prompt-footer-header-disclaimer * add-UI-upt * add-UI-upt * add-action-prompt * add-clickable-upt * add-clickable-upt * Masterbots/fix redirects (#275) * fix:avatar-redirects * fix:avatar-redirect * fix(masterbots.ai): upt components/ui/button.tsx Coderabbitai suggestion. Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix:URL correction --------- Co-authored-by: Roberto Lucas <andler@bitcash.org> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * [masterbots.ai] feat: wordware api (#276) * feat: add wordware api + vercel sdk strategy * feat: add wordware api + vercel sdk * wordware describe feat * wordware run + interface * impr(masterbots.ai): upt /api/wordware/describe/route.ts coderabbitai code suggestion. Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * impr(masterbots.ai): upt /api/wordware/describe/route.ts coderabbitai code suggestion. Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix(masterbots.ai): typo /api/wordware/describe/route.ts coderabbitai code suggestion. Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: Roberto Lucas <andler@bitcash.org> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * doc: mb system diagram upt * wip: icl calls integrations * impr(masterbots.ai): permission for thread & user action mode (#281) * update * feat: added permissions & new column * fix: rm unnessecary files * fix: rm permission check * feat(masterbots.ai): create password recovery (#282) * feat:add-recovery-strategy * chore:add nodeemailer * upt:hasura * upt:hasura * upt:gmail service * feat(hasura): otp, token table + junction w/user + mb-genql gen * feat:add recovery password API * fix:ai suggestion + UX * feat:improve ux show password feat * chore:env sample * chore:useSetState * chore:roles --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * [masterbots.ai] impr: WW API sanitize and keep alive (#284) * keep-alive + API sanitize + timeOut guard * impr streamAndValidateResponse fn * wip(masterbots.ai): impr createImprovementPrompt * style(masterbots.ai): chat loading states comments * feat(masterbots.ai): add admin mode to approve thread (#283) * feat:added mode toggle and approve btn * feat: added migration for user role * feat: user role flow implet * fix: impr admin approve process * fix: clean up * fix: toggle CTA changed * fix: update * fix: update * fix: observ * fix: obs clean up * fix: update * fix: clean up * impr(masterbots.ai): alpha metadata chatbot labels (#288) * wip: metadata chatbot labels * wip(masterbots.ai): chatbot metadata labels * impr(masterbots.ai): gen chatMetadata * impr: simplifying prompt defitions + biome.json base config * impr(masterbots.ai): recursive improved text prompt * style: code comments + eslint chk * impr: biome.json config * fix(masterbots.ai): conflicts typo fix * style(impr): cleanPrompt + followingQuestionsPrompt relocation & cleanup * doc: map system (simplified) * fix(masterbots.ai): sideBar updating URL (#286) * fix:sideBar updating URL * feat: coderabbit-ai suggestions * fix: Implement auto-expanding sidebar categories and chatbot highlighting based on URL * feat: optimize sidebar navigation with Link * feat: thread options (#287) * feat: added verified and label to the options * usethreadvisibility as context * feat: added option design and functions * fix: clean up * fix: update * fix: update * fix: obsv * fix: merge and update * fix: update the delete popup * fix: observ * fix: update * fix: delete thread flow * update * fix: update * fix: types * fix: chatbot not required * fix: testing * fix: rm bun.lock * fix: clean up * fix: update * fix(masterbots.ai): temp freezing next version --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * [masterbots.ai] feat: email verification (#289) * feat: email verification * feat: email verification * feat: email verification * upt:build * feat: handle error redirection * chore:cron task * upt: cron blocking instead erasing * feat(hasura): create social following table. (#292) * feat(db): create social following table. * create user following and followers relationships. * fix(db): ensure users can only manage their own follow relationships. * feat(db): social following and user table permissions improvements. * feat(db): improving social following table with timestamp and idx. * impr(db): permissions and tracked object relationships. * impr(db): avoid self follow. * chore(masterbots.ai): guard WordWare for prod routing * [masterbots.ai] fix: public/private tag bg on dark mode (#294) * fix: tag bg * fix: text color * fix: browse page error * fix: debugging * fix: debugging * fix: debugging * fix: added func to generate short link * fix(hasura): upt user permissions (#296) * update user permission * fix: reverse the following table * fix(hasura): build error (#297) * fix: error build * fix: reverse select perm * [masterbots.ai] feat: thread list display + components comments for ai (#299) * merged from develop * feat:add new ui-thread-representation-browse * feat:add comments for ai - C * feat:add comments for ai - b/p * feat:add comments for ai - b/p * feat:add comments for ai - b/p * feat:add app theme colors effects * feat:add comments for ai - b/p * [masterbots.ai] feat: chatbot search tool v0.1a (#295) * wip: chatbot search tool * wip(impr): ww api + chat ui tweaks * fix: init sidebar load state * fix: nesting layout * fix: thread-popup ui header * wip(impr): chatbot tooling * impr: loading state + debug chatbot tools * wip(fix): nodejs context * fix(temp): rm edge runtime api config * [masterbots.ai] feat: reorganize navigation menu for mobile view (#298) * feat: reorganize navigation menu for mobile view * UI: add sideBar style * feat: add link profile and logout icon * Update profile-sidebar.tsx Tailwind class fix * [masterbots.ai] feat: UI + Logic Improvements (#301) * feat:impr responsive * feat:impr password strenght checker * feat:impr responsive * upt-build * feat:respomsive tweask * feat:back arrow aria label * fix:chat mobile layout * fix:code section * fix:chat pannel * fix:chatBot redirection * feat:restore appConfig header * [masterbots.ai] fix: restore desktop navigation link - browse section (#303) * fix:restore desktop navigation link - browse * fix:formating * feat:yellow combobox btn (JUN-REQUEST) * glowing effect variant * upt:removed /b navigation as original v * feat:powerup mode + provider * [masterbots.ai] fix(impr): browse and chat content search (#304) * feat:browse title and content search * feat:browse title and content search * fix:typo * impr:reusable non result component * feat:skeletons * feat:guard * fix:skeletons * fix:chat searching * fix: add accent colour --------- Co-authored-by: Roberto Lucas <andler@bitcash.org> * [masterbots.ai] impr: seo sitemap (#306) * chore: sitemap creation * chore: add description based on category * chore: update queries in services * chore: truncate text * impr: upt (browse)/[category]/[threadId]/sitemap.ts coderabbitai code suggestion. Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: Roberto Lucas <andler@bitcash.org> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * [masterbots.ai] impr: ai tools (#302) * wip: ai tools * fix: WW json regexp * impr: simplifying main ai call * wip(fix): chat component re-render + cleanup * impr(refactor): chat hooks * fix: ts build * fix: ts build * fix: ts typo * fix: typo * impr: ai feedbacks * [masterbots.ai] wip(impr): web search (#309) * impr: web search tool call * fix: colour values * fix: typo * impr: code suggestions * fix: class name typo * wip(fix): web search false positive response + webSearch context * fix: web search callback * fix: typo * feat: profile page (#300) * feat: user card * fix: update * merge develop && update * feat: user generate bio & favourite topic * fix: update user card * feat: added profile sidebar * fix: update * update * update * update * fix: fetch approved and public threads * fix: fetch approved and public threads * update * fix: clean up and update * update * make fetch user work with bio * update * update * design updating * update * update * fix: few changes * update * fix: design update * fix: footer in layout * fix: update * fix: resercation * update * profile upload * feat: move the cloudinary key to env * fix: layout * fix: layout update * [masterbots.ai] fix: shallow routing for category & chatbots for chat & profile page (#313) * update * feat: added shallow link to the sidebar link * update' * fix: routing and content fetching * fix:update on routing * fix:update * update * update * update * fix: clean up * update * update * [masterbots.ai] feat: update ChatChatbotDetails (#314) * feat: new bot profile - chat * chore: dev comments * chore: white bg bot avatar * feat: add skeleton bot profile * [masterbots.ai] feat: include custom settings options (#317) * feat:relocation of theme switch(jun) * feat: create font-size accessibility provider(jun) * feat: r-sidebar theme switcher relocation + skeleton * feat: impr add rem instead px * [masterbots.ai] feat: integrate drizzle ORM (#320) * feat: create mb-drizzle package initial structure * feat:(masterbots.ai) add drizzle endpoint + service * chore: include database url * chore: upt mb-drizzle * feat: refactor drizzle config + generations * chore: impr migrate * chore: add working drizzle connection + migrations * feat: add centralized actions * chore: add ai review recomendations * chore: webSearch feature flag + use cloudinary upload preset * fix: responsive sidebar fix * fix: ts chk build * fix: sidebar async call * fix: ts build * chore: typo * [masterbots.ai] fix: browse category navigation (#316) * update * fix: rm category * update * fix: pop up on the user threads * update * update clean up * update * fix: clean up * fix: clean up and update * fix: update * fix: popup on navigation * fix: update * update * update * update * clean up * update * merge * fix: hasura thread delete + user dup permissions (#330) * [masterbots.ai] feat: onboarding bot profile variants (#324) * add chatbot-details and browse-details variants * feat: add bio generation * feat: chat profile bg * chore: update bot profile designs * chore: remove internal padding from cardHeader component * impr: iconography + border thickness * fix: numberShortener util fn --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * feat: user following (#319) * update * added follow user * update * fix: upt hasura metadata databases, public_social_following.yaml coderabbitai code suggestion. Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix: upt masterbots.ai lib, utils.ts coderabbitai suggestion. Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix: user card * update * fix: permission * update * fix: added more column for chatbot followee * fix:foloow chatbot implementation * update * threads by following user/bots * update * update * update * update * update * update * update * update --------- Co-authored-by: Roberto Lucas <andler@bitcash.org> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * [masterbots.ai] impr: new sonner (#334) * chore: add new icons * feat: Sonner custom hooks and setup * feat: use useSonner hook throughout the app * fix: overflow of the width of the sonner * chore: add new icons * feat: Sonner custom hooks and setup * feat: use useSonner hook throughout the app * chore: use hook sonner * refactor: changes according to coderabbitai * refactor: update use of sonner * chore:remove icons and use lucide icons * chore: Using Lucide Icons * chore: bun pkg mngr upt * Standardize url building using urlbuilders utility (#341) * fix: update url * fix: url update * update * [masterbots.ai] impr: og Image api dynamic to be useful without thread ID (#335) * update * fix: make OG image use default * fix: update * fix: update * fix: obs * fix: update * fix: added og to browse and chat * update * update * update * fix: provider types error * fix: updfate UUID * fix: update UUID * [masterbots.ai] docs: hook useSonner (#343) * chore: document hook useSonner * refactor: document hook useSonner, according coderabbit * impr: web search response (#310) * impr: web search response * refactor: extracting clickable generation logic * refactor: extracting clickable generation logic * fix: webSearch clickable text + reference links * chore: fix build * feat:(impr) stable version link to references format step 1 * feat:(impr) stable version link to references format step 2 --------- Co-authored-by: Bran18 <andreyfdez18@gmail.com> * [masterbots.ai] refactor: prelaunch ux/ui changes (#336) * refactor: replicate tooltip effect in desktop bot chatbot details * fix: add guard and removed re-render * fix: refactor mobile bot chatbot details * refactor: make chatPannel bigger * chore:add new bot card design + sidebar hover color * chore: delete public and private sw + icons * chore: include public + delete extra actions * chore: add sidebar bg * add sidebar new styles + lib fn * feat: add select bot * chore: cleaning * fix: build - removing BotMessageSquareIcon * fix: types/node version + node min ver req --------- Co-authored-by: sheriffjimoh <sheriffjimoh88@gmail.com> Co-authored-by: Roberto Lucas <andre.rlucas@outlook.com> * [masterbots.ai] feat: continuous thread ui functionality (#340) * wip: continuos thread logic and functionality. * feat: updating parent thread functionality. * feat: continuous thread UI and finalize functionality. * fix: lowering resolveThreadId logic complexity. * Update apps/hasura/migrations/masterbots/1736934906237_set_fk_public_thread_parent_thread/down.sql Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Update apps/masterbots.ai/lib/hooks/use-mb-chat.ts Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix: ts build --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * [masterbots.ai] fix: refactored components - pre icl v3 (#348) * chore: add refactored components - pre icl v3 * chore: add navigation color + text-input color * fix: type * wip: header active state * fix: them toggle --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * feat: icl v1a (#344) * wip: vercel ai sdk upt * wip: icl web feature * chore: icl hasura migrations, metadata and seeds * chore: genql gen * impr: chat opt separator render * impr: accordion chevron pos * impr: chat-list space * Fix observations from Jun (#353) * update * fix: update * fix: added empty state * fix: rm favourt and added card empty state * fix: hide sibe category without threads on user profile * fix: update * fix: update * [masterbots.ai] fix: reduce prompt input validation * fix: hasura moderator augmentedFrom msg prop * impr: ai prompt examples flow * fix: hasura moderator role thread upt permissions * [masterbots.ai] feat: chatbot following + thread highlight + bot thread page to blog (#337) * update * feat: added chatbot follow function to other component * update profile thread * thread highligh * thread highligh update * update * fix: thread blog * fix: follow chat bot * update * fix: observations * fix provider types issue * fix provider update * feat: update blog template * fix: rm p tag from list items * fix: merge * fix: rm parentid and continiue reading * update * update * merge * fix: generated types * update * updatd * update code * impr: profile page layout * fix: mg-genql gen ts --------- Co-authored-by: Roberto Lucas <andre.rlucas@outlook.com> Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * [masterbots.ai] fix: init threads render + icl init cleanup (#354) * wip: fix init threads render + icl cleanup This fixes the following issues: 1. Reduced the amount of re-renders when sending the new data. 2. Clean up the ICL functions and types. 3. State management for the user-thread-panel. 4. Debug the re-rendering uissue that is replacing the main thread content. 5. Debug opening a new thread with the new ICL system. They show in the list but not returning the messages when opening it up. 6. Few code clean ups. * impr: thread list re-render in chat page * fix: initialMessages in useChat * fix: hasura moderator role thread upt permissions * impr: thread list re-render * fix: markdown pkg ts * fix: markdown pkg ts * fix: downgrade react-markdown (#358) * fix: downgrade react-markdown * fix: downgrade react-markdown * fix: markdown dep version + layout thread list ui * impr: gray-ish overlay bg rm * chore: console log rm --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * refactor: icl seeds v2 (#357) * chore: upt hasura icl seeds * chore: chat legacy table rm * chore(wip): icl seeds curation * chore: upt icl init seed pt2 * chore: upt icl init seed pt3 * chore: upt icl init seed pt3 * chore: upt icl init seed pt4 * fix: cat + chatbot seeds revision * chore: tag seeds note upt * fix: drop and create chatbot_domain table (#360) * fix: drop and create chatbot_domain table * fix: chatbot_domain permissions * fix: SQL typo * [masterbots.ai] feat: improve common components and features (#356) * fix: sidebar * feat: add DeepSeek integration * chore: wip accordions * fix: include popup accordion * chore: add shared accordion to thread list * fix: extra space * fix: extra space * chore: add tabs effect * chore: add colors based on routes * chore: add colors based on routes --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * fix: useRouter import * [masterbots.ai] fix: sidebar category render (#362) * fix: sidebar category render * docs: toggleChatbotSelection * [hasura] chore: label + label_chatbot_category_domain dropping tables migration (#361) * fix: fetch chatbotDomain * [hasura] chore: rm wip example seed part * chore: rm legacy tables + fix getChatbotMetadata props (#363) * chore: rm legacy tables * fix: getChatbotMetadata * fix: chatbotMetadata ts * wip(refactor): icl init tags & categories fetch * chore: bun.lockb upt * fix: hotfix build error * impr: icl metadata requests v1 (#365) * wip: icl fetch + meta prompt impr * impr: sidebar paddings * wip: icl fetch + meta prompt impr * wip: icl fetch + meta prompt impr * impr: icl metadata request v2 (#366) * wip: icl fetch + meta prompt impr * fix: icl fetch + meta prompt impr * impr: icl output + prompts * chore: console.log rm * chore: console.log icl metadata devMode * [masterbots.ai] test: sytem prompt as user role * fix: show sidebar in profile (#364) * chore: clickable responses update * [masterbots.ai] refactor: use chat hook context + state management perf (#369) * chore: system prompt as system role * refactor: use-mb-chat to context * fix: mbchat provider location * impr: profile page scroll & footer position (#367) * update * fix: update * update * update * fix: profile page scroll and footer positioning * fix: profile sidebar * update * update * Revert "update" This reverts commit c178b1b18092bb3872f6d905b1768e9ab5b3af6b. * Revert "Revert "update"" This reverts commit a20d8b0cc8da2018cca689ba0b35ba9184cbdc4d. * Revert "Revert "Revert "update""" This reverts commit ac8b362a1b7143804000e6ccf5801f0ec95d06d1. * fix: profile page footer positioning * fix: visitor should be able to scroll through the categories * fix: profile page side bar * fix: rm loading when user not logged in * fix: update * [masterbots.ai] fix: clickable text feature (#372) * fix: accordion arrow * fix: clickable text formating * wip: fix thread load (#373) * wip: fix thread-list load * fix: continuous system prompt context * fix: render flickr + followup question logic impr * impr: prompt tags segmentation * chore: impr following question prompt * feat: public continue thread (#375) * refactor: integrating chatPannelHeader into chatPannel * chore: update browse-chat-message with shared accordion * chore: continue conversation + full conversations fix * fix: left align text * [masterbots.ai] fix: show appropriate bot cards in the user thread list (#368) * update * fix: update * update * update * fix: filter category & chatbot by userId on profile page * fix: hide empty chatbots * fix: followee permission error as moderator to follow and unfollow (#374) * update * fix: update * update * update * fix: permission issue for moderator when following other user * fix: shift on user card when loading or empty * update * [masterbots.ai] fix: isNewChat guard + continuous thread messages + power up prompts (#377) * fix: thread render at pop-up close * impr: getRouteType + chat layout * wip: isNewChat state * impr: prompt tags segmentation * fix: chat messages list render + open last according by default on new responses * impr: thread list render guard * feat(wip): isPowerUp mode * impr: memoizing getChatbotMetadata * fix: grabbing previous messages, continous chat * chore: add todo comment * impr: previous thread ui + coderabbitai observations * fix: previous conversation re-render * doc: useEffect biome-ignore * impr: deep obj compare for msg pairs * fix: ts build * fix: ts build * [masterbots.ai] refactor: useScroll hook (#376) * chore: refactor useScroll * chore: refactor useScroll * chore: refactor useScroll * Delete apps/masterbots.ai/lib/context/thread-context.tsx * chore: test commit * fix: import type * chore: add clearTimeout * chore: add destructuring * feat: update use-mb-scroll * feat: update thread component --------- Co-authored-by: Brandon fernandez <brandonfdez@Brandons-MacBook-Air.local> * [masterbots.ai] fix: chat stream render (#380) * fix: chat stream render * fix: typo * chore: chatbot prompts init config + active thread hotfixes (#378) * wip: chatbot prompts init config * wip: upt init config seeds, adding prompt configs * chore: upt init config seeds * fix: resetActiveThread guard * impr(wip): masterbot config prompt * chore: icl data curation, domain + category + sub-category * chore: init domain seeds curation * fix: moderator + user role table selection * impr: web prompt config + fix thread list render + code comments * fix: coderabbitai observations * [hasura] chore: upt user insert rows seed * fix: conflict fix --------- Co-authored-by: Gabo Esquivel <contact@gaboesquivel.com> Co-authored-by: Jimoh sherifdeen <63134009+sheriffjimoh@users.noreply.github.com> Co-authored-by: Nathanael Liu <supernathanliu@gmail.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Brandon Fernández <31634868+Bran18@users.noreply.github.com> Co-authored-by: Anouk Rímola <77553677+AnoukRImola@users.noreply.github.com> Co-authored-by: Trivium <25100787+Nemunas@users.noreply.github.com> Co-authored-by: Leandro Gavidia Santamaria <93232139+leandrogavidia@users.noreply.github.com> Co-authored-by: Jun Dam <jun@bitcash.org> Co-authored-by: Luis Carrión <41096968+luighis@users.noreply.github.com> Co-authored-by: Marco Ledezma <marcoledezmacordero09@gmail.com> Co-authored-by: Bran18 <andreyfdez18@gmail.com> Co-authored-by: sheriffjimoh <sheriffjimoh88@gmail.com> Co-authored-by: Brandon fernandez <brandonfdez@Brandons-MacBook-Air.local>
* devops: force deploy * devops: trigger automated build * devops: trigger automated build * devops: trigger automated build * devops: trigger automated build * devops: trigger automated build * devops: trigger automated build * devops: trigger automated build * impr(masterbots.ai): add return to browse on bot thread page view (#204) * ✨ Added back button to thread details page * ⚡️ changed char to svg * feat: ai gen 404 image for custom 404 error page (#210) * ⚡️ added custom error page * ⚡️ clean up * fix(masterbots.ai): terms page visibility and access * feat(masterbots.ai): consistent og image style design and dynamic metadata (#215) * feat: added og api endpoint * feat: design og image for dark mode * fix: file formated * fix: amend og image to pick current theme color and adapt * feat: added custom metadata to thread page * feat: added custom metadata to bot page * fix: clean up * fix: move bg to a component * fix: move og-image design to a component * fix: use variable for URL * fix: to slug func * ⚡️ Move and clean up UrlToSlug * fix(masterbots.ai): zod dependecy * fix: type error * fix: type error for metadata * fix: clean and build fix --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * fix(masterbots.ai): OG not redering (#224) * fix: og to render first letter of username if there's no avatar * fix: clean up * fix: clean up * fix(masterbots.ai): share function (#225) * feat: create action.ts * fix: upt share button * fix: add axios module * fix: add resend module * fix: update vercel env config * fix: split share function * fix: update share component * [coderabbitai] style: upt thread-user-actions condition Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: Roberto Lucas <andre.rlucas@outlook.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * feat(hasura): update user db schema for pro users (#227) * feat: add get_free_month column to user table * feat: create referral table * feat: add is_blocked column to user table * feat: add pro_user_subscription_id column to user table * fix: upt metadata * fix: update relationship name * feat(hasura): add Ai Model Tracker To Threads (#229) * feat: create 'models' table AI models * fix: add 'model' column to 'thread' table with foreign key constraint * feat: add model_value into models * [masterbots.ai] feat: multi AI models integration (#228) * [masterbots.ai]feat:(multimodels-integration)add actions - helpers - routes * [masterbots.ai]feat:(multimodels-integration)add NextTopLoader * [masterbots.ai]feat:(multimodels-integration)add NextTopLoaders * [masterbots.ai]feat:(multimodels-integration)add new chat components * [masterbots.ai]chore:next version * [masterbots.ai]feat:(multimodels-integration)update use context * [masterbots.ai]feat:(multimodels-integration)icons update * [masterbots.ai]chore:command ui * [masterbots.ai]refactor:moving chat componets to folder * [masterbots.ai]feat:env checker * [masterbots.ai]feat:env guard * docs: site map diagram * [masterbots.ai] fix: multi AI models guard (#235) * fix-guards + dom warning * fix-rename env var - vercel name * chore(masterbots.ai): update payment terms & conditions (#233) * fix: update terms * fix: building error * fix: update terms content * fix: rm the older part at the bottom * feat(masterbots.ai): pro subscription payment + wizard (#226) * feat: added free card * feat: added animation to the plan card * feat: added more plan card and referral code link * fix: clean up * wip: wizard * feat: wizard & modal * feat: plan Design theme and modal Header and Footer * feat: plan clean up * update * clean up * fix: rm plan comp on browse page * fix: wizard clean up * feat: succes & error modal * feat: loading comp * feat: added checkout comp * feat: set up stripe and context * wip: implementing subscription * feat: implementing subscription * feat: payment reciept * fix: clean up receipt * fix: modal not showing & shallow routing * fix: small fix * fix: receipt comp * fix: clean up * fix: shallow rerouting * feat: check if user has an active subscription * fix: coderabbit ob * fix: coderabbit ob * fix: coderabbit clean up update * fix: coderabbit clean up update * fix: coderabbit clean up update * fix: clean up * fix: clean up * fix: page restructuring and status on the receipt * fix: revamp receipt and structure * fix: rm unused file * fix: clean up * fix: update & clean up * fix: update * fix: rm the svg * fix: revamp formatSystemPrompts * fix: revamp msg to formatSystemPrompts * fix: update * fix: refactor the receipt page * fix: rm public key * fix: update * fix: update * fix: update * fix: code refactor for error and loading rendering * ref: calling secret keys from server * ref: receipt page and small fix * fix: rm file * fix(impr): subs & flow ux + cleanup * fix(masterbots.ai): OG not redering (#224) * fix: og to render first letter of username if there's no avatar * fix: clean up * fix: clean up * fix(masterbots.ai): share function (#225) * feat: create action.ts * fix: upt share button * fix: add axios module * fix: add resend module * fix: update vercel env config * fix: split share function * fix: update share component * [coderabbitai] style: upt thread-user-actions condition Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: Roberto Lucas <andre.rlucas@outlook.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * feat(hasura): update user db schema for pro users (#227) * feat: add get_free_month column to user table * feat: create referral table * feat: add is_blocked column to user table * feat: add pro_user_subscription_id column to user table * fix: upt metadata * fix: update relationship name * feat(hasura): add Ai Model Tracker To Threads (#229) * feat: create 'models' table AI models * fix: add 'model' column to 'thread' table with foreign key constraint * feat: add model_value into models * [masterbots.ai] feat: multi AI models integration (#228) * [masterbots.ai]feat:(multimodels-integration)add actions - helpers - routes * [masterbots.ai]feat:(multimodels-integration)add NextTopLoader * [masterbots.ai]feat:(multimodels-integration)add NextTopLoaders * [masterbots.ai]feat:(multimodels-integration)add new chat components * [masterbots.ai]chore:next version * [masterbots.ai]feat:(multimodels-integration)update use context * [masterbots.ai]feat:(multimodels-integration)icons update * [masterbots.ai]chore:command ui * [masterbots.ai]refactor:moving chat componets to folder * [masterbots.ai]feat:env checker * [masterbots.ai]feat:env guard * docs: site map diagram * feat: set up stripe and context * wip: implementing subscription * fix: rm the svg * fix: replace secret with variable * fix: chat restructure * fix(update): chat restructure * fix(deployment error): can't find an icon or not exported * fix: deployment issues * fix: deployment issues * fix: deployment issues * fix: adjust design * fix: clean up * fix: clean up * fix: color var updaye * [coderabbitai] impr: update apps/masterbots.ai/components/stripe-element.tsx Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * [coderabitai] impr: update apps/masterbots.ai/components/succes-content.tsx Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix: success close button * fix: bg image for yearly card * fix: move func to util * ref: receipt page function to use reac-use * fix: move depencies to the app * fix: clean up * ref: wizard to use radix dialog components * update * fix: coderabitai update --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> Co-authored-by: Nathanael Liu <supernathanliu@gmail.com> Co-authored-by: Roberto Lucas <andre.rlucas@outlook.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Brandon Fernández <31634868+Bran18@users.noreply.github.com> * [masterbots.ai] fix: llama3 models (#236) * fix-guards + dom warning * fix-rename env var - vercel name * fix-changed PERPLEXITY-LLama model * [masterbots.ai] impr(fix): ui tweaks (#237) * fix(UI):varius UI fixes * fix(UI):varius UI fixes * fix(UI): Tailwind class corrections, conflict resolution, text alignent to the left * fix(UI):update * fix(masterbots.ai): payment feedbacks (#240) * fix: make the dialog content responsive * fix: free plan card adjusted * fix: update * fix: update receipt styles * fix: build error * fix: build error * fix: build error update * fix: update * fix: observation * fix(masterbots.ai): update env variable (#244) * feat: sitemap (#238) * feat: add redirection rules * fix: update all links with new shorten urls * fix: update all links with new shorten urls * feat: make folder structure according to sitemap * [coderabbitai] impr(masterbots.ai): update app/c/page.tsx error handling Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * [coderabbitai] impr(masterbots.ai): update app/c/[category]/[chatbot]/page.tsx error handling Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix: build error * [coderabbitai] impr(masterbots.ai): update app/c/[category]/[chatbot]/page.tsx error handling Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * feat: add sitemap and metagraph * fix: use original generateMetadata * fix: update page links * fix: show only filtered threads on page reload * fix: build error --------- Co-authored-by: Roberto Lucas <andler@bitcash.org> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix(masterbots.ai): show first question & answer in thread list (#246) * feat: add 'disabled' state to ChatAccordion * fix: show default question's answer in thread list * fix: use braces and create explicit statement blocks * fix: subscription mobile responsive tweaks (#245) * update * fix: update * fix: responsiveness * fix: update * fix: few clean up * fix: rm unused image * fix: rm unused image * fix(impr): models enum table migrations (#247) * impr(hasura): db tables * impr(hasura): db tables * fix(hasura): user permissions * impr(hasura): sql models enum migration * fix(hasura): models_enum pk * fix(hasura): ci/cd default regional log bucket * docs: bun to requirements (#250) Co-authored-by: b <b> * feat: next auth, email/pw strategy (#249) * (masterbots.ia)-chore-auth-dependencies * (masterbots.ia)-feat-webauth-nextauth * wip(masterbots.ai): email/pw login + signup * feat-login ui * feat-login-component+page * feat-login-component+page * feat-auth-middleware.ts * feat-auth-nextauth + googleauth * feat-auth-coderabit-feedback * feat-auth-callback + elements added * wip(webapp): email/pw login+signup * feat:add toke storage for webauth * feat:updates webauth * feat:updates webauth * fix(masterbots.ai): blankBot fetch --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> Co-authored-by: Roberto Romero Lucas <andre.rlucas@outlook.com> * docs: mb sytem diagram v1.0a * feat(impr): next auth environment helper function (#251) * (masterbots.ia)-chore-auth-dependencies * (masterbots.ia)-feat-webauth-nextauth * wip(masterbots.ai): email/pw login + signup * feat-login ui * feat-login-component+page * feat-login-component+page * feat-auth-middleware.ts * feat-auth-nextauth + googleauth * feat-auth-coderabit-feedback * feat-auth-callback + elements added * wip(webapp): email/pw login+signup * feat:add toke storage for webauth * feat:updates webauth * feat:updates webauth * fix(masterbots.ai): blankBot fetch * feat:protecting env --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> Co-authored-by: Roberto Romero Lucas <andre.rlucas@outlook.com> * impr(masterbots.ai): sign up form + sign in session data * docs: claude3 project knowledge docs * fix(masterbots.ai): devMode conditional * chore(masterbots.ai): rm console.log * chore: upt default hardcoded gpt model * fix: toSlug imports * fix: typo * fix(hasura): seeds * chore(impr): MB seeds update and upgrade (#253) * wip: upt seeds * chore: rm alter and table creations * chore(impr): MB seeds update and upgrade * fix: set thread to private by default * fix: prompt row typo * chore(hasura): seeds update default thread publicity * fix(masterbots.ai): adjust arrow direction in thread list (#255) * feat(impr): Vercel AI SDK Update (#256) * chore:ai version upt * chore:ai version upt * upt-ai delete * upt-ai versions * upt-sdk-actions * upt-complete-sdk-3.3 + dev notes * upt-@anthropic-ai/sdk + MessageParam * Delete apps/masterbots.ai/apps/masterbots.ai/package.json * Delete apps/masterbots.ai/apps/masterbots.ai/package-lock.json * impr-convertToCoreMessages ternary * Leandro/develop (#257) * chore: create thread-component to avoid to become thread list into a client component * refactor: remove unnecesary hooks from thread component * refactor: remove unnecesary hooks on thread componen * impr(masterbots): components folder structur (#259) * impr:refactor components folders + names + imports * hotfix:chat-list useEffect dependency removal * fix(masterbots): google signIn (#260) * fix(masterbots.ai): fix thread-component loop (#261) * fix:(masterbots.ai) add useScroll hook (#263) * fix:introducing Two-phase scroll * impr: new hook to handle scrolling * impr: useScroll + respo * feat(masterbots.ai): chat sidebar filtering (#264) * sidebar refactor with ai * fix: sidebar AI V - Prev Jun (#262) * fix:semistable * fix:stable v * impr:delete nonused component * fix: upt category filtering * fix typo --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * feat: sidebar state * fix(masterbots.ai): logic typo * fix(masterbots.ai): ts typo --------- Co-authored-by: Jun Dam <jun@bitcash.org> Co-authored-by: Brandon Fernández <31634868+Bran18@users.noreply.github.com> * fix(masterbots.ai): bot button redirect change (#265) * wip(masterbots.ai): seo data impr (#267) * wip: seo data impr * impr(chore): ga tags * feat: add chat publicity trigger (#258) * update * feat: design thread visibilty * fix: added the backend * fix: added the backend * fix: rm files * fix: few clean up * fix(masterbots): google signIn (#260) * feat: design thread visibilty * fix: added the backend * fix: few clean up * Leandro/develop (#257) * chore: create thread-component to avoid to become thread list into a client component * refactor: remove unnecesary hooks from thread component * refactor: remove unnecesary hooks on thread componen * impr(masterbots): components folder structur (#259) * impr:refactor components folders + names + imports * hotfix:chat-list useEffect dependency removal * feat: design thread visibilty * fix: added the backend * fix: few clean up * fix: update * fix: add permission * fix: update query * fix(masterbots.ai): fix thread-component loop (#261) * feat: design thread visibilty * fix: added the backend * fix: few clean up * feat: design thread visibilty * fix: added the backend * fix: few clean up * Leandro/develop (#257) * chore: create thread-component to avoid to become thread list into a client component * refactor: remove unnecesary hooks from thread component * refactor: remove unnecesary hooks on thread componen * impr(masterbots): components folder structur (#259) * impr:refactor components folders + names + imports * hotfix:chat-list useEffect dependency removal * feat: design thread visibilty * fix: added the backend * fix: few clean up * update * fix: update * fix: publicity toggle * fix: error catch in the functions * fix: observations * fix: design impr * fix: thread pop-up height * chore(masterbots.ai): log rm & app version upt --------- Co-authored-by: Roberto Lucas <andler@bitcash.org> Co-authored-by: Leandro Gavidia Santamaria <93232139+leandrogavidia@users.noreply.github.com> Co-authored-by: Brandon Fernández <31634868+Bran18@users.noreply.github.com> Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * feat(masterbots.ai): user messages ai refactor (#266) * feat:userMessages refactor + hooks and utils * upt:rm console.log * fix:rollback useAiChat hook * fix:rollback - actions * fix(masterbots.ai): sidebar trigger * chore(hasura: s --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * wip: browse sidebar * impr(masterbots.ai): browse sidebar (#270) * fix: browse layout * feat(masterbots.ai): browse sidebar * fix: browse sidebar link condition * chore: upt signup default profile pic * chore: seeds upt (#269) * wip: seeds upt * chore(hasura): seeds review * feat(hasura): add "is_approved" thread field + seeds * chore: mb-genql upt * fix(hasura): thread param permission * fix(masterbots.ai): typo * fix(masterbots.ai): allow svg content-type * fix: chat + browse layout * style: clean up * Seo data (#273) * fix: build error * feat: Add SEO data to the chat page * feat: add default image, if not found * feat: Add SEO data to the browse page * fix: generates the image with error, in api/og * Update route.tsx fix: generates the image with error, in api/og * impr(masterbots.ai): title impr prompt * impr(masterbots.ai): improve current features v2 (#274) * add-impr-chat-prompt-footer-header-disclaimer * add-impr-chat-prompt-footer-header-disclaimer * add-UI-upt * add-UI-upt * add-action-prompt * add-clickable-upt * add-clickable-upt * Masterbots/fix redirects (#275) * fix:avatar-redirects * fix:avatar-redirect * fix(masterbots.ai): upt components/ui/button.tsx Coderabbitai suggestion. Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix:URL correction --------- Co-authored-by: Roberto Lucas <andler@bitcash.org> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * [masterbots.ai] feat: wordware api (#276) * feat: add wordware api + vercel sdk strategy * feat: add wordware api + vercel sdk * wordware describe feat * wordware run + interface * impr(masterbots.ai): upt /api/wordware/describe/route.ts coderabbitai code suggestion. Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * impr(masterbots.ai): upt /api/wordware/describe/route.ts coderabbitai code suggestion. Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix(masterbots.ai): typo /api/wordware/describe/route.ts coderabbitai code suggestion. Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: Roberto Lucas <andler@bitcash.org> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * doc: mb system diagram upt * wip: icl calls integrations * impr(masterbots.ai): permission for thread & user action mode (#281) * update * feat: added permissions & new column * fix: rm unnessecary files * fix: rm permission check * feat(masterbots.ai): create password recovery (#282) * feat:add-recovery-strategy * chore:add nodeemailer * upt:hasura * upt:hasura * upt:gmail service * feat(hasura): otp, token table + junction w/user + mb-genql gen * feat:add recovery password API * fix:ai suggestion + UX * feat:improve ux show password feat * chore:env sample * chore:useSetState * chore:roles --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * [masterbots.ai] impr: WW API sanitize and keep alive (#284) * keep-alive + API sanitize + timeOut guard * impr streamAndValidateResponse fn * wip(masterbots.ai): impr createImprovementPrompt * style(masterbots.ai): chat loading states comments * feat(masterbots.ai): add admin mode to approve thread (#283) * feat:added mode toggle and approve btn * feat: added migration for user role * feat: user role flow implet * fix: impr admin approve process * fix: clean up * fix: toggle CTA changed * fix: update * fix: update * fix: observ * fix: obs clean up * fix: update * fix: clean up * impr(masterbots.ai): alpha metadata chatbot labels (#288) * wip: metadata chatbot labels * wip(masterbots.ai): chatbot metadata labels * impr(masterbots.ai): gen chatMetadata * impr: simplifying prompt defitions + biome.json base config * impr(masterbots.ai): recursive improved text prompt * style: code comments + eslint chk * impr: biome.json config * fix(masterbots.ai): conflicts typo fix * style(impr): cleanPrompt + followingQuestionsPrompt relocation & cleanup * doc: map system (simplified) * fix(masterbots.ai): sideBar updating URL (#286) * fix:sideBar updating URL * feat: coderabbit-ai suggestions * fix: Implement auto-expanding sidebar categories and chatbot highlighting based on URL * feat: optimize sidebar navigation with Link * feat: thread options (#287) * feat: added verified and label to the options * usethreadvisibility as context * feat: added option design and functions * fix: clean up * fix: update * fix: update * fix: obsv * fix: merge and update * fix: update the delete popup * fix: observ * fix: update * fix: delete thread flow * update * fix: update * fix: types * fix: chatbot not required * fix: testing * fix: rm bun.lock * fix: clean up * fix: update * fix(masterbots.ai): temp freezing next version --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * [masterbots.ai] feat: email verification (#289) * feat: email verification * feat: email verification * feat: email verification * upt:build * feat: handle error redirection * chore:cron task * upt: cron blocking instead erasing * feat(hasura): create social following table. (#292) * feat(db): create social following table. * create user following and followers relationships. * fix(db): ensure users can only manage their own follow relationships. * feat(db): social following and user table permissions improvements. * feat(db): improving social following table with timestamp and idx. * impr(db): permissions and tracked object relationships. * impr(db): avoid self follow. * chore(masterbots.ai): guard WordWare for prod routing * [masterbots.ai] fix: public/private tag bg on dark mode (#294) * fix: tag bg * fix: text color * fix: browse page error * fix: debugging * fix: debugging * fix: debugging * fix: added func to generate short link * fix(hasura): upt user permissions (#296) * update user permission * fix: reverse the following table * fix(hasura): build error (#297) * fix: error build * fix: reverse select perm * [masterbots.ai] feat: thread list display + components comments for ai (#299) * merged from develop * feat:add new ui-thread-representation-browse * feat:add comments for ai - C * feat:add comments for ai - b/p * feat:add comments for ai - b/p * feat:add comments for ai - b/p * feat:add app theme colors effects * feat:add comments for ai - b/p * [masterbots.ai] feat: chatbot search tool v0.1a (#295) * wip: chatbot search tool * wip(impr): ww api + chat ui tweaks * fix: init sidebar load state * fix: nesting layout * fix: thread-popup ui header * wip(impr): chatbot tooling * impr: loading state + debug chatbot tools * wip(fix): nodejs context * fix(temp): rm edge runtime api config * [masterbots.ai] feat: reorganize navigation menu for mobile view (#298) * feat: reorganize navigation menu for mobile view * UI: add sideBar style * feat: add link profile and logout icon * Update profile-sidebar.tsx Tailwind class fix * [masterbots.ai] feat: UI + Logic Improvements (#301) * feat:impr responsive * feat:impr password strenght checker * feat:impr responsive * upt-build * feat:respomsive tweask * feat:back arrow aria label * fix:chat mobile layout * fix:code section * fix:chat pannel * fix:chatBot redirection * feat:restore appConfig header * [masterbots.ai] fix: restore desktop navigation link - browse section (#303) * fix:restore desktop navigation link - browse * fix:formating * feat:yellow combobox btn (JUN-REQUEST) * glowing effect variant * upt:removed /b navigation as original v * feat:powerup mode + provider * [masterbots.ai] fix(impr): browse and chat content search (#304) * feat:browse title and content search * feat:browse title and content search * fix:typo * impr:reusable non result component * feat:skeletons * feat:guard * fix:skeletons * fix:chat searching * fix: add accent colour --------- Co-authored-by: Roberto Lucas <andler@bitcash.org> * [masterbots.ai] impr: seo sitemap (#306) * chore: sitemap creation * chore: add description based on category * chore: update queries in services * chore: truncate text * impr: upt (browse)/[category]/[threadId]/sitemap.ts coderabbitai code suggestion. Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: Roberto Lucas <andler@bitcash.org> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * [masterbots.ai] impr: ai tools (#302) * wip: ai tools * fix: WW json regexp * impr: simplifying main ai call * wip(fix): chat component re-render + cleanup * impr(refactor): chat hooks * fix: ts build * fix: ts build * fix: ts typo * fix: typo * impr: ai feedbacks * [masterbots.ai] wip(impr): web search (#309) * impr: web search tool call * fix: colour values * fix: typo * impr: code suggestions * fix: class name typo * wip(fix): web search false positive response + webSearch context * fix: web search callback * fix: typo * feat: profile page (#300) * feat: user card * fix: update * merge develop && update * feat: user generate bio & favourite topic * fix: update user card * feat: added profile sidebar * fix: update * update * update * update * fix: fetch approved and public threads * fix: fetch approved and public threads * update * fix: clean up and update * update * make fetch user work with bio * update * update * design updating * update * update * fix: few changes * update * fix: design update * fix: footer in layout * fix: update * fix: resercation * update * profile upload * feat: move the cloudinary key to env * fix: layout * fix: layout update * [masterbots.ai] fix: shallow routing for category & chatbots for chat & profile page (#313) * update * feat: added shallow link to the sidebar link * update' * fix: routing and content fetching * fix:update on routing * fix:update * update * update * update * fix: clean up * update * update * [masterbots.ai] feat: update ChatChatbotDetails (#314) * feat: new bot profile - chat * chore: dev comments * chore: white bg bot avatar * feat: add skeleton bot profile * [masterbots.ai] feat: include custom settings options (#317) * feat:relocation of theme switch(jun) * feat: create font-size accessibility provider(jun) * feat: r-sidebar theme switcher relocation + skeleton * feat: impr add rem instead px * [masterbots.ai] feat: integrate drizzle ORM (#320) * feat: create mb-drizzle package initial structure * feat:(masterbots.ai) add drizzle endpoint + service * chore: include database url * chore: upt mb-drizzle * feat: refactor drizzle config + generations * chore: impr migrate * chore: add working drizzle connection + migrations * feat: add centralized actions * chore: add ai review recomendations * chore: webSearch feature flag + use cloudinary upload preset * fix: responsive sidebar fix * fix: ts chk build * fix: sidebar async call * fix: ts build * chore: typo * [masterbots.ai] fix: browse category navigation (#316) * update * fix: rm category * update * fix: pop up on the user threads * update * update clean up * update * fix: clean up * fix: clean up and update * fix: update * fix: popup on navigation * fix: update * update * update * update * clean up * update * merge * fix: hasura thread delete + user dup permissions (#330) * [masterbots.ai] feat: onboarding bot profile variants (#324) * add chatbot-details and browse-details variants * feat: add bio generation * feat: chat profile bg * chore: update bot profile designs * chore: remove internal padding from cardHeader component * impr: iconography + border thickness * fix: numberShortener util fn --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * feat: user following (#319) * update * added follow user * update * fix: upt hasura metadata databases, public_social_following.yaml coderabbitai code suggestion. Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix: upt masterbots.ai lib, utils.ts coderabbitai suggestion. Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix: user card * update * fix: permission * update * fix: added more column for chatbot followee * fix:foloow chatbot implementation * update * threads by following user/bots * update * update * update * update * update * update * update * update --------- Co-authored-by: Roberto Lucas <andler@bitcash.org> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * [masterbots.ai] impr: new sonner (#334) * chore: add new icons * feat: Sonner custom hooks and setup * feat: use useSonner hook throughout the app * fix: overflow of the width of the sonner * chore: add new icons * feat: Sonner custom hooks and setup * feat: use useSonner hook throughout the app * chore: use hook sonner * refactor: changes according to coderabbitai * refactor: update use of sonner * chore:remove icons and use lucide icons * chore: Using Lucide Icons * chore: bun pkg mngr upt * Standardize url building using urlbuilders utility (#341) * fix: update url * fix: url update * update * [masterbots.ai] impr: og Image api dynamic to be useful without thread ID (#335) * update * fix: make OG image use default * fix: update * fix: update * fix: obs * fix: update * fix: added og to browse and chat * update * update * update * fix: provider types error * fix: updfate UUID * fix: update UUID * [masterbots.ai] docs: hook useSonner (#343) * chore: document hook useSonner * refactor: document hook useSonner, according coderabbit * impr: web search response (#310) * impr: web search response * refactor: extracting clickable generation logic * refactor: extracting clickable generation logic * fix: webSearch clickable text + reference links * chore: fix build * feat:(impr) stable version link to references format step 1 * feat:(impr) stable version link to references format step 2 --------- Co-authored-by: Bran18 <andreyfdez18@gmail.com> * [masterbots.ai] refactor: prelaunch ux/ui changes (#336) * refactor: replicate tooltip effect in desktop bot chatbot details * fix: add guard and removed re-render * fix: refactor mobile bot chatbot details * refactor: make chatPannel bigger * chore:add new bot card design + sidebar hover color * chore: delete public and private sw + icons * chore: include public + delete extra actions * chore: add sidebar bg * add sidebar new styles + lib fn * feat: add select bot * chore: cleaning * fix: build - removing BotMessageSquareIcon * fix: types/node version + node min ver req --------- Co-authored-by: sheriffjimoh <sheriffjimoh88@gmail.com> Co-authored-by: Roberto Lucas <andre.rlucas@outlook.com> * [masterbots.ai] feat: continuous thread ui functionality (#340) * wip: continuos thread logic and functionality. * feat: updating parent thread functionality. * feat: continuous thread UI and finalize functionality. * fix: lowering resolveThreadId logic complexity. * Update apps/hasura/migrations/masterbots/1736934906237_set_fk_public_thread_parent_thread/down.sql Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Update apps/masterbots.ai/lib/hooks/use-mb-chat.ts Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix: ts build --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * [masterbots.ai] fix: refactored components - pre icl v3 (#348) * chore: add refactored components - pre icl v3 * chore: add navigation color + text-input color * fix: type * wip: header active state * fix: them toggle --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * feat: icl v1a (#344) * wip: vercel ai sdk upt * wip: icl web feature * chore: icl hasura migrations, metadata and seeds * chore: genql gen * impr: chat opt separator render * impr: accordion chevron pos * impr: chat-list space * Fix observations from Jun (#353) * update * fix: update * fix: added empty state * fix: rm favourt and added card empty state * fix: hide sibe category without threads on user profile * fix: update * fix: update * [masterbots.ai] fix: reduce prompt input validation * fix: hasura moderator augmentedFrom msg prop * impr: ai prompt examples flow * fix: hasura moderator role thread upt permissions * [masterbots.ai] feat: chatbot following + thread highlight + bot thread page to blog (#337) * update * feat: added chatbot follow function to other component * update profile thread * thread highligh * thread highligh update * update * fix: thread blog * fix: follow chat bot * update * fix: observations * fix provider types issue * fix provider update * feat: update blog template * fix: rm p tag from list items * fix: merge * fix: rm parentid and continiue reading * update * update * merge * fix: generated types * update * updatd * update code * impr: profile page layout * fix: mg-genql gen ts --------- Co-authored-by: Roberto Lucas <andre.rlucas@outlook.com> Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * [masterbots.ai] fix: init threads render + icl init cleanup (#354) * wip: fix init threads render + icl cleanup This fixes the following issues: 1. Reduced the amount of re-renders when sending the new data. 2. Clean up the ICL functions and types. 3. State management for the user-thread-panel. 4. Debug the re-rendering uissue that is replacing the main thread content. 5. Debug opening a new thread with the new ICL system. They show in the list but not returning the messages when opening it up. 6. Few code clean ups. * impr: thread list re-render in chat page * fix: initialMessages in useChat * fix: hasura moderator role thread upt permissions * impr: thread list re-render * fix: markdown pkg ts * fix: markdown pkg ts * fix: downgrade react-markdown (#358) * fix: downgrade react-markdown * fix: downgrade react-markdown * fix: markdown dep version + layout thread list ui * impr: gray-ish overlay bg rm * chore: console log rm --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * refactor: icl seeds v2 (#357) * chore: upt hasura icl seeds * chore: chat legacy table rm * chore(wip): icl seeds curation * chore: upt icl init seed pt2 * chore: upt icl init seed pt3 * chore: upt icl init seed pt3 * chore: upt icl init seed pt4 * fix: cat + chatbot seeds revision * chore: tag seeds note upt * fix: drop and create chatbot_domain table (#360) * fix: drop and create chatbot_domain table * fix: chatbot_domain permissions * fix: SQL typo * [masterbots.ai] feat: improve common components and features (#356) * fix: sidebar * feat: add DeepSeek integration * chore: wip accordions * fix: include popup accordion * chore: add shared accordion to thread list * fix: extra space * fix: extra space * chore: add tabs effect * chore: add colors based on routes * chore: add colors based on routes --------- Co-authored-by: Roberto Lucas <andler.dev@gmail.com> * fix: useRouter import * [masterbots.ai] fix: sidebar category render (#362) * fix: sidebar category render * docs: toggleChatbotSelection * [hasura] chore: label + label_chatbot_category_domain dropping tables migration (#361) * fix: fetch chatbotDomain * [hasura] chore: rm wip example seed part * chore: rm legacy tables + fix getChatbotMetadata props (#363) * chore: rm legacy tables * fix: getChatbotMetadata * fix: chatbotMetadata ts * wip(refactor): icl init tags & categories fetch * chore: bun.lockb upt * fix: hotfix build error * impr: icl metadata requests v1 (#365) * wip: icl fetch + meta prompt impr * impr: sidebar paddings * wip: icl fetch + meta prompt impr * wip: icl fetch + meta prompt impr * impr: icl metadata request v2 (#366) * wip: icl fetch + meta prompt impr * fix: icl fetch + meta prompt impr * impr: icl output + prompts * chore: console.log rm * chore: console.log icl metadata devMode * [masterbots.ai] test: sytem prompt as user role * fix: show sidebar in profile (#364) * chore: clickable responses update * [masterbots.ai] refactor: use chat hook context + state management perf (#369) * chore: system prompt as system role * refactor: use-mb-chat to context * fix: mbchat provider location * impr: profile page scroll & footer position (#367) * update * fix: update * update * update * fix: profile page scroll and footer positioning * fix: profile sidebar * update * update * Revert "update" This reverts commit ef7ee8c. * Revert "Revert "update"" This reverts commit 553f82f. * Revert "Revert "Revert "update""" This reverts commit c645eca. * fix: profile page footer positioning * fix: visitor should be able to scroll through the categories * fix: profile page side bar * fix: rm loading when user not logged in * fix: update * [masterbots.ai] fix: clickable text feature (#372) * fix: accordion arrow * fix: clickable text formating * wip: fix thread load (#373) * wip: fix thread-list load * fix: continuous system prompt context * fix: render flickr + followup question logic impr * impr: prompt tags segmentation * chore: impr following question prompt * feat: public continue thread (#375) * refactor: integrating chatPannelHeader into chatPannel * chore: update browse-chat-message with shared accordion * chore: continue conversation + full conversations fix * fix: left align text * [masterbots.ai] fix: show appropriate bot cards in the user thread list (#368) * update * fix: update * update * update * fix: filter category & chatbot by userId on profile page * fix: hide empty chatbots * fix: followee permission error as moderator to follow and unfollow (#374) * update * fix: update * update * update * fix: permission issue for moderator when following other user * fix: shift on user card when loading or empty * update * [masterbots.ai] fix: isNewChat guard + continuous thread messages + power up prompts (#377) * fix: thread render at pop-up close * impr: getRouteType + chat layout * wip: isNewChat state * impr: prompt tags segmentation * fix: chat messages list render + open last according by default on new responses * impr: thread list render guard * feat(wip): isPowerUp mode * impr: memoizing getChatbotMetadata * fix: grabbing previous messages, continous chat * chore: add todo comment * impr: previous thread ui + coderabbitai observations * fix: previous conversation re-render * doc: useEffect biome-ignore * impr: deep obj compare for msg pairs * fix: ts build * fix: ts build * [masterbots.ai] refactor: useScroll hook (#376) * chore: refactor useScroll * chore: refactor useScroll * chore: refactor useScroll * Delete apps/masterbots.ai/lib/context/thread-context.tsx * chore: test commit * fix: import type * chore: add clearTimeout * chore: add destructuring * feat: update use-mb-scroll * feat: update thread component --------- Co-authored-by: Brandon fernandez <brandonfdez@Brandons-MacBook-Air.local> * [masterbots.ai] fix: chat stream render (#380) * fix: chat stream render * fix: typo * chore: chatbot prompts init config + active thread hotfixes (#378) * wip: chatbot prompts init config * wip: upt init config seeds, adding prompt configs * chore: upt init config seeds * fix: resetActiveThread guard * impr(wip): masterbot config prompt * chore: icl data curation, domain + category + sub-category * chore: init domain seeds curation * fix: moderator + user role table selection * impr: web prompt config + fix thread list render + code comments * fix: coderabbitai observations * [hasura] chore: upt user insert rows seed * fix: conflict fix --------- Co-authored-by: Gabo Esquivel <contact@gaboesquivel.com> Co-authored-by: Jimoh sherifdeen <63134009+sheriffjimoh@users.noreply.github.com> Co-authored-by: Nathanael Liu <supernathanliu@gmail.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Brandon Fernández <31634868+Bran18@users.noreply.github.com> Co-authored-by: Anouk Rímola <77553677+AnoukRImola@users.noreply.github.com> Co-authored-by: Trivium <25100787+Nemunas@users.noreply.github.com> Co-authored-by: Leandro Gavidia Santamaria <93232139+leandrogavidia@users.noreply.github.com> Co-authored-by: Jun Dam <jun@bitcash.org> Co-authored-by: Luis Carrión <41096968+luighis@users.noreply.github.com> Co-authored-by: Marco Ledezma <marcoledezmacordero09@gmail.com> Co-authored-by: Bran18 <andreyfdez18@gmail.com> Co-authored-by: sheriffjimoh <sheriffjimoh88@gmail.com> Co-authored-by: Brandon fernandez <brandonfdez@Brandons-MacBook-Air.local>

Summary by Sourcery
Enhance the web search response handling by improving error messages and logs, refactoring the useMBChat hook for better state management, and updating the response format to include sources and images.
Enhancements:
Summary by CodeRabbit
Release Notes
New Features
ReferencesSectionin chat messages to display web search results.Bug Fixes
Documentation
Refactor
ChatMessagePropsinterface for better maintainability.