sqlite-hub 2.0.1 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -9
- package/docs/MCP.md +8 -0
- package/docs/changelog.md +16 -0
- package/docs/guidelines/DESIGN.md +64 -0
- package/docs/todo.md +2 -0
- package/frontend/assets/mockups/backups_1_1920.webp +0 -0
- package/frontend/assets/mockups/backups_2_compare_drawer_1920.webp +0 -0
- package/frontend/assets/mockups/backups_3_create_backup_modal_1920.webp +0 -0
- package/frontend/assets/mockups/backups_4_edit_backup_modal_1920.webp +0 -0
- package/frontend/assets/mockups/backups_5_restore_backup_modal_1920.webp +0 -0
- package/frontend/assets/mockups/backups_6_delete_backup_modal_1920.webp +0 -0
- package/frontend/assets/mockups/charts_1_1920.webp +0 -0
- package/frontend/assets/mockups/charts_2_query_detail_1920.webp +0 -0
- package/frontend/assets/mockups/charts_3_create_query_chart_modal_1920.webp +0 -0
- package/frontend/assets/mockups/charts_4_edit_query_chart_modal_1920.webp +0 -0
- package/frontend/assets/mockups/charts_5_delete_query_chart_modal_1920.webp +0 -0
- package/frontend/assets/mockups/charts_6_copy_column_modal_1920.webp +0 -0
- package/frontend/assets/mockups/connections_1_1920.webp +0 -0
- package/frontend/assets/mockups/connections_2_create_connection_modal_1920.webp +0 -0
- package/frontend/assets/mockups/connections_3_open_connection_modal_1920.webp +0 -0
- package/frontend/assets/mockups/data_1_1920.webp +0 -0
- package/frontend/assets/mockups/data_2_roweditor_1920.webp +0 -0
- package/frontend/assets/mockups/data_3_generate_data_modal_1920.webp +0 -0
- package/frontend/assets/mockups/data_4_data_export_modal_1920.webp +0 -0
- package/frontend/assets/mockups/documents_1_1920.webp +0 -0
- package/frontend/assets/mockups/documents_2_document_insert_table_modal_1920.webp +0 -0
- package/frontend/assets/mockups/documents_3_document_insert_note_modal_1920.webp +0 -0
- package/frontend/assets/mockups/logs_1_1920.webp +0 -0
- package/frontend/assets/mockups/media_tagging_queue_1_1920.webp +0 -0
- package/frontend/assets/mockups/media_tagging_setup_1_1920.webp +0 -0
- package/frontend/assets/mockups/media_tagging_setup_2_create_media_tagging_tag_table_modal_1920.webp +0 -0
- package/frontend/assets/mockups/media_tagging_setup_3_create_media_tagging_mapping_table_modal_1920.webp +0 -0
- package/frontend/assets/mockups/overview_1_1920.webp +0 -0
- package/frontend/assets/mockups/settings_1_1920.webp +0 -0
- package/frontend/assets/mockups/sql_editor_1_1920.webp +0 -0
- package/frontend/assets/mockups/sql_editor_2_query_detail_1920.webp +0 -0
- package/frontend/assets/mockups/sql_editor_3_query_export_modal_1920.webp +0 -0
- package/frontend/assets/mockups/structure_1_1920.webp +0 -0
- package/frontend/assets/mockups/structure_2_generate_types_modal_1920.webp +0 -0
- package/frontend/assets/mockups/structure_3_generate_types_modal_1920.webp +0 -0
- package/frontend/assets/mockups/table_designer_1_1920.webp +0 -0
- package/frontend/assets/mockups/table_designer_2_table_designer_constraints_modal_1920.webp +0 -0
- package/frontend/js/api.js +18 -0
- package/frontend/js/app.js +567 -15
- package/frontend/js/components/badges.js +16 -0
- package/frontend/js/components/connectionCard.js +35 -0
- package/frontend/js/components/modal.js +268 -247
- package/frontend/js/components/queryHistoryDetail.js +25 -45
- package/frontend/js/components/rowEditorPanel.js +7 -60
- package/frontend/js/components/structureGraph.js +292 -13
- package/frontend/js/components/tableDesignerConstraintsDrawer.js +400 -0
- package/frontend/js/components/tableDesignerEditor.js +51 -16
- package/frontend/js/components/tableDesignerSidebar.js +9 -5
- package/frontend/js/store.js +1847 -190
- package/frontend/js/utils/connectionRegistry.js +76 -0
- package/frontend/js/utils/markdownDocuments.js +21 -4
- package/frontend/js/utils/tableDesigner.js +431 -62
- package/frontend/js/views/backups.js +2 -5
- package/frontend/js/views/charts.js +20 -10
- package/frontend/js/views/connections.js +101 -6
- package/frontend/js/views/data.js +52 -9
- package/frontend/js/views/documents.js +153 -59
- package/frontend/js/views/structure.js +28 -5
- package/frontend/js/views/tableAdvisor.js +14 -6
- package/frontend/js/views/tableDesigner.js +44 -9
- package/frontend/styles/base.css +9 -0
- package/frontend/styles/components.css +676 -79
- package/frontend/styles/structure-graph.css +49 -0
- package/frontend/styles/tailwind.generated.css +1 -1
- package/frontend/styles/views.css +12 -0
- package/package.json +1 -1
- package/server/routes/backups.js +37 -1
- package/server/routes/charts.js +28 -0
- package/server/routes/connections.js +12 -0
- package/server/routes/data.js +30 -2
- package/server/routes/documents.js +61 -5
- package/server/routes/settings.js +32 -0
- package/server/routes/tableDesigner.js +35 -2
- package/server/server.js +3 -3
- package/server/services/mcpToolService.js +30 -0
- package/server/services/sqlite/connectionManager.js +25 -2
- package/server/services/sqlite/dataBrowserService.js +21 -0
- package/server/services/sqlite/introspection.js +39 -1
- package/server/services/sqlite/overviewService.js +1 -0
- package/server/services/sqlite/structureService.js +66 -11
- package/server/services/sqlite/tableAdvisor.js +6 -0
- package/server/services/sqlite/tableDesigner/schemaMapping.js +7 -1
- package/server/services/sqlite/tableDesigner/sql.js +31 -2
- package/server/services/sqlite/tableDesigner/validation.js +69 -9
- package/server/services/sqlite/tableDesignerService.js +110 -5
- package/server/services/storage/appStateStore.js +590 -10
- package/server/utils/fileValidation.js +5 -0
- package/server/utils/userActionLog.js +49 -0
- package/frontend/assets/mockups/backups_2_create_backup_modal_1920.webp +0 -0
- package/frontend/assets/mockups/backups_3_edit_backup_modal_1920.webp +0 -0
- package/frontend/assets/mockups/backups_4_restore_backup_modal_1920.webp +0 -0
- package/frontend/assets/mockups/backups_5_delete_backup_modal_1920.webp +0 -0
- package/frontend/assets/mockups/data_3_data_export_modal_1920.webp +0 -0
package/README.md
CHANGED
|
@@ -39,6 +39,7 @@ SQLite Hub keeps that workflow sharp:
|
|
|
39
39
|
- inspect database health, storage metrics, and schema connectivity from one overview
|
|
40
40
|
- filter, sort, page through, and export table data
|
|
41
41
|
- inspect schema, structure, and relationships
|
|
42
|
+
- recognize virtual and shadow tables with visual badges and Structure graph links
|
|
42
43
|
- analyze individual tables with a deterministic local advisor
|
|
43
44
|
- generate TypeScript, Rust, Kotlin, or Swift types from table schemas
|
|
44
45
|
- edit records in place with typed value previews and an SQL diff preview before saving
|
|
@@ -59,7 +60,7 @@ SQLite Hub keeps that workflow sharp:
|
|
|
59
60
|
|
|
60
61
|
[](./frontend/assets/mockups/structure_1_1920.webp)
|
|
61
62
|
|
|
62
|
-
Inspect tables, views, indexes, triggers, columns, declared types, primary keys, nullability, foreign keys, and DDL without losing pace. The searchable object list and relationship graph support fit, relayout, selection clearing, direct navigation to table data, and a hideable inspector/sidebar. Clicking a relationship edge opens a join preview with the mapped columns and a copyable SQL `JOIN` snippet.
|
|
63
|
+
Inspect tables, views, indexes, triggers, columns, declared types, primary keys, nullability, foreign keys, and DDL without losing pace. The searchable object list and relationship graph support fit, relayout, selection clearing, direct navigation to table data, and a hideable inspector/sidebar. Virtual tables and SQLite shadow tables are visually marked; shadow tables are grouped separately and connected to their owning virtual table in the graph. Clicking a relationship edge opens a join preview with the mapped columns and a copyable SQL `JOIN` snippet.
|
|
63
64
|
|
|
64
65
|
### Generate Types
|
|
65
66
|
|
|
@@ -84,15 +85,17 @@ For each table, SQLite Hub calculates a score, lists findings by severity, shows
|
|
|
84
85
|
|
|
85
86
|
[](./frontend/assets/mockups/data_1_1920.webp)
|
|
86
87
|
|
|
87
|
-
Scan rows, sort columns, move through local data quickly, and export full tables as CSV, TSV, Markdown, JSON, or Parquet.
|
|
88
|
+
Scan rows, sort columns, move through local data quickly, and export full tables as CSV, TSV, Markdown, JSON, or Parquet. Virtual and shadow tables are tagged in the table list, and shadow tables open read-only.
|
|
88
89
|
|
|
89
90
|
Use `Generate` in the Data browser to create local synthetic test rows from the current table schema. The generator respects required columns, foreign keys, simple `CHECK` constraints, and shows a preview before insertion.
|
|
90
91
|
|
|
92
|
+
[](./frontend/assets/mockups/data_3_generate_data_modal_1920.webp)
|
|
93
|
+
|
|
91
94
|
The Data browser also supports duplicating exports as a new table, searchable and hideable table navigation, page sizes up to 250 rows, and advanced filters with column/operator/value controls. Text filters support case-insensitive `contains`, `not contains`, and exact `equals` matching.
|
|
92
95
|
|
|
93
96
|
Wide tables keep their horizontal scroll position when sorting causes the grid to re-render. Cells use compact previews for long values, BLOBs, and detected file paths, while exports retain complete BLOB content.
|
|
94
97
|
|
|
95
|
-
[](./frontend/assets/mockups/data_4_data_export_modal_1920.webp)
|
|
96
99
|
|
|
97
100
|
### Row editing
|
|
98
101
|
|
|
@@ -151,6 +154,13 @@ The preview supports regular Markdown, ordered and unordered lists, tables, code
|
|
|
151
154
|
- Insert Note opens saved queries that have notes and inserts the selected note directly into the document.
|
|
152
155
|
- Markdown Todo column exports from query results can create a new document without embedding the original SQL query.
|
|
153
156
|
|
|
157
|
+
Documents also support Magic Snippets from the Insert menu:
|
|
158
|
+
|
|
159
|
+
- Insert Time Metadata adds `created at` and `last modified` lines for the document.
|
|
160
|
+
- Insert Database Info adds current database size, estimated pages, table count, and journal mode.
|
|
161
|
+
|
|
162
|
+
Magic Snippets are managed blocks. When a document is opened, SQLite Hub refreshes existing Time Metadata and Database Info snippets with the latest document/database values.
|
|
163
|
+
|
|
154
164
|
<p>
|
|
155
165
|
<a href="./frontend/assets/mockups/documents_2_document_insert_table_modal_1920.webp"><img src="./frontend/assets/mockups/documents_2_document_insert_table_modal_1920.webp" alt="SQLite Hub insert saved query table into a document" width="49%"></a>
|
|
156
166
|
<a href="./frontend/assets/mockups/documents_3_document_insert_note_modal_1920.webp"><img src="./frontend/assets/mockups/documents_3_document_insert_note_modal_1920.webp" alt="SQLite Hub insert saved query note into a document" width="49%"></a>
|
|
@@ -180,7 +190,7 @@ Create bar, line, pie/donut, and scatter charts from chartable `SELECT` query-hi
|
|
|
180
190
|
|
|
181
191
|
Create and edit SQLite tables from the UI. The Table Designer includes a searchable table list, validation and migration warnings, and controls for column names, SQLite types, `NOT NULL`, `UNIQUE`, primary keys, SQL defaults, foreign-key tables/columns, and check constraints. Existing composite unique constraints are surfaced as schema metadata.
|
|
182
192
|
|
|
183
|
-
CSV files can seed a new table draft and optionally fill the created table with imported rows. Every change produces a copyable live SQL preview that can be hidden or shown before the schema operation is applied.
|
|
193
|
+
CSV, TSV, and JSON files can seed a new table draft and optionally fill the created table with imported rows. Every change produces a copyable live SQL preview that can be hidden or shown before the schema operation is applied.
|
|
184
194
|
|
|
185
195
|
[](./frontend/assets/mockups/table_designer_2_table_designer_constraints_modal_1920.webp)
|
|
186
196
|
|
|
@@ -209,7 +219,9 @@ The Settings view reports the installed SQLite Hub version and the actual SQLite
|
|
|
209
219
|
|
|
210
220
|
[](./frontend/assets/mockups/backups_1_1920.webp)
|
|
211
221
|
|
|
212
|
-
Create verified local backups of the active SQLite database, review backup metadata, edit backup notes, download backup files, restore verified backups, and delete managed backups from the Backups view. SQLite Hub stores backup files under its local app-state backup directory by connection id and keeps a `manifest.json` beside each database's backup files. Each backup is created through SQLite's backup API, hashed with SHA-256, and verified with `PRAGMA quick_check` before it is marked as verified.
|
|
222
|
+
Create verified local backups of the active SQLite database, compare backup contents with the current database, review backup metadata, edit backup notes, download backup files, restore verified backups, and delete managed backups from the Backups view. SQLite Hub stores backup files under its local app-state backup directory by connection id and keeps a `manifest.json` beside each database's backup files. Each backup is created through SQLite's backup API, hashed with SHA-256, and verified with `PRAGMA quick_check` before it is marked as verified.
|
|
223
|
+
|
|
224
|
+
[](./frontend/assets/mockups/backups_2_compare_drawer_1920.webp)
|
|
213
225
|
|
|
214
226
|
SQLite Hub also proposes a safety backup before operations that can be hard to undo:
|
|
215
227
|
|
|
@@ -221,13 +233,13 @@ SQLite Hub also proposes a safety backup before operations that can be hard to u
|
|
|
221
233
|
The safety dialog lets you create the backup and continue, continue without creating one, or cancel the operation.
|
|
222
234
|
|
|
223
235
|
<p>
|
|
224
|
-
<a href="./frontend/assets/mockups/
|
|
225
|
-
<a href="./frontend/assets/mockups/
|
|
236
|
+
<a href="./frontend/assets/mockups/backups_3_create_backup_modal_1920.webp"><img src="./frontend/assets/mockups/backups_3_create_backup_modal_1920.webp" alt="SQLite Hub create backup modal" width="49%"></a>
|
|
237
|
+
<a href="./frontend/assets/mockups/backups_4_edit_backup_modal_1920.webp"><img src="./frontend/assets/mockups/backups_4_edit_backup_modal_1920.webp" alt="SQLite Hub edit backup modal" width="49%"></a>
|
|
226
238
|
</p>
|
|
227
239
|
|
|
228
240
|
<p>
|
|
229
|
-
<a href="./frontend/assets/mockups/
|
|
230
|
-
<a href="./frontend/assets/mockups/
|
|
241
|
+
<a href="./frontend/assets/mockups/backups_5_restore_backup_modal_1920.webp"><img src="./frontend/assets/mockups/backups_5_restore_backup_modal_1920.webp" alt="SQLite Hub restore backup modal" width="49%"></a>
|
|
242
|
+
<a href="./frontend/assets/mockups/backups_6_delete_backup_modal_1920.webp"><img src="./frontend/assets/mockups/backups_6_delete_backup_modal_1920.webp" alt="SQLite Hub delete backup modal" width="49%"></a>
|
|
231
243
|
</p>
|
|
232
244
|
|
|
233
245
|
### Overview
|
package/docs/MCP.md
CHANGED
|
@@ -58,11 +58,13 @@ Read-only and safe tools:
|
|
|
58
58
|
- `get_indexes`: return all indexes or indexes for one table.
|
|
59
59
|
- `get_foreign_keys`: return all foreign keys or foreign keys for one table.
|
|
60
60
|
- `run_readonly_query`: execute a read-only `SELECT`, `PRAGMA`, or `EXPLAIN` query.
|
|
61
|
+
- `get_saved_queries`: list saved SQL Editor queries for a database, equivalent to `sqlite-hub --database:name --queries`.
|
|
61
62
|
- `explain_query_plan`: run `EXPLAIN QUERY PLAN` and return structured plan rows plus index hints when a table scan appears.
|
|
62
63
|
- `read_documents`: read database-scoped Markdown documents.
|
|
63
64
|
|
|
64
65
|
Controlled write tools:
|
|
65
66
|
|
|
67
|
+
- `execute_stored_query`: execute a saved SQL Editor query by id, title, display title, or SQL fragment, equivalent to `sqlite-hub --database:name --execute:"query"`.
|
|
66
68
|
- `create_backup`: create a verified backup through SQLite Hub's existing backup mechanism.
|
|
67
69
|
- `generate_types`: generate TypeScript, Rust, Kotlin, or Swift types from one table or all tables.
|
|
68
70
|
- `create_chart_from_query`: create a saved chart from a read-only `SELECT` query. It writes chart metadata to SQLite Hub but does not export files.
|
|
@@ -86,6 +88,8 @@ These statements are blocked in `run_readonly_query`:
|
|
|
86
88
|
|
|
87
89
|
Backups are always created through SQLite Hub's managed backup service. Chart creation stores chart metadata only. The MCP server does not write arbitrary local files.
|
|
88
90
|
|
|
91
|
+
`execute_stored_query` intentionally follows the same behavior as the CLI and external API saved-query execution path. It executes the stored SQL as-is and records the run in Query History with `executedBy: "mcp"`.
|
|
92
|
+
|
|
89
93
|
The HTTP MCP endpoint runs on SQLite Hub's existing loopback server. It is local-only and uses the same localhost request guard as the internal API. API tokens are not exposed through MCP tool responses.
|
|
90
94
|
|
|
91
95
|
## Settings Status
|
|
@@ -107,3 +111,7 @@ Use SQLite Hub MCP to create a backup before generating TypeScript types.
|
|
|
107
111
|
```text
|
|
108
112
|
Use SQLite Hub MCP to explain the query plan for this SQL query.
|
|
109
113
|
```
|
|
114
|
+
|
|
115
|
+
```text
|
|
116
|
+
Use SQLite Hub MCP to list my saved queries and execute the one named "Company List".
|
|
117
|
+
```
|
package/docs/changelog.md
CHANGED
|
@@ -1,3 +1,19 @@
|
|
|
1
|
+
# v2.2.0
|
|
2
|
+
|
|
3
|
+
- better documents features, magic snippets, better auto save, complette overhaul
|
|
4
|
+
- directories for documents
|
|
5
|
+
- better logging
|
|
6
|
+
|
|
7
|
+
# v2.1.0
|
|
8
|
+
|
|
9
|
+
- tags for databases
|
|
10
|
+
- search for database
|
|
11
|
+
- table designer accepts json, csv, tsv
|
|
12
|
+
- drawer headers are unified
|
|
13
|
+
- more mcp functions
|
|
14
|
+
- badges for shadow and virtual tables
|
|
15
|
+
- structure visual support for shadow tables
|
|
16
|
+
|
|
1
17
|
# v2.0.0
|
|
2
18
|
|
|
3
19
|
- mcp
|
|
@@ -39,6 +39,22 @@ Follow these rules exactly when creating or modifying UI controls.
|
|
|
39
39
|
- Prefer migration over local override.
|
|
40
40
|
- Prefer shared component updates over per-view fixes.
|
|
41
41
|
|
|
42
|
+
## Multi-Pick Dropdowns
|
|
43
|
+
|
|
44
|
+
- Use this pattern for compact filters where the user can select multiple values, such as `TAGS`.
|
|
45
|
+
- Use `details.dropdown-button` with a `standard-button dropdown-button__toggle` summary.
|
|
46
|
+
- The toggle must have a fixed or bounded responsive width; it must not grow with long selected values.
|
|
47
|
+
- The toggle label must be wrapped in its own label span with `min-width: 0`, `overflow: hidden`, `text-overflow: ellipsis`, and `white-space: nowrap`.
|
|
48
|
+
- The toggle must keep a mandatory left inset. Do not rely only on inherited button padding; set explicit left padding on the pattern class when needed.
|
|
49
|
+
- The chevron must remain visible for all selected labels.
|
|
50
|
+
- Put the full selected label in `title` when the visible label may truncate.
|
|
51
|
+
- The dropdown panel must have visible inner padding. Header text, checkbox rows, and footer actions must never touch the panel edge.
|
|
52
|
+
- Multi-pick rows must use a stable grid: checkbox, truncated label, optional count.
|
|
53
|
+
- Row labels should follow the existing technical style: mono, uppercase, compact, and muted until hover or active state.
|
|
54
|
+
- Counts belong on the right edge and must not compress the label into the checkbox.
|
|
55
|
+
- The reset action belongs in a compact footer row, visually secondary to the selected values.
|
|
56
|
+
- Do not use native `<select multiple>` for this app UI.
|
|
57
|
+
|
|
42
58
|
## UX behavior
|
|
43
59
|
|
|
44
60
|
- All drawers must close with `Escape`.
|
|
@@ -49,6 +65,54 @@ Follow these rules exactly when creating or modifying UI controls.
|
|
|
49
65
|
- Do not clear multiline textareas with `Escape` unless the textarea is explicitly built as a search field.
|
|
50
66
|
- If an input is already empty, `Escape` may continue to the next applicable close/clear behavior.
|
|
51
67
|
|
|
68
|
+
## Drawer Inventory
|
|
69
|
+
|
|
70
|
+
- Backup Compare Drawer
|
|
71
|
+
- Charts Query Detail Drawer
|
|
72
|
+
- Table Designer Check Constraints Drawer
|
|
73
|
+
- SQL Editor Query History Drawer
|
|
74
|
+
- Data Row Editor Drawer
|
|
75
|
+
|
|
76
|
+
## Drawer Header Pattern
|
|
77
|
+
|
|
78
|
+
- Every drawer header must use one small mono eyebrow followed directly by one `h2`.
|
|
79
|
+
- The eyebrow uses `font-mono text-[10px] uppercase tracking-[0.18em] text-primary-container/70`.
|
|
80
|
+
- The `h2` uses `mt-1 truncate font-body text-lg font-black uppercase tracking-tight text-on-surface`.
|
|
81
|
+
- Drawer context belongs in the eyebrow as `Feature // Context`.
|
|
82
|
+
- Do not add a third subtitle line under the `h2`.
|
|
83
|
+
- Drawer badges must use `status-badge status-badge--muted`.
|
|
84
|
+
|
|
85
|
+
## Modal Inventory
|
|
86
|
+
|
|
87
|
+
All app modals use the shared shell in `frontend/js/components/modal.js` through `renderModal(state)` and its `contentByKind` map. The single modal state lives at `state.modal`. The generic opener is `openModal(kind, options)` in `frontend/js/store.js`; generic `data-action="open-modal"` dispatch is handled in `frontend/js/app.js`.
|
|
88
|
+
|
|
89
|
+
| Modal kind | Where it appears | Open/state owner | Body renderer |
|
|
90
|
+
| ------------------------------------ | ---------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------- |
|
|
91
|
+
| `open-connection` | Landing and Connections entry actions in `frontend/js/components/emptyState.js` and `frontend/js/views/connections.js` | Generic `openModal()` with `data-modal="open-connection"` | `renderOpenConnectionForm()` |
|
|
92
|
+
| `create-connection` | Landing and Connections entry actions in `frontend/js/components/emptyState.js` and `frontend/js/views/connections.js` | Generic `openModal()` with `data-modal="create-connection"` | `renderCreateDatabaseForm()` |
|
|
93
|
+
| `import-sql` | Existing import modal path; no current visible opener found | Generic `openModal('import-sql')` if a trigger is added; submitted by `submitImportSql()` in `frontend/js/store.js` | `renderImportSqlForm()` |
|
|
94
|
+
| `edit-connection` | Connection cards in `frontend/js/components/connectionCard.js` | `openEditConnectionModal()` in `frontend/js/store.js`; `edit-connection` action in `frontend/js/app.js` | `renderEditConnectionForm()` |
|
|
95
|
+
| `create-backup` | Backups route actions in `frontend/js/views/backups.js` | `openCreateBackupModal()` in `frontend/js/store.js`; `open-create-backup-modal` action in `frontend/js/app.js` | `renderCreateBackupForm()` |
|
|
96
|
+
| `edit-backup` | Backup row actions in `frontend/js/views/backups.js` | `openEditBackupModal()` in `frontend/js/store.js`; `open-edit-backup-modal` action in `frontend/js/app.js` | `renderEditBackupForm()` |
|
|
97
|
+
| `delete-backup` | Backup row actions in `frontend/js/views/backups.js` | `openDeleteBackupModal()` in `frontend/js/store.js`; `open-delete-backup-modal` action in `frontend/js/app.js` | `renderDeleteBackupForm()` |
|
|
98
|
+
| `backup-safety` | Restore, SQL execution, and import safety flows | `openRestoreBackupModal()` plus safety branches in `frontend/js/store.js`; `backup-safety-create`, `backup-safety-continue`, and `backup-safety-cancel` actions in `frontend/js/app.js` | `renderBackupSafetyForm()` |
|
|
99
|
+
| `generate-types` | Structure/Table tooling via `frontend/js/components/generateTypesDropdown.js` | `openGenerateTypesModal()` in `frontend/js/store.js`; `open-generate-types-modal` action in `frontend/js/app.js` | `renderGenerateTypesForm()` |
|
|
100
|
+
| `generate-data` | Data Browser actions in `frontend/js/views/data.js` | `openGenerateDataModal()` in `frontend/js/store.js`; `open-generate-data-modal` action in `frontend/js/app.js` | `renderGenerateDataForm()` |
|
|
101
|
+
| `delete-row` | Data Browser rows and SQL Editor editable result rows | `openDeleteDataRowModal()` and `openDeleteEditorRowModal()` in `frontend/js/store.js`; `delete-data-row` and `delete-editor-row` actions in `frontend/js/app.js` | `renderDeleteRowConfirmForm()` |
|
|
102
|
+
| `row-update-preview` | Data Browser and SQL Editor row edit preview flow | Row update preview state branches in `frontend/js/store.js`; `apply-row-update-preview` action in `frontend/js/app.js` | `renderRowUpdatePreviewForm()` |
|
|
103
|
+
| `chart-editor` | Charts detail actions in `frontend/js/views/charts.js` | `openCreateQueryChartModal()` and `openEditQueryChartModal()` in `frontend/js/store.js`; `open-create-query-chart-modal` and `open-edit-query-chart-modal` actions in `frontend/js/app.js` | `renderChartEditorForm()` |
|
|
104
|
+
| `delete-chart` | Charts detail chart actions in `frontend/js/views/charts.js` | `openDeleteQueryChartModal()` in `frontend/js/store.js`; `open-delete-query-chart-modal` action in `frontend/js/app.js` | `renderDeleteChartForm()` |
|
|
105
|
+
| `delete-query-history` | Query history detail/actions in `frontend/js/components/queryHistoryDetail.js` | `openDeleteQueryHistoryModal()` in `frontend/js/store.js`; `open-delete-query-history-modal` action in `frontend/js/app.js` | `renderDeleteQueryHistoryForm()` |
|
|
106
|
+
| `delete-document` | Documents route actions in `frontend/js/views/documents.js` | `openDeleteDocumentModal()` in `frontend/js/store.js`; `delete-document` action in `frontend/js/app.js` | `renderDeleteDocumentForm()` |
|
|
107
|
+
| `delete-api-token` | Settings API token actions in `frontend/js/views/settings.js` | `openDeleteSettingsApiTokenModal()` in `frontend/js/store.js`; `open-delete-api-token-modal` action in `frontend/js/app.js` | `renderDeleteApiTokenForm()` |
|
|
108
|
+
| `document-insert-table` | Documents editor insert menu in `frontend/js/views/documents.js` | `openDocumentInsertTableModal()` in `frontend/js/store.js`; `open-document-insert-table-modal` action in `frontend/js/app.js` | `renderDocumentInsertTableForm()` |
|
|
109
|
+
| `document-insert-note` | Documents editor insert menu in `frontend/js/views/documents.js` | `openDocumentInsertNoteModal()` in `frontend/js/store.js`; `open-document-insert-note-modal` action in `frontend/js/app.js` | `renderDocumentInsertNoteForm()` |
|
|
110
|
+
| `query-export` | SQL Editor toolbar in `frontend/js/components/queryEditor.js` | `openQueryExportModal()` in `frontend/js/store.js`; `open-query-export-modal` action in `frontend/js/app.js` | `renderQueryExportModal()` |
|
|
111
|
+
| `data-export` | Data Browser actions in `frontend/js/views/data.js` | `openDataExportModal()` in `frontend/js/store.js`; `open-data-export-modal` action in `frontend/js/app.js` | `renderDataExportModal()` |
|
|
112
|
+
| `copy-column` | Query/Data result column actions in `frontend/js/components/queryResults.js` | `openCopyColumnModal()` in `frontend/js/store.js`; `open-copy-column-modal` action in `frontend/js/app.js` | `renderCopyColumnModal()` |
|
|
113
|
+
| `create-media-tagging-tag-table` | Media Tagging setup in `frontend/js/views/mediaTagging.js` | Generic `openModal()` with `data-modal="create-media-tagging-tag-table"`; submitted by `submitCreateMediaTaggingTagTable()` in `frontend/js/store.js` | `renderCreateMediaTaggingTagTableForm()` |
|
|
114
|
+
| `create-media-tagging-mapping-table` | Media Tagging setup in `frontend/js/views/mediaTagging.js` | Generic `openModal()` with `data-modal="create-media-tagging-mapping-table"`; submitted by `submitCreateMediaTaggingMappingTable()` in `frontend/js/store.js` | `renderCreateMediaTaggingMappingTableForm()` |
|
|
115
|
+
|
|
52
116
|
## History elements
|
|
53
117
|
|
|
54
118
|
- Query history panels, such as SQL Editor and Charts history, are always placed on the right side.
|
package/docs/todo.md
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/frontend/assets/mockups/media_tagging_setup_2_create_media_tagging_tag_table_modal_1920.webp
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/frontend/js/api.js
CHANGED
|
@@ -68,6 +68,10 @@ export function getRecentConnections() {
|
|
|
68
68
|
return request("/api/connections/recent");
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
+
export function getConnectionTags() {
|
|
72
|
+
return request("/api/connections/tags");
|
|
73
|
+
}
|
|
74
|
+
|
|
71
75
|
export function getActiveConnection() {
|
|
72
76
|
return request("/api/connections/active");
|
|
73
77
|
}
|
|
@@ -400,6 +404,13 @@ export function saveTableDesignerDraft(payload) {
|
|
|
400
404
|
});
|
|
401
405
|
}
|
|
402
406
|
|
|
407
|
+
export function validateTableDesignerCheck(payload) {
|
|
408
|
+
return request("/api/table-designer/validate-check", {
|
|
409
|
+
method: "POST",
|
|
410
|
+
body: payload,
|
|
411
|
+
});
|
|
412
|
+
}
|
|
413
|
+
|
|
403
414
|
export function getMediaTaggingState() {
|
|
404
415
|
return request("/api/media-tagging");
|
|
405
416
|
}
|
|
@@ -660,6 +671,13 @@ export function createDocument(payload = {}) {
|
|
|
660
671
|
});
|
|
661
672
|
}
|
|
662
673
|
|
|
674
|
+
export function createDocumentFolder(payload = {}) {
|
|
675
|
+
return request("/api/documents/folders", {
|
|
676
|
+
method: "POST",
|
|
677
|
+
body: payload,
|
|
678
|
+
});
|
|
679
|
+
}
|
|
680
|
+
|
|
663
681
|
export function getDocument(documentId) {
|
|
664
682
|
return request(`/api/documents/${encodeURIComponent(documentId)}`);
|
|
665
683
|
}
|