diff --git a/src/components/chat-components/ChatControls.tsx b/src/components/chat-components/ChatControls.tsx index e900358d..7725a251 100644 --- a/src/components/chat-components/ChatControls.tsx +++ b/src/components/chat-components/ChatControls.tsx @@ -138,7 +138,7 @@ const ChatControls: React.FC = ({ {selectedChain === ChainType.LLM_CHAIN && "chat"} {selectedChain === ChainType.VAULT_QA_CHAIN && "vault QA (basic)"} - {selectedChain === ChainType.COPILOT_PLUS_CHAIN && "copilot plus (alpha)"} + {selectedChain === ChainType.COPILOT_PLUS_CHAIN && "copilot plus"} @@ -157,7 +157,7 @@ const ChatControls: React.FC = ({ handleChainChange({ value: ChainType.COPILOT_PLUS_CHAIN })} > - copilot plus (alpha) + copilot plus diff --git a/src/components/modals/CopilotPlusModal.tsx b/src/components/modals/CopilotPlusModal.tsx deleted file mode 100644 index 30c4eb1a..00000000 --- a/src/components/modals/CopilotPlusModal.tsx +++ /dev/null @@ -1,72 +0,0 @@ -import { Modal } from "obsidian"; - -export class CopilotPlusModal extends Modal { - onOpen() { - const { contentEl } = this; - contentEl.empty(); - - const container = contentEl.createDiv("copilot-plus-modal"); - - container.createEl("h2", { text: "Copilot Plus (Alpha)" }); - - const introP = container.createEl("p"); - introP.appendChild(document.createTextNode("Coming soon! ")); - introP.createEl("strong", { text: "Powerful AI agents" }); - introP.appendChild( - document.createTextNode( - " in your vault for more advanced question answering and workflows while " - ) - ); - introP.createEl("strong", { - text: "keeping all your data stored locally", - }); - introP.appendChild(document.createTextNode(".")); - - container.createEl("h3", { text: "Stay Updated" }); - - const paragraph = container.createEl("p"); - paragraph.appendChild( - document.createTextNode( - "Join our waitlist at the website below to be notified when Copilot Plus is available! " - ) - ); - - paragraph.appendChild(document.createElement("br")); - paragraph.appendChild(document.createElement("br")); - - paragraph.createEl("strong", { - text: "Alpha access spots are limited. ", - }); - paragraph.appendChild(document.createTextNode("We'll ")); - paragraph.createEl("strong", { - text: "prioritize supporters who have donated", - }); - paragraph.appendChild( - document.createTextNode(" to the project through either GitHub Sponsors or buymeacoffee. ") - ); - paragraph.appendChild(document.createTextNode(" so please consider ")); - const donateLink = paragraph.createEl("a", { - href: "https://www.buymeacoffee.com/logancyang", - text: "donating now", - }); - donateLink.setAttribute("target", "_blank"); - donateLink.setAttribute("rel", "noopener noreferrer"); - paragraph.appendChild(document.createTextNode(" if you are interested!")); - - container.createEl("h3", { - text: "Learn More about Copilot Plus mode and join the waitlist here:", - }); - - const link = container.createEl("a", { - href: "https://obsidiancopilot.com", - text: "https://obsidiancopilot.com", - }); - link.setAttribute("target", "_blank"); - link.setAttribute("rel", "noopener noreferrer"); - } - - onClose() { - const { contentEl } = this; - contentEl.empty(); - } -} diff --git a/src/settings/components/CopilotPlusSettings.tsx b/src/settings/components/CopilotPlusSettings.tsx index 72e0e3ee..d0b5505a 100644 --- a/src/settings/components/CopilotPlusSettings.tsx +++ b/src/settings/components/CopilotPlusSettings.tsx @@ -1,13 +1,13 @@ +import { updateSetting, useSettingsValue } from "@/settings/model"; import React from "react"; import ApiSetting from "./ApiSetting"; -import { updateSetting, useSettingsValue } from "@/settings/model"; const CopilotPlusSettings: React.FC = () => { const settings = useSettingsValue(); return (
-

Copilot Plus (Alpha)

+

Copilot Plus

Copilot Plus brings powerful AI agent capabilities to Obsidian. Alpha access is limited to sponsors and early supporters. Learn more at{" "} diff --git a/src/settings/components/GeneralSettings.tsx b/src/settings/components/GeneralSettings.tsx index 02f77301..bca89ac0 100644 --- a/src/settings/components/GeneralSettings.tsx +++ b/src/settings/components/GeneralSettings.tsx @@ -75,7 +75,7 @@ const GeneralSettings: React.FC = () => { > - +

diff --git a/src/settings/v2/components/BasicSettings.tsx b/src/settings/v2/components/BasicSettings.tsx index 5a37813a..df248bb0 100644 --- a/src/settings/v2/components/BasicSettings.tsx +++ b/src/settings/v2/components/BasicSettings.tsx @@ -1,22 +1,22 @@ -import React, { useState } from "react"; -import { getModelKeyFromModel, updateSetting, useSettingsValue } from "@/settings/model"; -import { SettingItem } from "@/components/ui/setting-item"; -import { Button } from "@/components/ui/button"; -import { ArrowRight, ExternalLink, HelpCircle, Key } from "lucide-react"; -import { useTab } from "@/contexts/TabContext"; -import { COMMAND_NAMES, DEFAULT_OPEN_AREA, DISABLEABLE_COMMANDS } from "@/constants"; import { ChainType } from "@/chainFactory"; -import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover"; -import { getProviderLabel } from "@/utils"; -import { RebuildIndexConfirmModal } from "@/components/modals/RebuildIndexConfirmModal"; -import ApiKeyDialog from "./ApiKeyDialog"; -import { SettingSwitch } from "@/components/ui/setting-switch"; import { isCommandEnabled } from "@/commands"; +import { RebuildIndexConfirmModal } from "@/components/modals/RebuildIndexConfirmModal"; +import { Button } from "@/components/ui/button"; +import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover"; +import { SettingItem } from "@/components/ui/setting-item"; +import { SettingSwitch } from "@/components/ui/setting-switch"; +import { COMMAND_NAMES, DEFAULT_OPEN_AREA, DISABLEABLE_COMMANDS } from "@/constants"; +import { useTab } from "@/contexts/TabContext"; +import { getModelKeyFromModel, updateSetting, useSettingsValue } from "@/settings/model"; +import { getProviderLabel } from "@/utils"; +import { ArrowRight, ExternalLink, HelpCircle, Key } from "lucide-react"; +import React, { useState } from "react"; +import ApiKeyDialog from "./ApiKeyDialog"; const ChainType2Label: Record = { [ChainType.LLM_CHAIN]: "Chat", [ChainType.VAULT_QA_CHAIN]: "Vault QA (Basic)", - [ChainType.COPILOT_PLUS_CHAIN]: "Copilot Plus (Alpha)", + [ChainType.COPILOT_PLUS_CHAIN]: "Copilot Plus", }; interface BasicSettingsProps { @@ -96,7 +96,8 @@ const BasicSettings: React.FC = ({ indexVaultToVectorStore } Copilot Plus brings powerful AI agent capabilities to Obsidian.

- Alpha access is limited to sponsors and early supporters. + Alpha access is limited to sponsors and early supporters at the moment. + Officially launching in Jan 2025!

@@ -253,7 +254,67 @@ const BasicSettings: React.FC = ({ indexVaultToVectorStore } + Select the default chat mode + { + if (open) { + handlePopoverOpen("default-mode-help"); + } else { + handlePopoverClose("default-mode-help"); + } + }} + > + + handlePopoverOpen("default-mode-help")} + onMouseLeave={() => handlePopoverClose("default-mode-help")} + /> + + handlePopoverOpen("default-mode-help")} + onMouseLeave={() => handlePopoverClose("default-mode-help")} + > +
+
+
    +
  • + Chat: Regular chat mode for general conversations and + tasks. Free to use with your own API key. +
  • +
  • + Vault QA (Basic): Ask questions about your vault + content with semantic search. Free to use with your own API key. +
  • +
  • + Copilot Plus: Covers all features of the 2 free modes, + plus advanced paid features including chat context menu, advanced + search, AI agents, and more. Check out{" "} + + obsidiancopilot.com + {" "} + for more details. +
  • +
+
+
+
+
+
+ } value={settings.defaultChainType} onChange={(value) => updateSetting("defaultChainType", value as ChainType)} options={Object.entries(ChainType2Label).map(([key, value]) => ({ @@ -330,7 +391,7 @@ const BasicSettings: React.FC = ({ indexVaultToVectorStore } Manage Commands}