Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
ffb38c1
Provide the ability to open html page in a browser to see visualisation
viaermakov Jan 9, 2026
f518ab8
Set up Node.js and pnpm in pre-commit workflow
viaermakov Jan 9, 2026
30e53e9
Set up Node.js and pnpm in pytest CI
viaermakov Jan 9, 2026
1839ba1
Add type annotations to request handler
viaermakov Jan 9, 2026
6578bb3
Use CSS variables for table borders and header
viaermakov Jan 9, 2026
53874f0
Save client output to client/out folder and use this path directly from
viaermakov Jan 11, 2026
1093402
Update some comments
viaermakov Jan 11, 2026
3c46a0e
Remove client build and dev targets from Makefile
viaermakov Jan 11, 2026
4f72953
Rename spec_description to visualization_text
viaermakov Jan 11, 2026
b68ab9e
Clarify template error
viaermakov Jan 12, 2026
2d4c594
Clarify open_html_content docstring
viaermakov Jan 12, 2026
4218ce8
Integrate Multimodal Component into Notebooks Environment
viaermakov Jan 15, 2026
2587b1b
Refactor MultimodalWidget to support tab-specific statuses
viaermakov Jan 19, 2026
3c9eed0
Rename multitabs package to multimodal-tabs and update imports
viaermakov Jan 20, 2026
1d0818b
Add Jupyter detection and render widget in Thread.html() method
viaermakov Jan 20, 2026
c18103f
Rename FrontendAction to ClientAction in jupiter_widget.py
viaermakov Jan 21, 2026
6d97aaa
Pull last changes from html branch
viaermakov Jan 21, 2026
0dd0bb6
Fixes after merge
viaermakov Jan 30, 2026
019ea4e
Update Node.js to 24.5.0 and pnpm to 10.14.0 in workflows
viaermakov Jan 30, 2026
58b196e
Fix imports and add missing agent_config parameter
viaermakov Jan 30, 2026
ea4f9a5
Improve type imports in in_jupyter_kernel function
viaermakov Jan 30, 2026
f11072d
Remove obsolete message type checks and add production build flag
viaermakov Feb 1, 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
4 changes: 2 additions & 2 deletions .github/workflows/pre-commit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,12 @@ jobs:
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
node-version: "24.5.0"

- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 9
version: 10.14.0

- name: Install the project
run: uv sync --locked --all-extras --dev
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,12 @@ jobs:
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
node-version: "24.5.0"

- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 9
version: 10.14.0

- name: Build
run: uv build
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/pytest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,17 +32,17 @@ jobs:
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
node-version: "24.5.0"

- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 9
version: 10.14.0

- name: Install the project
run: uv sync --locked --all-extras --dev

- name: Run pytest
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} # Real API key for integration tests
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} # Real API key for integration tests
run: uv run pytest tests -v
32 changes: 32 additions & 0 deletions client/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
.eslintcache
.turbo
*.tsbuildinfo
dist-ssr
*.local
.nx
graph.json
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

**/node_modules
**/build
**/dist
**/.gradle
**/.kotlin
**/kotlin-js-store
13 changes: 13 additions & 0 deletions client/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
clean: clean-common

clean-common:
@echo "Cleaning up node_modules..."
@find . -name "node_modules" -type d -prune -exec rm -rf "{}" +
@echo "Cleaning up dist..."
@find . -name "dist" -type d -prune -exec rm -rf "{}" +
@echo "Cleaning up build..."
@find . -name 'build' -type d -prune -exec rm -rf '{}' +
@echo "Cleaning up out..."
@rm -rf out
@echo "Cleaning up nx..."
@rm -rf .nx
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,18 @@ import { fileURLToPath } from "url";

import js from "@eslint/js";
import globals from "globals";
import importPlugin from "eslint-plugin-import";
import perfectionist from "eslint-plugin-perfectionist";
import reactPlugin from "eslint-plugin-react";
import reactHooks from "eslint-plugin-react-hooks";
import reactRefresh from "eslint-plugin-react-refresh";
import tseslint from "typescript-eslint";
import perfectionist from "eslint-plugin-perfectionist";
import reactPlugin from "eslint-plugin-react";
import importPlugin from "eslint-plugin-import";

const __dirname = path.dirname(fileURLToPath(import.meta.url));

