Changelog
All notable changes to this project will be documented in this file.
[2026.03.17]
Added
- Graph Builder - Multi-Y Panel: Stack multiple panels vertically with a shared X axis; zoom and pan synchronize across all panels
- Graph Builder - Scatter Plot Axis Scale: Linear / Log / Square Root scale options for scatter plot X and Y axes
- Hypothesis Test - Paired t-test Difference Diagnostics: Shapiro-Wilk normality test, Q-Q plot, histogram, and descriptive statistics for paired differences
- Shapiro-Wilk Test - Royston Polynomial Correction: C1/C2 polynomial corrections from Royston (1992) / AS R94 applied to a-coefficients for improved accuracy
- GLM - Odds Ratios Section: Odds ratios with 95% confidence intervals displayed in a dedicated section below the coefficient table for Binomial + Logit models
- Report - Markdown Content Auto-sync: Adding, removing, or duplicating report elements automatically updates
{{type:id}}references in Markdown content - Report - Graph Element Titles: Graph elements added to reports auto-generate titles from axis column names
- Report - Individual Diagnostic Plots: Each GLM diagnostic plot can be added to a report individually, in addition to "Add All Plots"
- JavaScript API - Report Management:
reports.create(),reports.getContent()/setContent()for programmatic report control;tabs.open()acceptsreportIdto open a specific report - JavaScript API - Model Summary in Reports:
reports.addModelSummary()generates Markdown for GLMM (fixed/random effects, ICC) and Random Forest (hyperparameters, feature importances) - JavaScript API - Model Operations:
models.run()returns GLM fit results directly without opening a tab;models.save()persists run results to the project;models.describe()expanded to GLMM and Random Forest - JavaScript API - Tab Configuration:
tabs.configureGraph()for Graph Builder bulk setup,tabs.configureGlm()for GLM,tabs.setDataset()for switching datasets; column name resolution for all configuration APIs - JavaScript API - Project and Data:
project.save(),project.exportMds(),project.downloadMds();datasets.addColumns()for creating derived datasets via API - JavaScript API - CSV URL Loading:
?csv=URLquery parameter loads a CSV file directly from a URL on app launch - Documentation Site - Full-text Search: Pagefind-based client-side search with language-separated indexes for Japanese and English
- Documentation Site - Language Switcher: Dropdown menu in breadcrumb area for switching between Japanese and English documentation pages
Fixed
- Shapiro-Wilk Test: Large samples (n > ~20) always returned p=1 due to incorrect polynomial coefficients in the Royston (1992) normal approximation
- GLM - Duplicate Model Detection:
findDuplicateModel()always treated family/link as matching because it read from the wrong property path, allowing duplicate models to be created - GLM - Diagnostic Plot Sizing: Diagnostic plots used fixed pixel dimensions instead of following container width
- Report - Model Summary Column Names: Coefficient table in model summary displayed internal column UUIDs instead of human-readable column names
- Report - GFM Table Rendering: Pipe characters in table cells (e.g.,
Pr(>|z|)) broke Markdown table rendering - Report - GLM Diagnostics Export: "Add All Plots to Report" only added a subset of diagnostic plots
- JavaScript API - tabs.closeOthers(): Did not close tabs in the other split pane because it referenced a stale layout snapshot instead of re-reading store state per iteration
- JavaScript API - Ambiguous Dataset Name:
datasets.query()silently picked an arbitrary match when multiple datasets matched a table name case-insensitively; now returnsAMBIGUOUS_TABLE_NAMEerror - Documentation Site - "Open in MIDAS" Links: Cross-origin fetch from app.midas-app.org failed due to missing CORS headers on documentation file responses
[2026.03.15]
Added
- Data Management - Add Columns: Create a derived dataset with new columns defined by SQL expressions (e.g., ratio of two columns, arithmetic on existing values); accessible from Data > Add Columns menu
Fixed
- JavaScript API - Dataset Query:
datasets.query()withoverwrite: falseallowed duplicate datasets with the same name instead of returning an error
[2026.03.13]
Added
- GLM - Grouped Binomial: General Binomial (n>1) support for Binomial GLM; select successes and trials columns instead of binary-only response
- GLM - Cook's Distance Residual Switching: Cook's Distance, Q-Q Plot, Scale-Location, and Residuals vs Leverage now switch between Deviance and Pearson residuals based on the diagnostic plot residual type toggle
- SQL Query - In-place Dataset Update: "Replace" on duplicate dataset names now updates the existing derived dataset in-place, preserving downstream dependencies
- Documentation Site - Heading Anchors: Heading elements on documentation pages now have clickable anchor links (
#) for direct linking to specific sections - MDS File - Version Warning: Opening a project file created by a newer version of MIDAS now shows a warning dialog instead of silently loading
Fixed
- OLS / GLM - Variable Reset on Dataset Change: Switching datasets did not reset selected variables, leaving stale column references from the previous dataset
- Data Table - Boolean Cell Editing: Boolean columns in Edit Mode used a free-text input, requiring exact string entry; now uses a dropdown (true / false / null)
- Documentation Site - Content Layout: Unnecessary gap appeared between content area and right sidebar on wide screens
[2026.03.06]
Added
- Graph Builder - Step Geometry Tooltip: Tooltip support for Step Geometry; hovering over a line displays group tooltip data
- Graph Builder - Line/Step Selection: Click to select groups and double-click to open Filtered Data on Line and Step geometries; unselected groups fade to reduced opacity
- JavaScript API - Error Handling: Unknown aes properties now return warnings instead of being silently ignored;
COLUMN_NOT_FOUNDerrors include suggestions;window.midasAPI is now always available on all screens
Fixed
- Dummy Coding - Missing Values: Dummy variable columns used NaN for missing values instead of null, inconsistent with MIDAS missing value convention
[2026.03.03]
Fixed
- Graph Builder - Threshold Scale Clipping: Threshold scale clip paths (colorThreshold/fillThreshold) did not follow zoom/pan on Line, Area, and Step geometries; threshold regions now update correctly during interaction
- Hypothesis Test - Variable Selection: Group and Outcome variable filtering was based on data type instead of measurement scale, incorrectly excluding numeric group variables
- Filtered Data - Equality Comparison: Equality operators (
=/!=) in filter expressions did not dispatch by value type, causing incorrect results (e.g., boolean columntruedid not match string value"true")
Performance
- Graph Builder - Threshold Rendering: Threshold clip path rendering replaced full DOM removal and recreation with D3 JOIN pattern, reducing unnecessary DOM operations during zoom/pan
[2026.02.27]
Added
- Analysis Tabs - Boolean Variable Support: Boolean columns now available as numeric variables (true→1, false→0) in OLS, GLM, GLMM, Random Forest, PCA, and Cox Regression
- GLM - Coefficient Details: Coefficient table now shows Std. Error, z-value, p-value, and 95% confidence intervals
- Linear Regression - Report Integration: Add regression results to reports via right-click context menu
- Linear Regression / GLM - Save Coefficients as Dataset: "Save as Dataset" button on coefficient tables; saved data reusable in Data Table and Graph Builder
- Filtered Data - Type-safe Filter Comparison: Filter comparisons now dispatch by value type (numeric, temporal, string), fixing incorrect results for date/datetime columns with mixed formats
Fixed
- Data Management - Cascade Deletion: Deleting a dataset from Project Overview left dependent models and derived datasets as dangling references, causing "Training dataset not found" errors on retrain; cascade deletion now works consistently from both Project Overview and Lineage views
- Graph Builder - Time Bin Selection Performance: Selecting time bins on datetime histograms was slow (~500ms per selection) due to Date.parse overhead; now uses ISO string comparison
- Graph Builder - Flipped Coordinates Secondary Y Axis: Secondary Y axis section silently disappeared when flipped coordinates were enabled; now shows as grayed-out with explanation text
[2026.02.19]
Added
- Analysis Tabs - Categorical Variable Visibility: Categorical variables are now shown as grayed-out with tooltip explanation instead of being silently hidden from variable selectors in OLS, GLM, GLMM, Random Forest, PCA, and Cox Regression tabs
- Graph Builder - Toolbar Layout: Pan/select/clear selection buttons moved from overlay on graph area to a toolbar above the graph, preventing overlap with data points
Fixed
- Data Management - Selection State Leak: Selection state entries for deleted datasets accumulated in memory; now cleaned up on dataset removal
- Graph Builder - Datetime Histogram Brush Selection: Brush selection on Datetime Histogram did not select any rows
- Graph Builder - Datetime Histogram Context Menu: "Open as Filtered Data" context menu did not appear after brush selection on Datetime Histogram
[2026.02.16]
Added
- Linear Regression (OLS): Linear Regression (OLS) tab added to Analysis menu; includes R², Adjusted R², F-statistic, RMSE, standardized coefficients, VIF, t-distribution-based p-values, and residual diagnostics
- Linear Regression (OLS) - Prediction Intervals & ANOVA: 95% confidence/prediction intervals for fitted values; ANOVA decomposition with Type I (sequential) / Type III toggle; corrected R² calculation for no-intercept models
Fixed
- Report - Error Notification: Adding elements to a report or creating a new report failed silently; now shows an alert dialog on failure
- Report - Action Type Handling: Some report action types silently did nothing instead of reporting an error; all types now handled with compile-time exhaustiveness checking
- JavaScript API - Tab Validation:
tabs.open()returned success for invalid tab types; now returnsINVALID_TAB_TYPEerror with available type list
Security
- CSP - Script Safety: Removed
unsafe-evalandunsafe-inlinefrom Content Security Policy script-src, reducing XSS attack surface
[2026.02.08]
Added
- GLMM - Numerical Stability: Internal scaling of fixed effects design matrix improves convergence for datasets with widely different scales (e.g., 1 vs 100,000)
[2026.02.07]
Added
- GLMM - Gamma Distribution: Gamma distribution family added to GLMM distribution selection
Fixed
- GLMM - Gamma Estimation Accuracy: Gamma GLMM estimated random effect variance orders of magnitude too large and BLUPs were astronomically inflated (e.g., hundreds of millions)
- Graph Builder - Y Axis Label Clipping: Y axis tick labels overflowed beyond graph boundary during pan/zoom; labels now clipped at graph edge
- Graph Builder - Non-negative Y Axis Constraint: Y axis minimum was not constrained to 0 for non-negative aggregate values (e.g., count, density); Y axis now respects output range declared by each stat
- MDS File - Signature Warning Dialog: Signer name was displayed too prominently in signature warning dialog; fingerprint is now the primary identifier with signer name shown as self-reported information
Security
- Dependencies: Fixed prototype pollution (lodash), CSRF/XSS (react-router), and decompression bomb (undici) vulnerabilities by updating affected packages
[2026.02.03]
Added
- Custom Graph - Filtered Data from Selection: Open Filtered Data tab from right-click menu after selecting data points in graphs (Histogram, Scatter Plot, etc.)
Fixed
- Filtered Data - Sorting: Sorting did not work in Filtered Data tab
- Histogram - Selection Highlight: Wrong bin was highlighted when selecting histogram bars
- Histogram - Single Value Display: Histogram did not display anything when all values in the column were identical
- Statistics - Create New Report: Creating a new report from Statistics panel did not work
[2026.01.31]
Added
- Scatter Plot - Correlation Coefficient: Display Pearson correlation coefficient (r = X.XX) in scatter plot top-right corner; enabled for Pair Plot (Statistics/Relationships)
- Pair Plot - Rectangle Selection: Pan/Select mode toggle for Pair Plot; rectangle selection (brush) for data selection; double-click point opens Filtered Data tab
Fixed
- Statistics - Relationships Scroll: Vertical scrolling did not work in Statistics/Relationships tab
- Statistics - Category Distribution Y Axis: Y axis labels were cut off on the left edge
Security
- Iframe Embedding: Restrict embedding from external sites via X-Frame-Options and frame-ancestors directive
[2026.01.26]
Added
- Custom Graph - QQ Plot Reference Line: Q1-Q3 reference line added to QQ plots; toggle via showReferenceLine option (default: true)
- JavaScript API - Models/Reports: Model details retrieval (models.describe) and report operations (reports.list, reports.addContent, reports.addModelSummary)
Fixed
- DuckDB - ICU Extension: date() function on timestamp columns failed with "Unimplemented type for cast" error; ICU extension now loaded explicitly to ensure timezone-aware casts work
[2026.01.25-1]
Fixed
- Data Table - Horizontal Scroll: Horizontal mouse wheel scrolling did not work; wheel handler only processed vertical (deltaY) and ignored horizontal (deltaX) input
[2026.01.25]
Added
- Report - LaTeX Math Support: Inline () and block () LaTeX math expressions in Markdown reports
- Settings - Error History: Persistent error logging with export and clear functionality in Settings > Logs
Improved
- Report Editor - Element Preview: Hover tooltip preview for
{{type:id}}patterns instead of inline blocks; reduced keystroke overhead
Fixed
- Report - Statistics/DataTable Height: Statistics summary and data table elements were cut off at fixed height; now displays full content
- Report - Graph Wheel Scroll: Mouse wheel scrolling did not work over embedded graphs in reports
- Report - Auto-Select Correction: Selected report ID now auto-corrects when pointing to deleted or non-existent report
- Report - Duplicate Confirmation: Delete confirmation dialog now only appears when element is referenced by multiple reports
[2026.01.23]
Improved
- Filter Expression - Memory Performance: Reduced memory allocation and GC pressure when evaluating filter expressions on large datasets (e.g., 1M rows)
Fixed
- Report Editor - Chrome Scroll: Mouse wheel scrolling did not work within Report editor on Chrome; wheel events were consumed by CodeMirror's overflow container
- Report Editor - Cursor Navigation: Arrow key navigation near embedded graph widgets caused RangeError; line numbers were misaligned with content
- Data Table - Chrome Scroll: Mouse wheel scrolling did not work over table cells on Chrome due to absolute positioning in virtual scroll implementation
- Custom Graph - X Axis Label Overflow: X axis tick labels overflowed beyond graph boundary when zoomed; labels now clipped at graph edge
[2026.01.21]
Added
- Histogram - Integer Alignment: Small-range integer columns (range < 30) automatically apply binwidth=1 and center=0, aligning tick labels with bar positions for discrete integer data (e.g., day of week 0-6, month 1-12, rating 1-5)
Fixed
- Graph Builder - Layout Shift: Flicker during initial render eliminated; container hidden until ResizeObserver reports actual dimensions
- Histogram - Bar Width: Bar width calculated correctly for histograms with few bins; now uses bin width (xmin/xmax) instead of data point distance
- Histogram - Bin Boundary Precision: Floating-point errors in bin boundaries (e.g., 0.30000000000000004) caused incorrect row selection; boundaries now rounded based on bin width precision
- Data Table - Filtered Data: "Dataset not found" error in Statistics/SelectedRows tabs after opening Filtered Data tab; dataset registration added to 4 missing locations
- Data Table - Filtered Data Cleanup: Closing tabs with ephemeral datasets now properly removes the dataset regardless of tab type (previously only worked for filtered-data tabs)
- Project Overview - Source URL: Datasets loaded from URL now display the source URL in Project Overview and Lineage tabs instead of showing blank
[2026.01.20]
Added
- Custom Graph - Integer Count Axis Ticks: Count/bin/timebin statistics display integer-only tick marks on Y axis (e.g., 0, 1, 2, 3 instead of 0, 0.5, 1, 1.5); also applies to X axis with flip coordinate system
- Custom Graph - Categorical Axis Zoom/Pan: When X axis is categorical and Y axis is continuous, Y axis zoom/pan is enabled; vice versa for continuous X with categorical Y; pan constrained to user-defined domain min/max
- Custom Graph - Point Dodge Position: Point geometry with categorical X axis spreads points horizontally within each category when using Dodge position with color/fill grouping
- Custom Graph - Errorbar Dodge Position: Errorbar geometry with categorical X axis aligns error bars with dodged bar/point positions
- Custom Graph - Duplicate X Value Warning: Line/Area/Step geometry with identity stat shows warning banner when multiple data points exist for the same X value within a group, which causes ambiguous line paths
Fixed
- Custom Graph - X Axis Label Margin: Datetime X axis labels had excessive bottom margin (~102px) due to estimated label height; margin reduced to ~37px by measuring actual rendered label dimensions
- **Custom Graph - Tooltip label
returned undefined; switch statement lackedlabel` case; replaced with mapping object that includes all tooltip variables - Custom Graph - Geometry Position Validation: Line/Step geometry allowed Stack/Fill position selection which produced broken rendering; these options are hidden for Line/Step; Jitter option added for Errorbar
- Custom Graph - Bar Fixed Color Selection: When fill aesthetic was set to fixed color (e.g., "#ff0000"), selection highlight bars used default color instead of the fixed color; fill value lookup unified across all bar types
- Custom Graph - Negative Bar Selection Position: Selection highlight for negative value bars rendered upward from the bar bottom instead of downward from zero baseline; calculation changed to mirror positive bar behavior
- Custom Graph - Bin Boundary Selection: Clicking a histogram bin selected rows from adjacent bins at boundary values due to
BETWEEN(inclusive both ends); changed to>= min AND < max(left-closed right-open interval) - Custom Graph - Secondary Y Axis Auto-Enable: Changing Y axis zoom setting caused secondary Y axis to enable automatically due to shared zoom state; Y2 axis zoom state removed and derived from Y axis setting at render time
- Custom Graph - Area Stack/Fill Position: Area geometry ignored stack/fill position and rendered all areas from y=0; changed to read y0/y1 from stackBase/stackTop computed by position adjustment
- Data Table - Filter NULL Comparison:
column > NULLreturned true for non-null values; changed to return false for all comparison operators per SQL standard; useIS NULL/IS NOT NULLfor null checks - Graph Builder - JavaScript API Tab State:
window.midas.tabs.open('graph-builder')without options caused undefined tabViewState; default graph type ('histogram') applied when initialGraphType not specified
[2026.01.18]
Added
- Custom Graph - Errorbar Geometry: Error bar geometry for displaying confidence intervals and standard errors
- Custom Graph - Area Click Selection: Click selection support for Area geometry
- Custom Graph - Datetime Scale Auto: Automatic scaleTime application for datetime/date columns
- Graph Builder - Size Settings: Width and height configuration for graphs
- Summary Stat - Error Bar Functions: Aggregation functions for error bars (se, ci_lower, ci_upper, sd)
- Statistics Output - ymin/ymax: ymin/ymax output destinations for Statistics transformations
- Histogram - Brush Selection: Brush selection with X-axis direction constraint for Histogram/DatetimeHistogram
- Edit Mode - Datetime Validation: Validation and parsing for date/datetime types in cell editing
- JavaScript API - Status: activeDatasetId and activeTabId added to status()
- JavaScript API - Models/Reports: Model details retrieval and report operations added to window.midas API
Fixed
- Custom Graph - Legend Alpha: Legend colors did not match bar colors when alpha was set (e.g., Overlay mode histograms); legend now applies layer's alpha value
- Custom Graph - Tooltip Label: Y-axis label showed original column name instead of stat type (Count/Density) when using Y + stat bin
- Histogram - X Axis Domain: Edge bins were clipped when bin width was large (e.g., 10 bins with 10% width each)
- Histogram - Horizontal Stacked: Stacked bars rendered incorrectly and zoom operated on wrong axis in Horizontal orientation
- Histogram - Faceted Scroll: Could not scroll to see all facets when facet count exceeded visible area
- Datetime Histogram - Tooltip Count: Tooltip always showed count as 1 instead of actual bin count
- Q-Q Plot - Brush Selection: Brush selection did not select any rows when dragging on the plot
- Report - Edit Mode Scroll: Tab content could not scroll in edit mode
- JavaScript API - models.run(): Column names (e.g., sepal_length) were treated as column IDs, causing "column not found" errors; now accepts column names
- DuckDB - Timezone: timezone() function converted timestamps in the wrong direction (e.g., UTC 21:00 became 12:00 instead of 06:00 JST)
[2026.01.16]
Added
- PWA - File Handling: Open .mds files directly from OS file manager when MIDAS is installed as PWA (Chrome/Edge 102+, desktop only)
- JavaScript API - SQL: Extended window.midas API with SQL query capabilities
tabs.open()supportsinitialQuery/initialOutputNamefor sql-editor tabsdatasets.query()with requirednameparameter andoverwriteoption (default: true)
- JavaScript API - Graph Builder: Extended window.midas API with Graph Builder configuration
- Custom Graph - 1D Brush Selection: Horizontal brush selection for histograms and charts
- Custom Graph - Fixed Color/Fill: Support fixed color values for Color/Fill aesthetics
- Custom Graph - Q-Q Plot: Rewritten Q-Q Plot using Custom Graph engine
- Crosstab - Value Field Selection: Improved value field selection with multiple aggregations on same column
- View Menu - New Dataset/Report: Added "New Dataset" and "New Report" options to View menu submenus
Fixed
- Data Table - Filter Expression: Comparison operators (
>,<,>=,<=) failed on datetime columns; now correctly parses datetime strings - Custom Graph - Position Dodge: Bars were not rendered and selection expression was incorrect when using categorical X axis with Position Dodge
- Custom Graph - hline/vline Validation: "X aesthetic is required" error incorrectly shown when selecting hline geometry
- Histogram - X Axis Ticks: Tick labels were positioned at bin edges instead of bin centers
- Histogram - Boundary: Data was placed in wrong bins when boundary parameter exceeded minimum data value, causing incorrect row selection on click
- Histogram - Legend Color: Bar colors did not match legend colors due to inconsistent category ordering
- Datetime Histogram - Selection: Clicking or double-clicking bars did not select rows due to datetime string comparison failure
- Crosstab - Single Click Selection: Single-clicking cells did not highlight corresponding rows in other graphs
- GLM Diagnostics - Selected Points: Table showed column IDs instead of names, and displayed "N/A" instead of actual data values
- Reload Dataset Dialog: Loading spinner continued indefinitely when file selection dialog was cancelled
[2026.01.14]
Added
- Custom Graph - Transform Statistics: Linear transformation statistics (offset, scale) for data normalization
- Custom Graph - ECDF Statistics: Empirical Cumulative Distribution Function for distribution analysis
- Custom Graph - Axis Label Rotation: Unified label rotation support for all axis types
- Statistics - Default Tooltip: Default tooltips for all graphs in Statistics tab
- Statistics - Filter Support: Statistics tab now reflects Data Table filter results
- Statistics - Datetime Histogram: Improved with time interval selection, X-axis ticks, and trend display
- Graph Builder - TimeBin Statistics: Time series binning for temporal data aggregation
- Graph Builder - Multiple Stats Chain: UI for chaining multiple statistical transformations
- Graph Builder - Sort Statistics: Unified xSort into sort stat for flexible sorting configuration
Fixed
- Custom Graph - Threshold Scale Grouping: Fixed grouping being ignored when using Threshold Scale with Line/Step/Area geometries
- Custom Graph - Scale Type Default: Changed default Scale Type to Categorical for better initial behavior
- Custom Graph - Line/Step Aesthetics: Fixed Size/Linetype aesthetic mapping not working in Line/Step geometries
- Custom Graph - Datetime Tooltip: Display datetime values in human-readable format instead of Unix timestamps
- Custom Graph - Numeric Category Domain: Support for numeric category domain settings
- Graph Builder - Filtered Data Statistics: Fixed Statistics not working in Filtered Data tab opened from Graph Builder
- Graph Builder - Layout Overflow: Fixed buttons overflowing in Flexbox layout
- Selected Rows - Menu Position: Fixed kebab menu position in Selected Rows tab
- Open from URL - HTTP Error: Display clear error message when using HTTP URLs (HTTPS required)
[2026.01.12]
Added
- Selected Rows - Ephemeral Dataset Support: Selected Rows tab now works with ephemeral datasets (SQL query results, filtered data)
- Selected Rows - Dataset Name Display: Display target dataset name in the Selected Rows tab header
- Custom Graph - Legend Control: Show/hide legend per layer with showLegend property
- Custom Graph - Threshold Scale Without Variable: Threshold Scale can now be used without variable mapping for fixed conditional coloring
Fixed
- Custom Graph - Bin Selection Color: Fixed bin selection color appearing blue instead of the configured highlight color when using Threshold Scale
[2026.01.11]
Added
- GLMM (Generalized Linear Mixed Model): Mixed effects model implementation with Nelder-Mead optimization for variance component estimation
- PCA (Principal Component Analysis): Dimensionality reduction with scree plot, loadings table, and score export to dataset
- Statistics - Categorical Bar Chart: Frequency bar chart display for categorical columns
- Statistics - Drilldown Analysis: Drill down into subsets by double-clicking graph elements (histogram bins, bar chart bars)
- Selected Rows - Selection Display: Show selection conditions and "Open as Filtered Data" button
- Custom Graph - Conditional Color Mapping: Apply different colors based on conditions (e.g., above/below threshold)
- Report - Double-click Support: Double-clicking graph elements in Report View opens Filtered Data tab
- JavaScript API: Exposed
window.midasAPI for AI agent integration with Playwright MCP
Fixed
- Custom Graph - vline/hline Color: Color aesthetic mapping in vline/hline geometries was ignored; now correctly applies color scale when using data-driven reference lines
[2026.01.07]
Added
- Graph Builder - Double-click to Open Filtered Data: Double-clicking histogram bars, bar chart bars, scatter plot points, or other graph elements opens a Filtered Data tab showing only the selected rows
- Statistics Tab - Double-click Support: Double-clicking histogram bins, category values, or time series points in Statistics Tab opens Filtered Data tab
- Hypothesis Test - Double-click Support: Double-clicking diagnostic histogram bins in t-test panel opens Filtered Data tab
- Custom Graph - Tooltip: Configurable tooltips for graph elements with Auto, Encoding, and Custom modes. Auto mode displays mapped aesthetics, Encoding mode allows variable selection, and Custom mode supports template syntax with y, fill, and stat output variables
- Logs Tab: View application logs in Settings with IndexedDB persistence, log level filtering, and export functionality
- Workspace - Tab Reordering: Drag and drop tabs to reorder them within a workspace
- SQL Query - Edit: Edit existing SQL Query datasets from the context menu
- Import Data - URL: Import CSV files directly from URLs in the Import Data modal
Fixed
- SQL Query Result - DATE Format: DATE type columns now display as date-only (YYYY-MM-DD) instead of datetime format with time component
[2026.01.05]
Added
- Graph Builder - ymean Stat: Mean line statistical transformation for control chart applications
- Graph Builder - vline/hline UI: Vertical and horizontal reference line configuration in layer settings
- Graph Builder - Axis Title Spacing: Configurable spacing between axis title and axis labels
- Graph Builder - Graph Type Combobox: Searchable Combobox for Graph Type selection
- Graph Builder - Low Cardinality Numeric: Low cardinality numeric columns available for Color/Shape/Fill aesthetics
- Graph Builder - Auto Y-Axis Titles: Automatic Y-axis title generation for Survival and Cumsum statistics
- Statistics - Datetime Histogram: Datetime/date column visualization changed from Rug Plot to temporal histogram with zoom controls
- Model Retraining: GLM and Random Forest models can be retrained when training dataset is reloaded, eliminating Python pickle dependency
- Settings - Delayed Rendering Threshold: User-configurable threshold for delayed rendering of large graphs
- Analysis Tabs - Default Dataset: Analysis tabs now default to the active dataset when opened
Fixed
- Custom Graph - ymean Without X: ymean stat produced no data points when X-axis was not specified; now correctly generates mean line for hline geometry
- Custom Graph - Axis Title: Axis titles did not appear when added after initial render, and old titles persisted after removal; setup/render lifecycle now properly separated
- Custom Graph - Multi-layer Validation: Only the first layer was validated; subsequent layers with missing X/Y aesthetics caused runtime errors instead of validation errors
- Custom Graph - Legend Margin: 100px right margin was reserved even when no color/fill/stroke aesthetics were set; margin now automatically removed when legend is not needed
- DerivedDataSet - Enum in Worker: Enum definitions were not passed to DuckDB worker during topological evaluation, causing enum columns to fail after project reload in certain scenarios
Changed
- Graph Builder - Global Aesthetics: Simplified Global Aesthetics to X/Y only; other aesthetics moved to layer-specific settings
- Public Key Export: Removed self-declared metadata from public key files
[2026.01.01]
Added
- Graph Builder - Cumsum: Cumulative sum statistical transformation for trend analysis
- Support for categorical X-axis in Summary/Cumsum statistics
- Graph Builder - X Sort: X-axis sorting option in layer configuration
- Statistics - Histogram Priority: Histogram now displayed first in single-column statistics
- Statistics - Comparison Quantiles: Detailed percentiles (P1, P5, P10, P25, P50, P75, P90, P95, P99) in Comparison Table
- Data Table - Column Width Persistence: Column widths saved and restored across sessions (Issue #419)
- Enum - Auto-Generate from Column: Generate enum definitions from dataset column values (Issue #382)
- Workspace - Submenu Selection: Changed New Workspace from dialog to submenu format (Issue #420)
- Analysis Tabs - Variable Selection UI: Improved variable selection interface for GLM, Random Forest, Kaplan-Meier, Cox Regression
Fixed
- Custom Graph - Margin Calculation: Extra whitespace (~19px) appeared near Y-axis label due to inconsistency between margin calculation and drawing position (Issue #446)
- Custom Graph - Legend Margin: 100px right margin was reserved even when legend was not displayed, wasting graph space (Issue #446)
- Custom Graph - Datetime X-Axis: Datetime X-axis was not rendering correctly; datetime format now applied to Identity stat as well
- Custom Graph - Categorical Bar: Bar geometry now correctly supports categorical X-axis columns
- Custom Graph - Bar xSort Limit: Extra bars were drawn when xSort.limit was applied
- Histogram - Show Density Error: Enabling "Show density" checkbox in Column Statistics caused Error Boundary to catch exception; layer groups are now dynamically managed (Issue #440)
- Histogram - Sizing: Fixed infinite resize loop in Graph Builder (flexbox min-height issue), missing px unit in width/height, and narrow drawing width in Pair Plot
- DerivedDataSet - Scale Reset: User-defined scale changes were reset when reloading source dataset; now preserves scales marked as
inferredAutomatically: false(Issue #424) - Enum - Type Conversion: Silent fallback to VARCHAR when enumName was not specified; now shows proper UI feedback and falls back to string type when enum definitions are invalid (Issue #383)
- Enum - Statistics Display: Enum columns now display statistics correctly, matching string type behavior
- Statistics - Quantiles Format: Quantiles display in Comparison Table now uses consistent numeric notation instead of mixed formats
- Project Lineage - Theme Colors: Hardcoded color values replaced with theme variables for consistent theming (Issue #387)
- Sorting - Null Values: Null values now always placed last when sorting, regardless of sort direction
[2025.12.30]
Added
- Random Forest: Machine learning prediction using Pyodide (scikit-learn)
- Training with configurable parameters (n_estimators, max_depth, etc.)
- OOB (Out-of-Bag) score for model evaluation
- Prediction on new datasets with result visualization
- Confusion matrix and classification metrics for evaluation
- Graph Builder - Scatter Plot Integration: Scatter Plot now uses Custom Graph renderer
- Brush selection for selecting data points by dragging
- 2D density visualization with configurable color scales
- Delayed rendering for large datasets
- Custom Graph - Statistics: Added xmean and xmedian statistical transformations for vertical reference lines
- Workspace Template: Save and restore workspace layouts as templates
- Project Lineage - Schema: Display column schema information in the detail panel
- PWA - CDN Caching: DuckDB and Pyodide CDN resources are now cached for offline use
- Empty Pane Delete: Added delete button to empty panes for easier workspace management
- DerivedDataSet Reload: Reload parent PrimaryDataSet from DerivedDataSet context menu
- Enum Dependency Check: Warning dialog when editing enum definitions that are used by columns
- Help Menu - English Docs: Enabled Documentation > English menu item
Fixed
- DerivedDataSet - Enum Inheritance: Enum type and enumName were not inherited from parent schema, causing enum columns to appear as string type
- DerivedDataSet - Ordinal Sort: Ordinal scale columns were sorted alphabetically instead of enum definition order
- Custom Graph - Ribbon Geom: ymin/ymax aesthetics were ignored; Ribbon geometry now renders confidence bands correctly
- GLM - isRunning State: isRunning flag was not reset when data validation failed, leaving the UI in loading state
- GLM - Prediction: Fixed pWithIntercept and getZQuantile calculation errors
- GLM - Performance: Factorial calculation optimized from O(n) to O(1) using lgamma function
- Type Conversion - Enum: After converting column to enum type, DataTable showed string type because Arrow format returns enum as UTF8
- SplitPane: Keyboard resize used fixed 10%/90% limits while mouse used dynamic limits; both now use same dynamic constraint calculation
- Survival Analysis Tab: View > New Tab showed "Survival Analysis" option which didn't match TabRegistry entries; split into "Kaplan-Meier" and "Cox Regression"
- Statistics Tab: Content had no right-side padding, causing asymmetric layout; added 12px right padding
[2025.12.24]
Added
- Kaplan-Meier Tab: Dedicated tab for Kaplan-Meier survival analysis with survival curves and Log-rank tests
- Cox Regression Tab: Dedicated tab for Cox proportional hazards regression results
- Graph Builder - Kaplan-Meier Curve: Stat transformation for Kaplan-Meier survival curves with confidence intervals
- Statistics - Context Help: Inline help explaining statistical measures
- Dataset Reload: Reload PrimaryDataSet from Project Overview and Project Lineage
Fixed
- Tab Content Scroll: Prevent scroll chaining when scrolling within tab content
- Invalid Project URL: Show error message when accessing non-existent project ID via URL
- Active Panel Indicator: Changed indicator style to border-top for better visibility
- Context Menu z-index: Fixed context menu appearing behind other elements
- DerivedDataSet Scale Inheritance: Columns now inherit scale from parent dataset
- Edit Mode Cache: DuckDB cache now updates correctly after Edit Mode changes
- Settings Dialog Size: Dialog size now stays fixed when switching tabs
- Project Lineage Scroll: Fixed scroll target in detail panel
[2025.12.21]
Added
- Graph Builder - Step Geometry: Step geometry for staircase-style line connections
- Statistics - Detailed Quantiles: Enhanced quantiles display (P1, P5, P10, P25, P50, P75, P90, P95, P99)
- MDS Signature Warning: Warning dialog when opening MDS files with unknown signatures
Fixed
- About Dialog: Updated About dialog image to new blue-based design
- View Menu - Fullscreen: Toggle Fullscreen menu item now reflects actual fullscreen state
- Project Lineage - Context Menu: Context menu now closes when clicking outside
Security
- Key Export: Changed key pair export to password-encrypted format
[2025.12.19]
Added
- MDS Signature: Sign and verify MDS project files with Ed25519 keys
- Generate and manage signing keys in Settings
- Sign projects to ensure integrity and authenticity
- Verify signatures when opening MDS files
Fixed
- Data Table/Filtered Data: Preserve filter state when splitting or merging panes
- Crosstab: Show error message when required fields are not set
- URL Dataset: Fix cache being used when reloading datasets from URL
Breaking Changes
- MDS Format: Signature metadata added to MDS file structure. Older versions of MIDAS cannot open signed MDS files.
[2025.12.17]
Added
- Reshape (Wide/Long): Transform data between wide and long formats
- Wide to Long: Unpivot multiple columns into key-value pairs
- Long to Wide: Pivot key-value pairs into separate columns
- Preview before saving, with row count display
- Hypothesis Testing: Statistical hypothesis tests with diagnostic visualizations
- Independent samples t-test with Welch's correction
- One-sample t-test
- Shapiro-Wilk normality test
- Q-Q plot and histogram diagnostics
- APA format result copy
- Project Lineage: Redesigned lineage view with improved node layout and visual clarity
- View Menu: Added Dataset and Report submenus for quick navigation
Fixed
- Bin Statistics: Now supports datetime and date type columns (Issue #272)
- Type Conversion: Removed unnecessary checkbox from settings dialog
[2025.12.15]
Added
- ZIP Import: Import multiple CSV files from a single ZIP archive with preview modal
- Statistics - Relationships Section: Display relationships between multiple selected columns
- Correlation matrix with heatmap visualization
- Pair Plot for numeric columns (2-4 columns)
- Categorical × Numeric bar charts showing group means
- Categorical × Categorical cross-tabulation tables
- Statistics - Skewness/Kurtosis: Added skewness and excess kurtosis to Moments section
Changed
- Statistics - Compact Display: Redesigned statistics display for better readability
- Basic info in single line (type, scale, n, missing)
- Moments and Quantiles in horizontal groups
- Statistics - Column Type Classification: Changed from data type to measurement scale for determining numeric vs categorical
[2025.12.10-1]
Added
- Open from URL: Support for opening MDS project files from URL
Fixed
- Embed Mode: Prevent editing report graph titles in embed mode
[2025.12.09]
Added
- Landing Page: Added a new landing page at the root URL (/)
- Hero section with app screenshot
- Feature highlights and privacy information
- OGP meta tags for social media sharing
- English Documentation: Added English translation of all user documentation (12 pages)
- Getting Started, Data Table, Statistics, Graph Builder, Custom Graph, SQL Editor, Crosstab, Reports, etc.
- Static HTML generation for English docs
- Create Dataset: Create new empty datasets from the File menu
- Selected Rows to Dataset: Create a derived dataset from selected rows in the Selected Rows tab
- Sandbox Mode: Added sandbox mode for embedding MIDAS in documentation with interactive demos
- Bin Statistics - Boundary/Center: Added boundary and center parameters for histogram bin alignment
Changed
- URL Change: The application URL has changed from
/to/app.
Fixed
- Statistics Tab - Kebab Menu: Added kebab menu to all graphs (histogram, scatter plot, time series, date distribution) with "Add to Report" and "Open in Graph Builder" options
- NULL Display: Improved NULL value display with distinct styling
- Tab Creation Modal: Fixed infinite loop error in TabCreationComboBox
- Primary Dataset Edit: Invalidate dependent element caches when editing primary datasets
- Stale Model Blocking: Block predictions and diagnostics for stale models instead of deleting them
[2025.12.05]
Added
- Data Table - Edit Mode: Added editing capabilities for primary datasets
- Inline cell editing with double-click
- Add new rows
- Delete rows
- Project Diff: Compare current project state with saved MDS files
- Detect changes in datasets, models, and reports
- Visual diff UI with detailed change information
- Clickable dataset ID links to open corresponding tabs
- Report - Markdown Editor: Migrated report editor to CodeMirror with syntax highlighting, autocomplete for element references, and collapsible element preview section
- Report - Aspect Ratio: Added aspect ratio setting for report elements
- Report - Element Menu: Added menu button in inline preview with Duplicate and Open Source Dataset options
- Report - Multi-Reference Warning: Show warning when modifying elements that are referenced multiple times
- Data Table - Cell Tooltip: Show tooltip with full cell content on hover (500ms delay)
- Graph Builder - Facet Category Limit: Added Max Facet Categories setting in Settings > Graph tab to prevent browser freezing when selecting columns with too many categories
- AI Agent Command Interface: Added
x:command system for AI agent integrationx:tab- Create and configure analysis tabs (SQL Editor, Statistics, GLM, Graph Builder, etc.)x:dataset- Create derived datasets via SQL queriesx:report- Add graphs and text to reportsx:model- Execute GLM modelsx:status,x:list,x:describe- Query project state
- Console Mode: Added console mode UI for AI agents to execute commands and view results
- Console Mode: Display only the latest command result in UI (full history available in browser console)
- AI Agent Command - Dataset: Auto-resolve targetDatasetId from SQL query for sql_query type operations
- Crosstab - Multi-Value Fields: Crosstab now supports multiple value fields with aggregation
- Custom Graph - Facet Column Types: Facet now accepts all column types (Int64, Float64, datetime, etc.), not just categorical columns
Fixed
- Custom Graph - Legend Ordinal Order: Fixed legend not respecting ordinal order when ordinal variable is assigned to Fill, Color, Stroke, Shape, or Linetype aesthetics
- Report - Element Menu (Firefox): Fixed report element menu not clickable in Firefox
- Report - View Settings: Fixed View Settings not working for graphs in reports
- Report - Embed Mode: Fixed report tab disappearing when navigating back from embed mode
- Report - Embed Mode Save: Save project to OPFS before entering embed mode to prevent data loss
- Data Table Menu - Checkbox UI: Fixed "Save data with project" checkbox not visually updating when clicked directly on the checkbox
- Data Table - File Selection: Fixed file selection to use input element so it can be opened from command palette
- Custom Graph - Int64 Axis Tick: Fixed decimal tick values appearing on Int64 type axis
- SQL Query Editor - INTERVAL Type: Display DuckDB INTERVAL type in human-readable format
- Storage Management: Display project names instead of project IDs in the Saved Projects list
- Dataset Rename: Automatically update SQL queries when renaming a dataset that is referenced by SQL Query operations
- SQL Query Editor: Fixed false positive detection of multiple statements when semicolon appears inside string literals
- Project Lineage: Fixed table references in SQL subqueries not being detected for lineage tracking
- WHERE clause subqueries (IN, NOT IN, EXISTS, comparison)
- Scalar subqueries in SELECT list
- HAVING clause subqueries
- FROM clause subqueries (derived tables)
- Nested subqueries
- SQL Query Editor: Fixed UNION/INTERSECT/EXCEPT queries being incorrectly rejected as unsafe operations
- E2E Test - Quick Access: Fixed test using CSS class selector that didn't work in production builds
[2025.12.01]
Added
- Open from URL - CSV Support: Load CSV files directly from URLs with progress display, cancellation, and Content-Type validation
- Application Settings: Added settings dialog with trusted URL whitelist management for Open from URL
- Report - Add Text Button: Added "Add Text" button to report header kebab menu
Fixed
- Graph Builder - X-Axis Label Rotation: Improved label rotation logic to compare label width with band width
- Data Table - Filter Expression: Unified filter expression syntax to DuckDB SQL standard (quotes and operators)
- Settings - UI Separation: Separated Settings and Storage Management into distinct buttons
- DuckDB Worker - Initialization: Fixed DuckDB being initialized twice in worker
- Data Table - Save Filtered Dataset: Automatically opens the new tab after saving filtered dataset
- Time Series - Resize: Fixed Time Series graph not resizing with container
- Create New Tab - Linear Regression: Removed deprecated Linear Regression option from dialog
[2025.11.30]
Added
- PWA Support: Added Progressive Web App support for offline access and installation
- DuckDB Worker - SQL Cancel: DuckDB now runs in a Web Worker with SQL query cancellation support
- Data Table - Save Filtered Data: Filter results can now be saved as derived datasets
- Graph Builder - Tile Ordinal Axis: Tile (Heatmap) now supports ordinal axis scales
Fixed
- Data Table - Reload Cache: Fixed transitive derived dataset cache not being cleared on primary dataset reload
- SQL Editor - DATE Type: Fixed DATE type displaying as numbers in SQL query results
- Graph Builder - Dataset Selection: Fixed ID duplication error in dataset selection
- SQL Editor - Materialized View: Fixed Materialized View checkbox state not persisting correctly
[2025.11.27]
Added
- Help Menu - Documentation: Added Documentation submenu with Japanese/English links
- Graph Builder - Geom Tile: Added geom_tile for creating heatmaps and tile-based visualizations
- Supports continuous color scales for numeric fill values
- Graph Builder - Summary Statistics: Added stat_summary transformation for aggregate visualizations
- Mean, median, min, max, sum, and custom percentile functions
- Output selection (y, ymin, ymax) for different geometry types
- Complete option to show all x-axis categories including those with no data
- Graph Builder - Fixed Fill Color: Added option to set a fixed fill color independent of data
- Dataset Metadata - Description: Added ability to edit dataset descriptions in Dataset Metadata modal
Fixed
- Graph Builder - Facets: Fixed aesthetic scale domains to be unified across all facet panels
- Graph Builder - Facets: Fixed "Complete missing combinations" option to apply consistently across all panels
- Graph Builder - Alpha Aesthetic: Enabled Alpha aesthetic mapping for Bar, Line, Area, and Tile geometries
[2025.11.25]
Added
- Project Lineage - Context Menu: Right-click context menu for lineage graph nodes
- Open/Delete menu for datasets, models, and reports (Focus/Close for tabs)
- Shows dependencies in warning dialog before deletion
- Deletes all dependent objects when confirmed
- Documentation Link: Added "Documentation (ja)" link in About dialog for quick access to Japanese documentation
- MDS URL Duplicate Detection: Prevent duplicate projects when opening same URL multiple times
- Shows confirmation dialog when opening an MDS URL that was previously loaded
- Three options: Open Existing (use cached version), Open as New (create new copy), or Cancel
- Displays project information (name, last modified, fetched time) in confirmation dialog
- Tracks source URL and fetch timestamp for each project (
sourceUrl,sourceUrlFetchedAt) - Helps users avoid accidentally creating duplicate projects from the same source
- Embed Mode - Local Projects: Enter Embed mode from locally opened projects
- "Embed Mode" menu item in report menu (⋮ button)
- Browser back button returns to normal ProjectView
- Auto-loads project from storage when accessing embed URL directly
Fixed
- Embed Mode - External MDS Loading: Fixed
/?mds=<URL>&embed=truenot working at root path- Root path with mds parameter now correctly renders EmbedView
- Shows proper error message when mds parameter is missing in embed mode
Removed
- Report HTML Export: Removed the "Export Report as HTML" feature
- The hacky DOM-cloning approach had reliability issues with CSS and SVG rendering
- Use browser's print function (Cmd+P / Ctrl+P) and "Save as PDF" as an alternative
[2025.11.24]
Added
- Embed Mode: Embed reports in external websites using iframe
- URL format:
?mds=<URL>&embed=true&report-id=<ID>or&report-name=<NAME> - Clean view-only display without menus or editing UI
- "Created with MIDAS" attribution in bottom-right corner
- Falls back to first report if no report specified
- URL format:
- Graph Builder - Responsive Height: Graphs now automatically adjust to container height changes
- URL-based MDS Loading: Load MDS project files directly from URLs using
?mds=parameter- Share projects by simply sharing a URL
- Three-tier security validation: blocks cloud metadata endpoints, URL-based whitelist, warning dialogs for untrusted sources
- 10MB file size limit to prevent DoS attacks
- Protects users by warning about public file hosting services (GitHub, S3, etc.) where unverified content may exist
- SEO-friendly canonical URLs (excludes tracking parameters)
Fixed
- Graph Builder - Pair Plot: Fixed Pair Plot to scale dynamically based on container size instead of using fixed dimensions
- Crosstab - Bar in Cell: Fixed minimum values showing no bar in Bar in Cell visual mode
- Statistics: Fixed date/datetime column statistics (Earliest/Latest/Time span) not displaying
Changed
- ID Generation: Unified all ID generation to use UUID v4 format with type-specific prefixes
- All elements (graphs, reports, datasets, tabs) now use globally unique identifiers
- Prefixes (graph-, report-, dataset-, etc.) maintained for better debugging experience
- Eliminates potential ID collision issues in distributed or concurrent usage scenarios
[2025.11.21]
Added
- Custom Graph - Facets: Facet Wrap and Facet Grid functionality
- Split data by categorical variables to create multiple sub-graphs
- Facet Wrap: Grid layout with single variable
- Facet Grid: 2D grid with row and column variables
- Horizontal scrolling for viewing all panels when exceeding screen width
- Custom Graph - Density (KDE): Kernel Density Estimation statistical transformation
- Added as independent layer statistics option alongside Identity/Count/Bin
- Bandwidth parameter configuration
- Y Scale options (count/density) for both Bin and Density statistics
- Automatic "Density" Y-axis title generation
- Grouped density curves by categorical aesthetics (color/fill/stroke)
- Custom Graph - Secondary Y Axis: Dual Y-axis support for overlaying different scales
- Configure right-side Y axis independently (scale type, title, domain, ticks)
- Per-layer Y axis selection (Primary/Secondary)
- Synchronized zoom behavior across both axes
- Available in Cartesian coordinate system only
- Custom Graph - Categorical Color Palette: Discrete color palette for categorical variables
- Optimized color selection for categorical data visualization
- Documentation: Enhanced documentation site features
- Left sidebar navigation for improved browsing
- 404 error page for invalid documentation URLs
- Graph Builder - Responsive Preview: Dynamic preview height adjustment based on content
Fixed
- Custom Graph - Color/Fill Specification: Unified color and fill aesthetics to match ggplot2 conventions
- Bar: fill for bar color, color for border (removed color fallback to fill)
- Area: fill for area color, color for border, changed grouping from color to fill
- Point/Line: No changes (already compliant)
- Added fillScale and strokeScale support across all layers
- Custom Graph - Layer Aesthetics: Show only supported aesthetics per geometry type
- Point: x, y, color, fill, stroke, size, shape, alpha
- Line: x, y, color, size, linetype, alpha
- Bar: x, y, fill, color, alpha (stroke not supported)
- Area: x, y, fill, color, alpha
- Prevents configuration of unsupported aesthetics that would be ignored
- Custom Graph - Bar Position Settings: Position (Identity/Stack/Dodge) now applies correctly
- Custom Graph - Bar Display: Corrected bar rendering issues
- Custom Graph - Stack Position: Fixed stacked bar/area positioning calculation
- Custom Graph - Bar Axis Overlap: Bars no longer overlap with axis lines
- Custom Graph - Bin Statistics Aesthetics: Aesthetics (color/fill/size) now preserved when using Bin statistics
- Custom Graph - Legend Titles: Column names now display correctly in legend titles instead of column IDs
- Custom Graph - Bar Layer: Disabled color aesthetic for Bar layers (fill is the correct aesthetic for bars)
- Custom Graph - Query Result Categorical Axes: Categorical columns from Query Result datasets now recognized properly
- Custom Graph - Axis Labels: Automatic generation of axis labels (axis titles) from column names
- Custom Graph - X Axis Tick Overlap: Fixed overlapping tick labels on X axis
- Custom Graph - Facet Settings Layout: Improved Columns and Rows layout in Facet configuration UI
- Custom Graph - Facet Responsive Sizing: Facet panels now resize dynamically based on parent container dimensions
- Custom Graph - Facet Label Clipping: X axis labels in faceted graphs no longer get clipped
- Custom Graph - Density with Faceting: Density curves and faceting can now be used simultaneously
- Custom Graph - Flip Coordinate Histograms: Numeric histograms now render correctly when using flip coordinate system
- Custom Graph - Density Y Axis Requirement: Fixed Density statistics specification to correctly indicate Y axis is not required
- Graph Builder - Preview Scroll: Fixed scroll behavior in preview container
- Graph Builder - Dataset Dropdown: Corrected dataset dropdown display issues
[2025.11.17]
Added
- Custom Graph: Grammar of Graphics-based graph creation feature
- Multiple geometry types (Point/Line/Bar/Area)
- Layer-based multi-layer support
- Statistical transformations (Identity/Count/Bin) and position adjustments (Identity/Stack/Dodge)
- Categorical scale and color scale configuration UI
- Additional aesthetic channels (size, fill, stroke, alpha)
- Coordinate system transformations (cartesian/flip) and legend rendering
- Support for ordinal/nominal columns
- Category order customization with Reverse button
- Two-pane layout with collapsible configuration sections
Fixed
- Project Lineage: Fixed issue where SQL dependencies with multiple tables were not tracked correctly
- Added support for CROSS_PRODUCT (comma-separated tables)
- Removed duplicate edge creation
- Graph Builder: Fixed issue where previous rendering remained when settings changed
- DerivedDataSet: Fixed recursive evaluation of parent datasets
- Data Table: Fixed conflict between cell copy feature and row context menu
Performance
- DuckDB: Improved DuckDB initialization speed for SQL evaluation
[2025.11.05-2]
Fixed
- Column Type Conversion: Fixed issue where excluded rows were not preserved after project save and reload when using EXCLUDE mode (#174)
- Histogram: Fixed rendering issue for datasets with 1000+ rows (#176)
- Graph Builder - Bar Chart: Fixed D3 scale replacement issue causing incorrect bar positioning
[2025.11.05]
Added
- Dummy Coding: Transform categorical variables into dummy variables for GLM analysis
- Option to keep original columns alongside dummy variables
- Scale transformation functionality for categorical variables
- Boolean columns included as-is by default
- Dataset Metadata: Display dataset information modal showing row count, column count, data types, and other metadata
- GLM: Web Worker implementation for non-blocking computation
- Real-time progress tracking with iteration details
- Convergence history saved as dataset for analysis
- Coefficient display organized by variable in convergence history table
Fixed
- Convert Column Type: Fixed error when dataset names contain spaces
- Filtered Data: Fixed issue where filtered datasets created from DerivedDataSets failed to load after saving and reopening project files
- GLM: Fixed handling of negative predicted values (μ<0) in Gaussian GLM
- GLM Progress Dialog: Fixed layout shift during progress updates
- GLM Convergence History: Fixed data type issues with theta_iter column and improved log-likelihood display
- Project View: Prevented unintended scrolling behavior
- Dummy Coding: Fixed persistence of dummy-coded datasets in project files
Performance
- GLM: 4.7x performance improvement using TypedArray optimization
[2025.11.01]
Added
- Release Notes: View release history from Help menu and About dialog
[2025.10.31]
Added
- Graph Builder: Filter functionality to subset data in visualizations
- Graph Builder - Scatter Plot: Display count of overlapping points in tooltips
- File Format: MDS project files are now compressed with gzip, reducing file size
Fixed
- Project Management: Project names are now properly saved and displayed in the project list
- Project Loading: Improved performance by loading metadata only when listing projects
[2025.10.23]
Added
- Graph Builder - Bar Chart: Top N filtering and custom sorting options
- SQL Editor: Overwrite existing datasets functionality
- Project Lineage: Display dependencies in duplicate name dialog
Fixed
- Performance: Fixed stack overflow when clicking interval scale columns with large datasets
- Graph Builder: Fixed issue where user-selected DerivedDataSet was ignored
- Data Table: Fixed abnormally large column headers
- Data Table: Improved row number header z-index for better scrolling display
- UI: Hidden scrollbar in tab header area
- SQL Editor: Fixed initial query not displaying
- SQL Query Viewer: Improved color scheme and spacing
[2025.10.22]
Added
- GLM: Prediction functionality for trained models
- Graph Builder - Histogram: Faceted mode with statistical annotations
- Graph Builder - Pair Plot: Multi-variable scatter plot matrix visualization
- Graph Builder - Scatter Plot: 2D density visualization with configurable color scales
- SQL Editor: Integrated CodeMirror for improved editing experience
- Data Management: Dataset deletion with dependency checking
Fixed
- GLM: Store feature metadata by column ID, resolve names from training dataset during prediction
- SQL: Allow referencing unevaluated DerivedDataSet in FROM clause
- Pair Plot: Unified axis positions and colors between histograms and scatter plots
- UI: Export project dialog now properly displays as single modal
[2025.10.19]
Fixed
- Sample Data: Fixed country name formatting in Gapminder dataset
[2025.10.18]
Added
- Initial release