From 6eb3c730bb437ff1c286c750d924efc59c73f4a6 Mon Sep 17 00:00:00 2001 From: Xujiacheng Date: Sun, 18 Jan 2026 13:07:54 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=20BbSelect=20?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=EF=BC=8C=E5=AE=9E=E7=8E=B0=E4=B8=8B=E6=8B=89?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scripts/__pycache__/core.cpython-312.pyc | Bin 11748 -> 11751 bytes .../scripts/__pycache__/core.cpython-314.pyc | Bin 0 -> 12650 bytes .../__pycache__/design_system.cpython-312.pyc | Bin 27843 -> 27846 bytes .../__pycache__/design_system.cpython-314.pyc | Bin 0 -> 31300 bytes apps/extension/options.html | 2 +- apps/extension/src/lib/api.js | 2 +- apps/extension/src/options/OptionsApp.vue | 2 +- .../src/options/pages/ImportExportPage.vue | 32 +- apps/extension/src/popup/PopupApp.vue | 124 +++ apps/web/index.html | 2 +- apps/web/src/App.vue | 118 ++- apps/web/src/components/BbSelect.vue | 101 +++ apps/web/src/lib/api.js | 19 +- apps/web/src/pages/ImportExportPage.vue | 102 ++- apps/web/src/pages/LoginPage.vue | 96 ++- apps/web/src/pages/MyPage.vue | 124 +-- apps/web/src/pages/PublicPage.vue | 34 +- apps/web/src/router.js | 17 + apps/web/src/style.css | 726 +++++++++++++++++- package-lock.json | 5 +- packages/shared/src/package.json | 3 +- 21 files changed, 1346 insertions(+), 163 deletions(-) create mode 100644 .shared/ui-ux-pro-max/scripts/__pycache__/core.cpython-314.pyc create mode 100644 .shared/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-314.pyc create mode 100644 apps/web/src/components/BbSelect.vue diff --git a/.shared/ui-ux-pro-max/scripts/__pycache__/core.cpython-312.pyc b/.shared/ui-ux-pro-max/scripts/__pycache__/core.cpython-312.pyc index 0348f1b8cd240e045cf0ff2712511836c9e92094..1eda2a2525153e74074229174a09c6d403c070a8 100644 GIT binary patch delta 41 vcmaD7{XClcG%qg~0}#~D%HGI*iJRZq#VV$tC_gJTxg;i{G=B3-?%#?4Ce#lH delta 38 scmaDJ{Un7i&acPQGQlxa!JhQH{8D!0R>bJF8}}l diff --git a/.shared/ui-ux-pro-max/scripts/__pycache__/core.cpython-314.pyc b/.shared/ui-ux-pro-max/scripts/__pycache__/core.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5d2618680129db2e54cbdf015437a3a1f4341a7d GIT binary patch literal 12650 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 delta 40 ucmX?hlkxCPM()$Ryj%=Gu;6mWMs68a9#0pmn1Z7GtkmR^n9XLa6Vd?^)D2ev diff --git a/.shared/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-314.pyc b/.shared/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e5e299aadc3853a84b71867b722aad0e818115b3 GIT binary patch literal 31300 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 - BrowserBookmark Options + 云书签 选项

diff --git a/apps/extension/src/lib/api.js b/apps/extension/src/lib/api.js index af48a6b..aef6365 100644 --- a/apps/extension/src/lib/api.js +++ b/apps/extension/src/lib/api.js @@ -2,7 +2,7 @@ const BASE_URL = import.meta.env.VITE_SERVER_BASE_URL || "http://localhost:3001" export async function apiFetch(path, options = {}) { const headers = new Headers(options.headers || {}); - headers.set("Accept", "application/json"); + if (!headers.has("Accept")) headers.set("Accept", "application/json"); if (!(options.body instanceof FormData) && options.body != null) { headers.set("Content-Type", "application/json"); diff --git a/apps/extension/src/options/OptionsApp.vue b/apps/extension/src/options/OptionsApp.vue index 2649dfa..3638cd4 100644 --- a/apps/extension/src/options/OptionsApp.vue +++ b/apps/extension/src/options/OptionsApp.vue @@ -5,7 +5,7 @@ import { RouterLink, RouterView } from "vue-router";