Skip to content

chore: bump version to 4.0.0, update in-range dependencies - #361

Open
sn0wcat wants to merge 12 commits into
masterfrom
feature/url-schema-v4
Open

sn0wcat wants to merge 12 commits into
masterfrom
feature/url-schema-v4

Conversation

@sn0wcat

@sn0wcat sn0wcat commented Sep 15, 2026

Copy link
Copy Markdown
Member
  • Bump version to 4.0.0 ahead of breaking URL schema migration (mindsphere.io -> siemens.app)
  • npm update: bump dependencies within existing semver ranges
  • Fix TypeScript strictness errors surfaced by updated @types/node (Buffer generics, EventEmitter listener typing)

sn0wcat and others added 12 commits September 15, 2026 11:26
- Bump version to 4.0.0 ahead of breaking URL schema migration (mindsphere.io -> siemens.app)
- npm update: bump dependencies within existing semver ranges
- Fix TypeScript strictness errors surfaced by updated @types/node (Buffer generics, EventEmitter listener typing)

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…kage.json, CHANGELOG

- README: add breaking-change notice with guidance to use 3.x for old mindsphere.io URLs
- package.json: update description to mention the breaking change
- CHANGELOG: clarify 3.x fallback guidance

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Introduces backward-compatible support for the new Xcelerator
siemens.app/sws.siemens.com URL scheme, gated entirely on the
presence of a configured systemId:

- Add DEFAULT_SYSTEM_ID and systemId threading through auth config,
  credential entries, and MindSphereCredentials
- Rewrite getPiamUrl and addAndStoreConfiguration to build new-scheme
  gateway/PIAM URLs only when systemId is set, otherwise preserve
  legacy behavior unchanged (on-premise and existing tenants unaffected)
- Add GetSystemId() across auth classes (credential, tokenmanager,
  user, frontend, browser, agent auth) and thread it through
  TokenManagerAuth/CredentialAuth construction
- Add SdkClient.GetServiceBaseUrl() helper and convert all ~30 SDK
  client _baseUrl fields to getters using it; special-case
  messagebroker (v4 legacy / v5 new) and notification (api prefix)
- Fix stray hardcoded /api/... URLs in agent-auth, mindconnect-agent,
  mindconnect-setup, mcapi Ingest(), multipart-uploader, and
  tenant.ts logo URL to use the new base-url helpers
- Add --system-id CLI flag to mc-service-credentials and matching
  System Id field in the web credential config UI

Validated with tsc, ts:build, browser:build, and npm run sanity
against the live legacy castidev tenant (28 passing, 9 pending,
2 pre-existing unrelated failures - unchanged baseline).

Still pending: docs/CHANGELOG updates for --system-id, live
verification against an actual new-scheme tenant.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…emId)

