Skip to content

Drill-XXXX: Refactor User Interface - #3037

Draft
cgivre wants to merge 299 commits into
apache:masterfrom
cgivre:feature/sqllab-react-ui
Draft

cgivre wants to merge 299 commits into
apache:masterfrom
cgivre:feature/sqllab-react-ui

Conversation

@cgivre

@cgivre cgivre commented Feb 6, 2026

Copy link
Copy Markdown
Contributor

DRILL-XXXX: Refactor User Interface

Description

This PR refactors Drill's UI and refactors the Query view, adds visualizations and dashboards and in general makes Drill much more user friendly.

Screenshot 2026-02-06 at 10 36 16 Screenshot 2026-02-06 at 10 36 23 Screenshot 2026-02-06 at 10 36 30 Screenshot 2026-02-06 at 10 36 40

Documentation

(Please describe user-visible changes similar to what should appear in the Drill documentation.)

Testing

(Please describe how this PR has been tested.)

@cgivre cgivre self-assigned this Feb 6, 2026
@cgivre cgivre changed the title User Interface Improvements Drill-XXXX: Refactor User Interface Feb 6, 2026
@cgivre cgivre added enhancement PRs that add a new functionality to Drill doc-impacting PRs that affect the documentation ui PRs relating to the User Interface major-update labels Feb 6, 2026
@cgivre
cgivre force-pushed the feature/sqllab-react-ui branch from 080ba0b to 36af30f Compare March 9, 2026 13:45
Comment thread exec/java-exec/src/main/resources/webapp/src/hooks/usePyodide.ts Fixed
Comment thread exec/java-exec/src/main/resources/webapp/src/hooks/usePyodide.ts Fixed
Comment thread exec/java-exec/src/main/resources/webapp/src/hooks/usePyodide.ts Fixed
Comment thread exec/java-exec/src/main/resources/webapp/src/hooks/usePyodide.ts Fixed
Comment thread exec/java-exec/src/main/resources/webapp/src/hooks/usePyodide.ts Fixed
Comment thread exec/java-exec/src/main/resources/webapp/src/hooks/usePyodide.ts Fixed
Comment thread exec/java-exec/src/main/resources/webapp/src/hooks/usePyodide.ts Fixed
Comment thread exec/java-exec/src/main/resources/webapp/src/hooks/usePyodide.ts Fixed
@cgivre
cgivre force-pushed the feature/sqllab-react-ui branch 2 times, most recently from 33fb68e to 34bfc23 Compare March 25, 2026 13:50
@cgivre
cgivre force-pushed the feature/sqllab-react-ui branch from 1b68007 to bc4e985 Compare June 16, 2026 14:20
@cgivre
cgivre force-pushed the feature/sqllab-react-ui branch 2 times, most recently from ff3d719 to dc96869 Compare June 25, 2026 17:38
Comment thread exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/StatusResources.java Dismissed
@cgivre
cgivre force-pushed the feature/sqllab-react-ui branch from dfde1d3 to 5d16fd0 Compare July 30, 2026 18:12
@cgivre
cgivre force-pushed the feature/sqllab-react-ui branch from 1cdcb53 to 09690cf Compare August 10, 2026 20:26
@cgivre
cgivre force-pushed the feature/sqllab-react-ui branch from 3aac985 to 65f6b74 Compare August 20, 2026 11:00
@cgivre
cgivre force-pushed the feature/sqllab-react-ui branch from 1ffabfe to fbcc239 Compare August 27, 2026 16:24
@cgivre
cgivre force-pushed the feature/sqllab-react-ui branch from dd37032 to 2d6a668 Compare September 8, 2026 18:06
cgivre and others added 22 commits September 17, 2026 10:35
Add AccumuloForm with connection, password/Kerberos authentication, auth
mode, and advanced settings, covering every property on
AccumuloStoragePluginConfig except credentialsProvider, which stays on the
JSON tab as it does for the other plugins.

