Compare commits

...

11 Commits

Author SHA1 Message Date
Jeremy Grossmann
c776d4ef37 Merge pull request #3838 from GNS3/dependabot/pip/pytest-9.0.3
Bump pytest from 9.0.2 to 9.0.3
2026-08-16 15:16:41 +02:00
Jeremy Grossmann
38ecc9c4ed Merge pull request #3847 from prajwal-raj/patch-2
Remove deleted project from recent projects immediately
2026-08-09 22:06:42 +02:00
Jeremy Grossmann
30e34073c8 Merge pull request #3846 from prajwal-raj/patch-1
Fix vmrun detection for native 64-bit VMware Workstation (26H1+)
2026-08-09 19:21:31 +02:00
Prajwal Raj
a403512fa7 Remove deleted project from recent projects immediately
Project.destroy() (used only when a project is actually deleted, not
when it's simply closed) issued a raw DELETE request and never
refreshed the controller's cached project list. Since "recent
projects" filtering in the GUI checks each entry against that cached
list, a deleted project stayed visible under Recent Projects - and
could still be clicked, which threw a GUI freeze - until the app was
restarted and the list was freshly refetched.

destroy() now uses its own callback, _projectDestroyedCallback, which
does everything the previous callback did and additionally calls
Controller.refreshProjectList() on success. This matches the same
pattern already used by Controller.deleteProject() elsewhere in the
codebase. The ordinary project-close path (close()) is untouched.

Fixes #3815
2026-08-09 22:26:42 +05:30
Prajwal Raj
8a97b300ca Fix vmrun detection for native 64-bit VMware Workstation (26H1+)
VMware Workstation 26H1 dropped the 32-bit build and is now
native 64-bit only. Its install path is written to the native
64-bit registry view (SOFTWARE\VMware, Inc.\VMware Workstation)
instead of the WOW64 view (SOFTWARE\Wow6432Node\VMware, Inc.\...)
that findVmrun() previously checked exclusively.

This meant GNS3 could no longer auto-detect vmrun.exe on hosts
running VMware Workstation 26H1+, throwing "VMware vmrun tool
could not be found" even though it was installed, requiring
users to manually set the path in Preferences.

This adds a check of the native 64-bit registry key before
falling back to the Wow6432Node key, for both the Workstation
and VIX lookups. No other behavior changes.

Fixes #3845
2026-08-09 22:04:38 +05:30
Jeremy Grossmann
957c4f5de0 Merge pull request #3842 from GNS3/release/v2.2.61
Release v2.2.61
2026-07-30 19:15:45 +02:00
grossmj
5182bc3841 Release v2.2.61 2026-07-30 12:52:29 +02:00
grossmj
04b90c6aab Merge branch 'master' into 2.2 2026-07-29 17:53:21 +02:00
grossmj
424ef9d60e Development on 2.2.61.dev1 2026-07-15 20:45:39 +02:00
dependabot[bot]
a4984a396a Bump pytest from 9.0.2 to 9.0.3
Bumps [pytest](https://github.com/pytest-dev/pytest) from 9.0.2 to 9.0.3.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/9.0.2...9.0.3)

---
updated-dependencies:
- dependency-name: pytest
  dependency-version: 9.0.3
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-15 18:44:43 +00:00
Jeremy Grossmann
bfc1ed525c Merge pull request #3837 from GNS3/release/v2.2.60
Release v2.2.60
2026-07-15 20:43:39 +02:00
6 changed files with 23 additions and 6 deletions

View File

@@ -1,5 +1,9 @@
# Change Log
## 2.2.61 30/07/2026
* No changes
## 2.2.60 15/07/2026
* feat(capture): implement live packet capture with internal tail

View File

@@ -1,5 +1,5 @@
-rrequirements.txt
pytest==8.4.2; python_version == '3.9' # version 8.4.2 is the last one supporting Python 3.9
pytest==9.0.2; python_version >= '3.10'
pytest==9.0.3; python_version >= '3.10'
pytest-timeout==2.4.0

View File

@@ -50,7 +50,7 @@ class CrashReport:
Report crash to a third party service
"""
DSN = "https://aef091f468a2bd2eb55d1e9c1513e54b@o19455.ingest.us.sentry.io/38506"
DSN = "https://52512702e506197edfb413c1d7e13397@o19455.ingest.us.sentry.io/38506"
_instance = None
def __init__(self):

View File

@@ -78,9 +78,14 @@ class VMware(Module):
vmrun_path = shutil.which("vmrun")
if vmrun_path is None:
# look for vmrun.exe using the VMware Workstation directory listed in the registry
vmrun_path = VMware._findVmrunRegistry(r"SOFTWARE\Wow6432Node\VMware, Inc.\VMware Workstation")
# (native 64-bit key first; VMware Workstation 26H1+ dropped the 32-bit build)
vmrun_path = VMware._findVmrunRegistry(r"SOFTWARE\VMware, Inc.\VMware Workstation")
if vmrun_path is None:
vmrun_path = VMware._findVmrunRegistry(r"SOFTWARE\Wow6432Node\VMware, Inc.\VMware Workstation")
if vmrun_path is None:
# look for vmrun.exe using the VIX directory listed in the registry
vmrun_path = VMware._findVmrunRegistry(r"SOFTWARE\VMware, Inc.\VMware VIX")
if vmrun_path is None:
vmrun_path = VMware._findVmrunRegistry(r"SOFTWARE\Wow6432Node\VMware, Inc.\VMware VIX")
elif sys.platform.startswith("darwin"):
vmware_fusion_vmrun_path = None

View File

@@ -600,7 +600,15 @@ class Project(QtCore.QObject):
Delete the project from all servers
"""
self.project_about_to_close_signal.emit()
Controller.instance().delete("/projects/{project_id}".format(project_id=self._id), self._projectClosedCallback, progressText="Delete the project")
Controller.instance().delete("/projects/{project_id}".format(project_id=self._id), self._projectDestroyedCallback, progressText="Delete the project")
def _projectDestroyedCallback(self, result, error=False, server=None, **kwargs):
self._projectClosedCallback(result, error=error, server=server, **kwargs)
if not error or ("status" in result and result["status"] == 404):
# Refresh the controller's project list so a deleted project disappears
# immediately from menus such as "recent projects" instead of only
# after restarting the GUI.
Controller.instance().refreshProjectList()
def _projectClosedCallback(self, result, error=False, server=None, **kwargs):

View File

@@ -23,8 +23,8 @@
# or negative for a release candidate or beta (after the base version
# number has been incremented)
__version__ = "2.2.60"
__version_info__ = (2, 2, 60, 0)
__version__ = "2.2.61"
__version_info__ = (2, 2, 61, 0)
if "dev" in __version__:
try: