Skip to content

Releases: airgap-devkit/devkit

v1.3.4

04 May 22:46
49c0e89

Choose a tag to compare

See CHANGELOG.md for details.

Install

pip install airgap-devkit==1.3.4

v1.3.3 — Rocky Linux Air-Gap Audit Fixes

04 May 02:31
0d5b894

Choose a tag to compare

Changes

Fixed

Air-gap / install

  • scripts/build-server.sh — removed unconditional go mod tidy + go mod download; uses -mod=vendor when server/vendor/ is present; exits with a clear message when GOPROXY=off and vendor dir is absent instead of reaching out to the network
  • scripts/install-cli.sh — no longer calls git submodule update when prebuilt/ is already populated; warns and continues in air-gap rather than hard failing

Server API

  • server/internal/api/auth.goGET /auth/bootstrap reads ?devkit_token= (was ?token=); the documented query parameter now correctly sets the session cookie
  • server/internal/api/handlers.goprefixOverridePath moved to ~/.config/airgap-cpp-devkit/prefix via os.UserConfigDir(); previously pointed at the nonexistent manager/src/… path, causing POST /api/prefix to always return 500
  • packages/pip-packages/devkit.json — corrected setup path; GET /install/pip-packages no longer fails with "No such file or directory"
  • server/internal/config/config.goSetupComplete defaults to true when no devkit.config.json exists; fresh installs are no longer blocked by the setup wizard

Tool installs

  • tools/dev-tools/vscode-extensions/setup.shVSIX_DIR now tries multiple candidate paths to locate .vsix files
  • tools/toolchains/ninja/setup.sh — tar member changed to ./ninja to match archive entry format; no longer fails with "Not found in archive"
  • tools/toolchains/gcc/setup.sh — non-root Linux install now uses rpm2cpio | cpio into $PREFIX instead of hard-exiting with "Root required"

Launch script

  • scripts/launch.sh — default port corrected 8080 → 9090; _free_port() uses ss/lsof on Linux; --yes, --profile, --prefix flags forwarded to install-cli.sh on fallback
  • scripts/status.sh — stale tools/toolchains/clang/… paths updated to tools/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

02 May 06:40
61acce7

Choose a tag to compare

Changes

Added

  • scripts/sign-binaries.sh — Authenticode (Windows, via osslsigncode or signtool) and GPG detached-signature (Linux) support
  • scripts/verify-signatures.sh — verify Authenticode and GPG signatures on prebuilt binaries
  • scripts/virustotal-scan.sh — VirusTotal API v3 scan with JSON report output; supports files >32 MB via large-file upload URL
  • ci/sign.sh — thin CI entry-point that calls scripts/sign-binaries.sh
  • .github/workflows/sign-and-scan.yml — manual workflow_dispatch workflow to sign binaries and/or run VirusTotal scan
  • osslsigncode 2.13 entry in scripts/download-prebuilt.sh (Windows zip + Linux source archive)

Changed

  • scripts/release.sh — integrated signing and VirusTotal scan steps; added --skip-sign and --skip-vt flags
  • CI: actions/upload-artifact v4.6.0 → v7.0.1; actions/download-artifact v4 → 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

02 May 05:52
c0b5d43

Choose a tag to compare

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 args
  • tests/run-tests.sh, tests/check-installed-tools.sh — added ShellCheck source directive for non-constant source paths (SC1090)
  • tests/validate-manifests.sh — removed redundant quotes around regex RHS in [[ =~ ]] (SC2076)

Changed

  • Go deps: go-chi/chi v5.2.2 → v5.2.5, golang.org/x/text v0.22.0 → v0.36.0; server binaries rebuilt
  • Python build deps: setuptools>=75, wheel>=0.45

v1.3.0 — Repository Layout Alignment

02 May 05:52
033f9ed

Choose a tag to compare

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 workflowsci.yml thinned to call ci/lint.sh, ci/test.sh, and ci/smoke.sh; server health-check logic extracted to ci/smoke.sh
  • All Jenkinsfile, .gitlab-ci.yml, smoke-test.yml, and rhel8-test.yml references updated for new script paths
  • scripts/launch.sh and scripts/install-cli.sh internal path resolution updated for new location in scripts/

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 Actions
  • docs/assets/ — home for project screenshots and diagrams
  • examples/ — placeholder for runnable configuration examples
  • packages/python/src/airgap_devkit/py.typed — PEP 561 typed package marker
  • packages/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

01 May 19:24
b9189e4

Choose a tag to compare

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

01 May 19:23
2f3fa82

Choose a tag to compare

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 --admin flag; Jenkinsfile and .gitlab-ci.yml were passing --admin but it was previously unrecognised
  • All CI API calls now include X-DevKit-Token header
  • .gitlab-ci.yml — replaced fragile /proc/*/cmdline PID scan with a .server.pid file

Install

pip install airgap-devkit==1.2.0

v1.1.0 — Setup Wizard, Team Config Sync, Dashboard Filters

30 Apr 07:39
7ad3007

Choose a tag to compare

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 status
  • POST /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.json gains team_config_repo and setup_complete fields
  • /api/config accepts team_config_repo; triggers background git sync when it changes
  • validateRepoURL and sanitizeDisplayName server-side input validation
  • Removed 7-Zip from built-in cpp-dev and devops profiles
  • .gitignore — added dist/, .pypirc, .pyirc, *.egg-info/
  • scripts/release.sh — atomic version bump + Go build + PyPI wheel + optional upload
  • scripts/download-prebuilt.sh — download prebuilt binaries from GitHub releases
  • packages/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-devkit

Via git (air-gapped):

git clone https://github.com/airgap-devkit/devkit
cd devkit
git submodule update --init --recursive
bash launch.sh

CLI / headless:

bash install-cli.sh --yes --profile cpp-dev

v0.1.0-beta — Air-gapped C++ Devkit

15 Apr 03:22
d499d79

Choose a tag to compare

Pre-release

Beta release. Under active development — tooling, offline VS Code extension mirroring, and devkit-ui improvements in progress. Not yet production-ready.