> For the complete documentation index, see [llms.txt](https://nenoso.gitbook.io/gdw/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://nenoso.gitbook.io/gdw/reference/release-notes.md).

# Release Notes

## \[1.2.1] - 2026-05-27

### Added

* **Active saved-search awareness** — when you apply a saved search, an amber **★** badge appears at the left of the filter chip bar; a trailing `*` + italic marks divergence as soon as you edit a chip. Clicking the badge opens the saved-searches dropdown, which gains two conditional rows above "Save current search…": **↻ Update ''** (overwrite the entry with your current state) and **⟲ Reset to ''** (discard local edits and re-apply the saved expression). The dropdown also highlights the active row in bold + tint. Switching to a different saved or recent entry while you have unsaved chip edits surfaces a "Discard unsaved changes?" confirm so the edits aren't lost silently.
* **Recent Searches Cap** preference (default 20, range 1–100) — `Preferences ▸ Game Data Workbench ▸ Table View` lets you tune how many recent searches the dropdown remembers per schema

### Fixed

* Column-header sort priority indicator now numbers from `↑1` / `↓1` — hidden-column or orphan sort entries no longer inflate the visible priority number
* Selection-summary status bar now refreshes on every selection mutation (Ctrl+click extend / Shift+click extend / Ctrl+click deselect) instead of staying frozen at the first selection's aggregates
* "Save current search…" footer in the saved-searches dropdown reliably reflects the live filter state after editing a chip — opening the dropdown no longer reuses a stale cached instance
* Saved-searches dropdown now scrolls when many entries accumulate, so Recent rows no longer stack on top of each other when there are more entries than fit; the "Save current search…" footer stays pinned at the bottom

## \[1.2.0] - 2026-05-22

### Added

* **Saved searches** — name and persist search expressions per schema, with Personal (per-machine) and Project (committed to `ProjectSettings/GDW/SavedSearches/`) scopes. The `▾` caret next to the search field opens a sectioned dropdown of saved + recent entries.
* Save popover gains a Personal/Project radio picker and an in-place "OK → Overwrite" button flip on name collision
* Per-entry kebab menu: Rename, Move to {opposite scope}, Delete
* **Selection-summary status bar** with aggregate chips (Rows / Count / Sum / Avg / Min / Max) below the table for the current multi-cell selection; click any chip to copy its value to the clipboard
* **Second toolbar row** with:
  * Column-width cluster: Stretch (default), Fit Headers, Compact, Auto-fit
  * Columns popup: per-column visibility toggles in one popover
  * Quick actions: Find/Replace, Find Across (cross-schema search), Clear (filters + text + sort in one click)
* **Ping in Project** icon button next to Export on the first toolbar row (focuses the selected record's asset in the Project window)
* **Icons** replace text labels on toolbar buttons (Import, Export, Ping, Delete, etc.) for compactness and consistency
* **Command palette** gains a Recent commands section at the top showing your most recently used actions
* **Live-update Preferences** — changing Row Height, Highlight Color, Header Format, or Changed-Cell Highlight Mode under `Edit ▸ Preferences ▸ GDW` now updates open Table View windows immediately; no close/reopen needed
* **Edit a filter from its chip** — click a filter chip's body (not the X) to reopen the `Filter…` popup pre-loaded with that chip's settings
* **Type-aware column filters** — the column-header `Filter…` popup now adapts to the column type:
  * Color columns — Equals / Not Equals / Approximately Equals (with a tolerance slider) via a color picker
  * `[Flags]` enum and LayerMask columns — bitwise matching (Has Any / Has All / Has None / Equals) over a multi-select bit list
  * Vector / Quaternion columns — per-axis min/max ranges, or a magnitude range
  * Rect / Bounds columns — per-component ranges (x, y, width, height, center, size)
  * Object-reference columns — Equals / Not Equals against a chosen asset
* Basic column filters gained operator choices too: numeric (Range / ≥ / > / ≤ / < / = / ≠), text (Does Not Equal), and enum (Any of / Equals / Not Equals)

### Changed

* Toolbar reorganized into two rows; row 1 for primary data actions (schema, `+`, Import, Export, Ping), row 2 for column management and quick filter clearing
* Delete record moved to row 2 far-right with a subtle red hover tint, physically separated from `+` Create to prevent fat-finger deletions
* The `▾` caret next to the search field now opens the saved-searches + recents dropdown (previously did nothing)
* Submitting a search de-duplicates against project-scope saved searches as well as personal — a project-saved expression never reappears in Recents
* The numeric `Filter…` popup now defaults to `=` (exact value) instead of Range — the common exact-value lookup no longer needs a dropdown switch first
* A Vector / Rect / Bounds component filter with only its lower field filled is now an exact match (`=v`) instead of an open-ended `≥v` range; fill the upper field to make it a range
* Removed the no-op "Any" option from the Boolean, AnimationCurve, Reference, and Gradient filter popups — it applied no filter and duplicated the kebab's "Clear filter"
* AnimationCurve and Gradient columns no longer offer filtering (the `Filter…` entry is greyed out) — a serialized curve or gradient is never empty, so every available predicate was inert

### Fixed

* Removing a filter chip via its X no longer drops other filters on the same field (closing `damage>100` no longer removes a sibling `damage<200`)
* The "(filtered)" record-count label no longer shows a misleading "▾" caret prefix (the element is a plain label, not a dropdown)
* Color, Gradient, and Reference filter popups no longer close the moment their picker opens
* Color column filters now match reliably — both `Color32` columns and float `Color` columns shown as hex compare correctly
* Exact-value filters on `uint` / `ulong` columns no longer drop every row
* Column filters on `uint`, `byte`, `short`, and other non-`int` numeric columns now survive switching schema away and back
* Specialized column filters (color, vector, reference, flag-mask) now round-trip correctly through saved searches
* A virtual column whose formula throws now logs a one-time warning instead of silently skewing the selection-summary status bar

### Thanks to

* **CitrioN** (Discord) for reporting the filter-chip remove bug and for the UI/UX suggestions that shaped the second toolbar row, the icon overhaul, and the cross-schema search button.

## \[1.1.0] - 2026-05-12

### Added

* Conditional formatting ("Color by…") with eight modes: off, gradient, thresholds, delta-vs, by-value, contains-text, text-color, and Excel-style data bars
* Six theme-aware palettes plus a user-defined Custom two-stop palette
* N-band thresholds (1–16 user-defined bands), signed-magnitude delta-vs gradient, and zero-anchored data bars on signed ranges
* Saved column layouts now have Personal and Project scopes; Project layouts commit under `ProjectSettings/` for version control
* Promote to Project and Copy to Personal actions for moving layouts between scopes
* Always-visible column-header kebab (`⋯`) consolidates sort, filter, group, hide, conditional formatting, summary, and add-computed-column actions in one menu
* Kebab tints when a column has an active filter; "Clear filter" entry removes the filter without opening the popup
* Open Table Views toolbar dropdown on Unity's main toolbar (Unity 6.3+) for bringing any open Table View window to the front
* Expression literals accept scientific notation (`1e3`, `2.5E-2`, `6.022e23`) in virtual columns, summary formulas, and batch Custom Expression steps

### Changed

* Selection model — cells, rows, and columns are now three independent selections with active-cell outline navigation, Excel-style row/column anchors, and Ctrl+A select-all
* Keyboard navigation — F2 / Enter / Space to edit, arrows / Tab / Shift+Enter to move, Esc to back out one stage, contextual Delete precedence
* Cell editing follows a uniform display-to-edit-swap model: every editable cell shows a read-only summary in display mode and swaps to a typed input, popup, or native picker when edit mode opens
* Numeric, text, enum, flags, LayerMask, and reference cells render as labels in display mode; the typed input only materializes during edit
* Vector2 / Vector3 / Vector4, Vector2Int / Vector3Int, and Quaternion fields now edit via a popup window anchored to the cell (consistent with Rect and Bounds); inline Tab→X/Y/Z component navigation is no longer available
* Sort moved to the column-header kebab menu; header click now selects the column instead of sorting
* Saved column layouts stored as per-layout JSON files instead of a single EditorPrefs blob; layout dropdown sectioned into Personal and Project
* Filter UI moved into the kebab; standalone filter button removed
* Filter popup polished: 1px border, single-row `[Cancel] [Apply]` footer, Esc closes
* Grouping, sort, filters, hidden columns, splitter sizes, summary-row toggle, and last-used "create record" folder now persist across window close/reopen (and editor restart for UI preferences)
* Batch Operations `Custom Expression` steps now read values produced by earlier steps in the queue — chaining `Multiply [damage] × 2` then `[damage] + 100` produces the chained result
* Delete is no longer claimed to be Undoable for ScriptableObject-backed records — Ctrl+Z does not restore a deleted asset because the `.asset` file has already moved to the OS recycle bin. Restore from the recycle bin and re-import for accidental deletes.

### Fixed

* `char` columns get conditional formatting (previously silently skipped)
* ByValue mode shows the palette dropdown so the user can pick the palette
* Kebab dropdown menu renders at full content width instead of a 12px sliver
* Kebab items that open a follow-up popup (Filter, Color by) land at the correct screen position
* ContainsText popup rows render at the correct height instead of stacking on top of each other
* Object reference picker (Sprite, Texture2D, Material, AudioClip, Mesh, Font, GameObject) now reliably commits the chosen asset when opened by double-click
* Gradient and AnimationCurve inline edits commit cleanly through the cell renderer (mutable-value change-tracker fix; mirrors the Gradient picker bypass)
* Pickers stay alive when the table refreshes during an inline edit (re-entrancy + RefreshItems-during-edit guard)
* Esc on an open picker popup cancels the edit without spurious commits (FocusIn-after-ready gate)
* Batch `Custom Expression` evaluation now sees the cumulative effect of earlier steps in the queue
* Scientific-notation numbers no longer fail to parse in expressions
* `Color32` fields reject component values outside `0–255` instead of silently wrapping
* JSON read/write now follows RFC 8259 strictly — malformed input is rejected, and pathological characters in string values round-trip correctly
* Filters using the `In` operator with values containing `|`, `"`, `\`, or newlines now round-trip safely; pre-existing saved filters continue to load

### Migration

The legacy EditorPrefs blob storing column layouts is migrated to per-layout JSON files on first load. The migration is atomic — if it fails partway, the legacy blob is preserved and re-attempted next time.

## \[1.0.0] - 2026-03-09

### Added

* Spreadsheet-style Table View for browsing, sorting, filtering, and inline-editing ScriptableObject assets
* 15 built-in cell renderers covering all common Unity types, plus a custom cell drawer API for third-party extensions
* Inline asset thumbnails for visual types (Sprite, Texture2D, Material, GameObject, AudioClip, Mesh)
* Multi-column sort, text search, property-based search filters (`field:value` syntax), and per-column filtering
* Column hide/show, drag reorder, resize, and saved column layout presets
* Row grouping by any field with collapsible group headers
* Bookmarks and Pins for quick navigation and sticky reference records
* Batch operations panel with 9 operation types, drag-to-reorder steps, live preview, and a preset system
* Find & replace across all visible fields
* CSV and JSON import/export with column mapping, data review, and type coercion
* Expression-based virtual columns with 20 functions and aggregate support (SUM, AVG, MIN, MAX, COUNT, MEDIAN, STDEV)
* Summary row with per-column aggregate formulas and quick presets
* Per-cell annotations for team notes, with a dedicated Annotations browser window
* Command palette (Ctrl+K) with fuzzy search across 40+ actions
* Record link navigation with breadcrumb trail (Ctrl+Click / Alt+Click)
* Schema Creator for visually designing new ScriptableObject types with live C# preview
* Cross-schema search window
* Full keyboard navigation: Tab between cells, Enter to edit, Delete to remove, and more
* Dark and light theme support


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://nenoso.gitbook.io/gdw/reference/release-notes.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
