Skip to content

Commit 7c176ef

Browse files
committed
2 parents 4423096 + 7f27bf8 commit 7c176ef

17 files changed

Lines changed: 144 additions & 136 deletions

CHANGELOG.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,29 @@
66
- Enhanced the AI assistant with robust new workflow capabilities and developer rules.
77
- Upgraded the SQL autocomplete engine for smarter, context-aware query suggestions.
88
- Integrated advanced code editing features across all query and table builder views.
9+
- fix issues
10+
- remove deperecated baseUrl
911

1012
## [0.2.0] - 2026-03-21
13+
1114
- Introduced a keybindings engine with `when`-expression context guards, a token-bucket notification system (toast + output panel routing), a lazy-loaded SQL formatter, a theme token engine, a connection URL parser, and a viewport-aware popup positioning utility.
1215
- Added QueryBuilder tab (visual WHERE/JOIN/ORDER builder with generated SQL preview), Snippets panel with persistent snippet store, Triggers view, Stored Procedures/Routines view, View editor, Events view, and Users management view.
1316
- Implemented full PostgreSQL command suite (`pg_connect`, `pg_query`, `pg_get_databases_info`, `pg_get_tables_info`, `pg_list_columns`, `pg_get_processes`, `pg_kill_process`, and more). Added SQLite and MSSQL backend stubs.
1417
- Added XML and Excel (`.xlsx`) export modules for query results and table data.
1518
- Resolved table header transparency, QueryBuilder infinite render loop, missing `ActivityView` type variant, `SnippetsPanel` double-import breaking code-splitting, and PostgreSQL boolean wire-value coercion.
1619

1720
## [0.1.10] - 2026-03-21
21+
1822
- Fix errors on website deployment via cloudflare pages.
1923

2024
## [0.1.9] - 2026-03-20
25+
2126
- Replaced the libssh2-based SSH implementation with russh, a pure Rust SSH library. This change improves security, reduces dependencies, and provides better async support.
2227
- Added docker support for SSH connections, you can now pass container name with ssh to automatically get the host ip address for you.
2328
- Update project's website, new pages are implemented such as Documentation, Changelogs, Contact Us, About Us and Download Page.
2429

2530
## [0.1.8] - 2026-03-17
31+
2632
- **Explorer & Database View:** Auto-loads tables for filtered databases, hides empty databases, and reorganizes database view tabs for a cleaner navigation flow.
2733
- **Connection Flow & SSH Compatibility:** Adds connection cancellation support, improves SSH key handling, and expands compatibility with OpenSSH key formats.
2834
- **SSH Tunneling:** Simplifies the SSH tunnel implementation with a single-threaded bidirectional copy model to reduce connection complexity.
@@ -31,12 +37,14 @@
3137
- **Maintenance:** Ignores test artifacts to keep the release and repository noise down.
3238

3339
## [0.1.7] - 2026-03-16
40+
3441
- **Workspace & Layout:** Added comprehensive project setup and layout management, and removed the legacy results tab flow to simplify the editor workspace.
3542
- **Grid & Query UX:** Improved table data grid stability with fixed-width sticky columns and clearer selected-cell styling for better scanability.
3643
- **Stability & Polish:** Resolved store-selector crashes caused by nullish coalescing and bundled broader UI/UX fixes surfaced during internal testing.
3744
- **Contributor Experience:** Updated contribution guidelines to cover linting and pre-commit hook expectations.
3845

3946
## [0.1.6] - 2026-03-15
47+
4048
- **[Breaking] Vault & Security:** Migrated to secure, per-installation vault encryption via the OS credential store. Added Content Security Policy (CSP) and restricted file-system permissions.
4149
- **Networking & SSH:** Overhauled SSH tunneling to fix memory leaks and thread hanging. Replaced basic host key logging with TOFU (Trust On First Use) verification and added connection auto-reconnects.
4250
- **Query & Data Operations:** Added "Explain Plan", sorting, and results virtualization for performance. Grid data can now be exported to JSON/CSV/SQL, and CSV imports are fully transactional with progress tracking.
@@ -47,6 +55,7 @@
4755
- Create ci.yml
4856

