Skip to content

Releases: ultramenid/AgenticGIS

AgenticGIS v0.3.1

Choose a tag to compare

@ultramenid ultramenid released this 08 Jul 23:57

Highlights

Custom connection reliability (LM Studio and other local/custom endpoints)

Several fixes for the Custom connection mode, surfaced while testing against LM Studio's OpenAI-compatible and Anthropic-compatible endpoints:

  • Fixed an HTTP 400 (parameters.properties required) that broke every custom OpenAI-compatible connection with tool calling enabled — no-argument tool schemas now always include an explicit properties: {} instead of omitting it.
  • The base URL is now used exactly as entered for both OpenAI-compatible and Anthropic-compatible custom connections — removed the automatic /v1 guessing/insertion that produced inconsistent behavior depending on whether you included /v1 yourself.
  • Fixed a crash (AttributeError: 'AnthropicHttpClient' object has no attribute 'config') that broke every Anthropic-wire-format connection, built-in or custom.
  • Fixed a hang on Anthropic-compatible custom endpoints (e.g. LM Studio) caused by unconditionally sending a thinking field the server didn't support — it's now only sent when explicitly configured.

Smarter max output tokens

Replaced the flat 16384-token output cap with per-model limits: known providers (OpenAI, Anthropic, Gemini, DeepSeek, etc.) use their real documented caps, and unrecognized/custom models (local connections) scale with the guessed context window instead.

Install

Download AgenticGIS-v0.3.1.zip and install via QGIS → Plugins → Install from ZIP, or unzip into your QGIS plugins folder.

AgenticGIS v0.3.0

Choose a tag to compare

@ultramenid ultramenid released this 18 Jun 19:28

Highlights

run_pyqgis is now background-by-default

Long-running run_pyqgis code (downloads, file conversions, Processing runs over files, heavy pure-Python compute) now runs on a worker thread automatically, so QGIS stays responsive. Code that touches the project, map canvas, print layouts, or GUI still runs on the main thread. This replaces the old allowlist that froze the UI for ~60s on any heavy idiom it hadn't seen yet.

Charts and stats render inside the response bubble

Charts, stats, and GIFs now embed in the agent's response bubble instead of spawning a separate one, and persist there across session restore. Fixed the bubble's excess vertical whitespace.

Fixes

  • Prevent a stale CLI session_id from being restored after a session reset.
  • Restore the version line accidentally reverted to 0.2.7 (v0.2.8 was already tagged).

Install

Download AgenticGIS-v0.3.0.zip and install via QGIS → Plugins → Install from ZIP, or unzip into your QGIS plugins folder.

AgenticGIS v0.2.7

Choose a tag to compare

@ultramenid ultramenid released this 11 Jun 09:24

v0.2.7 — Session Isolation + Auto-Delete Analysis Layers + Spatial Operations Guide

What's New

  • Session isolation: Agent workspace state (layers, processing history, analysis results, errors) is now properly reset when starting a new chat session or switching between sessions.
  • Auto-cleanup for analysis layers: is_analysis=true layer source files are auto-deleted on remove_layer(), clear_layers(), and session reset.
  • Comprehensive spatial operations reference: Added complete algorithm guide to the system prompt so the LLM correctly handles all spatial queries.

Spatial Operations Guide (NEW)

The system prompt now includes a complete reference for:

native:extractbylocation — ALL 8 PREDICATE values (MANDATORY)

PREDICATE Name Use when user says...
0 intersect "touching", "near", "inside" (loose)
1 contain "enclosing", "containing"
2 disjoint "outside", "beyond", "not in" ← for outside queries
3 equal "exactly matching"
4 touch "adjacent", "bordering"
5 overlap "partially in"
6 are within "completely inside" (strict)
7 cross "crossing", "passing through"

Also covered:

  • native:buffer — DISTANCE, SEGMENTS, END_CAP_STYLE, JOIN_STYLE, DISSOLVE
  • native:intersection — overlay with attribute preservation
  • native:clip — fast mask clipping
  • native:dissolve — merge by attribute
  • native:union — combine two layers
  • native:difference — subtract overlay
  • native:symmetricaldifference — XOR (non-overlapping)
  • native:joinattributesbylocation — spatial join with PREDICATE/METHOD
  • Workflow patterns: buffer→extract, inside vs outside counts, clip-then-analyze

