Ana içeriğe geç

Sürüm Geçmişi

MDP Integration Platform sürüm geçmişi ve changelog.

Proje: MDP Integration Platform
Başlangıç: 24 Temmuz 2023
Mevcut Sürüm: 1.18.23
Son Güncelleme: 2026-09-17

Özet İstatistikler

Bileşene Göre Değişiklikler

  • Backend Server: ~450 değişiklik
  • Frontend Server: ~400 değişiklik
  • Frontend Web: ~50 değişiklik

Sürüm Dağılımı

  • Majör Sürüm: 1 (v1.3.0 - İlk Sürüm)
  • Minör Sürümler: 11 (v1.4 - v1.16)
  • Yama Sürümleri: 46
  • Toplam: 58 sürüm

Önemli Kilometre Taşları

  • v1.3.0 (2023-07-24): İlk üretim sürümü
  • v1.4.0 (2023-08-01): Cloud storage connector'ları
  • v1.5.0 (2023-10-01): Mail & MongoDB desteği
  • v1.6.0 (2024-01-01): Salesforce & OData entegrasyonu
  • v1.7.0 (2024-04-01): Flow Mapping & Message Retrigger
  • v1.8.0 (2024-07-01): Solace & EventBridge
  • v1.9.0 (2024-11-01): OPC UA & Spring Boot 3 (Frontend Server)
  • v1.10.0 (2025-03-01): Elasticsearch & Redis optimizasyonları, AI Monitoring
  • v1.11.0 (2025-11-30): Kafka, AS2, OFTP2 Connector'ları
  • v1.12.0 (2026-03-25): Health Check, Alert Rules, APISIX & API Management güncellemeleri
  • v1.12.1 (2026-04-07): Health Check JWT/CORS düzeltmeleri, opsiyonel context path, backend test kapsamı & raporları
  • v1.14.0 (2026-06-08): API Gateway güven modu, XSD Designer geliştirmeleri, bileşen bazlı sürüm notları (Backend, Frontend Server, Frontend Web, Health Check)
  • v1.16.0 (2026-07-24): Flow Simulation, X.400 connector & EDI Converter — uzun süreli destek (LTS) sürümü
  • v1.17.0 (2026-07-25): XI bağlantı paketi — yerel XI 3.0 mesajlaşması, ESR facade, Connections çalışma alanı (release candidate; 1.18.0 içinde finalize edildi)
  • v1.18.0 (2026-08-20): Sistem log monitoring'i, ESR proxy üretim facade'ı, AS2 opsiyonel kimlik doğrulama — tek ürün versiyon hattındaki ilk sürüm

Toplam Commit: 1878 (Backend: 829, Frontend Server: 894, Frontend Web: 155)

Patch Changelog

Otomatik versiyon bazlı değişiklik listesi (derli toplu sürüm notları minor versiyon başına yayınlanır).

1.18.23 — 2026-09-17

  • mip-backend-server
    • Merge pull request #597 from mdpint/fix/oftp2-exchange-buffer-error-code
    • fix(oftp2): give the exchange-buffer-too-small branch its own error code

1.18.22 — 2026-09-17

  • mip-backend-server
    • feat(oftp2): make SSIDCRED and SSIDSDEB per connection, and send every buffer

1.18.21 — 2026-09-15

1.18.20 — 2026-09-15

  • mip-backend-server
    • Merge pull request #594 from mdpint/fix/splitter-monitoring-output
    • fix(splitter): resolve XPath prefixes from the message's own xmlns declarations
    • fix(splitter): show the split pieces as the node's monitoring output
  • mip-frontend-web
    • Merge pull request #234 from mdpint/fix/splitter-xpath-namespace-hint
    • feat(splitter): hint how XPath namespace prefixes resolve

