Releases: airgap-devkit/devkit
v1.3.4
v1.3.3 — Rocky Linux Air-Gap Audit Fixes
Changes
Fixed
Air-gap / install
scripts/build-server.sh— removed unconditionalgo mod tidy+go mod download; uses-mod=vendorwhenserver/vendor/is present; exits with a clear message whenGOPROXY=offand vendor dir is absent instead of reaching out to the networkscripts/install-cli.sh— no longer callsgit submodule updatewhenprebuilt/is already populated; warns and continues in air-gap rather than hard failing
Server API
server/internal/api/auth.go—GET /auth/bootstrapreads?devkit_token=(was?token=); the documented query parameter now correctly sets the session cookieserver/internal/api/handlers.go—prefixOverridePathmoved to~/.config/airgap-cpp-devkit/prefixviaos.UserConfigDir(); previously pointed at the nonexistentmanager/src/…path, causingPOST /api/prefixto always return 500packages/pip-packages/devkit.json— correctedsetuppath;GET /install/pip-packagesno longer fails with "No such file or directory"server/internal/config/config.go—SetupCompletedefaults totruewhen nodevkit.config.jsonexists; fresh installs are no longer blocked by the setup wizard
Tool installs
tools/dev-tools/vscode-extensions/setup.sh—VSIX_DIRnow tries multiple candidate paths to locate.vsixfilestools/toolchains/ninja/setup.sh— tar member changed to./ninjato match archive entry format; no longer fails with "Not found in archive"tools/toolchains/gcc/setup.sh— non-root Linux install now usesrpm2cpio | cpiointo$PREFIXinstead of hard-exiting with "Root required"
Launch script
scripts/launch.sh— default port corrected8080 → 9090;_free_port()usesss/lsofon Linux;--yes,--profile,--prefixflags forwarded toinstall-cli.shon fallbackscripts/status.sh— staletools/toolchains/clang/…paths updated totools/toolchains/llvm/…scripts/install-cli.sh— header updated: removed stale Python 3.8+ requirement, corrected port to 9090
Install
pip install airgap-devkit==1.3.3
v1.3.2
Changes
Added
scripts/sign-binaries.sh— Authenticode (Windows, viaosslsigncodeorsigntool) and GPG detached-signature (Linux) supportscripts/verify-signatures.sh— verify Authenticode and GPG signatures on prebuilt binariesscripts/virustotal-scan.sh— VirusTotal API v3 scan with JSON report output; supports files >32 MB via large-file upload URLci/sign.sh— thin CI entry-point that callsscripts/sign-binaries.sh.github/workflows/sign-and-scan.yml— manualworkflow_dispatchworkflow to sign binaries and/or run VirusTotal scanosslsigncode 2.13entry inscripts/download-prebuilt.sh(Windows zip + Linux source archive)
Changed
scripts/release.sh— integrated signing and VirusTotal scan steps; added--skip-signand--skip-vtflags- CI:
actions/upload-artifactv4.6.0 → v7.0.1;actions/download-artifactv4 → v8.0.1 (pinned SHA) .gitignore— added.claudeignore- Server binaries rebuilt against Go 1.26.2
Install
pip install airgap-devkit==1.3.2
v1.3.1 — ShellCheck Fixes, Go Dep Updates
Fixed
scripts/launch.sh,scripts/uninstall.sh,tests/check-installed-tools.sh— removed unused variables flagged by ShellCheck (SC2034)scripts/pkg.sh— fixed printf format/argument mismatch (SC2183) by splitting composite argument into two separate argstests/run-tests.sh,tests/check-installed-tools.sh— added ShellCheck source directive for non-constantsourcepaths (SC1090)tests/validate-manifests.sh— removed redundant quotes around regex RHS in[[ =~ ]](SC2076)
Changed
- Go deps:
go-chi/chiv5.2.2 → v5.2.5,golang.org/x/textv0.22.0 → v0.36.0; server binaries rebuilt - Python build deps:
setuptools>=75,wheel>=0.45
v1.3.0 — Repository Layout Alignment
Changed
- Repository layout — aligned to project standard:
ci/(renamed from.ci/),scripts/launch.sh,scripts/install-cli.sh,scripts/uninstall.sh(moved from root),docs/TOOLS.md(moved from root),ci/Dockerfile.rhel8-test(moved from root) - CI workflows —
ci.ymlthinned to callci/lint.sh,ci/test.sh, andci/smoke.sh; server health-check logic extracted toci/smoke.sh - All Jenkinsfile,
.gitlab-ci.yml,smoke-test.yml, andrhel8-test.ymlreferences updated for new script paths scripts/launch.shandscripts/install-cli.shinternal path resolution updated for new location inscripts/
Added
ci/build.sh,ci/test.sh,ci/lint.sh,ci/release.sh,ci/smoke.sh— canonical CI entry-point scripts.github/CODEOWNERS— primary maintainer assigned for all files and CI paths.github/dependabot.yml— weekly dependency updates for Go modules, pip, and GitHub Actionsdocs/assets/— home for project screenshots and diagramsexamples/— placeholder for runnable configuration examplespackages/python/src/airgap_devkit/py.typed— PEP 561 typed package markerpackages/python/.python-version— pinned Python version for the packaging environment.pre-commit-config.yaml— ruff lint/format and standard pre-commit hooks
v1.2.1 — RHEL 8 CI bug fix, Node.js 24 Actions
Fixed
RHEL 8 integration test
Dockerfile.rhel8-test — $(ldd --version | head -1) was evaluated by the outer /bin/sh and embedded unquoted, so bash received echo ' glibc: 'ldd (GNU libc) 2.28 and failed with syntax error near unexpected token '('. Wrapped the substitution in escaped double quotes so bash sees a safely-quoted string.
GitHub Actions — Node.js 24
actions/checkout updated from v4.2.2 (Node.js 20, deprecated June 2026) to v4.3.1 (Node.js 24) across all three workflow files (ci.yml, rhel8-test.yml, smoke-test.yml).
Install
pip install airgap-devkit==1.2.1
v1.2.0 — Manual Install Fallback, RHEL 8 CI
What's new
Manual install fallback
When the devkit-ui cannot complete an installation, a Show manual install commands button appears in the terminal drawer. Clicking it opens a modal with tabbed Windows / Linux steps, pre-filled copy-ready shell commands, and split-archive reassembly instructions.
New API endpoint: GET /api/tool/{id}/manual-install — returns platform-specific env block, install command, custom prefix example, split-archive reassembly commands, and per-platform notes.
scripts/manual-install.sh — --list enumerates tools, --tool <id> installs, --prefix sets a custom path, --verify-only confirms split parts are present.
RHEL 8 CI
.github/workflows/rhel8-test.yml — builds Dockerfile.rhel8-test and runs the full install + smoke-test suite inside UBI 8.10 (glibc 2.28, no EPEL); triggers on install-related path changes, weekly Monday schedule, and workflow_dispatch.
Fixed
install-cli.sh— added--adminflag; Jenkinsfile and.gitlab-ci.ymlwere passing--adminbut it was previously unrecognised- All CI API calls now include
X-DevKit-Tokenheader .gitlab-ci.yml— replaced fragile/proc/*/cmdlinePID scan with a.server.pidfile
Install
pip install airgap-devkit==1.2.0
v1.1.0 — Setup Wizard, Team Config Sync, Dashboard Filters
What's new
First-run setup wizard
New /setup page with an animated gradient UI. On first launch the server redirects all requests there until you complete the initial configuration. setup_complete is persisted in devkit.config.json.
Team Config Repository sync
Configure a git repo URL in Settings → Team tab. The devkit auto-syncs the team config on every launch and provides a manual Sync button with a last-sync timestamp and commit indicator. Driven by the new server/internal/team/ package (CloneOrPull, LoadConfig, LastCommit).
New API endpoints:
GET /api/team/status— current sync statusPOST /api/team/sync— trigger an immediate sync
Dashboard filters
Clickable stat chips let you toggle between All tools and Installed only views. A reset button clears the active filter.
XSS hardening
escHtml and escJs helper functions added throughout dashboard JS; all dynamic content rendered through them.
GitHub update badges
The update checker UI now shows GitHub version badges inline when a newer release is available.
New tool versions in prebuilt
CMake 4.3.2 · 7-Zip 26.01 · Conan 2.28.0 · Notepad++ 8.9.4 · Servy 8.3 · VS Code 1.117.0 · .NET SDK 10.0.203 · LLVM 22.1.4
Other changes
devkit.config.jsongainsteam_config_repoandsetup_completefields/api/configacceptsteam_config_repo; triggers background git sync when it changesvalidateRepoURLandsanitizeDisplayNameserver-side input validation- Removed 7-Zip from built-in
cpp-devanddevopsprofiles .gitignore— addeddist/,.pypirc,.pyirc,*.egg-info/scripts/release.sh— atomic version bump + Go build + PyPI wheel + optional uploadscripts/download-prebuilt.sh— download prebuilt binaries from GitHub releasespackages/python/— PyPI package (pyproject.toml,__main__.py,__init__.py).github/profile/README.md— GitHub org profile landing page
Install
Via pip:
pip install airgap-devkit==1.1.0
airgap-devkitVia git (air-gapped):
git clone https://github.com/airgap-devkit/devkit
cd devkit
git submodule update --init --recursive
bash launch.shCLI / headless:
bash install-cli.sh --yes --profile cpp-devv0.1.0-beta — Air-gapped C++ Devkit
Beta release. Under active development — tooling, offline VS Code extension mirroring, and devkit-ui improvements in progress. Not yet production-ready.