4957
## [0.1.5] - 2026-03-14
58+
5059
- Exclude main branch from changelog workflow
5160
- Add environment variable for Node.js version
5261
- Update manual-multi-platform-build.yml
@@ -55,11 +64,13 @@
5564
- Create dependabot.yml
5665

5766
## [0.1.4] - 2026-03-14
67+
5868
- Add GitHub Actions workflow to update changelog
59-
- Enhance manual build workflow for versioning and changelog
69+
- Enhance manual build workflow for versioning and changelog
6070
- feat(changelog): introduce automated changelog management
6171

6272
## [0.1.3] - 2026-03-14
73+
6374
- feat: add clear_ai_logs function to Tauri API
6475
- chore: bump version to v0.1.2
6576
- feat: initial multi-platform CI/CD build workflow

CLAUDE.md

Lines changed: 48 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,25 @@ WorkGrid Studio is a cross-platform desktop database management app built with *
66

77
## Tech Stack
88

9-
| Layer | Technology |
10-
|---|---|
11-
| Desktop shell | Tauri 2 |
12-
| Frontend framework | React 19 |
13-
| Language | TypeScript 5.8 (strict) |
14-
| Build tool | Vite 7 |
15-
| CSS | TailwindCSS v4 (PostCSS) |
16-
| State management | Zustand 5 |
17-
| Icons | lucide-react, react-icons |
18-
| Class utility | clsx + tailwind-merge (via `cn()`) |
19-
| Package manager | pnpm 10 (required) |
20-
| Rust async runtime | tokio |
21-
| Rust DB driver | mysql_async (rustls TLS) |
9+
| Layer | Technology |
10+
| ------------------ | ---------------------------------- |
11+
| Desktop shell | Tauri 2 |
12+
| Frontend framework | React 19 |
13+
| Language | TypeScript 5.8 (strict) |
14+
| Build tool | Vite 7 |
15+
| CSS | TailwindCSS v4 (PostCSS) |
16+
| State management | Zustand 5 |
17+
| Icons | lucide-react, react-icons |
18+
| Class utility | clsx + tailwind-merge (via `cn()`) |
19+
| Package manager | pnpm 10 (required) |
20+
| Rust async runtime | tokio |
21+
| Rust DB driver | mysql_async (rustls TLS) |
2222

2323
---
2424

2525
## Repository Layout
2626

27-
```
27+
```bash
2828
workgrid-studio/
2929
├── src/ # React/TypeScript frontend (desktop app UI)
3030
│ ├── app/
@@ -221,6 +221,7 @@ pnpm version:bump:major # Bump major, sync all files
221221
**`.github/workflows/manual-multi-platform-build.yml`** — manually triggered via `workflow_dispatch`.
222222

