Skip to content

Conversation

@ItzCrazyKns
Copy link
Owner

@ItzCrazyKns ItzCrazyKns commented Nov 13, 2025

Summary by cubic

Revamps the Settings experience with new Preferences and Personalization sections, renames Providers to Connections, and adds an auto media search toggle. Also fixes Gemini embedding model detection and updates docs/assets.

  • New Features

    • Split Settings into Preferences and Personalization; moved System Instructions to Personalization.
    • Renamed Providers to Connections with clearer labels, counts, and empty states.
    • Added Switch config field and unified autoImage/autoVideo into autoMediaSearch; used in chat flow.
    • Updated Setup to show Connections and hide the Transformers provider; improved copy.
    • Refined UI text sizes and model management panels; updated README and sponsor assets.
  • Bug Fixes

    • Gemini: list embedding models that support embedContent as well as embedText.

Written for commit 70c1f72. Summary will update automatically on new commits.

@ItzCrazyKns ItzCrazyKns merged commit 5e1746f into canary Nov 13, 2025
6 checks passed
Copy link

@cubic-dev-ai cubic-dev-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.

3 issues found across 21 files

Prompt for AI agents (all 3 issues)

Understand the root cause of the following 3 issues and fix them.


<file name="src/lib/config/index.ts">

<violation number="1" location="src/lib/config/index.ts:16">
Renaming the persisted config section from `general` to `preferences`/`personalization` without a migration means existing installs keep their settings under `general`, so theme/system-instruction values disappear when the app reloads the config.</violation>
</file>

<file name="src/components/Setup/SetupConfig.tsx">

<violation number="1" location="src/components/Setup/SetupConfig.tsx:66">
hasProviders excludes providers without chat models and any &quot;Transformers&quot; provider, so users with only embedding or Transformers connections cannot proceed through setup.</violation>
</file>

<file name="src/components/Settings/Sections/Personalization.tsx">

<violation number="1" location="src/components/Settings/Sections/Personalization.tsx:19">
Accessing browser-only APIs like localStorage during render will crash this component when the server evaluates it. Wrap the access in a window check (or otherwise guard it) so SSR never touches localStorage.</violation>
</file>

Since this is your first cubic review, here's how it works:

  • cubic automatically reviews your code and comments on bugs and improvements
  • Teach cubic by replying to its comments. cubic learns from your replies and gets better over time
  • Ask questions if you need clarification on any suggestion

React with 👍 or 👎 to teach cubic. Mention @cubic-dev-ai to give feedback, ask questions, or re-run the review.

version: this.configVersion,
setupComplete: false,
general: {},
preferences: {},
Copy link

@cubic-dev-ai cubic-dev-ai bot Nov 13, 2025

Choose a reason for hiding this comment

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

Renaming the persisted config section from general to preferences/personalization without a migration means existing installs keep their settings under general, so theme/system-instruction values disappear when the app reloads the config.

Prompt for AI agents
Address the following comment on src/lib/config/index.ts at line 16:

<comment>Renaming the persisted config section from `general` to `preferences`/`personalization` without a migration means existing installs keep their settings under `general`, so theme/system-instruction values disappear when the app reloads the config.</comment>

<file context>
@@ -13,14 +13,15 @@ class ConfigManager {
     version: this.configVersion,
     setupComplete: false,
-    general: {},
+    preferences: {},
+    personalization: {},
     modelProviders: [],
</file context>
Fix with Cubic

Copy link
Owner Author

Choose a reason for hiding this comment

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

It is saved in localstorage so no migration needed

};

const hasProviders = providers.length > 0;
const visibleProviders = providers.filter(
Copy link

@cubic-dev-ai cubic-dev-ai bot Nov 13, 2025

Choose a reason for hiding this comment

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

hasProviders excludes providers without chat models and any "Transformers" provider, so users with only embedding or Transformers connections cannot proceed through setup.

Prompt for AI agents
Address the following comment on src/components/Setup/SetupConfig.tsx at line 66:

<comment>hasProviders excludes providers without chat models and any &quot;Transformers&quot; provider, so users with only embedding or Transformers connections cannot proceed through setup.</comment>

<file context>
@@ -63,7 +63,11 @@ const SetupConfig = ({
   };
 
-  const hasProviders = providers.length &gt; 0;
+  const visibleProviders = providers.filter(
+    (p) =&gt; p.name.toLowerCase() !== &#39;transformers&#39;,
+  );
</file context>
Fix with Cubic

field={field}
value={
(field.scope === 'client'
? localStorage.getItem(field.key)
Copy link

@cubic-dev-ai cubic-dev-ai bot Nov 13, 2025

Choose a reason for hiding this comment

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

Accessing browser-only APIs like localStorage during render will crash this component when the server evaluates it. Wrap the access in a window check (or otherwise guard it) so SSR never touches localStorage.

Prompt for AI agents
Address the following comment on src/components/Settings/Sections/Personalization.tsx at line 19:

<comment>Accessing browser-only APIs like localStorage during render will crash this component when the server evaluates it. Wrap the access in a window check (or otherwise guard it) so SSR never touches localStorage.</comment>

<file context>
@@ -0,0 +1,29 @@
+          field={field}
+          value={
+            (field.scope === &#39;client&#39;
+              ? localStorage.getItem(field.key)
+              : values[field.key]) ?? field.default
+          }
</file context>
Suggested change
? localStorage.getItem(field.key)
? (typeof window !== 'undefined' ? window.localStorage.getItem(field.key) : undefined)
Fix with Cubic

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.

3 participants