diff --git a/Gemfile b/Gemfile
index b4dbd5b42..757ec18a2 100644
--- a/Gemfile
+++ b/Gemfile
@@ -13,7 +13,6 @@ gem "turbo-rails", "~> 2.0.5"
gem "stimulus-rails", "~> 1.3.3"
gem "tailwindcss-rails", "~> 2.7.2"
gem "rack-cors"
-gem "ostruct"
# Build JSON APIs with ease [https://github.com/rails/jbuilder]
# gem "jbuilder"
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index e016ce3c2..34bf210e4 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -29,6 +29,15 @@ def redirect_to(*args)
private
+ def set_nav_conversations
+ @nav_conversations = Conversation.grouped_by_increasing_time_interval_for_user(Current.user)
+ end
+
+ def set_nav_assistants
+ @nav_assistants = Current.user.assistants.ordered
+ end
+
+
def set_system_ivars
@system_ivars = public_ivars
end
diff --git a/app/controllers/assistants_controller.rb b/app/controllers/assistants_controller.rb
index 531517b0b..b4d3d2339 100644
--- a/app/controllers/assistants_controller.rb
+++ b/app/controllers/assistants_controller.rb
@@ -1,6 +1,12 @@
class AssistantsController < ApplicationController
+ before_action :set_nav_conversations
+ before_action :set_nav_assistants
+
def index
- assistant = Current.user.assistants.ordered.first
- redirect_to new_assistant_message_path(assistant), status: :see_other
+ unless Feature.assistants_page?
+ best_assistant = @nav_assistants.first
+ redirect_to new_assistant_message_path(best_assistant), status: :see_other
+ return
+ end
end
end
diff --git a/app/controllers/conversations_controller.rb b/app/controllers/conversations_controller.rb
index aeef68680..614826c24 100644
--- a/app/controllers/conversations_controller.rb
+++ b/app/controllers/conversations_controller.rb
@@ -28,14 +28,6 @@ def destroy
private
- def set_nav_conversations
- @nav_conversations = Conversation.grouped_by_increasing_time_interval_for_user(Current.user)
- end
-
- def set_nav_assistants
- @nav_assistants = Current.user.assistants.ordered
- end
-
def set_conversation
@conversation = Current.user.conversations.find(params[:id])
end
diff --git a/app/models/user/registerable.rb b/app/models/user/registerable.rb
index 5795c50d1..b9286ee48 100644
--- a/app/models/user/registerable.rb
+++ b/app/models/user/registerable.rb
@@ -14,8 +14,14 @@ def create_initial_assistants_etc
LanguageModel.import_from_file(users: [self])
- assistants.create! name: "GPT-4o", language_model: language_models.best_for_api_service(open_ai_api_service).first
- assistants.create! name: "Claude 3.5 Sonnet", language_model: language_models.best_for_api_service(anthropic_api_service).first
- assistants.create! name: "Meta Llama", language_model: language_models.best_for_api_service(groq_api_service).first
+ [
+ ["GPT-4o", open_ai_api_service],
+ ["Claude 3.5 Sonnet", anthropic_api_service],
+ ["Meta Llama 3 70b", groq_api_service],
+ ].map do |name, api_service|
+ language_model = language_models.best_for_api_service(api_service).first
+ description = "Model #{language_model.api_name} on #{api_service.name}"
+ assistants.create! name:, description:, language_model:
+ end
end
end
diff --git a/app/views/assistants/_assistant.html.erb b/app/views/assistants/_assistant.html.erb
index 3e04f9fea..95f1aca35 100644
--- a/app/views/assistants/_assistant.html.erb
+++ b/app/views/assistants/_assistant.html.erb
@@ -1,9 +1,10 @@
<%# locals: (assistant:, settings: true, assistant_counter: -1) %>
<% selected = assistant == @assistant %>
-<% first = assistant_counter.zero? %>
<% visible = assistant_counter <= Assistant::MAX_LIST_DISPLAY-1 || selected %>
-
- <%# This extra div ^ is needed because of the absolute positioning. It doesn't lay out properly if added to the div below. %>
+
">
<%= link_to new_assistant_message_path(assistant), class: "flex-1 flex py-1 items-center text-gray-950 dark:text-gray-100 font-medium truncate", data: { role: "name" } do %>
- <%= render partial: "layouts/assistant_avatar", locals: { assistant: assistant, size: 7, classes: "mr-2" } %>
+ <%= render partial: "layouts/assistant_avatar", locals: { assistant:, size: 7, classes: "mr-2" } %>
<%= assistant.name %>
<% end %>
@@ -34,7 +35,7 @@
variant: :micro,
size: 18,
class: "outline-none text-gray-950 dark:text-gray-100 invisible group-hover:visible cursor-pointer",
- 'data-controller': "nested-pointer",
+ data: { controller: "nested-pointer" },
title: "More"
%>