Skip to content

feat: Optimus agent #884

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 74 commits into from
Jun 5, 2025
Merged

feat: Optimus agent #884

merged 74 commits into from
Jun 5, 2025

Conversation

mohandast52
Copy link
Collaborator

Proposed changes

  • Optimus agent

Types of changes

What types of changes does your code introduce?
Put an x in the boxes that apply

  • Bugfix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)

Tanya-atatakai and others added 17 commits March 25, 2025 13:00
* feat: add Optimus agent type and service template

* feat: add Optimus agent type and onboarding steps

* feat: add Optimism staking programs and activity checkers

* feat: update Optimus onboarding steps to include Uniswap and clarify investment requirements

* feat: enhance Optimus staking program integration with updated contracts and configurations

* feat: Refactor staking program identifiers to use consistent naming convention

* feat: update Optimism staking program identifiers for consistency and clarity

* feat: add Optimus agent form and update related components for integration

* feat: enhance middleware enums and update Optimus configurations for clarity and consistency

* feat: remove deprecated agent templates for cleaner configuration management

* feat: update Optimus service template and related configurations for clarity and accuracy

* Update frontend/config/chains.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* feat: update middleware enums and service templates for clarity and consistency

* feat: enhance service validation and update configurations for Optimism

* chore: address review changes

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@mohandast52 mohandast52 self-assigned this May 8, 2025
@mohandast52 mohandast52 added the enhancement New feature or request label May 8, 2025
mohandast52 and others added 11 commits May 9, 2025 14:32
)

* chore: update middleware

* chore: update middleware

