Releases: abapify/adt-cli
Releases · abapify/adt-cli
v0.3.6
0.3.6 (2026-04-21)
🚀 Features
- nx-cloud: setup nx cloud workspace (23de1e92)
🩹 Fixes
- ci: trigger publish.yml on tag push, not via workflow_call (dc91f860)
- ci: chain release -> publish via workflow_dispatch (GITHUB_TOKEN push won't trigger) (872e8a7c)
- ci: grant actions: write to release job so it can dispatch publish.yml (fb842c3e)
❤️ Thank You
- Petr Plenkov
v0.3.5
0.3.5 (2026-04-20)
🩹 Fixes
- ci: propagate id-token: write to publish job in release.yml (2074dfcc)
- ci: disable Nx Cloud for publish job (org exceeded free plan) (6a630228)
- ci: set NX_NO_CLOUD=true in release version step too (aa7ecf14)
- release: set preserveLocalDependencyProtocols=false so workspace:* is resolved (d201251d)
❤️ Thank You
- Petr Plenkov
v0.3.4
v0.3.3
v0.3.2
0.3.2 (2026-04-20)
🚀 Features
- nx-npm-access: add npm-fix target — auto-remediation, not just checks (4da7ad10)
- nx-npm-access: add npm-prepare target — port /npm-publish prepare-ci (3d5a3f3c)
- tools: nx-npm-access plugin — pre-release readiness check per package (c8ee3940)
🩹 Fixes
- nx-npm-trust: don't fail when --fix successfully patched everything (5f3b70d1)
- nx-npm-trust: don't treat auto-fixable issues as lingering errors (c5b1fda5)
- nx-npm-trust: --prepare now speaks the right dialect of npm CLI (b6e70d3f)
- nx-npm-trust: don't pass scope registry override to
npm trust(ec45425c)
❤️ Thank You
- Petr Plenkov
v0.3.1
0.3.1 (2026-04-20)
🚀 Features
- aclass: Wave 0 — package skeleton + Chevrotain lexer (78a31f33)
🩹 Fixes
- ci: unblock v0.3.x release — npm scope override + Docker website workspace (02d66b1b)
❤️ Thank You
- Devin @devin-ai-integration[bot]
- Petr Plenkov
v0.3.0
0.3.0 (2026-04-20)
🚀 Features
- add CTS tr reassign command to change transport owner (cfd8b705)
- add package CRUD and object CRUD commands (class, program, interface) (5fbb8600)
- add datapreview osql, abap run, and DDIC object commands (9e9289e0)
- add AUnit sonar format, improved exit codes, and ATC customizing command (fde59fab)
- add CDS DDL and DCL source commands with XML injection fix (6b49e9af)
- add checkout command and remaining CDS/DDIC subtask completions (bf97ca6c)
- acds: full CDS DDL/DCL grammar + AST walker + validators — E09 (51fa799d)
- adt: add user lookup command and system contract (431e4e19)
- adt-mcp: add 7 new MCP tools and adt source CLI command (7c184ed1)
- adt-mcp: add 12 new tools for feature parity with vibing-steampunk (#H1-#H8) (762e9938)
- adt-mcp: implement 14 medium-priority MCP tools (#M1-#M10)" (170a2f68)
- adt-mcp: Wave 1 — Streamable HTTP transport + stateful sessions + multi-system routing (#110)
- adt-mcp: Wave 2 — HTTP auth middleware (bearer + reverse-proxy + CORS) (caf31a5c)
- adt-mcp: Wave 1-C — migrate tools to session-aware args + getAdtClientV2Safe (1d4bb744)
- adt-mcp: Wave 4 — OAuth 2.1 bearer validation (Okta / Entra ID / Cognito) (c25374c2)
- adt-mcp,adt-cli: Wave 3 — transactional changesets (MCP + CLI parity) (abcb5c3e)
- aunit: ABAP Unit code coverage — JaCoCo output + CLI/MCP parity (cbc19f4e)
- badi: BAdI CRUD + real-SAP e2e harness — E03 (dd0f8ff0)
- checkin: checkin via batch lock session — E08 (027a172d)
- contracts: add datapreview, CTS useraction, DDL/DCL, tablesettings (0eeea082)
- flp: Fiori Launchpad read-only inventory — E14 (aa8b42b5)
- function: FUGR/FUNC CLI + MCP — E02 (e763d35c)
- gcts: AFF/gCTS format plugin — E06 (665c16df)
- gcts: format.export — complete checkin roundtrip for gCTS — QC2 (1f2442d8)
- gcts-cli: gCTS command plugin — E07 (94583dc1)
- incl: INCL CLI + MCP — E01 (ffbe4db0)
- nx-cloud: setup nx cloud workspace (97f42b2c)
- openai-codegen: scaffold abap-ast + openai-codegen packages and openspec change (b6aa7c89)
- openai-codegen: Wave 1 — AST nodes, OAS loader, target profiles (bc378eaa)
- openai-codegen: Wave 2 — printer, type emitter, inline cloud runtime (43bd050f)
- openai-codegen: Wave 3 — emitter, security, formats, CLI + petstore3 (ffb2d4b5)
- openai-codegen: Wave 4 — split exception into global class, fix activation on Steampunk, live deploy proof (ec6489ac)
- openai-codegen: scaffold abap-ast + openai-codegen packages and openspec change (cacd75ba)
- openai-codegen: Wave 1 — AST nodes, OAS loader, target profiles (ff040a46)
- openai-codegen: Wave 2 — printer, type emitter, inline cloud runtime (dec6857d)
- openai-codegen: Wave 3 — emitter, security, formats, CLI + petstore3 (b06c7022)
- openai-codegen: Wave 4 — split exception into global class, fix activation on Steampunk, live deploy proof (bb7ce303)
- openai-codegen: deterministic OpenAPI → ABAP client codegen (00ed7120)
- openai-codegen: Wave 1 v2 — AST ABAPDoc, naming+CLI, 4 emitters + templates (ef71f004)
- openai-codegen: Wave 2 v2 — impl class, INTF+locals format, generate.ts pipeline (bdb8ba68)
- openai-codegen: table query params + HTTP exception wrapping (606ede32)
- parity: 15 new MCP tools + CLI↔MCP e2e test harness (457c3cc5)
- plugin: FormatPlugin API foundation — E05 (a4e6eeef)
- rap: BDEF (Behavior Definition) CRUD — E10 (af89d726)
- rap: SRVD (Service Definition) CRUD — E11 (0c3cb7e1)
- rap: SRVB (Service Binding) CRUD + publish/unpublish — E12 (f8b6c3ce)
- real-e2e: TRL backfill sweep + WB where-used 2-step POST fix (13e777da)
- rfc: SOAP-over-HTTP RFC transport + adt rfc command — E13 (45487cc4)
- strust: STRUST PSE/cert CLI + MCP — E04 (7a4ed04f)
- wb: workbench CLI + real-e2e uncovers MCP endpoint bugs — E15 (f2d73d4b)
🩹 Fixes
- apply CodeRabbit auto-fixes (5554994b)
- add comment explaining DEVC case-preservation in URI resolution (6e97dbb8)
- replace manual XML building and fast-xml-parser with schema-based contracts (c91f3745)
- address all PR #99 review findings (#99, #5)
- resolve all pre-existing typecheck + test failures — QC1 (81152316)
- drop CDATA branch from TAG_RE in adt-rfc — CodeQL final (708ca6c4)
- replace TAG_RE loop with split-based tokenizer — CodeQL final (c32db2ed)
- broaden Z-prefix regex, mark test class in abapGit metadata (6ae8fa61)
- adt-cli: harden user command JSON mode and input validation (f1d980de)
- adt-mcp: extract resolveObjectUri helper to eliminate code duplication (99d4d0cd)
- adt-mcp: also deduplicate activate-object loop; improve QuickSearchClient JSDoc (a63a4a4a)
- adt-mcp: fix missing closing parenthesis in get-table-contents schema description (d7f8b4c9)
- adt-mcp: format all new tool files + fix mock server route ordering (2818f49e)
- adt-mcp: resolve SonarQube quality gate failures (0c6d97c3)
- adt-mcp: address SonarCloud blockers in PR 101 (a001dede)
- adt-mcp: address post-merge PR 101 review findings (#101)
- adt-mcp: lint — preserve cause + no-fallthrough on --help case (#110)
- adt-mcp: ReDoS in Bearer extraction (CodeQL finding) (#110)
- adt-mcp: SonarCloud quality gate — reduce duplication + fix dead-code CORS branch + Dockerfile hardening (de6c1ccf)
- adt-mcp: address Devin Review findings (684d5d1c)
- adt-mcp: address review findings (Devin + Copilot) (49e25a2c)
- adt-mcp: merge tool-call credentials in resolveClient path 3 (Devin finding) (75a7d211)
- adt-mcp: don't leak locks on force=true rollback failure + docs match code (Devin findings) (8c2f1334)
- adt-mcp: reject systemId mismatch in sap_connect + async resolveClient (Devin findings) (b8373868)
- ci: resolve CodeQL ReDoS + code-quality findings, fix main CI (b4bfebc6)
- ci: restore...
v0.2.0
0.2.0 (2026-04-02)
🚀 Features
- add PROG (Program) and FUGR (Function Group) ABAP object type support (d3ebf34)
- enhance service key authentication and add redirect URI support (4e2276f)
- fix ADT export XML serialization and live-test on BTP + on-prem (dbe608b)
- optimize export by skipping unchanged sources and auto-creating packages (172d91c)
- move single-source save lifecycle to base class and add default unchanged detection (b6f58a5)
- add nx format:write pre-commit instruction to GitHub Copilot config (185db86)
- add @fission-ai/openspec dependency for spec management (f185730)
- remove OAT format everywhere, make abapgit the default (4596efd)
- abapGit roundtrip - export, deploy, and structure support (0da189a)
- add adt diff command and fix CDS-to-abapGit serialization (130168d)
- resolve DDIC metadata via ADT for zero-diff TABL serialization (a8198fa)
- adk: add FunctionModule support with POST-then-PUT save flow, fix ETag refresh after metadata PUT (5db28a6)
- adk: improve FUNC save reliability — skip POST if exists, compare function body only, add DEVC skeleton (b9469e0)
- adk: add metadata-only unchanged detection, fix bulk save progress counter (ee2f4dc)
- adk,adt-cli: add FUGR name normalization, lock handle persistence, and root URI extraction (ee2c300)
- adk,adt-cli: centralize lock operations in LockService, add force-unlock, remove duplicate lock logic (66da454)
- adk,adt-cli: fix ETag invalidation after lock acquisition, improve DEVC subpackage filtering, add --objects to package get (979aad9)
- adt-auth: add port retry logic for OAuth callback server, fix refresh logging (cef30df)
- adt-contracts: split Accept vs Content-Type headers in crud() (f16f525)
- adt-diff: add --format ddl option and fix CDS DDL generation (5ba5e65)
- adt-diff: support multi-file and glob patterns in diff command (c0c3128)
- adt-diff: rename --format to --source, add annotation filtering for CDS comparison (07a59da)
- adt-diff: add --raw mode, fix abapLanguageVersion auth issue, defer CLAS include saves (e0b4c04)
- adt-export: remove full-repo scan fallback, add package validation and cascade skip logic (e6fe28b)
- cds-to-abapgit: detect LANGDEP from spras/lang fields in CDS (ff711e8)
- ddic: add abapGit handlers for TABL and TTYP object types (41b6a4b)
🩹 Fixes
- remove package-lock.json and switch nx to use bun as package manager (44b7ff9)
- restore package-lock.json, revert packageManager to npm, add legacy-peer-deps (1bbf03d)
- correct .gitignore corruption and add FUGR fromAbapGit comment (cbb35d4)
- update fast-xml-parser dependency to version 5.5.3 (7e0b6d6)
- preserve targetNamespace xmlns in stripUnusedNamespaces + null guard in config-loader (caad1a5)
- address all SonarQube findings for PR #81 (#81)
- exclude generated schema files from SonarQube analysis to fix quality gate (014ad88)
- add SonarCloud organization and project key to sonar-project.properties (394c670)
- resolve SonarCloud quality gate failures (e8cfed9)
- address remaining SonarQube findings - complexity, duplication, and code quality (11a3408)
- update sonar-project.properties with exclusions and project key (dc374f8)
- use [^<]+ in XML tag regexes to require non-empty content (b459ea7)
- simplify sonar exclusions to /generated/ (ecc42c5)
- simplify sonar exclusions to /generated/ (2c2dad3)
- remove trailing blank lines from sonar-project.properties (56b8e5e)
- run nx format:write to fix formatting on OpenSpec files (5c9fcb1)
- resolve merge conflict and fix SonarQube duplication findings (f1edc75)
- resolve SonarQube quality gate failures (security hotspot + duplication) (12bd3b8)
- address Copilot and Devin review findings (a6c4707)
- abapgit: align dd02v and dd03p field order (d7578d3)
- adk: robust upsert fallback for DDIC objects (405/422 handling) (ac0d580)
- adk: address PR review findings - reset _unchanged, deduplicate fallback, case-insensitive error matching (2816dd4)
- adk: remove false from isEmpty in checkMetadataUnchanged (7b3bbeb)
- adt-diff: use .acds extension for CDS DDL diff display (b1357ac)
- adt-diff: align zage_tabl test expectations with fixture (591ea22)
- adt-export: convert static import of lazy-loaded library to dynamic import (a5ded59)
- cds-to-abapgit: stop emitting LANGDEP, CLIDEP, POSITION from CDS source (0d06b3c)
- cds-to-abapgit: correct DD03P field ordering to match SAP (20a4ac7)
- cds-to-abapgit: detect CLIDEP for client-dependent tables (50e1200)
❤️ Thank You
- Devin @devin-ai-integration[bot]
- Petr Plenkov
- ThePlenkov @ThePlenkov
v0.1.8
0.1.8 (2026-03-11)
🚀 Features
- add granular publish inputs to release workflow (95a890c)
- add latest Docker tag when publishing releases (8eb4cf1)
- add Copilot hooks to auto-approve waiting workflow runs (10245a6)
- log all tool calls to JSON via postToolUse hook, print on sessionEnd (1902d5f)
- add --service-key CLI option, Bearer token support, and CI e2e auth test (9f6710a)
- adt-auth: add service-key auth plugin and env resolver (6bdb0c8)
- adt-mcp: implement MCP server package with tools and mock backend (f625d32)
- adt-mcp: add adt-mcp package from PR #59, resolving conflicts with main (#59)
- nx-cloud: setup nx cloud workspace (4a29f8a)
- nx-cloud: setup nx cloud workspace (63f92c9)
- nx-cloud: setup nx cloud workspace (64881ab)
🩹 Fixes
- correct @abapify/speci/client doc reference to use /rest subpath (6076db7)
- address all Qodo review comments from today's PRs (#44-#49) (#44, #49, #48, #47, #46, #45)
- add missing tsdown.config.ts to Docker build context (a3b62a1)
- add tsdown.config.ts to Dockerfile COPY command to fix Docker build (5fcffca)
- exclude root abapify project from Docker build (3b92804)
- add build step before publish to include dist/ in packages (a401f5c)
- remove build target from root abapify project.json (919fe89)
- exclude workspace root tsdown.config.ts from nx-tsdown plugin (d57a8bd)
- add missing zod dependency to adt-schemas and ts-xsd, bump to 0.1.9 (9c23f17)
- add missing ts-morph and adk deps, bump to 0.1.10 (513bcb9)
- correct husky hook path in git-commit skill (core.hooksPath = .husky/_) (bfcd9e8)
- remove adt-client↔adk circular dep; add nx-ci pre-commit skill (6d2075d)
- checkout PR head in CI to avoid 3-way merge re-introducing circular dep (0b35753)
- remove @abapify/adk from adt-client deps (circular dep, re-added by merge commit) (87f267d)
- run lint/test/build in pre-commit hook (same as CI) (c685732)
- remove @abapify/adk from adt-client deps (circular dep, re-added by merge commit) (550a1d1)
- checkout PR head in CI to avoid 3-way merge re-introducing circular dep (083897d)
- exclude workspace root tsdown.config.ts from nx-tsdown plugin (96fbec3)
- add adt bin symlinks in Docker image (21aa590)
- Docker image - fix adt bin symlink paths and CMD (47f983c)
- update devcontainer features configuration (dcbf9bd)
- update base image to latest TypeScript Node version (45a2c14)
- query action_required status in approve-workflows.sh hook script (d40d3b5)
- add copilot/** push trigger to ci.yml and improve hook to check both approval statuses (b2c4f5e)
- add auto-approve workflow for Copilot CI runs and improve hook coverage (3eeedf6)
- use schedule trigger in auto-approve-copilot-ci.yml to break approval deadlock (1ce442a)
- add copilot/** push trigger to ci.yml so CI runs without approval (d858434)
- retry workflow approval after report_progress (push) tool call (a929799)
- test-hooks.sh approve-workflows tests failing in CI (detached HEAD + PATH bug) (1d86678)
- readServiceKey only accepts file paths; clear error when raw JSON passed (664d857)
- --service-key must point to a file path, not raw JSON (d72de44)
- remove inlinedDependencies and alwaysBundle from adt-cli tsdown config (f276b10)
- restore package-lock.json tracking, switch CI to npm ci to fix eslint external dep resolution (f7de5a7)
- release workflow always checks out and commits to main branch (e3b57e7)
- adt-mcp: resolve SonarQube E Security Rating findings (5ab60c3)
- adt-mcp: resolve all SonarQube issues blocking PR #59 quality gate (#59)
- adt-mcp: resolve remaining SonarQube issues (e172e72)
- adt-mcp: apply PR review feedback - not-yet-impl errors, semver deps, mock, docs (e2e274d)
- ci: restore ci.yml (bun install), set nx.json cli.packageManager=npm to fix eslint dep resolution (c7b1ce8)
- docker: disable nx daemon/TUI and reduce parallelism to fix exit code 130 (53a4df3)
- lint: fix 3 CI failures: ts-xsd lint, adt-cli lazy-load error, adt-contracts test header (c7b856c)
- sonarqube: fix code quality issues from PR #76 (#76)
- ts-xsd: fix NamedNodeMap/NodeList iteration and resolve bugs (1d4a5dd)
❤️ Thank You
- Claude
- Petr Plenkov
- ThePlenkov @ThePlenkov
v0.1.7
0.1.7 (2026-03-02)
🚀 Features
- add GitHub Packages publish workflow (94f75e3)
- move all packages to @abapify namespace for GitHub Registry publishing (e54b934)
🩹 Fixes
- use github.ref_name as fallback in Resolve ref step (ed8d8b9)
- simplify ref resolution and update version input descriptions (c2fa443)
- remove version input from workflow_dispatch - use built-in branch/tag selector (b2aa7d7)
- remove scope restriction in publish-gpr workflow so unscoped packages go to GitHub Packages (b85984e)
❤️ Thank You
- ThePlenkov @ThePlenkov