v3.2.3
π kport v3.2.3 β Release Notes
Release Date: June 14, 2026
Tag: v3.2.3
Previous Version: v3.2.2
Overview
kport 3.2.3 is a feature and infrastructure release. It ships the official VS Code extension, expands package manager support to Chocolatey and Snap, adds smarter CLI diagnostics for permission-restricted processes, and resolves two critical CI regressions that broke PyPI and Snap publishing in the previous release cycle.
π New Features
π₯οΈ Official VS Code Extension
The KPort VS Code extension brings port management directly into the editor:
| Command | Description |
|---|---|
KPort: Inspect Ports |
View all active ports and associated processes |
KPort: Free Port |
Kill a process using a specific port |
KPort: List Ports |
Show all listening ports with process details |
KPort: Configure MCP Server |
Set up MCP server for AI assistant integration |
MCP (Model Context Protocol) integration:
- On first activation, the extension prompts once to configure MCP for AI tools
- Automatically generates
.vscode/mcp.jsonwith correct stdio settings - Works with Claude, GitHub Copilot, and any MCP-compatible client
- MCP can be reconfigured at any time via the Command Palette
Install from VS Code Marketplace:
Extensions (Ctrl+Shift+X) β search "KPort" β Install
Or via CLI:
code --install-extension farmanali.kport-vscodeNew files: vscode-extension/ directory (TypeScript source, package.json, tsconfig.json, mcpConfig.ts, extension.ts)
π¦ Chocolatey Package Support (Windows)
kport is now available via Chocolatey for Windows users:
choco install kportNew files:
choco_build.pyβ builds.nupkgfrom a staged Windows.exeinstallerpackaging/chocolatey/kport.nuspec.templatepackaging/chocolatey/tools/chocolateyinstall.ps1.template
π¦ Snap Package Support (Linux)
kport is now available from the Snap Store:
snap install kportNew files:
snap_build.pyβ builds.snapfrom source using snapcraftsnap_publish.pyβ publishes to Snap Store with channel management (stable,candidate,edge)packaging/snap/snapcraft.yaml.templatepackaging/snap/launcher
π¨ Unified Build & Publish Tooling
New developer-facing scripts and documentation for streamlined release workflows:
-
kport_orchestrate.py(formerlybuild.pyβ see Bug Fixes below)
β Single interactive or CLI entry point for all build + publish operationspython kport_orchestrate.py # interactive menu python kport_orchestrate.py --build-all # CI: build everything python kport_orchestrate.py --publish-all # CI: publish everything python kport_orchestrate.py --build-snap --publish-snap --snap-channel edge
-
vscode_build.pyβ VS Code extension builder and publisherpython vscode_build.py --build # compile .vsix python vscode_build.py --install # install locally python vscode_build.py --publish # publish to VS Code Marketplace
-
snap_publish.pyβ Snap Store publisherpython snap_publish.py --publish --channel stable python snap_publish.py --publish --channel edge
-
BUILD_GUIDE.mdβ Comprehensive developer documentation covering all build scripts, prerequisites, credentials, and release workflows.
β οΈ Smarter CLI Diagnostics: Inaccessible Process Warnings
When a kport command targets a process by name and finds the process but cannot see its port bindings, it now diagnoses the most common cause and tells you clearly:
Warning: No port bindings found matching 'myapp', but matching processes exist
(PID(s): 12345). Try running with sudo/admin privileges.
What changed in src/kport/cli.py:
- When port inspection returns no bindings but matching PIDs are found, kport checks whether the current user is root/admin
- If not elevated, it prints an actionable
stderrwarning with the relevant PID(s) - Cross-platform: uses
os.geteuid()on Linux/macOS andctypes.windll.shell32.IsUserAnAdmin()on Windows - No warning is shown if the user is already elevated (no false noise)
π Bug Fixes
python -m build executed interactive menu instead of building wheels (PyPI CI failure)
Root cause: The repo contained a file named build.py. When the CI step ran python -m build, Python found the local build.py before the installed build pip package (because CWD is on sys.path). This launched the interactive orchestrator menu, which hit EOFError on input() in the non-TTY CI environment.
Fix:
- Renamed
build.pyβkport_orchestrate.pyto eliminate the name collision entirely python -m buildnow correctly invokes the PyPI build frontend- No workarounds needed in
build_packages.py
Error installing snap 'core22' (Snap CI failure)
Root cause: ubuntu-latest runners (Ubuntu 24.04) use a restricted snapd sandbox that cannot download and install core22 from the Snap Store. The previous workflow used sudo snap install snapcraft --classic, which itself requires core22 and therefore fails.
Fix:
- Replaced
sudo snap install snapcraft --classic+python snap_build.py --buildwithsnapcore/action-build@v1β the official GitHub Action that runs snapcraft inside an LXD container, bypassing the snapd restriction entirely - Added a "Prepare snap staging directory" step that renders
snapcraft.yamlfrom the template and copies source files intosnap-build/before the action runs
Snap cross-compilation failure on amd64 CI runners
Root cause: snapcraft.yaml.template declared architectures: [amd64, arm64], instructing snapcraft to cross-compile an arm64 snap on the amd64 CI runner. This fails because the LXD container does not have QEMU configured for arm64 emulation in the GitHub Actions environment.
Fix: Removed the architectures block from snapcraft.yaml.template. Snapcraft now builds for the native runner architecture (amd64). An arm64 snap can be added later using a separate arm64 runner job.
π CI/CD Improvements
.github/workflows/build-packages.yml β complete rewrite:
| Improvement | Detail |
|---|---|
| PyPI job | Clean python -m build β no workarounds required |
| Snap job | Uses snapcore/action-build@v1 with staged source directory |
| Resilience | continue-on-error: true on build-deb, build-rpm, build-snap, build-choco β platform package failures no longer block the core PyPI release |
| VS Code job | New vscode-extension.yml workflow added |
| Documentation | Inline comments explain every non-obvious step |
π Full Changelog
| Commit | Type | Summary |
|---|---|---|
88ba487 |
fix | Rename build.py β kport_orchestrate.py; fix snap CI; rewrite workflow |
7eabe76 |
feat | Add kport_orchestrate.py, snap_publish.py, vscode_build.py, BUILD_GUIDE.md; VS Code MCP first-run prompt |
2f6468d |
chore | Bump version to 3.2.3; initial release notes draft |
93c7a7c |
feat | Add VS Code extension (extension.ts, mcpConfig.ts, package.json); add snap_build.py, choco_build.py; update CI workflows |
0d980d7 |
feat | Add permission-aware warning in CLI when processes are found but port bindings are inaccessible |
π Backward Compatibility
β Fully backward compatible with kport 3.2.2.
All existing commands, flags, and configurations continue to work without modification.
One developer-facing rename:
build.pyβkport_orchestrate.pyβ update any local scripts or CI references that calledpython build.pydirectly.
π¦ Installation
| Platform | Command |
|---|---|
| PyPI | pip install kport==3.2.3 |
| Linux DEB | See Releases |
| Linux RPM | See Releases |
| Linux Snap | snap install kport |
| macOS | See Releases |
| Windows EXE | See Releases |
| Windows Chocolatey | choco install kport |
| VS Code | Extensions marketplace β search "KPort" |
π οΈ For Developers & Maintainers
Building from Source
# Prerequisites check
python kport_orchestrate.py --check
# Build everything
python kport_orchestrate.py --build-all
# Build individual formats
python kport_orchestrate.py --build-pypi # PyPI wheel + sdist
python kport_orchestrate.py --build-vscode # VS Code .vsix
python kport_orchestrate.py --build-snap # Snap packagePublishing
# Publish everything (requires credentials in env)
python kport_orchestrate.py --publish-all
# Publish individually
python publish.py # PyPI (TWINE_PASSWORD required)
python vscode_build.py --publish # VS Code Marketplace (VSCE_PAT required)
python snap_publish.py --publish --channel stable # Snap Store (snapcraft login required)Running Tests
python run_tests.py
# or
pytest tests/ -vSee BUILD_GUIDE.md for full documentation.