1.18.19 — 2026-09-15

  • mip-backend-server
    • Merge pull request #593 from mdpint/feature/staging-priorityclass
    • Merge pull request #586 from mdpint/feature/graphical-mapping-test-input-and-function
    • Merge branch 'dev' into feature/graphical-mapping-test-input-and-function
    • fix(graphical-mapping): report a missing JCo runtime as a lookup failure so onError applies
    • Merge remote-tracking branch 'origin/dev' into feature/graphical-mapping-test-input-and-function
    • feat(k8s): give postgres, its replica and Elasticsearch scheduling priority
    • perf(graphical-mapping): prepare a mapping once per version instead of once per message
    • fix(graphical-mapping): select the source schema so the engine can plan from it in production
    • refactor(graphical-mapping): move input resolution into a FunctionInputResolver and name the exchange properties
    • refactor(graphical-mapping): run every function node as one loop over its iteration space
    • refactor(graphical-mapping): compute a node's iteration space in the planner
    • test(graphical-mapping): record every function invocation per golden fixture as a second oracle
    • refactor(graphical-mapping): move function output writes into a FunctionOutputWriter and drop the static path delegates
    • feat(graphical-mapping): plan array contexts from the CanonicalStructure and fix the nested writes it exposed
    • refactor(graphical-mapping): plan each function node's array context in an ArrayContextPlanner before it runs
    • refactor(graphical-mapping): carry per-message engine state in an ExecutionSession instead of ThreadLocals
    • refactor(graphical-mapping): move the path walkers into one MappingPathNavigator
    • feat(graphical-mapping): derive a per-mapping CanonicalStructure and prove parity with the engine's runtime guesses
    • fix(graphical-mapping): write a JSON null as an empty XML element instead of the text "null"
    • fix(graphical-mapping): copy a directly mapped primitive array instead of dropping it
  • mip-frontend-server
    • Merge pull request #674 from mdpint/feature/graphical-mapping-improvements
    • Merge branch 'dev' into feature/graphical-mapping-improvements
    • fix(test): supply ImportedSapObjectService to the FlowService slice
    • fix(sap-import): materialize reuses an existing flow resource, and flow copy carries the links over
    • Merge branch 'dev' into feature/graphical-mapping-improvements
    • feat(rfc-destination): find RFC_LOOKUP usages inside graphical mappings
    • fix(flow-mapping): carry a cleared source schema into the version row
    • feat(flow-mapping): allow a mapping with no source schema
  • mip-frontend-web
    • Merge pull request #233 from mdpint/feature/remove-mapping-env-flag
    • feat(graphical-mapping): drop VITE_MAPPING, mapping is part of the product
    • Merge pull request #227 from mdpint/feature/graphical-mapping-quick-test-improvements
    • Merge branch 'dev' into feature/graphical-mapping-quick-test-improvements
    • fix(graphical-mapping): stop 391252f8 from emptying type-only schemas
    • fix(graphical-mapping): resolve named complexTypes from the schema root
    • fix(sap-rfc): raise the Browse & Select RFC failures as errors
    • feat(graphical-mapping): close four gaps between the function palette and the engine
    • fix(graphical-mapping): keep a failed Test Mapping run on screen
    • Merge branch 'dev' into feature/graphical-mapping-quick-test-improvements
    • test: make the two permanently-red suites actually run
    • feat(graphical-mapping): delete a transformation edge by hovering it
    • fix(graphical-mapping): lay the transformation out by its handles, not its node tops
    • feat(mapping-logs): report a function's total duration
    • feat(mapping-logs): one windowed index-chip strip for both trace panels
    • fix(graphical-mapping): serialise function inputs in handle order
    • fix(graphical-mapping): show wiring that runs through a function
    • feat(graphical-mapping): target-only mappings, and keep mappings honest about functions
    • feat(graphical-mapping): RFC Lookup function node
    • feat(graphical-mapping): syntax-highlighted Test Mapping panel on a shared CodeEditor
  • mip-health-check
    • Merge pull request #79 from mdpint/feature/staging-alerting
    • feat(k8s): show unhealthy pods and firing alerts on the Grafana dashboards
    • feat(k8s): remind on Teams every 30s, keep e-mail at 5m
    • feat(k8s): add mip-alerting.sh to manage staging alert delivery with one command
    • feat(k8s): deliver staging alerts by e-mail and Teams, add MIP alert rules

