- source diet : same behavior in fewer lines (shared welcome memo blocks, clean_path() helper for the dot-commands, loop-built notebook style) ; fixes on the way : a latent TypeError when logging the final COMMIT, quoted paths now accepted by .open
- json : the import button also accepts .json / .jsonl files : records land in a 1-column raw table, and a ready-made 'shredding' query tab opens (DuckDB engine : native read_json_auto instead)
- json : exports write json when the file name ends in .json (array) or .jsonl (one object per line) : same buttons, same .once / .output batch commands, the file extension decides the format
- json : .import file.json [table] works in scripts too (batch mode with -sc)
- menu : Database > Open Recent : the ten most recently opened databases
- high-dpi : the app declares dpi-awareness on Windows : no more blurry rendering on scaled screens (125%/150%/200%)
- high-dpi : icons, Treeview row heights, pane widths and the minimal window size follow the screen scale ; other OSes unchanged (scale never goes below 1)
- window : opens at 80% of the screen instead of an oversized natural request
- shortcuts : Ctrl+Enter runs the script ; Ctrl+mousewheel changes the font size one point at a time
- tabs : the selected tab is easier to spot : plain black label, the other tabs dimmed grey
- fix : Treeview rows no longer clip the text when enlarging the font (AA button or Ctrl+mousewheel)
- packaging : PyPI page links refreshed : Documentation link fixed, Changelog / Homepage / Issue Tracker links added
- CI : actions/checkout bumped to v5 and actions/setup-python to v6 (Node 24, removes the Node 20 deprecation warning)
- tests : widget-driving tests are skipped when no display is available (App() falls back to no-GUI) ; they still run in the Xvfb step
- results grid : Ctrl+c copies the header + selected rows (or all) to the clipboard, tab-separated, no dialog
- results grid : Ctrl+f filters rows with a regular expression ; the grid title shows '(x out of N lines, filter= p)'
- publishing to PyPI is now done by GitHub Actions trusted publishing, on 'v*' tag push (no API token involved)
- fix : clicking a notebook outside the tab labels no longer raises a TclError in the console
- copy from and to the Clipboard, with 3 new toolbar icons : clipboard to table, table to clipboard, script to clipboard,
- dialogs now pop up near the main window (multi-screen fix)
- Python-3.2 and lower version compatibility is removed, last one will be 0.14.0
- fix : the csv-sniffed quotechar was silently ignored (NameError), and export_writer now honors its quotechar parameter
- docs : icon gifs tracked in docs/output_gifs, incl. the 3 new clipboard icons, for easier maintenance
- optional DuckDB engine : create or open a '.duckdb' database (needs 'pip install duckdb'), with its own DuckDB-flavored welcome demo
- pydef embedded Python functions work on the DuckDB engine (type-annotated ones are registered natively)
- script runs now feed a single 'Logs' result tab (N°, Time, Result, Status, Instruction) : DDL/DML/pydef/dot-commands no longer spawn one result tab each, and silent statements become visible
- data grids keep their own result tabs, titled 'Qry_<n>' where <n> matches the record N° in the 'Logs' tab
- 'Logs' and 'Dump' result tabs are pinned on the left of the results notebook
- window title and database tree indicate the engine in use (SQLite or DuckDB)
- fix : refreshing the database tree no longer crashes on views repeating a column name (e.g. 'select *' over a join)
- starting Python-3.13, PEP 667 forces us to use a specific dictionnary pydef_locals instead of locals()
- empty columns names are always replaced per the default 'c_nnn' convention
- 'backup' and 'restore' functions are accessible via menu (for python >=3.7)
- running script and displaying output in temporary files is available via icons
- supports running in an environment with no DISPLAY
- supports '.output' and '.print' functions
- supports '.dump' and '.read' functions
- supports '.open' function
- supports '.backup' and '.restore' functions
- switch to github actions and pytest
- supports '.headers on|off' function
- supports '.separator COL' function
- supports '.cd DIRECTORY' function
- supports command-line scripting (see sqlite_bro -h)
- support functions with no parameters or parameters on several lines
- compatiblity with PyPy
- handle '~' convention for Home directory
- indicate Python Executable and Home directory in Information bubble
- previously, un-named Tabs couldn't be renamed nor moved.
- header columns in a .csv file are de-duplicated to avoid error: 'a', 'a', 'a_1' becomes 'a', 'a_2', 'a_1'
- add a combining of functions example: 'py_func1(1*py_func2)', not 'py_func1(py_func2)'
- fixed a nasty tokenizer issue
- clicking on 'F9' key will run current selected instructions (patch by Yuxiang Wang)
- re-structure sql splitting as a generator instead of a list
- remove too long history from pypi front page
- re-structure as a package for Appveyor Continuous Integration tests
- include a global test
- compatibility fix for python 2.7
- wheel packaging format on pypi.org (no user code change)
- '.once' default encoding is 'utf-8-sig' on windows
- '.import' and '.once' support
- use a transaction when importing a csv file
- tabs can be renamed via double-click
- more OS agnostic
- tabs can be dragged with the mouse
- each tab has its closing button
- Ctrl-Z and Ctrl-Y works on Script Text aera
- switch to no-autocommit mode by default to allow savepoints
- a 'legacy autocommit' Open Database option is added
- add an example of COMMIT and ROLLBACK, and an example of SAVEPOINTS
- support attachement of several databases with the same name
- recognize date formats in .csv importation
- keep memory of last directory used
- improved publishing on Pypi (was tricky, especially the front page)
- create a github project 'sqlite_bro', from 'sqlite_py_manager' baresql example
- discover how to publish on Pypi (hard)
- works with temporary tables
- imported python functions must be validated
- PEP8 alignement
- the pythonic way to generate tokens is 'Yield'
- export SQL + SQL top result in a file in 1 click
- support COMMIT and ROLLBACK
- character INCREASE icon, so the back of the class can see
- make it work as low as Python 2.7 + SQlite 3.6.21
- the GUI is a Class now
- addition of Tooltips over icons
- addition of the Welcome Demo
- birth : need of a ZERO-requirements SQLite Browser for a Python Class