Repository navigation
The dock and dialogs
This page comes from
site/content/architecture/ui.mdin the repository and is regenerated on every merge tomain. To correct it, edit that file; changes made here are overwritten.
All UI code lives in core/ui/ and runs on the GUI thread. The dock is one continuous scroll, not tabs: a sticky plan strip for the active multi-step task sits above the chat thread, so you never switch views mid-conversation.
| Module | Role |
|---|---|
dock_widget.py (CartogenAiDockWidget) |
The dock: provider dropdown, Memory and Settings buttons, chat, plan strip, input row. Starts agent turns through task_runner. |
chat_tab_widget.py, chat_view_presenter.py, chat_input_controller.py
|
The chat view, scroll-back trimming, input handling and the confirmation cards. |
settings_dialog.py |
Provider, keys, model, privacy toggles, limits, evidence and trace switches, gate modes. |
memory_dialog.py |
Stored memory: notes, learned preferences, export, clear. Also deletes the saved chat. |
layer_sensitivity_dialog.py, layer_context_picker_dialog.py
|
Tag layers with a sensitivity level; pick which layers form the context for a question. |
account_dialog.py |
The hosted-account client (create account, sign in); needs a deployed service, which does not exist yet. |
onboarding_dialog.py, help_tab_widget.py, help_content.py
|
First-run welcome and the Help window (provider list, tips, examples, version, "What's new"). Help text comes from the same data as the user guide and from core/release_notes.py. |
task_inspector_dialog.py |
Inspect a task's contract and plan. |
canvas_highlight.py |
Highlight features on the canvas (and remove the overlays). |
attachments.py |
Classify attached files and route them to the right tool. |
local_answers.py |
Requests answered from the open project with no model call (for example a bare "list the layers"). |
dialog_messages.py |
A QgsMessageBar inside dialogs for notices; questions that need an answer still use a pop-up. |
theme.py, icons.py, dock_constants.py, reply_vocab.py
|
Theme integration with QGIS's palette, SVG icons, constants and the vocabulary for recognising "yes / cancel / proceed". |
chat_formatting.py (Markdown to the chat's HTML, tool-step cards, safety-gate card, welcome page) and the string-generating half of icons.py import neither Qt nor QGIS. That makes them unit-testable in the plain test job. New pure logic should follow that pattern.
Replies are rendered by the plugin, and a reply (or a layer attribute it quoted) could try to forge an internal link such as an Apply-edit link. Since rc29 only four chip links can be created (action, export, prompt, zoom), a quote, angle bracket or space in a link address is encoded, and a file link opens only an existing file of a type the tools write.
Anything with Qt widget wiring, layout or paint behaviour needs a real QGIS session. CI runs live tests inside QGIS 4.2.2 for widget construction and behaviour, and the project's practice is to build the real widget headless and look at a rendered screenshot, but the on-screen look in a user's desktop is covered only by the manual live tests.
Cartogen AI 1.18.5 · generated from the repository at commit 0a7a7f8071 on 2026-11-15 · this wiki is rebuilt on every merge to main; edits made in the browser are overwritten, so correct the source files instead.
Get started
How it works
- Architecture overview
- The agent loop
- Threads, tasks and Stop
- Tools and routing
- Providers and networking
- Memory, state and results
- Guards and honesty checks
- The dock and dialogs
- Processing provider
Tools and data
- Tool reference
- AI Imagery Feature Extraction
- Data Analysis & Prediction
- Database & Workflows
- Export & Reporting
- Humanitarian Data (HDX / OSM / geoBoundaries)
- Humanitarian Logistics
- Monitoring & Scheduling
- Print Layouts
- Project Management
- Raster
- Reporting & Document Analysis
- Satellite Imagery & Vision
- Styling & Labeling
- System, Search & Scripting
- Task & Memory Management
- Vector & Geoprocessing
- More tools, by module
- Task register
- External data sources
Humanitarian GIS
Security and privacy
Develop
Project