Compare commits
117 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4d5ca19b47 | |||
| a0e70636a1 | |||
| 13e139e023 | |||
| 1f7d03e67a | |||
| 0b1f662e99 | |||
| e5f36b0f66 | |||
| 0eccb12744 | |||
| f2d3240153 | |||
| 9fb4302000 | |||
| e3f94f1eba | |||
| 4e13d8dffd | |||
| 20e5efa711 | |||
| 6378740051 | |||
| b8ce7a667b | |||
| 281ca18d90 | |||
| 1725de6ace | |||
| 0ad7c03db0 | |||
| 1cdd0d113b | |||
| a0fae43690 | |||
| 04ac766125 | |||
| 9ac26467c0 | |||
| cbfc038839 | |||
| 7ae6462da0 | |||
| 09a3e5b90f | |||
| 1cddd17017 | |||
| 8fdc3a0428 | |||
| 18f10fc1b4 | |||
| 18331ae007 | |||
| f08242e93c | |||
| 23965230e2 | |||
| e43b261752 | |||
| f9b4cb71a5 | |||
| 96c05641bd | |||
| 2c5d1946ec | |||
| a6cbc5a9ed | |||
| 6008ae44a2 | |||
| 99096b2360 | |||
| 0e92459779 | |||
| a13eaaf523 | |||
| dca8d277d3 | |||
| 15c739c0b9 | |||
| fc2da972ef | |||
| e45eea7111 | |||
| 1e62d79c07 | |||
| c74c5ae5c0 | |||
| b0092c4a6e | |||
| 5ce6368c4a | |||
| 3e7e54da4b | |||
| 9f80d687b2 | |||
| 96411e877f | |||
| ac7e078c02 | |||
| e13314f5dc | |||
| b50c3e738a | |||
| 54ad6015b7 | |||
| 40e84ac230 | |||
| 767eaa0a47 | |||
| bb594e768c | |||
| 516bd99c4d | |||
| 571bfcf4b6 | |||
| 26f7a11d80 | |||
| 6fb8d1ba0c | |||
| 21588021d3 | |||
| 7441e0c15b | |||
| 142f3f6bf4 | |||
| 19ddb1c956 | |||
| 97467eae4d | |||
| 17c37b6568 | |||
| 57237ef2e8 | |||
| 164f5a071d | |||
| ac46b16d0e | |||
| b9d114a2d8 | |||
| b368457247 | |||
| fb940d5f60 | |||
| 6d1e671e44 | |||
| b5149c4efa | |||
| f0f642b6b0 | |||
| 7c62abb352 | |||
| 4f1c48b55d | |||
| 37f9307db1 | |||
| 14e7ebb59c | |||
| 14510545d4 | |||
| 906cff2e57 | |||
| bf28495b1f | |||
| 98b78ab1e6 | |||
| 4394c8a50a | |||
| 9fb5bdad78 | |||
| d2ec12798e | |||
| 5270dd00bc | |||
| 35f28fa5ed | |||
| 5ea969e10c | |||
| d0becd0c3c | |||
| 1c81444645 | |||
| d7c3bfd1f5 | |||
| 0f1cc014d7 | |||
| 6ac8c3e67b | |||
| 546681a0ef | |||
| 679d1140cc | |||
| 60d71104e8 | |||
| 8d8374be24 | |||
| 95a1bfeea5 | |||
| 8597f270f6 | |||
| d32ab82d73 | |||
| b6d1cafe54 | |||
| 3911d7d66c | |||
| be594cb1a5 | |||
| 8a93f163c4 | |||
| e82d0a5dd2 | |||
| 4b3fb783c4 | |||
| e8030a9579 | |||
| a94a330345 | |||
| 8ce03cbed6 | |||
| b76fad9512 | |||
| a9158c3a0c | |||
| dc31787526 | |||
| ff7484079e | |||
| 6e1f9ca1e1 | |||
| ac56f5e6c8 |
11
.gitignore
vendored
11
.gitignore
vendored
@@ -1,8 +1,5 @@
|
|||||||
testdata/
|
testdata/
|
||||||
liblcl-*.zip
|
qbolt
|
||||||
liblcl.so
|
qbolt.exe
|
||||||
liblcl.dll
|
qbolt.linux64.tar.xz
|
||||||
yvbolt
|
qbolt.win64.zip
|
||||||
yvbolt.exe
|
|
||||||
yvbolt.linux64.tar.xz
|
|
||||||
yvbolt.win64.zip
|
|
||||||
190
CHANGELOG.md
Normal file
190
CHANGELOG.md
Normal file
@@ -0,0 +1,190 @@
|
|||||||
|
# Changelog
|
||||||
|
|
||||||
|
2025-12-20 v2.0.0
|
||||||
|
|
||||||
|
- Merge yvbolt and QBolt together
|
||||||
|
- App: Show application version in main window titlebar
|
||||||
|
|
||||||
|
2025-12-20 v0.11.0 (yvbolt)
|
||||||
|
|
||||||
|
- Badger: Change encryption configuration options (**BREAKING**)
|
||||||
|
- SSH Agent: Initial support, including lock/unlock
|
||||||
|
- Badger, SQLite: Fix "all files" spec when choosing an export file path
|
||||||
|
- Bolt: Support import/export as zip archive
|
||||||
|
- Support SSH agents when using SSH tunnels (e.g. for Redis or Mongo)
|
||||||
|
|
||||||
|
2025-12-17 v0.10.1 (yvbolt)
|
||||||
|
|
||||||
|
- Fix mixed Qt 5 / Qt 6 syntax
|
||||||
|
- Build release binaries with Go1.26
|
||||||
|
- [⬇️ Download here](https://git.ivysaur.me/code.ivysaur.me/yvbolt/releases/tag/v0.10.1)
|
||||||
|
|
||||||
|
2025-12-16 v0.10.0 (yvbolt)
|
||||||
|
|
||||||
|
- MongoDB: Initial support, including SSH tunnel, managing collections, traversing BSON documents, and querying
|
||||||
|
- LotusDB: Initial support, including editing
|
||||||
|
- Bitcask: Initial support, including editing and backup
|
||||||
|
- RoseDB: Initial support, including editing
|
||||||
|
- Badger: Fix k/v column display, support editing
|
||||||
|
- LMDB: Support editing, add warning for destructive actions
|
||||||
|
- LevelDB: Support editing
|
||||||
|
- Pebble: Support editing
|
||||||
|
- Starskey: Fix k/v column display, support editing
|
||||||
|
- Redis: Bump driver version v9.16.0 -> v9.17.2
|
||||||
|
- Bolt: Add warning for destructive actions
|
||||||
|
- Connection manager: When saving, use the database's preferred name
|
||||||
|
- App: Add hex viewer for binary data if it is not valid UTF-8
|
||||||
|
- App: Use virtualized table renderer
|
||||||
|
- App: Use multiple plug-in typed column stores in table backend
|
||||||
|
- App: Fix graphical flicker when editing connections on Windows
|
||||||
|
- App: Set up icon and exe properties on Windows
|
||||||
|
- App: Embed version number in release builds
|
||||||
|
- App: Show all driver versions as a virtual data table
|
||||||
|
- App: Show unsaved-changes warning also when changing database
|
||||||
|
- App: Fix rich text formatting appearing when pasting into the query window
|
||||||
|
|
||||||
|
2025-12-02 v0.9.0 (yvbolt)
|
||||||
|
|
||||||
|
- LMDB: Initial support, including multi-database mode, data editing, and managing child databases
|
||||||
|
- Starskey: Initial support
|
||||||
|
- Freedesktop.org Secret Service: Initial support, including unlocking collections and creating child collections
|
||||||
|
- App: Use global toolbar style
|
||||||
|
- App: Add connection manager, encrypting credentials with AEAD AES256-GCM using OS keychain
|
||||||
|
- App: Offer to save valid quick-connection to the connection manager
|
||||||
|
- App: Add 'About Qt' menu option
|
||||||
|
- App: Fixed file extension filter for database files with no extension
|
||||||
|
- App: Fixed background colour for Properties area on different OSes
|
||||||
|
- App: Fixed libpng warnings about greyscale image data for embedded logo images
|
||||||
|
- App: Fixed issue with non-UTF8 child database names
|
||||||
|
- Debconf: Improve navigation speed by splitting applications into virtual tables
|
||||||
|
- SSH: Redesign options to pick only one of the available auth methods
|
||||||
|
- Fixed running release binary on Debian 12
|
||||||
|
- [⬇️ Download here](https://git.ivysaur.me/code.ivysaur.me/yvbolt/releases/tag/v0.9.0)
|
||||||
|
|
||||||
|
2025-11-23 v0.8.0 (yvbolt)
|
||||||
|
|
||||||
|
- Port from [liblcl](https://github.com/ying32/liblcl) to [MIQT Qt 6](https://github.com/mappu/miqt)
|
||||||
|
- Badger: Upgrade v4.2.0 -> v4.8.0
|
||||||
|
- Pebble: Upgrade v1.0.0 -> v1.1.5
|
||||||
|
- SQLite: Upgrade v1.14.22 -> v1.14.32
|
||||||
|
- Redis: Upgrade v9.5.3 -> v9.16.0
|
||||||
|
- Bolt: Upgrade v1.4.0-alpha.1 -> v1.4.3
|
||||||
|
- Bolt: Fix child buckets appearing in data area
|
||||||
|
- Badger, Pebble, Debconf: Remove redundant "Data" navigation layer
|
||||||
|
- Badger: Support encrypted databases
|
||||||
|
- Badger: Support readonly databases
|
||||||
|
- Badger: Add context-menu actions for backup, restore, and compact
|
||||||
|
- Pebble: Support readonly databases
|
||||||
|
- LevelDB: Add LevelDB database integration
|
||||||
|
- Redis: Support SSH tunnel
|
||||||
|
- SQLite: Allow editing the primary key column
|
||||||
|
- App: New style connection dialog
|
||||||
|
- App: Updated keyboard shortcuts (Ctrl+O to open new connection, F5 to refresh, F9 to execute query)
|
||||||
|
- App: Add confirmation when refreshing the data table if there are uncommitted changes
|
||||||
|
- [⬇️ Download here](https://git.ivysaur.me/code.ivysaur.me/yvbolt/releases/tag/v0.8.0)
|
||||||
|
|
||||||
|
2025-05-04 1.1.0 (qbolt)
|
||||||
|
|
||||||
|
- New feature to import/export database as zip archive
|
||||||
|
- Upgrade to Qt 6
|
||||||
|
- Add keyboard shortcuts for refresh
|
||||||
|
- Improve High DPI support
|
||||||
|
- Rebuild artefacts with miqt v0.10.0, etcd-io/bbolt v1.4.0, go 1.23, Qt 6.8 (win64)
|
||||||
|
- [⬇ Download here](https://git.ivysaur.me/code.ivysaur.me/qbolt/releases/tag/v1.1.0)
|
||||||
|
|
||||||
|
2024-10-05 1.0.3 (qbolt)
|
||||||
|
|
||||||
|
- Port from hybrid Go/C++ to now using [MIQT](https://github.com/mappu/miqt)
|
||||||
|
- Switch Windows build to win64
|
||||||
|
- Rebuild artefacts with miqt v0.5.0, etcd-io/bbolt v1.3.11, go 1.19 (deb12), go 1.23 (win64)
|
||||||
|
- [⬇ Download here](https://git.ivysaur.me/code.ivysaur.me/qbolt/releases/tag/v1.0.3)
|
||||||
|
|
||||||
|
2024-07-18 v0.7.0 (yvbolt)
|
||||||
|
|
||||||
|
- SQLite, Bolt: Initial support for editing data (insert, per-cell update, delete)
|
||||||
|
- SQLite: Add context menu actions for compact (vacuum), export, and drop table
|
||||||
|
- App: New grid widget
|
||||||
|
- App: Add refresh button
|
||||||
|
- App: Bigger window size, use icons for toolbars, better UI colours for Windows
|
||||||
|
- App: Prevent submitting blank queries to database
|
||||||
|
- Refactor database interface and error handling
|
||||||
|
- [⬇️ Download here](https://git.ivysaur.me/code.ivysaur.me/yvbolt/releases/tag/v0.7.0)
|
||||||
|
|
||||||
|
2024-06-30 v0.6.0 (yvbolt)
|
||||||
|
|
||||||
|
- Debconf: Add as supported database
|
||||||
|
- SQLite: Support table names containing special characters
|
||||||
|
- SQLite: Improvements for experimental command-line driver
|
||||||
|
- Redis: Improve connection dialog window position
|
||||||
|
- App: Cosmetic fixes for frame borders, help dialog, and Windows fonts+colours
|
||||||
|
- Build: Change compression parameters for release builds
|
||||||
|
- Build: Compile CGO with -O2 for release builds
|
||||||
|
- [⬇️ Download here](https://git.ivysaur.me/code.ivysaur.me/yvbolt/releases/tag/v0.6.0)
|
||||||
|
|
||||||
|
2024-06-29 v0.5.0 (yvbolt)
|
||||||
|
|
||||||
|
- Pebble: Add as supported database
|
||||||
|
- Bolt: Support opening as readonly
|
||||||
|
- Bolt: Support creating new databases
|
||||||
|
- Bolt: Support adding/removing recursive child buckets
|
||||||
|
- SQLite: Support custom CLI driver that parses `/usr/bin/sqlite3 -json` output (experimental)
|
||||||
|
- Redis: Improve query parser to support quoted strings
|
||||||
|
- App: Support refreshing elements in nav tree
|
||||||
|
- App: Help menu option to show driver versions
|
||||||
|
- App: Add image icons for refresh and close context menu actions
|
||||||
|
- Build: Add makefile for cross-compiling release binaries
|
||||||
|
- [⬇️ Download here](https://git.ivysaur.me/code.ivysaur.me/yvbolt/releases/tag/v0.5.0)
|
||||||
|
|
||||||
|
2024-06-23 v0.4.0 (yvbolt)
|
||||||
|
|
||||||
|
- Redis: Add as supported database
|
||||||
|
- Badger: Allow creating in-memory databases
|
||||||
|
- App: Allow selecting partial query text to execute
|
||||||
|
- App: Allow closing database connections from context menu
|
||||||
|
- App: Allow scrolling large content on Properties pane
|
||||||
|
- App: Preload recursive navigation
|
||||||
|
- App: Automatically switch to selected database when new connection is created
|
||||||
|
- App: Add help website link
|
||||||
|
- App: Add database logo images
|
||||||
|
|
||||||
|
2024-06-25 v0.3.0 (yvbolt)
|
||||||
|
|
||||||
|
- Badger: Add BadgerDB v4 as supported database
|
||||||
|
- SQLite: Add support for CGo-free SQLite driver under cross-compilation
|
||||||
|
- Bolt: Update Bolt to v1.4.0-alpha.1
|
||||||
|
- App: Add support for running custom queries
|
||||||
|
- App: Add status bar showing currently selected DB
|
||||||
|
- App: Fix missing icons in nav when selecting items
|
||||||
|
- App: Fix extra quotemarks when browsing string content of database
|
||||||
|
|
||||||
|
2024-06-08 v0.2.0 (yvbolt)
|
||||||
|
|
||||||
|
- SQLite: Add SQLite support (now requires CGo)
|
||||||
|
- App: Add images for menu and navigation items
|
||||||
|
|
||||||
|
2024-06-03 v0.1.0 (yvbolt)
|
||||||
|
|
||||||
|
- Initial public release
|
||||||
|
|
||||||
|
2020-04-12 1.0.2 (qbolt)
|
||||||
|
|
||||||
|
- Rebuild artefacts with etcd-io/bbolt v1.3.5, go 1.15, Qt 5.15, and new GCC versions
|
||||||
|
- Switch from hg to Git
|
||||||
|
- Use Go modules
|
||||||
|
- Add support for building Windows binary in Docker
|
||||||
|
- [⬇ Download here](https://git.ivysaur.me/code.ivysaur.me/qbolt/releases/tag/v1.0.2)
|
||||||
|
|
||||||
|
2017-06-19 1.0.1 (qbolt)
|
||||||
|
|
||||||
|
- Feature: Option to open database as read-only
|
||||||
|
- Fix an issue with support for bucket names and keys not surviving UTF-8 roundtrips (now binary-clean)
|
||||||
|
- Fix an issue with crashing when deleting a bucket other than the selected one
|
||||||
|
- Fix a cosmetic issue with application icon on Windows
|
||||||
|
- [⬇ Download here](https://git.ivysaur.me/code.ivysaur.me/qbolt/releases/tag/v1.0.1)
|
||||||
|
|
||||||
|
2017-05-21 1.0.0 (qbolt)
|
||||||
|
|
||||||
|
- Initial public release
|
||||||
|
- The project consists of two parts; a C binding (CGo) for the embeddable Bolt database engine, and a graphical interface built in C++/Qt that links to it.
|
||||||
|
- [⬇ Download here](https://git.ivysaur.me/code.ivysaur.me/qbolt/releases/tag/v1.0.0)
|
||||||
|
|
||||||
5
LICENSE
5
LICENSE
@@ -1,7 +1,8 @@
|
|||||||
ISC License
|
ISC License
|
||||||
|
|
||||||
Copyright 2024 mappy
|
Copyright 2025 mappy
|
||||||
Copyright 2024 The yvbolt Author(s)
|
Copyright 2025 The QBolt Author(s)
|
||||||
|
Copyright 2025 The yvbolt Author(s)
|
||||||
|
|
||||||
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
|
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
|
||||||
|
|
||||||
|
|||||||
30
Makefile
30
Makefile
@@ -25,39 +25,39 @@ optimize-images:
|
|||||||
optipng -quiet -o5 assets/*.png
|
optipng -quiet -o5 assets/*.png
|
||||||
make generate
|
make generate
|
||||||
|
|
||||||
yvbolt: $(SOURCES)
|
qbolt: $(SOURCES)
|
||||||
# Target a debian-12 baseline build
|
# Target a debian-12 baseline build
|
||||||
sed -i -re 's/".+"/"$(GIT_REV)"/g' version.go
|
sed -i -re 's/".+"/"$(GIT_REV)"/g' version.go
|
||||||
$(MIQT_DOCKER) linux64-go1.26-qt6.4-dynamic -minify-build
|
$(MIQT_DOCKER) linux64-go1.26-qt6.4-dynamic -minify-build
|
||||||
git checkout -- version.go
|
git checkout -- version.go
|
||||||
chmod 755 yvbolt
|
chmod 755 qbolt
|
||||||
upx --lzma yvbolt
|
upx --lzma qbolt
|
||||||
|
|
||||||
yvbolt.exe: $(SOURCES)
|
qbolt.exe: $(SOURCES)
|
||||||
sed -i -re 's/".+"/"$(GIT_REV)"/g' version.go
|
sed -i -re 's/".+"/"$(GIT_REV)"/g' version.go
|
||||||
$(MIQT_DOCKER) win64-cross-go1.26-qt6.5-static -windows-build --tags=windowsqtstatic
|
$(MIQT_DOCKER) win64-cross-go1.26-qt6.5-static -windows-build --tags=windowsqtstatic
|
||||||
git checkout -- version.go
|
git checkout -- version.go
|
||||||
$(GO_WINRES) patch --in winres.json --no-backup --product-version git-tag --file-version git-tag yvbolt.exe
|
$(GO_WINRES) patch --in winres.json --no-backup --product-version git-tag --file-version git-tag qbolt.exe
|
||||||
upx --lzma yvbolt.exe
|
upx --lzma qbolt.exe
|
||||||
|
|
||||||
yvbolt.apk: $(SOURCES)
|
qbolt.apk: $(SOURCES)
|
||||||
$(MIQT_DOCKER) android-armv8a-go1.23-qt6.6-dynamic -android-build
|
$(MIQT_DOCKER) android-armv8a-go1.23-qt6.6-dynamic -android-build
|
||||||
|
|
||||||
yvbolt.linux64.tar.xz: yvbolt
|
qbolt.linux64.tar.xz: qbolt
|
||||||
rm -f yvbolt.linux64.tar.xz
|
rm -f qbolt.linux64.tar.xz
|
||||||
XZ_OPT='-T0 -9' tar caf yvbolt.linux64.tar.xz --owner=0 --group=0 yvbolt
|
XZ_OPT='-T0 -9' tar caf qbolt.linux64.tar.xz --owner=0 --group=0 qbolt
|
||||||
|
|
||||||
yvbolt.win64.zip: yvbolt.exe
|
qbolt.win64.zip: qbolt.exe
|
||||||
rm -f yvbolt.win64.zip
|
rm -f qbolt.win64.zip
|
||||||
zip -9 yvbolt.win64.zip yvbolt.exe
|
zip -9 qbolt.win64.zip qbolt.exe
|
||||||
|
|
||||||
.PHONY: dist
|
.PHONY: dist
|
||||||
dist: yvbolt.linux64.tar.xz yvbolt.win64.zip
|
dist: qbolt.linux64.tar.xz qbolt.win64.zip
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
git checkout -- version.go
|
git checkout -- version.go
|
||||||
rm -f yvbolt.exe yvbolt yvbolt.linux64.tar.xz yvbolt.win64.zip
|
rm -f qbolt.exe qbolt qbolt.linux64.tar.xz qbolt.win64.zip
|
||||||
|
|
||||||
#####
|
#####
|
||||||
# Test databases in Docker
|
# Test databases in Docker
|
||||||
|
|||||||
173
README.md
173
README.md
@@ -1,4 +1,4 @@
|
|||||||
# yvbolt
|
# QBolt
|
||||||
|
|
||||||
A graphical interface for multiple databases.
|
A graphical interface for multiple databases.
|
||||||
|
|
||||||
@@ -8,14 +8,14 @@ A graphical interface for multiple databases.
|
|||||||
- Connect to multiple databases at once
|
- Connect to multiple databases at once
|
||||||
- Browse table/bucket content
|
- Browse table/bucket content
|
||||||
- Use context menu to perform special table/bucket actions
|
- Use context menu to perform special table/bucket actions
|
||||||
|
- Edit content, and add/delete rows for supported databases
|
||||||
|
- View database/bucket statistics and metadata
|
||||||
- Run custom SQL queries
|
- Run custom SQL queries
|
||||||
- Select text to run partial query
|
- Select text to run partial query
|
||||||
- Safe handling for non-UTF8 key and data fields
|
- Safe handling for non-UTF8 key and data fields
|
||||||
- Hex viewer for binary data
|
- Hex viewer for binary data
|
||||||
- Connection Manager saves connections with AEAD AES256-GCM using OS keychain
|
- Connection Manager saves connections with AEAD AES256-GCM using OS keychain
|
||||||
|
|
||||||
See also [qbolt](https://code.ivysaur.me/qbolt) for more/different functionality.
|
|
||||||
|
|
||||||
## Supported databases
|
## Supported databases
|
||||||
|
|
||||||
There are currently 15 supported databases:
|
There are currently 15 supported databases:
|
||||||
@@ -47,167 +47,10 @@ The code in this project is licensed under the ISC license (see `LICENSE` file f
|
|||||||
- This project includes trademarked logo images for each supported database type.
|
- This project includes trademarked logo images for each supported database type.
|
||||||
- The Windows binary is released under LGPL-3+ owing to the static copy of Qt.
|
- The Windows binary is released under LGPL-3+ owing to the static copy of Qt.
|
||||||
|
|
||||||
|
## Download
|
||||||
|
|
||||||
|
Get the latest version from [the releases page »](https://git.ivysaur.me/code.ivysaur.me/qbolt/releases)
|
||||||
|
|
||||||
## Changelog
|
## Changelog
|
||||||
|
|
||||||
2025-12-20 v0.11.0
|
See [the full change history »](https://git.ivysaur.me/code.ivysaur.me/qbolt/src/branch/master/CHANGELOG.md)
|
||||||
|
|
||||||
- Badger: Change encryption configuration options (**BREAKING**)
|
|
||||||
- SSH Agent: Initial support, including lock/unlock
|
|
||||||
- Badger, SQLite: Fix "all files" spec when choosing an export file path
|
|
||||||
- Bolt: Support import/export as zip archive
|
|
||||||
- Support SSH agents when using SSH tunnels (e.g. for Redis or Mongo)
|
|
||||||
|
|
||||||
2025-12-17 v0.10.1
|
|
||||||
|
|
||||||
- Fix mixed Qt 5 / Qt 6 syntax
|
|
||||||
- Build release binaries with Go1.26
|
|
||||||
|
|
||||||
[⬇️ Download for Windows x86_64](https://git.ivysaur.me/code.ivysaur.me/yvbolt/releases/download/v0.10.1/yvbolt.win64.zip)
|
|
||||||
|
|
||||||
[⬇️ Download for Linux x86_64](https://git.ivysaur.me/code.ivysaur.me/yvbolt/releases/download/v0.10.1/yvbolt.linux64.tar.xz)
|
|
||||||
|
|
||||||
2025-12-16 v0.10.0
|
|
||||||
|
|
||||||
- MongoDB: Initial support, including SSH tunnel, managing collections, traversing BSON documents, and querying
|
|
||||||
- LotusDB: Initial support, including editing
|
|
||||||
- Bitcask: Initial support, including editing and backup
|
|
||||||
- RoseDB: Initial support, including editing
|
|
||||||
- Badger: Fix k/v column display, support editing
|
|
||||||
- LMDB: Support editing, add warning for destructive actions
|
|
||||||
- LevelDB: Support editing
|
|
||||||
- Pebble: Support editing
|
|
||||||
- Starskey: Fix k/v column display, support editing
|
|
||||||
- Redis: Bump driver version v9.16.0 -> v9.17.2
|
|
||||||
- Bolt: Add warning for destructive actions
|
|
||||||
- Connection manager: When saving, use the database's preferred name
|
|
||||||
- App: Add hex viewer for binary data if it is not valid UTF-8
|
|
||||||
- App: Use virtualized table renderer
|
|
||||||
- App: Use multiple plug-in typed column stores in table backend
|
|
||||||
- App: Fix graphical flicker when editing connections on Windows
|
|
||||||
- App: Set up icon and exe properties on Windows
|
|
||||||
- App: Embed version number in release builds
|
|
||||||
- App: Show all driver versions as a virtual data table
|
|
||||||
- App: Show unsaved-changes warning also when changing database
|
|
||||||
- App: Fix rich text formatting appearing when pasting into the query window
|
|
||||||
|
|
||||||
2025-12-02 v0.9.0
|
|
||||||
|
|
||||||
- LMDB: Initial support, including multi-database mode, data editing, and managing child databases
|
|
||||||
- Starskey: Initial support
|
|
||||||
- Freedesktop.org Secret Service: Initial support, including unlocking collections and creating child collections
|
|
||||||
- App: Use global toolbar style
|
|
||||||
- App: Add connection manager, encrypting credentials with AEAD AES256-GCM using OS keychain
|
|
||||||
- App: Offer to save valid quick-connection to the connection manager
|
|
||||||
- App: Add 'About Qt' menu option
|
|
||||||
- App: Fixed file extension filter for database files with no extension
|
|
||||||
- App: Fixed background colour for Properties area on different OSes
|
|
||||||
- App: Fixed libpng warnings about greyscale image data for embedded logo images
|
|
||||||
- App: Fixed issue with non-UTF8 child database names
|
|
||||||
- Debconf: Improve navigation speed by splitting applications into virtual tables
|
|
||||||
- SSH: Redesign options to pick only one of the available auth methods
|
|
||||||
- Fixed running release binary on Debian 12
|
|
||||||
|
|
||||||
[⬇️ Download for Windows x86_64](https://git.ivysaur.me/code.ivysaur.me/yvbolt/releases/download/v0.9.0/yvbolt.win64.zip)
|
|
||||||
|
|
||||||
[⬇️ Download for Linux x86_64](https://git.ivysaur.me/code.ivysaur.me/yvbolt/releases/download/v0.9.0/yvbolt.linux64.tar.xz)
|
|
||||||
|
|
||||||
2025-11-23 v0.8.0
|
|
||||||
|
|
||||||
- Port from [liblcl](https://github.com/ying32/liblcl) to [MIQT Qt 6](https://github.com/mappu/miqt)
|
|
||||||
- Badger: Upgrade v4.2.0 -> v4.8.0
|
|
||||||
- Pebble: Upgrade v1.0.0 -> v1.1.5
|
|
||||||
- SQLite: Upgrade v1.14.22 -> v1.14.32
|
|
||||||
- Redis: Upgrade v9.5.3 -> v9.16.0
|
|
||||||
- Bolt: Upgrade v1.4.0-alpha.1 -> v1.4.3
|
|
||||||
- Bolt: Fix child buckets appearing in data area
|
|
||||||
- Badger, Pebble, Debconf: Remove redundant "Data" navigation layer
|
|
||||||
- Badger: Support encrypted databases
|
|
||||||
- Badger: Support readonly databases
|
|
||||||
- Badger: Add context-menu actions for backup, restore, and compact
|
|
||||||
- Pebble: Support readonly databases
|
|
||||||
- LevelDB: Add LevelDB database integration
|
|
||||||
- Redis: Support SSH tunnel
|
|
||||||
- SQLite: Allow editing the primary key column
|
|
||||||
- App: New style connection dialog
|
|
||||||
- App: Updated keyboard shortcuts (Ctrl+O to open new connection, F5 to refresh, F9 to execute query)
|
|
||||||
- App: Add confirmation when refreshing the data table if there are uncommitted changes
|
|
||||||
|
|
||||||
[⬇️ Download for Windows x86_64](https://git.ivysaur.me/code.ivysaur.me/yvbolt/releases/download/v0.8.0/yvbolt.win64.zip)
|
|
||||||
|
|
||||||
[⬇️ Download for Linux x86_64](https://git.ivysaur.me/code.ivysaur.me/yvbolt/releases/download/v0.8.0/yvbolt.linux64.tar.xz)
|
|
||||||
|
|
||||||
2024-07-18 v0.7.0
|
|
||||||
|
|
||||||
- SQLite, Bolt: Initial support for editing data (insert, per-cell update, delete)
|
|
||||||
- SQLite: Add context menu actions for compact (vacuum), export, and drop table
|
|
||||||
- App: New grid widget
|
|
||||||
- App: Add refresh button
|
|
||||||
- App: Bigger window size, use icons for toolbars, better UI colours for Windows
|
|
||||||
- App: Prevent submitting blank queries to database
|
|
||||||
- Refactor database interface and error handling
|
|
||||||
|
|
||||||
[⬇️ Download for Windows x86_64](https://git.ivysaur.me/code.ivysaur.me/yvbolt/releases/download/v0.7.0/yvbolt.win64.zip)
|
|
||||||
|
|
||||||
[⬇️ Download for Linux x86_64](https://git.ivysaur.me/code.ivysaur.me/yvbolt/releases/download/v0.7.0/yvbolt.linux64.tar.xz)
|
|
||||||
|
|
||||||
2024-06-30 v0.6.0
|
|
||||||
|
|
||||||
- Debconf: Add as supported database
|
|
||||||
- SQLite: Support table names containing special characters
|
|
||||||
- SQLite: Improvements for experimental command-line driver
|
|
||||||
- Redis: Improve connection dialog window position
|
|
||||||
- App: Cosmetic fixes for frame borders, help dialog, and Windows fonts+colours
|
|
||||||
- Build: Change compression parameters for release builds
|
|
||||||
- Build: Compile CGO with -O2 for release builds
|
|
||||||
|
|
||||||
[⬇️ Download for Windows x86_64](https://git.ivysaur.me/code.ivysaur.me/yvbolt/releases/download/v0.6.0/yvbolt.win64.zip)
|
|
||||||
|
|
||||||
[⬇️ Download for Linux x86_64](https://git.ivysaur.me/code.ivysaur.me/yvbolt/releases/download/v0.6.0/yvbolt.linux64.tar.xz)
|
|
||||||
|
|
||||||
2024-06-29 v0.5.0
|
|
||||||
|
|
||||||
- Pebble: Add as supported database
|
|
||||||
- Bolt: Support opening as readonly
|
|
||||||
- Bolt: Support creating new databases
|
|
||||||
- Bolt: Support adding/removing recursive child buckets
|
|
||||||
- SQLite: Support custom CLI driver that parses `/usr/bin/sqlite3 -json` output (experimental)
|
|
||||||
- Redis: Improve query parser to support quoted strings
|
|
||||||
- App: Support refreshing elements in nav tree
|
|
||||||
- App: Help menu option to show driver versions
|
|
||||||
- App: Add image icons for refresh and close context menu actions
|
|
||||||
- Build: Add makefile for cross-compiling release binaries
|
|
||||||
|
|
||||||
[⬇️ Download for Windows x86_64](https://git.ivysaur.me/code.ivysaur.me/yvbolt/releases/download/v0.5.0/yvbolt.win64.zip)
|
|
||||||
|
|
||||||
[⬇️ Download for Linux x86_64](https://git.ivysaur.me/code.ivysaur.me/yvbolt/releases/download/v0.5.0/yvbolt.linux64.tar.xz)
|
|
||||||
|
|
||||||
2024-06-23 v0.4.0
|
|
||||||
|
|
||||||
- Redis: Add as supported database
|
|
||||||
- Badger: Allow creating in-memory databases
|
|
||||||
- App: Allow selecting partial query text to execute
|
|
||||||
- App: Allow closing database connections from context menu
|
|
||||||
- App: Allow scrolling large content on Properties pane
|
|
||||||
- App: Preload recursive navigation
|
|
||||||
- App: Automatically switch to selected database when new connection is created
|
|
||||||
- App: Add help website link
|
|
||||||
- App: Add database logo images
|
|
||||||
|
|
||||||
2024-06-25 v0.3.0
|
|
||||||
|
|
||||||
- Badger: Add BadgerDB v4 as supported database
|
|
||||||
- SQLite: Add support for CGo-free SQLite driver under cross-compilation
|
|
||||||
- Bolt: Update Bolt to v1.4.0-alpha.1
|
|
||||||
- App: Add support for running custom queries
|
|
||||||
- App: Add status bar showing currently selected DB
|
|
||||||
- App: Fix missing icons in nav when selecting items
|
|
||||||
- App: Fix extra quotemarks when browsing string content of database
|
|
||||||
|
|
||||||
2024-06-08 v0.2.0
|
|
||||||
|
|
||||||
- SQLite: Add SQLite support (now requires CGo)
|
|
||||||
- App: Add images for menu and navigation items
|
|
||||||
|
|
||||||
2024-06-03 v0.1.0
|
|
||||||
|
|
||||||
- Initial public release
|
|
||||||
|
|||||||
@@ -159,7 +159,7 @@ func (f *App) saveConnectionManagerContents(sc *SavedConfig) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Force update the saved version
|
// Force update the saved version
|
||||||
sc.UserAgent = APPNAME + `/` + appVersion // e.g. yvbolt/v0.0.0-devel
|
sc.UserAgent = APPNAME + `/` + appVersion // e.g. QBolt/v0.0.0-devel
|
||||||
|
|
||||||
// Marshal
|
// Marshal
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import (
|
|||||||
"path/filepath"
|
"path/filepath"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
|
||||||
"yvbolt/debconf"
|
"qbolt/debconf"
|
||||||
|
|
||||||
"github.com/mappu/autoconfig"
|
"github.com/mappu/autoconfig"
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"yvbolt/lexer"
|
"qbolt/lexer"
|
||||||
|
|
||||||
"github.com/mappu/autoconfig"
|
"github.com/mappu/autoconfig"
|
||||||
"github.com/redis/go-redis/v9"
|
"github.com/redis/go-redis/v9"
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import (
|
|||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"yvbolt/sqliteclidriver"
|
"qbolt/sqliteclidriver"
|
||||||
|
|
||||||
"github.com/mappu/autoconfig"
|
"github.com/mappu/autoconfig"
|
||||||
qt "github.com/mappu/miqt/qt6"
|
qt "github.com/mappu/miqt/qt6"
|
||||||
|
|||||||
BIN
doc/screenshot-000.png
Normal file
BIN
doc/screenshot-000.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 170 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 30 KiB |
5
main.go
5
main.go
@@ -13,8 +13,8 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
APPNAME = "yvbolt"
|
APPNAME = "QBolt"
|
||||||
HOMEPAGE_URL = "https://code.ivysaur.me/yvbolt"
|
HOMEPAGE_URL = "https://code.ivysaur.me/qbolt"
|
||||||
)
|
)
|
||||||
|
|
||||||
type App struct {
|
type App struct {
|
||||||
@@ -37,6 +37,7 @@ func newApp() *App {
|
|||||||
a.dbs = make(map[int]loadedDatabase, 0)
|
a.dbs = make(map[int]loadedDatabase, 0)
|
||||||
|
|
||||||
a.ui = NewMainWindowUi()
|
a.ui = NewMainWindowUi()
|
||||||
|
a.ui.MainWindow.SetWindowTitle(APPNAME + " " + appVersion)
|
||||||
|
|
||||||
// Using stylesheet works better than picking a palette colour across all
|
// Using stylesheet works better than picking a palette colour across all
|
||||||
// different QStyles
|
// different QStyles
|
||||||
|
|||||||
@@ -338,12 +338,13 @@ func NewMainWindowUi() *MainWindowUi {
|
|||||||
|
|
||||||
// Retranslate reapplies all text translations.
|
// Retranslate reapplies all text translations.
|
||||||
func (ui *MainWindowUi) Retranslate() {
|
func (ui *MainWindowUi) Retranslate() {
|
||||||
ui.MainWindow.SetWindowTitle(qt.QCoreApplication_Tr("yvbolt"))
|
ui.MainWindow.SetWindowTitle(qt.QCoreApplication_Tr("QBolt"))
|
||||||
ui.actionE_xit.SetText(qt.QMainWindow_Tr("E&xit"))
|
ui.actionE_xit.SetText(qt.QMainWindow_Tr("E&xit"))
|
||||||
ui.mnuExecute.SetText(qt.QMainWindow_Tr("E&xecute"))
|
ui.mnuExecute.SetText(qt.QMainWindow_Tr("E&xecute"))
|
||||||
ui.mnuExecute.SetShortcut(qt.NewQKeySequence2(qt.QMainWindow_Tr("F9")))
|
ui.mnuExecute.SetShortcut(qt.NewQKeySequence2(qt.QMainWindow_Tr("F9")))
|
||||||
ui.mnuDriverVersions.SetText(qt.QMainWindow_Tr("Driver versions..."))
|
ui.mnuDriverVersions.SetText(qt.QMainWindow_Tr("Driver versions..."))
|
||||||
ui.mnuHelpAbout.SetText(qt.QMainWindow_Tr("&About yvbolt"))
|
ui.mnuHelpAbout.SetText(qt.QMainWindow_Tr("&About QBolt"))
|
||||||
|
ui.mnuHelpAbout.SetToolTip(qt.QMainWindow_Tr("About QBolt"))
|
||||||
ui.mnuHelpAbout.SetShortcut(qt.NewQKeySequence2(qt.QMainWindow_Tr("F1")))
|
ui.mnuHelpAbout.SetShortcut(qt.NewQKeySequence2(qt.QMainWindow_Tr("F1")))
|
||||||
ui.actionConnect.SetText(qt.QMainWindow_Tr("Connect..."))
|
ui.actionConnect.SetText(qt.QMainWindow_Tr("Connect..."))
|
||||||
ui.actionConnect.SetShortcut(qt.NewQKeySequence2(qt.QMainWindow_Tr("Ctrl+O")))
|
ui.actionConnect.SetShortcut(qt.NewQKeySequence2(qt.QMainWindow_Tr("Ctrl+O")))
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>yvbolt</string>
|
<string>QBolt</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowIcon">
|
<property name="windowIcon">
|
||||||
<iconset resource="embed.qrc">
|
<iconset resource="embed.qrc">
|
||||||
@@ -252,7 +252,10 @@
|
|||||||
<normaloff>:/assets/help.png</normaloff>:/assets/help.png</iconset>
|
<normaloff>:/assets/help.png</normaloff>:/assets/help.png</iconset>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>&About yvbolt</string>
|
<string>&About QBolt</string>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>About QBolt</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="shortcut">
|
<property name="shortcut">
|
||||||
<string>F1</string>
|
<string>F1</string>
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
|
|
||||||
"yvbolt/lexer"
|
"qbolt/lexer"
|
||||||
|
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
)
|
)
|
||||||
@@ -136,7 +136,7 @@ func (s *SCStmt) buildQuery(args []driver.Value) ([]byte, error) {
|
|||||||
|
|
||||||
// Embed query params
|
// Embed query params
|
||||||
// WARNING: Not secure against injection? That's not a security boundary
|
// WARNING: Not secure against injection? That's not a security boundary
|
||||||
// for the purposes of yvbolt, but maybe for other package users
|
// for the purposes of qbolt, but maybe for other package users
|
||||||
|
|
||||||
var querybuilder bytes.Buffer
|
var querybuilder bytes.Buffer
|
||||||
|
|
||||||
|
|||||||
@@ -15,11 +15,11 @@
|
|||||||
"0409": {
|
"0409": {
|
||||||
"Comments": "",
|
"Comments": "",
|
||||||
"CompanyName": "code.ivysaur.me",
|
"CompanyName": "code.ivysaur.me",
|
||||||
"FileDescription": "yvbolt Database Editor",
|
"FileDescription": "QBolt Database Editor",
|
||||||
"FileVersion": "0.0.0.0",
|
"FileVersion": "0.0.0.0",
|
||||||
"LegalCopyright": "code.ivysaur.me",
|
"LegalCopyright": "code.ivysaur.me",
|
||||||
"LegalTrademarks": "",
|
"LegalTrademarks": "",
|
||||||
"ProductName": "yvbolt",
|
"ProductName": "QBolt",
|
||||||
"ProductVersion": "0.0.0"
|
"ProductVersion": "0.0.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user