1.18.18 — 2026-09-14

  • mip-frontend-web
    • Merge pull request #232 from mdpint/test/timeframe-selector-contract
    • test(docs): the documentation gate covers every test file this branch touched or added
    • test(journey): every row a time-filtered list returns must fit the window it was asked for
    • fix(timeframe): an absolute end is always sent as written, and whether a window is open-ended comes from its expression
    • fix(pages): a failure that reported nothing, a message shown twice, and a refresh that sent NaN
    • fix(timeframe): a window chosen in the time bar now follows the clock when the page asks again
    • test(journey): the timeframe box must fetch by itself, so type with the keyboard and wait for it
    • test(timeframe): the shared contract that drives the real selector on every page that hosts it
    • test(harness): one CRUD contract every list page runs, and an item layer on top of it
    • fix(tables): a page size chosen mid-search was ignored, and a sort inside the same window was dropped
    • fix(timeframe): after a preset the popover kept the keyboard, so a typed window went nowhere

1.18.17 — 2026-09-14

  • mip-frontend-server
    • Merge pull request #678 from mdpint/fix/end-date-written-precision
    • fix(api-management): rejected requests end at the written precision, and a missing end means now
    • fix(monitoring): a missing end is the moment of the request, and the System Logs viewer honours the written precision
    • fix(time): an end bound advances by the precision it was written in, not by its smallest non-zero field
  • mip-frontend-web
    • chore(odata): drop the matrix cell builders, whose job is finished (#231)
    • feat(odata): paged and delta read configuration, and the cartesian E2E that proves it (#230)

1.18.16 — 2026-09-14

  • mip-backend-server
    • feat(odata): paged and delta reads that survive a dead target (#592)
  • mip-frontend-server
    • feat(odata): carry the paged-read, delta and CSRF settings through the flow-data models (#677)

1.18.15 — 2026-09-11

  • mip-backend-server
    • Merge pull request #591 from mdpint/fix/multicast-thread-safety
    • fix(multicast): select branches by CamelMulticastIndex and scope the error flag to the message
    • fix(multicast): make MulticastProcessor stateless so concurrent messages cannot corrupt each other's branches

1.18.14 — 2026-09-11

  • mip-backend-server
    • Merge pull request #589 from mdpint/fix/console-surface-findings
    • fix(webdav): a failing poll had no identity, so its node log was dropped once per poll
  • mip-frontend-server
    • Merge pull request #676 from mdpint/fix/console-surface-findings
    • fix(test): a sibling's javadoc had been taken by the test inserted above it
    • fix(monitoring): a run that recorded no node is not a node the flow deleted
    • fix(monitoring): a list's filter options were read from a store the list was not reading
  • mip-frontend-web
    • Merge pull request #229 from mdpint/fix/console-surface-findings
    • test(matrix): the column that says which node a record names
    • test(journey): two journeys stop asserting a surface this installation does not have
    • fix(service-users): in single-credential mode the user and its credential are one thing
    • fix(system-logs): "no logs yet" described a state no service is in
    • fix(monitoring): the message list's columns - which ones, how wide, and how each reads

1.18.13 — 2026-09-10

  • mip-backend-server
    • Merge pull request #588 from mdpint/fix/frontend-probe-legacy-endpoint
    • fix(endpoints): frontend latency probe honours legacy FRONTEND_HTTP_ENDPOINT again

1.18.12 — 2026-09-10

  • mip-backend-server
    • Merge pull request #587 from mdpint/fix/monitoring-silent-gaps
    • chore(inventory): the park count, the compliance list, and the version
    • test(outage): the mode that proves a timeout is enforced had never run once
    • feat(enum): PLC4X gets the name the console has been persisting all along
    • fix(connector): the timeout that bounded only the handshake - written, measured, and PARKED
    • refactor(schedule): one Quartz-to-Spring dialect, written once and called by nothing yet
    • refactor(monitoring): the waits move to properties, and the binding is parked in the same breath
    • fix(monitoring): the record a failed run leaves, in every store that writes it
    • fix(routing): three route shapes that read as one thing and built another
  • mip-frontend-server
    • Merge pull request #675 from mdpint/fix/monitoring-silent-gaps
    • fix(credentials): a Start node's Azure or AWS credential is protected from deletion again
  • mip-frontend-web
    • Merge pull request #228 from mdpint/fix/monitoring-silent-gaps
    • chore(version): the version line and the feature register
    • test(journey): the record a failed run leaves, and two ways this suite could not see it
    • test(journey): the start-connector list is bound to its enum instead of a fourth copy
    • test(journey): one resolver for the ports a worktree moves, and every spec through it
    • fix(tables): a debounced search fired a fetch built before the sort, and the late page won
    • refactor(log-levels): one dictionary for the tokens two selects have to agree on
    • fix(system-health): the Component Health table was a debug dump wearing the page's name
  • mip-health-check
    • Merge pull request #77 from mdpint/fix/monitoring-silent-gaps
    • fix(monitoring): a store this deployment does not run is not a component in a fault state
    • Merge pull request #78 from mdpint/feat/external-api-overall-reason
    • feat(pods): reap stale dbo.pod_names rows no backend pod answers for
    • feat(external-api): overall.reason + overall.issues[] say where the problem is

1.18.1 — 2026-09-10

  • mip-backend-server
    • (changes before this baseline are covered by earlier release notes)
  • mip-frontend-server
    • (changes before this baseline are covered by earlier release notes)
  • mip-frontend-web
    • (changes before this baseline are covered by earlier release notes)
  • mip-health-check
    • (changes before this baseline are covered by earlier release notes)
  • mip-ai-engine
    • (changes before this baseline are covered by earlier release notes)

1.18.11 — 2026-09-08

  • mip-backend-server
    • Merge pull request #584 from mdpint/fix/node-payload-visibility
    • test(monitoring): the promotion guard was pinned to two properties the refactor removed
    • docs(routes): the promotion branch's comment claimed a constraint that does not exist
    • fix(monitoring): three writes that never ran, and the branch that kept the whole context from starting
    • docs(features): the No Payload row taught a re-deploy that is not needed, and a behaviour that changed
    • fix(no-payload): promote the main row's input on the Elasticsearch side too, not only on JDBC
    • feat(no-payload): carry the body like Only I/O and never store it, instead of storing then clearing
    • test(route-definition): move two source-scan anchors off the level literal they were pinned to
    • fix(node-log): the log reads the body without emptying it, and the level dispatch has a floor
  • mip-frontend-server
    • Merge pull request #671 from mdpint/fix/node-payload-visibility
    • Merge pull request #672 from mdpint/fix/schema-fixup-must-not-take-the-user-seed
    • fix(ddl): an apostrophe in a comment reads as an unterminated literal
    • fix(startup): the guarded fix-up is its own statement, and ddl.sql keeps the plain form
    • fix(startup): a schema fix-up that cannot be applied must not take the administrator with it
    • docs(features): the No Payload row taught a re-deploy that is not needed, and a behaviour that changed
    • refactor(monitoring): remove payload masking entirely, and read the level from a shared token
    • fix(monitoring): mask node payloads by the level the flow is set to, not by the shape of a row
  • mip-frontend-web
    • Merge pull request #224 from mdpint/fix/node-payload-visibility
    • fix(ci-fixture): restore the primary keys this dump was missing - all of them
    • docs(features): the No Payload row taught a re-deploy that is not needed, and a behaviour that changed
  • mip-health-check
    • Merge pull request #75 from mdpint/fix/node-payload-visibility
    • docs(features): the No Payload row taught a re-deploy that is not needed, and a behaviour that changed

1.18.10 — 2026-09-07

  • mip-backend-server
    • Merge pull request #583 from mdpint/fix/alert-mail-resilience-and-open-defects
    • fix(schema): the H2 schema is what the converter emits, not what a hand edits into it
    • fix(observability): a correlation that names nothing is removed from the MDC, not written as dashes
    • Revert "chore(alert-mail): park the last-known-good configuration cache and everything that proved it"
    • chore(alert-mail): park the last-known-good configuration cache and everything that proved it
    • test(alert-mail): the seed address property is app-prefixed and drops the redundant "test"
    • test(alert-mail): the seed address is a SENDER, and it is configured in the test config
    • test(alert-mail): derive undeliverable addresses on .invalid, not .local
    • test(alert-mail): seed addresses come from the environment, on a domain we control
    • chore(hygiene): the mail peer names a compose service that exists, and four stale records agree with the code
    • test(alert-mail): rewrite the outdated skip instead of leaving it switched off
    • test(alert-mail): the ordinary day - CRUD against a healthy database, with the cache in place
    • feat(correlation): the flow reference names the connector step it was written under
    • test(retention): the registry is now a guard, in all three repositories
    • test(retention): one contract now covers all seven statistics sweeps, and the registry admits the Postgres half
    • fix(retention): an attachment now leaves with the run it belongs to
    • feat(messages): the two inbound no-auth refusals now emit the codes they declared
    • feat(outage-retention): component_outages gets the local_date every other monitoring table has
    • fix(schema): the procedure that empties component_outages was in none of the frozen dumps
    • fix(alert-mail): the outage kept the configuration and dropped the identity
  • mip-frontend-server
    • Merge pull request #670 from mdpint/fix/alert-mail-resilience-and-open-defects
    • feat(inbound-auth): the designer asks the SERVER whether no-auth is offered, not its own env
    • refactor(monitoring): ComponentOutage belongs with the monitoring entities, not other
    • fix(ai-monitoring): key the round-trip id on identity, and stop the composite dropping status-less failures
    • feat(sync): delete a window without syncing it, and stop AI grouping on errorType
    • feat(correlation): the flow reference names the connector step it was written under
    • test(retention): the registry is now a guard, in all three repositories
    • test(retention): one contract now covers all seven statistics sweeps, and the registry admits the Postgres half
    • fix(retention): an attachment now leaves with the run it belongs to
    • feat(outage-retention): component_outages gets the local_date every other monitoring table has
    • fix(schema): the procedure that empties component_outages was in none of the frozen dumps
    • fix(auth): the password-reset link pointed at the wrong service, on a literal port
    • refactor(endpoints): both internal proxies read backend's Spring port from the catalog
    • fix(mirror): re-sync the connector vocabulary frontend-server reads from
    • docs(features): re-sync docs/features.md with the canonical registry
  • mip-frontend-web
    • Merge pull request #223 from mdpint/fix/alert-mail-resilience-and-open-defects
    • test(e2e): the third StartSyncDialog call site, a portless REST base, and a racy confirm click
    • test(e2e): compose the Keycloak issuer from base + realm, the way the product composes it
    • test(e2e): let the navigation and action timeouts be raised for a vite-dev lane
    • feat(inbound-auth): the designer asks the SERVER whether no-auth is offered, not its own env
    • fix(sync-jobs): Direction stays editable in discard-only mode - it names the store that loses data
    • fix(journey): read Message from the column it is now in, not from the last one
    • test(e2e): stop pinning MIP addresses to the id=0 instance, and name the checkbox the assertion means
    • test(sync-migration): let the journey seed its own attempt history instead of trusting the database
    • feat(sync-jobs): a delete-only mode, an outage attempt history, and a chip that reads the outcome
    • feat(correlation): the flow reference names the connector step it was written under
    • feat(outage-retention): component_outages gets the local_date every other monitoring table has
    • fix(schema): the procedure that empties component_outages was in none of the frozen dumps
    • test(inbound-auth): drive the flag that decides whether NONE is offered
    • fix(test): declare js-yaml, which a test imported and no package.json named
    • docs(features): re-sync docs/features.md with the canonical registry
    • feat(inbound-auth): offer unauthenticated inbound only where it is deliberately enabled
    • test(alerts): re-enable the sort case, and make its ascending half mean something
    • feat(system-logs): lead with the correlation and the message, and let the message open
  • mip-health-check
    • Merge pull request #74 from mdpint/fix/alert-mail-resilience-and-open-defects
    • test(alert-mail): the seed address property is app-prefixed and drops the redundant "test"
    • test(alert-mail): the seed address is a SENDER, and it is configured in the test config
    • test(alert-mail): .invalid instead of .local, matching the backend twin
    • test(alert-mail): the same address contract as the backend twin
    • fix(outage-history): make the save-only-on-change guard reachable, and refresh by when the LINK was made
    • feat(alerts): read the mail server from the console, and record what was tried against an outage
    • feat(correlation): the flow reference names the connector step it was written under
    • test(retention): the registry is now a guard, in all three repositories
    • test(retention): one contract now covers all seven statistics sweeps, and the registry admits the Postgres half
    • feat(outage-retention): component_outages gets the local_date every other monitoring table has
    • fix(tests): the two new test classes failed the documentation gate
    • test(outage-ageing): run the sweep against a real database instead of verifying the call
    • refactor(endpoints): one owner for frontend-server's address, with the catalog behind it
    • refactor(probe): the frontend liveness probe asks the endpoint catalog for the address
    • docs(features): re-sync docs/features.md with the canonical registry
    • fix(alerts): the thresholds survive the outage too, not just the recipients

1.18.9 — 2026-09-04

  • mip-backend-server
    • Merge pull request #582 from mdpint/feature/delete-log-audit-and-outage-history
    • feat(delete-logs-job): make the nightly deletion record what it actually did
  • mip-frontend-server
    • Merge pull request #669 from mdpint/feature/delete-log-audit-and-outage-history
    • feat(delete-logs-job): make automatic failback run, finish the row a deletion leaves behind, and create the columns health-check reads
  • mip-frontend-web
    • Merge pull request #222 from mdpint/feature/delete-log-audit-and-outage-history
    • feat(outage-history): route the admin from a store outage to the sync that repairs it
  • mip-health-check
    • Merge pull request #73 from mdpint/feature/delete-log-audit-and-outage-history
    • feat(outage-history): record what health-check deletes, when each store was unavailable, and stop an enrichment call from silencing the cluster alarms

1.18.8 — 2026-09-04

  • mip-backend-server
    • Merge pull request #578 from mdpint/feature/observability-and-connector-logs
    • feat(connector-log): one code per STEP, so a shared helper stops speaking for many
    • feat(connector-log): give every step site its own code, not one connector in ten
    • fix(logging): take the poll off INFO, and make the lines that stay findable
    • fix(connector-log): pay the five debts a new step type carries
    • feat(connector-log): give a poll a readable account, and every step a code of its own
  • mip-frontend-server
    • Merge pull request #668 from mdpint/feature/observability-and-connector-logs
    • fix(schema): give the test's Postgres the column the entity now declares
    • feat(connector-log): serve the step code, so a row can say WHICH step it was
  • mip-frontend-web
    • Merge pull request #218 from mdpint/feature/observability-and-connector-logs
    • test(e2e): skip the Alerts descending-sort case, with the reason on the line
    • refactor(e2e): one host constant per file, not two
    • fix(e2e): stop three constants from being defined in terms of themselves
    • fix(e2e): read the API host, never write it in
    • fix(connector-log): two columns shared one id, so Step Code rendered '---'
    • test(journey): drive the poll bracket, and prove the bracket has no direction
    • test(journey): assert the columns this feature changed, and stop reading them by position
    • feat(logs): show the step code, and put the System Logs columns in the line's own order

1.18.7 — 2026-09-04

  • mip-backend-server
    • Merge pull request #566 from mdpint/feature/rfc-destination-credential
    • Merge pull request #577 from mdpint/feature/sftp-undeploy-drain
    • feat(oftp2): NERP support, and the error path that carries a partner's reason to Monitoring (#567)
    • Merge remote-tracking branch 'origin/dev' into feature/sftp-undeploy-drain
    • fix(xi): error altitude - immediate ERROR for flow failures, loss-proof monitoring writes (#579)
    • refactor(sftp): drop the informational per-file and per-round poll logs
    • feat(rfc-destination): log on to SAP with a pooled BASIC credential
    • Merge remote-tracking branch 'origin/dev' into feature/sftp-undeploy-drain
    • fix(jdbc): harden the idempotent c3p0 pool against closed connections
    • feat(sftp): bound the poll loop, commit files per iteration and add an undeploy strategy
  • mip-frontend-server
    • Merge pull request #656 from mdpint/feature/rfc-destination-credential
    • Merge pull request #666 from mdpint/feature/wsdl-element-form-default
    • feat(chatbot): /chat/ack BFF for the typewriter pre-summary
    • Merge pull request #667 from mdpint/feature/sftp-undeploy-drain
    • feat(ai-engine): surface the OpenRouter key's remaining credit in the config tab
    • feat(rfc-destination): reference a pooled BASIC credential instead of an inline logon
    • Merge pull request #665 from mdpint/feat/chatbot-ai-engine-route
    • Merge remote-tracking branch 'origin/dev' into feat/chatbot-ai-engine-route
    • feat(sftp): carry the poll cap and the undeploy strategy through the flow model
    • fix(ai-engine): use EntityManager not JdbcTemplate (no such bean in fe-server)
    • feat(ai-engine): BFF for the Endpoints "AI Engine" config tab
    • feat(chatbot): flag-gated cutover of AI Flow to mip-ai-engine (F2-1)
    • fix(wsdl): declare elementFormDefault on served WSDL schemas that omit it
  • mip-frontend-web
    • Merge pull request #205 from mdpint/feature/rfc-destination-credential
    • Merge pull request #221 from mdpint/feat/system-logs-umbrella-tab
    • feat(rfc-destination): make the pooled credential the only logon the console offers
    • feat(operations): fold System Log Settings into a System Logs umbrella tab
    • ci: sync test/pnpm-lock.yaml with test/package.json (add react-router-dom)
    • feat(chatbot): type a fast pre-summary while the real generation runs
    • Merge pull request #217 from mdpint/feature/sftp-poll-limit-and-undeploy-behaviour
    • feat(ai-connections): show the OpenRouter key's remaining credit on the AI Engine tab
    • Merge pull request #219 from mdpint/feat/operations-tab-reorg
    • Merge pull request #220 from mdpint/fix/xi-wsdl-stale-selections
    • test(e2e): align Operations smoke specs with the umbrella-tab layout
    • Merge pull request #215 from mdpint/feat/ai-engine-config-tab
    • feat(operations): AI Connections card — MCP Servers + AI Engine tabs
    • fix(xi): revalidate the WSDL-derived interface pair when the resource changes
    • Merge remote-tracking branch 'origin/dev' into feat/ai-engine-config-tab
    • Merge remote-tracking branch 'origin/dev' into feat/operations-tab-reorg
    • feat(sftp): expose Max Files Per Poll and Undeploy Behaviour on the SFTP node
    • fix(ai-engine): ApiUrls is a default export, not named
    • feat(endpoints): AI Engine config tab — OpenRouter key + model selection
    • feat(operations): fold Alert Configurations and DB Analysis & Backup into umbrella tabs
  • mip-health-check
    • Merge pull request #69 from mdpint/feature/rfc-destination-credential
    • docs(features): re-sync the feature registry mirror with the canonical
  • mip-ai-engine
    • (changes before this baseline are covered by earlier release notes)

1.18.6 — 2026-09-03

  • mip-frontend-web
    • Merge pull request #214 from mdpint/fix/designer-start-connector-copy-block
    • Merge pull request #216 from mdpint/fix/vite-feature-flag-build-override
    • fix(designer): keep the flow's single Start out of the clipboard
    • Merge remote-tracking branch 'origin/dev' into fix/vite-feature-flag-build-override
    • fix(docker): stop the feature-flag ARG/ENV pair from overriding .env

1.18.5 — 2026-09-03

  • mip-frontend-web
    • test(e2e): deleting a service user who reset their password, and two suite fixes (#213)

1.18.1 — 2026-09-03

  • mip-backend-server
    • Merge pull request #575 from mdpint/feature/observability-and-connector-logs
    • fix(connector): route every self-starting flow's failures, and bound OFTP2 on silence
    • feat(observability): per-connector step traces, tapped, gated and named by content
    • feat(xi): per-flow software component for uncataloged ESR facade objects (#574)
    • fix(xi): receiver interfaces in the ESR facade and EOIO PROCESSING restart recovery (#573)
    • Merge pull request #571 from mdpint/feature/as2-inbound-signature-byte-fidelity
    • fix(x400): decode multi-bodypart IPMs and route the real payload part (#572)
    • fix(as2): preserve inbound EDI bytes so partner signatures verify
    • Merge pull request #569 from mdpint/feature/observability-no-connector-prod
    • feat(observability): the shared mechanism, without connector log, error type or system log
    • refactor(enums): rename the constant holders to what they actually hold
    • test(alert-mail): e2e coverage for the redesign, plus the defects it surfaced (#568)
    • ci: fix infinite ledger pagination loop that killed the version job
  • mip-frontend-server
    • Merge pull request #663 from mdpint/feature/observability-and-connector-logs
    • fix(auth): delete users who reset their password, plus three defects found covering it (#664)
    • feat(connector-log): read the connector trace, filter it, and let the interface speak sides
    • Merge pull request #662 from mdpint/feat/xi-esr-custom-swc
    • Merge pull request #660 from mdpint/fix/alert-schema-column-defaults
    • feat(xi): xiSoftwareComponent pass-through on XI start and XI Proxy states
    • fix(alerts): carry not-null column defaults in columnDefinition
    • Merge pull request #657 from mdpint/feature/observability-no-connector-prod
    • feat(observability): the shared mechanism, without connector log, error type or system log
    • fix(alerts): validate what alert mail depends on, and seed both links (#658)
    • ci: fix infinite ledger pagination loop that killed the version job
  • mip-frontend-web
    • Merge pull request #212 from mdpint/feature/observability-and-connector-logs
    • feat(oftp2): expose the read-timeout field, and label it for the activity log
    • feat(connector-log): the Connector Logs drawer, one payload strip for both screens
    • Merge pull request #211 from mdpint/feat/xi-esr-custom-swc
    • feat(xi): Software Component input on the XI start and XI Proxy panels
    • test(e2e): fix the two specs that have kept dev red since 55e61352 (#210)
    • ci(e2e): print diagnostics to the job log instead of uploading an artifact (#209)
    • test(alerts): e2e for the redesign, chip recipients, and CI that can run them (#207)
    • Merge pull request #206 from mdpint/feature/observability-no-connector-prod
    • feat(observability): the shared mechanism, without connector log, error type or system log
    • ci: fix infinite ledger pagination loop that killed the version job
  • mip-health-check
    • Merge pull request #72 from mdpint/feature/observability-and-connector-logs
    • feat(observability): probe connector_log_details, and pin the shared wire contract
    • Merge pull request #70 from mdpint/feature/observability-no-connector-prod
    • feat(observability): the shared mechanism, without connector log, error type or system log
    • ci: fix infinite ledger pagination loop that killed the version job