UI Fixes

  • Tool calls visible immediately (updateGeometry + repaint)
  • Download card spacing (10px bottom margin)
  • Text rendering restored (QLabel with proper color)
  • Faster streaming (8ms coalesce, 16ms render)
  • "Answering" status when final text streams

Previous Fixes

  • v0.2.6: Layer detection on startup
  • v0.2.5: Claude Code dedup, OpenCode streaming, process error tracking

Files

  • AgenticGIS-v0.2.7.zip (QGIS plugin)

AgenticGIS v0.2.6

Choose a tag to compare

@ultramenid ultramenid released this 10 Jun 23:21

v0.2.6 — Layer Detection Fix

What's New

  • Layer detection: Agent now correctly sees existing project layers on startup instead of reporting "no layers loaded"

Previous Fixes (v0.2.5)

  • Claude Code: No longer duplicates text messages when stream-json returns both assistant and result events
  • OpenCode: No longer shows "completed without returning a response" in multi-step conversations; multiple text events now stream correctly
  • Process launch failures: Properly tracked as errors so the generic fallback doesn't override the error message

Code Quality

  • Fixed all 428 flake8 issues across the codebase
  • Zero medium/high bandit security issues
  • Removed all debug print statements

Files

  • AgenticGIS-v0.2.6.zip (QGIS plugin)

AgenticGIS v0.2.5

Choose a tag to compare

@ultramenid ultramenid released this 10 Jun 23:03

Bug Fixes

  • Claude Code: No longer duplicates text messages when stream-json returns both assistant and result events
  • OpenCode: No longer shows "completed without returning a response" in multi-step conversations; multiple text events now stream correctly
  • Process launch failures: Properly tracked as errors so the generic fallback doesn't override the error message
  • Layer detection: Agent now correctly sees existing project layers on startup instead of reporting "no layers loaded"

Code Quality

  • Fixed all 428 flake8 issues across the codebase
  • Zero medium/high bandit security issues
  • Removed all debug print statements

New Tests

  • Added 4 tests for text deduplication and multi-step streaming

Files

  • AgenticGIS-v0.2.5.zip (QGIS plugin)

AgenticGIS v0.2.4

Choose a tag to compare

@ultramenid ultramenid released this 10 Jun 12:07

AgenticGIS v0.2.4

UX Improvements

'Connecting...' status during network handshake
When the HTTP transport needs to establish a fresh TCP+TLS connection (first message, connection dropped, settings changed), the status bar now briefly shows 'Connecting...' with a spinner instead of the generic 'Thinking...'. This tells the user the delay is network-level, not the model being slow.

Prewarm after settings save
When you change your API key, model, or base URL in Settings and save, the connection is now eagerly warmed in the background. The next message starts immediately without the handshake delay.

Auto-format for code blocks and tables during streaming
The streaming text renderer now detects when a complete fenced code block or markdown table has arrived and switches to full markdown rendering so syntax highlighting and table formatting appear live.

Bug Fix

  • Fixed typo in system prompt.

Code Quality

  • Fixed flake8 unused imports and overlong lines in backend/tool modules.
  • Restored DEFAULT_SYSTEM_PROMPT re-export in api_backend.py for backward compatibility with tests.
  • Bandit scan: no high or medium severity issues in production code.

Install

Download AgenticGIS-v0.2.4.zip below and install via Plugins → Manage and Install Plugins → Install from ZIP in QGIS.

AgenticGIS v0.2.3 — Context Compaction, Parallel Tools, Prompt Size Cuts

Choose a tag to compare

@ultramenid ultramenid released this 10 Jun 11:44

AgenticGIS v0.2.3

Performance Improvements

Fix A1 — Elide stale tool results
Old tool-result payloads older than the last 2 user turns are replaced with compact stub previews (tool name, payload length, first 200 characters). This significantly reduces per-turn token cost for long sessions. Works with both OpenAI and Anthropic message formats.

Fix A2 — Background pre-compaction
After every turn completes, compaction runs in a daemon thread while the UI is idle. The next send() starts with an already-compacted history, eliminating the inline compaction latency stall. A generation counter invalidates stale in-flight results. The existing inline compaction path is untouched and remains the fallback.

