# This file contains metadata for your plugin.

# This file should be included when you package your plugin.
# Mandatory items:

[general]
name=FilterMate
qgisMinimumVersion=3.22
qgisMaximumVersion=4.99
description=🧭 Explore, 🔍 filter and 📦 export vector 🗺️, raster 🏔️ and LiDAR point cloud ☁️ layers from one panel, on any data source (PostgreSQL, Spatialite, GeoPackage, OGR). QGIS 3.22 to 4.x.
version=5.1.0
author=imagodata
email=simon.ducournau+filter_mate@gmail.com

about=🧭 FilterMate explores, filters and exports vector, raster and LiDAR point cloud layers from one panel.

    Pick a layer, select what matters on it, and FilterMate filters the other layers of the project by their relation to that selection: buildings near main roads, parcels on steep slopes, LiDAR points beneath rooftops, a DTM clipped around a church. Filters stay on the existing project layers, keep their styles, can be undone, saved as favorites, exported and replayed from Processing.

    🧭 EXPLORING selects on the current layer, whatever its kind:
    - 🗺️ vector: one feature, several, or an expression;
    - 🏔️ raster: band, pixel value picked on the map, value range on a live histogram, classes, raster calculator expression;
    - ☁️ point cloud (LAS, LAZ, COPC, EPT, VPC): ASPRS / LiDAR HD classes, Z, intensity and return ranges, attribute conditions, height above a DTM.

    🔍 FILTERING relates that selection to layers of any kind (9 source / target combinations) with geometric predicates, a buffer, AND / OR with existing filters and a minimum coverage for polygons. Filtered rasters and point clouds keep their id, style and place in the layer tree, and the project is always saved with the original sources.

    📦 EXPORTING writes the filtered layers: vector formats, GeoPackage with an embedded QGIS project, GeoTIFF / COG, LAZ / LAS / COPC.

    🤖 AGENT (experimental) does it from a sentence: "buildings above 1200 m in the selected commune". It reads the project, filters, selects, zooms, styles and labels layers, edits features (in the edit buffer, saved by you), makes print layouts, sets the CRS of the project, adds open data, runs Processing algorithms of QGIS, draws objects with SAM and exports, with Claude, Mistral, OpenAI, a compatible server, a local Ollama model, or a few free requests a month to try it. Filters apply at once and each step can be undone; exports and added or removed layers are confirmed. An expert mode, off by default, lets it run Python code in QGIS, shown and confirmed at each run. A built-in MCP server, off by default, lets Claude Code or another client on your computer use the same tools.

    🧩 Objects drawn by SAM (experimental): on an orthophoto, a click or a box and the SAM 2.1 model draws the object, locally on your CPU; similar objects are proposed, to keep or reject. The objects filter other layers, become a polygon layer, or are drawn from a layer of points or footprints in Processing.

    ✨ Also: PostgreSQL / PostGIS, Spatialite, GeoPackage and OGR backends with spatial indexes; undo / redo; favorites shared through git repositories; ten Processing algorithms and four models, qgis_process, Python and REST APIs, MCP servers; light and dark themes; 34 languages. QGIS 3.22 to 4.x, Qt5 and Qt6.

    🔧 Optional: psycopg2 for PostgreSQL, PDAL 2.4+ for the height above a DTM and COPC writing, onnxruntime and the SAM model (62 MB) for the objects, installed after a confirmation.

    📖 User guide: https://imagodata.github.io/filter_mate/guide.html
    💡 Sixteen use cases in English and French: https://imagodata.github.io/filter_mate/stories.html

tracker=https://github.com/imagodata/filter_mate/issues
repository=https://github.com/imagodata/filter_mate
# End of mandatory metadata

# Recommended items: regexp

hasProcessingProvider=yes

