github ctrliq/ascender 25.5.0

3 hours ago

What's Changed

This release is a large one with many new Features, Bug Fixes, and a massive overhaul of a lot of the underlying frameworks that make up the code base. Nearly every file was touched in some way, so we have delayed the release a bit to ensure we had time to fully test everything as much as we could to ensure it was a stable release.

We would like to personally thank @blaipr for the massive amount of effort he has done on this. I would normally clean up this release log a bit, but to not underscore the work that was done, I have left it as is. We would also like to thank @fernandorocagonzalez for all the improvements that have been made to the Workflows. These are great additions that have been sorely needed for years.

Notable Items and New Features

Bug Fixes

  • Fix bug in scheduler with Job dependency leakage in #369
  • Update logo in installing.html to use Ascender logo SVG by @ssimpson89 in #371
  • Hide the Workflow Visualizer button on Job Slices in #372
  • Fix issue with federated inventories when relaunch a single child job in #373
  • Fix cross-test mock leak behind the flaky parallel test failures by @blaipr in #388
  • Surface an error when the webhook credential type lookup returns nothing by @blaipr in #390
  • Show elapsed time on the workflow job output toolbar by @blaipr in #393
  • Upgrade twisted, kubernetes, pyyaml, Cython and Django to latest allowed versions by @blaipr in #374
  • Upgrade django-oauth-toolkit 1.7.1 to 3.3.0 by @blaipr in #376
  • Upgrade styled-components from 5 to 6 by @blaipr in #380
  • Build Activity Stream links for inventory source sync schedules by @blaipr in #389
  • Make VisualizerNode styling props transient by @blaipr in #395
  • Wire up date filtering in the Search toolbar by @blaipr in #396
  • Replace the ContentLoading spinner with skeleton placeholder lines by @blaipr in #399
  • Depend on azure-keyvault-secrets directly, dropping unused Azure packages by @blaipr in #401
  • Search credentials by type over REST in CredentialLookup by @blaipr in #403
  • Fix canceled-status typo in live websocket hooks by @blaipr in #404
  • Fix busy-poll when waiting on an in-progress project update by @blaipr in #405
  • Fix: use singular form ANSIBLE_COLLECTIONS_PATH by @blaipr in #570
  • Skip related endpoints without NATURAL_KEY during awxkit export by @blaipr in #573
  • Add the check_instance_ready management command for k8s readiness probes by @blaipr in #576
  • Remove user=root from the dev supervisor.conf so supervisord can start by @blaipr in #575
  • Fix job history for constructed inventory hosts by @fernandorocagonzalez in #577