223223
Workflow steps:
224+
224225
1. Prompts for bump level (patch / minor / major).
225226
2. Bumps and syncs version files (`package.json``tauri.conf.json`, `Cargo.toml`).
226227
3. Promotes `[Unreleased]` in `CHANGELOG.md` to the new version heading.
@@ -239,20 +240,20 @@ All native capabilities are exposed as **Tauri commands** defined in `src-tauri/
239240

240241
### Registered commands
241242

242-
| Command | Purpose |
243-
|---|---|
244-
| `app_read_file` / `app_write_file` / `app_delete_file` | JSON persistence in `~/.workgrid-studio/data/` |
245-
| `app_get_data_dir` | Returns the data directory path |
246-
| `read_profile_log` / `clear_profile_log` | Read/clear per-profile log files |
247-
| `db_connect` / `db_disconnect` | Open/close a MySQL connection pool keyed by `profile_id` |
248-
| `db_list_databases` / `db_list_tables` / `db_list_columns` | Schema introspection |
249-
| `db_get_databases_info` / `db_get_tables_info` | HeidiSQL-style rich metadata |
250-
| `db_get_variables` / `db_set_variable` | MySQL server variables (SESSION/GLOBAL) |
251-
| `db_get_status` | `SHOW GLOBAL STATUS` |
252-
| `db_get_processes` / `db_kill_process` | Process list management |
253-
| `db_execute_query` | Execute DDL/DML (no result rows) |
254-
| `db_query` | Execute queries and return `QueryResultSet[]` |
255-
| `db_get_collations` | List available collations |
243+
| Command | Purpose |
244+
| ---------------------------------------------------------- | -------------------------------------------------------- |
245+
| `app_read_file` / `app_write_file` / `app_delete_file` | JSON persistence in `~/.workgrid-studio/data/` |
246+
| `app_get_data_dir` | Returns the data directory path |
247+
| `read_profile_log` / `clear_profile_log` | Read/clear per-profile log files |
248+
| `db_connect` / `db_disconnect` | Open/close a MySQL connection pool keyed by `profile_id` |
249+
| `db_list_databases` / `db_list_tables` / `db_list_columns` | Schema introspection |
250+
| `db_get_databases_info` / `db_get_tables_info` | HeidiSQL-style rich metadata |
251+
| `db_get_variables` / `db_set_variable` | MySQL server variables (SESSION/GLOBAL) |
252+
| `db_get_status` | `SHOW GLOBAL STATUS` |
253+
| `db_get_processes` / `db_kill_process` | Process list management |
254+
| `db_execute_query` | Execute DDL/DML (no result rows) |
255+
| `db_query` | Execute queries and return `QueryResultSet[]` |
256+
| `db_get_collations` | List available collations |
256257

257258
### DbState
258259

@@ -262,7 +263,7 @@ The Rust backend maintains a `DbState` struct with a `Mutex<HashMap<String, Pool
262263

263264
Persisted files live in `~/.workgrid-studio/` (Linux/macOS) or `%USERPROFILE%\.workgrid-studio\` (Windows):
264265

265-
```
266+
```bash
266267
~/.workgrid-studio/
267268
├── data/
268269
│ └── profiles.json # Saved connection profiles
@@ -281,16 +282,16 @@ Persisted files live in `~/.workgrid-studio/` (Linux/macOS) or `%USERPROFILE%\.w
281282

282283
All state is managed through Zustand stores. Each store is colocated in `src/state/`:
283284

284-
| Store | Responsibility |
285-
|---|---|
286-
| `appStore` | Theme (`light`/`dark`/`system`), toast notifications, hotkeys enabled flag, focused container |
287-
| `layoutStore` | Activity bar view, sidebar/panel dimensions, **editor split tree**, tab management |
288-
| `profilesStore` | Connection profiles — loaded from disk on startup, debounce-saved on mutation |
289-
| `schemaStore` | Cached DB/table/column metadata |
290-
| `queryHistoryStore` | Per-profile query history (persisted) |
291-
| `resultsStore` | Query result sets (in-memory, not persisted) |
292-
| `modelsStore` | AI model provider configuration |
293-
| `tasksStore` | Task tracker items |
285+
| Store | Responsibility |
286+
| ------------------- | --------------------------------------------------------------------------------------------- |
287+
| `appStore` | Theme (`light`/`dark`/`system`), toast notifications, hotkeys enabled flag, focused container |
288+
| `layoutStore` | Activity bar view, sidebar/panel dimensions, **editor split tree**, tab management |
289+
| `profilesStore` | Connection profiles — loaded from disk on startup, debounce-saved on mutation |
290+
| `schemaStore` | Cached DB/table/column metadata |
291+
| `queryHistoryStore` | Per-profile query history (persisted) |
292+
| `resultsStore` | Query result sets (in-memory, not persisted) |
293+
| `modelsStore` | AI model provider configuration |
294+
| `tasksStore` | Task tracker items |
294295

295296
### Editor Layout (Split Pane Tree)
296297