Register the form in the datasource index, the edit page switch, and the
guided form type list, and add an Accumulo template, logo, and gradient so
the plugin appears in the create flow.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Describe generating a standalone report from a Prospector conversation,
saving it into a project wiki under a Reports folder, and downloading any
wiki page as a PDF. Email delivery and headless generation are deferred,
with notes on what each would need.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Prospector now offers to save a report rather than waiting to be asked: a
heuristic chip under report-like messages, and a save_report tool the model
can call when it offers in conversation. Saving gains sticky dismissal,
update-on-matching-title, a provenance footer, and an appendix of the
queries behind the findings.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Nine tasks: the wiki folder field, report utilities under test, folder
grouping, PDF download by print stylesheet, the save modal, the suggestion
chip, the Generate Report action, and the save_report tool.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Adds a small chip under assistant messages that pass looksLikeReport,
offering to save them into the project's Reports folder. Dismissal is
owned by ChatMessageList (keyed on the message's position in the
visible conversation, since ChatMessage has no id) and persisted per
tab in localStorage alongside the chat history itself.
Index-keying mistargeted a dismissal onto an unrelated message whenever
the conversation array was wholesale-replaced (clearChat, the
server-merge-on-mount path). messageKey hashes message content into a
stable string key instead, which survives replacement and reordering;
two identical report messages sharing one dismissal is intended. The
loader drops a stale array from the old index-keyed format instead of
trusting it.
- Invalidate the project/projects React Query cache after a report save
  (modal and save_report tool) so the duplicate-title check and wiki page
  list are never fooled by a five-minute-stale cache.
- Wire the tab id through useProspector (UseProspectorReturn.tabId) and
  have ProspectorPanel pass it as SaveReportModal's conversationId, so
  chip/modal saves get the same provenance footer as save_report saves.
- Scope the query appendix to messages up to the report being saved: thread
  the message's index through ChatMessageBubble/ChatMessageList and slice
  before handing messages to SaveReportModal.
- Add tabId (and queryClient) to executeToolCall's dependency array so a
  tab switch can't stamp the previous tab's id into a save_report footer.
- Release the app shell's fixed-height/overflow-hidden containers inside
  the print stylesheet so a multi-page report doesn't get clipped to one
  printed page.
- Add a QueryClientProvider wrapper to useProspector.test.tsx renderHook
  calls, needed now that the hook reads useQueryClient().
The footer now records only the timestamp and the source conversation. Naming
the model would mean mirroring provider and model from the admin-only AiConfig
onto /api/v1/ai/status, which every authenticated user can read, disclosing the
deployment's LLM choice to all of them.

Remove the now-dead model and provider fields from ReportProvenance, which no
caller ever set, and record the decision in the design doc's non-goals.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The button was in the page list header next to "New page", where a reader
looking for a document action does not find it. It now sits beside "Edit page"
and "Delete page" in the page toolbar, with the other actions that operate on
the open document.

Lift handlePrint above the toolbarActions memo so the toolbar can reference it,
and key that memo on the page title as well as its id, since the title becomes
the suggested PDF filename and a rename has to refresh it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
A tab opened by Prospector was always called "Query". The execute_sql tool now
carries a short title describing what the query answers, in the same spirit as
the comment Prospector already writes at the top of the SQL, and the new tab
takes that name.

The title arrives as a tool-call argument, so sanitizeTabTitle treats it as
untrusted: it collapses whitespace, strips quoting the model may add, caps the
length without splitting an emoji, and returns undefined for anything unusable,
which leaves the tab on its previous generic name.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
sanitizeTabTitle now removes emoji, flags, skin tone modifiers and zero-width
joiners from the title before the tab takes it. Matching on
Extended_Pictographic rather than Emoji keeps digits and # in the title, which
plain Emoji would have eaten. A title that was only emoji sanitizes to nothing
and the tab keeps its generic name.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

doc-impacting PRs that affect the documentation enhancement PRs that add a new functionality to Drill major-update ui PRs relating to the User Interface

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants