Changelog¶
All notable changes to HolySheet are documented here.
The format follows Keep a Changelog, and this project adheres to Semantic Versioning.
[0.4.0] — 2026-05-21¶
Features, Templates & CLI (53 Block Types)¶
A feature-packed release that adds custom themes, multi-page reports, global filters, report templates, new CLI commands, Jupyter integration, and 6 new block types.
Added¶
New Block Types (6 new → 53 total)¶
Charts (3 new → 18 total):
GanttChart— Project timeline / Gantt chart with task progress barsDAGChart— Directed acyclic graph for workflows and dependency treesCorrelationMatrix— Statistical correlation heatmap (2D matrix)
Data & Content (2 new → 14 total):
Scorecard— Conditional color metric grid with configurable thresholdsDataProfile— Auto-EDA summary with per-column statistics
Layout (1 new → 8 total):
Compare— Side-by-side comparison container with labeled panels
Custom Theme API¶
Themeclass for building fully branded dashboards- Extends any built-in theme (
dark,light,executive) with custom overrides - Supports: colors (14 tokens), fonts (body, heading, mono), chart palette
- Pass
Themeinstances directly toReport(theme=...)
Multi-Page Reports¶
Report.add_page(label, children)for tabbed / sidebar navigation- Sidebar navigation auto-generated from page labels
- Full support for nested blocks within pages
Global Filters¶
Report.add_filter(key, type, label, options, default)- Filter types:
dropdown,date_range,text - Filters rendered in the report header, affecting all blocks
Feature Flags¶
theme_switch=True— Dark/light mode toggle for viewerspresentation_mode=True— Fullscreen slideshow modedownload_buttons=True— Per-block CSV/PNG export
Report Security & Distribution¶
password="..."— Client-side AES encryption with PBKDF2 key derivationexpires="2026-12-31"— Expiration date overlaycompress=True— Gzip-compress embedded JSON data
Widget Export¶
Report.export_widget(path, block_ids)— Lightweight embeddable widgets- Filter to specific block IDs for minimal, targeted embeds
Jupyter Integration¶
_repr_html_()— Auto-display in Jupyter notebooksReport.show(height)— Explicit rendering with custom iframe height- Base64-encoded iframe for full CSS isolation
CLI Commands (3 new → 6 total)¶
holysheet dev SCRIPT— Hot-reload dev server with live rebuildholysheet lint SOURCE [--strict]— Report linter with 7 rulesholysheet diff FILE_A FILE_B— Compare two JSON spec files
Report Templates¶
SalesDashboard— KPIs, revenue trend, pipeline funnel, top clientsExecutiveSummary— Scorecards, highlights, trends, milestonesOpsMonitor— Service health, gauges, error rate, latency, SLOs
Changed¶
- Updated block overview from 47 to 53 block types
- Updated chart reference from 15 to 18 chart types
- Updated data & content reference from 12 to 14 types
- Updated layout reference from 7 to 8 types
- Added Features, Templates, and CLI documentation pages
- Updated
mkdocs.ymlnavigation with new pages
[0.3.0] — 2026-05-21¶
21 New Block Types (47 Total)¶
A massive expansion that nearly doubles the available block types, adding advanced charts, content blocks, and interactive controls.
Added¶
Charts (6 new → 15 total)¶
HeatmapChart— 2D heatmap with color gradient visualizationCandlestickChart— Financial OHLC candlestick charts (green/red)SankeyChart— Flow / energy diagrams with node-link architectureWaterfallChart— Revenue bridge / waterfall analysis chartsBoxPlotChart— Statistical box-and-whisker distribution plotsMapChart— Geographical scatter with bubble sizing
Content & Display (8 new → 14 total)¶
Timeline— Vertical event/milestone timeline with colored markersCallout— Styled quotes, highlights, and notes (3 variants)Embed— iframe embedding with aspect ratio supportJsonViewer— Interactive JSON tree with syntax highlightingUserCard— Team member cards with avatar and statsStatusList— Service health indicators with colored dotsInfoList— Key-value pair display with iconsStepper— Process/wizard step visualization
Interactive (4 new → 7 total)¶
Dropdown— Select from options with local stateTextInput— Text/textarea input with placeholderCheckboxGroup— Multiple checkbox selectionRadioGroup— Single-select radio buttons
Display (3 new)¶
TagList— Colored tag/badge chipsSparkline— Compact inline mini-charts (ECharts)Video— HTML5 video embed with poster and controls
Changed¶
- Updated
full_showcase.pyexample to demonstrate all 47 block types - Updated frontend registry and size category mappings
- Rebuilt React frontend bundle with all new components
- 138 tests (21 new for new blocks)
- Complete MkDocs Material documentation (14 pages)
[0.2.0] — 2026-05-21¶
First Public Release¶
The initial release of HolySheet — a Python-first report compiler that generates beautiful, portable, interactive React dashboards.
Added¶
Core¶
Reportclass — Main entry point for composing dashboards with method chaining- 26 block types organized into 5 categories (KPI/Metrics, Charts, Data/Content, Layout, Interactive)
- 3 built-in themes —
dark,light,executive— each with a complete design system - 3 export modes — Standalone HTML, folder, and JSON
- CLI —
holysheet validate,holysheet serve,holysheet version
Block Types¶
KPI & Metrics:
KPI— Key performance indicator cards with delta and status colorsMetric— Compact inline metrics for dense gridsStatComparison— Side-by-side current vs previous comparison
Charts (powered by Apache ECharts):
LineChart— Multi-series line chartsAreaChart— Filled area chartsBarChart— Grouped/stacked bar chartsPieChart— Pie/donut chartsScatterChart— Scatter/bubble plotsRadarChart— Radar/spider chartsGaugeChart— Speedometer gauges with thresholdsFunnelChart— Conversion funnel chartsTreemapChart— Hierarchical treemaps
Data & Content:
DataTable— Interactive, searchable, paginated data tablesMarkdown— Rich text content with full Markdown supportCodeBlock— Syntax-highlighted code displayImage— Image display with captionsAlert— Callout blocks (info, success, warning, error)ProgressBar— Progress indicators with custom colors
Layout:
Section— Grouping container with heading and descriptionColumns— Multi-column responsive grid (equal, bento, custom widths)Tabs— Tabbed content panelsDivider— Visual separators with optional labelsAccordion— Collapsible panels for progressive disclosure
Interactive:
Slider— Single value and range slidersNumberInput— Numeric input with increment/decrementToggle— On/off switches
Data Support¶
- Pandas DataFrames — Auto-conversion via
.to_dict(orient='records') - Polars DataFrames — Auto-conversion via
.to_dicts() list[dict]— Pass-through with value sanitizationdict[str, list]— Column-oriented to row-oriented conversion- Value sanitization — Automatic handling of NaN, Inf, Decimal, datetime, numpy scalars
Architecture¶
- Pydantic v2 models for all blocks with full type safety and validation
- JSON schema spec (v1.0.0) consumed by the React renderer
- Pre-built React bundle — No Node.js required at runtime
- Jinja2 templates for HTML generation
- orjson for fast JSON serialization
Developer Experience¶
- Full type hints throughout the codebase
- Comprehensive docstrings
- Custom exception hierarchy (
HolySheetError,DataConversionError,ExportError, etc.) logurudebug logging
Dependencies¶
| Package | Version |
|---|---|
pydantic | ≥ 2.0, < 3.0 |
jinja2 | ≥ 3.1, < 4.0 |
orjson | ≥ 3.9, < 4.0 |
loguru | ≥ 0.7, < 1.0 |
click | ≥ 8.1, < 9.0 |
Optional:
| Extra | Package | Version |
|---|---|---|
pandas | pandas | ≥ 2.0 |
polars | polars | ≥ 0.20 |
Roadmap¶
Planned for future releases:
- AI narrative blocks (auto-generated insights)
- PDF export
- PowerPoint export
- Custom React component injection
- Signed / offline report bundles
- Local chatbot over report data
- i18n / localization support
- Webhook-triggered report rebuilds
Shipped in v0.4.0: Interactive filters, Custom theme API, Gantt chart and DAG visualization