Toutes les versions depuis 34.5.0
34.5.0
- feat(checkout): :sparkles: guard checkout against charging more than quoted
- fix(open-api): :white_check_mark: publish Media in the gRPC OpenAPI test so the 64-bit assertion runs
34.5.1
- refactor(analytics): :truck: move rollup documents out of the api layer (#708)
35.0.0
- chore: :fire: removed currences MCP tool
- chore: :recycle: updated Siteminder password in prod
- chore: :wrench: added booking sync entried for missing bookings
- chore: :wrench: replaced with toList()
- chore: :zap: removed HOTEL_GURU from HotelCodeContext enum
- chore: :zap: removed HOTEL_LINK_SOLUTIONS from HotelCodeContext enum
- chore(booking-sync): record the #733 async-wedge bookingSyncEntry recovery scripts (#796)
- chore(booking): add repair script for misclassified fully-refunded bookings (#785)
- chore(booking): add the read-only refund triage reports (#821)
- chore(deps): :arrow_up: bump stripe.version to 33.3.0
- chore(partner-app): enable DEBUG gRPC logging in the local dev profile (#797)
- docs: :globe_with_meridians: updated translations
- docs: :memo: PRD — split the Inventory sales-channel gate from its search projection
- docs: :memo: updated PRD for improving fetching rates
- docs: answer PRD Q10 — Option D needs a channel cache first, and should not go first (#744)
- docs: answer PRD step 7.3 — the index reshaping, designed and measured (#748)
- docs: answer PRD step C — the gate query, designed and measured (#747)
- docs: record the deployed hostnames, and how to probe them without fooling yourself (#768)
- docs: record the pre-D0 pricing baselines for prod and staging (#752)
- docs: split the OpenAPI Bamboo artifact by the stage that actually produces it (#765)
- feat(booking): deprecate the Travel Agent booking REST endpoints, and make partner-app able to start (#736)
- feat(inventory): read rate modifiers from the cached sales channel (#745)
- feat(mail): reliable email send with persisted-obligation retry outbox (#808)
- feat(mcp): publish the 509-tool MCP surface as 16 job-shaped toolset endpoints (#775)
- feat(openapi): disable the SpringDoc runtime endpoints in inventory-app and integrations-app (#767)
- feat(openapi): generate integrations-app’s API reference at build time (#716)
- feat(openapi): generate inventory-app’s ten API reference documents at build time (#717)
- feat(partner): :sparkles: add the Inventory gRPC surface, prices-only (#712)
- feat(partner): :sparkles: add the Search gRPC surface, move the billable account to metadata, and retire deprecated ScoreSort aliases (#710)
- feat(partner): :sparkles: conditional content fetch via cache_token and NOT_MODIFIED (#728)
- feat(partner): :sparkles: enable gRPC server reflection on local and staging (#726)
- feat(partner): :sparkles: implement the Travel Agent Booking gRPC service (2/3)
- feat(partner): :sparkles: price deterministically — remove IP and geo from the Partner pricing boundary (#753)
- feat(partner): :sparkles: publish the Travel Agent Booking gRPC contract (1/3)
- feat(partner): add account discovery to the gRPC partner API (#783)
- feat(partner): collapse the rate-calendar cache key to seven bounded components (#754)
- feat(partner): tune the gRPC transport, and prove the tuning actually applies (#757)
- feat(pricing-view): :sparkles: serve /inventory, /inventory/list and /inventory/period from the read model (#770)
- feat(reference): :sparkles: deprecate the reference-data listing endpoints (sunset 2026-10-01)
- feat(scripts): capture the pre-D0 pricing baseline before the evidence is gone (#751)
- feat(subscription): add admin-scoped PAYG subscription and usage endpoints
- feat(webhook): outbox dispatcher, signed curated payloads and generated openapi webhooks reference (#786)
- fix(async): :bug: bound and expose the shared @Async pool, the partner fan-out, and outbound HTTP
- fix(booking): bound the whole-PaymentIntent refund guard to actual intent siblings (#809)
- fix(booking): cancel booking on any successful refund, not only full ones (#805)
- fix(booking): derive the refund axis from the cumulative ledger, not the last refund (#823)
- fix(booking): honour the cancellation policy on hotel cancellations (#810)
- fix(booking): refund the exact captured amount on full cancellations (#784)
- fix(booking): split the refund axis out of bookingStatus (#811)
- fix(build): purge jar-less build-cache entries and the remote cache to stop empty-jar installs (#787)
- fix(cancellation-policy): :bug: rename NINENTY_PERCENT to NINETY_PERCENT (#806)
- fix(ci): :bug: retry transient registry errors when pushing images
- fix(computed-property): stop showHotel/images/videos/recognition from partitioning the inventory cache (#794)
- fix(customization): itinerary advance-days ignored the visitor’s timezone (#177) (#801)
- fix(IAB-1329): :bug: declare checked MailerSendException on shouldHandleNon2xxResponseCode (#825)
- fix(inventory): :bug: fan inventory edits out atomically instead of per-document (#741)
- fix(inventory): exclude DRAFT items from public reads, fix dead descriptions validation (#798)
- fix(inventory): make address, location and multimedias optional so third parties can create inventory (#779)
- fix(inventory): media pruning crash, hero images, commission rounding, and OpenAPI operation names (#790)
- fix(itinerary): :bug: accept the pre-collapse
itemspayload again, deprecated (#737) - fix(mcp): scope channel-manager to integrations, move room types to facilities (#776)
- fix(mcp): thread the visitor ZoneId through the shortened-url MCP tool (#802)
- fix(partner-grpc): round Search commission to 2 decimals (#793)
- fix(partner-grpc): use snake_case in Accounts/DestinationLookup error messages (#795)
- fix(partner): :bug: advance the property content version when content changes (#725)
- fix(partner): :bug: bill partner search on hotels returned, not the one-unit floor (#709)
- fix(partner): :bug: register the repositories the Content API made partner-app need (#727)
- fix(partner): permit grpc.health.v1.Health/Check so the Cloud Run probe can reach it (#769)
- fix(partner): take refund out of the booking status enum (#824)
- fix(payment): stop shipping MockSpringBootApplication into deployed images (#764)
- fix(property): aggregate properties by the status they actually have (#777)
- fix(property): let the welcome-text editor remove a language, and require English (#780)
- fix(special-rate): :bug: revive the timezone qualifier and wire up the geo-location one (#738)
- perf(scripts): :zap: parallelize media migration and make interrupted rows resumable (#713)
- perf(scripts): :zap: parallelize orphan quarantine (#722)
- refactor: :recycle: UserLightweight now extends AbstractDto
- refactor(computed): drop the dead geo parameters from the rate-calendar chain (#756)
- refactor(inventory): consolidate the inventory write sites behind one seam (PRD step B) (#746)
- refactor(inventory): remove the two unique indexes that enforce nothing (#749)
- refactor(partner): :recycle: adopt a Partner protobuf naming convention and enforce it (#711)
- refactor(pricing-view): :recycle: extract the public inventory-list fan-out and prime the read model (#771)
- test(booking): pin roomStay date-range boundary behavior (#806) (#804)
- test(inventory): cover SupplierAggregatePage’s empty-$count handling (#766)
- test(openapi): close three holes in the spec-generation guards (#718)
- test(property-aggregate): cover the listener failure paths and un-hide them from the gate (#763)
35.1.0
- fix: :bug: guard commit-msg hook ANSI colors behind TTY check
- fix(exchange-rate): :bug: add jakarta.servlet-api dep to exchange-rate-mcp (#828)
- refactor: invert @Document entities out of published -api modules (91/108) (#829)
35.1.1
Housekeeping release — no user-facing changes.
35.2.0
- fix(inventory-app): :bug: update ManagedTypeScannerTest counts after @Document eviction (#831)
- fix(release): :bug: guard release-notes pipeline against an empty commit range (#830)
35.2.1
- fix(cache): :bug: don’t let a slow L2 Redis at boot abort partner-app startup
- fix(ci): :bug: retry Go net/http client timeouts in pushImages.bash
35.2.2
Housekeeping release — no user-facing changes.
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
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.2
Housekeeping release — no user-facing changes.
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.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.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
Sunsetheaders (#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
itemsusing 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.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.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.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)
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)