changelog=v5.1.0 (2026-11-13): First version published since 5.0.2. Two experimental sections. AGENT - a chat in the dock that filters, selects, zooms, adds open data and exports from a sentence, with Claude, Mistral, OpenAI, a compatible server or a local Ollama model and your own API key (kept in the QGIS authentication database), or a few free requests a month through a relay of FilterMate to Claude Haiku 5.5. The map, the layer tree and what changed go with each request, and the agent reads statistics, samples of features and what lies at a point instead of guessing, runs Processing algorithms of QGIS that make layers (native and qgis providers only, each layer made removed when the turn is undone), styles and labels a layer, edits features in the edit buffer without ever saving them, and reads, draws or finds similar objects with SAM. Filters apply at once and each step of a request can be undone or redone; exports and added or removed layers are confirmed; a filter written by the model is one plain WHERE clause checked against a list. Optional sources, all off until ticked: open data portals, WFS services, Sentinel-2 scenes, remote MCP connectors. An expert mode, off by default, lets the agent run Python code in QGIS, shown and confirmed at each run and not undone. An MCP server built into the plugin, off by default, lets Claude Code or another client on this computer use the same tools. Objects drawn by SAM - in the raster pipette, a click or a box and the SAM 2.1 model draws the object locally on the CPU (onnxruntime and the 62 MB model installed after a confirmation); similar objects are proposals to keep or reject; To layer turns them into a polygon layer; a new Processing algorithm draws one object per point or polygon of a layer, and Processing, the REST API and MCP accept objects as a raster selection. Dock - two stacks of sections (AGENT and EXPLORING above, FILTERING, EXPORTING and CONFIGURATION below), favorites, float and close in the title bar. The REST API and the stdio MCP server accept only plain WHERE clauses in apply_filter and preview_filter (breaking). Translations of AGENT, the favorites menu and the Processing algorithms restored in the 34 languages. Also in this version: levels of autonomy for the agent, exceptions tool by tool and layers protected from it; widgets and charts it makes under the conversation; recipes, a request of the agent kept in the project and run again without any model, and live recipes that run again by themselves when the edits of their source are saved; the layer tree, map themes, bookmarks, fields and joins; Ollama through its own API, the models installed listed, and a lighter set of tools for a slow computer; attribute filters written in the native SQL of their source; PostgreSQL through the pg_service of a layer; AND NOT without a filter keeps the whole layer minus the selection; a geometric filter joined to the previous one under OR and AND; a PostgreSQL expression that cannot be written in SQL evaluated by QGIS; on Shapefile, GeoJSON and FlatGeobuf a filter on a text keeps its case; the agent proposes changes of settings in the thread and shares them as profiles.
    v5.0.2 (2026-11-06): Changing between vector layers - the single selection list is no longer empty (the link filter of the previous layer stayed on it), no feature appears selected that nobody picked, and the display field chosen for a layer is kept. A vector layer picked before its registration is shown once registered. The dock no longer stops reacting after a layer is removed. Small scaled screens - a 1080p laptop scaled to 150 percent gets the compact profile instead of a dock too tall for its area, and the EXPLORING tools scroll instead of overlapping. The UI_PROFILE setting now works, at once and at startup. Several features that failed only in QGIS work: custom expressions in the exploring features, layers saved without their linking option, choosing where to save a single exported layer, the expression debounce setting. A custom expression matching nothing no longer empties the single selection list. Scrolling the dock no longer changes a list or a number by accident: they answer the wheel once clicked. Search bar in the Configuration tab. One order for the EXPLORING tools on every layer kind.
    Release notes of every version: https://github.com/imagodata/filter_mate/blob/main/CHANGELOG.md

# Tags are comma separated with spaces allowed
tags=python,filter,vector,raster,point cloud,lidar,las,laz,copc,dem,layers,geofilter,search,postgis,ogr,spatialite,data,exploration,subset,export,ai,agent,llm,mcp,sam,segmentation,open data

homepage=https://imagodata.github.io/filter_mate/
category=Plugins
icon=icon.png
# experimental flag
experimental=False

# deprecated flag (applies to the whole plugin, not just a single version)
deprecated=False

# Since QGIS 3.8, a comma separated list of plugins to be installed
# (or upgraded) can be specified.
# Check the documentation for more information.
# plugin_dependencies=

# Python packages FilterMate installs when this Python lacks them and the user agrees,
# into the QGIS profile (adapters/qgis/python_dependencies.py). Not plugin_dependencies:
# that key only names other QGIS plugins.
python_dependencies=onnxruntime

Category of the plugin: Raster, Vector, Database or Web
#category=Database

# If the plugin can run on QGIS Server.
server=False
