Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
6b20055
Attach to existing workers (#DH-22593)
bmingles Jun 16, 2026
89aac33
Attaching to workers (#DH-22593)
bmingles Jun 4, 2026
1abc83a
Moved language identifier to icon instead of description (#DH-22593)
bmingles Jun 4, 2026
ea1970a
Added server parent nodes in connections + panels views (#DH-22593)
bmingles Jun 4, 2026
3173630
Removed unused let vars (#DH-22593)
bmingles Jun 16, 2026
db0754f
Ran prettier (#DH-22593)
bmingles Jun 16, 2026
a0be2d3
Added format script (#DH-22593)
bmingles Jun 16, 2026
f049c2e
Uniform nesting of workers grouped by servers (#DH-22593)
bmingles Jun 16, 2026
56fd435
server connecting status (#DH-22593)
bmingles Jun 17, 2026
9abde97
Cleaned up server / connection management (#DH-22593)
bmingles Jun 17, 2026
cd658af
Added Create Worker action on DHE server nodes (#DH-22593)
bmingles Jun 17, 2026
950bdcd
Align connection picker active items with WORKERS tree (#DH-22593)
bmingles Jun 17, 2026
80434d6
Only allow removing owned connections (#DH-22593)
bmingles Jun 18, 2026
b7ab9b4
Added label to ConnectionState (#DH-22593)
bmingles Jun 18, 2026
2e3b69f
tweak labels for server + workers (#DH-22593)
bmingles Jun 18, 2026
af6d921
simplified option description (#DH-22593)
bmingles Jun 18, 2026
7d55189
Removed create worker action from community server nodes (#DH-22593)
bmingles Jun 18, 2026
f1f9c74
Fixed tests (#DH-22593)
bmingles Jun 18, 2026
cc47a15
Fixed tests (#DH-22593)
bmingles Jun 18, 2026
a12fc36
Fixed type error (#DH-22593)
bmingles Jun 18, 2026
ef5111e
VS Code settings (#DH-22593)
bmingles Jun 18, 2026
92befcd
Improved error handling + re-use util (#DH-22593)
bmingles Jun 22, 2026
b285918
Added label to mcp connection data (#DH-22593)
bmingles Jun 22, 2026
dc8b70f
Rename "Connections" -> "Workers" in e2e tests (#DH-22593)
bmingles Jun 22, 2026
dfdca4d
Bumped dh packages (#DH-22593)
bmingles Jul 27, 2026
7ec75ee
Add shared CorePlusManager substrate + QueryInfo table service (#DH-2…
bmingles Jul 27, 2026
ae82803
Add Persistent Queries explorer tree view (#DH-22593)
bmingles Jul 27, 2026
96ca089
Reorder PQ view + stop auto-creating workers on plain server connect …
bmingles Jul 28, 2026
6d66b13
persistent queries become browsable from the Panels tree, and only va…
bmingles Aug 13, 2026
322b93d
return early if ideUrl isn't defined instead of failing (#DH-22593)
bmingles Aug 13, 2026
aa445a9
removed query status fallback (#DH-22593)
bmingles Aug 24, 2026
ff53188
Increased node transport window sizes to fix connection performance (…
bmingles Aug 24, 2026
62854d8
removed setting (#DH-22593)
bmingles Aug 27, 2026
5e1569e
Updated @deephaven/jsapi-nodejs (#DH-22593)
bmingles Aug 27, 2026
4e76cc9
Removed metrics instrumentation (#DH-22593)
bmingles Aug 27, 2026
e65cada
made PQ tree searchable (#DH-22593)
bmingles Aug 27, 2026
6002178
renamed workers panel to "INTERACTIVE CONSOLES" (#DH-22593)
bmingles Aug 27, 2026
a13b36b
tree layout updates: worker panels + PQ status groups (#DH-22593)
bmingles Aug 27, 2026
b40ed02
removed PANELS treeview (#DH-22593)
bmingles Aug 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ dist
node_modules
/*.vsix
.claude
.tasks
.plans
.vscode-test/
.DS_Store
e2e-testing/.resources
Expand Down
8 changes: 6 additions & 2 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@
"out": true // set this to false to include "out" folder in search results
},
// Turn off tsc task auto detection since we have the necessary tasks as npm scripts
"typescript.tsc.autoDetect": "off",
"typescript.tsdk": "node_modules/typescript/lib"
"js/ts.tsc.autoDetect": "off",
// Unit tests are excluded from the primary tsconfig.json used by VS Code
// editor. Setting the implicit project target to match the tsconfig.json so
// that the editor shows proper language features for the test files.
"js/ts.implicitProjectConfig.target": "ES2023",
"js/ts.tsdk.path": "node_modules/typescript/lib"
}
51 changes: 51 additions & 0 deletions docs/manual-smoke-coreplus-manager.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Manual Smoke — Shared CorePlusManager Substrate

These checks verify the `EnterpriseCorePlusManager` substrate added to
`DheService` (Phase 1) and the `QueryConfigTableService` (Phase 2). They require
a live Core+ (Deephaven Enterprise) server with the always-on `WebClientData`
system query running, and **cannot** be run in the devcontainer (the extension
UI does not run there). Run them from a full VS Code instance connected to a
real server.

The automated gates (`npm run build:ts`, `npm run test:unit`,
`npm run test:lint`) are the developer bar; the items below are the
requester-run verification.

## (a) Attach-to-workers flow is unchanged (regression)

Worker-attach discovery still runs on the DHE config-event stream and is **not**
routed through the manager or the `QueryInfo` table (Decision 3). Re-run the
existing attach behavior with the manager now present in-tree and confirm each
case is unchanged:

- [ ] **Create-on-empty** — connect to a DHE server with no running IC workers;
exactly one worker is created and attached.
- [ ] **Auto-attach-on-external-create** — with the server connected, create a
running IC worker from another client (e.g. the web UI). It is auto-attached
in the WORKERS tree within a few seconds.
- [ ] **No-delete-on-detach** — detach an *attached* (not extension-created)
worker; the server-side PQ keeps running.
- [ ] **Delete-owned-on-disconnect** — disconnect the DHE server; workers the
extension created are deleted, attached workers are left running.

## (b) Manager is disposed on server disconnect

- [ ] Disconnect the DHE server (or log out). Confirm the `CorePlusManager` is
disposed: no residual Core+ worker connections remain open, and no
post-dispose config-event handling / log spam occurs from the manager.
- [ ] Reconnect to the same server. A **new** manager is built from the fresh
client on next use (e.g. opening the PQ table), and only **one**
authenticated DHE session exists per server (verify via server-side session
count / logs — no second login is triggered by manager creation).

## (c) QueryInfo table service returns and ticks

Using a scratch consumer of `QueryConfigTableService.getQueryInfoTable(...)`
(or the PQ explorer once built):

- [ ] The service returns a filtered, ticking `QueryInfo` table subscription.
- [ ] A PQ status change made from another client (e.g. stopping/starting a
query) is reflected in the subscription's `onDidUpdate` snapshots within
~5 seconds.
- [ ] If `WebClientData` is stopped / not visible to the user, the service
throws a clear `WebClientDataUnavailableError` instead of hanging (Gotcha 7).
59 changes: 59 additions & 0 deletions docs/manual-smoke-pq-explorer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# Manual Smoke — Persistent Queries Explorer

These checks verify the **Persistent Queries** tree view (browse ACL-visible
non-InteractiveConsole PQs and open their objects read-only). They require a live
Core+ (Deephaven Enterprise) server with the always-on `WebClientData` system
query running, and **cannot** be run in the devcontainer (the extension UI does
not run there). Run them from a full VS Code instance connected to a real server.

The automated gates (`npm run build:ts`, `npm run test:unit`,
`npm run test:lint`) are the developer bar; the items below are the
requester-run verification.

## Headless plumbing check (optional, no UI)

Proves the table filter + non-console object enumeration without the extension:

```
DHE_SERVER_URL=https://my-dhe:8123 \
DHE_USERNAME=me DHE_PASSWORD=secret \
node scripts/validate-pq-explorer.mjs
```

- [ ] Prints the filtered running non-InteractiveConsole PQ rows.
- [ ] Prints the exported objects of one running non-IC PQ.
(`NODE_EXTRA_CA_CERTS` may be needed for self-signed / internal-CA servers.)

## UI smoke

### List

- [ ] Connect to a DHE server. The **Persistent Queries** view (in the Deephaven
activity-bar container, below **Panels**) shows the DHE server node.
- [ ] Expanding the server node lists **running non-InteractiveConsole** PQs
(owner shown as the node description). InteractiveConsole workers do **not**
appear here — they remain in the **Workers** tree.
- [ ] The list reflects server-side changes: start/stop a PQ from another client
(e.g. the web UI); the tree updates within a few seconds (table tick). Use the
title-bar refresh action to force a refresh.

### Open objects

- [ ] Expand a running PQ node. Its exported objects (tables, figures, widgets)
are listed as leaves with the correct type icons.
- [ ] Click a **Table** object. It opens read-only in a `dhPanel` webview and
renders data.
- [ ] Click a **Figure** object. It opens read-only in a `dhPanel` webview and
renders.
- [ ] No console session is created for the PQ: it does **not** appear in the
**Workers** tree, the server's worker/connection count is unchanged, and no
"Created Deephaven session" toast appears.

### Ownership / lifecycle invariants

- [ ] Close the object panels and collapse the PQ node — the server-side PQ keeps
running (it is never deleted by this view).
- [ ] Disconnect the DHE server — the Persistent Queries view empties for that
server and no residual browse connections leak; the PQ (owned by whoever
created it) is left running server-side.
- [ ] Reconnect — the PQ list repopulates and objects can be opened again.
12 changes: 6 additions & 6 deletions docs/panels.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,16 @@ If the `deephaven-server` pip package is available in your local workspace, the

![Servers Panel](./assets/servers-panel.png)

## Connections
## Interactive Consoles

The `CONNECTIONS` panel shows all active connections + editors currently associated with them. Hovering over nodes will show additional contextual action icons.
The `INTERACTIVE CONSOLES` panel shows all active connections grouped under their server. Each worker node lists the editors currently associated with it, followed by the exported variables available on its session. Clicking a variable will open or refresh the respective output panel. Hovering over nodes will show additional contextual action icons.

Worker names end in a generated id, so nodes show a shortened form of the name — hover a worker node to see its full name.

![Connections Panel](./assets/connections-panel.png)

Editors can be dragged from one active connection to another.

## Panels

The `PANELS` panel shows exported variables available on an active connection. Clicking a variable will open or refresh the respective output panel.
## Persistent Queries

![Panels Panel](./assets/panels-panel.png)
The `PERSISTENT QUERIES` panel shows the persistent queries visible to you on each connected enterprise server, grouped into `Running` and `Stopped`. Queries that are starting up or otherwise in transition show a spinner and are listed under `Running`. Expanding a running query lists the objects it exports; clicking one opens it read-only in a panel.
2 changes: 1 addition & 1 deletion e2e-testing/src/specs/statusBar.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ describe('Status Bar Tests', () => {

await step(4, 'Verify connection node', async stepLabel => {
const simpleTickingEditor = await getSidebarViewItem(
VIEW_NAME.connections,
VIEW_NAME.workers,
SIMPLE_TICKING3_PY.name
);

Expand Down
3 changes: 1 addition & 2 deletions e2e-testing/src/util/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,5 @@ export const RETRY_SWITCH_IFRAME_ERRORS: ReadonlySet<string> = new Set([

export const VIEW_NAME = {
servers: 'Servers',
connections: 'Connections',
panels: 'Panels',
workers: 'Workers',
} as const;
Loading
Loading