* feat: feature flag and switch for onboarding (#832)

* feat: add segmented control for fund transfer options in AddFundsSection

* feat: add bridge-funds feature flag to configuration

* feat: implement bridge funds feature with UI components and enable feature flag

* feat: enhance SetupEoaFunding component with new styled cards and improved layout

* feat: update chain logo paths and add new chain images

* style: standardize quotation marks in AddFundsSection component

* refactor: simplify AddFundsSection component and remove unused Segmented options

* feat: update fund type options in SetupEoaFunding component to reflect new terminology

* feat: bridging in progress components (#839)

* feat: add button for bridging funds and update text description

* feat: implement bridging flow with progress indicator and update setup screens

* feat: enhance bridging flow with transfer details and conditional back button

* feat: update bridge transfer flow to display formatted amounts and improve component structure

* feat: refactor bridge transfer flow and add bridging steps component

* feat: add deposit for bridging component

* chore: review fixes

* chore: update middleware

* feat: add tooltips

* chore: update middleware

* chore: update middleware

* feat: enhance "Bridge In Progress" component - transfer & receive table (#841)

* feat: enhance BridgeInProgress component with header and API integration placeholders

* feat: update bridge transfer flow to use token symbols and enhance rendering logic

* feat: refactor BridgeInProgress component and improve CardFlex styling

* feat: enhance BridgeInProgress component layout and update estimated time display

* refactor: simplify BridgeInProgress component structure and rename EstimatedTime to EstimatedCompletionTime

* chore: update middleware

* feat: add BridgingSteps component for in progress screen (#843)

* feat: enhance BridgeInProgress component with header and API integration placeholders

* feat: update bridge transfer flow to use token symbols and enhance rendering logic

* feat: refactor BridgeInProgress component and improve CardFlex styling

* feat: enhance BridgeInProgress component layout and update estimated time display

* refactor: simplify BridgeInProgress component structure and rename EstimatedTime to EstimatedCompletionTime

* feat: add BridgingSteps component to BridgeInProgress screen

* feat: implement BridgingSteps component with dynamic step data and transaction links (init, need to polish)

* feat: enhance BridgingSteps component with improved transaction links and loading indicators; add new styles for padding and text color

* feat: add FundsAreSafeMessage component for improved error handling and user guidance; update BridgingSteps component status and layout

* refactor: rename SubStep to SubStepRow and extract Desc and TxnDetails components for better readability; update BridgingSteps component structure

* feat: update BridgingSteps component to handle dynamic transaction statuses and improve error handling; refactor subStep structure for clarity

* feat: implement bridge status retrieval and integrate with BridgingSteps component; add necessary types and constants

* feat: update bridging step statuses and types for improved clarity and consistency; refactor related components

* feat: update bridge creation status to 'process' in BridgeInProgress component; enhance bridge status retrieval logic

* feat: deleted API (later)

* feat: enhance bridging steps and master safe transfer logic; refactor related components for improved clarity

* refactor: replace Nullable with Maybe in type definitions; remove unused TEN_SECONDS_INTERVAL constant

* feat: simplify transaction status descriptions in master safe creation step

* Update frontend/types/Bridge.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* refactor: update bridging status and safe creation logic; replace SetupScreen with Pages enum

* refactor: rename subSteps to computedSubSteps in bridging steps and related functions

* docs: update comments for BridgingStepStatus to clarify step statuses

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* feat: Quote estimated time (#848)

* feat: implement EstimatedCompletionTime component for displaying estimated time

* feat: integrate time remaining calculation into EstimatedCompletionTime component

* Update frontend/components/SetupPage/Create/BridgeInProgress.tsx

* feat: add api callbacks (#846)

* feat: add api callbacks

* chore: update type

* chore: fix request params

* chore: review fixes

* feat: add funds using bridge (#850)

* feat: add fund type selection and bridge support in AddFundsSection

* feat: refactor AddFundsSection to include fund type selection and bridge functionality

* feat: integrate WhatAreStakingContractsSection into ManageStakingPage

* feat: add AddFundsThroughBridge page and integrate with AddFundsSection

* feat: implement NumberInput component and integrate into AddFundsThroughBridge

* feat: refactor AddFundsThroughBridge to use Form for token amount input and improve component structure

* feat: refactor AddFundsThroughBridge to manage token inputs with state and improve button functionality

* feat: implement handleBridgeFunds function and update button click handler in AddFundsThroughBridge

* feat: refactor AddFundsSection to separate AddFundsBy component and improve fund type selection logic

* refactor: simplify onChange handler for fund type selection in AddFundsBy and SetupEoaFunding components

* feat: API integration for "Bridge in progress" screen (#853)

* feat: move icon styles to a shared file

* feat: integrate bridge status fetching with API using react-query

* fix: update bridging steps status handling and simplify logic

* feat: implement bridge execution logic and integrate online status checks

* feat: integrate get quote endpoint (#856)

* feat: integrate get quote endpoint

* chore: review fixes

* chore: review fixes

* feat: Bridge in progress screen - master safe creation & transfer API integration  (#855)

* fix: adjust width of loading text and update CardSection padding prop

* feat: add onboarding test scenarios for bridge states

* fix: rename time prop to timeInSeconds in EstimatedCompletionTime component

* docs: (after call with Jose) add detailed comments explaining master EOA transfer process in BridgeInProgress component

* refactor: remove unused time remaining calculation and related component from BridgeInProgress

* feat: implement backup signer hook and integrate into safe creation process

* feat: enhance BridgeInProgress and SetupEoaFunding components with new hooks and UI improvements

* refactor: remove mock implementation from createSafe function

* refactor: improve variable naming and documentation in useMasterSafeCreation and createSafe functions

* feat: Add wrapper component to handle data flow between bridging screens (#857)

* fix: add alignment to CardSection components and correct border property in SetupRestore

* feat: implement SetupBridge component to manage bridging process and integrate with BridgeInProgress and BridgeOnEvm
refactor: update transfer handling and state management in bridging components
fix: rename screen for onboarding to BridgeOnboarding

* feat: implement SetupBridgeOnboarding component and update navigation for bridge onboarding process

* feat: enhance bridging functionality and add bigintMax utility function

* feat: bridge quote API integration and TODOs  (#858)

* feat: implement bridge onboarding flow with progress tracking and state management

* feat: refactor bridging hooks to accept token symbols as parameters

* feat: enhance bridging process with safe creation response link and update DepositForBridging props

* feat: update DepositForBridging component to include CrossChainTransferDetails and improve token info handling

* feat: add useEffect to handle quote updates and improve DepositForBridging functionality

* feat: refactor DepositForBridging and BridgeOnEvm components for improved structure and readability

* feat: add TokenBalances type and update BridgeRefillRequirementsResponse for improved balance handling

* feat: refactor token balance handling and improve bridge refill requirements response structure

* feat: remove mock implementations from Bridge service and streamline API calls

* feat: add DepositAddress component for displaying and copying deposit address

* Update frontend/components/SetupPage/Create/SetupBridgeOnboarding/BridgeInProgress.tsx

Co-authored-by: Atatakai <densatsu@mail.ru>

* feat: update DepositForBridging component to use bridgeFundingRequirements and include token address in token info

* fix: standardize error constant naming in SetupBridgeOnboarding component

* feat: enhance balance handling by introducing MasterSafeBalanceRecord type and updating refill requirements

---------

Co-authored-by: Atatakai <densatsu@mail.ru>

* feat: enhance SetupPassword and DepositForBridging components with user login and error handling (#861)

* fix: formatting and loading in "Bridging in progress" screen (#862)

* feat: enhance bridging process with loading and error states in useBridgingSteps hook

* feat: remove unused setUserLoggedIn function from SetupCreateSafe component

* feat: add decimals property to TokenTransfer type and update TransferRow to use dynamic decimals for amount formatting

* feat: include decimals in TransferRow for accurate amount formatting

* fix: display fail status if safe creation failed (#863)

* feat: bridge json in export logs (#864)

* feat: add bridge directory path and enhance log saving functionality

* Update electron/main.js

* feat: add ExportLogsButton component and integrate it into HelpAndSupport page

* feat: Retry and export logs for "Bridge in progress" (#865)

* feat: add bridge directory path and enhance log saving functionality

* Update electron/main.js

* feat: add ExportLogsButton component and integrate it into HelpAndSupport page

* feat: enhance bridging steps with retry functionality and log export option

* feat: integrate ExportLogsButton into FundsAreSafeMessage component

* fix: Improve /execute error handling and status updates (#867)

* refactor: update bridging logic and improve error handling in BridgeInProgress component

* fix: update bridging completion logic to check all steps for successful finish status

* fix: enhance bridging status checks to accurately reflect completion state

* fix: update bridging status logic to accurately reflect completion and wait states

* fix: adjust bridging execution query to disable retries and improve status checks

* fix: Update bridge status fetching and error handling (#868)

* fix: Update bridge status fetching and improve address validation logic

* fix: Remove unnecessary body from GET request in getBridgeStatus function

* fix: Update bridge execution logic and improve error handling in useBridgingSteps hook

* fix: improve bridging status handling and error management in BridgeInProgress component

* fix: enhance bridging status checks to handle completion and failure scenarios

* feat: implement BridgeInProgress component and related hooks for managing bridging steps and master safe creation

* fix: bridge status loading (#869)

* fix: update bridge status handling and improve master safe creation logic

* fix: remove console logs and add delay before redirecting to main page

* fix: replace delayInSeconds with setTimeout for redirecting to main page

* fix: adjust precision for token display and improve number formatting logic (#870)

* feat: retry bridge onboarding (#873)

* fix: update Typography usage and adjust styles in SetupCreateSafe component

* refactor: streamline isBridgingCompleted logic for improved clarity

* refactor: simplify bridging status handling and improve readability in BridgeInProgress component

* refactor: simplify isBridgingCompleted logic for improved readability

* fix: update bridge retry outcome from 'NAVIGATE_TO_REFILL' to 'NEED_REFILL' for consistency

* fix: bridging issues after sync (#874)

* [200~fix: adjust precision for token amounts in bridge components~

* fix: clarify variable naming for fund transfer calculation in master safe creation

* feat: bridging improvements (#876)

* fix: update variable names for clarity in bridging steps and retry logic

* fix: add TODO comment for handling quote request failure

* fix: update transaction link key in SafeCreationResponse and remove obsolete notes

* fix: refactor bridge requirements handling and improve quote request failure logic

* fix: simplify bridge requirements parameter handling and improve loading checks

* fix: enhance bridge refill requirements handling with force update and error management

* fix: refactor DepositForBridging component and introduce TokenDetails for improved token information display

* fix: improve bridge refill requirements handling and simplify code structure

* fix: onboarding issues after iason testing (#878)

* fix: update variable names for clarity in bridging steps and retry logic

* fix: add TODO comment for handling quote request failure

* fix: update transaction link key in SafeCreationResponse and remove obsolete notes

* fix: refactor bridge requirements handling and improve quote request failure logic

* fix: simplify bridge requirements parameter handling and improve loading checks

* fix: enhance bridge refill requirements handling with force update and error management

* fix: refactor DepositForBridging component and introduce TokenDetails for improved token information display

* fix: improve bridge refill requirements handling and simplify code structure

* fix: adjust bridge status handling to ensure error state is correctly identified

* feat: add new chain images for base, ethereum, gnosis, and mode chains

* fix: remove unused hasAnyBridgeFailed parameter from getBridgeStats function

* fix: update types for balance records and bridge request status; enhance address comparison function

* fix: refactor transfer details calculation for improved readability and maintainability

* fix: update token address handling for accurate balance calculations

* fix: use kebabCase for chain name in image source path (#882)

* feat: bridging changes to bridging feature branch (#892)

* feat: update tools accuracy hash

* release: 0.2.0-rc163

* release: 0.2.0-rc257

* feat: update hash for Optimus service template (#838)

* feat: update modius hash

* feat: update modius hash

* feat: support new staking contracts

* feat: update agent hash and MW version

* release: 0.2.0-rc164

* feat: deprecate old contracts

* fix: allow switching contracts

* fix: requests count call

* feat: update modius hash

* chore: review fixes

* fix: requests counter for trader

* fix: contract call

* release: 0.2.0-rc258

* release: 0.2.0-rc165

* fix: remove minimum from modius funds, change default agentsfun contract

* release: 0.2.0-rc166

* feat: update modius hash

* feat: update modius hash

* fix number overflow issue

* chore: fix types

* feat: update trader hash

* chore: update pyproject

* chore: update middleware

* feat: update accuracy hash and set mech interact timeout

* fix: ensure correct type assertion for token address in getFromToken helper

* fix: default agents.fun staking contract

* refactor: comment out unused Modius onboarding step and update image asset

* refactor: comment out 'Take action' step in Modius onboarding

* fix: update description in Modius onboarding steps to include Velodrome

* feat: update trader accuracy hash and agents.fun hash

* chore: update middleware

* fix: windows build

* chore: update middleware

* chore: update middleware

* chore: update middleware

* chore: update middleware

* feat: update modius hash and fix win build

* fix: build for win

* fix: build for win

* fix: build for win

* feat: new hashes

* fix: use kebabCase for chain name in image source path (#882) (#883)

* chore: update middleware

* feat: update modius hash

* feat: roll back trader hash

* release/020-rc169

* chore: update middleware

* fix: safe creation initial funds calculation (#885)

* feat: add totalRequirements to BalancesAndRefillRequirementsProvider context

* fix: update useMasterSafeCreationAndTransfer to use totalRequirements instead of refillRequirements

* fix: logic update for initial funding (#889)

* feat: enhance bridge refill logic and add debug logging

* feat: implement updated bridge requirements calculation and refactor related logic

* fix: improve bridge requirements calculation and handle native token case

* chore: address review changes

* feat: use "transfer_excess_assets" instead of initial funds (#890)

* chore: update middleware

---------

Co-authored-by: Atatakai <densatsu@mail.ru>
Co-authored-by: jmoreira-valory <jose.moreira.sanchez@valory.xyz>

* chore: poetry lock

* fix: bridge amount to be initial funds (#893)

* refactor: clean up imports and simplify balance calculations in DepositForBridging component

* refactor: simplify toToken retrieval logic in DepositForBridging component

* fix: hide "Fund your agent" alert after bridging (#894)

* fix: integrate electron API for initial funding status update

* fix: add TODO for future backend logic migration in success handler

* feat: bridge through "Add funds" behind feature flag and disabled  (#895)

* feat: enhance feature flag handling for bridging funds

* refactor: rename feature flags for bridging funds to improve clarity

* feat: add bridge funds button with tooltip for availability

---------

Co-authored-by: jmoreira-valory <jose.moreira.sanchez@valory.xyz>
Co-authored-by: Atatakai <densatsu@mail.ru>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix: update middlewareChain type to SupportedMiddlewareChain in AddressLink and Titles components

* refactor: remove old optimus version retrieval and update trader binary download in workflows and script

* fix: add TODO comment for TypeScript error handling in MigrateButton component

* fix: add TODO comment for TypeScript error handling in createService function

* fix: update types to use SupportedMiddlewareChain in service types and configurations

* fix: update hash for Optimus service template in serviceTemplates.ts

* refactor: reorganize chain-related types and update imports for better clarity

* refactor: replace asEvmChainName with asEvmChainDetails for improved clarity and consistency

* fix: update hash for Optimus service template in serviceTemplates.ts

* refactor: move EvmChainId and related constants to a new chains.ts file for better organization
* chore: update middleware

* chore: update middleware

* chore: update middleware

* chore: update middleware

* chore: update middleware

* feat: enable modius bridging (#914)

* feat: update ETHEREUM_TOKEN_CONFIG to include USDC and enable bridge onboarding feature

* fix: update fund requirements structure and adjust values for testing

* fix: update chain name in BridgingSteps component to use dynamic value

* fix: refactor logic for mapping bridge total requirements to improve readability

* fix: update fund requirements for MODIUS_SERVICE_TEMPLATE to correct values

* feat: modius bridge add alert (#918)

* fix: update funding message to include dynamic chain name

* feat: enhance BridgeOnEvm with CustomAlert and layout adjustments

* feat: update address type usage in agents and service modules (#922)

* feat: modius bridge safe creation update (#924)

* feat: enforce transfer of excess assets during safe creation

* feat: enhance FundsAreSafeMessage with additional retry suggestion

* feat: improve bridge retry logic and user feedback

* feat: update success message for bridge completion

---------

Co-authored-by: jmoreira-valory <jose.moreira.sanchez@valory.xyz>
Copy link
Contributor

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Adds support for the new Optimus agent by updating UI sections, context flags, type definitions, and workflows.

  • Renames and inverts the Memeooorr update context flag
  • Introduces Optimus agent handling in fund requirements, forms, type enums, and Electron store
  • Adds new AgentSettingsButton and AgentProfileButton components and refactors header/top bar layouts

Reviewed Changes

Copilot reviewed 91 out of 91 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
frontend/components/MainPage/sections/KeepAgentRunningSection.tsx Removed unused marginTop from section style
frontend/components/MainPage/sections/AlertSections/UpdateAgentConfiguration.tsx Renamed isMemeooorrFieldUpdateCompletedisMemeooorrFieldUpdateRequired and adjusted conditional
frontend/components/MainPage/sections/AlertSections/LowFunds/FundsToActivate.tsx Added Optimus to fund requirements and updated getOlasText for Optimism chain
frontend/components/MainPage/sections/AddFundsSection.tsx Corrected import path for EvmChainName
frontend/components/MainPage/header/index.tsx Replaced manual help/settings buttons with new AgentSettingsButton & AgentProfileButton and adjusted spacing
frontend/components/MainPage/header/LastTransaction.tsx Tightened max-width and switched external-link symbol to constant
frontend/components/MainPage/header/AgentSettingsButton.tsx New component for agent settings access
frontend/components/MainPage/header/AgentProfileButton.tsx New component handling profile links and modals for Optimus and Modius
frontend/components/MainPage/header/AgentButton/AgentNotRunningButton.tsx Updated Memeooorr flag usage and deployment logic
frontend/components/Layout/TopBar.tsx Added help/settings buttons, adjusted padding and layout
frontend/components/AgentForms/common/labels.tsx Added OptimusGeminiApiKeyLabel and spacing tweaks
frontend/components/AgentForms/common/formUtils.ts Generalized field props, renamed to agentFieldProps, relaxed slug regex
frontend/components/AgentForms/MemeooorrAgentForm/MemeooorrAgentForm.tsx Updated Memeooorr flag and token-required logic
frontend/components/AddressLink.tsx Switched middlewareChain type to SupportedMiddlewareChain
frontend/client/types.ts Changed home_chain and configurations to use SupportedMiddlewareChain
frontend/client/enums.ts Introduced SupportedMiddlewareChain and updated MiddlewareChain.OPTIMISM value
electron/store.js Added default schema entry for optimus
download_binaries.sh Commented-out Optimus binary fetch steps
.github/workflows/release_dev.yml Removed old Optimus download comments
.github/workflows/release.yml Removed old Optimus download comments
Comments suppressed due to low confidence (4)

download_binaries.sh:6

  • Remove commented-out Optimus download code to keep the script clean and focused on active functionality.
# optimus_version=$(poetry run python -c "…optimus.yaml…")

.github/workflows/release_dev.yml:63

  • Remove stale commented steps for Optimus binary download to reduce clutter in the CI workflow.
# optimus_version=$(poetry run python -c "…optimus.yaml…")

.github/workflows/release.yml:63

  • Delete commented legacy code for Optimus binary retrieval to simplify and document the intended release steps.
# optimus_version=$(poetry run python -c "…optimus.yaml…")

frontend/components/MainPage/sections/AlertSections/UpdateAgentConfiguration.tsx:14

  • [nitpick] The double-negative check on isMemeooorrFieldUpdateRequired may be confusing; consider renaming the flag (e.g., needsMemeooorrFieldUpdate) or inverting the condition for clarity.
if (!isMemeooorrFieldUpdateRequired) return null;

@@ -136,3 +136,22 @@ export const ModiusGeminiApiKeyLabel = () => (
</Text>
</Flex>
);

export const OptimusGeminiApiKeyLabel = () => (
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it's a copy paste of ModiusGeminiApiKeyLabel. maybe we can either do one components with a prop = 'Optimus' | 'Modius' or just say in the description its goals through the agent’s profile ?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • it’s mostly copy-pasted but not entirely—there are text-level changes specific to the agent.
  • I’m generally not in favor of adding if-else statements and introducing dependencies, as it can lead to more complexity as requirements evolve (as said in previous PRs). But in this case, I can update it since we know it’s unlikely to change. If it does, it would be better to maintain a separate copy.

OjusWiZard and others added 8 commits June 4, 2025 17:17
Signed-off-by: Ojuswi Rastogi <ojuswimail@gmail.com>
* fix: update service template hashes and revert version to 0.2.0-rc267

* refactor: rename agent field props for clarity and consistency

* refactor: remove deprecated OptimusAlpha1 references and update related configurations

* docs: add comment explaining staking contract removal from Voting

* fix: add rel=noopener noreferrer to external links for security

* refactor: consolidate Gemini API key label components for Modius and Optimus

* refactor: remove unused 'low-funds' feature flag from FeatureFlagsSchema and configurations
* fix: update service template hashes and revert version to 0.2.0-rc267

* refactor: rename agent field props for clarity and consistency

* refactor: remove deprecated OptimusAlpha1 references and update related configurations

* docs: add comment explaining staking contract removal from Voting

* fix: add rel=noopener noreferrer to external links for security

* refactor: consolidate Gemini API key label components for Modius and Optimus

* refactor: remove unused 'low-funds' feature flag from FeatureFlagsSchema and configurations
…z/olas-operate-app into feature/optimus-agent
@mohandast52 mohandast52 changed the title (WIP) feat: Optimus agent feat: Optimus agent Jun 5, 2025
@mohandast52 mohandast52 marked this pull request as ready for review June 5, 2025 08:19
@mohandast52 mohandast52 merged commit f67bfaa into staging Jun 5, 2025
3 checks passed
@mohandast52 mohandast52 deleted the feature/optimus-agent branch June 5, 2025 10:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants