Repository navigation
Version 3.1.0 alpha 7
Pre-release
Pre-release
What's Changed
- Fix mypy errors in api.routes.index by @markparonyan in #2882
- fix(typing): resolve mypy errors in utils.asyncio.embed_shell by @markparonyan in #2883
- fix(typing): resolve mypy errors in config by @markparonyan in #2884
- fix(typing): resolve mypy errors in compute.project by @markparonyan in #2885
- fix(typing): resolve mypy errors in controller.compute by @markparonyan in #2891
- fix(typing): resolve mypy errors in compute.docker vm modules by @markparonyan in #2887
- fix(typing): resolve mypy errors in compute.vmware.vmware_vm by @markparonyan in #2888
- fix(typing): resolve mypy errors in compute.qemu.qemu_vm by @markparonyan in #2892
- fix(typing): resolve mypy errors in agent.mcp by @markparonyan in #2893
- fix(typing): resolve mypy errors in utils.zipfile_zstd by @markparonyan in #2894
- fix(typing): resolve mypy errors in db models by @markparonyan in #2899
- fix(typing): resolve mypy errors in agent.gns3_copilot.agent_service by @markparonyan in #2895
- fix(typing): resolve mypy errors in api.routes.compute.qemu_nodes by @markparonyan in #2896
- fix(typing): resolve mypy errors in api.routes.controller.links by @markparonyan in #2897
- fix(typing): resolve mypy errors in schemas.controller.templates.dynamips_templates by @markparonyan in #2898
- fix(typing): resolve mypy errors in compute.iou.iou_vm by @markparonyan in #2900
- fix(typing): resolve mypy errors in services.authentication by @markparonyan in #2902
- fix(typing): resolve mypy errors in agent.gns3_copilot.agent by @markparonyan in #2905
- fix(typing): resolve mypy errors in agent.gns3_copilot.gns3_client by @markparonyan in #2906
- fix(typing): resolve mypy errors in agent.web_wireshark by @markparonyan in #2904
- fix(typing): resolve mypy errors in controller.topology by @markparonyan in #2901
- fix(typing): resolve mypy errors in agent.gns3_copilot.skills by @markparonyan in #2907
- fix(typing): resolve mypy errors in agent.gns3_copilot.tools_v2 (nornir + packet filter) by @markparonyan in #2908
- fix(typing): resolve mypy errors in agent.gns3_copilot.tools_v2 (packet analysis) by @markparonyan in #2909
- fix(typing): resolve mypy errors in agent.gns3_copilot.utils by @markparonyan in #2910
- fix(typing): resolve mypy errors in api.routes.compute by @markparonyan in #2911
- fix(typing): resolve mypy errors in api.routes.controller by @markparonyan in #2912
- fix(typing): resolve mypy errors in schemas.compute node schemas by @markparonyan in #2913
- fix(typing): resolve mypy errors in utils by @markparonyan in #2914
- fix(typing): resolve mypy errors in gns3server.api.routes.controller by @markparonyan in #2923
- fix(typing): resolve mypy errors in gns3server.api.routes.compute by @markparonyan in #2917
- fix(typing): resolve mypy errors in gns3server.agent by @markparonyan in #2915
- fix(typing): resolve mypy errors in agent.gns3_copilot + agent.mcp + agent.web_wireshark + api.routes by @markparonyan in #2916
- fix(typing): resolve mypy errors in gns3server.api.routes.compute by @markparonyan in #2918
- fix(typing): resolve mypy errors in gns3server.api.routes.compute by @markparonyan in #2919
- fix(typing): resolve mypy errors in gns3server.api.routes.compute by @markparonyan in #2920
- fix(typing): resolve mypy errors in gns3server.api.routes by @markparonyan in #2921
- fix(typing): resolve mypy errors in gns3server.api.routes.controller by @markparonyan in #2922
- fix(typing): resolve mypy errors in api + compute.dynamips + compute.iou + compute.vpcs + controller by @markparonyan in #2924
- fix(typing): resolve mypy errors in gns3server.schemas.compute by @markparonyan in #2925
- fix(typing): resolve mypy errors in gns3server.schemas by @markparonyan in #2926
- fix(typing): resolve mypy errors in schemas + schemas.controller + services + utils.asyncio by @markparonyan in #2927
- fix(typing): resolve mypy errors in gns3server.utils by @markparonyan in #2928
- fix(typing): resolve mypy errors in templates and authentication dependencies by @markparonyan in #2929
- fix(typing): resolve the remaining mypy errors (18 modules) by @markparonyan in #2930
- chore: drop the mypy baseline ignore list by @markparonyan in #2931
- fix(image-manager): Reconcile the image inventory with filesystem changes by @cristian-ciobanu in #2903
- refactor: ruff fixes by @markparonyan in #2933
- refactor: ruff fixes by @markparonyan in #2934
- Ruff/pr02 unused imports by @markparonyan in #2938
- fix: bump asyncssh - at least 2.24.1 for CVE-2026-62949 fixes by @markparonyan in #2939
- refactor: use f-strings by @markparonyan in #2942
- refactor: derive update schemas with PartialUpdateModel by @markparonyan in #2947
- refactor: discriminate appliance settings by template_type by @markparonyan in #2943
- Support uploading images into nested subfolders inside predefined image directories, and check whether templates can be created for uploaded images based on existing appliance definitions. by @cristian-ciobanu in #2945
- fix(console): keep SSH web console open after terminal resize by @cristian-ciobanu in #2948
- feat(api): add exact-match name filter to list endpoints by @markparonyan in #2949
- fix(api): return 200 instead of 201 for ACL endpoints, IOU license up⦠by @markparonyan in #2950
- feat(api): type link filters and available_filters response by @markparonyan in #2951
- feat(api): add Notification schema and document notification streams by @markparonyan in #2961
- feat: add optional ETag/If-Match concurrency for projects, nodes and links by @markparonyan in #2964
- feat(api): add Snapshot.created and type NodeFile timestamps as date-time by @markparonyan in #2963
- feat(api): return token lifetimes and document API keys as bearer tokens by @markparonyan in #2958
- feat(api): add machine-readable error codes and align OpenAPI error schemas by @markparonyan in #2957
- feat(api): return node and add wait option on node lifecycle calls by @markparonyan in #2952
- fix(links): reserve ports on add, accept port name and auto, add port_in_use code by @markparonyan in #2953
- fix(api): derive OpenAPI version from package, add servers, hide AI stub routes by @markparonyan in #2962
- feat(api): add discriminators to link iface, appliance version and template settings schemas by @markparonyan in #2960
- Drop Python 3.10 support by @grossmj in #2965
- fix(api): declare binary and streaming bodies in OpenAPI by @markparonyan in #2955
- feat(api): generate unique readable OpenAPI operationIds by @markparonyan in #2956
- feat(api): add strict_names and batch node and link creation by @markparonyan in #2954
- Kernel datapath: wire local Ethernet links through host kernel interfaces (veth/TAP + Linux bridges) by @yueguobin in #2944
- feat: add response models for endpoints returning untyped objects by @markparonyan in #2959
- fix(controller): stop flooding clients with transitional node statuses by @yueguobin in #2970
- Fix CVE-2026-44405 by @grossmj in #2973
- feat(mcp): Web UI compatible drawing creation (text tool + shared SVG builders) by @yueguobin in #2971
- fix: update error logging to handle exceptions in WebSockets by @grossmj in #2974
- fix: enable Layer 1 keepalives by default at the template level by @grossmj in #2976
- ci: add caching for APT packages by @grossmj in #2969
- feat: VPCS kernel datapath by @yueguobin in #2979
- docs: amend vpcs-kernel-datapath.md with the anchor startup sequence by @yueguobin in #2980
- Update setuptools requirement from >=61.0 to >=84.0.0 by @dependabot[bot] in #2985
- Update nornir-salt requirement from >=0.23.0 to >=0.23.4 by @dependabot[bot] in #2986
- Update langchain-aws requirement from >=1.3.1 to >=1.8.1 by @dependabot[bot] in #2988
- Update pyyaml requirement from >=6.0.0 to >=6.0.3 by @dependabot[bot] in #2989
- fix(docker): accept the pinned image id when the two daemons report different ids for the same content by @yueguobin in #2983
- Hide kernel-datapath interfaces from the cloud node by @yueguobin in #2990
- docs: packet filters β parameter reference, per-filter guide and REST examples by @yueguobin in #2994
- Concurrent kernel captures, one per interface by @yueguobin in #2993
- chore: add pre-commit hook running ruff and mypy checks on staged files by @yueguobin in #3001
- Auto-connect flag and disconnect endpoint for computes by @yueguobin in #3000
- Fix MCP device tools for nodes on remote computes by @yueguobin in #3003
- Python 3.15 support by @grossmj in #2977
- Update tiktoken requirement from >=0.8.0 to >=0.14.0 by @dependabot[bot] in #2995
- Update langsmith requirement from >=0.7.7 to >=0.14.7 by @dependabot[bot] in #2996
- Update pyjwt requirement from >=2.10.1 to >=2.15.1 by @dependabot[bot] in #2997
- Update nornir-utils requirement from >=0.2.0 to >=0.3.0 by @dependabot[bot] in #2999
- fix: refuse Docker node updates that would recreate a running container by @yueguobin in #3005
- fix(docker): give each VNC node its own X display by @Xeriioo in #3004
- Fix mypy 2.4 type error on User.username and bump mypy to 2.4.0 by @yueguobin in #3008
- feat: cross-compute VXLAN kernel datapath by @yueguobin in #3006
- fix: fetch remote-compute marker pcaps in tag replay by @yueguobin in #3012
- feat(qemu): support two CD/DVD images and consistent ISO handling by @cristian-ciobanu in #3011
- feat(cloud): attach TAP interfaces to existing Linux bridges by @cristian-ciobanu in #3013
- refactor(gns3server,tests): ruff fixes by @markparonyan in #3009
- Remove Windows code by @grossmj in #3014
- Fix SPICE socket binding failure by @grossmj in #3015
- Add QEMU support documentation and enforce minimum version requirement by @grossmj in #3016
- Change project creator on import by @aastefanov in #3018
New Contributors
- @Xeriioo made their first contribution in #3004
- @aastefanov made their first contribution in #3018
Full Changelog: v3.1.0a6...v3.1.0a7