Skip to content

Feat continuous thread UI functionality#340

Merged
AndlerRL merged 8 commits intodevelopfrom
feat-continuous-thread-UI-functionality
Jan 24, 2025
Merged

Feat continuous thread UI functionality#340
AndlerRL merged 8 commits intodevelopfrom
feat-continuous-thread-UI-functionality

Conversation

@mledezma
Copy link
Contributor

@mledezma mledezma commented Jan 16, 2025

Ticket:

https://trello.com/c/4L1bI0le/225-create-continue-conversation-function-browse-thread

Summary by Sourcery

Implement continuous thread functionality in the chat UI, enabling users to create and manage threads more effectively. Update the database schema to support parent-child thread relationships with new foreign key constraints.

New Features:

  • Introduce continuous thread functionality in the chat UI, allowing users to create and navigate threads seamlessly.

Enhancements:

  • Refactor the chat component to handle continuous threads and improve thread management.

Build:

  • Add new foreign key constraints to the database schema to support parent-child thread relationships.

Summary by CodeRabbit

Based on the comprehensive changes, here are the release notes:

  • New Features

    • Added support for thread hierarchies with parent-child thread relationships.
    • Introduced continuous thread functionality for more seamless chat experiences.
    • Enhanced thread visibility and management capabilities.
    • Added an alert dialog component for improved user interactions.
  • Improvements

    • Refined chat message handling and routing.
    • Updated thread creation and management services.
    • Improved user interaction and context tracking in chat interfaces.
  • Technical Enhancements

    • Updated database schema to support thread relationships.
    • Modified Hasura metadata and permissions for thread management.
    • Implemented new hooks and context providers for thread visibility.
  • Bug Fixes

    • Improved error handling in chat and thread-related components.
    • Standardized thread ID assignment and routing logic.

@mledezma mledezma requested a review from AndlerRL January 16, 2025 04:34
@mledezma mledezma self-assigned this Jan 16, 2025
@vercel
Copy link

vercel bot commented Jan 16, 2025

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
masterbots ✅ Ready (Inspect) Visit Preview 💬 Add feedback Jan 24, 2025 9:51am

@sourcery-ai
Copy link

sourcery-ai bot commented Jan 16, 2025

Reviewer's Guide by Sourcery

This pull request implements the continuous thread functionality in the chat UI, allowing users to continue conversations seamlessly. It introduces new hooks and state management for thread visibility, updates the database schema to support parent-child thread relationships, and enhances UI components to accommodate the new feature. Additionally, new shared components and utilities are introduced to improve user interaction and interface consistency.

Sequence diagram for continuous thread interaction

sequenceDiagram
    actor User
    participant UI as Chat UI
    participant Hook as useMBChat Hook
    participant API as Hasura API
    participant DB as Database

    User->>UI: Clicks 'Continue Thread'
    UI->>Hook: Calls appendAsContinuousThread()
    Hook->>API: Creates new thread with parent_thread_id
    API->>DB: Inserts new thread record
    DB-->>API: Returns thread ID
    API-->>Hook: Returns thread data
    Hook->>UI: Updates UI with new thread
    UI-->>User: Shows new continuous thread UI
Loading

Entity relationship diagram for thread relationships

