Skip to main content

Changelog

Every improvement, automatically tracked from our commit history.

Subscribe via Atom feed
← Prev Page 46 of 53 Next →
February 14, 2026
minor UI Components

Implement dual-grid freeze pane layout for column/row freezing (1.22.0)

SDK 1.21.4 → 1.22.0 | 68974b40
Details

Column freeze now uses a DockPanel with a fixed-width frozen grid on the

left and a horizontally scrollable grid on the right, separated by a

visual divider. When FrozenColumnCount > 0, the renderer splits cells

between the two grids so frozen columns stay in place during horizontal

scroll. Resize grips dispatch to the correct grid via a routing layer.

Row freeze for infinite scroll pins the first N data rows at the top of

the visible window. The mouse wheel only scrolls the remaining rows.

The InfiniteScroll page cache assembles frozen rows + scrollable rows

from the appropriate pages.

minor Notes

Add table freezing, infinite scroll, and default settings (1.35.0)

Notes 1.34.7 → 1.35.0 | 25571447
Details

Add column/row freeze persistence, infinite scroll mode, and a plugin-wide

table defaults settings panel. TableBlock model gains FrozenColumns, FrozenRows,

and ScrollMode fields with full JSON serialization. All six data sources

implement OnFreezeColumnsAsync/OnFreezeRowsAsync. TableBlockEditor wires

freeze and scroll mode events from TableGrid and applies plugin-level defaults

for striping, color theme, page size, and scroll mode when per-table values

are unset. New NotesSettingsOverlay accessible via Settings cog > Table Defaults.

minor UI Components

Add column/row freezing, infinite scroll mode, and scroll mode toggle (1.21.0)

SDK 1.20.14 → 1.21.0 | ddc2f77b
Details

Add freeze pane support to TableGrid: right-click column header → "Freeze From Here" pins

columns to the left; right-click data row → "Freeze This Row" pins rows above. Visual

indicators (blue border lines) mark freeze boundaries. Frozen state persisted through

FrozenColumnCount/FrozenRowCount properties on TableGridData and corresponding

OnFreezeColumnsAsync/OnFreezeRowsAsync callbacks on ITableGridDataSource.

Add infinite scroll mode as an alternative to pagination. Toggle via gear menu →

"Infinite Scroll". When active, pagination bar hides, vertical scrollbar enables,

and rows accumulate as user scrolls near the bottom (100px threshold). Filter/sort

resets accumulated rows. TableGridInfiniteScroll manages page tracking, row

accumulation, and loading indicator. TableScrollMode enum (Paginated/InfiniteScroll)

added to models.

New files: TableGridFreezeLayout.cs (dual-grid layout manager for frozen columns),

TableGridInfiniteScroll.cs (scroll monitoring and page accumulation).

Updated: TableGrid.cs (new StyledProperties + events for freeze counts and scroll mode),

TableGridRenderer.cs (freeze boundary indicators, frozenColumnCount/frozenRowCount params),

TableGridContextMenu.cs (freeze/unfreeze menu items), TableGridToolbar.cs (scroll mode toggle),

ITableGridDataSource.cs (freeze callbacks), TableGridModels.cs (freeze fields + scroll enum).

Bumps PrivStackSdkVersion from 1.20.14 to 1.21.0.

minor Notes

Table system overhaul — options gear, striping, insert indicators, edit flyout (1.34.0)

Notes 1.33.0 → 1.34.0 | a60968f2
Details

Restructure Notes plugin table system to use the new UI.Adaptive 1.20.0

TableGrid capabilities:

TableBlockEditor split into 5 partial classes (~200 lines each) from the

previous 949-line monolith:

  • TableBlockEditor.axaml.cs: lifecycle, rendering, data source dispatch
  • TableBlockEditorImport.cs: import/refresh from CSV/TSV/JSON files
  • TableBlockEditorDatasetConfig.cs: dataset configuration wizard panel
  • TableBlockEditorColumns.cs: column visibility/reorder flyout
  • TableBlockEditorOptionsMenu.cs: gear menu wiring, state persistence

New features:

  • Options gear menu replaces scattered toolbar buttons — Import, Refresh,

Columns, Edit Source now appear as menu items alongside built-in options

(Header Row, Striped Rows, Export, Edit Table)

  • TableEditFlyout for editing table title, caption, header, striping,

and color theme (Default/Blue/Green/Purple/Orange presets)

  • HasHeader flag synced bidirectionally with Rows[0].IsHeader for backward

compat when loading older tables

  • FilterText, PageSize, IsStriped persisted to TableBlock on commit events
  • ColorTheme and IsStriped forwarded to TableGrid for rendering

Data source changes:

  • All 6 ITableGridDataSource implementations updated with positional

insert/delete methods (OnInsertRowAtAsync, OnDeleteRowAtAsync,

OnInsertColumnAtAsync, OnDeleteColumnAtAsync)

  • ManualTableSource and EntityTableSource: full implementations with

header offset handling, sort order shifting, column width management

  • DatasetTableSource, ViewTableSource, PluginQueryTableSource,

SourceBackedTableSource: throw NotSupportedException (read-only)

Model changes:

  • TableBlock gains IsStriped, HasHeader, SortColumn, SortDirection,

ColorTheme, Caption properties with JSON serialization

  • Tablemeta marker extended to 13 fields for markdown round-trip
  • MarkdownBlockParser parses extended tablemeta with fallback application

when block ID is not found in existing block map

AXAML cleanup:

  • Removed DataSourceControls panel (Edit Source, Columns buttons) — these

are now menu items in the options gear flyout

minor Notes

Unify all table types through TableGrid, gut TableBlockEditor (1.33.0)

Notes 1.32.0 → 1.33.0 | f69571de
Details

Phase 2 completion — all 6 table types now render through the shared TableGrid component

in UI.Adaptive. TableBlockEditor reduced from 3,272 to ~550 lines by extracting all

grid rendering, cell editing, drag-drop, context menus, sorting, filtering, paging,

and export into the shared component.

New files:

  • ManualTableSource: ITableGridDataSource adapter for inline manual tables. Rows stored

directly in TableBlock.Rows. Full editing, sorting (SmartComparer), filtering, paging,

row/column reorder, and structure editing support

  • EntityTableSource: ITableGridDataSource adapter for entity-backed tables. Rows stored

as separate entities via TableRowService. Implements IDisposable for debounce cleanup.

Debounced save (300ms per-row CancellationTokenSource) for cell edits

Modified files:

  • TableBlockEditor.axaml: Removed manual Grid, toolbar, filter/paging controls. Kept

unified TableGrid, ImportPanel, DataSourceControls, DatasetConfigPanel, QueryErrorBorder

  • TableBlockEditor.axaml.cs: Removed ~2,700 lines of inline rendering (RebuildManualTable,

RebuildEntityTableAsync, CreateEditableCell, CreateEntityCell, all navigation, context

menus, drag handlers, resize handlers, export methods). Kept lifecycle, data source

dispatch, import/refresh, dataset config, and column visibility as thin wiring layer

  • NotesPlugin.cs: Version 1.32.0 -> 1.33.0
← Prev Page 46 of 53 Next →

Get notified about new releases