Live testing against a real Xcelerator tenant revealed that the OAuth/PIAM
identity zone id (used to build https://<id>.<region>.sws.siemens.com/ auth
urls) can be a genuinely different id than the API systemId (used to build
https://api.<region>.siemens.app/<service>-<id>/v<version> urls) for the
same tenant. The migration docs only document a single, misleading example
id that is not a shared constant.

- AuthBase/CredentialAuth/TokenManagerAuth: accept an optional _oauthSystemId
  constructor param (falls back to _systemId when not set) and use it only
  for getPiamUrl (oauth/token, token_keys). TokenManagerAuth's own
  technicaltokenmanager exchange keeps using _systemId, since that call is
  against the API gateway domain, not the PIAM zone.
- MindSphereCredentials/authJson/credentialEntry: add optional oauthSystemId
  field, threaded through SdkClient's CredentialAuth/TokenManagerAuth
  construction.
- CLI (mc-service-credentials): add --oauth-system-id / -z option.
- Config UI (index.html/scripts.js): add an "OAuth System Id" field to the
  add-credentials dialog and the list item display, with help text
  explaining the distinction and pointing users at their Insights Hub
  administrator if authentication fails.

Also fixes a bug where bindList() mutated the live in-memory credential
objects with display-only placeholder strings ("(none)", "(same as System
Id)"), which saveData() would then persist verbatim into auth.json,
corrupting the real systemId/oauthSystemId values on save. bindList() now
renders from a shallow copy instead.

Bump MC_VERSION to 4.0.0 (src/version.ts) to match package.json; it was
missed during the earlier version bump and still showed 3.24.2 in
`mc --version`, the User-Agent header, and the config UI title.

Add System Id display to the credential list view and pre-fill the add
dialog's System Id field from the server's configured default
(GET /sc/config now also returns defaultSystemId).

Verified end-to-end: added real Xcelerator technical user credentials with
distinct systemId/oauthSystemId via the CLI, successfully acquired an access
token (mc service-token) and confirmed the full sanity suite is back to the
established baseline (28 passing / 9 pending / 2 pre-existing unrelated
failures) after the corrupted local config was repaired.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…rTenantId

Renames the two Xcelerator ids introduced for the siemens.app URL migration
to clearer, distinct names:
- systemId (API system id, used in service URL paths like
  /assetmanagement-<id>/v3) -> coreTenantId
- oauthSystemId (OAuth/PIAM identity zone id, used in the
  <id>.<region>.sws.siemens.com auth urls) -> customerTenantId

This affects MindSphereCredentials/AppCredentials/ServiceCrendtials fields,
the auth.json/credentialEntry config format, the AuthBase-derived classes'
constructor params and GetCoreTenantId()/GetCustomerTenantId() getters (was
GetSystemId()/GetOAuthSystemId()), the CLI flags (--core-tenant-id/-x,
--customer-tenant-id/-z, was --system-id/--oauth-system-id), and the config
web UI labels/fields.

Not renamed (intentionally): OnboardingConfigurationContent.systemId in
mindconnect-models.ts and AgentAuth's GetSystemId() field access - these
read/represent the actual onboarding file JSON key as issued by the server,
which must not be renamed independently of the server's own wire format.

No functional change; this is unreleased (4.0.0 is still unpublished), so no
migration/back-compat shim is needed for the new field names.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Service credentials are no longer deprecated, so remove the '(deprecated)'
label from the config UI and rename the term to 'technical user
credentials' throughout the config UI, README.md, and CLI help/error text.

No functional change: the underlying credential type value (SERVICE) and
the mc service-credentials command name are left as-is.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Update the Core Tenant Id / Customer Tenant Id descriptions (config UI and
CLI --core-tenant-id/--customer-tenant-id help) to:
- explain both ids are visible in the URL of any Xcelerator app for the
  tenant, e.g. https://<customerTenantId>-settings-<coreTenantId>.<region>.siemens.app/
- clarify the tenant name field is unrelated to and not needed for these
  ids when using technical user credentials against an Xcelerator gateway.

No functional change.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…dentials

Previously the add-credential dialog was a single shared form where
switching the 'Credentials' radio button only hid/showed the app-only
fields (User Tenant, Application Name, Application Version), while all
other inputs (User, Password, Gateway, Core/Customer Tenant Id, Tenant)
were shared and re-labeled generically ('for application credentials'
regardless of the selected type).

Split the dialog into two fully independent field groups
(#appCredentialFields / #serviceCredentialFields), each with its own
inputs, ids, and type-specific descriptions, toggled completely by the
radio selection via showCredentialType(). addNew() now reads from the
active group's fields based on the selected type.

No change to the underlying credential data model or auth logic.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Trim the overly long help text for Core Tenant Id / Customer Tenant Id
in both the Application and Technical User credential forms down to
one or two sentences, keeping the essential info (what it is, where to
find it, when it's needed).

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
The config UI, CLI help, and JSDoc comments incorrectly implied that
leaving Customer Tenant Id empty and falling back to Core Tenant Id is
a normal/working setup ('the common case where both ids are equal').
In practice the OAuth/PIAM zone id and the API system id are
provisioned independently and are effectively always different for
Xcelerator tenants, so that fallback does not produce a working auth
url. Reworded all of these to state the customer tenant id must
normally be set explicitly, without changing the fallback code itself.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant