Releases: GNS3/gns3-gui
Releases · GNS3/gns3-gui
Version 3.1.0 alpha 3
GUI
- No changes (the web-ui is the most advanced interface)
Server
- Bundle web-ui v3.1.0a3
- fix: update MCP link tools descriptions with detailed filter info
- fix: correct MCP nodes and links tool parameter handling for nested kwargs
- fix: correct MCP template tool parameter handling for nested kwargs
- feat: add client information logging to MCP connection rejection
- refactor: replace MCP ready state polling with asyncio.Event
- fix: revert duplicate image check to fix failing tests
- fix (templates): Add ordering to handle the duplicate cases gracefully
- fix(templates): Database error detected when saving a template with a disk image change
- fix: return 503 error on MCP server ready timeout
- fix: add MCP server ready check to prevent initialization errors
- fix: resolve MCP server URL host via default route IP when bound to 0.0.0.0
- fix: correct MCP transport security config to actually allow all hosts by default
- feat: add configurable MCP transport security settings via gns3_server.conf
- fix: add load_feature_skills() to properly load network planning features
- refactor: convert all MCP tool parameter descriptions to Annotated+Field
- fix: remove platformdirs upper bound to resolve fastmcp-slim dependency conflict
- fix: add missing fastmcp dependency to resolve CI test failures
- refactor: move all imports to top of init.py
- test: add /v3/mcp/ to allowed public endpoints
- fix: remove console_host/port from get_node_console_info
- feat: add get_node_console_info tool
- feat: add 3 Compute MCP tools - Add list_computes, get_compute, get_compute_images - Total MCP tools: 29
- feat: add 5 Template MCP tools
- feat: add Node and Link MCP tools, update copyright - Add 9 node tools and 5 link tools - Update copyright year to 2026, add author
- feat: complete MCP SSE transport with JWT auth
- feat: support Authorization header and query param for MCP token
- feat: implement standard MCP protocol with SSE transport
- feat: add MCP (Model Context Protocol) service with project tools
- Add project memory: Docker container stop delay analysis
- Fix Docker VM tests for container status detection on node creation
- Add running project check for fast duplication
- Move running project check before fast duplication
- Add running project check for fast duplication
- Fix Docker container status detection on node creation
- Fix web-ui update script to handle custom GitHub URL changes
- Fix unnecessary Docker container recreation when renaming a project
- Fix project rename and duplicate issues
- Fix double deletion issue in remove_resource_from_pool
- Complete fix: delete resource records when deleting resource pool
- Apply fix from PR #2315: delete resource from resource table when removing from pool
- Remove deprecated 'PermissionsStartOnly' setting for Systemd service. Ref #1830
- Optimize project loading by implementing parallel node creation
- Fix delay filter validation: ensure delay: [0, X] returns proper error message
- Fix packet filter validation tests: use correct ubridge filter type names
- Update tests to match show_interface_labels default change
- Set default value of show_interface_labels to True
- Optimize project variable updates to use parallel node processing
- Fix ghost Docker nodes causing 60-second VNC timeout on variable updates
- Fix Docker container variable compatibility with Pydantic models
- Fix delay latency minimum: ubridge rejects latency <= 0
- Improve packet filter validation: use tcpdump, handle multi-line BPF, safe project load
- Add packet filter parameter validation to prevent ubridge errors
- feat: add mermaid-to-SVG conversion script with environment setup
- perf: batch RBAC permission checking for GET /projects
- test: add benchmark script for GET /projects performance testing
- fix: prevent duplicate projects when user projects are in resource pools
- fix: check both regular ACEs and resource pool ACEs for proper access control
- test: update RBAC test to use test_user.username for user isolation
- feat: add alembic migration for LLMConfig privileges
- feat: add independent LLMConfig permissions for AI profile management
- feat: remove resource pools from 'all endpoints' list
- refactor: add efficient get_aces_for_path method for resource pool checks
- feat: prevent deletion of resource pools used by ACE configurations
- feat: fix permission check logic to properly handle ACE and user isolation
- feat: implement layered permission checks for proper user isolation and sharing
- feat: implement simple user isolation based on project ownership
- fix: clean BPF syntax error message and specify loopback interface
- feat: add BPF syntax validation using tshark
- feat: add show_filters_icon parameter to packet filter tool
- feat: add packet filter management tool for GNS3-Copilot fault injection
- fix: update test_json expected output to include show_filters_icon field
- fix: add getattr fallback to show_filters_icon property for backward compatibility
- feat: add show_filters_icon property to Link for controlling Web UI filter icon display
- fix: ensure show_filters_icon is always returned in API responses
- feat: add show_filters_icon property to Link for controlling Web UI filter icon display
- fix: remove explicit paramiko pin to resolve dependency conflict with netmiko
- fix: update netmiko to 4.7.0 and pin paramiko>=5.0.0 to fix CVE-2026-44405
- fix: close DockerHTTPClient session to prevent UnixConnector leak in Web Wireshark
Version 3.1.0 alpha 2
GUI
- Remove psutil version check
- Fix remaining PyQt6 compatibility issues. Fixes #3822
- Add --title to remote-viewer console commands. Fixes #3783
- Fix deleting drawings. Ref #3810
Server
- Bundle web-ui v3.1.0a2
- fix: surface tshark stderr errors to LLM, not just log them
- fix: hint LLM about -c behavior when tshark returns empty with -c
- fix: update search_fields examples to use existing field names
- fix: reject multi-keyword search_fields, single keyword only
- fix: document action/query params in PacketAnalysisTool description
- feat: add search_fields action to PacketAnalysisTool for real-time field lookup
- feat: validate tshark -e field names before running analysis
- fix: document -c behavior caveat in PacketAnalysisTool description
- fix: demote loader-level load logs to DEBUG, info already reported by manager
- fix: promote skills/prompts load logs to INFO level
- fix: load packet analysis protocols during skills initialization
- feat: add PacketAnalysisSkillsTool
- fix: remove remaining quoted example from tool input docstring
- fix: use shlex.split for tshark_args parsing
- feat: add packet analysis workflow to tool description
- refactor: remove old PacketCaptureTool, replaced by PacketAnalysisTool
- feat: add protocol-oriented packet analysis tool
- docs: add roadmap docs for planned features
- feat: require superadmin for /reload/skills endpoint
- fix: remove background init timeout and allow skills reload retry
- deps: add PyYAML and GitPython to ai-requirements.txt
- feat: add fault injection system and external skills repository
- fix: Disable DeepSeek thinking mode to avoid reasoning_content errors
- fix: Skip offline compute nodes during project import
- fix: Import status module in project.py
- fix: Handle connection errors when stopping node console
- refactor: Remove MD5 calculation from node files listing
- fix: Export NodeFile schema to schemas module
- feat: Add detailed metadata to node files listing
- feat: Add API endpoint to list node files
- Fix snapshot restore does not work after export/import of project
- Warn to use 64-bit IOU images. Fixes #2716 32-bit IOU image support has been removed from the GNS3 VM.
- Fix: Improve Docker container deletion error logging
- Fix: Add exponential backoff to compute reconnection attempts
- Fix: Check compute connectivity before node creation in open()
- Fix: Check compute connectivity before open() during project deletion
- Fix: Add error logging when closing/deleting projects on computes
- Fix: Skip add_compute for existing computes when opening projects
- feat: add AI provider config files to .gitignore
- Fix: Use _computes instead of _project_created_on_compute for deletion check
- Fix: Check compute connection status before project deletion
- fix: extend remote compute image path conversion to all node types
- fix: send relative image path to remote compute nodes
- fix: handle directory access for static web-ui routes
- fix: add duplicate name validation when updating templates
- fix: avoid AttributeError when password is not provided in compute update
- fix: improve hostname validation error messages with allowed characters
- feat(compute): Fix Dynamips to listen on the internal port when ssh is used for auxiliary console
- feat(compute): Fix ambiguous log message related to the active console transport.
- feat(compute): Updated server host key to use the secure ssh-ed25519 instead of old ssh-rsa algorithm
- feat(compute): Fix missing SSH wrapping for auxiliary console
- feat(compute): Added AsyncioSSHServer dedicated tests
- feat(compute): add SSH console type support
- fix: include error details in LLM model config failure response
- Fix telnet console silent-proxy hang on non-ConnectionError exit (#2344)
Version 2.2.59
Version 3.1.0 alpha 1
GUI
- Fix bug when an image checksum matches with another image filename
- Refresh Ui & resources files
- Copy GUI configuration from previous minor version
- Change default disk names when creating Qemu disks
- Fix QMenu parents
- Fix UltraVNC preconfigured command
- Fix bug when dragging scene
- Implement Dark Style
- Properly close image after uploading. Fixes #3736
Server
- New completely revamped Web interface.
- Add GNS3 Copilot AI agent back-end
- Web-wireshark: packet capture and live traffic analysis in the browser
- Fix using SSL with remote computes. Fixes #3733
- Add --url and --branch parameters to update-bundled-web-ui.sh
- Fix bug when custom_adapters is None in port_factory.py
- Have optional body in start node API endpoint
- Fix snapshots after merging
- Potential fix for pull request finding 'CodeQL / Information exposure through an exception'
- Refactored the way snapshots are handled in the server
- fix(symbols): add authentication to symbol raw endpoint
- fix(symbols): add CORS headers to symbol file responses
- Allow to find new project in sub dirs
- Enhancement: Refresh projects list without restarting the GNS3 server
- Fix accessing username in authentication.py
- Improved exception handling and telnet client disconnect
- Use get method for registry_version to avoid KeyError
- Add support for appliance format version 8
- Convert database template fields from PickleType to JSON
- feat(statistics): distinguish open vs closed project nodes
- fix(statistics): handle closed projects where nodes/links are dicts
- feat(controller): extend /statistics API with project, node and link stats
- Use FastAPI Lifespan Events
- feat(link): add control_offset field to LinkStyle
- feat(symbols): add DELETE API for removing custom symbol files
- Enhancement: Re-write current Telnet server implementation using telnetlib3 library
- feat: improve error handling for API configuration errors
- Enhancement Added link type support on the server side
- Ignore HTTPException received when closing a project
- Prevent router to be duplicated when running and add tests
- Fixed issue #1605 regarding Cisco slots causing configs to break
- feat: add VNC WebSocket console support for Docker and QEMU nodes
- Return 405 error for unsupported actions for other node types
- feat(telnet_server): improve error handling and connection management
- fix(telnet): handle connection race condition during broadcast
- Change first() to one_or_none() for image query
- Fix for duplicating Qemu nodes
- Minor optimizations to logic
- Fixed an issue with the server causing errors when uploading large images + Preparation for a smarter check when uploading images
- Implemented a smarter node_type system
- docs: restructure copilot docs and update node tools
- fix(acl): correct endpoint paths for users, groups, and roles
- fix(iou): return 405 error for unsupported suspend operation
- feat(api): enhance max_tokens field with robust null handling
- feat(docs): add AI prompting guide for configuration templates
- Deactivate 'use default IOU values' by default and update RAM/NVRAM values
- Make sure the node shows as stopped when the wrap console cannot be stopped. Ref GNS3/gns3-registry#1010
- chore: update author name and copyright headers
- feat(docs): enhance AI chat API documentation with examples and details
- feat: add .claude directory to gitignore for API key security
- Revert "Fix QEMU serial console artifacts by filtering ANSI CPR responses in …"
- docs: add troubleshooting guide for datetime timezone issue
- Drop support for Python 3.9
- feat: add multi-user concurrency control design document
- docs: add troubleshooting guide for force kill residual processes
- Fixed the path traversal check
- Fix image handling
- Qemu VMs: only compute MD5 checksums for existing disks
- Copy config files and database from a previous version if it exists
- Add enable_http_auth in gns3_server.conf sample
- feat(compute): option to disable compute authentication
- tests(controller,port): short_name finishes successfully when port name is None
- fix(controller,port): handle None port name to prevent TypeError in short_name method
- fix(docker): handle container name conflict automatically
- feat(virtualbox): add fallback for VBoxManage executable detection
- feat: simplify port name assignment logic
- feat(ports): add null checks for port name in short name generation
- Remove unneeded rbac_repo in get_templates
- Use lists for tags instead of dicts
- Fix for resizing Qemu VM disks
- feat(templates): safely access settings dict keys
- feat(api): fix ETag handling and JSON serialization in template endpoint
- feat(api): add tag filtering to nodes and templates endpoints
- Update project schema and fix tests
- Add 'created_by' field to track project creator
- Fix updating packet filters
- Add vendor, model and netmiko_device_type fields to templates
- fix: handle RuntimeError in notification_manager emit()
- fix: busybox static link detection on Alpine/musl
- Fix bug when updating compute password to be empty
- Cancel tasks if controller cannot be started
- Enable parallel compression with zstandard. Fixes #2324
- Add Dynamips to Dockerfile dependencies
- Take populated disks into consideration when calculating PCI device ID
- Fix telnet keepalive options on macOS
Version 2.2.58.1
GUI
- Fix callback issues in found in v2.2.58
Server
- Sync appliances
Version 2.2.58
GUI
- Update snapshot date & time format
- Fix bug when HTTP DELETE requests are silently dropped. Fixes #3810
- Show if a linked base VM or not in device's properties
- Add HTTP method to response timeout slot. Ref #3810
- Add default link style section in preferences
- Update the default style colors based on the interface style
- Support bring to front for vnc and spice consoles on Linux. Fixes #3783
- Update appliance schemas
- Fix bug when adding multiple nodes at the same time. Fixes #3807
- Fix QWebSocket error signal. Fixes #3804
Server
- Bundle web-ui v2.2.58
- Sync appliances
- Snapshot refactoring
Version 2.2.57
GUI
- Fix errors from controller are not reported
- Deactivate 'use default IOU values' by default and update RAM/NVRAM values
- Fix QMenu parents
- Fix UltraVNC preconfigured command
- Dark style
- Fix bug when dragging scene
- Upgrade pytest and jsonschema dependencies
- Upgrade sentry-sdk and psutil dependencies
- Fix mouse manipulation bug
- Add Multi VNC tab handling in Superputty
- Fixing tab name in Superputty + Adding Superputty VNC support
- settings.py: add OpenBSD packet capture command
Server
- feat(telnet_server): improve error handling and connection management
- Deactivate 'use default IOU values' by default and update RAM/NVRAM values
- Make sure the node shows as stopped when the wrap console cannot be stopped
- tests(controller,port): short_name finishes successfully when port name is None
- fix(controller,port): handle None port name to prevent TypeError in short_name method
- fix: busybox static link detection on Alpine/musl
- Take populated disks into consideration when calculating PCI device ID
Version 3.0.6
GUI
- Fixing tab name in MobaXterm
- PyQt6 migration
- Add XDG Config Home support
- Support for Python 3.14
- Clicking the "console connect to all nodes" opens all consoles in name order with case-insensitively
Server
- Sync appliances
- Fix creating Qemu disk image. Fixes #2542
- Disable checking for available disk space. Ref #2548
- Set default location of udhcpc in "/etc/network/udhcpc". Fixes #2582
- Support for Python 3.14
- Fix non-ASCII characters in project names
- Increase DB engine pool size and max overflow
- Enable ip cef in IOU L2 and IOU L3 base configs
Version 2.2.56.1
GUI
- Fix line style support for links
- Fix cannot add IOS in preferences
- Fix cannot add IOU in preferences
- Upgrade dependencies
- Drop Python 3.8 support
- Display a warning if a SVG image format isn't supported
- Fix error in profile selection window after PyQt6 migration
Server
- Fix telnet keepalive options on macOS
- Upgrade dependencies
- Drop Python 3.8 support
Version 2.2.56
GUI
- Fixing tab name in MobaXterm
- PyQt6 migration
- Add XDG Config Home support
Server
- Set default location of udhcpc in "/etc/network/udhcpc". Fixes #2582
- Upgrade pywin32 to v311