Skip to content

Releases: ZVN-DEV/yable

v0.4.0 — DX Improvements

15 May 05:21

Choose a tag to compare

What's New

Column Presets

Zero-boilerplate factory functions for the most common column patterns:

  • selectColumn() — checkbox selection with indeterminate header state
  • rowNumberColumn() — row index display
  • actionsColumn({ actions }) — per-row action buttons with icon/label/hide/disable
  • expandColumn() — expand/collapse toggle for detail panels and tree data

Cell Layout Primitives

Compose rich cell content without manual CSS:

  • CellStack — vertical layout (primary text + subtitle)
  • CellRow — horizontal layout with align/justify
  • CellWithIcon — icon + content
  • CellText — styled text with variant/size/truncate/bold

Developer Experience

  • defaultColumnDef — set table-level column defaults (enableSorting, size, etc.)
  • YableProvider — React context for project-wide table config
  • mergeEditChanges() — one-liner to apply onEditCommit changes
  • useTablePersistence() — localStorage persistence with debounce, versioning, SSR safety
  • Editable inference — columns with editConfig are automatically editable
  • cellStyle prop — inline styles on column definitions
  • cellClassName fix — was defined in types but never applied to cells

Documentation

  • Cell types guide documenting all 9 built-in cellType values
  • Floating filters guide
  • Column presets guide
  • Fixed quickstart sorting contradiction

Bug Fixes

  • Column resize handle no longer triggers column reorder drag
  • cellClassName now properly renders on <td> elements

Install

npm install @zvndev/yable-core@0.4.0 @zvndev/yable-react@0.4.0 @zvndev/yable-themes@0.4.0

Full Changelog: v0.3.0...v0.4.0

v0.3.0 — Security, Accessibility & Export Sprint

10 May 01:31

Choose a tag to compare

v0.3.0 — Security, Accessibility & Export Sprint

Security

  • Prototype pollution guard on getDeepValue — blocks __proto__, constructor, prototype traversal
  • URL allowlist in CellLink — only http:, https:, mailto:, tel: protocols allowed
  • Formula length limit (10,000 chars) prevents DoS via parser
  • CSV formula injection mitigation — tab-prefixes values starting with =, +, -, @

Added

  • exportToCsv() and exportToJson() — full RFC 4180 CSV compliance, BOM support, custom delimiters, column filtering, value formatters
  • ariaLabel prop on React <Table> component
  • aria-live region for sort/filter/page change announcements
  • aria-selected on selected rows, aria-expanded on expandable rows
  • TanStack Table migration guide (docs/MIGRATION.md)

Changed

  • Table constructor is now fully typed — eliminated ~90 any casts, __commitCoordinator moved to WeakMap
  • ESLint no-explicit-any escalated from warnerror (remaining count: 22, down from 114)
  • 127 new tests (722 total) covering security, accessibility, export, virtualization, clipboard, and error boundaries

Packages

  • @zvndev/yable-core@0.3.0
  • @zvndev/yable-react@0.3.0
  • @zvndev/yable-vanilla@0.3.0
  • @zvndev/yable-themes@0.3.0

Install: npm install @zvndev/yable-core@0.3.0 @zvndev/yable-react@0.3.0

v0.2.1

16 Apr 04:09

Choose a tag to compare

Yable v0.2.1

This release raises the product's trust floor and ships the first serious evaluation tranche.

Highlights

  • Trust-surface cleanup across README, TODO, docs, and demo copy
  • Real lint, coverage, CI, and package-integrity checks
  • Fixed themes package publish/export surface
  • Demo deploy path and demo dependency advisories fixed
  • Baseline cell range selection with clipboard-aware copy behavior
  • Column virtualization, floating filters, and set filter support
  • Added focused tests for selection, faceting, virtualization, and print sanitization

Verification

  • lint
  • test
  • typecheck
  • build
  • size-limit
  • production audit (no known high prod vulnerabilities found locally)

Known limitations

  • multi-range selection not yet implemented
  • Shift+Arrow selection extension not yet implemented
  • floating filters currently ship text + set variants only
  • column virtualization intentionally falls back with pinned columns or grouped headers