Fix A3 — Parallel background-safe tools
analyze_layer, create_chart, get_layer_statistics, and gee_* tools now dispatch concurrently via ThreadPoolExecutor. Canvas-side-effect tools (add_layer, zoom_to_layer, etc.) stay single-threaded with strict ordering.

Fix A4 — Trim tool descriptions & limit result size
Tool specs reduced by ~60% (shorter descriptions, leaner input schemas). MAX_TOOL_RESULT_CHARS=30_000 caps per-payload size. New _system_arg hook enables compaction for API backends.

Prompt Architecture: Conditional GEE

The system prompt is now split into _PROMPT_CORE + _PROMPT_GEE. The GEE section is dynamically omitted when the ee_plugin is not available, saving ~4,000 tokens per request for users without Google Earth Engine installed.

Other Improvements

  • Cached GEE availability check (toolkit.gee_available)
  • Config option compaction_model for using a cheaper/faster model for compaction summaries
  • Prewarm throttled to once per 120s (was once per dock lifetime)
  • Context-window heuristics expanded (Gemini 1M, o4, o3, o1, DeepSeek, Qwen, Llama)
  • Default context window bumped from 128K to 200K

Install

Download AgenticGIS-v0.2.3.zip below and install via Plugins → Manage and Install Plugins → Install from ZIP in QGIS.

AgenticGIS v0.2.2

Choose a tag to compare

@ultramenid ultramenid released this 08 Jun 13:53

Bug Fixes

  • Fix duplicate tool call count in UI: Added deduplication in AgentTurnBubble.add_tool() to prevent showing duplicate tool call bubbles when backend emits TOOL_USE twice (once during CLI stream parsing, once during actual tool dispatch).

  • Fix raw protocol JSON appearing in chat: Made parse_protocol_text() smarter with brace-matching to extract JSON object boundaries correctly when Claude CLI outputs text after the protocol JSON.

AgenticGIS v0.2.1

Choose a tag to compare

@ultramenid ultramenid released this 08 Jun 11:51

AgenticGIS v0.2.1

Fixed:

  • Prompt: mandatory GEE workflow to prevent AI stopping after gee_dataset_info
  • GIF labels: frame_labels now burned into downloaded GIF file
  • Release ZIP: fixed root folder structure (AgenticGIS/ folder at root)

Changes since v0.2.0:

  • GEE async refactor (background tools, no main thread blocking)
  • Cache ee.Initialize() per session
  • Reduce getInfo() calls
  • Transcript restore O(N²) → O(N)
  • Batch UI updates with setUpdatesEnabled
  • Defer session save
  • Session-level GEE approval
  • Auto-select map vs geotiff based on area size
  • GEE GIF timelapse with downloadable bubbles
  • Frame labels burned into GIF file (not just UI overlay)

AgenticGIS v0.2.0

Choose a tag to compare

@ultramenid ultramenid released this 08 Jun 02:30

Reducing Time-to-First-Token (TTFT) + chart fix

This release cuts perceived latency on the network/prefill side of the agent loop, and fixes numeric chart plotting.

Improvements

  • Connection prewarming — the HTTPS connection (TCP+TLS handshake) is now opened eagerly when the chat dock is shown, off the UI thread, so the first message of a session skips the cold-start handshake (~100–300 ms). Applies to both the Anthropic and OpenAI-compatible backends. Prewarming is idempotent, never clobbers an in-flight connection, and never blocks or raises.
  • Conversation-prefix caching (Anthropic) — a cache breakpoint is now placed on the conversation history so follow-up turns in long chats read the prefix from cache instead of re-prefilling it, reducing TTFT as conversations grow.
  • Cleanup — removed a no-op top-level cache_control field from the Anthropic request body; caching is correctly expressed per content block.

Fixes

  • create_chart numeric measures — charts could only count feature occurrences per category, so charting an already-aggregated numeric field produced equal-height bars with unreadable numeric labels. create_chart now accepts value_field + aggregate (count/sum/mean/max/min): field_name is the category axis and the numeric value_field is reduced per category (sum by default). Default behavior (count) is unchanged.

Install

Download AgenticGIS-v0.2.0.zip below and install via QGIS → Plugins → Manage and Install Plugins → Install from ZIP.

Notes

  • No new dependencies — the plugin remains stdlib-only.

Full changelog: v0.1.10...v0.2.0