Backend Upgrades

  • Migrate react-router usage to v6 compat APIs (bridge + all non-route-tree files) by @blaipr in #392
  • Modernize the frontend toolchain: Lingui 6, ESLint 9 and @dagrejs/dagre by @blaipr in #391
  • Remove EOL msrestazure, msrest and adal dependencies by @blaipr in #386
  • Add React Testing Library migration infrastructure and first conversions by @blaipr in #385
  • Upgrade awxkit websockets extra to websocket-client 1.x by @blaipr in #397
  • Convert the User screen test suites from Enzyme to React Testing Library by @blaipr in #398
  • Convert the route tree from react-router v5 Switch to v6 Routes by @blaipr in #400
  • Convert CredentialType route tree to react-router v6 Routes by @blaipr in #407
  • Convert NotificationTemplate route tree to react-router v6 Routes by @blaipr in #408
  • Convert ExecutionEnvironment route tree to react-router v6 Routes by @blaipr in #410
  • Convert Organization route tree to react-router v6 Routes by @blaipr in #411
  • Convert InstanceGroup route tree to react-router v6 Routes by @blaipr in #412
  • Convert Instances route tree to react-router v6 Routes by @blaipr in #413
  • Convert Credential route tree to react-router v6 Routes by @blaipr in #414
  • Convert Host route tree to react-router v6 Routes by @blaipr in #415
  • Convert WorkflowApproval route tree to react-router v6 Routes by @blaipr in #416
  • Convert Job route tree to react-router v6 Routes by @blaipr in #417
  • Convert User route tree to react-router v6 Routes by @blaipr in #418
  • Convert AllSchedules route tree to react-router v6 Routes by @blaipr in #419
  • Convert Team route tree to react-router v6 Routes by @blaipr in #409
  • Convert the Setting screen route trees to react-router v6 Routes by @blaipr in #420
  • Convert Project route tree to react-router v6 Routes by @blaipr in #424
  • Convert the Inventory screen route trees to react-router v6 Routes by @blaipr in #421
  • Convert ManagementJob route tree to react-router v6 Routes by @blaipr in #423
  • Convert Template and WorkflowJobTemplate route trees to react-router v6 by @blaipr in #427
  • Convert the App.js root route tree to react-router v6 Routes by @blaipr in #425
  • Convert the Templates route tree to react-router v6 (the last Switch) by @blaipr in #484
  • Add default ordering to InstanceGroup, ReceptorAddress and WorkflowJobTemplateNode by @blaipr in #428
  • Remove old eslink-disable that is now not needed in #429
  • Fix issue with project sync locks in #430
  • Fix relaunching a sliced job at the Workflow level in #431
  • enzyme -> RTL: convert the CredentialType screen suites by @blaipr in #433
  • enzyme -> RTL: convert the NotificationTemplate screen suites by @blaipr in #434
  • enzyme -> RTL: convert the ExecutionEnvironment screen suites by @blaipr in #435
  • enzyme -> RTL: convert the Team screen suites by @blaipr in #436
  • enzyme -> RTL: convert the Instances screen suites by @blaipr in #437
  • enzyme -> RTL: convert the ManagementJob screen suites by @blaipr in #438
  • enzyme -> RTL: convert the Metrics screen suites by @blaipr in #439
  • enzyme -> RTL: convert the Login screen suites by @blaipr in #440
  • enzyme -> RTL: convert the HostMetrics screen suites by @blaipr in #441
  • enzyme -> RTL: convert the ActivityStream screen suites by @blaipr in #442
  • enzyme -> RTL: convert the Dashboard screen suites by @blaipr in #443
  • enzyme -> RTL: convert the Application screen suites by @blaipr in #444
  • enzyme -> RTL: convert the WorkflowApproval screen suites by @blaipr in #445
  • enzyme -> RTL: convert the Host screen suites by @blaipr in #446
  • enzyme -> RTL: convert the Organization screen suites by @blaipr in #447
  • enzyme -> RTL: convert the Project screen suites by @blaipr in #448
  • enzyme -> RTL: convert the InstanceGroup screen suites by @blaipr in #449
  • enzyme -> RTL: convert the Credential screen suites by @blaipr in #450
  • enzyme -> RTL: convert the Job screen suites by @blaipr in #451
  • enzyme -> RTL: convert the Setting screen suites by @blaipr in #452
  • enzyme -> RTL: convert the Inventory screen suites by @blaipr in #453
  • enzyme -> RTL: convert the Workflow visualizer component suites by @blaipr in #454
  • enzyme -> RTL: convert the Lookup component suites by @blaipr in #455
  • enzyme -> RTL: convert the LaunchPrompt component suites by @blaipr in #456
  • enzyme -> RTL: convert the Schedule component suites by @blaipr in #457
  • enzyme -> RTL: convert the PaginatedTable component suites by @blaipr in #458
  • enzyme -> RTL: convert the PromptDetail component suites by @blaipr in #459
  • enzyme -> RTL: convert the AppContainer component suites by @blaipr in #460
  • enzyme -> RTL: convert the JobList component suites by @blaipr in #461
  • enzyme -> RTL: convert the AdHocCommands component suites by @blaipr in #462
  • enzyme -> RTL: convert the FormField component suites by @blaipr in #463
  • enzyme -> RTL: convert the CodeEditor component suites by @blaipr in #464
  • enzyme -> RTL: convert the ResourceAccessList component suites by @blaipr in #465
  • enzyme -> RTL: convert the AddRole component suites by @blaipr in #466
  • enzyme -> RTL: convert the TemplateList component suites by @blaipr in #467
  • enzyme -> RTL: convert the SelectedList component suites by @blaipr in #468
  • enzyme -> RTL: convert the LaunchButton component suites by @blaipr in #469
  • enzyme -> RTL: convert the NotificationList component suites by @blaipr in #470
  • enzyme -> RTL: convert the Search component suites by @blaipr in #471
  • enzyme -> RTL: convert the DetailList component suites by @blaipr in #472
  • enzyme -> RTL: convert the Wizard component suite by @blaipr in #473
  • enzyme -> RTL: convert the remaining small component suites by @blaipr in #474
  • enzyme -> RTL: convert the hooks test suites by @blaipr in #475
  • enzyme -> RTL: convert the Template screen suites by @blaipr in #483
  • enzyme -> RTL: convert App.test.js and util/omitProps by @blaipr in #476
  • Remove the enzyme test stack now that all suites are on RTL by @blaipr in #488
  • Convert .defaultProps to ES default parameters by @blaipr in #491
  • Hoist ScheduleOccurrences default time zone to a module constant by @blaipr in #493
  • Remove PropTypes runtime validation from UI components by @blaipr in #492
  • Replace react-virtualized with @tanstack/react-virtual in JobOutput by @blaipr in #489
  • react-router v6 flip (1/3): route imports through a routerCompat module by @blaipr in #494
  • react-router v6 flip (2/3): route remaining imports through routerCompat by @blaipr in #495
  • react-router v6 flip (3/3): repoint routerCompat at v6, remove the compat shim by @blaipr in #496
  • Upgrade React from 17 to 18 by @blaipr in #501
  • Upgrade react-error-boundary from 3.1.4 to 6.1.2 by @blaipr in #502
  • Upgrade react-ace from 10.1.0 to 14.0.1 by @blaipr in #503
  • Upgrade react-router-dom v6 to react-router v7 by @blaipr in #504
  • Upgrade PatternFly from v4 to v5 by @blaipr in #506
  • Fix css for PF 5 in #507
  • Fix NotificationTemplate Add error in #518
  • Migrate deprecated PF5 Select to composable Select API by @blaipr in #509
  • Migrate deprecated PF5 Wizard to composable API by @blaipr in #510
  • Remove unused uwsgitop dependency by @blaipr in #511
  • Remove unused asyncpg dependency by @blaipr in #512
  • Remove unused json-log-formatter dependency by @blaipr in #513
  • Remove unused cheerio dependency by @blaipr in #514
  • Remove redundant mock-socket devDependency by @blaipr in #515
  • Remove ascender_collection (moved to ctrliq/ascender-collection) by @blaipr in #517
  • Remove unused tailwindcss devDependency by @blaipr in #516
  • Upgrade PatternFly from v5 to v6 — 1/2 by @blaipr in #519
  • Upgrade PatternFly from v5 to v6 — 2/2 by @blaipr in #520
  • Upgrade React from 18.3.1 to 19.2.7 by @blaipr in #521
  • Bump styled-components from 6.4.2 to 6.4.3 by @blaipr in #523
  • Bump @testing-library/react from 16.3.0 to 16.3.2 by @blaipr in #524
  • Bump @lingui/* from 6.3.0 to 6.4.0 by @blaipr in #525
  • Bump browserslist from 4.28.2 to 4.28.4 by @blaipr in #526
  • Bump postcss from 8.5.14 to 8.5.15 by @blaipr in #527
  • Bump prettier from 3.8.3 to 3.9.1 by @blaipr in #528
  • Bump semver from 7.8.0 to 7.8.5 by @blaipr in #529
  • Bump jest family from 30.3.0 to 30.4.x by @blaipr in #533
  • Fix PatternFly v6 component CSS not loading by @blaipr in #534
  • Bump @tanstack/react-virtual from 3.14.3 to 3.14.4 by @blaipr in #536
  • Bump eslint-plugin-i18next from 6.1.4 to 6.1.5 by @blaipr in #537
  • Bump has-ansi from 5.0.1 to 6.0.2 by @blaipr in #539
  • Bump js-yaml from 4.2.0 to 5.2.0 by @blaipr in #540
  • Remove unused @rspack/core devDependency by @blaipr in #543
  • Remove unused babel-plugin-named-asset-import by @blaipr in #544
  • Upgrade react-router from 7.18.0 to 8.0.1 by @blaipr in #522
  • Bump terser-webpack-plugin from 5.6.0 to 5.6.1 by @blaipr in #530
  • Bump globals from 17.4.0 to 17.7.0 by @blaipr in #531
  • Bump webpack from 5.106.2 to 5.108.1 by @blaipr in #532
  • Bump postcss-preset-env from 7.8.3 to 11.3.2 by @blaipr in #541
  • Bump sass-loader from 16.0.8 to 17.0.0 by @blaipr in #542
  • Remove unused @svgr/webpack and dead SVG rule by @blaipr in #545
  • Remove unused resolve-url-loader by @blaipr in #546
  • Restore @rspack/core devDependency by @blaipr in #548
  • Migrate from Babel 7 to Babel 8 by @blaipr in #547
  • Suppress i18next/no-literal-string for pre-i18n loading text by @blaipr in #549
  • Add typescript devDependency (required by eslint-config-airbnb-extended) by @blaipr in #550
  • Fix js-yaml 5.x imports (no default export) by @blaipr in #551
  • Add legacy-peer-deps to .npmrc for Babel 8 compatibility by @blaipr in #553
  • Replace legacy-peer-deps with targeted override by @blaipr in #554
  • Add some overrides to suppress a few NPM peer-dependency warnings in #555
  • Fix more css issues with darkmode in #556
  • Lightmode fixes and restructure css files in #557
  • Fix multiple usability issues after PF6 upgrade in #559
  • Fix failing pinned sliced host test in #585
  • Rename Classic theme in #589
  • Fix issue with approval count not reflecting saved value in #590
  • Add Github App documentation by @ssimpson89 in #610
  • Custom webhook notification bodies under 3 lines get replaced with "blank body" warning in #616

Upstream Patches

  • Upstream 16530 - Optimize HostList API: conditional DISTINCT + composite index on JobHostSummary in #583
  • Upstream 16461 - Remove extra_vars from jobs and unified_jobs list endpoint in #584
  • Upstream 16527 - Eliminate LEFT OUTER JOINs in unified job RBAC query in #586
  • Upstream 16522 - Refactor formatted raw SQL in unified_jobs result_stdout_raw_handle in #587

Security Fixes

These CVEs were against the underlying packages we depend on, not directly on Ascender. For several of these, we did not use the affected code at all. They were resolved nevertheless as they will still be reported on any vulnerability scan on the container in your environment.

New Contributors

Full Changelog: 25.4.0...25.5.0

Don't miss a new ascender release

NewReleases is sending notifications on new releases.