Syngnat eaa45f17fd Release/0.5.7 (#226)
* 🎨 style(DataGrid): 清理冗余代码与静态分析告警

- 类型重构:通过修正 React Context 的函数签名解决了 void 类型的链式调用错误
- 代码精简:利用 Nullish Coalescing (??) 优化组件配置项降级逻辑,剥离无意义的隐式 undefined 赋值
- 工具链适配:适配 IDE 拼写检查与 Promise strict rules,确保全文件零警

* 🔧 fix(db/kingbase_impl): 修复标识符无条件加双引号导致SQL语法报错

- quoteKingbaseIdent 改为条件引用,仅对大写字母、保留字、特殊字符的标识符添加双引号
- 新增 kingbaseIdentNeedsQuote 判断标识符是否需要引用
- 新增 isKingbaseReservedWord 检测常见SQL保留字
- 补充 TestQuoteKingbaseIdent、TestKingbaseIdentNeedsQuote 单测覆盖各场景
- refs #176

* 🔧 fix(release,db/kingbase_impl): 修复金仓默认 schema 并静默生成 DMG

- Kingbase:在 current_schema() 为 public 时探测候选 schema,并通过 DSN search_path 重连,兼容未限定 schema 的查询
- 候选优先级:数据库名/用户名同名 schema(存在性校验),否则仅在“唯一用户 schema 有表”场景兜底
- 避免连接污染:每次 Connect 重置探测结果,重连成功后替换连接并关闭旧连接
- 打包脚本:create-dmg 增加 --sandbox-safe,避免构建时自动弹出/打开挂载窗口
- 产物格式:强制 --format UDZO,并将 rw.*.dmg/UDRW 中间产物转换为可分发 DMG
- 校验门禁:增加 hdiutil verify,失败时保留 .app 便于排查,同时修正卷图标探测并补 ad-hoc 签名

* 🐛 fix(connection/redis): 修复 Redis URI 用户名处理导致认证失败

- Redis URI 解析回填 user 字段,兼容 redis://user:pass@... 与 redis://:pass@...
- 生成 URI 时按需输出 user/password,避免丢失用户名信息
- Redis 类型默认用户名置空,并在构建配置时清理历史默认 root
- 避免 go-redis 触发 ACL AUTH(user, pass) 导致 WRONGPASS
- refs #212

* 🔧 fix(release,ssh): 修复 SSH 误判连接成功并纠正 DMG 打包结构

- SSH 缓存 key 纳入认证指纹(password/keyPath),避免改错凭证仍复用旧连接/端口转发
- MySQL/MariaDB/Doris:SSH 隧道建立失败直接返回错误,不再回退直连导致测试误判成功
- 新增最小单测覆盖 SSH cache key 与 UseSSH 异常路径
- build-release.sh:create-dmg 使用 staging 目录作为 source,避免 DMG 根目录变成 Contents
- refs #213

* fix: KingBase 连接后自动设置 search_path,修复自定义 schema 下表查询报 relation does not exist 的问题 (#215)

* 🔧 fix(driver/kingbase,mongodb): 修复外置驱动事务引用与连接测试链路问题

- 金仓外置驱动链路增加表名与变更字段归一化,修复 ApplyChanges 场景下双引号转义异常导致的 SQL 语法错误
- 新增金仓公共标识符工具并复用到 kingbase_impl 与 optional_driver_agent_impl,统一处理多重转义、schema.table 拆分与引用规范
- 金仓代理连接后自动探测并设置 search_path,降低查询时必须手写 schema 前缀的概率
- MongoDB 连接参数改为显式 host/hosts 优先,避免被 URI 中 localhost 覆盖;代理链路保留目标地址不再改写为本地地址
- 连接测试增加前后端超时收敛与日志增强,避免长时间转圈;连接错误文案在未启用 TLS 时移除误导性的“SSL”前缀
- 统一日志级别为 INFO/WARN/ERROR,默认日志目录收敛到 ~/.GoNavi/Logs,并补充驱动构建脚本 build-driver-agents.sh

* 🔧 fix(release/sidebar): 统一跨平台UPX压缩并修复PG函数列表查询兼容性

- 构建脚本新增通用 UPX 压缩函数,覆盖 macOS、Linux、Windows 产物
- 本地打包改为强制压缩策略:未安装 upx、压缩失败或校验失败直接终止
- macOS 打包在签名前压缩 .app 主程序并执行 upx -t 校验
- Linux 打包在生成 tar.gz 前压缩可执行文件并执行 upx -t 校验
- GitHub Release 与测试构建流程补齐 macOS/Linux/Windows 的 upx 安装与压缩步骤
- PostgreSQL/PG-like 函数元数据查询增加多路兼容 SQL,修复函数列表不显示问题
- refs #221
- refs #222

---------

Co-authored-by: Syngnat <yangguofeng919@gmail.com>
Co-authored-by: 凌封 <49424247+fengin@users.noreply.github.com>
2026-03-12 17:40:35 +08:00
2026-03-12 17:40:35 +08:00
2026-03-03 14:35:17 +08:00
2026-03-12 17:40:35 +08:00
2026-03-12 17:40:35 +08:00
2026-03-12 17:40:35 +08:00
2026-03-12 17:40:35 +08:00
2026-03-07 17:15:30 +08:00
2026-03-07 17:15:30 +08:00
2026-01-31 17:30:48 +08:00
2026-03-06 14:30:07 +08:00
2026-03-06 14:30:07 +08:00

GoNavi - A Modern Lightweight Database Client

Go Version Wails Version React Version License Build Status

Language: English | 简体中文

GoNavi is a modern, high-performance, cross-platform database client built with Wails (Go) and React. It delivers native-like responsiveness with low resource usage.

Compared with many Electron-based clients, GoNavi is typically smaller in binary size (around 10MB class), starts faster, and uses less memory.


Project Overview

GoNavi is designed for developers and DBAs who need a unified desktop experience across multiple databases.

  • Native-performance architecture: Wails (Go + WebView) with lightweight runtime overhead.
  • Large dataset usability: virtualized rendering and optimized DataGrid workflows for high-volume tables.
  • Unified connectivity: URI build/parse, SSH tunnel, proxy support, and on-demand driver activation.
  • Production-oriented workflow: SQL editor, object management, batch export/backup, sync tools, execution logs, and update checks.

Supported Data Sources

Built-in: available out of the box.
Optional driver agent: install/enable via Driver Manager first.

Category Data Source Driver Mode Typical Capabilities
Relational MySQL Built-in Schema browsing, SQL query, data editing, export/backup
Relational PostgreSQL Built-in Schema browsing, SQL query, data editing, object management
Relational Oracle Built-in Query execution, object browsing, data editing
Cache Redis Built-in Key browsing, command execution, encoding/view switch
Relational MariaDB Optional driver agent Querying, object management, data editing
Relational Doris Optional driver agent Querying, object browsing, SQL execution
Search Sphinx Optional driver agent SphinxQL querying and object browsing
Relational SQL Server Optional driver agent Schema browsing, SQL query, object management
File-based SQLite Optional driver agent Local DB browsing, editing, export
File-based DuckDB Optional driver agent Large-table query, pagination, file-DB workflow
Domestic DB Dameng Optional driver agent Querying, object browsing, data editing
Domestic DB Kingbase Optional driver agent Querying, object browsing, data editing
Domestic DB HighGo Optional driver agent Querying, object browsing, data editing
Domestic DB Vastbase Optional driver agent Querying, object browsing, data editing
Document MongoDB Optional driver agent Document query, collection browsing, connection management
Time-series TDengine Optional driver agent Time-series schema browsing and querying
Columnar Analytics ClickHouse Optional driver agent Analytical query, object browsing, SQL execution
Extensibility Custom Driver/DSN Custom Extend to more data sources via Driver + DSN

📸 Screenshots

image image image
image image image

Key Features

Performance

  • Smooth interaction under load: optimized table interaction (including column resize workflow on large datasets).
  • Virtualized rendering: keeps large result sets responsive.

Data Management (DataGrid)

  • In-place cell editing.
  • Batch insert/update/delete with transaction-oriented submit/rollback.
  • Large-field popup editor.
  • Context actions (set NULL, copy/export, etc.).
  • Smart read/write mode switching based on query context.
  • Export formats: CSV, Excel (XLSX), JSON, Markdown.

SQL Editor

  • Monaco Editor core.
  • Context-aware completion for databases/tables/columns.
  • Multi-tab query workflow.

Batch Export / Backup

  • Database-level and table-level batch export/backup.
  • Scope-aware operation flow to reduce mistakes.

Connectivity

  • URI generation/parsing.
  • SSH tunnel support.
  • Proxy support.
  • Config import/export (JSON).
  • Optional driver management and activation.

Redis Tools

  • Multi-view value rendering (auto/raw text/UTF-8/hex).
  • Built-in command execution panel.

Observability and Update

  • SQL execution logs with timing information.
  • Startup/scheduled/manual update checks.

UI/UX

  • Ant Design 5 based interface.
  • Light/Dark themes.
  • Flexible sidebar and layout behavior.

Tech Stack

  • Backend: Go 1.24 + Wails v2
  • Frontend: React 18 + TypeScript + Vite
  • UI: Ant Design 5
  • State Management: Zustand
  • Editor: Monaco Editor

Installation and Run

Prerequisites

  • Go 1.21+
  • Node.js 18+
  • Wails CLI: go install github.com/wailsapp/wails/v2/cmd/wails@latest

Development Mode

# Clone
git clone https://github.com/Syngnat/GoNavi.git
cd GoNavi

# Start development with hot reload
wails dev

Build

# Build for current platform
wails build

# Clean build (recommended before release)
wails build -clean

Artifacts are generated in build/bin.

Cross-Platform Release (GitHub Actions)

The repository includes a release workflow. Push a v* tag to trigger automated build and release. Release notes are generated automatically from merged pull requests and categorized by .github/release.yaml.

Target artifacts include:

  • macOS (AMD64 / ARM64)
  • Windows (AMD64)
  • Linux (AMD64, WebKitGTK 4.0 and 4.1 variants)

Troubleshooting

macOS: "App is damaged and cant be opened"

Without Apple notarization, Gatekeeper may block startup.

  1. Move GoNavi.app to Applications.
  2. Open Terminal.
  3. Run:
sudo xattr -rd com.apple.quarantine /Applications/GoNavi.app

Or right-click the app in Finder and choose Open with Control key flow.

Linux: missing libwebkit2gtk / libjavascriptcoregtk

GoNavi depends on WebKitGTK runtime libraries.

# Debian 13 / Ubuntu 24.04+
sudo apt-get update
sudo apt-get install -y libgtk-3-0 libwebkit2gtk-4.1-0 libjavascriptcoregtk-4.1-0

# Ubuntu 22.04 / Debian 12
sudo apt-get update
sudo apt-get install -y libgtk-3-0 libwebkit2gtk-4.0-37 libjavascriptcoregtk-4.0-18

If you use Linux artifacts with the -WebKit41 suffix, prefer Debian 13 / Ubuntu 24.04+.


Contributing

Issues and pull requests are welcome.

For the full workflow, branch model, and maintainer sync rules, see:

External contributors should open pull requests directly against main.

License

Licensed under Apache-2.0.

Description
现代化、原生体验的数据库管理工具,支持 MySQL、PostgreSQL、SQLite 等数据库,采用 Go 后端 + Wails + React 前端构建,启动快、体积小、性能强。
Readme Apache-2.0 17 MiB
Languages
TypeScript 53.4%
Go 43.6%
Java 1.2%
Shell 0.6%
JavaScript 0.5%
Other 0.7%