Skip to content

Releases: DevExpGbb/gh-devlake

v0.3.10 — CLI Restructure & Quality

04 Mar 19:59
1f084d2

Choose a tag to compare

What's new in v0.3.10

CRUD subcommands

  • configure connection add — connection creation extracted into its own subcommand (#54)
  • configure scope add/list/delete — full CRUD subcommands for scope management (#55)
  • configure project add/list/delete — full CRUD subcommands for project management (#56)

New features

  • --json outputstatus, connection list, and scope list now support --json for scripted consumption (#99)
  • --force flagconnection delete and scope delete skip confirmation prompts (#98)
  • Plugin-specific flag docs — help text groups flags by plugin applicability (#58)

Bug fixes

  • Hardcoded localhost:8080 in startLocalContainers health check now uses discovered URL (#100)
  • Mixed tab/space indentation in root.go help text (#101)
  • Temp directory leak in Azure fork deploy — cleanup now runs on all exit paths (#97)
  • Docker unavailabledeploy local aborts immediately instead of failing later (#69)
  • Cleanup message — success banner references gh devlake cleanup instead of docker compose down (#72)

Refactors

  • Tool-agnostic scope dispatchScopeFunc added to ConnectionDef, eliminating hardcoded plugin switch/case (#57)
  • Duplicate endpoint health check merged in status.go (#102)
  • Discarded io.ReadAll errors handled in client.go (#103)
  • Terminal output standardized — separator widths and missing emojis fixed (#84)

Testing

  • internal/devlake — unit tests for client, state, and discovery (79.7% coverage) (#96)
  • internal/gh + internal/docker — unit tests added (#104)

v0.3.9 — Deploy modes, shared orchestrator, UX improvements

26 Feb 09:22

Choose a tag to compare

What's new in v0.3.9

New features

  • Interactive deploy target prompt — gh devlake deploy without a subcommand now prompts you to pick local or Azure, matching the init wizard UX
  • Fork / custom image source modes — deploy local and deploy azure now offer an interactive source prompt: official (Apache release), fork (clone + build from source), or custom (user supplies own compose/images). New --source and --repo-url flags for scripting.
  • internal/gitclone package — shallow-clone helper (--depth 1) used by both local and Azure fork workflows, with DefaultForkURL pointing to DevExpGBB/incubator-devlake
  • Multiple connections per plugin — when a connection with the same name already exists, the wizard now asks whether to reuse it or create a new one under a different name, enabling e.g. two GitHub org connections in one session
  • --keep-data flag for cleanup — preserves Docker data volumes (database + Grafana dashboards) while still removing containers and compose files

Improvements

  • suggestDedicatedDir replaces the old vague homeDirTip: cross-platform mkdir+cd copy-paste commands (PowerShell and Bash/Zsh) are printed, and the user can choose to exit or continue
  • Shared configureAllPhases orchestrator — both init (phases 2-4) and configure full now use a single implementation; eliminates ~200 lines of duplicated logic
  • deduplicateResults helper + unit tests prevent duplicate connection entries from appearing in scope/project setup
  • waitForMigration helper polls the DevLake /ping endpoint until DB migration completes (428 → 200) before continuing
  • Cleanup: partial deployment detection — docker-compose.yml present without a state file is now correctly detected as a local deployment, so cleanup after a failed deploy works
  • Cleanup removes .devlake.env so no secrets are left behind after teardown
  • CLI architecture skill added to .github/skills/cli-architecture/ for future contributors

0.3.8

25 Feb 09:25

Choose a tag to compare

Full Changelog: v0.3.7...v0.3.8

v0.3.7

20 Feb 18:54
2b77dcc

Choose a tag to compare

What's Changed

  • fix: v0.3.7 quick wins (9 issues) by @ewega in #49
  • refactor: separate scope/project commands, eliminate shared globals by @ewega in #50
  • fix: handle nested scope objects in ListScopes API response by @ewega in #51
  • refactor: make init wizard purely interactive, fix orchestrator UX by @ewega in #52
  • Release 0.3.7: supported plugins + env cleanup by @ewega in #53

Full Changelog: v0.3.6...v0.3.7

v0.3.6

19 Feb 19:09
9a49db1

Choose a tag to compare

What's Changed

Per-plugin token resolution (#15, PR #28)

  • \ oken.Resolve\ now accepts a \plugin\ parameter and resolves plugin-specific environment variables (\GITLAB_TOKEN, \AZURE_DEVOPS_PAT, etc.)
  • Added \pluginEnvFileKeys(), \pluginEnvVarKeys(), \pluginDisplayName()\ helpers for per-plugin resolution
  • \EnvVarNames/\EnvFileKeys\ informational fields added to \ConnectionDef\
  • 14 new unit tests in
    esolve_test.go\ covering flag priority, per-plugin env vars, cross-plugin isolation

Display required PAT scopes proactively (#17, PR #29)

  • Prints required PAT scopes before connection creation so users know what's needed upfront
  • Shows scope hint on test failure (\Ensure your PAT has these scopes: ...)
  • Added \scopeHintSuffix()\ helper and enriched error messages in \�uildAndCreateConnection\

Full Changelog: v0.3.5...v0.3.6

v0.3.5 — Connection Lifecycle

19 Feb 18:12
de9308f

Choose a tag to compare

Connection Lifecycle

Complete CRUD for plugin connections:

  • *\configure connection delete* (#9 / PR #25) — Delete connections with confirmation prompt, state file cleanup
  • *\configure connection test* (#10 / PR #26) — Test saved connections by ID, interactive or flag-based
  • *\configure connection update* (#11 / PR #27) — In-place PATCH for token rotation, org/enterprise changes; post-update test; state file sync

All three commands support both interactive and --plugin/--id\ flag modes.

v0.3.4 — CLI Restructure

19 Feb 17:04

Choose a tag to compare

What's Changed

Command Renames (#5)

  • configure connectionsconfigure connection
  • configure scopesconfigure scope
  • configure projectsconfigure project
  • Old plural names kept as hidden aliases for backward compatibility

--plugin Flag (#6)

  • New --plugin flag on configure scope, configure project, and configure full
  • Replaces --skip-copilot / --skip-github (deprecated, hidden)
  • Flag mode requires --plugin; interactive mode prompts for selection

Connection List (#7)

  • New configure connection list subcommand
  • Lists all connections across plugins with table output
  • Optional --plugin filter

CLI Versioning (#8)

  • gh devlake --version now works
  • Version injected at build time via ldflags
  • Dev builds show dev

Full Changelog: v0.3.3...v0.3.4

v0.3.3 — Enterprise Support

19 Feb 11:44

Choose a tag to compare

What's New

  • Enterprise slug support — --enterprise\ flag on \configure scopes\ and \configure projects\
  • Copilot scope ID fix — enterprise+org → \�nterprise/org, enterprise-only → \�nterprise, org-only → \org\
  • Connection testing — \gh-copilot\ connections now support \Test Connection\ via API
  • Rate limit alignment — Copilot connections use 5000 req/hr (GitHub stays at 4500)
  • Unit tests — 15 new tests for scope ID computation and connection request building

Issues Closed

  • #1 Fix Copilot scope ID computation for enterprise
  • #2 Enable connection testing for gh-copilot
  • #3 Align rate limits per plugin
  • #4 Thread enterprise through all configure commands

v0.3.2

18 Feb 17:33

Choose a tag to compare

Fix: scanner corruption after masked PAT input on Windows. Interactive prompts now work correctly after token entry.

v0.3.1

18 Feb 17:15

Choose a tag to compare

PAT scope guidance, configurable connection fields (name/proxy/endpoint), project wizard messaging, QOL spacing