export default tseslint.config(
{
ignores: ["**/dist/**", "**/node_modules/**", "**/build/**", "**/*.d.ts"],
ignores: ["**/dist/**", "**/node_modules/**", "**/build/**"],
},
{
extends: [js.configs.recommended, ...tseslint.configs.recommended],
Expand Down
12 changes: 12 additions & 0 deletions client/multimodal-html/eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import tseslint from "typescript-eslint";
import baseConfig from "../eslint.config.mjs";

export default tseslint.config(...baseConfig, {
files: ["src/**/*.{ts,tsx}"],
languageOptions: {
parserOptions: {
project: ["./tsconfig.json"],
tsconfigRootDir: import.meta.dirname,
},
},
});
File renamed without changes.
26 changes: 26 additions & 0 deletions client/multimodal-html/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"name": "@databao/multimodal-html",
"private": true,
"version": "0.0.1",
"type": "module",
"scripts": {
"dev": "vite",
"build": "nx build:pckg @databao/multimodal-html",
"build:pckg": "tsc && NODE_ENV=production vite build"
},
"dependencies": {
"@databao/multimodal-tabs": "workspace:*",
"@radix-ui/themes": "catalog:",
"react": "catalog:",
"react-dom": "catalog:"
},
"devDependencies": {
"@types/node": "catalog:",
"@types/react": "catalog:",
"@types/react-dom": "catalog:",
"@vitejs/plugin-react": "catalog:",
"vite": "catalog:",
"vite-plugin-html": "3.2.2",
"vite-plugin-singlefile": "2.0.2"
}
}
4 changes: 4 additions & 0 deletions client/multimodal-html/project.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"name": "@databao/multimodal-html",
"root": "multimodal-html"
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
import {
DataframeTable,
TabModel,
VegaChart,
Tabs,
} from "@databao/multimodal-tabs";
import { Spinner, Text, Theme } from "@radix-ui/themes";
import { useEffect, useState } from "react";

import styles from "./App.module.css";
import { subscribeOnSpecGeneration } from "./communication/communication";
import { DataframeTable } from "./components/DataframeTable";
import { Tabs, TabModel } from "./components/Tabs";
import { VegaChart } from "./components/VegaChart";

type ConnectionStatus = "initial" | "loading" | "failed" | "loaded";

Expand Down
File renamed without changes.
13 changes: 13 additions & 0 deletions client/multimodal-html/src/styles/main.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
@import "@radix-ui/themes/styles.css";

body {
margin: 0;
padding: 0;
min-height: 100vh;
}

#root {
min-height: 100vh;
display: flex;
flex-direction: column;
}
16 changes: 16 additions & 0 deletions client/multimodal-html/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"extends": "../tsconfig.json",
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/*": ["./src/*"],
},
"noEmit": true,
"declaration": false,
"composite": false,
"skipLibCheck": true,
"jsx": "react-jsx",
},
"include": ["src", "vite.config.ts"],
"exclude": ["node_modules"],
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ export default defineConfig({
},
},
build: {
outDir: "../out",
outDir: "../out/multimodal-html",
emptyOutDir: false,
},
});
12 changes: 12 additions & 0 deletions client/multimodal-jupiter/eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import tseslint from "typescript-eslint";
import baseConfig from "../eslint.config.mjs";

export default tseslint.config(...baseConfig, {
files: ["src/**/*.{ts,tsx}"],
languageOptions: {
parserOptions: {
project: ["./tsconfig.json"],
tsconfigRootDir: import.meta.dirname,
},
},
});
12 changes: 12 additions & 0 deletions client/multimodal-jupiter/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Databao Chart</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>
29 changes: 29 additions & 0 deletions client/multimodal-jupiter/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{
"name": "@databao/multimodal-jupiter",
"private": true,
"version": "0.0.1",
"type": "module",
"scripts": {
"dev": "vite",
"build": "nx build:pckg @databao/multimodal-jupiter",
"build:pckg": "tsc && NODE_ENV=production vite build"
},
"dependencies": {
"@anywidget/react": "0.2.0",
"@databao/multimodal-tabs": "workspace:*",
"@radix-ui/themes": "catalog:",
"react": "catalog:",
"react-dom": "catalog:"
},
"devDependencies": {
"@anywidget/types": "0.2.0",
"@anywidget/vite": "0.2.2",
"@types/node": "catalog:",
"@types/react": "catalog:",
"@types/react-dom": "catalog:",
"@vitejs/plugin-react": "catalog:",
"vite": "catalog:",
"vite-plugin-checker": "catalog:",
"vite-plugin-lib-inject-css": "catalog:"
}
}
4 changes: 4 additions & 0 deletions client/multimodal-jupiter/project.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"name": "@databao/multimodal-jupiter",
"root": "multimodal-jupiter"
}
Loading