@@ -305,6 +306,7 @@ Each tab carries an optional `meta: Record<string, string>` for domain data (e.g
305306
### Application Shell
306307

307308
`Workbench` renders:
309+
308310
- **Activity bar** (left, fixed 48px): Explorer, Servers, AI Models, Tasks icons + Sidebar/Panel toggles
309311
- **Primary sidebar** (resizable, default 260px): switches content by `activeView`
310312
- **Editor area**: renders the `SplitTree` recursively via `EditorNode`
@@ -335,6 +337,7 @@ import { useLayoutStore } from "@/state/layoutStore";
335337
## TypeScript Configuration
336338

337339
Strict mode is fully enabled. The compiler enforces:
340+
338341
- `strict: true`
339342
- `noUnusedLocals: true`
340343
- `noUnusedParameters: true`
@@ -424,12 +427,12 @@ Marketing and SEO website for WorkGrid Studio. Built with **Vite + React**. Depl
424427

425428
Contains always-on rules and step-by-step task workflows for AI-assisted development:
426429

427-
| File | Purpose |
428-
|---|---|
429-
| `.agent/rules/coding-standards.md` | Senior Desktop Architect persona, priorities, anti-patterns |
430-
| `.agent/workflows/add-editor-tab.md` | End-to-end guide for adding a new tab type |
431-
| `.agent/workflows/add-tauri-command.md` | Adding a Rust command + TypeScript wrapper |
432-
| `.agent/workflows/add-zustand-store.md` | Store creation with persistence and loading guards |
430+
| File | Purpose |
431+
| --------------------------------------- | ----------------------------------------------------------- |
432+
| `.agent/rules/coding-standards.md` | Senior Desktop Architect persona, priorities, anti-patterns |
433+
| `.agent/workflows/add-editor-tab.md` | End-to-end guide for adding a new tab type |
434+
| `.agent/workflows/add-tauri-command.md` | Adding a Rust command + TypeScript wrapper |
435+
| `.agent/workflows/add-zustand-store.md` | Store creation with persistence and loading guards |
433436

434437
---
435438

CODE_OF_CONDUCT.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ representative at an online or offline event.
6060

6161
Instances of abusive, harassing, or otherwise unacceptable behavior may be
6262
reported to the community leaders responsible for enforcement at
63-
jericho@skiddph.com.
63+
<jericho@skiddph.com>.
6464
All complaints will be reviewed and investigated promptly and fairly.
6565

6666
All community leaders are obligated to respect the privacy and security of the
@@ -116,13 +116,13 @@ the community.
116116

117117
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
118118
version 2.0, available at
119-
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
119+
<https://www.contributor-covenant.org/version/2/0/code_of_conduct.html>.
120120

121121
Community Impact Guidelines were inspired by [Mozilla's code of conduct
122122
enforcement ladder](https://github.com/mozilla/diversity).
123123

124124
[homepage]: https://www.contributor-covenant.org
125125

126126
For answers to common questions about this code of conduct, see the FAQ at
127-
https://www.contributor-covenant.org/faq. Translations are available at
128-
https://www.contributor-covenant.org/translations.
127+
<https://www.contributor-covenant.org/faq>. Translations are available at
128+
<https://www.contributor-covenant.org/translations>.

CONTRIBUTING.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,17 +71,20 @@ pnpm tauri dev
7171
## Submitting a Pull Request
7272

7373
1. **Fork** the repository and create a branch from `main`:
74+
7475
```bash
7576
git checkout -b feat/your-feature-name
7677
```
7778

7879
2. **Make your changes.** Keep commits focused — one logical change per commit.
7980

8081
3. **Validate** before pushing:
82+
8183
```bash
8284
pnpm lint
8385
pnpm build
8486
```
87+
8588
This runs ESLint, `tsc`, the Vite build, and version consistency checks. Fix all errors before opening a PR.
8689

8790
4. **Pre-commit hooks** run automatically after `pnpm install`.
@@ -121,14 +124,15 @@ pnpm tauri dev
121124

122125
Use the [Conventional Commits](https://www.conventionalcommits.org/) format:
123126

124-
```
127+
```bash
125128
<type>(<scope>): <short summary>
126129
```
127130

128131
Common types: `feat`, `fix`, `refactor`, `style`, `docs`, `chore`, `ci`.
129132

130133
Examples:
131-
```
134+
135+
```bash
132136
feat(query-tab): add explain plan view
133137
fix(session): handle reconnect on connection drop
134138
docs: update contributing guide

README.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ WorkGrid Studio is a cross-platform desktop database management app built with *
44

55
## Monorepo Structure
66

7-
```
7+
```bash
88
workgrid-studio/
99
├── src/ # React/TypeScript frontend (desktop app UI)
1010
├── src-tauri/ # Rust Tauri backend (native shell, DB driver, IPC commands)
@@ -33,7 +33,7 @@ Install these once on your machine before developing.
3333

3434
### 1) Node.js and pnpm
3535

36-
1. Install Node.js (LTS): https://nodejs.org/
36+
1. Install Node.js (LTS): <https://nodejs.org/>
3737
2. Enable Corepack and activate pnpm:
3838

3939
```bash
@@ -53,7 +53,7 @@ Install these once on your machine before developing.
5353
#### Windows
5454

5555
1. Install **Visual Studio Build Tools 2022** (required for `x86_64-pc-windows-msvc`):
56-
https://visualstudio.microsoft.com/visual-cpp-build-tools/
56+
<https://visualstudio.microsoft.com/visual-cpp-build-tools/>
5757
Select the `Desktop development with C++` workload.
5858
2. Install Rustup:
5959
- Option A (recommended):
@@ -63,7 +63,7 @@ Install these once on your machine before developing.
6363
```
6464

6565
- Option B:
66-
Download and run `rustup-init.exe` from https://rustup.rs/
66+
Download and run `rustup-init.exe` from <https://rustup.rs/>
6767

6868
3. Set stable MSVC toolchain:
6969

@@ -105,7 +105,7 @@ Install these once on your machine before developing.
105105
### 3) Tauri system prerequisites
106106

107107
Install platform-specific dependencies required by Tauri:
108-
https://v2.tauri.app/start/prerequisites/
108+
[https://v2.tauri.app/start/prerequisites/](https://v2.tauri.app/start/prerequisites/)
109109

110110
---
111111

@@ -190,6 +190,7 @@ These are handled automatically by CI — run them locally only when needed.
190190
**`.github/workflows/manual-multi-platform-build.yml`** — manually triggered via `workflow_dispatch`.
191191

192192
Workflow steps:
193+
193194
1. Prompts for bump level (`patch` / `minor` / `major`).
194195
2. Bumps and syncs version files across `package.json`, `tauri.conf.json`, and `Cargo.toml`.
195196
3. Promotes the `[Unreleased]` changelog section to the new version.

SECURITY.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,11 @@ To help us triage and resolve the issue quickly, please include:
3333

3434
## Response Timeline
3535

36-
| Step | Target timeframe |
37-
| ---- | ---------------- |
38-
| Acknowledgement | Within **48 hours** |
39-
| Initial assessment | Within **7 days** |
40-
| Fix & release | Depends on severity; critical issues are prioritised |
36+
| Step | Target timeframe |
37+
| ------------------ | ---------------------------------------------------- |
38+
| Acknowledgement | Within **48 hours** |
39+
| Initial assessment | Within **7 days** |
40+
| Fix & release | Depends on severity; critical issues are prioritised |
4141

4242
We will keep you informed of our progress throughout the process.
4343

src/components/layout/Workbench.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1365,7 +1365,7 @@ function BottomPanel({ isSecondary }: { isSecondary?: boolean }) {
13651365
<th className="py-2 px-3 font-normal min-w-[200px]">
13661366
Payload
13671367
</th>
1368-
<th className="py-2 px-3 font-normal min-w-[300px]">
1368+
<th className="py-2 px-3 font-normal min-w-75">
13691369
Response
13701370
</th>
13711371
</tr>

src/components/ui/FindToolbar.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ export const FindToolbar: React.FC<FindToolbarProps> = ({
4848
if (!isOpen) return null;
4949

5050
return (
51-
<div className="absolute top-2 right-6 z-[100] flex items-center gap-1 p-1 bg-popover border rounded-md shadow-xl animate-in fade-in slide-in-from-top-1">
51+
<div className="absolute top-2 right-6 z-100 flex items-center gap-1 p-1 bg-popover border rounded-md shadow-xl animate-in fade-in slide-in-from-top-1">
5252
<div className="relative flex items-center">
5353
<Search className="absolute left-2 w-3 h-3 text-muted-foreground" />
5454
<input

0 commit comments

Comments
 (0)