Tovább a tartalomhoz

All versions since 31.5.2

31.5.2

  • refactor: :recycle: added quote cache to integrations-app

32.0.0

  • chore: disable automatic claude-code-review workflow (#517)
  • chore(mongo): single combined Initiative D migration (run-once) (#626)
  • chore(scripts): :wrench: shut down local redis in stopServices
  • docs: :memo: added some custom agents
  • docs: :memo: updated banner.txt
  • docs: :memo: updated claude
  • docs(webhook): add AsyncAPI 3.0 spec for the outbound webhook contract (Initiative C) (#617)
  • feat: add-on sub-resource endpoints for six inventory types (#635)
  • feat(api-usage): weighted hotel-day metering for the Partner API (#631)
  • feat(billing): pay-as-you-go platform billing via Metronome (#641)
  • feat(cache): optional L2 (Redis/Memorystore) tier behind L1 Caffeine (#633)
  • feat(computed): add refundableUntilDays to RoomTypeBestPriceForDateRange (#629)
  • feat(dto): :sparkles: add optimistic-locking version to AbstractDto and wire If-Match
  • feat(dto): add Lightweight DTOs for 7 more entities (batch 2) (#622)
  • feat(dto): add Lightweight DTOs for 8 entities lacking them (batch 1) (#621)
  • feat(inventory): add dedicated active-flag PATCH endpoint per hub
  • feat(inventory): draft-create + per-section PATCH hub endpoints for 7 inventory types (#627)
  • feat(lookup): Atlas Search autocomplete, remove lookup cache, fix public-endpoint ReDoS (#639)
  • feat(openapi): document Page responses as the pagination envelope
  • feat(payment): :sparkles: reconcile Stripe refunds whose settlement webhook never arrived (#638)
  • feat(rate-limit): per-user Redis token-bucket rate limiter for the Partner API (#634)
  • feat(rate): cache daily rates per RateKey with precise + prefix eviction (#630)
  • feat(webhook): add schemaVersion to the webhook delivery envelope (Initiative C foundation) (#613)
  • fix(api-usage-subscription): restore compile-scope cache-api/events-command-gateway deps (#607)
  • fix(booking): :bug: settle Stripe refunds that are created as pending (#637)
  • fix(cache): :bug: exclude Redis autoconfigs that break with two connection factories
  • fix(integrations-app): bundle netty-resolver-dns-native-macos for local reactor-netty
  • fix(mail): eliminate partner-app/integrations-app pdf boot crash; split booking/external-event mail listeners (#628)
  • fix(module-boundary): fix 2 remaining MasterRate leaks found by independent review
  • fix(module-boundary): fix remaining MasterRate test fixtures surfaced by full-reactor sweep
  • fix(module-boundary): fix remaining MasterRate test/consumer fixtures surfaced by full-reactor sweep
  • fix(module-boundary): fix unrelated geo-name compile-scope break, regenerate stale ArchUnit baseline
  • fix(mongo): add missing roomType/guestRoom/review identifier->id migration steps
  • fix(security): un-break MCP OAuth for browser clients — DCR proxy contamination, SSO discovery CORS, session-id exposure (#601)
  • fix(shared-api): :lock: enforce VariableCharge percent/fixedAmount are always non-negative
  • fix(test,master-rate): repair runtime test regressions from event-retype waves + a MasterRate NPE (#620)
  • refactor: :recycle: added a strict monetary amount deserializer everywhere
  • refactor: :recycle: fixing tests and some configs
  • refactor: :recycle: updated Exely daily rate amounts
  • refactor: :wrench: updated index name
  • refactor(architecture-tests): widen ModuleBoundaryTest from review+booking pilot to all of travel.wink (#549)
  • refactor(dto): migrate 4 read-projection Lightweights onto AbstractDto (Initiative A batch 1) (#603)
  • refactor(dto): migrate apex Lightweights onto AbstractDto (batch 3) (#605)
  • refactor(dto): migrate BookingLightweight, GooglePlaceLeadLightweight, ShortenedUrlLightweight onto AbstractDto (batch 2) (#604)
  • refactor(dto): migrate BookingSyncEntryLightweight onto AbstractDto (keep local version) (#608)
  • refactor(dto): migrate InventoryAggregate onto AbstractDto + fix escaped compile breaks (#606)
  • refactor(dto): migrate travel-inventory Lightweight hierarchy onto AbstractDto (BREAKING: identifier→id) (#609)
  • refactor(events,webhook): retype 6 cluster entities’ events to Lightweight — webhook now delivers the DTO (Initiative C) (#614)
  • refactor(events,webhook): retype Property + ManagingEntity events to Lightweight (Initiative C apex) (#616)
  • refactor(events,webhook): retype RatePlan/MasterRate/SalesChannel/SpecialRate events to Lightweight (Initiative C) (#615)
  • refactor(events,webhook): widen BookingLightweight + retype Booking events (Initiative C, final) (#619)
  • refactor(events): retype 12 non-webhook tail entities’ events to Lightweight (Initiative B tail) (#618)
  • refactor(events): retype 7 entities’ event payloads from raw entity to Lightweight (Initiative B wave 1) (#610)
  • refactor(events): retype Attraction + Place event payloads to Lightweight (Initiative B wave 2) (#611)
  • refactor(events): retype Inventory/SalesChannelRequest/Customization/User event payloads to Lightweight (Initiative B wave 3) (#612)
  • refactor(module-boundary): consumer-side repository rerouting — 12 modules gated off foreign repositories (#503)
  • refactor(module-boundary): evict Activity entity from Consumer service interfaces (#594)
  • refactor(module-boundary): evict AddOn entity, widening AddOnLightweight for write-path parity (#597)
  • refactor(module-boundary): evict Attraction entity from Consumer service interfaces (#595)
  • refactor(module-boundary): evict Booking entity from BookingConsumerService (#585)
  • refactor(module-boundary): evict BookingSyncEntry entity from Consumer/Publisher interfaces (#581)
  • refactor(module-boundary): evict CancellationPolicy entity from Consumer/Publisher interfaces (#583)
  • refactor(module-boundary): evict Customization entity from CustomizationConsumerService (#574)
  • refactor(module-boundary): evict DynamicList entity from DynamicListConsumerService (PRD Phase 3, entity #5) (#562)
  • refactor(module-boundary): evict GooglePlaceLead entity from Consumer/Publisher interfaces (#580)
  • refactor(module-boundary): evict Inventory entity from cross-domain interfaces (Phase 3) (#575)
  • refactor(module-boundary): evict InventoryMap entity from InventoryMapConsumerService (PRD Phase 3, entity #12) (#569)
  • refactor(module-boundary): evict Lookup entity from lookup-api (PRD Phase 3 pilot) (#559)
  • refactor(module-boundary): evict ManagedSocialPost entity from Consumer/Publisher interfaces (#584)
  • refactor(module-boundary): evict ManagingEntity from Consumer/Publisher interfaces (phase 1) (#578)
  • refactor(module-boundary): evict MeetingRoom entity from Consumer service interfaces (#593)
  • refactor(module-boundary): evict OrganizationView entity from organization-api (PRD Phase 3) (#560)
  • refactor(module-boundary): evict Perk entity from PerkConsumerService (#599)
  • refactor(module-boundary): evict Place entity from Consumer service interfaces (#596)
  • refactor(module-boundary): evict Place/Post/PostRendition entities from PlacesConsumerService (PRD Phase 3, entity #4) (#561)
  • refactor(module-boundary): evict Profile entity from ProfileConsumerService (PRD Phase 3, entity #13) (#570)
  • refactor(module-boundary): evict Property entity from Consumer/Publisher interfaces (Phase 3, final apex entity) (#579)
  • refactor(module-boundary): evict PropertyAggregate entity from Consumer/Publisher service interfaces (#588)
  • refactor(module-boundary): evict Rate entity from cross-domain interfaces (Phase 3) (#576)
  • refactor(module-boundary): evict RatePlan entity from RatePlanConsumerService (#573)
  • refactor(module-boundary): evict Restaurant entity from Consumer service interfaces (#591)
  • refactor(module-boundary): evict RoomType entity from Consumer service interfaces (#592)
  • refactor(module-boundary): evict SalesChannel entity from SalesChannelConsumerService (#572)
  • refactor(module-boundary): evict SellableInventoryUrl entity from SellableInventoryUrlConsumerService (PRD Phase 3, entity #11) (#568)
  • refactor(module-boundary): evict SellableItem entity from SellableItemConsumerService (PRD Phase 3, entity #10) (#567)
  • refactor(module-boundary): evict SellableList entity from SellableListConsumerService (PRD Phase 3, entity #8) (#565)
  • refactor(module-boundary): evict SellableRankedList entity from SellableRankedListConsumerService (PRD Phase 3, entity #7) (#564)
  • refactor(module-boundary): evict SellableSupplierUrl entity from SellableSupplierUrlConsumerService (PRD Phase 3, entity #9) (#566)
  • refactor(module-boundary): evict ShortenedUrl entity from ConsumableShortenedUrlService (#587)
  • refactor(module-boundary): evict ShortenedUrl entity from Publisher/Consumer service interfaces (#586)
  • refactor(module-boundary): evict Spa entity from Consumer service interfaces (#590)
  • refactor(module-boundary): evict SpecialRate entity from SpecialRateConsumerService (PRD Phase 3, entity #15) (#571)
  • refactor(module-boundary): evict SpecialRateBundle entity from SpecialRateBundleConsumerService (PRD Phase 3, entity #6) (#563)
  • refactor(module-boundary): evict StaticList/StaticListItem entities from cross-domain surfaces (#598)
  • refactor(module-boundary): exempt api-usage + cache as shared platform infra in ArchUnit (#554)
  • refactor(module-boundary): expand ManagingEntityConsumerService, gate 13 consumers off ManagingEntityRepository (#522)
  • refactor(module-boundary): expand MasterRateConsumerService, gate 34 consumers off MasterRateRepository (#521)
  • refactor(module-boundary): extract lean booking-consumer module, route notification-endpoint off booking repository (#508)
  • refactor(module-boundary): extract property-aggregate-datasource + consumer/publisher services, gate 9 consumers off PropertyAggregateRepository (#520)
  • refactor(module-boundary): extract property-datasource + consumer/publisher services, gate 24 consumers off PropertyRepository (#519)
  • refactor(module-boundary): extract shortened-url-datasource + consumer/publisher services, gate 6 consumers (#513)
  • refactor(module-boundary): flip dead/leeched cross-family compile-scope deps to runtime (Tier 5 hygiene sweep) (#558)
  • refactor(module-boundary): fold RoomTypeLightweight into AbstractCommonTravelInventoryLightweight hierarchy (#589)
  • refactor(module-boundary): fully gate computed-property-review off review repository via ReviewService (#511)
  • refactor(module-boundary): gate 8 inventory domains off TravelInventoryService via PropertyConsumerService (#542)
  • refactor(module-boundary): gate booking and checkout off ProfileRepository via ConsumerService (#536)
  • refactor(module-boundary): gate campaigns off PlacesPlaceRepository/PostRepository/PostRenditionsRepository via ConsumerService (#537)
  • refactor(module-boundary): gate cancellation-policy off CancellationPolicyRepository via CancellationPolicyConsumerService (#532)
  • refactor(module-boundary): gate channel-manager cluster off booking repository via consumer + new publisher service (#512)
  • refactor(module-boundary): gate channel-manager-internal off OrganizationViewRepository via ConsumerService (#535)
  • refactor(module-boundary): gate check-list off GreenIndexAnswerRepository via ConsumerService (#534)
  • refactor(module-boundary): gate computed-curated/computed-grid off StaticListRepository via full boundary closure (#540)
  • refactor(module-boundary): gate customization off raw CustomizationRepository injection (#528)
  • refactor(module-boundary): gate inventory-content cluster (8 domains) off raw repository injection (#523)
  • refactor(module-boundary): gate lookup-web off CityRepository/GeoNameRepository via GeoNameService (#541)
  • refactor(module-boundary): gate master-rate off PerkRepository via PerkConsumerService (#533)
  • refactor(module-boundary): gate notification-endpoint off booking-sync repository via consumer + publisher services (#514)
  • refactor(module-boundary): gate rate-cluster off raw RateRepository injection (#525)
  • refactor(module-boundary): gate registration and inventory-app off GooglePlaceLeadRepository via Consumer/Publisher services (#539)
  • refactor(module-boundary): gate remaining InventoryRepository consumers off raw repository injection (#527)
  • refactor(module-boundary): gate remaining RatePlanRepository consumers off raw repository injection (#531)
  • refactor(module-boundary): gate sales-channel off raw SalesChannelRepository injection (#526)
  • refactor(module-boundary): gate sellable-cluster (8 domains) off raw repository injection (#524)
  • refactor(module-boundary): gate special-rate off raw SpecialRateRepository injection (#529)
  • refactor(module-boundary): gate special-rate-bundle off raw SpecialRateBundleRepository injection (#530)
  • refactor(module-boundary): introduce BookingConsumerService, route caldav off booking repository (#506)
  • refactor(module-boundary): narrow AnalyticsTrackingConsumerService off BookingTimeSeries (#582)
  • refactor(module-boundary): narrow MasterRateConsumerService/RatePublisherService to MasterRateLightweight
  • refactor(module-boundary): publish PropertyTranslationService/AddOnTranslationService into their -api modules (#550)
  • refactor(module-boundary): remove dead CityRepository cross-domain injection from property-domain (#538)
  • refactor(module-boundary): remove dead syndication repo injections from managed-social (#518)
  • refactor(module-boundary): retype channel-manager-rate-gain MasterRate consumers to MasterRateLightweight
  • refactor(module-boundary): retype Inventory.of(MasterRate) and InventoryEventListener’s consumer-service path
  • refactor(module-boundary): retype remaining channel-manager MasterRate consumers
  • refactor(module-boundary): retype remaining computed-rate-core fan-out MasterRate consumers
  • refactor(module-boundary): retype remaining MasterRate leaf consumers to MasterRateLightweight
  • refactor(module-boundary): route 16 cross-domain consumers off RateService onto RatePublisherService (#548)
  • refactor(module-boundary): route 4 cross-domain consumers off CustomizationService onto CustomizationConsumerService (#544)
  • refactor(module-boundary): route activity-stream off user repository onto UserService (#507)
  • refactor(module-boundary): route AddOnContentCreator off AddOnService onto AddOnConsumerService (#546)
  • refactor(module-boundary): route AffiliateController/LeaderboardController off LeaderboardService onto new Consumer/Publisher services (#547)
  • refactor(module-boundary): route booking off CheckoutService onto CheckoutConsumerService (#557)
  • refactor(module-boundary): route booking/checkout/winklinks off GoogleMapsService onto GoogleMapsConsumerService (#555)
  • refactor(module-boundary): route city lookups off CityRepository onto GeoNameService (#515)
  • refactor(module-boundary): route computed-property/managed-social off PropertyService onto PropertyConsumerService (#543)
  • refactor(module-boundary): route ConsumableShortenedUrlServiceImpl off OpenGraphImageGeneratorService onto OpenGraphImageConsumerService (#552)
  • refactor(module-boundary): route managed-social + sellable-inventory-url off customization repository (#505)
  • refactor(module-boundary): route managed-social off property-embeddings-domain via PropertyEmbeddingsConsumerService (#553)
  • refactor(module-boundary): route notification off message-template repository onto MessageTemplateService (#510)
  • refactor(module-boundary): route PartnerLookupServiceImpl off LookupService onto LookupConsumerService (#551)
  • refactor(module-boundary): route rate-check + google-hotel off master-rate repository (#504)
  • refactor(module-boundary): route sellable-inventory-url off inventory repository onto InventoryConsumerService (#509)
  • refactor(module-boundary): route StudioBookingAnalyticsController off BookingService onto BookingConsumerService (#545)
  • refactor(module-boundary): route winklinks/consumer-web/shortened-url off ShareAnalyticsService and AnalyticsTrackingService (#556)
  • refactor(module-boundary): service-boundary enforcement + review pilot (#502)
  • refactor(shared-api): AbstractDto foundation — id wire name + createdDate/lastUpdate (#600)
  • refactor(shared-api): align AbstractDto to id + migrate first 2 Lightweights (Initiative A pilot) (#602)
  • refactor(web): evict *Repository injections + flip 8 non-auth -web modules to api-compile/domain-runtime (#632)
  • refactor(web): Initiative D — evict entities from -web + relocate @JsonView to DTOs (#624)

32.0.1

  • refactor: :arrow_down: reverted maxmind DB

32.1.0

  • feat(pagination): owned PageResponse envelope replacing Page across REST + MCP (#645)
  • feat(payment): schedule Stripe refund reconciliation with backoff/dead-lettering (#642)
  • fix: Page serialization docs + advisory + HTTP/2 disconnect logging (#643)
  • refactor: :recycle: sourced with try - resource
  • style: guard all log statements with isXxxEnabled() checks (#644)

32.1.2

  • fix(booking-sync): restore optional syncFrom and give the channel-manager sync an audit trail (#646)
  • fix(module-boundary): publish EncryptedPDFAttachment out of pdf’s internal domain package

32.1.3

  • fix(http-client): :bug: stop basic-auth credentials leaking between webhook targets
  • test(http-client): :white_check_mark: pin that Boot’s RestClient.Builder arrives converter-loaded

32.1.4

  • docs: :memo: updated PageResponse to show real content

32.1.5

  • refactor: :recycle: made guest user available on public booking

33.0.0

  • chore(inventory): :wrench: add travel-inventory minRate/baseRate/address/contact backfill
  • feat(grpc): :sparkles: add Spring gRPC foundation as a shared module family (#660)
  • fix(actuator): :bug: stop replacing the JSON converter’s default media types (#663)
  • fix(booking): :bug: persist roomStay.guestUser at write time instead of recomputing it
  • fix(booking): :bug: share one outcome budget across a group refund
  • fix(booking): record an obligation when a Stripe refund fails (#647)
  • fix(ci): :bug: make the deploy diagnose itself — real registry errors, sso first, and a freshness gate that works (#655)
  • fix(ci): :bug: read the ADC log line from jsonPayload, not just textPayload (#658)
  • fix(ci): :bug: skip the ADC gate for apps with no Google client, and stop lying about what deployed (#657)
  • fix(ci): :wrench: stamp the real build time into the app images (#656)
  • fix(ci): hand the pushed image tag from CI to CD, and reject stale local images (#654)
  • fix(computed): :bug: name the actual reason a property is unavailable
  • fix(google): keyless ADC for all Google clients, plus the module-boundary migration (#650)
  • fix(sellable): delete links on managing-entity removal + stop discarding status in Lightweight.from() (#653)
  • refactor: :perf: removed the biggest reason for Sentry errors
  • refactor: :zap: removed spring-boot-starter-hateoas
  • refactor(channel-manager): :fire: finish removing the legacy /api/services/channelmanager API (#659)

33.0.1

  • fix: :arrow_up: bump handlebars to 4.5.2 (GHSA-r4gv-qr8j-p3pg path traversal)
  • fix: :bug: fail fast on missing SENTRY_AUTH_TOKEN, harden GeoIP update
  • test(google-hotel): :white_check_mark: fix stale test after Sentry-noise refactor

34.0.0

  • feat(open-api): document the gRPC surface by generating OpenAPI from protobuf descriptors (#669)
  • feat(partner): first business gRPC endpoint — destination autocomplete + lookup contract trim (#666)
  • feat(partner): migrate GetLookup and establish the Stripe-style expand convention (#668)
  • feat(property-aggregate): collapse 8 per-dimension scores into one demand score (#667)
  • perf(inventory): harden the inventory/period endpoint
  • perf(inventory): make the supplier-aggregate city search index-usable (#670)
  • perf(rate): bulk portal edits, bounded retries, processedEvents guard, index audit (#672)
  • perf(rate): flatten the rooted-$or daily-rate query into one cacheable shape (#671)

34.1.0

  • feat(monitoring): :chart_with_upwards_trend: Micrometer -> Google Cloud Monitoring export (allow-listed) (#679)
  • feat(pricing-view): nightly-grain pricing read model + maintenance pipeline (#675)
  • feat(pricing-view): view-backed pricing gateway with shadow mode (#677)
  • fix(pricing-view): rewrite staleness gate as digest-drift convergence probe (#680)
  • fix(scripts): repair legacy VariableCharge percent scale + negative occupancy (#678)
  • perf(pricing): batch pricing N+1s, cache hot lookups, response-cache /inventory/period (#674)
  • refactor(computed): PricingDataGateway seam — split pricing data fetch from pricing math (#676)

34.2.0

  • feat(payment): :sparkles: process stripe booking webhook synchronously and fail loud so stripe retries (#681)
  • feat(pricing-view): :chart_with_upwards_trend: emit shadow denominators and count distinct drifting hotels (#683)
  • fix(pricing-view): :building_construction: move @Document PricingView out of the api layer (#682)

34.2.1

  • fix(build): :wrench: scope MaxDirectMemorySize per app — it is taken off the heap (#685)
  • fix(pricing-view): :bug: keep the full master-rate set on the availableOnly=false path (#684)

34.2.2

  • fix(pricing-view): :bug: fall back to the room-type base-rate currency instead of skipping the hotel (#687)

34.2.3

  • fix(channel-manager): :bug: stamp the property currency on eZee rate pushes (#689)
  • fix(rate): :bug: floor quantity at 0 and repair the 30 negative rows (#690)
  • fix(scripts): :bug: repair negative VariableCharge.fixedAmount, the last bad-data class (#692)
  • fix(web): :bug: stop reporting client errors to Sentry (#691)
  • fix(web): :bug: unwrap CompletionException so async 4xx are not served as 500 (#688)

34.3.0

  • docs: :wrench: added tech comments
  • docs(scripts): :memo: record partner media Metronome runs across all three accounts (#696)
  • feat(analytics): :sparkles: cache assembled chart responses in the consumer facades (#702)
  • feat(analytics): :sparkles: incremental rollup writer with watermarks, lease, and backfill endpoint (#700)
  • feat(analytics): :sparkles: rollup document schema for booking, link, and API usage time series (#699)
  • feat(analytics): :sparkles: route chart and usage reads to the rollup collections behind a flag (#701)
  • feat(media): env/account CDN folders, asset metadata standard, migration suite (#695)
  • feat(partner): partner media retrieval API with per-hotel metering (#693)
  • fix(analytics): :bug: accept the staging analytics database name in the rollup index script (#705)
  • fix(analytics): :bug: repair grouped-chart group keys, projection copy-paste bugs, and quadratic gap-fill (#698)
  • fix(booking): cap Stripe refunds at the PaymentIntent’s remaining refundable amount (#694)
  • fix(pricing-view): :bug: compare EFFECTIVE currency in the shadow snapshot diff (#697)
  • fix(scripts): :bug: eviction reminder printed prod for staging-target hotels (#706)
  • fix(scripts): :bug: harden media-migration suite from live-run findings (#704)

34.4.0

  • fix(subscription): :white_check_mark: pin PARTNER_MEDIA_API into the platform pricing rate card test

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 Latest

  • refactor(analytics): :truck: move rollup documents out of the api layer (#708)