콘텐츠로 이동

Platform

36.0.0 Latest

  • chore(payment): :wrench: declare fee-model per environment so each can be cut over separately (#1062)
  • chore(payment): :wrench: flip fee-model to Stripe pass-through in local + staging
  • feat(#1004): :sparkles: add BookingFeeModel flag, stamp it on bookings, gate the TripPay waterfall step (#1026)
  • feat(#1005): :sparkles: acquiring-fee state, multi-room apportioning and capture event (#1034)
  • feat(#1007): :sparkles: debit Stripe acquiring and refund fees to the hotel ledger (#1039)
  • feat(#1008): :sparkles: expose feeModel/acquiringFee/refundFee on BookingLightweight, LedgerBalanceResponse.withdrawable, property email Stripe fee rows
  • feat(pricing-view): :sparkles: add validated SHADOW gate reader (#1000)
  • feat(WINK-CLI): :sparkles: add OAuth2 device authorization grant (RFC 8628) to SSO (#1013)
  • fix: :bug: align isempty semantics across StateMongoQueryHelper overloads (#1063)
  • fix(#1030): :bug: route the wink-cli client seeding through a published service (#1055)
  • fix(#876): :bug: charge.updated webhook + acquiring-fee reconciliation sweep (#1036)
  • fix(channel-manager-d-edge): :bug: lazily initialize RoomElement collections + jacoco gate on 6 modules (#1044)
  • fix(channel-manager-exely): :bug: restub ExelyServiceIntegrationTest for #1021’s findRatePlansForRoomType (#1050)
  • fix(channel-manager-rate-tiger): :bug: correct booking-sync NPE and validation bugs found while adding jacoco coverage on 6 modules
  • fix(channel-manager,places,shortened-url,property): :bug: correct 4 production bugs found while adding jacoco coverage (#1037)
  • fix(channel-manager,special-rate,computed): :bug: correct booking-sync success-flag, card-payment lookup, and warning-NPE bugs found while adding jacoco coverage
  • fix(channel-manager): :bug: correct swapped rate modifiers and travelclick NPE guard (#1033)
  • fix(checkout,channel-manager,computed,web-shared): :bug: correct pricing-multiplier, booking-sync success-flag, duplicate-key, and equals bugs found while adding jacoco coverage (#1046)
  • fix(inventory-app): change pending stripe fee copy to “pending” (#1067)
  • fix(lookup): :bug: build the local-name lookup entry from localName, not name (#1035)
  • fix(mcp): :bug: aggregate tool specifications for grouped endpoints (#1054)
  • fix(mcp): :bug: include workflow prerequisites in grouped toolsets (#1066)
  • fix(mcp): :bug: preserve authentication in grouped tool calls (#1070)
  • fix(media,winklinks): :bug: correct secure-flag and inverted oEmbed-valid bugs found while adding jacoco coverage (#1045)
  • fix(payment,managed-social,computed): :bug: correct wrong-field display, date-dependent validation, and page/size default bugs found while adding jacoco coverage (#1041)
  • fix(pricing-view): make ON-mode fallback coverage-aware, not just empty-aware (#1072)
  • fix(report): add refundState and lifecycleStatus columns to the booking CSV export (#1069)
  • fix(stripe-api,computed-api): :bug: correct status-transitions, shipping-address NPE, and cheapest-item fallback bugs found while adding jacoco coverage on 3 modules
  • fix(web-shared): :bug: drop printAllRequestHeaders from WARN to DEBUG (#1002)
  • perf(channel-manager): batch per-row master-rate lookups across all four ARI handlers (#1017)
  • refactor(channel-manager): :recycle: address code review on the ARI batching (#1021)
  • refactor(sso): :recycle: route DCR client registration through RegisteredClientService (#1057)
  • test(jacoco): :white_check_mark: wave0 enable coverage gate on 31 modules already at 80%+ (#998)
  • test(jacoco): :white_check_mark: wave0-step3 enable coverage gate on 6 zero-instruction modules (#999)
  • test(jacoco): enable coverage gate on ai-property (#1060)
  • test(jacoco): wave1 quick-wins — enable coverage gate on 6 modules (#1001)
  • test(jacoco): wave1 step2 — enable coverage gate on 6 more modules (#1003)
  • test(jacoco): wave1 step3 — enable coverage gate on 6 more modules (#1012)
  • test(jacoco): wave1 step4 — enable coverage gate on 6 more modules + fix jacoco-check agents bug (#1014)
  • test(jacoco): wave1 step5 — enable coverage gate on 6 more modules (#1015)
  • test(jacoco): wave1 step6 — enable coverage gate on 6 more modules (#1020)
  • test(jacoco): wave1 step7 — enable coverage gate on final 4 named quick-wins modules (#1022)
  • test(jacoco): wave2 step1 — enable coverage gate on 6 more modules (#1025)
  • test(jacoco): wave2 step2 — enable coverage gate on 6 more modules (#1027)
  • test(jacoco): wave2 step3 — enable coverage gate on 6 more modules (#1029)
  • test(jacoco): wave2 step4 — enable coverage gate on 6 more modules (#1031)
  • test(jacoco): wave3 final step — enable coverage gate on datasource-mongodb-utils (#1061)
  • test(jacoco): wave3 step1 — enable coverage gate on 6 more modules (#1051)
  • test(jacoco): wave3 step2 — enable coverage gate on 6 more modules (#1052)
  • test(jacoco): wave3 step3 — enable coverage gate on 3 more modules (#1053)
  • test(jacoco): wave3 step4 — enable coverage gate on 2 more modules (#1056)

35.7.1

  • fix(927): :bug: re-record payment OpenAPI golden for postingGroupId
  • fix(996): :bug: fix ClassNotFoundException in open-api-grpc exec:java on cache restore (#997)
  • refactor: :recycle: remove TRAVELIKO and RESAVENUE from HotelCodeContext (#994)

35.7.0

  • feat(927): :sparkles: expose posting-group and booking money-trail lookups (#972)
  • fix(build-cache): :bug: force buf-breaking-check to run on cache hits (#976)
  • fix(build-cache): :bug: force write-partner-openapi to run on cache hits (#974)
  • fix(green-index): :bug: preserve lastUpdate in prepareAnswerForDisplay (#971)
  • fix(property-aggregate): :bug: add backfill script for drifted images/videos
  • fix(property-aggregate): :bug: narrow media backfill script to images only

35.6.0

  • feat(#938): :sparkles: backfill the default policy onto properties that declared none (#960)
  • feat(#957): :sparkles: enforce urlName uniqueness with a partial unique index (#961)
  • feat(#957): :sparkles: rename the duplicate side of each urlName collision (#969)
  • feat(accounting): admin ledger query API and account endpoints (#925, #926)
  • feat(cache): :sparkles: flip cache.l2.batched-broadcast to true now the two-step gate is satisfied (#965)
  • feat(media-migration): :sparkles: add 34_ to delete FAILED orphan placeholders 33_ structurally cannot reach (#966)
  • feat(pricing-view): :sparkles: serve the single-pair surfaces from the read model (#772)
  • feat(property): migrate property.socials to managingEntity.onlinePresence
  • feat(sentry): :sparkles: capture WARN as Sentry events, after removing the two sources that made it unaffordable (#964)
  • feat(sentry): :sparkles: file new Sentry groups as GitHub issues daily (#968)
  • fix(#938): :bug: guard PropertyPolicy dereference on the public inventory path (#954)
  • fix(#948): :bug: marshal SOAP response types that lack @XmlRootElement (#963)
  • fix(#955): wire up propertyAggregate reconciliation + drift repair scripts
  • fix(geo-name): :bug: make the City and GeoName urlName indexes actually unique (#970)
  • fix(inventory-app): restore inventory-app test compilation (broken on develop)
  • fix(media-migration): :bug: a root-id 404 in 34_ must not imply the asset is gone (#967)

35.5.0

  • feat: implement Machine Payments Protocol (MPP) — Stripe SPT + Stripe-processed tempo USDC (#290)
  • feat(accounting): :sparkles: count ledger-time FX quotes so a silent gap is visible (#924)
  • feat(accounting): :sparkles: record the FX quote at ledger time on hotel entries (#914)
  • feat(bamboo): :sparkles: add Bamboo Specs export for WS-SP and WP-MJ (Platform)
  • feat(external-event): :sparkles: typed audit recorder with deferred serialization (#849) (#903)
  • fix(accounting): :bug: reverse refunds TO a target so a second settlement cannot double-reverse (#919)
  • fix(api): :bug: correct the day-of-week on the taxonomy and booking Sunset headers (#918)
  • fix(booking): :bug: add the #819 refund mislabelling repair script (#906)
  • fix(booking): :bug: pay the net on partially refunded bookings instead of dropping them (#913)
  • fix(booking): :bug: reverse the beneficiary ledger for Stripe-side refunds (#910)
  • fix(itinerary): :bug: accept a multi-entry items using the first entry, and tell the caller it is retiring (#897)
  • fix(itinerary): :bug: answer an unreadable request body with an actionable 400, not a 500 (#897)
  • fix(logging): :bug: log the channel-manager sync path in the app that actually runs it
  • fix(partner): write proto release notes for integrators, not the commit log (#908)
  • fix(scheduler): :bug: register the booking funds-available job and the guards that make it safe (#911)
  • perf(channel-manager): :zap: cache JAXBContext, gate CXF logging, batch cache eviction (#849) (#902)
  • test(channel-manager): :white_check_mark: cover JAXBException branch in TravelclickParserServiceImpl (#907)
  • test(google-hotel-web): :white_check_mark: cover recorder-failure and no-properties branches (#909)

35.4.0

  • chore(logging): :wrench: log the booking fan-out at INFO in prod (#845)
  • chore(mongo): :wrench: finish the HOTEL_GURU -> rate-provider-identifier rename (#841)
  • docs(inventory): :memo: track production $indexStats snapshots as drop-decision evidence (#836)
  • docs(partner): :memo: correct the gRPC startup-probe command
  • feat(sales-channel): :sparkles: drop the embedded rate-modifier copies (PRD Option D, step D1) (#750)
  • feat(security): :lock: expose /actuator/threaddump behind SCOPE_ADMIN on inventory-app (#850)
  • fix: restore CI after PR #829 entity inversion (context wiring + JaCoCo coverage) (#854)
  • fix(846): :bug: correct inverted occupancy check in RatePlanLightweight.isValidOccupancy(Integer) (#848)
  • fix(activity-stream): :bug: write the audit row inline instead of on the shared @Async pool (#844)
  • fix(architecture-tests,inventory-app): :bug: restore CI after plan-688131-JOB1-1377 test failures (#869)
  • fix(architecture-tests): exempt PaymentTransitionResult/RefundHandlingResult’s nested Status enums (#885)
  • fix(architecture-tests): exempt single-sign-on’s deliberate lead/managing-entity access (#886)
  • fix(campaigns-domain): :bug: restore CI after plan-688131-JOB1-1374 JaCoCo gap (#864)
  • fix(cancellation-policy): :bug: migrate NINENTY_PERCENT on every RatePlanRef embed site (#889)
  • fix(checkout,analytics,managing-entity): restore CI after PR #829 test gaps (#859)
  • fix(computed-property,booking): :bug: restore CI after plan-688131-JOB1-1371 test gaps (#862)
  • fix(inventory-app): :bug: restore CI after plan-688131-JOB1-1393 OpenAPI golden drift (#887)
  • fix(invite-domain): restore CI after plan-688131-JOB1-1381 JaCoCo gap (#874)
  • fix(managed-social,scheduler-domain): restore CI after plan-688131-JOB1-1379 test failures (#871)
  • fix(media-migration): :bug: repair dangling media refs, restore wrongly-quarantined assets, finish the root reorganisation (#800)
  • fix(notification-endpoint,message-template,winklinks): :bug: restore CI after PR #829/#834 test gaps (#861)
  • fix(notification,inventory): :bug: restore CI after plan-688131-JOB1-1373 test gaps (#863)
  • fix(partner-app): :bug: poll gRPC health every 60s instead of 5s (#898)
  • fix(partner-grpc): :bug: restore CI after plan-688131-JOB1-1376 test failures
  • fix(point-of-interest,notification-endpoint): :bug: restore CI after plan-688131-JOB1-1375 JaCoCo gap (#866)
  • fix(pricing-view): :bug: stop filtering pricing data on the pair enabled flag (#894)
  • fix(sales-channel,sellable-item): :bug: restore CI after PR #829/#750 gaps (#856)
  • fix(sentry): :bug: drop the traces sampler bean and halve sampling to 0.05 (#900)
  • fix(task-executor): :bug: isolate AI work and MVC dispatch from the shared @Async pool (#847)
  • fix(user): :bug: exclude UserReportDataSource from UserServiceIntegrationTest’s component scan (#853)
  • refactor(booking,channel-manager): retype ChannelManagerCommunicator to BookingLightweight (#880)
  • refactor(booking): extract BookingMapper ahead of the entity move (#883)
  • refactor(booking): move Booking.java out of booking-api (final entity, ArchUnit migration) (#884)
  • refactor(booking): narrow booking-api service interfaces off raw Booking (#882)
  • refactor(booking): narrow BookingConsumerService#findById to BookingLightweight (#881)
  • refactor(event-listener): :recycle: return void from every @EventListener (#843)
  • refactor(geo-name): move geo-name entities out of geo-name-api (#879)
  • refactor(inventory,computed): collapse InventoryAggregate/InventorySupplierAggregate onto their Lightweight siblings (#877)
  • refactor(inventory,property-aggregate): two-step-fetch InventoryAggregate hotel data (#873)
  • refactor(lead): move the GooglePlaceLead entity out of lead-api (94 of 108) (#870)
  • refactor(managing-entity): move the ManagingEntity entity out of managing-entity-api (93 of 108) (#867)
  • refactor(property-aggregate): move PropertyAggregate entity out of property-aggregate-api (#878)
  • refactor(sales-channel): :recycle: move the SalesChannel entity out of sales-channel-api (92 of 108) (#860)
  • test(api): restore JaCoCo coverage in 12 -api modules after the entity inversion (#829) (#842)

35.3.3

  • fix(booking): :bug: only adjust local availability for direct inventory (#840)
  • fix(metrics): :bug: read the allow-list from the main properties, not the shadowed test copy

35.3.2

Housekeeping release — no user-facing changes.

35.3.1

  • docs: :memo: buf and gh are provisioned on both Bamboo agents (#838)
  • fix(booking-sync): :bug: write the outbox row inline instead of on the shared @Async pool (#839)
  • fix(grpc-proto): :bug: make buf lint pass on the Partner proto release path (#837)

35.3.0

  • docs(analytics): :memo: raw-retention TTL script and rollup deploy runbook
  • feat(booking-sync): :sparkles: detect paid bookings whose sync entry was never written (#834)
  • fix(metrics): :bug: export the executor meters #733 added but never shipped (#833)
  • fix(pricing-view): :bug: stop concurrent rebuilds silently truncating a hotel’s view