[Feat]: Import connections from HeidiSQL
Maintainers usually reply within 1 day
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 66/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- rust, typescript
- Domain
- database, developer-experience
Research direction
Start with the ForeignAppImporter trait and registration in src-tauri/src/connection_import/mod.rs, then read dbeaver.rs, tableplus.rs, types.rs and driver_map.rs to follow the existing importer patterns. Build a small fixture from a recent HeidiSQL export with fake values and add parser tests in importer_tests.rs; run the two Cargo commands listed in the issue. Done means the importer maps supported sessions and folders, skips unsupported types with a warning, imports SSH settings, and previews that passwords are omitted.
Written by the indexing model from the issue text.
Description
Prerequisites
- I have written a descriptive issue title
- I have searched existing issues to ensure the feature has not already been requested
🚀 Feature Proposal
I'd like to add HeidiSQL as a source in Import connections… → Import from App.
HeidiSQL can export all its settings to a text file (File → Export settings); the portable version keeps the same format in portable_settings.txt. Each line holds a key, a type and a value separated by <|||>, and session keys look like Servers\<session name>\Host. The importer reads the file picked by the user and maps each session to a connection: name, host, port, user, databases and the network type (MySQL/MariaDB, PostgreSQL, SQL Server, SQLite), plus SSH tunnel settings when present. Session folders become Tabularis groups.
Passwords are stored obfuscated in that file; decoding them can be a follow-up, so this first version imports connections without passwords.
Motivation
HeidiSQL is very popular on Windows for MySQL, MariaDB and SQL Server. Users with many sessions there are much more likely to try Tabularis if they can bring them over in one step.
Example
These lines from an exported settings file:
Servers\Customers\Production\Host<|||>1<|||>db.example.com
Servers\Customers\Production\Port<|||>1<|||>3306
Servers\Customers\Production\User<|||>1<|||>app
produce a connection Production in the group Customers, host db.example.com:3306, user app.
Acceptance criteria
- HeidiSQL appears in the Import from App list and asks for the exported settings file.
- Host, port, user and the selected databases are imported.
- The network type is mapped to the matching Tabularis driver; unsupported types are skipped with a warning.
- Session folders are mapped to Tabularis groups.
- SSH tunnel settings are imported when present.
- Passwords are not imported in this first version, and the preview says so.
- Parser tests use a small fixture file.
Where to start
src-tauri/src/connection_import/mod.rs: theForeignAppImportertrait andall_importers(), where the new importer is registered.src-tauri/src/connection_import/dbeaver.rsandtableplus.rs: complete importers to copy the structure from.src-tauri/src/connection_import/types.rs(ImportedConnection,ImportedSsh,ImportedSsl) anddriver_map.rs(mapping external database types to Tabularis drivers).src-tauri/src/connection_import/importer_tests.rs: fixture-based tests.- The import modal (
packages/web-ui/src/components/modals/ImportFromAppModal.tsx) lists sources from the backend, so it should not need changes beyond an optional icon. - The file format described above is a summary: please check key names and value types against a real export from a recent version of the app, and build the test fixture from it (with fake hosts and users).
Contributor notes
- Follow the repo rules in
.rules/(Rust, testing). - Keep the importer in
src-tauri/src/connection_import/; it must not depend on Tauri. The import modal and the desktop/web commands already list importers fromall_importers(), so no transport code should be needed. - Add parser tests with a small fixture next to the existing ones in
src-tauri/src/connection_import/importer_tests.rs. Never commit real hosts or credentials. - Run
cargo test connection_importandcargo check --no-default-featuresfromsrc-tauri/. - Questions? Ask here or on Discord.
- Dominant language
- TypeScript
- Stars
- 5.1k
- Forks
- 335
- Avg merge
- 1d 6h
- Merged PRs (30d)
- 260
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from TabularisDB/tabularis
-
[Feat]: Align the Web password login page with Tabularis designPossibly taken @Detoy claimed this 1 day ago. Openfeature request
TabularisDB/tabularis#1341 · 2 comments · 1 assignee ·
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
TabularisDB/tabularis#1328 ·
Maintainers usually reply within 1 day
-
[Bug]: OpenAI compatible provider requires API key, even when not actually required by providerPossibly taken @dyk1454683243-sudo claimed this 1 day ago. Openbug
Difficulty 3/5 1-2 days Newbie friendliness 58/100
TabularisDB/tabularis#1323 · 2 comments · 1 assignee ·
Maintainers usually reply within 1 day
-
feature request good first issue
Difficulty 4/5 3-5 days Newbie friendliness 55/100
TabularisDB/tabularis#1314 ·
Maintainers usually reply within 1 day
-
[Feat]: Import connections from NavicatPossibly taken @fixfon claimed this today. Openfeature request good first issue
Difficulty 4/5 3-5 days Newbie friendliness 65/100
TabularisDB/tabularis#1312 ·
Maintainers usually reply within 1 day
All issues in TabularisDB/tabularis
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
area:desktop area:ui bug platform:macos
Difficulty 2/5 1-3 hours Newbie friendliness 67/100
anthropics/claude-code#106183 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
-
Difficulty 1/5 1-3 hours Newbie friendliness 76/100
Maintainers usually reply within 1 day
-
core: OpenRouter BYOK sessions record cost = 0 since v2.2.0 (ignores cost_details.upstream_inference_cost)Possibly taken A pull request linked to this issue is open or already merged. Openreproduced
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
anomalyco/opencode#60558 · 1 comment ·
Maintainers usually reply within 1 day