Skip to content

v0.1.0

Latest

Choose a tag to compare

@kts982 kts982 released this 05 Jul 10:47

First non-prerelease release. The interfaces alpha.1–alpha.4 iterated on — the CLI command surface, connections.toml schema, offline library layout, and the parse_metadata API — are now treated as stable within 0.1.x.

New this release: package-manager distribution. The CLI installs via cargo install sap-odata-cli (builds from source — no SmartScreen involved), and both the CLI and the portable desktop app install via Scoop (scoop bucket add kts982 https://github.com/kts982/scoop-bucket). A winget submission of the MSI (kts982.SAPODataExplorer) is in review.

Warning

Binaries are unsigned. Windows SmartScreen will warn — click More info → Run anyway. Or skip SmartScreen entirely with cargo install / Scoop above.

What's new

Distribution channels

  • crates.io: cargo install sap-odata-clisap-odata on your PATH. The shared engine ships alongside as sap-odata-core.
  • Scoop (Windows): scoop install sap-odata (CLI) / scoop install sap-odata-explorer (desktop portable) after adding the kts982 bucket.
  • winget: MSI submitted as kts982.SAPODataExplorer (install line lands in the README once the winget-pkgs PR merges).

Offline library polish

  • Per-service delete in the sidebar — rows in an offline bucket get a that removes one cached service (confirmation + status-bar result). GUI parity with offline delete --service-id; the bucket itself is kept.
  • Save-offline options modal — the header "Save offline" button now opens a small dialog with target-bucket / label / note overrides. Submitting with everything blank matches the old one-click behavior.
  • Boot-time integrity sweep — at desktop startup, a background thread reconciles the offline index against the files on disk and logs orphaned EDMX files / missing-file services. Non-destructive.

Fixes & hardening

  • Crash-safe connections.toml writessave_config now uses the same atomic temp-file + rename + parent-dir-sync discipline as the offline store, so a crash mid-save can no longer leave a torn config.
  • Dependency advisory fix — transitive quick-xml 0.38.4 (via plisttauri, macOS-target-only; not compiled into these Windows binaries) carried RUSTSEC-2026-0194/0195; bumped to the patched line.
  • Weekly scheduled cargo audit in CI so advisories are caught between releases, not only on push.

Full changelog: CHANGELOG.md.

Verification

VirusTotal scans of the published artifacts (run 2026-07-05):

Asset SHA256 Detections Report
sap-odata.exe (7.1 MB) 5990cb2a9f98… 0/70 VT report
SAP-OData-Explorer_0.1.0_portable.exe (15.2 MB) 4b2cd6d37788… 1/70 VT report
SAP-OData-Explorer_0.1.0_x64-setup.exe (3.6 MB) d77c2fd2092e… 2/70 VT report
SAP-OData-Explorer_0.1.0_x64_en-US.msi (5.4 MB) fc1f9229fb06… 0/62 VT report

Microsoft Defender returned clean across all artifacts. Detections at scan time were single-vendor low-signal ML/reputation noise (Trapmine on portable, APEX + Cylance on NSIS — the same noise-floor pattern as alpha.3 and alpha.4).

Full SHA256 hashes:

  • sap-odata.exe: 5990cb2a9f9805fb1242d2a82bb49a2bb4a3529297a5f728a904531e6a369a5d
  • SAP-OData-Explorer_0.1.0_portable.exe: 4b2cd6d377882223d0eac4de1eba0fd977681a6921dcb7c78add00ab110c16c1
  • SAP-OData-Explorer_0.1.0_x64-setup.exe: d77c2fd2092ed890e9a002009767cd93ecb0b7d400088964effa240f33c25e3d
  • SAP-OData-Explorer_0.1.0_x64_en-US.msi: fc1f9229fb065b4b066c189491998d2bbaccf7bb0aee61caf6dda4844b205381

SHA256SUMS.txt is attached for Get-FileHash verification.

Assets

Asset When to use
SAP-OData-Explorer_0.1.0_x64_en-US.msi Easiest path — double-click installer (MSI).
SAP-OData-Explorer_0.1.0_x64-setup.exe Alternative installer (NSIS).
SAP-OData-Explorer_0.1.0_portable.exe Locked-down environments (Citrix, no-admin laptop, customer VM). No installer, no admin.
sap-odata.exe CLI tool. Put on PATH, run sap-odata setup.
SHA256SUMS.txt Verify with Get-FileHash <file> -Algorithm SHA256 and compare.

The CLI and the desktop app share the same connections.toml and Windows Credential Manager entries — no need to duplicate profiles between them.