From b3542cb458f9014bc255fcbd6b2f4740e8070afa Mon Sep 17 00:00:00 2001 From: logan Date: Wed, 14 Oct 2026 20:51:59 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E6=A0=B9=E7=BA=A7=20src/src-tauri/?= =?UTF-8?q?server=20=E5=B8=83=E5=B1=80=20+=20=E8=AE=BE=E7=BD=AE=E5=B7=A6?= =?UTF-8?q?=E5=AF=BC=E8=88=AA=E6=90=9C=E7=B4=A2=20+=20=E8=AF=AD=E8=A8=80?= =?UTF-8?q?=E5=88=87=E6=8D=A2=20+=20DataGrip=20=E9=AB=98=E4=BA=AE=20+=20?= =?UTF-8?q?=E6=96=AD=E8=BF=9E=E6=A8=AA=E5=B9=85=E7=A7=BB=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 8 +++--- Makefile | 2 +- docs/BACKLOG.md | 10 +++++++ index.html | 14 ++++++++++ public/favicon.svg | 7 +++++ public/icons/databases/dameng.svg | 1 + public/icons/databases/elasticsearch.svg | 1 + public/icons/databases/gaussdb.svg | 1 + public/icons/databases/influxdb.svg | 1 + public/icons/databases/kingbase.svg | 1 + public/icons/databases/mariadb.svg | 1 + public/icons/databases/mongodb.svg | 1 + public/icons/databases/mysql.svg | 1 + public/icons/databases/oceanbase.svg | 1 + public/icons/databases/opengauss.svg | 1 + public/icons/databases/oracle.svg | 1 + public/icons/databases/polardb.png | Bin 0 -> 3908 bytes public/icons/databases/postgresql.svg | 1 + public/icons/databases/redis.svg | 1 + public/icons/databases/sqlite.svg | 7 +++++ public/icons/databases/sqlserver.svg | 1 + public/icons/databases/tdsql.svg | 15 +++++++++++ public/icons/databases/tidb.svg | 1 + public/icons/databases/zookeeper.svg | 1 + public/icons/icon-512.png | Bin 0 -> 59414 bytes run.sh | 12 ++++----- server/bin/opsxdb-server | Bin 47708450 -> 47708450 bytes src/SettingsModal.tsx | 33 ++++++++++++++++++----- src/SqlEditor.tsx | 30 ++++++++++----------- src/Workspace.tsx | 24 ----------------- tsconfig.tsbuildinfo | 2 +- vite.config.ts | 26 ++++++++++++++++++ 32 files changed, 148 insertions(+), 58 deletions(-) create mode 100644 index.html create mode 100644 public/favicon.svg create mode 100644 public/icons/databases/dameng.svg create mode 100644 public/icons/databases/elasticsearch.svg create mode 100644 public/icons/databases/gaussdb.svg create mode 100644 public/icons/databases/influxdb.svg create mode 100644 public/icons/databases/kingbase.svg create mode 100644 public/icons/databases/mariadb.svg create mode 100644 public/icons/databases/mongodb.svg create mode 100644 public/icons/databases/mysql.svg create mode 100644 public/icons/databases/oceanbase.svg create mode 100644 public/icons/databases/opengauss.svg create mode 100644 public/icons/databases/oracle.svg create mode 100644 public/icons/databases/polardb.png create mode 100644 public/icons/databases/postgresql.svg create mode 100644 public/icons/databases/redis.svg create mode 100644 public/icons/databases/sqlite.svg create mode 100644 public/icons/databases/sqlserver.svg create mode 100644 public/icons/databases/tdsql.svg create mode 100644 public/icons/databases/tidb.svg create mode 100644 public/icons/databases/zookeeper.svg create mode 100644 public/icons/icon-512.png create mode 100644 vite.config.ts diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3a80b64..a957d12 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,11 +16,11 @@ jobs: with: go-version: '1.25' - name: Build - run: cd apps/server && go build ./... + run: cd server && go build ./... - name: Vet - run: cd apps/server && go vet ./... + run: cd server && go vet ./... - name: Test - run: cd apps/server && go test ./... + run: cd server && go test ./... web: name: Web + core packages @@ -59,4 +59,4 @@ jobs: libxdo-dev - uses: dtolnay/rust-toolchain@stable - name: Cargo check - run: cd apps/desktop/src-tauri && cargo check + run: cd src-tauri && cargo check diff --git a/Makefile b/Makefile index a0ed23e..15efe71 100644 --- a/Makefile +++ b/Makefile @@ -34,7 +34,7 @@ test: $(MAKE) test-ui test-go: - cd apps/server && go test ./... + cd server && go test ./... test-ui: npm run test:ui --if-present diff --git a/docs/BACKLOG.md b/docs/BACKLOG.md index b08a3db..3be8a54 100644 --- a/docs/BACKLOG.md +++ b/docs/BACKLOG.md @@ -228,3 +228,13 @@ | 文档/官网口径统一:删「Web 自托管」形态卡与双形态表述;FAQ 明确「浏览器不能操作」 | 已做 | > 验收口径:以上「已做」项均经 桌面 App 实测(本地 MySQL/Redis 单机 + 3 主 Cluster)或单测覆盖(38 例全绿);测试侧复跑按 §11 流程。 + +## 23. 三项目状态收敛 + opsxdb 设置重构与 DataGrip 高亮(2026-10-14) + +| 项 | 状态 | +|----|------| +| 三项目基线提交(防再丢) | opsxdb 456fa69 / opsxapi 6452026 / opsxshell be151cb;迁移/官网拆分等改动已全部入库。目录还原事件教训=每完成一步立即 commit | +| opsxdb 设置重构(对齐 opsxshell) | 左导航:搜索框 + 图标/主标题/副文案三层 + 选中左强调条;宽 176→208;语言切换(自动/中文/English)进常规分区 | +| 「连接已断开」横幅移除 | 已做:整条顶部红色横幅删除(状态行已有提示,顶部横幅不友好);重连能力保留 | +| SQL 高亮 DataGrip 风 | 已做:关键字亮蓝加粗 / 字符串红 / 数字浅绿 / 注释灰斜体 / 标识符浅灰白;light 同构对齐 IntelliJ | +| opsxapi 迁移 | 回滚到可用基线 6452026(apps 布局保留)——用户确认只做 opsxdb;迁移半成品已弃 | diff --git a/index.html b/index.html new file mode 100644 index 0000000..da0ae42 --- /dev/null +++ b/index.html @@ -0,0 +1,14 @@ + + + + + + + + OpsxDB + + +
+ + + diff --git a/public/favicon.svg b/public/favicon.svg new file mode 100644 index 0000000..8accdbc --- /dev/null +++ b/public/favicon.svg @@ -0,0 +1,7 @@ + + + + + + diff --git a/public/icons/databases/dameng.svg b/public/icons/databases/dameng.svg new file mode 100644 index 0000000..5315156 --- /dev/null +++ b/public/icons/databases/dameng.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/icons/databases/elasticsearch.svg b/public/icons/databases/elasticsearch.svg new file mode 100644 index 0000000..0da0d70 --- /dev/null +++ b/public/icons/databases/elasticsearch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/icons/databases/gaussdb.svg b/public/icons/databases/gaussdb.svg new file mode 100644 index 0000000..f115a85 --- /dev/null +++ b/public/icons/databases/gaussdb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/icons/databases/influxdb.svg b/public/icons/databases/influxdb.svg new file mode 100644 index 0000000..a6ed507 --- /dev/null +++ b/public/icons/databases/influxdb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/icons/databases/kingbase.svg b/public/icons/databases/kingbase.svg new file mode 100644 index 0000000..9d7f076 --- /dev/null +++ b/public/icons/databases/kingbase.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/icons/databases/mariadb.svg b/public/icons/databases/mariadb.svg new file mode 100644 index 0000000..33794b1 --- /dev/null +++ b/public/icons/databases/mariadb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/icons/databases/mongodb.svg b/public/icons/databases/mongodb.svg new file mode 100644 index 0000000..8660ced --- /dev/null +++ b/public/icons/databases/mongodb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/icons/databases/mysql.svg b/public/icons/databases/mysql.svg new file mode 100644 index 0000000..853c55f --- /dev/null +++ b/public/icons/databases/mysql.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/icons/databases/oceanbase.svg b/public/icons/databases/oceanbase.svg new file mode 100644 index 0000000..2ace405 --- /dev/null +++ b/public/icons/databases/oceanbase.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/icons/databases/opengauss.svg b/public/icons/databases/opengauss.svg new file mode 100644 index 0000000..6f46971 --- /dev/null +++ b/public/icons/databases/opengauss.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/icons/databases/oracle.svg b/public/icons/databases/oracle.svg new file mode 100644 index 0000000..f5449b2 --- /dev/null +++ b/public/icons/databases/oracle.svg @@ -0,0 +1 @@ +Oracle \ No newline at end of file diff --git a/public/icons/databases/polardb.png b/public/icons/databases/polardb.png new file mode 100644 index 0000000000000000000000000000000000000000..197ba7528072fb1790712ce7c9f4cf1a5fa6941e GIT binary patch literal 3908 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 \ No newline at end of file diff --git a/public/icons/databases/redis.svg b/public/icons/databases/redis.svg new file mode 100644 index 0000000..1981b34 --- /dev/null +++ b/public/icons/databases/redis.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/icons/databases/sqlite.svg b/public/icons/databases/sqlite.svg new file mode 100644 index 0000000..dde0558 --- /dev/null +++ b/public/icons/databases/sqlite.svg @@ -0,0 +1,7 @@ + + SQLite + + + + + diff --git a/public/icons/databases/sqlserver.svg b/public/icons/databases/sqlserver.svg new file mode 100644 index 0000000..b23e83d --- /dev/null +++ b/public/icons/databases/sqlserver.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/icons/databases/tdsql.svg b/public/icons/databases/tdsql.svg new file mode 100644 index 0000000..65627ff --- /dev/null +++ b/public/icons/databases/tdsql.svg @@ -0,0 +1,15 @@ + + + + + + + Tencent Cloud + + + + + + + + diff --git a/public/icons/databases/tidb.svg b/public/icons/databases/tidb.svg new file mode 100644 index 0000000..ee0b723 --- /dev/null +++ b/public/icons/databases/tidb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/icons/databases/zookeeper.svg b/public/icons/databases/zookeeper.svg new file mode 100644 index 0000000..a281bab --- /dev/null +++ b/public/icons/databases/zookeeper.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/icons/icon-512.png b/public/icons/icon-512.png new file mode 100644 index 0000000000000000000000000000000000000000..165a23b89ca814a4b9ee1f1819d141ed770b8966 GIT binary patch literal 59414 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 literal 0 HcmV?d00001 diff --git a/run.sh b/run.sh index 4467eda..4cd2ca0 100755 --- a/run.sh +++ b/run.sh @@ -10,14 +10,14 @@ # ./run.sh stop|restart|status|help # # 产品形态:浏览器 = 官网/docs;操作 = 桌面 Tauri。 -# apps/web 的 Vite 仅作桌面打包/devUrl 源,不要用浏览器当工作台。 +# src 的 Vite 仅作桌面打包/devUrl 源,不要用浏览器当工作台。 set -euo pipefail PROJECT_NAME="OpsxDB" SERVER_PORT="${OPSXDB_SERVER_PORT:-8788}" WEB_PORT="${OPSXDB_WEB_PORT:-5174}" -SERVER_DIR="apps/server" +SERVER_DIR="server" SERVER_BIN="opsxdb-server" SERVER_LABEL="com.opsx.db.server" WEB_LABEL="com.opsx.db.web" @@ -119,9 +119,9 @@ ensure_npm() { warning "缺少 node_modules,正在 npm install..." npm install fi - if [ ! -d "$SCRIPT_DIR/apps/desktop/node_modules" ]; then + if [ ! -d "$SCRIPT_DIR/node_modules" ]; then warning "desktop 缺少依赖,正在安装..." - npm --prefix "$SCRIPT_DIR/apps/desktop" install + npm install fi } @@ -183,7 +183,7 @@ start_vite_for_desktop() { ensure_npm kill_port "$WEB_PORT" # Vite 用 nohup:launchctl submit 在本机对 npm -w 经常交不出进程(web.log 空、40s 超时) - nohup /bin/bash -lc "export PATH=\"$NODE_BIN_DIR:/opt/homebrew/bin:/usr/local/bin:\$PATH\"; cd \"$SCRIPT_DIR\" && exec npm run dev -w @opsxdb/web" >>"$WEB_LOG" 2>&1 >"$WEB_LOG" 2>&1 {JWY zQrW9ksd{Fs)KS;&dR7Pl)vhw0#u;tt%6jr3Q?gdO!ZNHRX-K3B2<4BsRpQlYLFVNhNz)xm>RC4RJ1aw z7!|AHlv%~A1T{h>s*x&5C94!QN{v>jYK$7I#;G)wt};}n8m}g(EHzP0Qj^sbHC0Vh z)71<$Q_WJd)f|gTB%m4JhfV_QESyYwO(yd z8`UPYS>>w&wMA`J+thZoL+w<%)NWO%_NcvTpDI$tYQHK`2h>4zNF7#3)KPUzeWs49 z6Y8WYRj1Txbw-_4=hS(1L0wdr)Ma%=T~*iAb#+7CRJT-_x~=Z0yXv00uO6s}>T~sl z`ci$RzEZy9Bo~s|#PwHp&LcLVKs9)79^_zOF-l(_go%&t9 zS0B_L>QD7ieNum^ztukrboX-<7@!MXL1m}{RiPSGhZ^wTd9|2oLmj9K z^}rhHLj!0Cji50!fu_(5nu874f*rJgmS7L9pf$9Cw$KjRgM&q>-U^GT8$oXF9`Pm* zZ+EwtIA@c0Oq`3+Ar>EK5%~ON7DaPm>=UzD`Jux}XDkFAWhqS~Lv#*P@i-)7p z+0p10VRZ3vHToDmbE-XZv=AM@37o+QF5n7o;0_+(30~k0KF|?5fiHB1F3=UaL3ii@ zJ;4wBp%(-|AoPYH2!;>{g)ry?eW4$OLj?4PNEiSEVGs<4Autq%!ElIzXfQzx#6ldH zAs!N71SG;pNP=WYfl)9TQeg~?g>jGu>5u`LFdimA7EFXmFd3%6RG0?SVFt{ESuh*s zKsL;Uc`zRqz(QCAiy;S=z*5MCWw0Dpz)DyJd9WJRz*<-b>tO?IgiWv+@}U5>z*g7> z+hGUngk7*33SkfIg?&&2#jqbr-~b$iLvR?5z)?5`pTTiB0VkmpPQht7183nJoQDf= z5iY@HxB^$<8eE4Pa1(Ap8Qg|Da2M{ueRu#5;dA%`zJ#yfYxo8p!ME@od=HP|3H$(0 z;Tb%KAK@qX8D79k_yvB2SMVFWhBxpQ-ofwi9zMVy@F#qPPw*G~4gXjysP@R9!2%3W z4lJQORDg<539O(pRDr5c4XQ&8s0p>8Hq?Q-P!Fu3J~V)a&cz`E(fj9U-N9Y8;&>6ZwSLg=ap$GH? zKk$cM5CDPD8-gGhLLd~vpbzwgeh>~3&>tdU01SjdFc^lwP#6ZoAqt|w1Thc`abSjc zNPrQL2qPg0k|6~~!DvW@F)$X!K^mk(24uo`m;hNY5hlT8m;zH_8cc^7FcW6MY?uSt zFc;>*d{_VrVG%5b99RNNAs3dxa##T?VHM=TYFGnnVI8c84X_b5!Dh&Z0@wmuVH<3R z9k3I2!EPvoJ+K${K@k+gekg$ha1ai`VK@Ru;h3RR&!1uQ=>PLyu#ta(Lympeaf3Jk zC!rKh!D%=HXW<;2hYN5KF2QBE0$1T0T!$NQ6K+A7q0~O?w!yc2*SK4E+`?0RjU{$( z=RVsNSh(+6lBIFP>w3Ax=IZDB&6+zuKG9&6YgZUC_=b0<6H8~sHne>^O%BXZ$VGio2ItKRn<3@Z+Kg`@&A$?yg7< zeeyELuIR2o+=KguQoEuDhEq*!3WCadzVB~ekeXEILx-%OEv?<^j_s40>ep;|VBWho Oc~?pe*B=;c9R3CPNt12> delta 3819 zcmb`}(A#i~9kPW4sss-H?w ziOQ;yRDYGM2B?85MGaD^DoqVmL)1_;Obu7*YJ|#AnQElUQlr#pHAan9bTvcGRI^mJnyu!jxoV!8uX5A^m8%x2MQX8HqL!*x>b$z3E~-oFvbv(Ks%z@Hx}k2WTk5vDqwcDE>b`oQzEls@ zSL%^^te&W^Rk8X;eXG7x->VL>M5{j6T8U({>$M*XVZs^8S_>YaM8 zKBzy`NA*elss2)btIz76IePm!3Jg#JNPy=d0EpUO_PzPM0F4Tki&;S}jBWMgwpeZzi=HO;iq`$%@{(9F0Ka0s| z_Ov7>`g&TE{d{~Ayp5hF-$Y-dSF)F9f+gAH>zV9lwvt z!Y0@ZTVN|}gYB>bcET>$4SS#f_QF2c4+r2N6v81m3`gK7d;!PcIGlhYI0>iVG@OC6 za1PGH1-J;8;4)l+t8fjj!wt9zx8OG1fxB=I?!yE45+1@=@CY8m6Zjg6;T!lCzJu@K z2Y3q4;7524FW@J52|vRt_yu0W8~7F8!f)_9yo2}f0serG@Cp8ezu<594FA~7aVR!u zumJ;4X6pVzy)eU9dL!Z zP!H-u184}1pfNOorqB$UgB!R*3-ACVn7|C4-~|@&1|RSRKk$c^&xav01Si_7zC-127_S;425AZ9MWL~WI!g2ge({ZqhSn;g>f(*Ccs3P1e0M3OoeGM z9cI8xm<8D|8|J`VmUZiA;T S?(WaBFQpY3u01fgy8R37$&Z`> diff --git a/src/SettingsModal.tsx b/src/SettingsModal.tsx index c90ce3d..eac6af5 100644 --- a/src/SettingsModal.tsx +++ b/src/SettingsModal.tsx @@ -82,6 +82,7 @@ export function SettingsModal({ onClose }: { onClose: () => void }) { const openConnectionList = useWorkspaceStore((s) => s.openConnectionList); const [drivers, setDrivers] = useState(null); + const [navSearch, setNavSearch] = useState(""); const [version, setVersion] = useState(""); useEffect(() => { @@ -99,19 +100,37 @@ export function SettingsModal({ onClose }: { onClose: () => void }) { return (
- {/* 左导航 */} -