From c66b6af548ab65ba2e81591745cfe8bd8fbf7531 Mon Sep 17 00:00:00 2001 From: Dmitry Ratner <6830384+dmitrat@users.noreply.github.com> Date: Wed, 19 Aug 2026 11:57:36 +0300 Subject: [PATCH] Studio 3.1.0: forty-six findings, and what looking for them turned up The version goes from 3.0.0 to 3.1.0 and the changelog gets the entry that says what changed. A minor rather than a patch, because the release carries capability that was not reachable before - a table that opens into its columns, a find command, a trigger dialog, a Database entry in the menu bar, marks on the rows an edit will change - beside the wrong answers it corrects. The entry is written for somebody who uses Studio rather than for somebody following the project, so it leads with what a person can now do and names what used to be untrue. The two findings that turned out to be the opposite of what they claimed are in it as well: Esc never discarded the editor's buffer, and the report of refused rows already existed for CSV imports. Studio 1014 green, engine 14.0.0 unchanged - no engine release is implied. Co-Authored-By: Claude Opus 5 (1M context) --- Tools/OutWit.Database.Studio/CHANGELOG.md | 84 +++++++++++++++++++ .../OutWit.Database.Studio.csproj | 2 +- 2 files changed, 85 insertions(+), 1 deletion(-) diff --git a/Tools/OutWit.Database.Studio/CHANGELOG.md b/Tools/OutWit.Database.Studio/CHANGELOG.md index 74f40fb..e5d9a08 100644 --- a/Tools/OutWit.Database.Studio/CHANGELOG.md +++ b/Tools/OutWit.Database.Studio/CHANGELOG.md @@ -3,6 +3,90 @@ Studio is versioned separately from the WitDatabase engine and released under its own `studio-v*` tag. The engine's changelog is `/CHANGELOG.md`. +## 3.1.0 + +**Forty-six findings, and what looking for them turned up.** Taking the screenshots for the +documentation site produced a list of forty-one things that were wrong, and five more came in a +conversation. All of them are answered here - most fixed, a few measured and found to be right +already, two found to be the opposite of what they said. + +Engine: 14.0.0, unchanged. + +### The tree opens into a table + +A table has a chevron. Opening one shows its columns, with the key marked, what points elsewhere +marked, and the type beside each name. **The code that reads them had been there since the redesign** +and could not run: a node with no children draws no expander, so the node could never be opened, so +the columns were never asked for. Two more links were missing behind that one, and both were found by +driving the application rather than by a test. + +Each connection's root now carries its colour, the same colour its tabs wear. + +### Wrong answers + +- **An index over two columns is one index.** The catalogue publishes a row per indexed column, and + one of the four readers took them at face value - so the tree counted eight where *Verify by + reading* counted seven, the filter and the palette listed the same index twice, and **a dumped + script created it twice and would not replay.** +- **A folder database reaches Recent Databases.** An LSM database is a directory; the recent list + asked whether a *file* existed, so it was written to the list, never shown, and taken out of it as + gone. +- **The password button no longer promises to copy your database.** Replacing a password rewrites 60 + bytes; only adding or removing encryption builds a new database. The button had said otherwise + since before the rewrap existed. +- **The table editor counts its pages once** - the footer and the status line had been counting from + zero and from one, in the same window. +- **A parse error is underlined across its word**, not under its first letter. +- The English drop confirmations no longer quote with the Russian marks. + +### The editor says what it has actually changed + +- **Looking at a cell no longer marks it as changed.** Double-clicking a cell and leaving it gave the + tab its dot, raised the badge and lit Commit over a buffer holding nothing. A row edited back to + what it was stops being a change, too. +- **A deleted row stays where it is**, dimmed and marked down its left edge, until the set is applied + - it used to vanish, so discarding was the only way to find out what you had done. A changed row + carries a mark of its own. +- A message about something the buffer has left does not stay on screen, and a language change no + longer leaves the status bar in the language you have just left. +- A `BOOLEAN` that cannot be NULL is a checkbox; a nullable one keeps its text, because a checkbox + has two states and that column has three. + +### Things that were built and could not be found + +- ***Edit ▸ Find and replace…*** - the find band answered `Ctrl+F` and nothing else. +- ***Create ▸ Create Trigger…*** in the tree. The dialog has existed since the schema designer landed, + reachable from one button in one tab. +- ***View ▸ Database…***, and one name for that tab everywhere. It answers where the database is, how + big it is, its page size and count, its format version, its encryption, its cache, its journal and + what it holds - and it was called three different things. +- **Close the connection from the tree** it is drawn in. +- **Back to the first page in one press**, and **a column marked for deletion in the designer can be + kept after all** - that one had no way back short of discarding every edit in the set. +- **The command palette answers the mouse**: a click outside closes it, a click on an entry runs it. + +### Menus, dialogs and the import + +- **A folder is offered what a folder has.** Right-clicking *Tables* used to produce the table menu + with *Empty the table…* and *Drop…* greyed rather than absent. +- ***Execute*** runs the statement under the cursor, `F5`, and ***Execute Script*** is its own item. +- **The export dialog fits what it holds** - it opened 500 by 480 for content needing about 900, and + the buttons were painted over. **Two windows called *Export Data* are now *Export table* and + *Export query results*** - only one of them has the three scopes. +- **The import wizard says what it read**: the columns it found and the first rows themselves, which + is how a wrong delimiter is caught. Its result no longer lands on top of the line it replaces, and + every refused row is kept for the report rather than the first ten. +- **A type typed into *Create table* reaches the statement**, and one this engine would refuse is + refused in the dialog, where it can still be corrected. +- Nine labels that could be cut off in one language or the other now wrap. + +### Two findings were wrong, and that is the answer + +**`Esc` does not discard the table editor's buffer** - it closes the find band, the palette and the +notification list, stops a running query and cancels a cell edit. The hint bar was right to be silent. +And **the report of refused rows was already there** for a CSV import; only the JSON path was throwing +them away. + ## 3.0.0 **The release, and the same build as `3.0.0-rc.2`.** Nothing in the application changed between the diff --git a/Tools/OutWit.Database.Studio/OutWit.Database.Studio.csproj b/Tools/OutWit.Database.Studio/OutWit.Database.Studio.csproj index 311f74f..b4a5ade 100644 --- a/Tools/OutWit.Database.Studio/OutWit.Database.Studio.csproj +++ b/Tools/OutWit.Database.Studio/OutWit.Database.Studio.csproj @@ -18,7 +18,7 @@ - 3.0.0 + 3.1.0 WitDatabase Studio OutWit