Releases: oisee/vibing-steampunk
v2.38.1
v2.38.0
v2.37.0 — Graph Engine & Package Boundary Analysis
What's New
Graph Engine (pkg/graph/) — 1500 LOC, 11 tests
Package boundary analysis — check if your ABAP code stays within package boundaries:
SAP(action="analyze", params={
"type": "check_boundaries",
"package": "$ZDEV",
"whitelist": "$ZCOMMON,$ZUTIL*"
})
Three modes: Offline (embedded parser, no SAP needed) | Object | Package
Dynamic call detection — catches CALL FUNCTION lv_variable, SUBMIT (lv_prog), CREATE OBJECT TYPE (lv_class) that CROSS/WBCROSSGT miss.
Six verdicts: STANDARD ✓ | SAME_PACKAGE ✓ | ALLOWED ✓ | VIOLATION ✗ | DYNAMIC ⚠ | UNKNOWN
Improved SAP Tool Description & Help
- Concise description with real
SAP(action=..., target=..., params={...})syntax - Method-level read/edit:
params={"method": "GET_DATA"} - New
SAP(action="help", target="tips")— best practices & workflows
Design Reports
- 001: GUI Debugger — 3-phase plan, ADT debugger API map
- 002: Graph Engine — ZXRAY port, 4 data sources, boundary queries
- 003: Codex Alignment — edge semantics, provenance model
🤖 Generated with Claude Code
v2.36.0: All PRs Closed — mcp-go v0.47, SSO, HTTP Streamable
v2.36.0 — Backlog Zero
All 14 community PRs processed. 0 open PRs remaining.
Highlights
mcp-go v0.47.0 (was v0.17.0)
- 400+ API migrations across 33 handler files
- New Streamable HTTP transport:
vsp --transport http --http-addr :8080 - Typed accessors:
GetString(),GetFloat(),GetBool(),GetInt()
Browser SSO Authentication (PR #77 @cwbr)
--browser-authopens browser for Kerberos/SAML/Keycloak login- Auto-detects Edge, Chrome, Chromium, Brave on all platforms
--cookie-save cookies.txtpersists session for reuse--keepalive 5mprevents idle session timeout
Full Sprint Stats (v2.33.0 → v2.36.0)
| Metric | Before | After |
|---|---|---|
| Open PRs | 14 | 0 |
| Open Issues | 18 | 6 (backlog) |
| Tools (expert) | 122 | 147 |
| Tools (focused) | 81 | 100 |
| Unit tests | ~250 | 821 |
| Test packages | 11/13 | 14/14 |
| mcp-go | v0.17.0 | v0.47.0 |
All Processed PRs
| PR | Author | Action |
|---|---|---|
| #80 | @oklausen | Merged (copilot-instructions) |
| #44 | @mv0101 | Merged (Windows quickstart) |
| #83 | @blicksten | Merged (version history) |
| #85 | @blicksten | Cherry-picked (CDS tools) |
| #84 | @blicksten | Cherry-picked (testing tools) |
| #53 | @andreasmuenster | Reimplemented (Clean Core) |
| #41 | @Prolls | Cherry-picked (gCTS) |
| #42 | @Prolls | Cherry-picked (i18n) |
| #37 | @kts982 | Reimplemented (pagination) |
| #38 | @danielheringers | Reimplemented (mcp-go upgrade) |
| #77 | @cwbr | Cherry-picked (Browser SSO) |
| #79 | @snymanpaul | Reimplemented (session fix) |
| #82 | @blicksten | Closed (endpoints need rewrite) |
| #86 | @blicksten | Closed (doesn't compile) |
Remaining Issues (6, all backlog)
v2.35.0: Quality Sprint Complete — 147 tools, 816 tests
v2.35.0 — Quality Sprint Complete
Two back-to-back sprints processed 11 community PRs and closed 11 issues.
New Tools (+25 since v2.33.0)
| Category | Tools | Source |
|---|---|---|
| Version History | GetRevisions, GetRevisionSource, CompareVersions | PR #83 @blicksten |
| CDS Analysis | GetCDSImpactAnalysis, GetCDSElementInfo | PR #85 @blicksten |
| Testing | GetCodeCoverage, GetCheckRunResults | PR #84 @blicksten |
| Clean Core | GetAPIReleaseState | PR #53 @andreasmuenster |
| gCTS (10 tools) | List/Get/Create/Delete repos, Clone, Pull, Commit, Branches, History | PR #41 @Prolls |
| i18n (7 tools) | GetObjectTexts, DataElementLabels, MessageClass, TextPool, CompareLanguages, Write ops | PR #42 @Prolls |
| Table Pagination | GetTableContents + offset/columns_only | PR #37 @kts982 |
Stability Fixes
- Default session → stateless (fixes #81, #26)
- Installer resilience for SAP 7.40 (#87, #75)
- Graph namespace fix (#76)
--verbosefor all CLI subcommands- All test packages pass (was 11/13 → 14/14)
Community Scorecard
| Metric | Count |
|---|---|
| PRs merged/cherry-picked | 8 |
| PRs closed with thanks | 3 (#79, #86, closed with detailed feedback) |
| Issues closed | 11 (#26, #30, #34, #39, #40, #43, #56, #75, #76, #81, #87) |
| Contributors credited | 7 (@blicksten, @Prolls, @andreasmuenster, @kts982, @snymanpaul, @oklausen, @mv0101) |
Stats
| Metric | v2.33.0 | v2.35.0 |
|---|---|---|
| Tools (expert) | 122 | 147 |
| Tools (focused) | 81 | 100 |
| Unit tests | ~250 | 816 |
| Test packages | 11/13 pass | 14/14 pass |
Codex Integration
New: docs/cli-agents/codex.md — MCP configuration for OpenAI Codex with SAP Q/A testing scenarios and safety configs.
Full Changelog
v2.34.0: Quality Sprint — 129 tools, 798 tests
What's New in v2.34.0
Quality Sprint Results
Stability fixes:
- Default session type → stateless (fixes "Session not found" on POST operations) — #81
vsp install zadt-vspno longer aborts on older SAP systems (7.40) — #87, #75vsp graphhandles namespaced objects like/UI5/CL_REPOSITORY— #76--verbose/-vworks for ALL CLI subcommands (was MCP-only) +SAP_VERBOSE=true- All 13 test packages pass (was 11/13): fixed
pkg/dslGo vet +pkg/jsevalescaping
7 new tools (129 total, 88 focused):
| Tool | Description | Source |
|---|---|---|
GetRevisions |
Version history (Atom feed) | PR #83 @blicksten |
GetRevisionSource |
Read specific version | PR #83 @blicksten |
CompareVersions |
Diff two versions | PR #83 @blicksten |
GetCDSImpactAnalysis |
CDS where-used analysis | PR #85 @blicksten |
GetCDSElementInfo |
CDS entity metadata | PR #85 @blicksten |
GetCodeCoverage |
ABAP Unit test coverage | PR #84 @blicksten |
GetCheckRunResults |
Check run findings | PR #84 @blicksten |
GetTableContents enhanced:
offset— client-side pagination (inspired by PR #37 @kts982)columns_only— schema-only mode, no data rows
Community Contributions
| Action | PRs/Issues |
|---|---|
| Merged as-is | #80 (@oklausen), #44 (@mv0101), #83 (@blicksten) |
| Cherry-picked with fixes | #85 (@blicksten), #84 (@blicksten) |
| Reimplemented with credit | #37 (@kts982) — pagination |
| Closed with thanks | #79 (@snymanpaul) — cleaner fix in main |
| Issues resolved | #81, #87, #75, #76, #30, #34 |
Test Suite
- 798 unit tests across 13 packages — all passing
- 32.5% overall coverage — roadmap to improve CRUD/safety/handler coverage
Diagnostic Tips
# Verbose mode for all commands
vsp -v query T100
SAP_VERBOSE=true vsp search "ZCL_*"
# Different SAP versions have different endpoints
# If query fails but search works, your system may not support datapreview/freestyleFull Changelog
v2.33.0: CLI Verbose Fix
What's New in v2.33.0
Bug Fix: --verbose now works for all CLI subcommands
Previously --verbose / -v was a local flag only available in MCP server mode.
CLI subcommands like vsp query, vsp search, vsp source silently ignored it.
Fixed:
vsp -v query T100— now shows HTTP request/response detailsSAP_VERBOSE=true vsp query T100— env var also works for CLI mode- All subcommands inherit
--verbosevia PersistentFlags
How to Diagnose ADT Endpoint Issues
If a command fails, add -v to see the exact HTTP status and response:
vsp -v query T100
vsp -v install zadt-vspFull Changelog
--verboseflag moved fromrootCmd.Flags()torootCmd.PersistentFlags()- Added
PersistentPreRunEto enable HTTP logging before subcommand execution SAP_VERBOSEenv var now checked in CLI path via viper
v2.32.0: Full Stack ABAP
What's New in v2.32.0
Native ABAP Parser & Linter
- ABAP Lexer — mechanical port of abaplint to Go. 100% oracle match on 22,612 tokens across 29 files.
- Statement Parser — 91 statement types, 100% match on 3,254 statements. Colon chaining, NativeSQL, pragmas.
- ABAP Linter — 8 rules (line_length, empty_statement, obsolete_statement, etc.), 100% oracle match, 795μs/file. Works fully offline.
CLI Toolchain (28 commands)
| Command | What | SAP needed? |
|---|---|---|
| `vsp query T000 --top 5` | Query SAP tables | Yes |
| `vsp grep "pattern" --package PKG` | Search source code | Yes |
| `vsp graph CLAS ZCL_FOO --direction callers` | Call graph (WBCROSSGT fallback) | Yes |
| `vsp deps '$PKG' --format summary` | Transport readiness | Yes |
| `vsp lint --file src.abap` | ABAP linter | No |
| `vsp parse --stdin --format json` | ABAP parser | No |
| `vsp compile wasm prog.wasm` | WASM→ABAP compiler | No |
| `vsp context CLAS ZCL_FOO --depth 2` | Compressed deps (multi-level) | Yes |
| `vsp system info` | System version + ZADT_VSP check | Yes |
WASM Self-Host Compiler — 3-Way Verified
- 12 functions: add, factorial, fibonacci, gcd, is_prime, abs, max, min, pow, sum_to, collatz, select
- Native WASM (Node.js): 51/51 PASS
- Go WASM→ABAP compiler: compiles OK
- ABAP self-host on SAP A4H: 11/11 PASS
- 505 bytes WASM → base64 → parse → compile → GENERATE SUBROUTINE POOL → execute
Lua Scripting (50+ bindings)
New: `query()`, `lint()`, `parse()`, `context()`, `systemInfo()`
Example scripts: package-audit, table-explorer, dependency-check
TS→Go Transpiler
New `pkg/ts2go/` — produces valid Go from TypeScript. Tested on abaplint lexer (3 files compile with gofmt).
Documentation
- CLI Guide — 463 lines, complete reference with feature matrix
- Reviewer Guide — 11 hands-on tasks (6 offline)
Downloads
| Platform | Architecture | File |
|---|---|---|
| Linux | x64 | vsp-linux-amd64 |
| Linux | ARM64 | vsp-linux-arm64 |
| Linux | x86 | vsp-linux-386 |
| Linux | ARM | vsp-linux-arm |
| macOS | x64 (Intel) | vsp-darwin-amd64 |
| macOS | ARM64 (Apple Silicon) | vsp-darwin-arm64 |
| Windows | x64 | vsp-windows-amd64.exe |
| Windows | ARM64 | vsp-windows-arm64.exe |
| Windows | x86 | vsp-windows-386.exe |
Installation
```bash
Linux/macOS
curl -LO https://github.com/oisee/vibing-steampunk/releases/download/v2.32.0/vsp-linux-amd64
chmod +x vsp-linux-amd64
sudo mv vsp-linux-amd64 /usr/local/bin/vsp
Or build from source
git clone https://github.com/oisee/vibing-steampunk.git
cd vibing-steampunk && go build -o vsp ./cmd/vsp
```
Full Changelog
v2.30.0 — WASM Compiler + TS Transpiler + Unified Analyzer
WASM-to-ABAP AOT Compiler
Compile any WebAssembly binary to native ABAP. Three paths:
.wasm → pkg/wasmcomp (Go) → ABAP source (AOT compiler)
.ts → pkg/ts2abap (Go) → OO ABAP classes (direct transpiler)
.wasm → zcl_wasm_compiler → ABAP on SAP (self-hosting, 785 lines)
QuickJS: 1,410 functions compiled, 100% opcodes, 101K lines ABAP.
abaplint: 26.5MB WASM compiled to 396K lines ABAP.
Self-Hosting Compiler on SAP
785 lines of ABAP parse any .wasm, generate ABAP, compile via
GENERATE SUBROUTINE POOL, and execute — all within SAP. No external tools.
TS-to-ABAP Direct Transpiler
TypeScript to clean OO ABAP without WASM intermediate. 800x smaller
output. abaplint lexer transpiled and running on SAP A4H.
Unified 5-Layer Code Intelligence
Combines regex (fast), parser (accurate), SCAN ABAP-SOURCE (SAP kernel),
CROSS/WBCROSSGT (index), and ADT Where-Used. Confidence scoring with
parser as primary authority, CROSS as supplementary.
Also in this release
- Hyperfocused mode (99.5% schema reduction) from v2.29.0
- Context compression (7-30x per dependency)
- Method-level surgery (95% token reduction)
Platforms
Linux x64/ARM64/x86/ARM, macOS Intel/Apple Silicon, Windows x64/ARM64/x86
v2.29.0 — Token Efficiency Sprint
Token Efficiency Sprint
This release is all about making every token count — hyperfocused mode, context compression, and method-level surgery work together to reduce token consumption by 10–75x.
Hyperfocused Mode — 1 Tool, 99.5% Less Schema
--mode hyperfocused registers a single SAP(action, target, params) tool instead of 122 individual tools.
| Mode | Tools | Schema Tokens |
|---|---|---|
| Focused (default) | 81 | ~14,000 |
| Expert | 122 | ~40,000 |
| Hyperfocused | 1 | ~200 |
All safety controls (read-only, allowed-ops, package restrictions) work identically across all modes.
Context Compression — 7-30x Per Dependency
GetSource auto-appends compressed dependency contracts (public API signatures only). One MCP call returns source + surrounding context. 10 regex patterns extract dependencies, contracts fetched in parallel, classes compressed to PUBLIC SECTION only.
Method-Level Surgery — 95% Source Reduction
Read/write individual methods without pulling entire classes:
SAP(action="read", target="CLAS ZCL_FOO", params={"method": "CALCULATE"})
SAP(action="edit", target="CLAS ZCL_FOO", params={"method": "CALCULATE", "source": "..."})
vsp handles fetch, splice, syntax check, push internally. Context compression scopes to the method's own dependencies.
ABAP LSP
vsp lsp --stdio provides real-time syntax checking and go-to-definition — zero token cost (runs via editor LSP channel, not MCP).
Mode Unification
SAP_TOOL_MODE removed. Now one axis: SAP_MODE=focused|expert|hyperfocused.
Combined Token Budget
| Component | Expert Mode | Hyperfocused + Method | Ratio |
|---|---|---|---|
| Schema overhead | 40,000 | 200 | 200x |
| Read + context | 1,300 | 165 | 7.9x |
| Edit round-trip | 2,100 | 210 | 10x |
| Total | 43,600 | 575 | 75.8x |
Platforms
Linux x64, ARM64, x86, ARM | macOS Intel, Apple Silicon | Windows x64, ARM64, x86
Credits
- Filipp Gnilyak — hyperfocused mode concept
- Lars Hvam — abaplint ABAP parser