All versions since 20.35.0
20.35.0
- feat(guest-room): complete wizard task + fix hub UX issues (#742)
- refactor: :recycle: added meid to create account redirect
20.36.0
- feat(analytics): add booking_code to every GA4 purchase line item
- feat(analytics): drop defaultGoogleAnalyticsMeasurementID, discover GA4 sessions from cookies (#746)
- feat(analytics): load GTM/GA4 in all environments
- feat(analytics): log GA4 events in non-production environments
- feat(customization): drop server-side MP fields + client-side thank-you purchase (#743)
- feat(customization): Signal Forms migration + offcanvas hub (#745)
- feat(logging): add logging framework and migrate console.* to it (#747)
- fix(lint): add missing @wink/shared/util-logger peerDependency to 392 packages
- fix(lint): add missing peerDependencies to guest-room projects
- fix(lint): assign result of immutable set() to params in customization service
- fix(lint): correct 30 version mismatches across 11 projects
- fix(lint): disable empty-function rule for intentional no-op initialization
- fix(lint): fix 10 more projects - package versions and template accessibility
- fix(lint): fix 4 more projects - remove unused dependencies and fix versions
- fix(lint): fix 5 projects - unused imports, template accessibility
- fix(lint): fix unused variables, add missing peer dependencies
- fix(lint): remove 20 unused dependencies from 13 projects
- fix(lint): remove empty object patterns from inventory reducer actions
- fix(lint): remove unused @angular/common from 22 projects
- fix(lint): update fontawesome-common-types version to match installed version
- fix(payment-portal): add keyboard event handlers to failed payout alert
- fix(peer-deps): add additional missing peer dependencies detected by eslint
- fix(peer-deps): add missing dependencies to guest-room-publisher
- fix(peer-deps): add missing peer dependencies to 58 package.json files
- fix(peer-deps): add remaining missing peer dependencies discovered by lint
- refactor: :recycle: renamed GTM actions
20.36.1
- chore: migrate jest executor to @nx/jest/plugin inferred targets
- fix: pin @nx/angular to exact stable beta instead of floating prerelease
- refactor: :recycle: updated to totalPlatformFeeSourceAmount
20.36.2
- chore: [nx migration] 23-1-0-add-ignore-deprecations-for-ts6
- chore: [nx migration] checkpoint before running migrations
- chore: [nx migration] update-23-1-0-convert-to-flat-config
- fix(nx): stop jest plugin from exploding the project graph
20.37.0
- chore: :fire: removed unused project
- chore: ignore .superpowers/ scratch directory
- docs: :memo: i18n
- docs: add CI affected-fanout and real-failures implementation plan
- feat: unify inventory cards and route every type through the shared add-ons hub (#762)
- feat(activity): retrofit shared If-Match util for create/delete/update
- feat(add-on): retrofit shared If-Match util, add it to full-replace update
- feat(attraction): retrofit shared If-Match util for create/delete/update
- feat(cancellation-policy): wire If-Match into the update endpoint
- feat(guest-room): retrofit shared If-Match util for create/delete/update
- feat(inventory-hubs): sectioned editor hubs for all 7 inventory types (#750)
- feat(inventory): activate/deactivate toggle across all inventory hubs
- feat(inventory): move sales channels into Actions dropdown modal (#756)
- feat(inventory): retype If-Match version token from number to string
- feat(managing-entity): wire If-Match into 14 real update endpoints
- feat(meeting-room): retrofit shared If-Match util for create/delete/update
- feat(place): retrofit shared If-Match util for create/delete/update
- feat(plan): pay-as-you-go subscription & usage UI (#767)
- feat(property): wire If-Match into 12 real update endpoints
- feat(rate-plan): wire If-Match into the update endpoint
- feat(restaurant): retrofit shared If-Match util for create/delete/update
- feat(sales-channel): wire If-Match into the update endpoint
- feat(scripts): prune unused @wink libraries during version sync
- feat(shared): add shared If-Match header builder util
- feat(spa): retrofit shared If-Match util, drop it from create/delete, add it to full-replace update
- fix: add missing peer dependencies flagged by @nx/dependency-checks
- fix: clean up remaining no-console and a11y lint failures
- fix: continue button changes (#765)
- fix: correct stale test doubles and a wrong section-state flag
- fix: hotel and room card changes (#753)
- fix: repair catch(_e)/expect(e) reference mismatch in generated specs
- fix: repair remaining CI build, lint and test failures on develop
- fix: repair widespread CI test, lint and build failures across develop
- fix: repair widespread production build failures across develop
- fix: test cases fix
- fix(administration): unblock sidebar clicks on active second-tier nav items
- fix(cancellation-policy): restore required id on the lightweight interface
- fix(deps): declare missing @wink/recognition/domain peerDependency
- fix(deps): sync stale library package.json dependency declarations
- fix(form): shorten date range filter display and use locale date order (#757)
- fix(inventory): backfill fields and mocks after travel-inventory refactors
- fix(inventory): declare util-if-match-headers peer dep in publisher libs
- fix(inventory): guard rate-plan access on guest-room best-price card
- fix(inventory): remove dead nullish fallback in review count tooltip
- fix(inventory): scope premium hotel/room cards to social-list only (#761)
- fix(inventory): send If-Match version on activity/guest-room distribution PATCH
- fix(inventory): thread If-Match version through remaining add-on writes
- fix(managing-entity): remove unused @wink library dependencies
- fix(master-rate): complete identifier→id rename for room-type lightweight
- fix(nx): add passWithNoTests to 13 zero-spec-file libs
- fix(nx): apply passWithNoTests default to inferred jest test target
- fix(nx): resolve lint/test failures in mocks/domain and route-config libs
- fix(nx): scope passWithNoTests per-project instead of workspace-wide default
- fix(payment-admin): remove dead account funds/transfer routes
- fix(payment-admin): unblock sidebar clicks on active nav items
- fix(property): resolve pre-existing CI failures unrelated to If-Match work
- fix(test): repair failing test targets after route/method renames
- fix(test): widen transformIgnorePatterns to cover ESM deps in 3 libs
- fix(travel-agent): repair loadAgentList guard to use ManagingEntityFacade
- fix(travel-agent): use ManagingEntityFeatureGridComponent in agent-list route
- fix(wise): invoke acquirerId as a signal in balance statement template
- refactor: :recycle: removed unnecessary overrides
- refactor(book): rename room.room.identifier to id in remaining templates
- refactor(initiative-d): frontend companion — nested identifier→id renames (#755)
- refactor(property-inventory): align FE interfaces 1-to-1 with backend PropertyInventoryResponse
- refactor(travel-inventory): rename identifier->id on travel-inventory Lightweight types (#754)
- test(extranet): add missing spec for activity add-ons-host adapter
- test(shared-ui-time-ago): drive signal inputs via setInput
20.37.1
- chore(deps): snap peer dependency carets to exact versions
- docs: :memo: updated i18n keys
- fix(deps): repair stale package.json declarations and extend version sync
- fix(external-event): wrap request/response payloads and tidy the booking events list (#768)
- fix(sync): fail loudly when dependency-checks has no cached project graph
- refactor: :recycle: changed user to booker on public booking
- refactor(shared): remove superseded status badge lib and rename survivor to util
20.38.0
- chore(extranet): remove two dead guard libraries that never compiled
- fix: :recycle: check to see if roomStay.user existed
- refactor(test): consolidate on a single jest preset and normalize transform patterns
- test: add specs for previously untested libraries and repair stale ones
20.39.0
- chore: remove 29 orphaned libraries breaking the build
- feat(analytics): deliver every ga4 event to partner gtm containers and ga4 ids (#769)
- fix(book): restore per-route page titles and stop a bad lookup killing navigation (#770)
- fix(book): unblock staging booking e2e, 404 crash and my-trips cold load
- fix(media): repair masonry-gallery imports broken by prior domain renames
- fix(theme): darken solid-fill brand colors to meet WCAG AA contrast
20.40.0
- docs: :memo: translations
- feat(property): single demand score + lookup contract trim companion (#772)
- fix(a11y): add accessible names to shared select/ng-select components
- fix(a11y): resolve color-contrast and missing-label violations in portal e2e
- fix(payment-admin): correct prior-month date math in reconciliation form
- fix(payment-admin): declare date-fns peerDependency in feature-reconciliation
- fix(studio): resolve companyId via ManagingEntityFacade in ToolsComponent
- fix(user-session): roll forward stale itinerary startDate on resume (#771)
20.41.0
- docs(portal-e2e): clarify why social/* page-health routes are skipped
- feat(book): schema.org hotel json-ld + canonical link on hotel landing page (#778)
- feat(managing-entity): migrate create-account form to Signal Forms, add Integrator account type (#775)
- feat(media): populate cloudinary uploads with {env}/account/{id} folder + asset standard (#776)
- feat(payg): display the partner media api billing metric on the usage page (#777)
- fix(a11y): add accessible name to link-manager entries drag handle
- fix(a11y): make comparison table scrollable region and mobile tab select keyboard-accessible
- fix(a11y): make remaining overflow-x-auto scroll regions keyboard-accessible
- fix(a11y): resolve list markup and color-contrast failures in portal-e2e
- fix(a11y): resolve list markup violations across all shared-ui-list-item-pair callers
- fix(a11y): resolve remaining deterministic page-health failures (JOB1-33)
- fix(e2e-utils): allowlist redundant OIDC discovery/jwks noise in page-health
- fix(generators): stop scaffolding a transformIgnorePatterns that shadows the preset
- fix(geo-name): correct invalid overflow-x-auto Tailwind classes
- fix(portal-e2e): drop page-health coverage for routes removed from portal app
- fix(portal-e2e): skip social/* page-health checks pending onboarding-state investigation
- fix(social-list-e2e): allowlist expected shopping-cart 401 on session-expired
- fix(studio): remove duplicate NgRx publisher provider on supplier route
- fix(studio): remove stale inventory-supplier/publisher peer dep
- refactor(managing-entity): remove dead reactive create-account form services
21.0.0 Latest
- chore: clean up the remaining reactive-forms @angular/forms imports (#1041)
- chore: close four convention gaps found by the workspace scan (#1128)
- chore: remove 117 orphaned guard and pipe library projects (#974)
- chore: remove 149 orphaned api-docs and mocks library projects (#968)
- chore: remove 150 orphaned library projects across 50 domains (#975)
- chore: remove 16 orphaned route/router library projects (#972)
- chore: remove 20 more orphaned library projects (#969)
- chore: remove 47 orphaned payment library projects (#976)
- chore: remove 67 orphaned route-guard library projects (#971)
- chore: remove 9 orphaned form CVA components with zero consumers (#1038)
- chore: remove 93 orphaned library projects (wise, extranet, payment-method) (#973)
- chore: remove dormant property-write surface and dead form leaves (#1029)
- chore: remove eleven libraries unreachable from any application (#1116)
- chore: remove nine orphan library directories and seventeen dangling aliases (#1115)
- chore: remove nine orphaned files and refresh CLAUDE.md (#1123)
- chore: withdraw the dead balance-transfer/funds admin domain (#1040)
- chore(absorb-component): regenerate batches after census drift (#1073)
- chore(absorb): prepare the ui-into-ui wave (#1136)
- chore(absorb): regenerate the batch worklist for wave 2 (#1098)
- chore(absorb): regenerate the batch worklist for wave 3 (#1106)
- chore(admin): withdraw the unexposed bank-account form route (#921)
- chore(book): remove dead FormsModule import from feature-hotel-landing (#1032)
- chore(booking,property): remove six duplicate “copy” files and the specs written for them (#1124)
- chore(forms): remove the dead reactive-forms interface island and its orphaned services (#1039)
- chore(managing-entity): delete four unconsumed reactive form interfaces (#939)
- chore(property): withdraw the switched-off property write surface (#925)
- chore(workbench): update FewRoomsLeft fixture for fixed stay-rate-quantity pipe (#1257)
- chore(workspace): finish the inferred-targets conversion for the last 95 projects (#795)
- docs: :globe_with_meridians: updated translations
- docs: :memo: removed CTA upgrade text
- docs: allow running a single spec file without asking (#1342)
- docs: correct stale claude.md facts and add verification tiers (#982)
- docs: record that the type:util sole-consumer census is closed, zero yield (#1159)
- docs: record the component selector prefix convention (#1151)
- docs: refresh project counts and record why jest-inputs-fix must stay (#1134)
- docs(analytics): describe the booking-page partner tags as the sales channel, not the hotel (#1009)
- docs(notification): fix stale confirm-dialog comment on message-dispatch form (#1317)
- docs(phase-2): record that the campaign converged at wave 3 (#1108)
- docs(phase-2): record that the four excluded candidates are absorbed (#1114)
- docs(phase-2): record the cascade and the lint-severity escalation class (#1097)
- docs(route-consolidation): close out the campaign and record what phase 2 should inherit (#1061)
- docs(route-consolidation): defer e2e smoke to CI and record the local prerequisites
- docs(route-consolidation): re-derive the census and specify the absorb-lib generator
- docs(route-consolidation): record the built generator and the 21-aug census corrections
- docs(route-consolidation): record the chunk-diff measurement and the campaign findings
- docs(route-consolidation): the surviving-reference grep needs -P, not -E
- docs(workbench): add activity feature-* storybook stories (#1276)
- docs(workbench): add activity-stream feature-* storybook stories (#1308)
- docs(workbench): add add-on feature-* storybook stories (#1292)
- docs(workbench): add administration feature-* storybook stories (#1236)
- docs(workbench): add affiliate feature-* storybook stories (#1306)
- docs(workbench): add announcement feature-* storybook stories (#1291)
- docs(workbench): add automate feature-* storybook stories (#1309)
- docs(workbench): add batch 2 storybook stories (37/233 type:ui libs)
- docs(workbench): add batch 3 storybook stories, close inventory domain (83/233)
- docs(workbench): add batch 4 storybook stories, close booking domain (96/233)
- docs(workbench): add batch 5 storybook stories, close profile domain (107/233)
- docs(workbench): add batch 6 storybook stories, close 5 domains (134/233)
- docs(workbench): add batch 7 storybook stories, close 32 domains (184/233)
- docs(workbench): add book feature-* storybook stories (#1235)
- docs(workbench): add booking feature-* storybook stories (#1216)
- docs(workbench): add caldav feature-* storybook stories (#1312)
- docs(workbench): add campaigns feature-* storybook stories (#1266)
- docs(workbench): add cancellation-policy feature-* storybook stories (#1293)
- docs(workbench): add checkout feature-* storybook stories (#1316)
- docs(workbench): add customization feature-* storybook stories (#1294)
- docs(workbench): add external-event feature-* storybook stories (#1279)
- docs(workbench): add extranet feature-* storybook stories (#1232)
- docs(workbench): add geo-name feature-* storybook stories (#1237)
- docs(workbench): add green-index feature-* storybook stories (#1268)
- docs(workbench): add inventory-map feature-* storybook stories (#1300)
- docs(workbench): add lead feature-* storybook stories (#1298)
- docs(workbench): add managed-social feature-* storybook stories (#1238)
- docs(workbench): add managing-entity feature-* storybook stories (#1222)
- docs(workbench): add master-rate feature-* storybook stories (#1281)
- docs(workbench): add meeting-room feature-* storybook stories (#1283)
- docs(workbench): add message-template feature-* storybook stories (#1296)
- docs(workbench): add notification feature-* storybook stories (#1313)
- docs(workbench): add payment-admin feature-* storybook stories (#1228)
- docs(workbench): add payment-portal feature-* storybook stories (#1218)
- docs(workbench): add payment-widget feature-* storybook stories (#1315)
- docs(workbench): add perk feature-* storybook stories (#1289)
- docs(workbench): add place feature-* storybook stories (#1286)
- docs(workbench): add portals feature-* storybook stories (#1246)
- docs(workbench): add property feature-* storybook stories (#1223)
- docs(workbench): add rate-plan feature-* storybook stories (#1299)
- docs(workbench): add rate-verifier feature-* storybook stories (#1304)
- docs(workbench): add receipt feature-* storybook stories (#1321)
- docs(workbench): add recognition feature-* storybook stories (#1318)
- docs(workbench): add restaurant feature-* storybook stories (#1285)
- docs(workbench): add review feature-* storybook stories (#1249)
- docs(workbench): add sales-channel feature-* storybook stories (#1261)
- docs(workbench): add seller-inventory-item feature-* storybook stories (#1303)
- docs(workbench): add seller-inventory-list feature-* storybook stories (#1302)
- docs(workbench): add seller-inventory-ranked-list feature-* storybook stories (#1301)
- docs(workbench): add shortened-url feature-* storybook stories (#1307)
- docs(workbench): add social-list feature-* storybook stories (#1256)
- docs(workbench): add special-rate and special-rate-bundle feature-* storybook stories (#1273)
- docs(workbench): add static-seller-list feature-* storybook stories (#1290)
- docs(workbench): add studio feature-* storybook stories (#1239)
- docs(workbench): add travel-agent feature-* storybook stories (#1271)
- docs(workbench): add user feature-* storybook stories (#1278)
- docs(workbench): add web-components feature-* storybook stories (#1253)
- docs(workbench): add webhook feature-* storybook stories (#1258)
- docs(workbench): add wizard feature-* storybook stories (#1322)
- docs(workbench): complete signal-form storybook story coverage (63/233)
- docs(workbench): group Storybook story titles by owning app (#1263)
- docs(workbench): update stale #1244 breakage notes in storybook stories (#1363)
- feat(absorb-component): count a same-domain ui consumer as a valid target (#1135)
- feat(absorb-lib): treat one mounted component, not one path, as the leaf test (#1117)
- feat(administration): show admin PAYG usage and subscription visibility (#1042)
- feat(affiliate): migrate feature-affiliate-search to signal forms (#1034)
- feat(analytics): add the chart builder signal-forms pure layer (#949)
- feat(analytics): cut the chart builder over to signal forms (#951)
- feat(analytics): migrate feature-list search box to signal forms (#1033)
- feat(announcement): migrate the announcement editor to signal forms
- feat(automate): replace subscription tiers with usage-based pricing table (#1047)
- feat(book): cut the booking orchestration over to signal forms (#857)
- feat(book): set browser tab title on booking confirmation page (#1048)
- feat(booking): disable booking actions that need a paid booking (#785)
- feat(booking): explain disabled booking actions with a daisyUI tooltip (#783)
- feat(booking): show cancellation and refund as two independent badges (#1386)
- feat(booking): state lifecycle and refund as one phrase (#1388)
- feat(build): run staging in angular dev mode for devtools profiling (#981)
- feat(campaigns): migrate feature-footer to signal forms (#1030)
- feat(channels): migrate the sales-channel toggle cluster to signal forms (#1023)
- feat(customization): migrate the logo and profile-picture editors to signal forms (#819)
- feat(forms): migrate the sales channel and managed-by editors to signal forms (#789)
- feat(generators): absorb-component — privatise single-consumer ui components (#1062)
- feat(generators): add the absorb-lib generator and its batch files
- feat(geo-name): add a pair-valued signal-forms city lookup (#950)
- feat(geo-name): migrate the country form to signal forms (#843)
- feat(geo-name): migrate the geo-name and city editors to signal forms (#848)
- feat(geo-name): migrate the province and county forms to signal forms (#842)
- feat(google-maps): add a signal-forms map picker and drop the reactive bridge (#845)
- feat(green-index): add the questionnaire signal form pure layer (#923)
- feat(inventory-supplier): migrate ui-invite to signal forms (#1031)
- feat(lookup): migrate ui-lookup-dropdown and feature-modal to signal forms (#1026)
- feat(managed-social): add a posts-per-month dropdown to the settings form (#828)
- feat(managed-social): add one signal-forms selection list for creators, tones and post types (#829)
- feat(managed-social): add the post signal-form model, schema and mapper (#831)
- feat(managed-social): add the settings signal-form model, schema and mapper (#827)
- feat(managed-social): allow a manual post for any connected platform (#993)
- feat(managed-social): migrate both settings editors to signal forms (#830)
- feat(managed-social): migrate the admin create-content screen to signal forms (#837)
- feat(managed-social): migrate the post editor to signal forms (#835)
- feat(managed-social): migrate ui-connection sub-account picker to signal forms (#1037)
- feat(managing-entity): add signal-forms account and user lookup leaves (#945)
- feat(managing-entity): add the bank-account signal form pure layer (#920)
- feat(managing-entity): add the online-presence signal-form model, schema and mapper (#813)
- feat(managing-entity): migrate the account overview screen to signal forms (#824)
- feat(managing-entity): migrate the account-status form to signal forms (#812)
- feat(managing-entity): migrate the online-presence editor to signal forms (#814)
- feat(managing-entity): migrate the revolut payout-account form to signal forms (#816)
- feat(managing-entity): migrate ui-selector and portals sidebar to signal forms (#1027)
- feat(master-rate): migrate the perks editor to signal forms and remove 6 projects (#800)
- feat(media): add the multimedia-list signal-form pure layer (#869)
- feat(media): add the selectable-multimedia signal-form pure layer (#898)
- feat(media): cut the property media screen over to signal forms (#871)
- feat(media): give the logo signal-form control a crop step (#817)
- feat(media): make multi-file upload opt-in on the signal-form uploader (#889)
- feat(ng-select): migrate v24 theming to css variables and converge signal-forms binding (#1012)
- feat(notification): cut the admin message-dispatch screen over to signal forms (#946)
- feat(pagination): add the list-state signal-form pure layer (#895)
- feat(payment): add the signal-forms bank-account fields leaf (#942)
- feat(payment): cut the bank-account editors over to signal forms (#943)
- feat(perk): show the submission confirmation dialog on both perk screens (#967)
- feat(policy): add the property-policy signal form pure layer (#926)
- feat(portals): migrate feature-footer and feature-home to signal forms — portals domain CLOSED (#1028)
- feat(profile): add the traveller-profile signal-form pure layer (#861)
- feat(profile): cut the traveller profile over to signal forms (#862)
- feat(property): add a signal-forms property lookup leaf (#948)
- feat(property): add CHANNEX and EXELY to HotelCodeContextEnum (#1014)
- feat(property): add the contact-info signal-form model, schema and mapper (#802)
- feat(property): add the manual-registration signal-form model, schema and mapper (#805)
- feat(property): add the property-profile signal-form model, schema and mapper (#807)
- feat(property): migrate the channel-manager chooser to signal forms (#801)
- feat(property): migrate the contact-info editor to signal forms (#804)
- feat(property): migrate the property-profile editor to signal forms (#809)
- feat(property): migrate the property-services editor to signal forms (#810)
- feat(rate-plan): migrate the editor to signal forms and remove 21 projects (#791)
- feat(rate-verifier): add the verify-rates signal-form pure layer (#866)
- feat(rate-verifier): cut the rate verifier over to signal forms (#868)
- feat(rate-verifier): migrate confirm-test-booking-modal to signal forms (#1036)
- feat(rate): add the rate-list signal-form pure layer (#850)
- feat(rate): migrate the bulk rate-change editor to signal forms (#849)
- feat(rate): migrate the rate calendar grid to signal forms (#851)
- feat(recognition): migrate the recognition editor to signal forms
- feat(review): migrate the guest review form to signal forms (#841)
- feat(review): migrate the review response editor to signal forms (#838)
- feat(room-type-configurator): add the ancillary signal-form pure layer (#853)
- feat(room-type-configurator): add the booker signal-form pure layer (#852)
- feat(room-type-configurator): add the booking-request seeding primitives (#854)
- feat(room-type-configurator): add the room-booking-request model, schema and mapper (#855)
- feat(room-type-configurator): cut the booking funnel over to signal forms (#860)
- feat(room-type-configurator): extract the ancillary interaction rules (#858)
- feat(room-type-configurator): extract the scheduler date/time sync rules (#856)
- feat(shared): give the submit button a real confirmation dialog (#947)
- feat(shared): let a non-CVA caller seed the typeahead’s display text (#867)
- feat(shortened-url): add the signal-form pure layer (#875)
- feat(shortened-url): migrate feature-add-link-modal to signal forms (#1025)
- feat(signal-form): add a date-and-time picker control (#832)
- feat(signal-form): add a date-range button control (#913)
- feat(signal-form): add a date-range picker control (#864)
- feat(signal-form): add a grouped select control (#846)
- feat(signal-form): add a native date input control (#836)
- feat(signal-form): add a numeric radio group control (#840)
- feat(signal-form): add a searchable single-select control (#833)
- feat(signal-form): add a string radio group control (#904)
- feat(signal-form): add a time picker (#803)
- feat(signal-form): add an ISO date-range input control (#911)
- feat(signal-form): add opt-in server-side typeahead to the multi-select-object control (#944)
- feat(signal-form): add ui-actionable-url-input, the URL field with a fetch button (#891)
- feat(signal-form): add ui-multi-select-object, the object-valued multi-select (#882)
- feat(signal-form): open the date-range button in a real modal (#1044)
- feat(signal-forms): migrate sales-channel-details and inventory-list to signal forms (#1024)
- feat(social-list): add the syndicated-item signal-form pure layer (#880)
- feat(social-list): add the syndication-settings signal-form pure layer (#886)
- feat(social-list): check name uniqueness on the winklinks profile modal (#826)
- feat(social-list): migrate the online-presence modal to signal forms (#815)
- feat(social-list): migrate the winklinks create-account wizard to signal forms (#821)
- feat(social-list): migrate the winklinks profile modal to signal forms (#825)
- feat(special-rate-bundle): migrate the bundle editor to signal forms (#790)
- feat(special-rate): add the signal-form model (#793)
- feat(special-rate): add the signal-form request mapper (#797)
- feat(special-rate): fix the rooms qualifier and add the validation schema (#798)
- feat(special-rate): migrate the editor to signal forms and remove 28 projects (#799)
- feat(user-session): add the itinerary-selector signal-form pure layer (#863)
- feat(user-session): cut the itinerary selector over to signal forms (#865)
- feat(webhook): signing secret reveal, deliveries and outbox events ui (#970)
- feat(workbench): add @storybook/addon-a11y
- feat(workbench): add storybook host for isolated component verification (#980)
- feat(workspace-generators): absorb-feature generator + social-list pilot (#1153)
- feat(workspace-generators): extract-component generator + close multi-component ui-* campaign (#1168)
- feat(workspace): add an inferred typecheck target so spec files are type-checked (#796)
- fix: drop 3 more dead lodash-es mappings (#1165)
- fix: drop 4 dead google.maps types, add 1 real one + fix a dead lodash-es (#1161)
- fix: frozen-store crash on /extranet/media/list + missing portal i18n keys (#1118)
- fix: portal-e2e a11y and console-error CI failures (#1045)
- fix: signal-form lint errors (#1046)
- fix: two real production bugs found via live Storybook verification
- fix(a11y): give 22 invisible modal close buttons a visible glyph, and lint for it (#1018)
- fix(a11y): resolve final a11y-campaign violation in shared-ui-embed-code
- fix(a11y): resolve highest-leverage color-contrast and list-structure violations
- fix(a11y): resolve second wave of axe-core violations from fresh sweep
- fix(a11y): resolve third wave of axe-core violations from fresh sweep
- fix(a11y): restore modal autofocus with a directive, not the native attribute (#1021)
- fix(absorb-lib): count a component reached through a same-file spread (#1120)
- fix(absorb): assert the target declares the source’s jest module mocks (#1100)
- fix(absorb): assert the target declares the source’s spec ambient types (#1112)
- fix(absorb): rewrite dynamic import() consumers, not just static imports (#1109)
- fix(absorb): stop post-condition 4 firing on aliases mentioned in comments (#1088)
- fix(add-on): register ratePlan feature state on add-on hub route (#1224)
- fix(address): wrap each simple-address field in shared-ui-form-field-layout
- fix(admin): add missing BANK_ACCOUNT/PAGE.BANK_ACCOUNT i18n keys (#1349)
- fix(admin): add missing BOOKING_CONTRACT/PAYOUT i18n keys (#1346)
- fix(analytics): match dark-mode chart export background to the on-screen theme (#1169)
- fix(analytics): route the thank-you purchase to the booked hotel’s partner tags (#1008)
- fix(analytics): skip toObservable’s initial replay in feature-list search (#1035)
- fix(application): register initApplication at root for every app
- fix(authentication): silently refresh access token after idle instead of 401ing (#653) (#1170)
- fix(automate): raise pricing panel caption contrast to meet wcag aa
- fix(book): itinerary date one day behind on mobile header (#177) (#1167)
- fix(book): read route snapshot data for page title, not the observable
- fix(booking): add book date to booking grid CSV exports (#1189)
- fix(booking): bind general-information Rooms row to roomStay.quantity (#1275)
- fix(booking): format gross-rate cell in accounting room-rates table (#1272)
- fix(booking): give refund card CANCELED its own badge, fix a class-clobber bug (#1280)
- fix(booking): give TEST_PAYMENT_SUCCEEDED a hero-card border and fix a deeper class-clobber bug (#1277)
- fix(booking): interpolate premium-modifier percent in accounting table (#1274)
- fix(caldav): disable generate button while passkey is generating (#1372)
- fix(cancellation-policy): rename NINENTY_PERCENT to NINETY_PERCENT (#1323)
- fix(checkout): price the cart under the attribution customization (#779)
- fix(extranet): translate dashboard bookings-overview error banner (#1351)
- fix(footer): drop formfield-reserved attributes that broke the aot build
- fix(generators): correct two absorb-lib bugs the apps track exposed
- fix(generators): name renamed route tables *.routes.ts so coverage still excludes them
- fix(generators): stop re-emitting deprecated executors and a broken spec tsconfig (#794)
- fix(geo-name): restore 15 missing timezones and extract the feature-code taxonomy (#847)
- fix(google-maps): autocomplete card ViewChild race on repeat map visits (#1129)
- fix(google-maps): consolidate 7 hand-rolled google.maps test stubs (#1241)
- fix(google-maps): give ui-map-canvas and ui-auto-complete an internal readiness guard (#1371)
- fix(google-maps): guard createPlaceAutoComplete against unloaded SDK (#1310)
- fix(google-maps): scope map container lookup to its own instance (#1131)
- fix(google-tag-manager): log and skip GA4 item on missing room instead of throwing (#1172)
- fix(green-index): call the list signal in the empty-state check (#1366)
- fix(guest-room): add missing util-transloco-signals peerDependency (#1376)
- fix(guest-room): add selectTranslate stub to add-ons-host adapter spec mock (#1377)
- fix(guest-room): wire i18n into ui-listing-preview (#1324)
- fix(i18n): convert translate() inside computed() to translateSignal (#878) (#1229)
- fix(inventory-map): restore google.maps ambient types in feature-map-form lib build
- fix(inventory): consistent updateItinerary null guard, drop 3 dead handlers (#1269)
- fix(inventory): drop dead imports the absorption carried across (#1146)
- fix(inventory): floor fractional star ratings instead of rounding up (#1250)
- fix(inventory): guard PlaceCardComponent.updateItinerary against a null event (#1264)
- fix(inventory): prevent deal/rating and room-stat rows overflowing on mobile (#1379)
- fix(inventory): read stay rate quantity from correct nested path (#1255)
- fix(inventory): remove dead ui-grid inputs and fix mis-wired navigate outputs (#1260)
- fix(inventory): sort by price instead of assigning in lowest-price pipe comparator (#1262)
- fix(inventory): wire (bookClicked) on hotel-card’s ROOM face (#1254)
- fix(lead): remove debug console.log probe from lead-form spec (#1370)
- fix(managed-social): span the getting-started jumbotron across the full grid row (#1171)
- fix(managing-entity): make the manager-list guards actually reachable (#940)
- fix(managing-entity): read stripe key from environment.payment path (#1345)
- fix(managing-entity): seed usage-graph default range from local calendar day (#1190)
- fix(media,inventory-map): clone frozen store items in two more signal-form models (#1121)
- fix(media): wire up ui-slideshow-modal navigation to activeIndex (#1284)
- fix(meta): remove global FB redeclaration conflicting with @types/facebook-js-sdk
- fix(newsletter): restore the sign-up button, which submitted nothing (#910)
- fix(ng-select): close the v24 behavioural audit from #897 (#1019)
- fix(payment-admin): close the review findings on the refund pure layer (#905)
- fix(payment-admin): correct a mis-pinned component-selector prefix (#1141)
- fix(payment-admin): delete dead account-reconcile path in domain lib (#1233)
- fix(payment-admin): report real property counts on the status tile (#931)
- fix(payment-admin): un-invert booking-contract cancel action gate (#1350)
- fix(payment-widget): add missing UNKNOWN/MULTIPLE_PROPERTIES/BUTTON_CANCEL keys (#1373)
- fix(perk): type PerkInterface.requestor as nullable (#1368)
- fix(portals): remove unused fontawesome peer dependency
- fix(portals): rename app-root shell to resolve #1245 naming collision (#1364)
- fix(property): filter the admin hotel grid on the status the API sends (#929)
- fix(property): remove the dead externalStatus surface (#930)
- fix(property): send numberOfRooms, which the profile API requires (#808)
- fix(property): style the YES_PAID internet/parking state in ui-basic-service-list (#1330)
- fix(pwa-support): internationalise the version-update modal (#1020)
- fix(rate-plan): correct group-heading label semantics and format drift (#1079)
- fix(rate-verifier): make the five gate steps focusable and keyboard-operable (#1091)
- fix(rate): bulk rate update crashes the calendar grid with NG01904 (#1127)
- fix(receipt): add missing PAGE.RECEIPT/PAYMENT i18n keys, fix key mismatches (#1374)
- fix(reference-data): retire dead OTA/currency/language HTTP fetches (#1219)
- fix(review): sync the FE review interfaces with the backend document (#992)
- fix(scripts): make verify:affected actually verify something (#995)
- fix(search-category): add missing INVENTORY member to SearchCategoryEnum (#1329)
- fix(seller-url): wire ui-preview to its own SELLER_URL i18n keys (#1328)
- fix(shared): decide all 46 inert save-confirmation call sites, and lint for it (#1022)
- fix(shared): prevent pagination next-button clip on mobile (#1384)
- fix(shared): remove dead ghost-loading-element template/styles (#1242)
- fix(shared): remove dead outputs from ui-copy-url (#1334)
- fix(shared): rename SharedUiWinkSiteSharedUiTravelikoLogoComponent to SharedUiWinkSiteLogoComponent (#1251)
- fix(shared): render future isoDateTime as “in
” in ui-time-ago (#1248) - fix(shared): render secondary-only CTA in ui-jumbotron (#1335)
- fix(shared): replace stale errors instead of accumulating in ui-display-error (#1343)
- fix(shared): stop freezing ui-dashboard-decorator’s time-of-day greeting (#1338)
- fix(shared): translate ui-days-of-week keys and react to input changes (#1341)
- fix(shared): wire loadingPlaceholderRows/Columns into ui-reusable-table-decorator (#1337)
- fix(shared): wire placeholderConfig, drop dead ghostLoadingAspectRatio (#1208) (#1336)
- fix(shared): wire tabsClass into ui-nav’s tablist element (#1339)
- fix(shared): wire ui-placeholder-card’s dead section inputs into template (#1247)
- fix(shared): wire up resetDisabled, remove dead ui-submit-cancel-buttons inputs (#1333)
- fix(shopping-cart): only clear the local draft after the server sync succeeds (#1173)
- fix(shopping-cart): only touch the cart api when the user is authenticated (#781)
- fix(signal-form): correct the radio group docs and wire up its a11y (#907)
- fix(signal-form): declare flatpickr-mobile-label peer dependency
- fix(signal-form): let an optional select be cleared again (#874)
- fix(signal-form): prevent actionable-url-input overflow and double-https prefix (#1382)
- fix(signal-form): send amenity codes in catalogue order across all five hubs (#811)
- fix(signal-form): wrap url-input example hint text on narrow viewports (#1383)
- fix(social-list): give every embed card in feature-grid a unique, descriptive selector
- fix(social-list): give how-to-link-account modal story real modal chrome (#1380)
- fix(social-list): prevent vanity-url overflow at tablet width (#1381)
- fix(social-list): replace heavy real-data design preview with a lightweight route (#1139)
- fix(social): translate network names and placeholders in ui-signal-form-list (#1332)
- fix(spa): guard amenities badge in ui-listing-preview when count is 0 (#1327)
- fix(static-seller-list): correct reorderListItems missing-items error message (#1369)
- fix(studio): clear stale error state and translate bookings-overview banner (#1362)
- fix(tailwind): repair utilities carrying a duplicated wink: prefix (#784)
- fix(tailwind): wire ui-calendar strings through Transloco (#1331)
- fix(testing): point 11 jest configs at their own coverage directory (#916)
- fix(travel-agent): point booking breadcrumb at the agent booking grid (#1367)
- fix(travel-inventory): prevent hub two-column grid overflow on mobile (#1378)
- fix(travel-inventory): resolve i18n keys reactively in hub-store SECTIONS (#1231) (#1353)
- fix(travel-inventory): translate limits toggle On/Off label (#1295)
- fix(typecheck): clear the remaining spec backlog and 6 source defects (#998)
- fix(typecheck): repair drifted specs across 6 domain clusters (#997)
- fix(typecheck): resolve namespace and protected-access spec type errors (#1000)
- fix(typecheck): resync specs with the review and ScoreSort contract changes (#1002)
- fix(user-session): add missing ITINERARY_FORM_MODAL.TITLE i18n key (#1282)
- fix(web-components): sum room quantity for shopping cart badge count (#1365)
- fix(wizard): remove dead WizardShellComponent (#1375)
- fix(workbench): fix 14 storybook stories missing THEMES stub or stale mocks (#1361) (#1385)
- fix(workbench): fix 8 more stories missing the THEMES applicationConfig stub
- fix(workbench): fix remaining category-2 bugs from the full Playwright sweep
- fix(workbench): merge all apps’ i18n bundles in storybook loader
- fix(workbench): repair pre-existing storybook type errors blocking the dev server
- fix(workbench): stub THEMES/ACTIVE_THEME in stories whose component uses themer
- fix(workbench): use a real beneficiary-payment-type enum value in payment-admin fixtures (#1347)
- fix(workbench): use applicationConfig, not moduleMetadata, for THEMES/ACTIVE_THEME
- refactor: :fire: removed marketing icon
- refactor: absorb 3 cross-domain ui components held for the lodash-es fix (#1166)
- refactor: remove the deprecated organization domain and two channel-manager enum members (#1013)
- refactor: remove the last dead PAYG check and the admin subscription column (#994)
- refactor: retire 25 dead reactive form interfaces, closing 9 domains (#1010)
- refactor: type NgRx facade signals with requireSync instead of leaving them undefined (#1130)
- refactor(absorb-component): unblock phase 2 — re-include ui-card, migrate 18 targets to zoneless (#1063)
- refactor(absorb): privatise the two depth-1 excluded candidates (#1110)
- refactor(activity-stream): migrate the comment composer to signal forms (#1005)
- refactor(activity): privatise 4 ui component(s) into their consumers (#1076)
- refactor(add-on): privatise 3 ui components into their consumers (#1065)
- refactor(admin): migrate the event and lead grids to signal forms (#988)
- refactor(administration): absorb the 39 administration route libraries into their features (#1052)
- refactor(analytics): absorb route-list into feature-list (#1049)
- refactor(analytics): cut the leaderboard city picker over to signal forms (#961)
- refactor(apps): absorb the 13 app-level route libraries into their features (#1050)
- refactor(automate): absorb 3 sole-consumer analytics libraries (batch 4/4) (#1157)
- refactor(automate): absorb feature-analytics into feature-insight (#1158)
- refactor(automate): absorb the 6 automate route libraries into their features (#1056)
- refactor(book-hotel-landing): privatise 11 ui component(s) into their consumers (#1087)
- refactor(book-hotel-landing): privatise 7 ui component(s) into their consumers (#1099)
- refactor(book): absorb 4 sole-consumer feature libraries (batch 2/4) (#1155)
- refactor(book): privatise 3 ui component(s) into their consumers (#1066)
- refactor(booking): cut the refund-request modal over to signal forms (#962)
- refactor(booking): cut the three cancellation modals over to signal forms (#963)
- refactor(booking): delete the dead comment form, closing the booking domain (#964)
- refactor(booking): migrate the admin and agent booking grids to signal forms (#989)
- refactor(cancellation-policy): migrate the policy editor to signal forms (#1001)
- refactor(currency): remove the reactive variable-charge form and its service
- refactor(dynamic-seller-list): migrate the saved-search filter form to signal forms (#1004)
- refactor(dynamic-seller-list): privatise the list card into its consumer (#1111)
- refactor(extranet): absorb the 51 extranet route libraries into their features (#1051)
- refactor(extranet): merge the 6 hub route aggregators into their hub features (#1059)
- refactor(extranet): migrate the booking grid and dashboard analytics to signal forms (#986)
- refactor(form): retire the misfiled copyable input and delete FormHelper (#979)
- refactor(forms): migrate to signal forms and remove 147 dead projects
- refactor(generators): stop scaffolding route libraries
- refactor(geo-name): cut the five map list screens over to signal forms (#958)
- refactor(geo-name): privatise 3 ui component(s) into their consumers (#1067)
- refactor(geo-name): withdraw four orphaned libraries (#959)
- refactor(green-index): move the questionnaire wizard onto signal forms (#924)
- refactor(grids): migrate the affiliate account and publisher review grids to signal forms (#990)
- refactor(guest-room): privatise 6 ui component(s) into their consumers (#1084)
- refactor(inventory-map): migrate the map editor to signal forms (#1007)
- refactor(inventory-map): privatise the advanced map into its consumer (#1113)
- refactor(inventory): privatise 10 ui component(s) into their consumers (#1145)
- refactor(lead): migrate the admin lead screen to signal forms (#1003)
- refactor(lifestyle): migrate the property lifestyle picker to signal forms (#977)
- refactor(managed-social): migrate the post grid and retire both date-range libraries (#991)
- refactor(managed-social): privatise 3 ui component(s) into their consumers (#1068)
- refactor(managing-entity): drop the form from the section-grant editor and translate it (#823)
- refactor(managing-entity): move the manager-invite form onto signal forms (#937)
- refactor(managing-entity): privatise 3 ui component(s) into their consumers (#1069)
- refactor(managing-entity): withdraw the unrouted accounts grid (#938)
- refactor(master-rate): privatise 4 ui component(s) into their consumers (#1077)
- refactor(media): model the multimedia list as one combined list (#870)
- refactor(media): stop the cloudinary upload form pretending to be a form control (#818)
- refactor(media): stop the single-file modal form pretending to be a form control (#820)
- refactor(meeting-room): privatise 4 ui component(s) into their consumers (#1078)
- refactor(misc-a-f): privatise 12 ui component(s) into their consumers (#1089)
- refactor(misc-a-f): privatise 3 ui component(s) into their consumers (#1138)
- refactor(misc-g-m): privatise 3 ui component(s) into their consumers (#1140)
- refactor(misc-g-m): privatise 4 ui component(s) into their consumers (#1085)
- refactor(misc-n-r): privatise 13 ui component(s) into their consumers (#1092)
- refactor(misc-n-r): privatise 3 ui component(s) into their consumers (#1142)
- refactor(misc-n-r): privatise 4 ui component(s) into their consumers (#1104)
- refactor(misc-s-z): privatise 1 ui component(s) into their consumers (#1105)
- refactor(misc-s-z): privatise 13 ui component(s) into their consumers (#1094)
- refactor(misc-s-z): privatise 2 ui component(s) into their consumers (#1143)
- refactor(misc): absorb 13 cross-domain ui components, rename selectors (#1164)
- refactor(misc): absorb 6 sole-consumer feature libraries via absorb-feature (#1154)
- refactor(payment-admin): add the refund signal-form pure layer (#903)
- refactor(payment-admin): move the admin refund form onto signal forms (#908)
- refactor(payment-admin): move the booking contract grid onto signal forms (#914)
- refactor(payment-admin): move the cancel booking modal onto signal forms (#919)
- refactor(payment-admin): move the ledger list filter onto signal forms (#909)
- refactor(payment-admin): move the manual ledger entry form onto signal forms (#915)
- refactor(payment-admin): move the reconciliation screen onto signal forms (#917)
- refactor(payment-admin): move the refund request list filter onto signal forms (#912)
- refactor(payment-portal): absorb the 2 payment-portal route libraries into their features (#1057)
- refactor(payment): delete the two orphan components and absorb their route libraries (#1060)
- refactor(payment): require a SWIFT/BIC for non-IBAN countries (#941)
- refactor(perk): cut the admin perk editor over to signal forms, closing the perk domain (#966)
- refactor(perk): cut the supplier perk-request form over to signal forms (#965)
- refactor(place): privatise 3 ui component(s) into their consumers (#1070)
- refactor(policy): move the property policy screen onto signal forms (#927)
- refactor(portals): absorb 14 cross-domain ui components, rename selectors (#1162)
- refactor(portals): absorb 4 sole-consumer feature libraries via absorb-feature (#1156)
- refactor(portals): absorb the 13 portals route libraries into their features (#1054)
- refactor(portals): move the integrator data into feature-home and retire the dead lib (#987)
- refactor(portals): privatise 7 ui component(s) into their consumers (#1086)
- refactor(property): move the admin property grid onto signal forms (#928)
- refactor(property): move the general-manager screen onto signal forms (#935)
- refactor(property): move the map-position screen onto signal forms (#934)
- refactor(property): move the welcome-text screen onto signal forms (#932)
- refactor(property): sync ScoreSortEnum with the backend, splitting sort from category (#985)
- refactor(property): withdraw the unrouted property-status screen, fix the dead coverage-map link (#933)
- refactor(property): withdraw the unrouted social-networks screen, fix the dead dashboard link (#936)
- refactor(rate-plan): privatise 4 ui component(s) into their consumers (#1080)
- refactor(rate-verifier): privatise 3 ui component(s) into their consumers (#1071)
- refactor(rate): privatise 3 ui component(s) into their consumers (#1137)
- refactor(restaurant): privatise 4 ui component(s) into their consumers (#1081)
- refactor(routes): consolidate 19 single-component route libraries into their features (#1119)
- refactor(routes): move the two misplaced route aggregators into their own domains (#1122)
- refactor(selectors): declare prefix exemptions instead of suppressing the rule (#1150)
- refactor(selectors): retire dead app-era selector prefixes (batch 1/3) (#1147)
- refactor(selectors): retire dead app-era selector prefixes (batch 2/3) (#1148)
- refactor(selectors): retire dead app-era selector prefixes (batch 3/3) (#1149)
- refactor(seller-inventory-item): cut the card editor to signal forms (#902)
- refactor(seller-inventory-list): migrate the grid editor to signal forms (#983)
- refactor(seller-inventory-ranked-list): migrate the ranked grid to signal forms (#984)
- refactor(seller-url): cut the inventory-link editor to signal forms (#899)
- refactor(seller-url): privatise 3 ui component(s) into their consumers (#1072)
- refactor(shared): move the four framework toSignal() conversions out of components (#1125)
- refactor(shared): replace nine hand-written typeahead pipelines with one helper (#1126)
- refactor(shortened-url): cut the link card and its panels over to signal forms (#877)
- refactor(shortened-url): drop reactive forms from the copy and delete panels (#876)
- refactor(shortened-url): privatise 5 ui component(s) into their consumers (#1102)
- refactor(social-list): absorb 14 cross-domain ui components, rename selectors (#1163)
- refactor(social-list): absorb the 8 social-list route libraries into their features (#1055)
- refactor(social-list): absorb twitter-ui-embed-card cross-domain, rename selector (#1160)
- refactor(social-list): cut the Design screen to signal forms (#887)
- refactor(social-list): cut the editable category row to signal forms (#894)
- refactor(social-list): cut the grid and filter bar to signal forms (#896)
- refactor(social-list): cut the live post card and its 8 panels to signal forms (#885)
- refactor(social-list): cut the locked-link card to signal forms (#893)
- refactor(social-list): cut the quote and simple-post create modals to signal forms (#888)
- refactor(social-list): cut the web-link modal to signal forms (#892)
- refactor(social-list): privatise 15 ui component(s) into their consumers (#1101)
- refactor(social-list): privatise 19 ui component(s) into their consumers (#1096)
- refactor(social-list): privatise 3 ui component(s) into their consumers (#1107)
- refactor(social-list): the archived post card ends with no form (#883)
- refactor(social-list): the file-upload post modal ends with no form (#890)
- refactor(special-rate-bundle): privatise 3 ui components into their consumers (#1064)
- refactor(special-rate): privatise 4 ui component(s) into their consumers (#1103)
- refactor(special-rate): privatise 5 ui component(s) into their consumers (#1082)
- refactor(static-seller-list,affiliate-request): migrate four modals to signal forms (#1016)
- refactor(studio): absorb the 23 studio route libraries into their features (#1053)
- refactor(studio): migrate the last two reactive forms to signal forms (#1015)
- refactor(studio): privatise 5 ui component(s) into their consumers (#1083)
- refactor(supplier-url): cut the property-link editor to signal forms (#901)
- refactor(supplier-url): privatise 3 ui component(s) into their consumers (#1074)
- refactor(travel-agent): absorb the 2 travel-agent route libraries into their features (#1058)
- refactor(user-settings): withdraw the two unreachable profile screens (#952)
- refactor(user): cut the access-level form over to signal forms (#955)
- refactor(user): cut the admin change-password form over to signal forms (#954)
- refactor(user): cut the admin user profile form over to signal forms (#953)
- refactor(user): cut the user grid over to signal forms (#957)
- refactor(user): withdraw the admin subscription screen (#956)
- refactor(webhook): privatise 3 ui component(s) into their consumers (#1075)
- test: close coverage gaps in 3 projects failing the 80% branch/function gate
- test: remove 1219 vacuous placeholder specs (#1011)
- test(coverage): close the tractable half of the coverage-gate backlog (#999)
- test(inventory): cover the branches six card libraries were missing (#1144)
- test(shared): cover ui-dropdown icon-only aria-label (regression for #1212) (#1340)
- test(signal-form): realign two stale specs with their components
- test(web-components): correct a stale ranked-grid sort expectation (#1133)
- test(workbench): cover every ng-select usage with a story, and fix two regressions it exposed (#1017)
