Skip to content

Changelog

31.4.0 Latest

  • feat(financials): fee-total model rework — totalPlatformFee(+InPercent), TripPay→PaymentProcessing rename, gross-based platform fee (#493)
  • fix(acl): register managing-entity cache so @RequireAccountPermission resolves teams
  • refactor: :recycle: changed Exely query so bookings will return when the exely booking is confirmed
  • refactor(api): use native mapping version attribute for v2.0 endpoints

31.3.0

  • docs: :globe_with_meridians: updated translation keys
  • docs: :memo: add JaCoCo 85% rollout plan and cache-domain test logback config
  • docs: :memo: JaCoCo 85% rollout COMPLETE — 40 modules gated, 500+ tests added
  • docs: :memo: phase0 discovery complete — 40 real modules, 13 empty stubs, 500+ tests needed
  • docs: :memo: phase1 task1 json-domain complete — 100% coverage
  • docs: :memo: phase1 task2 geo-name-web complete — 89% coverage
  • docs: :memo: phase1 task3 analytics-domain complete — 86.6% coverage
  • docs: :memo: phase1 tasks 1-3 complete
  • docs: :memo: phase1 tasks 1-3 complete — 3 modules at 85%+
  • docs: :memo: phase1-2 summary — 7 modules complete at 91.2% avg coverage
  • docs: :memo: phase2 task6 inventory-domain complete — 85.8% coverage + bug fix
  • docs: :memo: phase2 task7 message-template-domain complete — 100% coverage
  • docs: :memo: phase2 tasks 12-15 complete — 15/16 Tier 2 modules at 85%+
  • docs: :memo: phase2 tasks 8-11 complete — 4 modules at 85%+ (11/7 total complete)
  • docs: :memo: phase2-3 checkoint — 20 modules at 85%+ (16 Tier2 + 4 Tier3)
  • feat(analytics): multi-party server-side GA4/GTM purchase tracking (#485)
  • feat(booking): only email travelers on concrete Stripe payment failures (#491)
  • feat(cache): add managingEntityIdsByUser ID-list cache to ManagingEntityService (#484)
  • feat(room-type): draft + per-section PATCH endpoints; refactor: remove fake-async from request/response services (#481)
  • fix: :recycle: fixed selfAcquired and selfDisburses
  • fix(booking,accounting): agent refunds settle + self-managed agents kept off the ledger (#488)
  • fix(booking): :bug: settle admin manual refunds with no Stripe PaymentIntent (#492)
  • fix(booking): apply channel-manager status filter to all pull paths (Exely, CloudBeds)
  • fix(booking): filter booking status for channel-manager delivery and review emails (#489)
  • fix(booking): scope channel-manager pulls by rateSource + hide INITIALIZED from non-admin (#490)
  • fix(customization): map CustomizationException to 404; 409 for primary removal (#482)
  • fix(lookup-web): handle missing ‘term’ param as 400 Bad Request (#483)
  • perf(rate): eliminate N+1 query in RateRepository.findByDateRange Map overloads
  • refactor: :recycle: fixed Stripe issues due to new Stripe version
  • refactor: :recycle: remove leftover PasswordEncoder dependency from YanoljaServiceImpl
  • refactor: :recycle: removed property status everywhere
  • refactor: :recycle: removed unused imports
  • refactor: :recycle: tried to get more insight into why Exely is failing in staging
  • refactor: :recycle: updated Yanolja by removing bcrypted password
  • test: :green_heart: fixed some AI generated tests
  • test: :white_check_mark: booking-domain — enable JaCoCo 85% gate → 86.9%
  • test: :white_check_mark: booking-web — boost instruction coverage from 85% to 93%
  • test: :white_check_mark: booking-web — enable JaCoCo 85% gate → 85%+
  • test: :white_check_mark: cache-domain, lookup-web — → 85%+
  • test: :white_check_mark: caldav-web — enable JaCoCo 85% gate and add 404 test
  • test: :white_check_mark: customization-web — enable JaCoCo 85% gate → 100%
  • test: :white_check_mark: customization-web, message-template-web, report-web — → 85%+
  • test: :white_check_mark: enable JaCoCo 85% gate on 49 empty/tiny modules (integrations, mcp stubs, scaffolding)
  • test: :white_check_mark: fix cancellationType assertion in BookingPhase0TypesTest
  • test: :white_check_mark: fix disabled tests and raise coverage in 5 modules to 80%+ gate
  • test: :white_check_mark: improve room-type-domain JaCoCo coverage with comprehensive event listener tests
  • test: :white_check_mark: lookup-web — enable JaCoCo 85% gate → 95%+
  • test: :white_check_mark: message-template-domain coverage verified at 100%
  • test: :white_check_mark: message-template-web — enable JaCoCo 85% gate → 100%
  • test: :white_check_mark: payment-web — enable JaCoCo 85% gate → 89.6%
  • test: :white_check_mark: phase1 analytics-domain coverage — 65% → 85%+
  • test: :white_check_mark: phase1 analytics-domain coverage — 86.6%
  • test: :white_check_mark: phase1 application-domain coverage — 50% → 95.7%
  • test: :white_check_mark: phase1 application-domain coverage — 50% → 95.7%+
  • test: :white_check_mark: phase1 geo-name-web coverage — 50% → 89%+ (gate enabled)
  • test: :white_check_mark: phase1 json-domain coverage — 0% → 85%
  • test: :white_check_mark: phase1 point-of-interest-domain coverage — ~40% → 89%+
  • test: :white_check_mark: phase1 point-of-interest-domain coverage — 40% → 89.3%
  • test: :white_check_mark: phase2 add-on-web — → 85%+
  • test: :white_check_mark: phase2 customization-client-domain — → 85%+
  • test: :white_check_mark: phase2 exchange-rate-web — → 85%+
  • test: :white_check_mark: phase2 geo-ip-web — → 85%+
  • test: :white_check_mark: phase2 inventory-domain coverage — 65% → 85.8%+
  • test: :white_check_mark: phase2 invite-domain — → 85%+
  • test: :white_check_mark: phase2-final cancellation-policy-web — → 85%+
  • test: :white_check_mark: phase3 accounting-domain — → 85%+
  • test: :white_check_mark: phase3 checkout-domain — → 85%+
  • test: :white_check_mark: phase3 lookup-domain — → 85%+
  • test: :white_check_mark: reconcile tests after origin/develop merge
  • test: :white_check_mark: report-web — enable JaCoCo 85% gate → pass
  • test: :white_check_mark: scheduler-domain — → 85%+
  • test: :white_check_mark: shortened-url-domain — enable JaCoCo 85% gate
  • test(room-type): :white_check_mark: fix failing tests and restore 85% gate; enable events-command-gateway and translate-inventory gates

31.2.0

  • feat: add comprehensive external webhook event catalogue (#479)
  • test: :green_heart: fixed test

31.1.2

  • test: :green_heart: fixed test

31.1.1

  • chore: remove ALLOTZ and FASTBOOKING channel managers
  • docs: :memo: add Bamboo CI pipeline commands to CLAUDE.md
  • fix: :bug: fix forgot-password flow and reset code length
  • fix: :bug: restore magic link (OTT) passwordless login after Spring Boot 4.1 upgrade

31.1.0

  • feat(cache): add Caffeine L1 cache for managing entities and harden shared cache infra (#478)
  • refactor: :recycle: priritizing supplier GA4 config

31.0.0

  • docs: :memo: added RequestBodu openapi annotations
  • feat: add Layer C entity-type access control via @RequireManagingEntityType (#476)
  • feat(channel-manager): :sparkles: expose per-room unitAmount on PropertyBooking
  • fix: :bug: resolve bedType from OTA bed codes in booking emails
  • fix(analytics): :bug: split studio/extranet booking analytics to stop dual @PreAuthorize 500
  • fix(channel-manager): :bug: emit one RoomStay per room for Allotz, Rate-Gain, Travelclick
  • fix(channel-manager): emit one Siteminder RoomStay per room (#477)
  • fix(google-places): :bug: correct scrambled address field mapping
  • fix(managing-entity): :bug: reject blank address1 during registration
  • fix(property-aggregate): :bug: repair availability filter dropped by Criteria mutation
  • refactor(mcp): :recycle: split booking analytics and review MCP tools to match controller split
  • test: :green_heart: fixed setUp issue while running surefire with fork = 3
  • test: :green_heart: fixed some weird MongoDb issue
  • test: :green_heart: fixed test
  • test: :white_check_mark: added enough coverage to property-web

30.51.2

  • docs: :memo: GA level API documentation
  • docs(openapi): :memo: comprehensive OpenAPI @Schema/@ArraySchema/@Parameter sweep across all API modules
  • fix(openapi): :bug: remove redundant implementation= from field-level @ArraySchema
  • fix(openapi): consolidate example constants and fix @ArraySchema annotation structure (#473)
  • fix(revolut): gate webhook initializer behind revolut.webhook-initializer.enabled (#474)
  • fix(test): use exact args in WithdrawalControllerTest stub and verify
  • refactor: :recycle: All OpenAPI examples now display
  • refactor: :recycle: allowed npm dep
  • refactor: :recycle: fixed Stripe webhook issue (#475)
  • refactor: :zap: removed Application MCP tools
  • test: :green_heart: fixed all tests after OpenAPI changes

30.51.1

  • docs(openapi): add @ApiResponse + @Parameter sweep across all *-web controllers
  • fix: amend git-flow back-merge commit before pushing develop to suppress CI
  • fix(test): correct JWT claim key in WithdrawalControllerTest mock
  • refactor: :recycle: moved applications and invites to SSO
  • refactor: :recycle: removed Exely code check

30.51.0

  • docs: :memo: added OpenAPI example text
  • fix: :bug: accepting / rejecting invite now works
  • fix: :bug: normalize passkey (WebAuthn) login to the canonical authentication shape
  • fix: :bug: skip no-op release commit so set -e can’t abort the release
  • fix: :rotating_light: compiles and tests pass
  • refactor: :recycle: added meid request param on cta link
  • refactor: :recycle: improved customization client
  • test: :green_heart: fixed test