Application
Version 22.0.0 Latest
- chore: [nx migration] 24-0-0-enable-legacy-affected
- chore: [nx migration] checkpoint before running migrations
- chore: [nx migration] final validation
- chore: [nx migration] remove-deprecated-executors
- chore: [nx migration] update-24-0-0-add-ready-when-signal
- chore: [nx migration] update-24-0-0-add-start-storybook-ready-when
- chore: [nx migration] update-24-0-0-remove-scam-generator-defaults
- chore: remove the cart modal, the payment modal and their state (#2304)
- chore(book): remove the booking modal’s translation keys that nothing uses
- chore(eslint): catch an empty-path shell that starts its providers for every url
- chore(i18n): translate the pay page charge keys
- chore(i18n): update generated supported languages
- chore(i18n): update translations
- chore(i18n): update translations for book and social-list
- chore(portal): remove the Distribution > Inventory screen and dead publisher code (#1724) (#1725)
- chore(portals): remove the unused inventory quick map and card modals (#1732)
- chore(seller-inventory-item): remove the orphaned createSellerInventoryItem action (#1733)
- chore(shopping-cart): remove the empty domain library
- chore(web-components): remove the commented-out shopping-cart demo (#2307)
- chore(web-components): remove the shopping-cart button (#2303)
- docs: add the unified inventory card spec and plans
- docs: note the change-itinerary limits and fix a stale grid comment (#1806)
- feat: choose the hotel card size per embed and customization, add a horizontal book card (#1774)
- feat(activity): keep the hub drawer open until the save lands and recover from a conflict (#2069)
- feat(add-on): apply an add-on to one, several or all items of its category (#1838)
- feat(add-on): keep the hub drawer open until the save lands and recover from a conflict (#2087)
- feat(add-on): move min/max pax from the configuration card to the restrictions card (#1716)
- feat(add-on): phase 3 — lean add-on authoring UI, delete the seven add-ons hosts (#1643)
- feat(add-on): split eligibility and restrictions out of the configuration card (#1713)
- feat(announcement): add @journey coverage and switch/error Storybook states (#1743)
- feat(application): :sparkles: send the booking source to the inventory api as headers (#1873)
- feat(attraction): keep the hub drawer open until the save lands and recover from a conflict (#2070)
- feat(authentication): send a login return straight to the stored page (#2226)
- feat(book): :sparkles: carry the booking source and link id through checkout (#1865)
- feat(book): extras per room type and a live your-stay summary, slice 3 of #1925 (#1996)
- feat(book): extras step with add-ons in one list, slice 1 of #1925 (#1978)
- feat(book): give the homepage its own standalone title (#2189)
- feat(book): guest picks when a required add-on happens, slice 2c of #1925 (#1981)
- feat(book): harden the thank-you page (#2247)
- feat(book): Included section and visible slot on the Extras step, slice 2b of #1925 (#1980)
- feat(book): leave the booking modal for the checkout page when it is on (#2239)
- feat(book): let the widget forward a guest to the booking engine for checkout (#2245)
- feat(book): load hotel photos and reviews from the new public endpoints (#1886, slice 1-2) (#1888)
- feat(book): make choosing a room a page of the hotel at /hotel/:urlName/book/rooms/:roomTypeId
- feat(book): make extras a page of the hotel at /hotel/:urlName/book/extras
- feat(book): make the checkout hand-off an opt-in of each app (#2240)
- feat(book): mark each agreed deal term with a green check (#2172)
- feat(book): move the place grids onto inventory/search/ranked (source currency + fx quotes) (#2196)
- feat(book): one add-on card with a venue picker when several venues list it (#1840)
- feat(book): open a room page as the first page of a visit
- feat(book): open the chosen place at once and enlarge the lookup text (#2190)
- feat(book): page the explore grid from the Wink Network unless an affiliate made the link (#2209)
- feat(book): rebuild the homepage around a 3d agent globe and an affiliate deal chat (#2152)
- feat(book): remove the global OTA grid and sort the place grids with a dropdown (#1895) (#2151)
- feat(book): remove the List your property button and the search icon from the header (#2187)
- feat(book): retitle the affiliate banner (#2173)
- feat(book): rework the place grids (clean url, paging, trip bar, card polish) (#2194)
- feat(book): room card and rate rows include mandatory add-ons, slice 2a of #1925 (#1979)
- feat(book): run the homepage without a customization (#2186)
- feat(book): swipe the photo viewers and show their arrows only on hover (#2214)
- feat(book): tell the guest when the hand-off to checkout fails (#2249)
- feat(checkout): add the flag-gated /checkout page shell (#2229)
- feat(checkout): add the guest form and Proceed to the checkout page (#2235)
- feat(checkout): add the pay page (#2236)
- feat(checkout): keep the checkout selection across the login redirect (#2225)
- feat(checkout): pay from the shared bar, with the guest details in the tally (#2290)
- feat(checkout): put checkout and pay in one booking step shell with a stepper
- feat(checkout): rebuild the cart behind /checkout and check the price (#2230)
- feat(checkout): retry and word the 409/503 reasons POST /api/checkout now gives (#2254)
- feat(ci): add daily sentry issue filer workflow and script (#1737)
- feat(customization): keep the form drawer open until the save lands and never close silently (#2104)
- feat(extranet): book now button uses the hotel managing entity link with ?r=ibe (#1730)
- feat(forms): lock four page forms while they save with the shared lock-while-saving helper (#2090)
- feat(hub-engine): show a loading skeleton while an existing inventory entity loads (#2110)
- feat(hub-engine): tell the user why X, Esc and navigation do nothing while a Save is in flight (#2107)
- feat(inventory-supplier): add a book-in-booking-engine action to the supplier card (#1765)
- feat(inventory-supplier): commerce tab on the supplier card, centred no-results invite box (#1757)
- feat(inventory-supplier): price browse hotels for a chosen itinerary (#1756)
- feat(inventory-supplier): refresh the supplier card and add the past performance modal (#1766)
- feat(inventory): add banner, book and detail sizes to the hotel and room cards (#1770)
- feat(inventory): banner, book and detail card sizes with the link’s text (#1773)
- feat(inventory): offer a change itinerary link on the hotel card (#1805)
- feat(inventory): one width-responsive hotel card replaces the banner, book and detail cards (#1780)
- feat(mcp-apps): add branded hotel cards with photos and quote totals
- feat(mcp-apps): show a booking confirmation card (#2227)
- feat(meeting-room): keep the hub drawer open until the save lands and recover from a conflict (#2073)
- feat(place): keep the hub drawer open until the save lands and recover from a conflict (#2077)
- feat(portal): :sparkles: add an analytics card to the book now page (#1877)
- feat(portal): :sparkles: count book now copies as shares on the book now card (#1881)
- feat(portal): :sparkles: show bookings, visits and revenue on the link hub (#1876)
- feat(portal): :sparkles: show link analytics counts as compact figures (#1879)
- feat(portal): add a last-7-days clicks chart to each shareable link card (#1863)
- feat(portal): add a run header above bookings for travel agents (#1860)
- feat(portal): assign sales channels on the add-on and master rate itself (#1721) (#1723)
- feat(portal): browse hotels beneath insights and partnerships as one entry (#1855)
- feat(portal): compose the sidebar per account type (#1842)
- feat(portal): create link actions for hotels and affiliates (#1859)
- feat(portal): gallery under link manager and choose-from-gallery in the media editors (#1858)
- feat(portal): give Inventory its own section and lead Rates with cancellation (#1847)
- feat(portal): give the add-on hub drawer forms room to breathe (#1726)
- feat(portal): group the hotel menu by job, not by data type (#1843)
- feat(portal): link manager tab bar for entries, hotel links, lists, shorteners and archive (#1852)
- feat(portal): one insights page for every link (#1851)
- feat(portal): one Property profile entry with a tab bar for its ten pages (#1845)
- feat(portal): remove venue sales channels action and add load error states (#1721) (#1722)
- feat(portal): replace the tasks sidebar item with a setup guide popup (#1861)
- feat(portal): social settings tab bar, with connections as a tab (#1854)
- feat(portal): tab bars for promotions, sales channels and studio lists (#1848)
- feat(property-inventory): offers store, content join and source-currency widget grids (#1890)
- feat(rate-plan): audience selector for public, member and closed-user-group plans (#2201)
- feat(restaurant): keep the hub drawer open until the save lands and recover from a conflict (#2080)
- feat(signal-form): add a shared lock-while-saving helper and adopt it in the inventory hubs (#2089)
- feat(social-list): :sparkles: start a WinkLinks page as its own booking source (#1882)
- feat(social-list): add the flag-gated checkout and pay pages (#2242)
- feat(social-list): choose the card size per WinkLinks page and per link (#1775)
- feat(social-list): open the room booking modal from a hotel card’s Book button (#2051)
- feat(social-list): per-account link previews and account-named tab (#2027)
- feat(social-list): replace the list tile’s hotel preview with an animated list visual (#2038)
- feat(social-list): serve the booking pages below the hotel, so a room page can open first (#2286)
- feat(social-list): start the booking as pages below the account at /:account/book/…
- feat(spa): keep the hub drawer open until the save lands and recover from a conflict (#2081)
- feat(special-rate-bundle): add journey and storybook state check (#1741)
- feat(special-rate): add @journey coverage and a ticked-restrictions story (#1740)
- feat(studio): :sparkles: browse hotels through studio search (monorepo-java#1176) (#1748)
- feat(studio): retire inventory search and links; Browse hotels and Links at the top level (#1729)
- feat(transactional-list): lists are embeddable and addable to WinkLinks directly, no grid step (#1744)
- feat(transactional-list): segmented hotel star and review rating filters (#1754)
- feat(transactional-url): guest-room drawer layout, labelled error list and a link @journey (#1810)
- feat(transactional-url): hide social-post links from Links and lock their removal (#1764)
- feat(transactional-url): link hub with per-link analytics and a standard map embed (#1783)
- feat(transactional-url): rebuild the link hub with section drawers, share and winklinks modals (#1792)
- feat(transactional-url): restyle the link preview share section and theme the card previews (#1777)
- feat(transactional-url): switch the link card to the content + inventory contract (#2198) (#2199)
- feat(transactional-url): unified hotel link in studio, web components, winklinks and book (#1738)
- feat(travel-inventory): extract the shared conflict-reload helper for drawer hubs (#2072)
- feat(travel-inventory): extract the shared save-then-close flow for drawer hubs (#2068)
- feat(travel-inventory): reload a stale entity when a conflicted drawer is dismissed (#2075)
- fix: align stripe-js peer dependency with root 10.1.0
- fix: clear the lint failures from the Nx upgrade and extras work
- fix: declare the missing peer dependencies of two libraries
- fix: drop unused util-tokens peer dependency from session-expired route
- fix: sync peer dependencies with imports to unbreak lint
- fix(activity): stop offering Reservation required in Configuration, which never saved it (#2052)
- fix(add-on): :memo: correct mandatory add-on help text (#1827)
- fix(add-on): allow maxPax of zero — it means “no restriction”, not “unbookable” (#1714)
- fix(advertising-domain): :bug: keep the empty entry file a module so ng-packagr can build it
- fix(analytics): :bug: repaint the chart when the app theme changes (#1878)
- fix(analytics): remove the click-rate tile and label the all-time and 7-day periods (#2032)
- fix(announcement,recognition): validate date order and rating range, show readable validation text (#2030)
- fix(authentication): resume original page after session-expired login (#1898)
- fix(book): :bug: apply room-type and rate-plan restrictions to venue add-ons (#1832)
- fix(book): :bug: auto-add mandatory add-ons at their pricing-type quantity (#1829)
- fix(book): animate room photo swipes, highlight the active dot, show a loading placeholder (#2296)
- fix(book): charge a per-hour add-on for the hours the guest booked (#1923) (#1929)
- fix(book): clearer room totals, add-on quantity labels and a URL that follows the search (#1926) (#1976)
- fix(book): declare checkout peer dependencies of feature-bootstrap
- fix(book): drop the re-export of a launcher type the modal removal deleted
- fix(book): explore grid title i18n keys and tab tracking (#1899)
- fix(book): hide add-ons whose group size does not fit the room (#1868) (#1901)
- fix(book): hide the header’s trip bar on the room and extras pages
- fix(book): keep the booking modal open while a signed-out guest is sent to log in
- fix(book): keep the booking pages’ bottom bar in view, and the back link off a UrlTree error
- fix(book): keep the hotel theme on the checkout pages after a refresh (#2238)
- fix(book): leave the corporate footer off the hotel landing page (#2299)
- fix(book): make photo swipes follow the finger in every carousel (#2309)
- fix(book): make the add-on picker and the room page pass the accessibility sweep (#2288)
- fix(book): make the booking engine header trip labels readable in dark mode (#1762)
- fix(book): match mandatory add-on quantity to checkout (#1867) (#1900)
- fix(book): move the add-on picker into the extras library, where the library build can see it
- fix(book): person-priced add-ons start at all guests, and a date change keeps the rooms (#1926) (#1977)
- fix(book): refresh the tailwind source lists for the pending checkout util (#2228)
- fix(book): reload venue add-ons when the guest changes the stay (#1885)
- fix(book): remove rooms that no longer fit the trip from the cart (#1872) (#1912)
- fix(book): replace the booking tally on mobile with one the bar’s total opens (#2298)
- fix(book): round a discounted room price the way the backend does (#2297)
- fix(book): send the venue an add-on is booked at on the cart request (#1839)
- fix(book): show room modal photo arrows only on mouse hover (#2211)
- fix(book): show the stay price under rate plan “price per stay” (#1871) (#1905)
- fix(book): size extras add-on card columns by grid width, not viewport (#2192)
- fix(book): stale Kids club line, wrong child age and malformed rc link (#1927) (#1975)
- fix(book): tell the guest an add-on is required by the hotel (#1869) (#1902)
- fix(checkout): clear the lint errors from the pay page charge change
- fix(checkout): drop the duplicate total dropdown and cancel link from the pay page (#2301)
- fix(checkout): end the checkout page in the shared bar, and extract the bar every step uses (#2287)
- fix(checkout): end the payment spinner when the cart could not be created (#2012)
- fix(checkout): name the Stripe charge on the pay page when it differs from the display total (#2308)
- fix(checkout): say “signing you in” instead of the login prompt after a login return (#2312)
- fix(ci): repair eslint-rules:test and mcp-apps-ui-hotel-card:test (#1815)
- fix(e2e-utils): :white_check_mark: assert the cancelled booking on the tooltip wrapper (#1812)
- fix(e2e): :white_check_mark: pin the portal e2e session to the Hotel Wink account (#1837)
- fix(e2e): click the pay page’s own Pay button in the booking journeys (#2317)
- fix(eslint-rules): count expect.poll and expect.soft as assertions
- fix(eslint): let the route manifest read a path spelled as a shared constant
- fix(google-maps): force raster rendering on the location picker map
- fix(google-maps): leave renderingType off the map options when unset
- fix(google-tag-manager): :bug: stop add-ons without a location crashing the hotel page (#1811)
- fix(guest-room): complete the wizard task only after the save has landed (#2055)
- fix(guest-room): guard the add-ons badge color against a missing transactionalInventoryList
- fix(guest-room): keep the drawer open until the save lands and recover from a conflict (#2065)
- fix(guest-room): validate occupancy relations and show server rejections on the field (#2053)
- fix(hub-engine): clear the not-sent banner once the create-route draft has landed (#2105)
- fix(hub-engine): ignore a failure that is not the awaited save’s own while its write is in flight (#2114)
- fix(hub-engine): ignore a late load response for an entity no longer being edited (#2084) (#2116)
- fix(hub-engine): ignore a late patch response for an entity no longer being edited (#2118) (#2122)
- fix(hub-engine): track overlapping single-entity loads by id list (#2126) (#2127)
- fix(hub-engine): track the awaited patch and update by id (#2123) (#2125)
- fix(hub-engine): track the awaited single-entity load by id (#2117) (#2119)
- fix(inventory-supplier): call the studio hotel analytics endpoint under the managing entity (#1767)
- fix(inventory-supplier): make the duplicate invite warning readable in light and dark mode (#1759)
- fix(inventory-supplier): resolve lint findings from the supplier card and invite work (#1761)
- fix(inventory): :lock: encode the values of the booking engine link (#1883)
- fix(inventory): make the room Select button smaller (#1782)
- fix(inventory): show room card and slideshow arrows only on mouse hover (#2212)
- fix(inventory): tidy the room card image overlays (#2213)
- fix(link-hub): read the backend’s ‘unknown’ analytics key and translate the unknown country (#1791)
- fix(lint): declare the @angular/cdk peer the modal service uses (#1788)
- fix(lookup): give the search modal room and a full-width field (#2188)
- fix(media): make order-on-sort pipe generic over sort
- fix(modal): host the cdk overlay container inside open dialogs so dropdowns are clickable (#1785)
- fix(place): retry a failed create-route draft on Save instead of creating a second entity (#2085)
- fix(policy): validate check-in and check-out as 24-hour HH:mm (#2033)
- fix(portal-e2e): :white_check_mark: label the list status dot and accept both 404 titles (#1826)
- fix(portal-e2e): :white_check_mark: search the transactional url journey through quick search (#1836)
- fix(portal): :bug: draw only the link hub chart series it has labels for (#1875)
- fix(portal): :bug: tidy the book now analytics card (#1880)
- fix(portal): add the translations the link preview card needs (#1768)
- fix(portal): ask before discarding unsaved edits in six more travel-inventory hubs (#1956) (#1971)
- fix(portal): ask before discarding unsaved edits in the add-on and guest-room hubs (#1956) (#1959)
- fix(portal): ask before discarding unsaved edits in the customization form (#1956) (#1972)
- fix(portal): confirm before discarding add-on edits and say when a load failed (#1924) (#1942)
- fix(portal): fix add-on hub copy and list card details (#1870) (#1903)
- fix(portal): make breadcrumbs and key names follow the new sidebar (#1846)
- fix(portal): make the extranet dashboard charts readable (#1892) (#1928)
- fix(portal): show hotel booking status as labelled chips (#1891) (#1913)
- fix(portal): sidebar cleanup before regrouping the menu (#1841)
- fix(portal): sync package.json deps with imports for dependency-checks lint
- fix(portal): title the link manager settings page settings, not design (#1857)
- fix(portal): warn before a reload or tab close discards unsaved drawer edits (#1957) (#1974)
- fix(profile): resolve preference labels from REF keys instead of PROFILE.REF (#2314)
- fix(pwa): build the update-check effect twice and sync stale specs
- fix(pwa): recover stale clients from lazy chunks missing after a deploy (#2029)
- fix(room-type-configurator): tolerate the PublicMedia shape in the booking panel (#1719)
- fix(share): drop the stale uniqueId input, and stop vouching for links Wink did not shorten (#2210)
- fix(shared): stop the share window doubling the short link (#2009)
- fix(shared): translate the router-link navbar’s mobile select copy (#1844)
- fix(shopping-cart): send a date range with every room add-on on the cart request (#2292)
- fix(shortened-url): detach a link’s request and copy its form model from the store (#2130) (#2131)
- fix(signal-form): bind the lock directive’s disabled as an attribute
- fix(signal-form): make form-field example text readable in dark mode (#1760)
- fix(signal-form): push a time picker value that arrives after init into flatpickr (#2015)
- fix(signal-form): show a date picker value that arrives after init (#2007)
- fix(social-list): copy a stored post’s tags and metadata before building its form (#1911) (#2129)
- fix(social-list): keep the checkout shell from starting on every page
- fix(social-list): let the account page claim its booking source and load analytics (#2243)
- fix(social-list): only the route’s own true disables analytics (#2244)
- fix(social-list): register slideshow and itinerary modal handlers on the storefront (#2014)
- fix(social-list): show a creator’s list tile with its first hotel and give the opened list a URL (#2034)
- fix(studio): drop unlabelled geo pairs so browse hotels stops crashing (#1728)
- fix(styles): drop the focus ring from the main-content focus target (#2193)
- fix(styles): write the wink: prefix before the variant in 31 templates and enforce it (#2207)
- fix(transactional-url): exempt spec stub selectors from the prefix lint rule
- fix(transactional-url): preview the first image and keep the card badge readable (#1769)
- fix(web-components): stop duplicate modal action types breaking staging embeds (#2013)
- fix(web-components): stop Open pop-up leaving storefront Book, Select and map pins dead (#2010)
- fix(workbench): clear the remaining Storybook sweep failures (#2289)
- perf(book): load the booking flow modal on demand instead of in app.config (#2203)
- perf(book): load the customization during the login token exchange (#2216)
- perf(styles): scope Tailwind per app and lazy-load the video player CSS (#2204)
- refactor: :zap: improved time to re-open checkout modal
- refactor: :zap: removed unused class
- refactor: :zap: removed unused code
- refactor: remove breadcrumbs from every page (#1849)
- refactor: remove card face and badge from transactional urls and lists (#1797)
- refactor(book): move the landing’s cards, room list and configurator onto the joined inventory (#1893)
- refactor(book): read the landing, cart and flow from the joined inventory (#1894)
- refactor(book): remove the booking flow modal
- refactor(book): remove the booking modal’s own checkout path and the checkoutRoutes flag (#2252)
- refactor(book): rename the two libraries the booking modal left misnamed
- refactor(book): replace the undefined —wink-engine-shell-bg variables with daisyUI classes (#1763)
- refactor(booking): rename the ancillary type ROOM_TYPE_ANCILLARY to GUEST_ROOM (#1642)
- refactor(checkout): remove the forwarded checkout, which only the widget used
- refactor(hub-engine): centralise the dismiss and leave veto in the shared save flow (#2112)
- refactor(hub-engine): share the awaited-request rules of the hub reducers (#2121) (#2124)
- refactor(hub-engine): share the cancelEdit conflict dismissal across the venue hub stores (#2109)
- refactor(inventory): delete the card face type, map display type and venue GA4 services (#1802)
- refactor(inventory): delete the stored map libraries and retire the map layout (release 2) (#1789)
- refactor(inventory): draw only hotel cards and delete the room and add-on cards (#1801)
- refactor(inventory): drop the hotel card inputs left over from the room face (#1804)
- refactor(inventory): give the hotel card one face and draw room focus with the room’s image and price (#1800)
- refactor(media): read entityId, falling back to the deprecated identifier (#1896)
- refactor(portal): move insights and browse hotels under marketing (#1856)
- refactor(portal): remove the map authoring UI (retire InventoryMap, release 1) (#1784)
- refactor(portal): rename studio to marketing and flatten the marketing sections (#1853)
- refactor(shared): :recycle: share one theme watcher between the charts (#1884)
- refactor(studio): remove the latest suppliers section from the browse hotels landing (#1755)
- refactor(web-components): leave the booking to the booking engine’s pages
- test: finish the zoneless test migration now that zone.js is gone (#1727)
- test: fix the social-list-edge target and lift three libs over the coverage gate
- test: fix the stale card preview control and cover the room page pass-throughs
- test: lift property-inventory-domain and book-flow over the coverage threshold
- test(book-e2e): :white_check_mark: add a booking journey that includes an add-on (#1813)
- test(book): :white_check_mark: mark the spa price-list item mandatory in the room-types spec (#1835)
- test(book): cover missing mandatory extras currency in rate plan lines pipe
- test(e2e): :white_check_mark: add a booking refund journey inside the free-cancellation window (#1828)
- test(e2e): check that a room page opens as the first page of a visit
- test(e2e): check that Book on a WinkLinks account opens the booking pages
- test(e2e): follow the booking pages in the checkout journey and the extras overflow checks
- test(e2e): make the checkout E2E work for the page and the modal (#2248)
- test(e2e): run the book smoke layer against a local hotel, and fix what it found
- test(e2e): scan accessibility at the page’s final colours, not half way through a fade
- test(media): cover the slideshow wrapper leaving the view
- test(portal-e2e): add account creation city dropdown journey
- test(portal-e2e): allow the expected CalDAV 404 on the calendar sync page
- test(portal): cover the media catalog picker provider in app config spec
- test(studio): drop the removed map route from the top-level sections spec (#1787)
- test(transactional-url): cover the empty paths of the card preview
