Improved progress display

Previously, the progress bar updated only after completing an entire table.

For large tables such as LIBARC, this could make the application appear to have stopped responding.

Phase 10 updates the interface while rows are being exported.
This commit is contained in:
Mark Gregory
2026-10-18 14:27:16 +01:00
parent 33ec9f7f14
commit 312efaa771
19 changed files with 346 additions and 226 deletions
-18
View File
@@ -1,18 +0,0 @@
# Phase 42 — Monitoring layout corrections
Based on the project uploaded 17 October 2026.
- Removed the legacy `NativeResultGrid` from the Dashboard's Server statistics section; it is replaced by a responsive, formatted Server overview.
- Reworked the shared Server Status, Server Counters, Connection Statistics and InnoDB monitoring view to size its charts from the actual available content width.
- The chart area scrolls independently when the window is short, and the complete metrics list remains independently scrollable.
- Responsive one-column charts on narrow windows, two columns on wider windows; no forced horizontal chart overflow.
- Kept the Status and System Variables inspector separate.
- Preserved the existing icon and schema editor. Icon artwork has **not** been redesigned in this release.
## Verification
`swiftc -frontend -parse` passed for all four Swift files on Linux. This is a syntax check, **not** a macOS Xcode build or visual UI test. A real Xcode build and UI inspection are still required.
## Build
Run `xcodebuild -project WorkbenchReplacement.xcodeproj -scheme WorkbenchReplacement -configuration Debug -destination 'platform=macOS,arch=arm64' -derivedDataPath ./build clean build` from the project directory.
-13
View File
@@ -1,13 +0,0 @@
# Phase 43 — monitoring view containment correction
- Replaced the Phase 42 monitoring view's unbounded chart/table interaction with a bounded, two-column chart region and independent statistics scrolling.
- Server Status now shows a formatted server overview below charts instead of a `Variable name / Value` counter table.
- Server Counters retains all `SHOW GLOBAL STATUS` counters and category filtering.
- Connection Statistics and InnoDB Metrics use the same bounded graph container, with page-specific metrics.
- Status and System Variables remains a separate table inspector.
- The chart region is limited to 54% of the available screen height; on short or narrow windows it scrolls independently.
- All documentation lives in `docs/`.
## Verification limits
Swift syntax parsing and ZIP integrity were checked in the build environment. The project has not been compiled with macOS Xcode or visually tested against a MySQL server. The icon and project format have not been modified in this phase.
-9
View File
@@ -1,9 +0,0 @@
# Phase 44 — Monitoring graphs layout
- Removed the GeometryReader and nested graph ScrollView from the active `WorkbenchLiveMonitorScreen`.
- Four live charts now render in a fixed two-column, two-row grid at the top of Server Status, Server Counters, Connection Statistics and InnoDB Metrics.
- The counters/overview region below the charts scrolls independently.
- Gave administration result content higher layout priority than the footer and auxiliary controls.
- Kept the existing five-second sample collection and graph calculation logic.
Validation: `swiftc -frontend -parse` passed for the Swift source files on Linux. macOS SDK compilation and on-screen appearance have not been verified.
-5
View File
@@ -1,5 +0,0 @@
# Phase 46 dashboard graph visibility
The Dashboard opens on **Live Graphs** rather than stacking the Server Overview beneath a long dashboard. A segmented selector at the top switches to **Server Overview**. The six Swift Charts panels are rendered in a three-column grid on the graphs pane. A PointMark makes individual samples visible while the trend history accumulates. Rate panels need at least two snapshots; automatic refresh remains five seconds.
This package was source-edited on Linux; macOS Xcode compilation and visual testing have not been performed.
-8
View File
@@ -1,8 +0,0 @@
# Phase 47 — Actual Dashboard Graphs
- Removed the Dashboard display toggle and the Dashboard server-overview cards.
- Dashboard now renders six real Swift Charts line/area time-series plots unconditionally.
- Increased each graph plot to 175 points tall, with a responsive grid (minimum 360-point chart width).
- Existing five-second refresh and 60-sample rolling history remain unchanged.
- Rates require two consecutive samples; allow at least five seconds after opening the Dashboard.
- This source was Swift syntax-parsed on Linux, but macOS build and on-screen testing remain outstanding.
-9
View File
@@ -1,9 +0,0 @@
# Phase 48: explicit charts-only routes
Server Status and Dashboard both route directly to `WorkbenchInlinePerformanceDashboard`.
The KPI `WorkbenchServerOverview` cards are no longer reachable from those two pages.
Look for the heading `Live MySQL Line Graphs · Phase 48` to confirm that the newly built app is running.
The charts sample the current page every five seconds when Auto-refresh is enabled.
Rate charts need at least two successful samples; active connections and threads are gauges.
This archive was edited and syntax-parsed in a Linux environment; it was not compiled or visually tested on macOS.
-19
View File
@@ -1,19 +0,0 @@
# Phase 49 — Dashboard and Server Status
The verified Phase 48 Swift Charts line graphs remain in both Dashboard and Server Status.
The six charts are shown first in a responsive grid; the server overview is restored in a separately scrolling lower pane. Server Status also includes a status-metrics table below the overview.
Graph sampling remains at the existing 5-second refresh interval (up to 60 samples). Rate charts need at least two snapshots.
## Verification
- Swift parser checked with `swiftc -frontend -parse` in Linux.
- macOS build and UI behaviour have **not** been tested in this environment.
## Build on macOS
```sh
cd /Volumes/Developer/Applications/WorkbenchReplacement
pkill -x WorkbenchReplacement 2>/dev/null || true
xcodebuild -project WorkbenchReplacement.xcodeproj -scheme WorkbenchReplacement -configuration Debug -destination 'platform=macOS,arch=arm64' -derivedDataPath ./build clean build
open ./build/Build/Products/Debug/WorkbenchReplacement.app
```
-7
View File
@@ -1,7 +0,0 @@
# Phase 50 — Server overview line graphs
The eight Server Overview statistic cards are replaced with actual Swift Charts time-series graphs. Each graph retains the current numeric value in its heading and plots up to 60 sampled values over time. This applies to Dashboard and Server Status. The six existing live rate charts remain unchanged above the overview graphs. The overview also appears in the other monitoring screens where it was previously used.
Charts show raw counter trends (cumulative values for Queries, Bytes, Connections, etc.); the six charts above show per-second rates where applicable. Graphs populate as five-second samples arrive.
Validation: `swiftc -frontend -parse WorkbenchReplacement/MainView.swift` passed in Linux. Native macOS compilation and UI testing have not been performed.
-9
View File
@@ -1,9 +0,0 @@
# Phase 51 — Full-page scrolling
Baseline: Phase 50, including all 14 working live line graphs.
The previous Dashboard / Server Status implementation put the six performance charts outside a second scrolling pane and constrained the complete layout to the window height. On typical window sizes, the six charts consumed nearly all vertical space, leaving the lower overview graphs inaccessible.
Both pages now use a single vertical ScrollView around the six performance graphs, eight overview graphs, and (on Server Status) the status metrics grid. The existing chart components, series, styling, and five-second sampling are unchanged. Scroll down using a trackpad, mouse wheel or scroll bar to reach the overview graphs and metrics.
This archive has not been compiled or visually tested on macOS.
@@ -1,10 +0,0 @@
# Phase 52 — Schema editor focus and first-display graphs
Based on the approved Phase 50 graphs and Phase 51 scrolling layout.
- Selecting **Schemas** switches the workspace to the SQL editor and requests keyboard focus for the native NSTextView.
- The native editor receives focus on its initial mount and on subsequent navigation to Schemas; the existing editor text, selection and syntax highlighting remain intact.
- Monitoring views perform their first refresh on appearance and, when auto-refresh is enabled, attempt a follow-up snapshot after about 1.5 seconds. Rate graphs require two distinct snapshots; gauge graphs can show a first data point immediately. Normal five-second refresh continues thereafter.
- The chart designs, all eight overview graphs, six performance graphs, SQL queries and scrolling are otherwise unchanged.
**Verification:** Swift parser checked on Linux. macOS compilation and GUI interaction testing are still required.
-10
View File
@@ -1,10 +0,0 @@
# Phase 53 — Execute reveals SQL editor
Based on Phase 52; preserves the Phase 50 graph design and Phase 51 scrolling.
- Global toolbar **Execute** and its Command-Return shortcut now navigate from Dashboard or another Administration screen to Schemas / SQL Editor before running the query.
- The query still runs through `DatabaseModel.runSQL()`; its existing results, error handling, and query history are unchanged.
- Focus is requested on the next main-loop turn after the SQL workspace is mounted.
- The in-editor Execute and Run Selection buttons retain their existing behaviour.
Verification: Swift syntax parsing and ZIP integrity on Linux. macOS build and UI testing not available here.
-9
View File
@@ -1,9 +0,0 @@
# Phase 54: SQL editor navigation
The workspace now renders an administration screen only while the Administration navigator is selected. This prevents stale administration-page state from obscuring the SQL editor after selecting Schemas.
Both global and editor Execute buttons route through `executeSQLInEditor()`, which selects Schemas, clears the administration page, executes SQL and requests editor focus on the next main-loop turn. Selecting a query tab also reveals and focuses the editor.
Phase 50 chart implementation and subsequent scroll changes are otherwise unchanged.
macOS build and visual verification must be performed in Xcode.
-11
View File
@@ -1,11 +0,0 @@
# Phase 55 — Schema browser objects
- Views folder expands to show discovered views. Double-click opens and executes a SELECT query with 500-row limit.
- Stored Procedures and Functions folders expand to show routines from `information_schema.ROUTINES`.
- Double-click a routine to display its definition using `SHOW CREATE PROCEDURE` or `SHOW CREATE FUNCTION` in the SQL editor results.
- Right-click actions are also available.
- Expanding a schema loads tables, views, and routine metadata. The Refresh Tables action refreshes all three types.
- Insufficient routine metadata permissions yield an empty routine list without breaking table browsing.
- The approved Phase 50 graphs and Phase 54 SQL navigation are unchanged.
Native macOS compilation and UI verification must be performed in Xcode.
-11
View File
@@ -1,11 +0,0 @@
# Phase 56 — Edit schema objects
Baseline: Phase 55. Schema navigator context menus for Views, Stored Procedures and Functions now provide **Edit Definition…**.
- Loads original DDL with `SHOW CREATE VIEW`, `SHOW CREATE PROCEDURE` or `SHOW CREATE FUNCTION`.
- Displays an editable full-definition SQL text editor, a reload-original button, and explicit save confirmation.
- Views are updated with `CREATE OR REPLACE VIEW`, preserving ALGORITHM / DEFINER clauses from MySQL's output.
- MySQL routines require DROP then CREATE; save explicitly warns that this is not atomic, and attempts to restore the original definition if recreation fails. Restoration may also fail. Backup and check grants/DEFINER before editing.
- Save errors are displayed without closing the editor. Schema objects are refreshed when the editor closes.
Swift syntax parsed on Linux; native macOS compilation and interactive database testing were not available.
-11
View File
@@ -1,11 +0,0 @@
# Phase 57 — Schema management
Based on Phase 56. Adds schema filtering and a richer schema context menu: default schema, filter/clear filter, inspector, copy schema name, send SHOW CREATE DATABASE to SQL editor, create/alter/drop schema, create table and refresh.
Create/alter forms submit MySQL DDL with selectable charset/collation. Drop requires typing the full schema name. The submitted statement's success or failure is shown by the existing SQL execution status; submission is not a guarantee of success. Refresh the schema list after the operation. The schema inspector currently offers a SHOW CREATE DATABASE action; full metadata inspector is planned for a later iteration.
The other features in the Phase 57 roadmap (spatial import, table data import wizard, search table data) are NOT implemented here; they are allocated to Phase 59. This release is not a complete clone of the Workbench context menu.
Local syntax check: `swiftc -frontend -parse WorkbenchReplacement/MainView.swift`. A full Xcode build and database tests must be run on macOS.
Direct release: `./scripts/release-workbench.sh 57 Schema-Management`.
-9
View File
@@ -1,9 +0,0 @@
# Phase 58 — SQL Editor Workflow
Based on Phase 57. Adds persistent recent SQL script history (12 files), Open Recent and Clear Recent menus, SQL editor toolbar buttons for opening/saving scripts, and a shared navigation notification so opening a script or creating a query tab from the macOS File menu reveals and focuses the SQL editor. Corrects query tab numbering interpolation. Existing query tabs, history, saved queries, formatting, schema completion and shortcuts remain intact.
## Testing
Swift sources passed `swiftc -frontend -parse` on Linux. This is not a macOS Xcode compile or live MySQL test. Build with `scripts/release-workbench.sh 58 SQL-Editor-Workflow` on a Mac. Verify opening scripts via File menu and toolbar, Open Recent, Save/Save As, new query tab, and dashboard-to-editor navigation.
## Remaining roadmap
Full configurable execution settings and advanced completion preferences remain for Phase 65 (Preferences System). This release does not claim to implement them.
+24
View File
@@ -0,0 +1,24 @@
# Phase 59 — Table Data Tools
Base: user-supplied `Archive(20261018-132203).zip` (project sources dated 18 October 2026).
## Implemented
- Right-click a table > **Search Table Data…**. Reads column metadata, lets the user choose a column, comparison, value and row limit; generates and runs a SELECT statement in the existing SQL editor.
- Right-click a table > **Import CSV Data…**. CSV wizard loads UTF-8 CSV with quoted-field and escaped-quote support; preview, first-row header toggle, destination column mapping, row progress and per-row errors.
- Right-click a schema > **Import CSV into New Table…**. Creates a new table with TEXT columns (or GEOMETRY columns for selected WKT fields) then imports CSV rows.
- Optional WKT geometry conversion using MySQL `ST_GeomFromText` for selected fields.
- A direct release script in `scripts/release-workbench.sh` builds a macOS Release target and packages project and app ZIPs.
## Limitations and safety
- CSV import executes one INSERT per row. Large files may take time; errors can leave partially imported rows. The wizard reports this.
- Importing into an existing table requires compatible column types, privileges, constraints and mappings.
- The new-table wizard defaults to TEXT; use schema editing to assign stronger types after import.
- WKT is supported; shapefile/GeoJSON file parsing is not included.
- The existing result grid remains read-only. Inline insert/update/delete is **not** implemented in this phase.
- CSV importer expects UTF-8 and comma delimiters.
- SQL literals use quoted strings; MySQL server SQL mode can affect backslash interpretation. Review data and back up tables before bulk import.
## Verification
- Swift parser: `swiftc -frontend -parse WorkbenchReplacement/MainView.swift` passed.
- ZIP integrity checked.
- Full Xcode compile, native UI and MySQL integration tests require macOS and are **not** verified here.