Gridix = Grid + Helix.
Navigate with hjkl, run SQL quickly, and keep onboarding available in-app (F1).
用 hjkl 导航、快速执行 SQL,并在应用内通过 F1 完成新手上手与数据库学习。
- Keyboard-first focus flow: sidebar, grid, SQL editor, toolbar. 键盘优先焦点流转:侧边栏、数据表格、SQL 编辑器、工具栏。
- Unified database UX: SQLite, PostgreSQL, MySQL/MariaDB. 统一数据库体验:SQLite、PostgreSQL、MySQL/MariaDB。
- Beginner-friendly onboarding: welcome hints + learning guide (
F1). 新手友好引导:欢迎页提示 + 学习指南(F1)。 - Practical security: encrypted credentials + SSH tunnel + SSL/TLS. 实用安全能力:凭据加密 + SSH 隧道 + SSL/TLS。
# Arch Linux (AUR)
paru -S gridix-bin
paru -S gridix-appimage
paru -S gridix
# Nix
# latest from default branch
nix run github:MCB-SMART-BOY/Gridix
nix profile install github:MCB-SMART-BOY/Gridix
# pinned release
nix run github:MCB-SMART-BOY/Gridix/v7.2.0
nix profile install github:MCB-SMART-BOY/Gridix/v7.2.0
# Homebrew (macOS/Linux)
brew tap MCB-SMART-BOY/gridix
brew install gridixDownload from / 从 GitHub Releases 下载:
| Platform | Arch | Artifact |
|---|---|---|
| Linux | x86_64 | gridix-linux-x86_64.tar.gz |
| Linux | x86_64 | gridix.AppImage |
| Windows | x86_64 | gridix-windows-x86_64.zip |
| macOS | arm64 | gridix-macos-arm64.tar.gz |
The source build uses the Rust nightly toolchain selected by rust-toolchain.toml. Install it with rustup toolchain install nightly --profile minimal --component rustfmt,clippy; record rustc --version when reporting build failures because nightly moves.
git clone https://github.com/MCB-SMART-BOY/Gridix.git
cd Gridix
cargo build --releaseLinux dependencies | Linux 依赖
# Debian/Ubuntu
sudo apt install libgtk-3-dev libxdo-dev
# Fedora/RHEL
sudo dnf install gtk3-devel libxdo-devel
# Arch Linux
sudo pacman -S gtk3 xdotool
# openSUSE
sudo zypper install gtk3-devel libxdo-devel- Press
Ctrl+Nto create the first connection.
按Ctrl+N创建第一个连接。 - New users can start with SQLite sample path first.
新手建议先走 SQLite 学习示例路径。 - Select a table in sidebar, navigate with
hjkl.
在侧边栏选表并用hjkl导航。 - Open SQL editor (
Ctrl+J), execute byCtrl+Enter(orF5while the SQL editor owns focus). 打开 SQL 编辑器(Ctrl+J),用Ctrl+Enter执行 SQL(SQL 编辑器拥有焦点时也可使用F5)。 - Press
F1to open Help & Learning.
按F1打开帮助与学习。
- Gridix uses a scope-aware, keyboard-first model. Gridix 采用作用域感知的键盘优先交互模型。
Tab / Shift+Tabare default bindings fornext_focus_area / prev_focus_area, not unconditional global-first keys.Tab / Shift+Tab是next_focus_area / prev_focus_area的默认绑定,不是无条件 global-first 按键。- Full area-by-area guide / 分区域完整指南: see the keyboard routing pipeline in
app/input/input_router/mod.rsand the/keybindingsskill
| Area | Description |
|---|---|
| Navigation / 导航 | Helix/Vim style movement across sidebar/grid/editor |
| SQL / 查询 | Highlight, autocomplete, history, execute, explain |
| Data / 数据 | Editable grid, filtering, import/export |
| Learning / 学习 | Tool quick start + database knowledge roadmap |
| Modeling / 建模 | ER diagram and relationship navigation |
| Security / 安全 | Encrypted credentials, SSH tunnel, SSL/TLS |
| Theming / 主题 | Built-in themes, default Tokyo Night Storm, optional system-theme following / 内置主题,默认 Tokyo Night Storm,可开启跟随系统主题 |
| Database | Typed runtime | Cancellation semantics |
|---|---|---|
| SQLite | Local file DB, bundled driver / 本地文件库,内置驱动 | The typed API accepts a cancellation token, but an already-running synchronous rusqlite statement is not interrupted. |
| PostgreSQL | Async typed execution; NUMERIC parameters and results preserve exact DbValue::Decimal text |
A cancellation token sends PostgreSQL CancelRequest through the driver's CancelToken, then waits for the executing query to finish with the cancellation result. |
| MySQL/MariaDB | Async typed execution + SSL/TLS options; temporal inputs reject nanoseconds at or above one second | A cancellation token keeps the execution connection's Conn::id, opens a separate TLS-configured control connection, sends KILL QUERY, then waits for the original query to finish. |
The public typed entry points are execute_typed and execute_typed_cancellable. The cancellable entry is cooperative: PostgreSQL and MySQL can request server-side cancellation; SQLite does not promise in-flight statement interruption.
execute_typed 与 execute_typed_cancellable 是公开的类型化执行入口。可取消入口采用协作式语义:PostgreSQL 和 MySQL 可以请求服务端取消;SQLite 不承诺中断已执行中的语句。
- Docs index / 文档索引: docs/README.md
- Changelog / 版本变更: docs/CHANGELOG.md
- Learning curriculum / 学习路线: docs/LEARNING_CURRICULUM.md
cargo run
cargo test
cargo clippy
cargo build --releaseSet the appropriate local test URL before running these explicit integration binaries. The tests are not ignored, and every command runs serially. The typed-E2E binaries use fixed table names, so serial execution prevents their tests from interfering. Use a disposable database; do not put a real credential in shell history or documentation.
运行以下显式集成测试前,请设置相应的本地测试 URL。测试未被标记为 ignored;每条命令均串行运行。typed E2E 二进制使用固定表名,串行运行可避免测试相互干扰。请使用可丢弃的数据库,不要把真实凭据写入 shell history 或文档。
GRIDIX_TEST_PG_URL='<PostgreSQL test URL>' \
cargo test --test postgres_typed_e2e -- --nocapture --test-threads=1
GRIDIX_TEST_PG_URL='<PostgreSQL test URL>' \
cargo test --test postgres_cancel_integration -- --nocapture --test-threads=1
GRIDIX_TEST_MYSQL_URL='<MySQL test URL>' \
cargo test --test mysql_typed_e2e -- --nocapture --test-threads=1
GRIDIX_TEST_MYSQL_URL='<MySQL test URL>' \
cargo test --test mysql_cancel_integration -- --nocapture --test-threads=1GitHub Actions runs the PostgreSQL and MySQL typed integration gates on pull requests, main, and v* tags, as well as by manual dispatch and a weekly schedule. Each gate preflights its required URL, uses its dedicated service container, and logs the serial test runs with --nocapture. The main CI workflow also uploads a clean Xvfb/X11 GUI smoke artifact with ra2_status=manual-required; it does not replace the manual SQLite GUI journey. Run scripts/gridix-sqlite-acceptance.sh <SHA> to create the isolated session and validate retained create, edit/save, reopen, and CSV/JSON/SQL evidence.
- Issues: https://github.com/MCB-SMART-BOY/Gridix/issues
- Discussions: https://github.com/MCB-SMART-BOY/Gridix/discussions
- Pull requests are welcome. / 欢迎提交 PR。
