github GNS3/gns3-gui v3.1.0a4
Version 3.1.0 alpha 4

pre-release3 hours ago

GUI

  • No changes

Server

  • Bundle web-ui v3.1.0a4
  • Add jwt_refresh_token_expire_minutes to sample configuration
  • Remove deleted web-ui files from git
  • .dockerignore ignore .dockerignore
  • typo made me reconsider and move out to env
  • defaulted DOCKERHUB_ORG repository variable
  • Remove API docs from 2.2 after merging
  • Update GitHub Actions workflows
  • Fix web-wireshark docker build broken by xpra 6.5 release
  • Update CI to install [ai-features,dev] instead of [ai-copilot,dev]
  • Make AI features (AI Copilot + MCP) optional via [ai-features] extra
  • Add refresh token mechanism documentation under docs/features/
  • Add /refresh to allowed public endpoints list in route auth test
  • Add stateless JWT refresh token mechanism
  • Add project/node/link handler tests: 39 total, covering list/get/create/delete/start/stop/suspend/reload/console/update/fields
  • Add MCP tool parameter consistency tests
  • Fix appliance_install: add version parameter
  • Add coordinate system note to docs
  • Document canvas coordinate system in node_create x/y params
  • Update docstring: batch concurrency from 10 to 100
  • Remove unused import time
  • Add list type check before nodes[0] access in _normalize_link_nodes
  • Add fields type validation in create handlers
  • Use pop() instead of pop(0) for O(1) port removal
  • Fix review issues: key_prefix length, count validation, WAL log, timeout comment, pointless temp var
  • Fix: pass name from TemplateUsage to add_node_from_template
  • Remove unused imports (logging, log, select)
  • Add warning for unconsumed pre-allocated UDP ports after link creation
  • Remove FIXME comment about middleware in server.py
  • Rename device_command_run_handler → device_show_run_handler to match tool name
  • Rename device_command_run → device_show_run for clarity
  • Fix device_command_run KeyError('commands'): tool desc said show_commands but backend expects commands
  • Fix template_list return type annotation to match _run_handler_sync envelope
  • Add performance optimization documentation
  • Update MCP service docs: API key format, auth flow, tool parameters, concurrency
  • Increase HTTP connection pool to 500/1000
  • Increase BATCH_MAX_WORKERS and Pool concurrency from 20 to 100
  • Remove final timing artifact in projects.py
  • Remove remaining dead timing variables and imports
  • Remove database warmup (proven ineffective - real bottleneck was bcrypt blocking event loop)
  • Clean up all timing/debug logs
  • Add memory: import validation best practice
  • Fix: add missing UUID imports
  • Generate fresh JWT on API key auth instead of returning raw key
  • Optimize API key auth: O(1) lookup via UUID-embedded key format
  • Fix: offload bcrypt.checkpw to thread pool to prevent blocking event loop
  • Add timing to API key auth path and log api_keys count
  • Replace SELECT 1 warmup with full database file read to warm OS page cache
  • Add timing logs to auth dependency chain to identify 6s pre-handler delay
  • Add granular timing to get_template: separate execute vs fetch time
  • Warm up database connection pool on startup to avoid 8s cold-start penalty on first API request
  • Fix: register WAL PRAGMA on sync_engine instead of Engine class for async compat
  • Add timing logs to get_template to identify DB query bottleneck
  • Add timing middleware to log slow requests (>1s) with [CTRL-TIMING] prefix
  • Fix: _time → time in compute.py timing log
  • Add [CTRL-TIMING] logs to controller create_node flow
  • Fix: pass template_id to batch mode handler so top-level template_id works as default
  • Add detailed timing logs to MCP node creation and HTTP client
  • Add fields filter to template_list tool with description for AI
  • Fix: add missing _filter_link_response function
  • Pass name parameter through to controller API when creating node from template
  • Add validation to compact link format with clear error messages
  • Add compact array format for link node entries to reduce token usage
  • Add fields filter to link_create tool
  • Reduce md5sum cache write failure log level from error to warning
  • Add fields filter to node_create tool description for AI
  • Optimize MCP create_node: support inherited template_id and default fields filter
  • Increase MCP HTTP client timeout from 10s to 30s
  • Enable SQLite WAL mode to fix 'database is locked' errors under concurrent API requests
  • Cache IOU image default values per image path to avoid redundant subprocess calls
  • Increase node and link creation concurrency from 5 to 20
  • Fix: revert IOU lock optimization, serialize IOU node creation for correct application_id assignment
  • Performance: accelerate project opening with parallel link creation and batch UDP port allocation
  • feat: Add batch link_ids to link_delete/link_reset, fields filter to link_list
  • feat: Add fields filter to link_list
  • feat: Add batch node_ids to node_delete
  • fix: Convert http to ws scheme in node_console WebSocket URL
  • feat: Add batch link_ids to link_capture_download
  • feat: Add batch link_ids to link_capture_start/stop
  • fix: Store username in gns3_ctx during auth, use for short-lived download JWTs
  • fix: Generate independent short-lived JWT for pcap download
  • revert: Remove _configs_map changes in tools_v2 (handled by template renderer now)
  • fix: Merge commands for duplicate device_names in _configs_map
  • fix: Actually pass template param to device_config/command handlers
  • fix: Correct Jinja2 template commands_field per tool type
  • feat: Jinja2 template support in device_command_run
  • feat: Jinja2 template support in device_config_send
  • feat: Add batch node_ids support to node_start/stop/reload/suspend
  • feat: Add fields filter to appliance_list
  • feat: Add fields filter to node_list
  • feat: node_get fields filter — match controller Node schema fields
  • fix: Set auto_close=False on project_create so projects stay open when clients disconnect
  • feat: Add batch mode to node_create and link_create (parallel, max 10 workers)
  • fix: Pass API key directly instead of generating short-lived JWT
  • feat: API key lifecycle — revoke/restore/delete
  • fix: Rename revoke_api_key → delete_api_key
  • fix: Hard-delete API keys instead of soft delete (revoked flag)
  • feat: Support API keys in REST API authentication (reuse gns3_ prefix keys)
  • fix: Lazily access db engine for API key validation
  • fix: Add missing updated_at column to api_keys table
  • fix: Export ApiKeyCreate from schemas package
  • feat: Add API Key support for MCP authentication
  • fix: Validate JWT token exp claim — was silently ignored after migration to joserfc
  • fix: Add image field to template_create, document type-specific params in description
  • fix: Remove .json() calls on 204 responses for prune/install images
  • fix: Skip always-running nodes in start_all/stop_all
  • fix: Add missing rotation parameter to drawing_update MCP tool
  • fix: Map MCP device_command_run parameter to tool's expected field name
  • fix: Update link_reset description to match actual behavior (delete + recreate)
  • fix: Remove unsupported description param from project_create
  • fix: Fix symbol_get/upload/delete handlers for correct API paths
  • feat: Log registered MCP tools at startup
  • fix: Type compute_id as uuid.UUID to reject non-UUID values at MCP input layer
  • fix: Require UUID for compute_get/images, remove 'local' string default
  • feat: Add device configuration MCP tools (config_send, command_run, vpcs_config_set)
  • refactor: unify MCP tool naming to _ convention
  • feat: Add symbol upload/delete, project load, and locked check MCP tools
  • feat: Add image management MCP tools
  • feat: Add symbol and appliance MCP tools
  • feat: Add node bulk ops, project lock, and server info MCP tools
  • feat: Add snapshot and drawing MCP tools
  • refactor: unify MCP handlers to use http_call directly, relocate node file ops to Node class
  • feat: Add node file operations as MCP tools (list, get, write, delete)
  • Add comment about rootful Docker permissions at container start
  • Fix _fix_permissions test: set process.returncode=0 and update assertion
  • Fix list_node_files PermissionError on os.scandir
  • Fix _fix_permissions error handling and list_node_files PermissionError
  • Add async_iterable_to_stream utility to avoid aiohttp compatibility issues
  • Add descriptive detail to 403 errors in compute file endpoints
  • Fix silent file write failure in write_compute_project_file
  • feat: Node file streaming, recursive listing, file type detection, and file delete
  • Update README tool descriptions: .txt → .md
  • Update README tool descriptions to mention Markdown format
  • Add MCP project tools: update, duplicate, and README operations

Don't miss a new gns3-gui release

NewReleases is sending notifications on new releases.