diff --git a/Cargo.lock b/Cargo.lock index ab85ec9..341354c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1128,7 +1128,7 @@ checksum = "52560adf09603e58c9a7ee1fe1dcb95a16927b17c127f0ac02d6e768a0e25bc1" [[package]] name = "cursor-byok-desktop" -version = "0.1.0-beta.1" +version = "0.1.0-beta.2" dependencies = [ "axum", "cursor-server", diff --git a/apps/desktop/package-lock.json b/apps/desktop/package-lock.json index 0048af2..042fb05 100644 --- a/apps/desktop/package-lock.json +++ b/apps/desktop/package-lock.json @@ -1,12 +1,12 @@ { "name": "cursor-byok-desktop", - "version": "0.1.0-beta.1", + "version": "0.1.0-beta.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "cursor-byok-desktop", - "version": "0.1.0-beta.1", + "version": "0.1.0-beta.2", "license": "MIT", "dependencies": { "@floating-ui/dom": "^1.8.0", diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 7e37881..59e438d 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -1,6 +1,6 @@ { "name": "cursor-byok-desktop", - "version": "0.1.0-beta.1", + "version": "0.1.0-beta.2", "description": "Cursor BYOK desktop management application", "type": "module", "scripts": { diff --git a/apps/desktop/src-tauri/Cargo.toml b/apps/desktop/src-tauri/Cargo.toml index daf8239..b7c770f 100644 --- a/apps/desktop/src-tauri/Cargo.toml +++ b/apps/desktop/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cursor-byok-desktop" -version = "0.1.0-beta.1" +version = "0.1.0-beta.2" edition = "2021" publish = false diff --git a/apps/desktop/src-tauri/tauri.conf.json b/apps/desktop/src-tauri/tauri.conf.json index 0f6a03f..7d36928 100644 --- a/apps/desktop/src-tauri/tauri.conf.json +++ b/apps/desktop/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "Cursor BYOK", - "version": "0.1.0-beta.1", + "version": "0.1.0-beta.2", "identifier": "dev.cursorbyok.desktop", "build": { "beforeDevCommand": "npm run dev", diff --git a/apps/desktop/src/api.ts b/apps/desktop/src/api.ts index 486886e..186d6d7 100644 --- a/apps/desktop/src/api.ts +++ b/apps/desktop/src/api.ts @@ -97,6 +97,13 @@ export interface ProxySettingsInput { password?: string; } +export type TabMode = "public" | "direct" | "custom"; + +export interface TabSettings { + mode: TabMode; + address: string; +} + export interface OverviewMetrics { llm_calls: number; successful_calls: number; @@ -283,4 +290,6 @@ export const api = { clearStatisticsStorage: () => request("/settings/storage/statistics", { method: "DELETE" }), proxySettings: () => request("/settings/proxy"), setProxySettings: (settings: ProxySettingsInput) => request("/settings/proxy", { method: "PUT", body: JSON.stringify(settings) }), + tabSettings: () => request("/settings/tab"), + setTabSettings: (settings: TabSettings) => request("/settings/tab", { method: "PUT", body: JSON.stringify(settings) }), }; diff --git a/apps/desktop/src/components/cursor/CursorSettings.module.scss b/apps/desktop/src/components/cursor/CursorSettings.module.scss index 36dceed..170b663 100644 --- a/apps/desktop/src/components/cursor/CursorSettings.module.scss +++ b/apps/desktop/src/components/cursor/CursorSettings.module.scss @@ -1,5 +1,10 @@ @use "../../styles/typography" as type; +.page { + display: grid; + gap: 16px; +} + .gate { min-height: 250px; display: flex; diff --git a/apps/desktop/src/components/cursor/TabSettingsCard.module.scss b/apps/desktop/src/components/cursor/TabSettingsCard.module.scss new file mode 100644 index 0000000..39b7489 --- /dev/null +++ b/apps/desktop/src/components/cursor/TabSettingsCard.module.scss @@ -0,0 +1,51 @@ +@use "../../styles/typography" as type; + +.title { + min-width: 0; + display: flex; + align-items: center; + gap: 5px; +} + +.row { + min-height: 62px; + display: flex; + align-items: center; + justify-content: space-between; + gap: 20px; + padding: 12px 16px; + + & + & { + border-top: 1px solid var(--vscode-sideBar-border); + } +} + +.description { + min-width: 0; + display: grid; + gap: 5px; + + small { + color: var(--vscode-descriptionForeground); + font-size: type.$font-size-xs; + } +} + +.selectControl, +.addressInput { + width: min(300px, 44%); + flex: 0 0 auto; +} + +@media (max-width: 620px) { + .row { + align-items: stretch; + flex-direction: column; + gap: 10px; + } + + .selectControl, + .addressInput { + width: 100%; + } +} diff --git a/apps/desktop/src/components/cursor/TabSettingsCard.tsx b/apps/desktop/src/components/cursor/TabSettingsCard.tsx new file mode 100644 index 0000000..69d5a45 --- /dev/null +++ b/apps/desktop/src/components/cursor/TabSettingsCard.tsx @@ -0,0 +1,53 @@ +import cursorIconUrl from "../../assets/icons/cursor.svg"; +import type { TabMode, TabSettings } from "../../api"; +import { Button } from "../ui/Button"; +import { TextInput } from "../ui/FormControls"; +import { Icon } from "../ui/Icon"; +import { Select } from "../ui/Select"; +import { TitledCard } from "../ui/TitledCard"; +import styles from "./TabSettingsCard.module.scss"; + +export function TabSettingsCard({ settings, saving, onChange, onSave }: { + settings: TabSettings; + saving: boolean; + onChange: (settings: TabSettings) => void; + onSave: () => void; +}) { + return {t("TAB 设置")}} + action={} + > +
+
+ {t("TAB 选择")} + {t("控制 Cursor TAB 相关接口的连接方式。")} +
+
+