erDiagram
    Thread ||--o{ Thread : "has child threads"
    Thread {
        uuid thread_id
        uuid parent_thread_id
        int chatbot_id
        uuid user_id
        boolean is_public
        timestamp created_at
    }
    Thread ||--o{ Message : "contains"
    Message {
        uuid message_id
        uuid thread_id
        string content
        string role
    }
Loading

Class diagram for chat hook structure

classDiagram
    class MBChatHookConfig {
        +threadId: string
        +chatbot: Chatbot
    }
    class MBChatHookCallback {
        +appendWithMbContextPrompts()
        +appendAsContinuousThread()
        +reload()
        +setInput()
    }
    class ThreadVisibilityContext {
        +isContinuousThread: boolean
        +setIsContinuousThread()
        +threads: Thread[]
    }
    MBChatHookConfig -- MBChatHookCallback
    MBChatHookCallback -- ThreadVisibilityContext
Loading

File-Level Changes

Change Details Files
Implemented continuous thread functionality in the chat UI.
  • Added useRouter and useThreadVisibility hooks to manage routing and thread visibility.
  • Introduced isContinuousThread state to handle continuous thread logic.
  • Modified onFinish function to determine aiChatThreadId based on thread continuity.
  • Created appendAsContinuousThread function to handle appending messages in continuous threads.
apps/masterbots.ai/lib/hooks/use-mb-chat.ts
Updated database schema to support parent-child thread relationships.
  • Added parent_thread_id column to the thread table.
  • Created foreign key constraints for parent_thread_id.
  • Updated permissions to include parent_thread_id.
apps/hasura/metadata/databases/masterbots/tables/public_thread.yaml
apps/hasura/migrations/masterbots/1736934871442_set_fk_public_thread_parent_thread/up.sql
apps/hasura/migrations/masterbots/1736934906237_set_fk_public_thread_parent_thread/down.sql
apps/hasura/migrations/masterbots/1736934906237_set_fk_public_thread_parent_thread/up.sql
apps/hasura/migrations/masterbots/1736935003381_delete_fk_public_thread_thread_parent_thread_fkey/down.sql
apps/hasura/migrations/masterbots/1736935030050_set_fk_public_thread_parent_thread_id/up.sql
apps/hasura/migrations/masterbots/1736937456812_set_fk_public_thread_parent_thread_id/down.sql
apps/hasura/migrations/masterbots/1736937456812_set_fk_public_thread_parent_thread_id/up.sql
apps/hasura/migrations/masterbots/1736934846590_alter_table_public_thread_add_column_parent_thread/down.sql
apps/hasura/migrations/masterbots/1736935019108_alter_table_public_thread_add_column_parent_thread_id/down.sql
apps/hasura/migrations/masterbots/1736934846590_alter_table_public_thread_add_column_parent_thread/up.sql
apps/hasura/migrations/masterbots/1736935011585_alter_table_public_thread_drop_column_parent_thread/down.sql
apps/hasura/migrations/masterbots/1736935019108_alter_table_public_thread_add_column_parent_thread_id/up.sql
apps/hasura/migrations/masterbots/1736934871442_set_fk_public_thread_parent_thread/down.sql
apps/hasura/migrations/masterbots/1736935003381_delete_fk_public_thread_thread_parent_thread_fkey/up.sql
apps/hasura/migrations/masterbots/1736935011585_alter_table_public_thread_drop_column_parent_thread/up.sql
apps/hasura/migrations/masterbots/1736935030050_set_fk_public_thread_parent_thread_id/down.sql
Enhanced UI components to support continuous thread functionality.
  • Updated UserThreadPanel to handle continuous thread visibility and active thread setting.
  • Modified BrowseChatMessages to display parent thread information and link.
  • Adjusted Chat component to use appendAsContinuousThread when applicable.
apps/masterbots.ai/components/routes/thread/user-thread-panel.tsx
apps/masterbots.ai/components/routes/browse/browse-chat-messages.tsx
apps/masterbots.ai/components/routes/chat/chat.tsx
Introduced new shared components and utilities.
  • Added AlertDialogue component for confirmation dialogs.
  • Updated ExternalLink component styling and functionality.
apps/masterbots.ai/components/shared/alert-dialogue.tsx
apps/masterbots.ai/components/shared/external-link.tsx

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time. You can also use
    this command to specify where the summary should be inserted.

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 16, 2025

Caution

Review failed

The pull request is closed.

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

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

apps/masterbots.ai/components/routes/browse/browse-chat-messages.tsx

Oops! 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.

Walkthrough

This pull request introduces a comprehensive enhancement to the thread management system in the Masterbots application. The changes focus on adding a hierarchical relationship between threads by introducing a parent_thread_id column in the public.thread table. This modification allows threads to reference parent threads, creating a nested conversation structure. Accompanying this structural change are updates to Hasura metadata, database migrations, and frontend components to support the new thread relationship functionality.

Changes

File Change Summary
apps/hasura/metadata/databases/masterbots/tables/public_thread.yaml Added object and array relationships for threads, updated insert/select/update/delete permissions for user and moderator roles
apps/hasura/migrations/masterbots/* Multiple migration files to add parent_thread_id column, set foreign key constraints, and manage table structure
apps/masterbots.ai/components/routes/browse/* Updated components to support parent thread references and display
apps/masterbots.ai/lib/hooks/use-mb-chat.ts Enhanced thread handling with continuous thread support
apps/masterbots.ai/services/hasura/hasura.service.ts Added parentThreadId parameter to thread creation
apps/masterbots.ai/services/hasura/hasura.service.type.ts Updated CreateThreadParams interface to include parentThreadId

Sequence Diagram

sequenceDiagram
    participant User
    participant Frontend
    participant Backend
    participant Database
    
    User->>Frontend: Create thread with parent thread
    Frontend->>Backend: Create thread request with parentThreadId
    Backend->>Database: Insert thread with parent thread reference
    Database-->>Backend: Confirm thread creation
    Backend-->>Frontend: Return new thread details
    Frontend->>User: Display thread with parent thread link
Loading

Possibly related PRs

Suggested labels

enhancement, feature

Poem

🐰 Threads weave tales, parent and child,
Conversations branching, running wild!
With parent_thread_id we now connect,
Each message's context, we now detect.
A rabbit's thread of storytelling delight! 🌿


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 64217ac and fa7735e.

📒 Files selected for processing (8)
  • apps/hasura/migrations/masterbots/1736934906237_set_fk_public_thread_parent_thread/down.sql (1 hunks)
  • apps/masterbots.ai/components/routes/browse/browse-chat-messages.tsx (4 hunks)
  • apps/masterbots.ai/components/routes/chat/chat-chatbot-details.tsx (1 hunks)
  • apps/masterbots.ai/components/routes/chat/onboarding-chatbot-details.tsx (1 hunks)
  • apps/masterbots.ai/components/routes/thread/user-thread-panel.tsx (6 hunks)
  • apps/masterbots.ai/lib/constants/prompts.ts (1 hunks)
  • apps/masterbots.ai/lib/hooks/use-mb-chat.ts (10 hunks)
  • apps/masterbots.ai/services/hasura/hasura.service.ts (7 hunks)
✨ Finishing Touches
  • 📝 Generate Docstrings (Beta)

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?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

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)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR. (Beta)
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey @mledezma - I've reviewed your changes - here's some feedback:

Overall Comments:

  • Consider replacing 'any' type annotations in error handlers and response callbacks with proper types to improve type safety
Here's what I looked at during the review
  • 🟢 General issues: all looks good
  • 🟢 Security: all looks good
  • 🟢 Testing: all looks good
  • 🟡 Complexity: 1 issue found
  • 🟢 Documentation: all looks good

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 11

🔭 Outside diff range comments (2)
apps/masterbots.ai/components/routes/browse/browse-chat-messages.tsx (1)

Line range hint 52-72: Consider error handling for parent thread fetching.

The fetchParentThreadInfo function should handle potential errors when fetching parent thread data.

 const fetchParentThreadInfo = async () => {
   if (parentThreadId) {
+    try {
       const parentThread = await getMessages({ threadId: parentThreadId })
       const parentThreadTitle = parentThread[0]?.content
       setParentThreadTitle(parentThreadTitle)
+    } catch (error) {
+      console.error('Error fetching parent thread:', error)
+      setParentThreadTitle(null)
+    }
   }
 }
🧰 Tools
🪛 Biome (1.9.4)

[error] 75-75: This hook does not specify all of its dependencies: fetchMessages

This dependency is not specified in the hook dependency list.

(lint/correctness/useExhaustiveDependencies)


[error] 75-75: This hook specifies more dependencies than necessary: threadId

Outer scope values aren't valid dependencies because mutating them doesn't re-render the component.

(lint/correctness/useExhaustiveDependencies)


[error] 80-80: This hook does not specify all of its dependencies: fetchParentThreadInfo

This dependency is not specified in the hook dependency list.

(lint/correctness/useExhaustiveDependencies)

apps/masterbots.ai/services/hasura/hasura.service.ts (1)

Line range hint 534-545: Add error handling for thread interweaving.

The thread interweaving logic should include error handling for edge cases where arrays might be empty or undefined.

+  if (!followingThreads?.length && !organicThreads?.length) {
+    return [];
+  }
+
   while (
     (followingIndex < followingThreads.length || organicIndex < organicThreads.length) &&
     interweavedThreads.length < (limit || 30)
   ) {
🧹 Nitpick comments (16)
apps/masterbots.ai/components/shared/external-link.tsx (2)

15-21: Consider using Tailwind color system instead of magic values

While the styling is comprehensive, using hardcoded colors (#F4F4F580, #18181B) makes it harder to maintain consistent theming.

Consider using Tailwind's color system:

-'border border-[#F4F4F580] rounded-3xl',
-'bg-[#18181B] text-white text-xl py-3.5 px-9 leading-[1.3]',
+'border border-gray-100/50 rounded-3xl',
+'bg-zinc-900 text-white text-xl py-3.5 px-9 leading-[1.3]',

24-24: Consider using Tailwind's alignment utilities

The -mt-[1px] adjustment might not scale well across different text sizes and viewports.

Consider using Tailwind's alignment utilities:

-<ExternalLinkIcon size={20} className="-mt-[1px]" />
+<ExternalLinkIcon size={20} className="align-baseline" />
apps/masterbots.ai/lib/hooks/use-mb-chat.ts (5)

116-116: Avoid using the 'any' type for better type safety

Consider specifying a more precise type for the response parameter in the onResponse function to enhance type safety and reduce potential errors.

🧰 Tools
🪛 Biome (1.9.4)

[error] 116-116: Unexpected any. Specify a different type.

any disables many type checking rules. Its use should be avoided.

(lint/suspicious/noExplicitAny)


129-129: Avoid using the 'any' type for better type safety

Consider specifying a more precise type for the message parameter in the onFinish function to improve type safety and maintainability.

🧰 Tools
🪛 Biome (1.9.4)

[error] 129-129: Unexpected any. Specify a different type.

any disables many type checking rules. Its use should be avoided.

(lint/suspicious/noExplicitAny)


130-130: Explicitly declare the type of 'aiChatThreadId'

Provide an explicit type annotation for aiChatThreadId to prevent it from implicitly having the 'any' type, enhancing code clarity and type safety.

🧰 Tools
🪛 Biome (1.9.4)

[error] 130-130: This variable implicitly has the any type.

Variable declarations without type annotation and initialization implicitly have the any type. Declare a type or initialize the variable with some value.

(lint/suspicious/noImplicitAnyLet)


161-161: Avoid using the 'any' type for better type safety

Specify a more precise type for the toolCall parameter in the onToolCall function to enhance type checking and prevent potential runtime errors.

🧰 Tools
🪛 Biome (1.9.4)

[error] 161-161: Unexpected any. Specify a different type.

any disables many type checking rules. Its use should be avoided.

(lint/suspicious/noExplicitAny)


166-166: Avoid using the 'any' type for better type safety

Consider specifying a more precise type for the error parameter in the onError function to improve type safety and error handling.

🧰 Tools
🪛 Biome (1.9.4)

[error] 166-166: Unexpected any. Specify a different type.

any disables many type checking rules. Its use should be avoided.

(lint/suspicious/noExplicitAny)

apps/masterbots.ai/components/shared/alert-dialogue.tsx (1)

29-60: Consider making the dialog more reusable.

While the implementation is solid, the component is currently tailored specifically for delete operations. Consider making it more generic to handle different types of confirmations.

-export function AlertDialogue({
+export function ConfirmationDialog({
   title,
   description,
-  deleteDialogOpen,
-  isDeleting,
-  setIsDeleteOpen,
-  handleDelete,
+  isOpen,
+  isLoading,
+  setIsOpen,
+  onConfirm,
+  confirmText = 'Confirm',
+  cancelText = 'Cancel',
 }: {
   title: string
   description: string
-  deleteDialogOpen: boolean
-  isDeleting: boolean
-  setIsDeleteOpen: (open: boolean) => void
-  handleDelete: (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void
+  isOpen: boolean
+  isLoading: boolean
+  setIsOpen: (open: boolean) => void
+  onConfirm: (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void
+  confirmText?: string
+  cancelText?: string
 })
apps/masterbots.ai/components/routes/chat/chat.tsx (1)

118-127: Simplify the chatSearchMessage function.

The function can be simplified by removing unnecessary else clauses.

  const chatSearchMessage = (isNewChat: boolean, isContinuousThread: boolean, allMessages: UiUtilsMessage[] ) => {
    const threadTitle = allMessages.filter(m => m.role === 'user')[0]?.content
    if (isContinuousThread && allMessages) {
      return `Create new thread from "${threadTitle}" by making a new question.`
    }
-   else if (isNewChat) {
+   if (isNewChat) {
      return `Start New Chat with ${chatbot.name}`
    }
-   else {
-     return `Continue This Chat with ${chatbot.name}`
-   }
+   return `Continue This Chat with ${chatbot.name}`
  }
🧰 Tools
🪛 Biome (1.9.4)

[error] 122-126: This else clause can be omitted because previous branches break early.

Unsafe fix: Omit the else clause.

(lint/style/noUselessElse)


[error] 124-126: This else clause can be omitted because previous branches break early.

(lint/style/noUselessElse)

apps/masterbots.ai/components/routes/thread/user-thread-panel.tsx (2)

37-41: Use import type for type-only imports.

The Session import should use the import type syntax as it's only used for type information.

- import { Session } from 'next-auth/core/types'
+ import type { Session } from 'next-auth/core/types'
🧰 Tools
🪛 Biome (1.9.4)

[error] 39-39: 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)


175-189: Avoid non-null assertions in getThreadByContinuousThreadId.

Replace the non-null assertion with optional chaining for better type safety.

  const getThreadByContinuousThreadId = async (continuousThreadId: string, session: Session) => {
    const thread = await getThread({
      threadId: continuousThreadId,
-     jwt: session!.user?.hasuraJwt,
+     jwt: session?.user?.hasuraJwt,
    })

    if (thread) {
      setActiveThread(thread)
      setThreads([thread])
      setIsContinuousThread(true)
      setTotalThreads(1)
      setCount(1)
      setIsOpenPopup(true)
    }
  }
🧰 Tools
🪛 Biome (1.9.4)

[error] 178-178: 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/services/hasura/hasura.service.ts (3)

499-522: Consider adding pagination for following content.

The filtering logic for following content could benefit from pagination to handle large datasets more efficiently. Currently, it loads all threads and then filters them in memory.

-  const followingThreads = threads.filter(thread => {
+  const followingThreads = threads.slice(0, limit || 30).filter(thread => {

Line range hint 524-528: Optimize organic content filtering.

Similar to the following content, consider implementing pagination for organic content to improve performance with large datasets.

-  const organicThreads = threads.filter(thread =>
+  const organicThreads = threads.slice(0, limit || 30).filter(thread =>

Line range hint 1078-1141: Consider extracting follow/unfollow logic into a shared utility.

The chatbot and user follow/unfollow functions share similar patterns. Consider extracting the common logic into a shared utility function to reduce code duplication.

type FollowEntity = {
  followerId: string;
  followeeId: string | number;
  type: 'user' | 'chatbot';
};

async function handleFollowUnfollow({ followerId, followeeId, type, jwt }: FollowEntity & { jwt: string }) {
  if (!jwt) throw new Error(`Authentication required to follow/unfollow ${type}`);
  
  const client = getHasuraClient({ jwt });
  try {
    const isFollowing = type === 'user' 
      ? await getFollowStatus(client, followerId, followeeId as string)
      : await getChatbotFollowStatus(client, followerId, followeeId as number);
      
    if (!isFollowing) {
      await (type === 'user' 
        ? followUser(client, followerId, followeeId as string)
        : followChatbot(client, followerId, followeeId as number));
      return { success: true, follow: true };
    }
    
    await (type === 'user'
      ? unfollowUser(client, followerId, followeeId as string)
      : unfollowChatbot(client, followerId, followeeId as number));
    return { success: true, follow: false };
  } catch (error) {
    console.error(`Error following/unfollowing ${type}:`, error);
    return {
      success: false,
      error: error instanceof Error ? error.message : `Failed to follow/unfollow ${type}.`
    };
  }
}
apps/hasura/metadata/databases/masterbots/tables/public_thread.yaml (2)

37-46: Add validation for parent thread existence and cycle prevention.

The current permissions don't prevent:

  1. Setting non-existent thread IDs as parent
  2. Creating cycles in thread hierarchy (thread A -> thread B -> thread A)

Consider adding these validations:

  1. Add check to verify parent thread exists and is approved
  2. Add trigger or check constraint to prevent cycles in thread hierarchy
  3. Consider adding maximum depth limit for thread nesting

Would you like me to help implement these validations?

Also applies to: 51-60


79-89: Consider adding thread hierarchy depth to moderator view.

For better moderation, consider adding a computed field to show thread depth/level in hierarchy.

This would help moderators identify and manage deeply nested conversations that might need special attention.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d72a578 and 64217ac.

⛔ Files ignored due to path filters (3)
  • packages/mb-genql/generated/schema.graphql is excluded by !**/generated/**
  • packages/mb-genql/generated/schema.ts is excluded by !**/generated/**
  • packages/mb-genql/generated/types.ts is excluded by !**/generated/**
📒 Files selected for processing (32)
  • apps/hasura/metadata/databases/masterbots/tables/public_thread.yaml (6 hunks)
  • apps/hasura/migrations/masterbots/1736934846590_alter_table_public_thread_add_column_parent_thread/down.sql (1 hunks)
  • apps/hasura/migrations/masterbots/1736934846590_alter_table_public_thread_add_column_parent_thread/up.sql (1 hunks)
  • apps/hasura/migrations/masterbots/1736934871442_set_fk_public_thread_parent_thread/down.sql (1 hunks)
  • apps/hasura/migrations/masterbots/1736934871442_set_fk_public_thread_parent_thread/up.sql (1 hunks)
  • apps/hasura/migrations/masterbots/1736934906237_set_fk_public_thread_parent_thread/down.sql (1 hunks)
  • apps/hasura/migrations/masterbots/1736934906237_set_fk_public_thread_parent_thread/up.sql (1 hunks)
  • apps/hasura/migrations/masterbots/1736935003381_delete_fk_public_thread_thread_parent_thread_fkey/down.sql (1 hunks)
  • apps/hasura/migrations/masterbots/1736935003381_delete_fk_public_thread_thread_parent_thread_fkey/up.sql (1 hunks)
  • apps/hasura/migrations/masterbots/1736935011585_alter_table_public_thread_drop_column_parent_thread/down.sql (1 hunks)
  • apps/hasura/migrations/masterbots/1736935011585_alter_table_public_thread_drop_column_parent_thread/up.sql (1 hunks)
  • apps/hasura/migrations/masterbots/1736935019108_alter_table_public_thread_add_column_parent_thread_id/down.sql (1 hunks)
  • apps/hasura/migrations/masterbots/1736935019108_alter_table_public_thread_add_column_parent_thread_id/up.sql (1 hunks)
  • apps/hasura/migrations/masterbots/1736935030050_set_fk_public_thread_parent_thread_id/down.sql (1 hunks)
  • apps/hasura/migrations/masterbots/1736935030050_set_fk_public_thread_parent_thread_id/up.sql (1 hunks)
  • apps/hasura/migrations/masterbots/1736937456812_set_fk_public_thread_parent_thread_id/down.sql (1 hunks)
  • apps/hasura/migrations/masterbots/1736937456812_set_fk_public_thread_parent_thread_id/up.sql (1 hunks)
  • apps/masterbots.ai/app/u/[slug]/t/[category]/[chatbot]/[threadId]/page.tsx (1 hunks)
  • apps/masterbots.ai/components/routes/browse/browse-chat-message-list.tsx (0 hunks)
  • apps/masterbots.ai/components/routes/browse/browse-chat-messages.tsx (4 hunks)
  • apps/masterbots.ai/components/routes/browse/browse-thread.tsx (1 hunks)
  • apps/masterbots.ai/components/routes/chat/chat-chatbot-details.tsx (1 hunks)
  • apps/masterbots.ai/components/routes/chat/chat.tsx (6 hunks)
  • apps/masterbots.ai/components/routes/chat/onboarding-chatbot-details.tsx (1 hunks)
  • apps/masterbots.ai/components/routes/thread/user-thread-panel.tsx (6 hunks)
  • apps/masterbots.ai/components/shared/alert-dialogue.tsx (1 hunks)
  • apps/masterbots.ai/components/shared/external-link.tsx (2 hunks)
  • apps/masterbots.ai/lib/constants/prompts.ts (1 hunks)
  • apps/masterbots.ai/lib/hooks/use-mb-chat.ts (11 hunks)
  • apps/masterbots.ai/lib/hooks/use-thread-visibility.tsx (3 hunks)
  • apps/masterbots.ai/services/hasura/hasura.service.ts (10 hunks)
  • apps/masterbots.ai/services/hasura/hasura.service.type.ts (1 hunks)
💤 Files with no reviewable changes (1)
  • apps/masterbots.ai/components/routes/browse/browse-chat-message-list.tsx
✅ Files skipped from review due to trivial changes (6)
  • apps/hasura/migrations/masterbots/1736935011585_alter_table_public_thread_drop_column_parent_thread/up.sql
  • apps/hasura/migrations/masterbots/1736934846590_alter_table_public_thread_add_column_parent_thread/down.sql
  • apps/hasura/migrations/masterbots/1736935019108_alter_table_public_thread_add_column_parent_thread_id/down.sql
  • apps/hasura/migrations/masterbots/1736935003381_delete_fk_public_thread_thread_parent_thread_fkey/up.sql
  • apps/hasura/migrations/masterbots/1736937456812_set_fk_public_thread_parent_thread_id/up.sql
  • apps/masterbots.ai/app/u/[slug]/t/[category]/[chatbot]/[threadId]/page.tsx
🧰 Additional context used
📓 Learnings (1)
apps/masterbots.ai/components/routes/chat/chat.tsx (1)
Learnt from: AndlerRL
PR: bitcashorg/masterbots#287
File: apps/masterbots.ai/lib/hooks/use-thread-visibility.tsx:3-3
Timestamp: 2024-11-12T03:32:08.432Z
Learning: Always use explicit imports for React hooks to maintain consistency across the monorepo, and avoid using both named and default imports simultaneously.
🪛 Biome (1.9.4)
apps/masterbots.ai/components/routes/chat/chat.tsx

[error] 122-126: This else clause can be omitted because previous branches break early.

Unsafe fix: Omit the else clause.

(lint/style/noUselessElse)


[error] 124-126: This else clause can be omitted because previous branches break early.

(lint/style/noUselessElse)

apps/masterbots.ai/components/routes/browse/browse-chat-messages.tsx

[error] 75-75: This hook does not specify all of its dependencies: fetchMessages

This dependency is not specified in the hook dependency list.

(lint/correctness/useExhaustiveDependencies)


[error] 75-75: This hook specifies more dependencies than necessary: threadId

Outer scope values aren't valid dependencies because mutating them doesn't re-render the component.

(lint/correctness/useExhaustiveDependencies)


[error] 80-80: This hook does not specify all of its dependencies: fetchParentThreadInfo

This dependency is not specified in the hook dependency list.

(lint/correctness/useExhaustiveDependencies)

apps/masterbots.ai/components/routes/thread/user-thread-panel.tsx

[error] 39-39: 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] 178-178: 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] 191-191: This hook does not specify all of its dependencies: getThreadByContinuousThreadId

This dependency is not specified in the hook dependency list.

(lint/correctness/useExhaustiveDependencies)

apps/masterbots.ai/lib/hooks/use-mb-chat.ts

[error] 116-116: Unexpected any. Specify a different type.

any disables many type checking rules. Its use should be avoided.

(lint/suspicious/noExplicitAny)


[error] 129-129: Unexpected any. Specify a different type.

any disables many type checking rules. Its use should be avoided.

(lint/suspicious/noExplicitAny)


[error] 130-130: This variable implicitly has the any type.

Variable declarations without type annotation and initialization implicitly have the any type. Declare a type or initialize the variable with some value.

(lint/suspicious/noImplicitAnyLet)


[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] 161-161: Unexpected any. Specify a different type.

any disables many type checking rules. Its use should be avoided.

(lint/suspicious/noExplicitAny)


[error] 166-166: Unexpected any. Specify a different type.

any disables many type checking rules. Its use should be avoided.

(lint/suspicious/noExplicitAny)


[error] 347-347: 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] 348-348: 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 (28)
apps/masterbots.ai/components/shared/external-link.tsx (1)

1-2: Good choice using Lucide icons!

The switch from inline SVG to Lucide icons improves maintainability and consistency across the UI.

apps/masterbots.ai/components/routes/browse/browse-thread.tsx (1)

37-37: Passing 'parentThreadId' prop enhances thread context

The addition of parentThreadId to the BrowseChatMessages component allows for improved management of thread hierarchies and enhances the user experience by providing context of parent threads.

apps/masterbots.ai/services/hasura/hasura.service.type.ts (1)

44-44: Add 'parentThreadId' to support hierarchical threads

Including the optional parentThreadId in the CreateThreadParams interface enables the creation of hierarchical thread structures, aligning with the new thread management functionality.

apps/masterbots.ai/components/shared/alert-dialogue.tsx (1)

14-28: LGTM! Well-structured props interface.

The component's props are well-typed and follow TypeScript best practices.

apps/masterbots.ai/components/routes/browse/browse-chat-messages.tsx (2)

42-49: LGTM! Props interface updated correctly.

The addition of optional parentThreadId prop is well-typed and maintains backward compatibility.


97-109: LGTM! Clear parent thread context UI.

The UI changes effectively communicate the thread relationship to users.

apps/masterbots.ai/components/routes/chat/onboarding-chatbot-details.tsx (1)

21-22: LGTM! Proper session handling.

The session handling and follow status check are implemented correctly.

apps/masterbots.ai/components/routes/chat/chat-chatbot-details.tsx (1)

69-69: LGTM! Clean state update.

The followers state update logic is clean and maintains immutability.

apps/masterbots.ai/lib/hooks/use-thread-visibility.tsx (3)

29-30: LGTM! Well-defined interface extension.

The new properties are properly typed and follow React's state management patterns.


57-57: LGTM! Proper state initialization.

The continuous thread state is correctly initialized with a default value of false.


190-192: LGTM! Context value properly updated.

The new properties are correctly included in the context provider's value object.

apps/masterbots.ai/lib/constants/prompts.ts (2)

92-98: LGTM! Enhanced user analysis prompt.

The prompt now includes comprehensive analysis points for better user insights.


103-105: LGTM! Improved bio format example.

The example bio format is now more descriptive and includes relevant emojis.

apps/masterbots.ai/components/routes/chat/chat.tsx (1)

189-189: LGTM! Smart conditional append implementation.

The append prop correctly switches between continuous and context-based appending based on the thread type.

apps/masterbots.ai/components/routes/thread/user-thread-panel.tsx (1)

240-244: LGTM! Smart conditional rendering.

The search input is correctly hidden when a continuous thread is active.

apps/hasura/migrations/masterbots/1736934846590_alter_table_public_thread_add_column_parent_thread/up.sql (1)

1-2: Verify the necessity of both parent_thread columns.

The migration adds a parent_thread column, but there's another migration adding parent_thread_id. Having two columns (parent_thread and parent_thread_id) that seem to serve the same purpose could lead to confusion and data inconsistency.

apps/masterbots.ai/services/hasura/hasura.service.ts (3)

312-312: LGTM: Thread creation with parent reference implemented correctly.

The createThread function has been properly updated to handle the new parentThreadId parameter.

Also applies to: 319-319


903-911: LGTM: User following relationship properly implemented.

The getUserBySlug function has been correctly updated to include the following relationship data.


1069-1073: Standardize error handling across follow/unfollow functions.

Both user and chatbot follow/unfollow functions use consistent error handling patterns. Good practice!

Also applies to: 1136-1140

apps/hasura/migrations/masterbots/1736934871442_set_fk_public_thread_parent_thread/up.sql (1)

1-5: Verify duplicate foreign key constraints.

This migration adds a foreign key constraint on parent_thread column, but there's another migration that adds a similar constraint on parent_thread_id. This suggests:

  1. Either this is a duplicate constraint
  2. Or there's a column rename from parent_thread to parent_thread_id

If it's a column rename, the migrations should be organized to:

  1. First add the new column parent_thread_id
  2. Then migrate the data
  3. Finally drop the old column parent_thread

Please verify the intended schema changes and ensure proper migration sequence.

apps/hasura/migrations/masterbots/1736935030050_set_fk_public_thread_parent_thread_id/up.sql (1)

1-5: Clarify migration sequence and verify schema state.

The migrations show multiple similar foreign key constraints:

  1. One on parent_thread column
  2. Another on parent_thread_id column

To ensure data integrity and avoid confusion:

  1. Verify the final intended schema
  2. Ensure clean migration sequence
  3. Add comments explaining the migration steps

Run this script to verify the current schema state:

apps/hasura/migrations/masterbots/1736935030050_set_fk_public_thread_parent_thread_id/down.sql (1)

1-1: Document and verify migration sequence.

While this down migration is correct, the overall migration sequence needs documentation and verification:

  1. Are we renaming parent_thread to parent_thread_id?
  2. Or are we replacing one column with another?
  3. How is the data preserved during migration?

Please add migration comments explaining:

  1. The purpose of each migration
  2. The expected sequence
  3. Data preservation strategy

Consider adding a README.md in the migrations folder documenting:

  1. The schema evolution strategy
  2. How to verify successful migration
  3. Rollback procedures
apps/hasura/migrations/masterbots/1736937456812_set_fk_public_thread_parent_thread_id/down.sql (1)

1-5: Verify the need for both parent_thread and parent_thread_id columns.

The codebase appears to have two similar foreign key constraints:

  • thread_parent_thread_fkey referencing parent_thread
  • thread_parent_thread_id_fkey referencing parent_thread_id

This redundancy could lead to data inconsistency. Consider consolidating these into a single column.

Let's check the schema and usage:

apps/hasura/metadata/databases/masterbots/tables/public_thread.yaml (2)

11-13: LGTM: Object relationship for parent thread.

The object relationship 'thread' is correctly configured to establish the parent-child relationship between threads.


25-31: LGTM: Array relationship for child threads.

The array relationship 'threads' is correctly configured to allow querying child threads of a parent thread.

apps/hasura/migrations/masterbots/1736934871442_set_fk_public_thread_parent_thread/down.sql (1)

1-1: LGTM! Verify existing data integrity.

The down migration correctly drops the foreign key constraint. However, before applying this migration in production, ensure there are no orphaned references.

✅ Verification successful

Migration is safe - part of column rename refactoring

This down migration is dropping an old constraint that was replaced by thread_parent_thread_id_fkey in later migrations. The referential integrity is maintained through the new constraint, making this change safe to apply.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for potential orphaned references that could be affected by constraint removal
echo "WITH orphaned_threads AS (
  SELECT t.thread_id, t.parent_thread 
  FROM public.thread t 
  LEFT JOIN public.thread p ON t.parent_thread = p.thread_id 
  WHERE t.parent_thread IS NOT NULL 
  AND p.thread_id IS NULL
) SELECT COUNT(*) FROM orphaned_threads;" | psql

Length of output: 366


Script:

#!/bin/bash
# Find thread table definition and related constraints
fd -e sql . | xargs grep -l "CREATE TABLE.*thread"

# Look for any triggers or additional constraints on thread table
fd -e sql . | xargs grep -l "thread.*trigger\|thread.*constraint"

# Search for parent_thread usage in application code
rg "parent_thread" --type-not sql -C 2

Length of output: 3679


Script:

#!/bin/bash
# Check initial table creation
cat apps/hasura/migrations/masterbots/1701290192849_create_table_public_thread/up.sql

# Check the latest FK constraint setup
cat apps/hasura/migrations/masterbots/1736937456812_set_fk_public_thread_parent_thread_id/up.sql

Length of output: 891

apps/hasura/migrations/masterbots/1736934906237_set_fk_public_thread_parent_thread/up.sql (2)

1-5: Verify data integrity before applying constraint.

Before applying this migration in production, ensure all existing parent_thread values are valid.


1-5: Consider adding appropriate CASCADE behavior and cycle prevention.

While the foreign key constraint is correctly defined, there are several important considerations:

  1. The current no action behavior might make it difficult to delete parent threads with children. Consider using ON DELETE CASCADE or ON DELETE SET NULL based on your business requirements.
  2. The self-referential relationship could potentially create cycles (thread A -> thread B -> thread A). Consider adding a trigger to prevent circular references.
  3. For performance, an index should be added on the parent_thread column.

Run this script to check for potential circular references and missing indexes:

Consider adding this index:

CREATE INDEX idx_thread_parent_thread ON public.thread(parent_thread);

…thread_parent_thread/down.sql

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Copy link
Member

@AndlerRL AndlerRL left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes looks good to me however, I found 1 feedback from sourcery ai and a TS build error. After handling those, it will be good to go!

image

👀 remember to do run husky:prepare at root folder to enable husky pre-commits and verify this before to commit changes. I am tweaking the Biome.js and the Husky script for future work on new branches. You can pull the latest too.

@AndlerRL
Copy link
Member

Hey @mledezma - I've reviewed your changes - here's some feedback:

Overall Comments:

  • Consider replacing 'any' type annotations in error handlers and response callbacks with proper types to improve type safety

Here's what I looked at during the review
Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@sourcery-ai what is the place where the TS any was applied"?

@AndlerRL
Copy link
Member

@mledezma -- I resolved the ts build issue happening within this PR and additionally merged the latest from develop. Now it is ready for a merge!

@AndlerRL AndlerRL merged commit d66863a into develop Jan 24, 2025
2 checks passed
@AndlerRL AndlerRL deleted the feat-continuous-thread-UI-functionality branch January 24, 2025 09:52
@AndlerRL
Copy link
Member

@AnoukRImola -- we need to test the continuous thread feature. This one would appear whenever we share a thread. e.g.: masterbots.ai/b/healthbot/1234-hgnj-hg75-h8t4. Here, it will appear the new CTA, inviting to start a new conversation based on the conversation that was looking before. This should take the user to chat (private) route and open the pop-up to start typing the first question of the new continuing conversation.

cc - @merivercap @mledezma

AndlerRL added a commit that referenced this pull request Feb 19, 2025
* 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>
sheriffjimoh pushed a commit that referenced this pull request Sep 9, 2025
* 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>
sheriffjimoh added a commit that referenced this pull request Sep 9, 2025
* 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>
sheriffjimoh added a commit that referenced this pull request Sep 10, 2025
* 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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants