FlyPix Release: v3.11.0
Version 3.11.0 introduces custom Data Properties, letting projects define their own schema of fields โ booleans, numbers, strings, colors, dates, enums, objects, and lists โ for every annotation, manageable right from the inspector and included in GeoJSON export/import. The annotations table also gains a column for each data property and for each annotation's layer, with per-column sorting and type-aware filtering. Other notable changes include a move of the annotations table into its own module, simplified advanced training settings, table filters that now affect map visibility, relaxed inference region validation, and broader WMTS projection support. This release also fixes a handful of minor issues.
Changelogโ
Major New Features
Projects can now define their own custom data properties for annotations, described using a JSON Schema. This lets you manage properties of many data types on every annotation in the project โ booleans, numbers, strings, colors, dates, enums, nested objects, and lists. These values can also be included when exporting annotations as GeoJSON, and set from a column (or a fallback default) when importing annotations from GeoJSON. See the Data Properties deep dive for more details.
New Features and Improvements
The annotations table now shows a column for each of your project's configured custom data properties, alongside a new column identifying each annotation's layer (source vector). Every column can be sorted, and most support filtering suited to their type โ text search, number and date ranges, or a checklist of existing values.
WMTS sources advertising a wider range of coordinate systems can now be added to a project. Previously, only a small set of hard-coded EPSG codes were recognized; unsupported projections are now resolved automatically against a much larger reference list.
Changes
The project classes list has been moved to the project Settings page.
The annotation attributes table has moved out of the Analytics panel and into its own module, next to Scenes, as a scrollable list. Column headers now support click-to-sort, shown with an up or down arrow, and each sortable column has its own filter button that opens a set of range filters, replacing the previous single filter row.
Advanced Settings in model training now offers a single control, the number of training epochs. The crop size and learning rate sliders have been removed: the latest training pipeline determines both values automatically, so setting them manually no longer had any effect. Existing models are unaffected.
Filtering the annotations table by class, layer, or a data property now also hides the matching annotations on the map, and anywhere else annotation visibility applies, instead of only in the table.
Inference regions are no longer flagged as "Too Sparse" or "Too Thin". Only containment within the raster is still checked, so inference regions of any size or shape are now accepted.
Fixes
Fixed a crash when opening the details page of a model that was trained without a validation dataset. Metrics that could not be measured are now shown as empty values.
Fixed classes copied into a project not appearing until the page was refreshed, which left their annotations shown in a fallback gray color. Copied classes and their colors now appear immediately.
Deep Divesโ
Data Propertiesโ
Every project can now define its own set of data properties: custom, project-specific fields you attach to each annotation, such as species, height, condition, or inspection date. You define the shape of these properties once, using a JSON Schema, and every annotation in the project can then carry values matching that shape.
Once a schema is defined, the inspector lets you manage properties of many data types on every annotation in the project, with no separate configuration step required โ booleans (checkboxes), numbers, strings, colors, dates, single-choice options (enums, shown as dropdowns/selectors), nested objects, and lists. Anything more complex falls back to a raw JSON view. When you select multiple annotations with differing values, the inspector shows a clear "Mixed" state instead of guessing.
Data properties can also be included when exporting annotations as GeoJSON: the export dialog's new Data Properties section lets you choose which fields to include and rename their output columns, the same way the existing built-in properties work.
The same section exists on import: pick which column in the uploaded file each field should read from (or leave a column unmatched and set a fallback default value instead), using the same type-aware controls as the inspector. A file exported with default column names imports right back into the same shape with no configuration needed.
This is the foundation for a broader set of capabilities we're building toward, including tighter Geosense integration and automatic property inference. Data properties can already be sorted and filtered directly in the Analytics table.